| 1 | ;;; GNU Guix --- Functional package management for GNU |
| 2 | ;;; Copyright © 2013 Nikita Karetnikov <[email protected]> |
| 3 | ;;; Copyright © 2013-2022 Ludovic Courtès <[email protected]> |
| 4 | ;;; Copyright © 2013, 2014, 2015, 2016, 2019 Andreas Enge <[email protected]> |
| 5 | ;;; Copyright © 2014, 2015 Mark H Weaver <[email protected]> |
| 6 | ;;; Copyright © 2014, 2017, 2021, 2022 Eric Bavier <[email protected]> |
| 7 | ;;; Copyright © 2014, 2015 Federico Beffa <[email protected]> |
| 8 | ;;; Copyright © 2015 Omar Radwan <[email protected]> |
| 9 | ;;; Copyright © 2015 Pierre-Antoine Rault <[email protected]> |
| 10 | ;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022 Ricardo Wurmus <[email protected]> |
| 11 | ;;; Copyright © 2015, 2016, 2020 Christine Lemmer-Webber <[email protected]> |
| 12 | ;;; Copyright © 2015 Eric Dvorsak <[email protected]> |
| 13 | ;;; Copyright © 2015, 2016 David Thompson <[email protected]> |
| 14 | ;;; Copyright © 2015, 2016, 2017, 2019, 2022 Leo Famulari <[email protected]> |
| 15 | ;;; Copyright © 2015, 2017 Ben Woodcroft <[email protected]> |
| 16 | ;;; Copyright © 2015, 2016 Erik Edrosa <[email protected]> |
| 17 | ;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022 Efraim Flashner <[email protected]> |
| 18 | ;;; Copyright © 2015, 2017, 2020 Kyle Meyer <[email protected]> |
| 19 | ;;; Copyright © 2015, 2016 Chris Marusich <[email protected]> |
| 20 | ;;; Copyright © 2016 Danny Milosavljevic <[email protected]> |
| 21 | ;;; Copyright © 2016 Lukas Gradl <[email protected]> |
| 22 | ;;; Copyright © 2016, 2018, 2019, 2021 Hartmut Goebel <[email protected]> |
| 23 | ;;; Copyright © 2016 Daniel Pimentel <[email protected]> |
| 24 | ;;; Copyright © 2016 Sou Bunnbu <[email protected]> |
| 25 | ;;; Copyright © 2016, 2017 Troy Sankey <[email protected]> |
| 26 | ;;; Copyright © 2016, 2017 Nikita <[email protected]> |
| 27 | ;;; Copyright © 2016 Dylan Jeffers <sapientech@[email protected]> |
| 28 | ;;; Copyright © 2016 David Craven <[email protected]> |
| 29 | ;;; Copyright © 2016-2022 Marius Bakke <[email protected]> |
| 30 | ;;; Copyright © 2016, 2017, 2021, 2022 Stefan Reichör <[email protected]> |
| 31 | ;;; Copyright © 2016, 2017, 2019 Alex Vong <[email protected]> |
| 32 | ;;; Copyright © 2016, 2017, 2018, 2021, 2022 Arun Isaac <[email protected]> |
| 33 | ;;; Copyright © 2016, 2017, 2018, 2020, 2021 Julien Lepiller <[email protected]> |
| 34 | ;;; Copyright © 2016–2022 Tobias Geerinckx-Rice <[email protected]> |
| 35 | ;;; Copyright © 2016, 2017 Thomas Danckaert <[email protected]> |
| 36 | ;;; Copyright © 2017 Carlo Zancanaro <[email protected]> |
| 37 | ;;; Copyright © 2017 Frederick M. Muriithi <[email protected]> |
| 38 | ;;; Copyright © 2017, 2018 Adriano Peluso <[email protected]> |
| 39 | ;;; Copyright © 2017 Ben Sturmfels <[email protected]> |
| 40 | ;;; Copyright © 2017, 2018, 2019, 2021, 2022 Mathieu Othacehe <[email protected]> |
| 41 | ;;; Copyright © 2017 José Miguel Sánchez García <[email protected]> |
| 42 | ;;; Copyright © 2017, 2020, 2021 Roel Janssen <[email protected]> |
| 43 | ;;; Copyright © 2017, 2018, 2019 Kei Kebreau <[email protected]> |
| 44 | ;;; Copyright © 2017 Rutger Helling <[email protected]> |
| 45 | ;;; Copyright © 2017, 2019, 2021 Brendan Tildesley <[email protected]> |
| 46 | ;;; Copyright © 2018 Ethan R. Jones <[email protected] |
| 47 | ;;; Copyright © 2018 Fis Trivial <[email protected]> |
| 48 | ;;; Copyright © 2018 Vijayalakshmi Vedantham <[email protected]> |
| 49 | ;;; Copyright © 2018 Mathieu Lirzin <[email protected]> |
| 50 | ;;; Copyright © 2018 Adam Massmann <[email protected]> |
| 51 | ;;; Copyright © 2016, 2018 Tomáš Čech <[email protected]> |
| 52 | ;;; Copyright © 2018-2022 Nicolas Goaziou <[email protected]> |
| 53 | ;;; Copyright © 2018 Oleg Pykhalov <[email protected]> |
| 54 | ;;; Copyright © 2018, 2019, 2021 Clément Lassieur <[email protected]> |
| 55 | ;;; Copyright © 2018, 2019, 2020, 2021, 2022 Maxim Cournoyer <[email protected]> |
| 56 | ;;; Copyright © 2018 Luther Thompson <[email protected]> |
| 57 | ;;; Copyright © 2018 Vagrant Cascadian <[email protected]> |
| 58 | ;;; Copyright © 2015, 2018 Pjotr Prins <[email protected]> |
| 59 | ;;; Copyright © 2019, 2020 Brett Gilio <[email protected]> |
| 60 | ;;; Copyright © 2019 Sam <[email protected]> |
| 61 | ;;; Copyright © 2019 Jack Hill <[email protected]> |
| 62 | ;;; Copyright © 2019, 2020, 2021, 2022 Guillaume Le Vaillant <[email protected]> |
| 63 | ;;; Copyright © 2019, 2020 Alex Griffin <[email protected]> |
| 64 | ;;; Copyright © 2019, 2020, 2021, 2022 Pierre Langlois <[email protected]> |
| 65 | ;;; Copyright © 2019 Jacob MacDonald <[email protected]> |
| 66 | ;;; Copyright © 2019, 2020, 2021 Giacomo Leidi <[email protected]> |
| 67 | ;;; Copyright © 2019 Wiktor Żelazny <[email protected]> |
| 68 | ;;; Copyright © 2019, 2020, 2021, 2022 Tanguy Le Carrour <[email protected]> |
| 69 | ;;; Copyright © 2019, 2021, 2022 Mădălin Ionel Patrașcu <[email protected]> |
| 70 | ;;; Copyright © 2020 Riku Viitanen <[email protected]> |
| 71 | ;;; Copyright © 2020 Jakub Kądziołka <[email protected]> |
| 72 | ;;; Copyright © 2020 sirgazil <[email protected]> |
| 73 | ;;; Copyright © 2020 Sebastian Schott <[email protected]> |
| 74 | ;;; Copyright © 2020, 2021 Alexandros Theodotou <[email protected]> |
| 75 | ;;; Copyright © 2020 Josh Marshall <[email protected]> |
| 76 | ;;; Copyright © 2020 Lars-Dominik Braun <[email protected]> |
| 77 | ;;; Copyright © 2020 Alex ter Weele <[email protected]> |
| 78 | ;;; Copyright © 2020, 2022 Matthew James Kraai <[email protected]> |
| 79 | ;;; Copyright © 2020 Ryan Prior <[email protected]> |
| 80 | ;;; Copyright © 2020 Josh Holland <[email protected]> |
| 81 | ;;; Copyright © 2020 Yuval Kogman <[email protected]> |
| 82 | ;;; Copyright © 2020, 2022 Michael Rohleder <[email protected]> |
| 83 | ;;; Copyright © 2020, 2021, 2022 Vinicius Monego <[email protected]> |
| 84 | ;;; Copyright © 2020 Guy Fleury Iteriteka <[email protected]> |
| 85 | ;;; Copyright © 2020 Hendursaga <[email protected]> |
| 86 | ;;; Copyright © 2020 Malte Frank Gerdes <[email protected]> |
| 87 | ;;; Copyright © 2020 Joseph LaFreniere <[email protected]> |
| 88 | ;;; Copyright © 2020 Tim Gesthuizen <[email protected]> |
| 89 | ;;; Copyright © 2020, 2021 Bonface Munyoki Kilyungi <[email protected]> |
| 90 | ;;; Copyright © 2020 Ekaitz Zarraga <[email protected]> |
| 91 | ;;; Copyright © 2020 Diego N. Barbato <[email protected]> |
| 92 | ;;; Copyright © 2020 Liliana Marie Prikler <[email protected]> |
| 93 | ;;; Copyright © 2019 Kristian Trandem <[email protected]> |
| 94 | ;;; Copyright © 2020, 2021 Zheng Junjie <[email protected]> |
| 95 | ;;; Copyright © 2020 EuAndreh <[email protected]> |
| 96 | ;;; Copyright © 2021, 2022 Morgan Smith <[email protected]> |
| 97 | ;;; Copyright © 2021, 2022 Sharlatan Hellseher <[email protected]> |
| 98 | ;;; Copyright © 2021 Ellis Kenyő <[email protected]> |
| 99 | ;;; Copyright © 2021 LibreMiami <[email protected]> |
| 100 | ;;; Copyright © 2021 Xinglu Chen <[email protected]> |
| 101 | ;;; Copyright © 2021 Raghav Gururajan <[email protected]> |
| 102 | ;;; Copyright © 2021 jgart <[email protected]> |
| 103 | ;;; Copyright © 2021 Danial Behzadi <[email protected]> |
| 104 | ;;; Copyright © 2021 Maxime Devos <[email protected]> |
| 105 | ;;; Copyright © 2021 Hugo Lecomte <[email protected]> |
| 106 | ;;; Copyright © 2021 Franck Pérignon <[email protected]> |
| 107 | ;;; Copyright © 2021, 2022 Petr Hodina <[email protected]> |
| 108 | ;;; Copyright © 2021 Simon Streit <[email protected]> |
| 109 | ;;; Copyright © 2021 Daniel Meißner <[email protected]> |
| 110 | ;;; Copyright © 2021, 2022 Pradana Aumars <[email protected]> |
| 111 | ;;; Copyright © 2021, 2022 Felix Gruber <[email protected]> |
| 112 | ;;; Copyright © 2021 Sébastien Lerique <[email protected]> |
| 113 | ;;; Copyright © 2021 Raphaël Mélotte <[email protected]> |
| 114 | ;;; Copyright © 2021 ZmnSCPxj <[email protected]> |
| 115 | ;;; Copyright © 2021 Filip Lajszczak <[email protected]> |
| 116 | ;;; Copyright © 2021 Greg Hogan <[email protected]> |
| 117 | ;;; Copyright © 2022 John Kehayias <[email protected]> |
| 118 | ;;; Copyright © 2022 Aleksandr Vityazev <[email protected]> |
| 119 | ;;; Copyright © 2022 Evgeny Pisemsky <[email protected]> |
| 120 | ;;; Copyright © 2022 drozdov <[email protected]> |
| 121 | ;;; Copyright © 2022 Peter Polidoro <[email protected]> |
| 122 | ;;; Copyright © 2022 Wamm K. D. <[email protected]> |
| 123 | ;;; Copyright © 2022 Jai Vetrivelan <[email protected]> |
| 124 | ;;; Copyright © 2022 Artyom V. Poptsov <[email protected]> |
| 125 | ;;; Copyright © 2022 Paul A. Patience <[email protected]> |
| 126 | ;;; Copyright © 2022 Jean-Pierre De Jesus DIAZ <[email protected]> |
| 127 | ;;; Copyright © 2022 Philip McGrath <[email protected]> |
| 128 | ;;; Copyright © 2022 Marek Felšöci <[email protected]> |
| 129 | ;;; Copyright © 2022 Hilton Chain <[email protected]> |
| 130 | ;;; Copyright © 2022 Tomasz Jeneralczyk <[email protected]> |
| 131 | ;;; Copyright © 2022 Mathieu Laparie <[email protected]> |
| 132 | ;;; Copyright © 2022 Garek Dyszel <[email protected]> |
| 133 | ;;; Copyright © 2022 Baptiste Strazzulla <[email protected]> |
| 134 | ;;; |
| 135 | ;;; This file is part of GNU Guix. |
| 136 | ;;; |
| 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. |
| 141 | ;;; |
| 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. |
| 146 | ;;; |
| 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/>. |
| 149 | |
| 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)) |
| 267 | |
| 268 | (define-public python-xmldiff |
| 269 | (package |
| 270 | (name "python-xmldiff") |
| 271 | (version "2.4") |
| 272 | (source |
| 273 | (origin |
| 274 | (method url-fetch) |
| 275 | (uri (pypi-uri "xmldiff" version)) |
| 276 | (sha256 |
| 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))) |
| 285 | |
| 286 | (define-public python-janus |
| 287 | (package |
| 288 | (name "python-janus") |
| 289 | (version "0.6.1") |
| 290 | (source |
| 291 | (origin |
| 292 | (method url-fetch) |
| 293 | (uri (pypi-uri "janus" version)) |
| 294 | (sha256 |
| 295 | (base32 "030xvl2vghi5ispfalhvch1rl6i2jsy5bf1dgjafa7vifppy04j7")))) |
| 296 | (build-system python-build-system) |
| 297 | (arguments |
| 298 | `(#:phases |
| 299 | (modify-phases %standard-phases |
| 300 | (replace 'check |
| 301 | (lambda* (#:key tests? inputs outputs #:allow-other-keys) |
| 302 | (when tests? |
| 303 | (add-installed-pythonpath inputs outputs) |
| 304 | (invoke "pytest" "--cov=janus" "--cov=tests"))))))) |
| 305 | (native-inputs |
| 306 | (list python-pytest python-pytest-cov python-pytest-asyncio)) |
| 307 | (home-page "https://github.com/aio-libs/janus/") |
| 308 | (synopsis |
| 309 | "Sync-async queue to interoperate between asyncio tasks and classic threads") |
| 310 | (description |
| 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 |
| 320 | design}.") |
| 321 | (license license:asl2.0))) |
| 322 | |
| 323 | (define-public python-jupytext |
| 324 | (package |
| 325 | (name "python-jupytext") |
| 326 | (version "1.14.1") |
| 327 | (source |
| 328 | (origin |
| 329 | (method git-fetch) |
| 330 | (uri (git-reference |
| 331 | (url "https://github.com/mwouts/jupytext") |
| 332 | (commit (string-append "v" version)))) |
| 333 | (file-name (git-file-name name version)) |
| 334 | (sha256 |
| 335 | (base32 "0gqpvphrp2ja9ggadx0rrk0sqbpz6kqqg62qqmw4k17469lphc8c")))) |
| 336 | (build-system python-build-system) |
| 337 | (arguments |
| 338 | (list |
| 339 | #:phases |
| 340 | #~(modify-phases %standard-phases |
| 341 | (replace 'check |
| 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") |
| 347 | (when tests? |
| 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 ")))))))))) |
| 356 | (native-inputs |
| 357 | (list git-minimal |
| 358 | python-autopep8 |
| 359 | python-black |
| 360 | python-flake8 |
| 361 | python-gitpython |
| 362 | python-isort |
| 363 | python-ipython-genutils |
| 364 | python-jupyter-server |
| 365 | python-pre-commit |
| 366 | python-pytest |
| 367 | python-pyaml)) |
| 368 | (propagated-inputs |
| 369 | (list python-markdown-it-py |
| 370 | python-mdit-py-plugins |
| 371 | python-nbformat)) |
| 372 | (home-page "https://github.com/mwouts/jupytext") |
| 373 | (synopsis |
| 374 | "Jupyter notebooks as Markdown documents, Julia, Python or R scripts") |
| 375 | (description |
| 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 |
| 378 | Jupytext are: |
| 379 | |
| 380 | @itemize |
| 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. |
| 384 | @end itemize |
| 385 | ") |
| 386 | (license license:expat))) |
| 387 | |
| 388 | (define-public python-logzero |
| 389 | (package |
| 390 | (name "python-logzero") |
| 391 | (version "1.7.0") |
| 392 | (source |
| 393 | (origin |
| 394 | (method url-fetch) |
| 395 | (uri (pypi-uri "logzero" version)) |
| 396 | (sha256 |
| 397 | (base32 "10nh186vk6hpnpfycym44gja4fja0jyzw7q8dwimfd1rmv9xswvz")))) |
| 398 | (build-system python-build-system) |
| 399 | (native-inputs |
| 400 | (list python-pytest python-pytest-runner)) |
| 401 | (arguments |
| 402 | `(#:phases |
| 403 | (modify-phases %standard-phases |
| 404 | (replace 'check |
| 405 | (lambda* (#:key tests? inputs outputs #:allow-other-keys) |
| 406 | (when tests? |
| 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") |
| 411 | (description |
| 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))) |
| 415 | |
| 416 | (define-public python-logbook |
| 417 | (package |
| 418 | (name "python-logbook") |
| 419 | (version "1.5.3") |
| 420 | (source |
| 421 | (origin |
| 422 | (method url-fetch) |
| 423 | (uri (pypi-uri "Logbook" version)) |
| 424 | (sha256 |
| 425 | (base32 "1s1gyfw621vid7qqvhddq6c3z2895ci4lq3g0r1swvpml2nm9x36")))) |
| 426 | (build-system python-build-system) |
| 427 | (arguments |
| 428 | `(#:phases |
| 429 | (modify-phases %standard-phases |
| 430 | (add-before 'build 'cythonize-sources |
| 431 | (lambda _ |
| 432 | (with-directory-excursion "logbook" |
| 433 | (invoke "cython" "_speedups.pyx")))) |
| 434 | (replace 'check |
| 435 | (lambda* (#:key tests? #:allow-other-keys) |
| 436 | (when tests? |
| 437 | ;; Check cython build also |
| 438 | (setenv "CYBUILD" "True") |
| 439 | (invoke "pytest" "--cov=logbook" "-r" "s" "tests"))))))) |
| 440 | (native-inputs |
| 441 | (list python-cython python-mock python-pytest python-pytest-cov |
| 442 | python-brotli)) |
| 443 | (home-page "https://github.com/getlogbook/logbook") |
| 444 | (synopsis "Logbook is a logging replacement for Python") |
| 445 | (description |
| 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))) |
| 450 | |
| 451 | (define-public python-ubelt |
| 452 | (package |
| 453 | (name "python-ubelt") |
| 454 | (version "1.0.1") |
| 455 | (source |
| 456 | (origin |
| 457 | (method git-fetch) |
| 458 | (uri (git-reference |
| 459 | (url "https://github.com/Erotemic/ubelt") |
| 460 | (commit (string-append "v" version)))) |
| 461 | (file-name (git-file-name name version)) |
| 462 | (sha256 |
| 463 | (base32 |
| 464 | "0hac9nqqvqfbca2s4g0mp1fnj0ah60bg9fb8234ibna3jww8qs33")))) |
| 465 | (build-system python-build-system) |
| 466 | (arguments |
| 467 | (list #:phases |
| 468 | #~(modify-phases %standard-phases |
| 469 | (replace 'check |
| 470 | (lambda* (#:key tests? #:allow-other-keys) |
| 471 | (when tests? |
| 472 | (setenv "HOME" "/tmp") ;else the test suite hangs |
| 473 | (invoke "pytest" "-vv" "-k" |
| 474 | (string-append |
| 475 | ;; The builder user home doesn't match HOME, |
| 476 | ;; which causes this test to fail. |
| 477 | "not userhome " |
| 478 | ;; This one pointlessly tries |
| 479 | ;; locating various binaries on |
| 480 | ;; the path. |
| 481 | "and not find_exe")))))))) |
| 482 | (propagated-inputs (list python-ordered-set)) |
| 483 | (native-inputs |
| 484 | (list python-pytest |
| 485 | python-requests |
| 486 | python-xdoctest)) |
| 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))) |
| 494 | |
| 495 | (define-public python-ueberzug |
| 496 | (package |
| 497 | (name "python-ueberzug") |
| 498 | (version "18.1.9") |
| 499 | (source |
| 500 | (origin |
| 501 | (method url-fetch) |
| 502 | (uri (pypi-uri "ueberzug" version)) |
| 503 | (sha256 |
| 504 | (base32 |
| 505 | "1hxd45dnwa9yv908acarr98n2drmar66wzq9z2qd3irj24srzr3w")))) |
| 506 | (build-system python-build-system) |
| 507 | (inputs |
| 508 | (list libx11 libxext)) |
| 509 | (propagated-inputs |
| 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: |
| 515 | @itemize |
| 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 |
| 518 | workspaces. |
| 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). |
| 523 | @end itemize") |
| 524 | (license license:gpl3+))) |
| 525 | |
| 526 | (define-public python-fire |
| 527 | (package |
| 528 | (name "python-fire") |
| 529 | (version "0.4.0") |
| 530 | (source |
| 531 | (origin |
| 532 | (method url-fetch) |
| 533 | (uri (pypi-uri "fire" version)) |
| 534 | (sha256 |
| 535 | (base32 |
| 536 | "0qka44n88y3qcj7xz0k0f3qb4phcg4z0wvd4jcii9lcr6rvbiqn5")))) |
| 537 | (build-system python-build-system) |
| 538 | (native-inputs |
| 539 | (list python-pytest)) |
| 540 | (arguments |
| 541 | '(#:phases |
| 542 | (modify-phases %standard-phases |
| 543 | (replace 'check |
| 544 | (lambda* (#:key tests? #:allow-other-keys) |
| 545 | (when tests? |
| 546 | (invoke "pytest"))))))) |
| 547 | (inputs |
| 548 | (list python-six python-termcolor)) |
| 549 | (synopsis "Library for automatically generating command line interfaces") |
| 550 | (description |
| 551 | "Fire is a library for automatically generating command line interfaces |
| 552 | from absolutely any Python object. The following are the advantages: |
| 553 | @itemize |
| 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. |
| 561 | @end itemize") |
| 562 | (home-page "https://github.com/google/python-fire") |
| 563 | (license license:asl2.0))) |
| 564 | |
| 565 | (define-public python-dotmap |
| 566 | (package |
| 567 | (name "python-dotmap") |
| 568 | (version "1.3.30") |
| 569 | (source (origin |
| 570 | (method url-fetch) |
| 571 | (uri (pypi-uri "dotmap" version)) |
| 572 | (sha256 |
| 573 | (base32 |
| 574 | "0s5kb2v7jd0narz6m6jcicak3h5pw290wz21cdsv8pq77y9sf8aq")))) |
| 575 | (build-system python-build-system) |
| 576 | (home-page "https://github.com/drgrib/dotmap") |
| 577 | (synopsis "Ordered, dynamically-expandable dot-access dictionary") |
| 578 | (description |
| 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))) |
| 583 | |
| 584 | (define-public python-twodict |
| 585 | (package |
| 586 | (name "python-twodict") |
| 587 | (version "1.2") |
| 588 | (source |
| 589 | (origin |
| 590 | (method url-fetch) |
| 591 | (uri (pypi-uri "twodict" version)) |
| 592 | (sha256 |
| 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))) |
| 602 | |
| 603 | (define-public python-argopt |
| 604 | (package |
| 605 | (name "python-argopt") |
| 606 | (version "0.7.0") |
| 607 | (source (origin |
| 608 | (method url-fetch) |
| 609 | (uri (pypi-uri "argopt" version)) |
| 610 | (sha256 |
| 611 | (base32 |
| 612 | "0ybs7kkp0cpl8zn1lvf7481xhssg1bbhh5la2cjzdm5yibashyxa")))) |
| 613 | (build-system python-build-system) |
| 614 | (native-inputs |
| 615 | (list python-coverage python-nose python-setuptools ; Won't build without this. |
| 616 | python-setuptools-scm)) |
| 617 | (propagated-inputs |
| 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))) |
| 624 | |
| 625 | (define-public python-cachetools |
| 626 | (package |
| 627 | (name "python-cachetools") |
| 628 | (version "4.2.2") |
| 629 | (source (origin |
| 630 | (method url-fetch) |
| 631 | (uri (pypi-uri "cachetools" version)) |
| 632 | (sha256 |
| 633 | (base32 |
| 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))) |
| 642 | |
| 643 | (define-public python-cobib |
| 644 | (package |
| 645 | (name "python-cobib") |
| 646 | (version "3.5.2") |
| 647 | (source (origin |
| 648 | (method url-fetch) |
| 649 | (uri (pypi-uri "cobib" version)) |
| 650 | (file-name (string-append name "-" version ".tar.gz")) |
| 651 | (sha256 |
| 652 | (base32 |
| 653 | "16nbrbvascbf6cb7yvn9q793dy8zx703pqrmk3mswib9a19mnx3n")))) |
| 654 | (build-system python-build-system) |
| 655 | (propagated-inputs |
| 656 | (list python-beautifulsoup4 |
| 657 | python-bibtexparser |
| 658 | python-pylatexenc |
| 659 | python-requests |
| 660 | python-requests-oauthlib |
| 661 | python-ruamel.yaml)) |
| 662 | (native-inputs |
| 663 | (list python-future |
| 664 | python-pyte |
| 665 | python-pytest)) |
| 666 | (home-page "https://gitlab.com/mrossinek/cobib") |
| 667 | (synopsis "Terminal-based bibliography management tool") |
| 668 | (description |
| 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))) |
| 673 | |
| 674 | (define-public python-colorful |
| 675 | (package |
| 676 | (name "python-colorful") |
| 677 | (version "0.5.4") |
| 678 | (source |
| 679 | (origin |
| 680 | (method git-fetch) ; no tests data in PyPi package |
| 681 | (uri (git-reference |
| 682 | (url "https://github.com/timofurrer/colorful") |
| 683 | (commit (string-append "v" version)))) |
| 684 | (file-name (git-file-name name version)) |
| 685 | (sha256 |
| 686 | (base32 "1fcz5v8b318a3dsdha4c874jsf3wmcw3f25bv2csixclyzacli98")))) |
| 687 | (build-system pyproject-build-system) |
| 688 | (native-inputs |
| 689 | (list python-coverage python-flake8 python-pytest)) |
| 690 | (propagated-inputs |
| 691 | (list python-colorama)) |
| 692 | (home-page "http://github.com/timofurrer/colorful") |
| 693 | (synopsis "Terminal string styling") |
| 694 | (description "Colorful provides an array of text styles, that can be used |
| 695 | as functions or string constants to form colored terminal output.") |
| 696 | (license license:expat))) |
| 697 | |
| 698 | (define-public python-yaspin |
| 699 | (package |
| 700 | (name "python-yaspin") |
| 701 | (version "1.5.0") |
| 702 | (source |
| 703 | (origin |
| 704 | (method url-fetch) |
| 705 | (uri |
| 706 | (pypi-uri "yaspin" version)) |
| 707 | (sha256 |
| 708 | (base32 "1iirah0kydrdp505qnjj6gi54avcr7z0hbkfx9vmh8myr30rpz6q")))) |
| 709 | (build-system python-build-system) |
| 710 | (native-inputs |
| 711 | (list python-pytest)) |
| 712 | (home-page "https://github.com/pavdmyt/yaspin") |
| 713 | (synopsis "Yet Another Terminal Spinner") |
| 714 | (description "Yaspin provides a terminal spinner to indicate the progress |
| 715 | during long operations.") |
| 716 | (license license:expat))) |
| 717 | |
| 718 | (define-public python-lunr |
| 719 | (package |
| 720 | (name "python-lunr") |
| 721 | (version "0.6.0") |
| 722 | (source |
| 723 | (origin |
| 724 | (method url-fetch) |
| 725 | (uri |
| 726 | (pypi-uri "lunr" version)) |
| 727 | (sha256 |
| 728 | (base32 "106akalywfmnypzkdrhgz4n4740a8xayspybsw59kq06vz8i2qrc")))) |
| 729 | (build-system python-build-system) |
| 730 | (native-inputs |
| 731 | (list python-mock python-pytest)) |
| 732 | (propagated-inputs |
| 733 | (list python-nltk-3.4)) |
| 734 | (home-page |
| 735 | "https://github.com/yeraydiazdiaz/lunr.py") |
| 736 | (synopsis "Full-text search library") |
| 737 | (description "This package provides python library for full-text search. |
| 738 | It indexes documents and provides a search interface for retrieving documents |
| 739 | that best match text queries.") |
| 740 | (license license:expat))) |
| 741 | |
| 742 | (define-public python-mdit-py-plugins |
| 743 | (package |
| 744 | (name "python-mdit-py-plugins") |
| 745 | (version "0.3.1") |
| 746 | (source (origin |
| 747 | (method git-fetch) ;for tests |
| 748 | (uri (git-reference |
| 749 | (url "https://github.com/executablebooks/mdit-py-plugins") |
| 750 | (commit (string-append "v" version)))) |
| 751 | (file-name (git-file-name name version)) |
| 752 | (sha256 |
| 753 | (base32 |
| 754 | "00ybbfb6dzn9q5qnvnm8bmhd84s215ik7pcdb4r35zhwiv2ikizz")))) |
| 755 | (build-system pyproject-build-system) |
| 756 | (propagated-inputs |
| 757 | (list python-markdown-it-py |
| 758 | python-attrs)) |
| 759 | (native-inputs |
| 760 | (list python-coverage |
| 761 | python-flit-core |
| 762 | python-pytest |
| 763 | python-pytest-cov |
| 764 | python-pytest-regressions)) |
| 765 | (home-page "https://github.com/executablebooks/mdit-py-plugins") |
| 766 | (synopsis "Collection of plugins for markdown-it-py") |
| 767 | (description "This package contains a collection of plugins for |
| 768 | @code{markdown-it-py} like: |
| 769 | @enumerate |
| 770 | @item amsmath, |
| 771 | @item attrs, |
| 772 | @item container, |
| 773 | @item definition list, |
| 774 | @item dollarmath, |
| 775 | @item field list, |
| 776 | @item footnote, |
| 777 | @item textmath, and |
| 778 | @item wordcount. |
| 779 | @end enumerate") |
| 780 | (license license:expat))) |
| 781 | |
| 782 | (define-public python-mdurl |
| 783 | (package |
| 784 | (name "python-mdurl") |
| 785 | (version "0.1.2") |
| 786 | (source |
| 787 | (origin |
| 788 | (method git-fetch) ; no tests data in PyPi package |
| 789 | (uri (git-reference |
| 790 | (url "https://github.com/executablebooks/mdurl") |
| 791 | (commit version))) |
| 792 | (file-name (git-file-name name version)) |
| 793 | (sha256 |
| 794 | (base32 "0csc777q42jzv4zgdzxmwp8xqlb92ws1jvj09m2smh4klw67q5f3")))) |
| 795 | (build-system pyproject-build-system) |
| 796 | (native-inputs (list python-flit python-pytest)) |
| 797 | (home-page "https://github.com/executablebooks/mdurl") |
| 798 | (synopsis "Markdown URL utilities") |
| 799 | (description |
| 800 | "This package implements a Python port of the JavaScript @code{mdurl}.") |
| 801 | (license license:expat))) |
| 802 | |
| 803 | (define-public python-mrkd |
| 804 | (package |
| 805 | (name "python-mrkd") |
| 806 | (version "0.2.0") |
| 807 | (source |
| 808 | (origin |
| 809 | (method url-fetch) |
| 810 | (uri (pypi-uri "mrkd" version)) |
| 811 | (sha256 |
| 812 | (base32 "1bvaqbna1ihb4y2mv9pmvqcq3r9j6lwbbii99dani8lxx4dqqvs5")))) |
| 813 | (build-system python-build-system) |
| 814 | (propagated-inputs |
| 815 | (list python-jinja2 python-mistune python-pygments)) |
| 816 | (home-page "https://pypi.org/project/mrkd/") |
| 817 | (synopsis "Python Markdown implementation") |
| 818 | (description |
| 819 | "@code{mrkd} writes man pages using Markdown, and convert them to Roff or |
| 820 | HTML") |
| 821 | (license license:bsd-3))) |
| 822 | |
| 823 | (define-public python-mkdocs |
| 824 | (package |
| 825 | (name "python-mkdocs") |
| 826 | (version "1.3.0") |
| 827 | (source |
| 828 | (origin |
| 829 | ;; The tests suite appears to be incomplete in the PyPI archive. |
| 830 | (method git-fetch) |
| 831 | (uri (git-reference |
| 832 | (url "https://github.com/mkdocs/mkdocs") |
| 833 | (commit version))) |
| 834 | (file-name (git-file-name name version)) |
| 835 | (sha256 |
| 836 | (base32 |
| 837 | "1n5rdllrxvhnxmdrddf55p3s86dakx0rq2gg6bj6pr6jg2pn932b")))) |
| 838 | (build-system python-build-system) |
| 839 | (arguments |
| 840 | `(#:phases |
| 841 | (modify-phases %standard-phases |
| 842 | ;; Requirements refer to a specific version of dependencies, |
| 843 | ;; which are too old. So we patch to refer to any later version. |
| 844 | (add-after 'unpack 'patch-requirements |
| 845 | (lambda _ |
| 846 | (substitute* "setup.py" |
| 847 | (("==") ">=")))) |
| 848 | (replace 'check |
| 849 | (lambda* (#:key tests? #:allow-other-keys) |
| 850 | (when tests? |
| 851 | (invoke "python" "-m" "unittest" |
| 852 | "discover" "-p" "*tests.py" "mkdocs" |
| 853 | "--top-level-directory" "."))))))) |
| 854 | (propagated-inputs |
| 855 | (list python-babel |
| 856 | python-click |
| 857 | python-ghp-import |
| 858 | python-importlib-metadata |
| 859 | python-jinja2 |
| 860 | python-markdown |
| 861 | python-markupsafe |
| 862 | python-mdx-gh-links |
| 863 | python-mergedeep |
| 864 | python-packaging |
| 865 | python-pyyaml |
| 866 | python-pyyaml-env-tag |
| 867 | python-watchdog)) |
| 868 | (home-page "https://www.mkdocs.org") |
| 869 | (synopsis "Project documentation with Markdown") |
| 870 | (description "MkDocs is a static site generator geared towards building |
| 871 | project documentation. Documentation source files are written in Markdown, and |
| 872 | configured with a single YAML configuration file.") |
| 873 | (license license:bsd-3))) |
| 874 | |
| 875 | (define-public python-mkdocs-markdownextradata-plugin |
| 876 | (package |
| 877 | (name "python-mkdocs-markdownextradata-plugin") |
| 878 | (version "0.2.5") |
| 879 | (source (origin |
| 880 | ;; Use git, as there are some test files missing from the PyPI release, |
| 881 | ;; see https://github.com/rosscdh/mkdocs-markdownextradata-plugin/issues/41. |
| 882 | (method git-fetch) |
| 883 | (uri (git-reference |
| 884 | (url "https://github.com/rosscdh/mkdocs-markdownextradata-plugin") |
| 885 | (commit version))) |
| 886 | (file-name (git-file-name name version)) |
| 887 | (sha256 |
| 888 | (base32 |
| 889 | "1a3868s9m7pzyfncpjbjsa9vw5nihssl2v47pxj7h6qa67kvlk3g")))) |
| 890 | (build-system python-build-system) |
| 891 | (native-inputs (list python-pytest)) |
| 892 | (propagated-inputs (list python-mkdocs python-pyyaml)) |
| 893 | (home-page "https://github.com/rosscdh/mkdocs-markdownextradata-plugin/") |
| 894 | (synopsis "Inject mkdocs.yml extra variables into the MkDocs markdown |
| 895 | template") |
| 896 | (description |
| 897 | "This package provides a MkDocs plugin that injects the mkdocs.yml extra |
| 898 | variables into the markdown template") |
| 899 | (license license:expat))) |
| 900 | |
| 901 | (define-public python-pymdown-extensions |
| 902 | (package |
| 903 | (name "python-pymdown-extensions") |
| 904 | (version "8.1.1") |
| 905 | (source |
| 906 | (origin |
| 907 | (method url-fetch) |
| 908 | (uri |
| 909 | (pypi-uri "pymdown-extensions" version)) |
| 910 | (sha256 |
| 911 | (base32 "0d8pdndrl1kj105lq7r6kw2dnhcvll6h2qs07w71mcpi7gx728v3")))) |
| 912 | (build-system python-build-system) |
| 913 | ;; FIXME: "AssertionError: False is not true" |
| 914 | (arguments |
| 915 | `(#:tests? #f)) |
| 916 | (propagated-inputs |
| 917 | (list python-markdown)) |
| 918 | (home-page "https://github.com/facelessuser/pymdown-extensions") |
| 919 | (synopsis "Extension pack for Python Markdown") |
| 920 | (description "PyMdown Extensions is a collection of extensions for Python |
| 921 | Markdown. All extensions are found under the module namespace of pymdownx.") |
| 922 | (license license:expat))) |
| 923 | |
| 924 | (define-public python-plotille |
| 925 | (package |
| 926 | (name "python-plotille") |
| 927 | (version "4.0.2") |
| 928 | (source (origin |
| 929 | (method url-fetch) |
| 930 | (uri (pypi-uri "plotille" version)) |
| 931 | (sha256 |
| 932 | (base32 |
| 933 | "0fvsk6glxfphhqy405h05rj3v95jd1byl5hv2fyd5l31wln23shj")))) |
| 934 | (build-system python-build-system) |
| 935 | (native-inputs (list python-six)) |
| 936 | (home-page "https://github.com/tammoippen/plotille") |
| 937 | (synopsis "Plot in the terminal using braille dots") |
| 938 | (description |
| 939 | "Plotille provides a figure class and graphing functions to create plots, |
| 940 | scatter plots, histograms and heatmaps in the terminal using braille dots.") |
| 941 | (license license:expat))) |
| 942 | |
| 943 | (define-public python-mdx-gh-links |
| 944 | (package |
| 945 | (name "python-mdx-gh-links") |
| 946 | (version "0.2") |
| 947 | (source |
| 948 | (origin |
| 949 | (method url-fetch) |
| 950 | (uri (pypi-uri "mdx_gh_links" version)) |
| 951 | (sha256 |
| 952 | (base32 "167k1jbp3jifxbnlpi6wy0z1skam7gqv2sixb5bhggb2vypqvysr")))) |
| 953 | (build-system python-build-system) |
| 954 | (arguments (list #:tests? #f)) ;tests connect github |
| 955 | (propagated-inputs (list python-markdown)) |
| 956 | (home-page "https://github.com/Python-Markdown/github-links/") |
| 957 | (synopsis "Python-Markdown extension adding support for shorthand links") |
| 958 | (description "This package is an extension to Python-Markdown which adds |
| 959 | support for shorthand links to GitHub users, repositories, issues and |
| 960 | commits.") |
| 961 | (license license:bsd-3))) |
| 962 | |
| 963 | (define-public python-mkdocs-material |
| 964 | (package |
| 965 | (name "python-mkdocs-material") |
| 966 | (version "7.1.3") |
| 967 | (source |
| 968 | (origin |
| 969 | (method url-fetch) |
| 970 | (uri |
| 971 | (pypi-uri "mkdocs-material" version)) |
| 972 | (sha256 |
| 973 | (base32 "0ci9xiasq9nfn09v11m7p49vzazdbgslw7rpzjd6y3hsmn9vljz3")))) |
| 974 | (build-system python-build-system) |
| 975 | (arguments |
| 976 | `(#:phases |
| 977 | (modify-phases %standard-phases |
| 978 | ;; Requirement mkdocs-material-extensions |
| 979 | ;; in-turn requires mkdocs-material. This causes |
| 980 | ;; circular dependency, so we remove this requirement. |
| 981 | (add-after 'unpack 'patch-requirements |
| 982 | (lambda _ |
| 983 | (substitute* "requirements.txt" |
| 984 | (("mkdocs-material-extensions.*$") ""))))))) |
| 985 | (propagated-inputs |
| 986 | (list python-markdown python-mkdocs python-pygments |
| 987 | python-pymdown-extensions)) |
| 988 | (home-page "https://squidfunk.github.io/mkdocs-material/") |
| 989 | (synopsis "Material Design theme for MkDocs") |
| 990 | (description "This package provides a theme plugin for the static site |
| 991 | generator MkDocs.") |
| 992 | (license license:expat))) |
| 993 | |
| 994 | (define-public python-slixmpp |
| 995 | (package |
| 996 | (name "python-slixmpp") |
| 997 | (version "1.5.2") |
| 998 | (source |
| 999 | (origin |
| 1000 | (method git-fetch) |
| 1001 | (uri |
| 1002 | (git-reference |
| 1003 | (url "https://lab.louiz.org/poezio/slixmpp.git") |
| 1004 | (commit |
| 1005 | (string-append "slix-" version)))) |
| 1006 | (file-name |
| 1007 | (git-file-name name version)) |
| 1008 | (sha256 |
| 1009 | (base32 "15mqxcws14bjvh5jcfwl86zsvrymkdw3ya07vb44md7vfnsnclwx")))) |
| 1010 | (build-system python-build-system) |
| 1011 | (arguments |
| 1012 | `(#:phases |
| 1013 | (modify-phases %standard-phases |
| 1014 | (add-after 'unpack 'patch |
| 1015 | (lambda _ |
| 1016 | (substitute* "setup.py" |
| 1017 | (("'CC', 'cc'") |
| 1018 | "'CC', 'gcc'")) |
| 1019 | #t))))) |
| 1020 | (native-inputs |
| 1021 | `(("cython" ,python-cython) |
| 1022 | ("gnupg" ,gnupg) |
| 1023 | ("pkg-config" ,pkg-config))) |
| 1024 | (propagated-inputs |
| 1025 | (list python-aiodns python-aiohttp python-pyasn1 |
| 1026 | python-pyasn1-modules)) |
| 1027 | (inputs |
| 1028 | (list libidn python)) ; We are building a Python extension. |
| 1029 | (synopsis "XMPP library without threads") |
| 1030 | (description "Slixmpp is a XMPP library for Python 3.7+. It is a fork of |
| 1031 | SleekXMPP. Its goal is to only rewrite the core of the library (the low level |
| 1032 | socket handling, the timers, the events dispatching) in order to remove all |
| 1033 | threads.") |
| 1034 | (home-page "https://lab.louiz.org/poezio/slixmpp") |
| 1035 | (license license:expat))) |
| 1036 | |
| 1037 | (define-public python-tenacity |
| 1038 | (package |
| 1039 | (name "python-tenacity") |
| 1040 | (version "8.0.1") |
| 1041 | (source (origin |
| 1042 | (method url-fetch) |
| 1043 | (uri (pypi-uri "tenacity" version)) |
| 1044 | (sha256 |
| 1045 | (base32 |
| 1046 | "0bwkvjpjfyi9dgszzad9aww2vc00w3bczjnbifi92cp7wch2l923")))) |
| 1047 | (build-system python-build-system) |
| 1048 | (native-inputs |
| 1049 | (list python-setuptools-scm python-tornado python-typeguard |
| 1050 | python-pytest)) |
| 1051 | (arguments |
| 1052 | (list #:phases |
| 1053 | #~(modify-phases %standard-phases |
| 1054 | (replace 'check |
| 1055 | (lambda _ (invoke "pytest" "-vv")))))) |
| 1056 | (home-page "https://github.com/jd/tenacity") |
| 1057 | (synopsis "Retrying library for python") |
| 1058 | (description "Tenacity is a general-purpose python library to simplify the |
| 1059 | task of adding retry behavior to just about anything.") |
| 1060 | (license license:asl2.0))) |
| 1061 | |
| 1062 | (define-public python-pytelegrambotapi |
| 1063 | (package |
| 1064 | (name "python-pytelegrambotapi") |
| 1065 | (version "3.7.4") |
| 1066 | (source |
| 1067 | (origin |
| 1068 | (method git-fetch) |
| 1069 | (uri (git-reference |
| 1070 | (url "https://github.com/eternnoir/pyTelegramBotAPI") |
| 1071 | (commit version))) |
| 1072 | (file-name (git-file-name name version)) |
| 1073 | (sha256 |
| 1074 | (base32 "0r7g5zs0fk3g2dxvbpl0pi730x7r2kalrhn30fs0pvc15a59fmxz")))) |
| 1075 | (build-system python-build-system) |
| 1076 | (arguments |
| 1077 | `(#:phases |
| 1078 | (modify-phases %standard-phases |
| 1079 | (replace 'check |
| 1080 | (lambda* (#:key tests? #:allow-other-keys) |
| 1081 | (when tests? |
| 1082 | (with-directory-excursion "tests" |
| 1083 | (invoke "py.test"))) |
| 1084 | #t))))) |
| 1085 | (propagated-inputs |
| 1086 | (list python-requests)) |
| 1087 | (native-inputs |
| 1088 | (list python-pytest)) |
| 1089 | (home-page "https://github.com/eternnoir/pyTelegramBotAPI") |
| 1090 | (synopsis "Python Telegram bot api") |
| 1091 | (description "This package provides a simple, but extensible Python |
| 1092 | implementation for the Telegram Bot API.") |
| 1093 | (license license:gpl2))) |
| 1094 | |
| 1095 | (define-public python-colorlog |
| 1096 | (package |
| 1097 | (name "python-colorlog") |
| 1098 | (version "6.6.0") |
| 1099 | (source |
| 1100 | (origin |
| 1101 | (method url-fetch) |
| 1102 | (uri (pypi-uri "colorlog" version)) |
| 1103 | (sha256 |
| 1104 | (base32 "1s7x0v872h8aks8xp01wmv6hzisxqjrh1svbbcycir0980h76krl")))) |
| 1105 | (build-system python-build-system) |
| 1106 | (arguments |
| 1107 | `(#:phases |
| 1108 | (modify-phases %standard-phases |
| 1109 | (replace 'check |
| 1110 | (lambda* (#:key inputs outputs tests? #:allow-other-keys) |
| 1111 | (when tests? |
| 1112 | (add-installed-pythonpath inputs outputs) |
| 1113 | (invoke "python" "-m" "pytest"))))))) |
| 1114 | (native-inputs |
| 1115 | (list python-pytest)) |
| 1116 | (home-page "https://github.com/borntyping/python-colorlog") |
| 1117 | (synopsis "Log formatting with colors for python") |
| 1118 | (description "The @code{colorlog.ColoredFormatter} is a formatter for use |
| 1119 | with Python's logging module that outputs records using terminal colors.") |
| 1120 | (license license:expat))) |
| 1121 | |
| 1122 | (define-public python-pyprind |
| 1123 | (package |
| 1124 | (name "python-pyprind") |
| 1125 | (version "2.11.3") |
| 1126 | (source (origin |
| 1127 | (method url-fetch) |
| 1128 | (uri (pypi-uri "PyPrind" version)) |
| 1129 | (sha256 |
| 1130 | (base32 |
| 1131 | "1gscnlvj37m421ch3akm3kddxqkrgbg5zrpwy2ky1j59w6vclzg3")))) |
| 1132 | (build-system python-build-system) |
| 1133 | (propagated-inputs |
| 1134 | (list python-psutil)) |
| 1135 | (home-page "https://github.com/rasbt/pyprind") |
| 1136 | (synopsis "Python Progress Bar and Percent Indicator Utility") |
| 1137 | (description "The PyPrind (Python Progress Indicator) module provides a |
| 1138 | progress bar and a percentage indicator object that let you track the progress |
| 1139 | of a loop structure or other iterative computation.") |
| 1140 | (license license:bsd-3))) |
| 1141 | |
| 1142 | (define-public python-glymur |
| 1143 | (package |
| 1144 | (name "python-glymur") |
| 1145 | (version "0.12.0") |
| 1146 | (source |
| 1147 | (origin |
| 1148 | (method git-fetch) ; no tests data in PyPi package |
| 1149 | (uri (git-reference |
| 1150 | (url "https://github.com/quintusdias/glymur") |
| 1151 | (commit (string-append "v" version)))) |
| 1152 | (file-name (git-file-name name version)) |
| 1153 | (sha256 |
| 1154 | (base32 "03nny8k42yxdyw7sjv43szmg23x3rqplbaf7m0a0lpvwla1dl78i")))) |
| 1155 | (build-system pyproject-build-system) |
| 1156 | (arguments |
| 1157 | (list |
| 1158 | #:phases |
| 1159 | #~(modify-phases %standard-phases |
| 1160 | (add-after 'unpack 'patch-library-locations |
| 1161 | (lambda* (#:key inputs #:allow-other-keys) |
| 1162 | ;; XXX: It's a workaround for Python inability to find the |
| 1163 | ;; .so libraries with ctypes.util.find_library() |
| 1164 | (substitute* '("glymur/config.py") |
| 1165 | (("path = find_library\\(libname\\)") |
| 1166 | (string-append |
| 1167 | "if libname == \"openjp2\":\n" |
| 1168 | " path = \"" |
| 1169 | (search-input-file inputs "/lib/libopenjp2.so") "\"\n" |
| 1170 | " elif libname == \"tiff\":\n" |
| 1171 | " path = \"" |
| 1172 | (search-input-file inputs "/lib/libtiff.so") "\"\n" |
| 1173 | " elif libname == \"c\":\n" |
| 1174 | " path = \"" |
| 1175 | (search-input-file inputs "/lib/libc.so.6") "\"\n"))))) |
| 1176 | (add-before 'check 'disable-failing-tests |
| 1177 | (lambda _ |
| 1178 | ;; Failing test due to inability of |
| 1179 | ;; ctypes.util.find_library() to determine library path, |
| 1180 | ;; which is patched above. |
| 1181 | (delete-file "tests/test_config.py")))))) |
| 1182 | (native-inputs |
| 1183 | (list python-pytest)) |
| 1184 | (inputs |
| 1185 | (list openjpeg ; glymur/lib/openjp2.py |
| 1186 | libtiff)) ; glymur/lib/tiff.py |
| 1187 | (propagated-inputs |
| 1188 | (list python-lxml |
| 1189 | python-numpy |
| 1190 | python-packaging)) |
| 1191 | (home-page "https://github.com/quintusdias/glymur") |
| 1192 | (synopsis "Python interface to OpenJPEG and LibTIFF") |
| 1193 | (description |
| 1194 | "This package provides Python interface to the OpenJPEG library which |
| 1195 | allows one to read and write JPEG 2000 files") |
| 1196 | (license license:expat))) |
| 1197 | |
| 1198 | (define-public python-gphoto2 |
| 1199 | (package |
| 1200 | (name "python-gphoto2") |
| 1201 | (version "2.2.1") |
| 1202 | (source (origin |
| 1203 | (method url-fetch) |
| 1204 | (uri (pypi-uri "gphoto2" version)) |
| 1205 | (sha256 |
| 1206 | (base32 |
| 1207 | "118zm25c8mlajfl0pzssnwz4b8lamj9dgymla9rn4nla7l244a0r")))) |
| 1208 | (build-system python-build-system) |
| 1209 | (native-inputs |
| 1210 | (list pkg-config)) |
| 1211 | (inputs |
| 1212 | (list libgphoto2)) |
| 1213 | (home-page "https://github.com/jim-easterbrook/python-gphoto2") |
| 1214 | (synopsis "Python interface to libgphoto2") |
| 1215 | (description "@code{python-gphoto2} is a comprehensive Python interface |
| 1216 | (or binding) to @code{libgphoto2}. It is built using @code{SWIG} to |
| 1217 | automatically generate the interface code.") |
| 1218 | (license license:gpl3+))) |
| 1219 | |
| 1220 | (define-public python-colour |
| 1221 | (package |
| 1222 | (name "python-colour") |
| 1223 | (version "0.1.5") |
| 1224 | (source (origin |
| 1225 | (method url-fetch) |
| 1226 | (uri (pypi-uri "colour" version)) |
| 1227 | (sha256 |
| 1228 | (base32 |
| 1229 | "1visbisfini5j14bdzgs95yssw6sm4pfzyq1n3lfvbyjxw7i485g")))) |
| 1230 | (build-system python-build-system) |
| 1231 | (native-inputs |
| 1232 | (list python-d2to1)) |
| 1233 | (home-page "https://github.com/vaab/colour") |
| 1234 | (synopsis "Convert and manipulate various color representations") |
| 1235 | (description "Pythonic way to manipulate color representations (HSL, RVB, |
| 1236 | web, X11, ...).") |
| 1237 | (license license:expat))) |
| 1238 | |
| 1239 | (define-public python-d2to1 |
| 1240 | (package |
| 1241 | (name "python-d2to1") |
| 1242 | (version "0.2.12.post1") |
| 1243 | (source (origin |
| 1244 | (method url-fetch) |
| 1245 | (uri (pypi-uri "d2to1" version)) |
| 1246 | (sha256 |
| 1247 | (base32 |
| 1248 | "09fq7pq1z8d006xh5z75rm2lk61v6yn2xhy53z4gsgibhqb2vvs9")))) |
| 1249 | (build-system python-build-system) |
| 1250 | (native-inputs |
| 1251 | (list python-nose)) |
| 1252 | (home-page "https://github.com/embray/d2to1") |
| 1253 | (synopsis "Allows for distutils2-like setup.cfg files as package metadata |
| 1254 | in python") |
| 1255 | (description "The python package d2to1 (the d is for distutils) allows |
| 1256 | using distutils2-like setup.cfg files for a package's metadata with a |
| 1257 | distribute/setuptools setup.py script.") |
| 1258 | (license license:bsd-2))) |
| 1259 | |
| 1260 | (define-public python-rawkit |
| 1261 | (package |
| 1262 | (name "python-rawkit") |
| 1263 | (version "0.6.0") |
| 1264 | (source (origin |
| 1265 | (method url-fetch) |
| 1266 | (uri (pypi-uri "rawkit" version)) |
| 1267 | (sha256 |
| 1268 | (base32 |
| 1269 | "0vrhrpr70i61y5q5ysk341x1539ff1q1k82g59zq69lv16s0f76s")))) |
| 1270 | (build-system python-build-system) |
| 1271 | (native-inputs |
| 1272 | (list python-pytest python-mock)) |
| 1273 | (inputs |
| 1274 | (list libraw)) |
| 1275 | (home-page "https://rawkit.readthedocs.io") |
| 1276 | (synopsis "Ctypes-based LibRaw binding for Python") |
| 1277 | (description "The rawkit package provides two modules: rawkit and libraw. |
| 1278 | The rawkit module provides a high-level Pythonic interface for developing raw |
| 1279 | photos, while the libraw module provides a CTypes based interface for |
| 1280 | interacting with the low-level LibRaw C APIs.") |
| 1281 | (license license:expat))) |
| 1282 | |
| 1283 | (define-public python-easygui |
| 1284 | (package |
| 1285 | (name "python-easygui") |
| 1286 | (version "0.98.1") |
| 1287 | (source (origin |
| 1288 | (method url-fetch) |
| 1289 | (uri (pypi-uri "easygui" version)) |
| 1290 | (sha256 |
| 1291 | (base32 |
| 1292 | "1zmvmwgxyzvm83818skhn8b4wrci4kmnixaax8q3ia5cn7xrmj6v")))) |
| 1293 | (build-system python-build-system) |
| 1294 | (propagated-inputs |
| 1295 | (list `(,python "tk"))) |
| 1296 | (home-page "https://github.com/robertlugg/easygui") |
| 1297 | (synopsis "GUI programming module for Python") |
| 1298 | (description "EasyGUI is a module for very simple, very easy GUI |
| 1299 | programming in Python. EasyGUI is different from other GUI generators in that |
| 1300 | EasyGUI is NOT event-driven. Instead, all GUI interactions are invoked by |
| 1301 | simple function calls.") |
| 1302 | (license license:bsd-3))) |
| 1303 | |
| 1304 | (define-public python-pymd4c |
| 1305 | (package |
| 1306 | (name "python-pymd4c") |
| 1307 | (version "0.4.6.0b1") |
| 1308 | (source |
| 1309 | (origin |
| 1310 | (method url-fetch) |
| 1311 | (uri (pypi-uri "pymd4c" version)) |
| 1312 | (sha256 |
| 1313 | (base32 "07s3arn85ri92im6x3ipljdmrxmpik7irs06i6lm17j1x6j9841d")))) |
| 1314 | (build-system python-build-system) |
| 1315 | (inputs |
| 1316 | (list md4c)) |
| 1317 | (native-inputs |
| 1318 | (list python-flake8 python-pkgconfig pkg-config)) |
| 1319 | (home-page "https://github.com/dominickpastore/pymd4c") |
| 1320 | (synopsis "Python bindings for MD4C") |
| 1321 | (description |
| 1322 | "PyMD4C provides Python bindings for MD4c, a C Markdown parser, compliant |
| 1323 | to CommonMark.") |
| 1324 | (license license:expat))) |
| 1325 | |
| 1326 | (define-public python-pymediainfo |
| 1327 | (package |
| 1328 | (name "python-pymediainfo") |
| 1329 | (version "4.1") |
| 1330 | (source |
| 1331 | (origin |
| 1332 | (method url-fetch) |
| 1333 | (uri (pypi-uri "pymediainfo" version)) |
| 1334 | (sha256 |
| 1335 | (base32 |
| 1336 | "0mhpxs7vlqx8w75z93dy7nnvx89kwfdjkla03l19an15rlyqyspd")))) |
| 1337 | (build-system python-build-system) |
| 1338 | (native-inputs |
| 1339 | (list python-setuptools-scm python-pytest)) |
| 1340 | (inputs |
| 1341 | (list libmediainfo)) |
| 1342 | (arguments |
| 1343 | `(#:phases |
| 1344 | (modify-phases %standard-phases |
| 1345 | (add-after 'unpack 'patch-libmediainfo |
| 1346 | (lambda _ |
| 1347 | (substitute* "pymediainfo/__init__.py" |
| 1348 | (("libmediainfo.so.0") |
| 1349 | (search-input-file %build-inputs |
| 1350 | "/lib/libmediainfo.so.0"))))) |
| 1351 | (replace 'check |
| 1352 | (lambda* (#:key tests? inputs outputs #:allow-other-keys) |
| 1353 | (when tests? |
| 1354 | (add-installed-pythonpath inputs outputs) |
| 1355 | ;; Skip the only failing test "test_parse_url" because it tries |
| 1356 | ;; to access the internet. |
| 1357 | (invoke "pytest" "-vv" "-k" "not test_parse_url"))))))) |
| 1358 | (home-page |
| 1359 | "https://github.com/sbraz/pymediainfo") |
| 1360 | (synopsis |
| 1361 | "Python wrapper for the mediainfo library") |
| 1362 | (description |
| 1363 | "This package provides a Python wrapper for the mediainfo library to |
| 1364 | access the technical and tag data for video and audio files.") |
| 1365 | (license license:expat))) |
| 1366 | |
| 1367 | (define-public python-psutil |
| 1368 | (package |
| 1369 | (name "python-psutil") |
| 1370 | (version "5.9.2") |
| 1371 | (source |
| 1372 | (origin |
| 1373 | (method url-fetch) |
| 1374 | (uri (pypi-uri "psutil" version)) |
| 1375 | (sha256 |
| 1376 | (base32 "0p1bf6ndcssqh0ic828ggwhzhm67mzj3ffq6043v0fvc1fhn3f7y")))) |
| 1377 | (build-system python-build-system) |
| 1378 | (arguments |
| 1379 | ;; FIXME: some tests do not return and time out. Some tests fail because |
| 1380 | ;; some processes survive kill(). |
| 1381 | '(#:tests? #f)) |
| 1382 | (home-page "https://github.com/giampaolo/psutil") |
| 1383 | (synopsis "Library for retrieving information on running processes") |
| 1384 | (description |
| 1385 | "@code{psutil} (Python system and process utilities) is a library for |
| 1386 | retrieving information on running processes and system utilization (CPU, |
| 1387 | memory, disks, network) in Python. It is useful mainly for system monitoring, |
| 1388 | profiling and limiting process resources and management of running processes. |
| 1389 | It implements many functionalities offered by command line tools such as: ps, |
| 1390 | top, lsof, netstat, ifconfig, who, df, kill, free, nice, ionice, iostat, |
| 1391 | iotop, uptime, pidof, tty, taskset, pmap.") |
| 1392 | (license license:bsd-3))) |
| 1393 | |
| 1394 | (define-public python-shapely |
| 1395 | (package |
| 1396 | (name "python-shapely") |
| 1397 | (version "1.8.4") |
| 1398 | (source |
| 1399 | (origin |
| 1400 | (method url-fetch) |
| 1401 | (uri (pypi-uri "Shapely" version)) |
| 1402 | (sha256 |
| 1403 | (base32 "130rqd0czi128wm5pdn47v4m6czxd7pkzanbya8q48gsm8ffb5d1")))) |
| 1404 | (build-system python-build-system) |
| 1405 | (native-inputs |
| 1406 | (list python-cython python-matplotlib python-pytest |
| 1407 | python-pytest-cov)) |
| 1408 | (inputs |
| 1409 | (list geos)) |
| 1410 | (propagated-inputs |
| 1411 | (list python-numpy)) |
| 1412 | (arguments |
| 1413 | `(#:phases |
| 1414 | (modify-phases %standard-phases |
| 1415 | (add-after 'unpack 'patch-geos-path |
| 1416 | (lambda* (#:key inputs #:allow-other-keys) |
| 1417 | (let ((geos (assoc-ref inputs "geos")) |
| 1418 | (glibc (assoc-ref inputs ,(if (%current-target-system) |
| 1419 | "cross-libc" "libc")))) |
| 1420 | (substitute* '("shapely/geos.py" "shapely/_buildcfg.py") |
| 1421 | (("_lgeos = load_dll\\('geos_c', fallbacks=.*\\)") |
| 1422 | (string-append "_lgeos = load_dll('geos_c', fallbacks=['" |
| 1423 | geos "/lib/libgeos_c.so'])")) |
| 1424 | (("free = load_dll\\('c'\\)\\.free") |
| 1425 | (string-append "free = load_dll('c', fallbacks=['" |
| 1426 | glibc "/lib/libc.so.6']).free")) |
| 1427 | (("free = load_dll\\('c', fallbacks=.*\\)\\.free") |
| 1428 | (string-append "free = load_dll('c', fallbacks=['" |
| 1429 | glibc "/lib/libc.so.6']).free")))) |
| 1430 | #t))))) |
| 1431 | (home-page "https://github.com/Toblerity/Shapely") |
| 1432 | (synopsis "Library for the manipulation and analysis of geometric objects") |
| 1433 | (description "Shapely is a Python package for manipulation and analysis of |
| 1434 | planar geometric objects. It is based on the @code{GEOS} library.") |
| 1435 | (license license:bsd-3))) |
| 1436 | |
| 1437 | (define-public python-shortuuid |
| 1438 | (package |
| 1439 | (name "python-shortuuid") |
| 1440 | (version "0.5.0") |
| 1441 | (source |
| 1442 | (origin |
| 1443 | (method url-fetch) |
| 1444 | (uri (pypi-uri "shortuuid" version)) |
| 1445 | (sha256 |
| 1446 | (base32 |
| 1447 | "1f8i4zwj5vmpzbz6b17bljy4399gx5aq7vsyw63sz2qgyjcd73yh")))) |
| 1448 | (build-system python-build-system) |
| 1449 | (native-inputs |
| 1450 | (list python-pep8)) |
| 1451 | (home-page "https://github.com/skorokithakis/shortuuid") |
| 1452 | (synopsis "Generator library for concise, unambiguous and URL-safe UUIDs") |
| 1453 | (description |
| 1454 | "@code{shortuuid} is a Python library for generating concise, unambiguous |
| 1455 | and URL-safe UUIDs. UUIDs are generated using the built-in Python @code{uuid} |
| 1456 | module and then similar looking characters are removed.") |
| 1457 | (license license:bsd-3))) |
| 1458 | |
| 1459 | (define-public python-logwrap |
| 1460 | (package |
| 1461 | (name "python-logwrap") |
| 1462 | (version "8.2.0.post0") |
| 1463 | (source |
| 1464 | (origin |
| 1465 | (method url-fetch) |
| 1466 | (uri (pypi-uri "logwrap" version)) |
| 1467 | (sha256 |
| 1468 | (base32 |
| 1469 | "1dv7gny3rfci5cal2ipr6d0pcz3yhka7af96dfsd3ir1mxy8p1j9")))) |
| 1470 | (build-system python-build-system) |
| 1471 | (arguments |
| 1472 | `(#:tests? #f ; Tests not included in pypi release. |
| 1473 | #:phases |
| 1474 | (modify-phases %standard-phases |
| 1475 | (replace 'check |
| 1476 | (lambda* (#:key tests? #:allow-other-keys) |
| 1477 | (when tests? |
| 1478 | (invoke "pytest")) |
| 1479 | #t))))) |
| 1480 | (native-inputs |
| 1481 | (list python-cython python-pytest python-setuptools-scm python-toml |
| 1482 | python-wheel)) |
| 1483 | (home-page "https://github.com/python-useful-helpers/logwrap") |
| 1484 | (synopsis "Decorator for logging function arguments") |
| 1485 | (description "This package provides a decorator to log function arguments |
| 1486 | and function call return values in a human-readable way.") |
| 1487 | (license license:asl2.0))) |
| 1488 | |
| 1489 | (define-public python-clyent |
| 1490 | (package |
| 1491 | (name "python-clyent") |
| 1492 | (version "1.2.1") |
| 1493 | (source |
| 1494 | (origin |
| 1495 | (method url-fetch) |
| 1496 | (uri (pypi-uri "clyent" version)) |
| 1497 | (sha256 |
| 1498 | (base32 |
| 1499 | "1r9987qmy1pz3hq54160bapqsywpq14waw4w9x3ly8hmq7kpgfbj")))) |
| 1500 | (build-system python-build-system) |
| 1501 | (native-inputs |
| 1502 | (list python-mock)) |
| 1503 | (home-page "https://github.com/Anaconda-Platform/clyent") |
| 1504 | (synopsis "Command line client library") |
| 1505 | (description "Clyent is a Python command line utility library. It is used |
| 1506 | by @code{binstar}, @code{binstar-build}, and @code{chalmers}.") |
| 1507 | (license license:bsd-3))) |
| 1508 | |
| 1509 | (define-public python-babel |
| 1510 | (package |
| 1511 | (name "python-babel") |
| 1512 | (version "2.10.3") |
| 1513 | (source |
| 1514 | (origin |
| 1515 | (method url-fetch) |
| 1516 | (uri (pypi-uri "Babel" version)) |
| 1517 | (sha256 |
| 1518 | (base32 |
| 1519 | "0l9cvfmsz0hlvcinxaf6xf2f02ldgw3xq9i1fc7lk5zf24vma53n")))) |
| 1520 | (build-system python-build-system) |
| 1521 | (native-inputs |
| 1522 | (list python-freezegun python-pytest tzdata-for-tests)) |
| 1523 | (propagated-inputs |
| 1524 | (list python-pytz)) |
| 1525 | (arguments |
| 1526 | `(#:phases (modify-phases %standard-phases |
| 1527 | (replace 'check |
| 1528 | (lambda _ |
| 1529 | (invoke "pytest" "-vv")))))) |
| 1530 | (home-page "https://babel.pocoo.org/") |
| 1531 | (synopsis |
| 1532 | "Tools for internationalizing Python applications") |
| 1533 | (description |
| 1534 | "Babel is composed of two major parts: |
| 1535 | - tools to build and work with gettext message catalogs |
| 1536 | - a Python interface to the CLDR (Common Locale Data Repository), providing |
| 1537 | access to various locale display names, localized number and date formatting, |
| 1538 | etc.") |
| 1539 | (license license:bsd-3))) |
| 1540 | |
| 1541 | (define-public python-bidict |
| 1542 | (package |
| 1543 | (name "python-bidict") |
| 1544 | (version "0.21.2") |
| 1545 | (source |
| 1546 | (origin |
| 1547 | (method url-fetch) |
| 1548 | (uri (pypi-uri "bidict" version)) |
| 1549 | (sha256 |
| 1550 | (base32 |
| 1551 | "02dy0b1k7qlhn7ajyzkrvxhyhjj0hzcq6ws3zjml9hkdz5znz92g")))) |
| 1552 | (build-system python-build-system) |
| 1553 | (native-inputs |
| 1554 | (list python-coverage |
| 1555 | python-hypothesis |
| 1556 | python-pre-commit |
| 1557 | python-py |
| 1558 | python-pytest |
| 1559 | python-pytest-benchmark |
| 1560 | python-pytest-cov |
| 1561 | python-setuptools-scm |
| 1562 | python-sortedcollections |
| 1563 | python-sortedcontainers |
| 1564 | python-sphinx |
| 1565 | python-sphinx-autodoc-typehints |
| 1566 | python-tox)) |
| 1567 | (arguments |
| 1568 | `(#:phases (modify-phases %standard-phases |
| 1569 | (add-after 'unpack 'relax-reqs |
| 1570 | (lambda _ |
| 1571 | (substitute* "setup.py" |
| 1572 | (("sortedcollections < 2") "sortedcollections")) |
| 1573 | #t)) |
| 1574 | (replace 'check |
| 1575 | (lambda _ (invoke "./run_tests.py")))))) |
| 1576 | (home-page "https://bidict.readthedocs.io") |
| 1577 | (synopsis "Bidirectional mapping library") |
| 1578 | (description "The @code{bidict} library provides several data structures |
| 1579 | for working with bidirectional mappings in Python.") |
| 1580 | (license license:mpl2.0))) |
| 1581 | |
| 1582 | (define-public python-bip39 |
| 1583 | (package |
| 1584 | (name "python-bip39") |
| 1585 | (version "0.0.2") |
| 1586 | (source |
| 1587 | (origin |
| 1588 | (method url-fetch) |
| 1589 | (uri (pypi-uri "bip39" version)) |
| 1590 | (sha256 |
| 1591 | (base32 "18m7d3gi7vj2zi0bl1z7m0nhcj6i8j9vj4vil276siagnpkv64ry")))) |
| 1592 | (build-system python-build-system) |
| 1593 | (native-inputs (list python-pytest)) |
| 1594 | (home-page "https://github.com/de-centralized-systems/python-bip39/") |
| 1595 | (synopsis "Self-contained and simple BIP39 implementation in Python") |
| 1596 | (description |
| 1597 | "This package provides a self-contained and simple BIP39 |
| 1598 | implementation written in Python. It includes a @code{bip39.py} executable. |
| 1599 | |
| 1600 | BIP39 is a standardized mapping between binary data (the @emph{entropy}), |
| 1601 | and a list of words that are easier to remember for humans (the |
| 1602 | @emph{mnemonic}).") |
| 1603 | (license license:expat))) |
| 1604 | |
| 1605 | (define-public python-bitarray |
| 1606 | (package |
| 1607 | (name "python-bitarray") |
| 1608 | (version "1.4.0") |
| 1609 | (source (origin |
| 1610 | (method url-fetch) |
| 1611 | (uri (pypi-uri "bitarray" version)) |
| 1612 | (sha256 |
| 1613 | (base32 |
| 1614 | "177fj6wbw5jln54wpp6plcqy2329wjkwqwvgz7022rrg3xfrq49g")))) |
| 1615 | (build-system python-build-system) |
| 1616 | (home-page "https://github.com/ilanschnell/bitarray") |
| 1617 | (synopsis "Efficient arrays of booleans") |
| 1618 | (description "This package provides an object type which efficiently |
| 1619 | represents an array of booleans. Bitarrays are sequence types and behave very |
| 1620 | much like usual lists. Eight bits are represented by one byte in a contiguous |
| 1621 | block of memory. The user can select between two representations: |
| 1622 | little-endian and big-endian. All of the functionality is implemented in C. |
| 1623 | Methods for accessing the machine representation are provided. This can be |
| 1624 | useful when bit level access to binary files is required, such as portable |
| 1625 | bitmap image files. Also, when dealing with compressed data which uses |
| 1626 | variable bit length encoding, you may find this module useful.") |
| 1627 | (license license:psfl))) |
| 1628 | |
| 1629 | (define-public python-boolean.py |
| 1630 | (package |
| 1631 | (name "python-boolean.py") |
| 1632 | (version "3.6") |
| 1633 | (source |
| 1634 | (origin |
| 1635 | ;; There's no source tarball on PyPI. |
| 1636 | (method git-fetch) |
| 1637 | (uri (git-reference |
| 1638 | (url "https://github.com/bastikr/boolean.py") |
| 1639 | (commit (string-append "v" version)))) |
| 1640 | (file-name (git-file-name name version)) |
| 1641 | (sha256 |
| 1642 | (base32 "1wc89y73va58cj7dsx6c199zpxsy9q53dsffsdj6zmc90inqz6qs")))) |
| 1643 | (build-system python-build-system) |
| 1644 | (home-page "https://github.com/bastikr/boolean.py") |
| 1645 | (synopsis "Boolean algebra in one Python module") |
| 1646 | (description |
| 1647 | "This is a small Python library that implements boolean algebra. |
| 1648 | It defines two base elements, @code{TRUE} and @code{FALSE}, and a |
| 1649 | @code{Symbol} class that can take on one of these two values. Calculations |
| 1650 | are done only in terms of @code{AND}, @code{OR}, and @code{NOT}---other |
| 1651 | compositions like @code{XOR} and @code{NAND} are emulated on top of them. |
| 1652 | Expressions are constructed from parsed strings or directly in Python.") |
| 1653 | (license license:bsd-2))) |
| 1654 | |
| 1655 | (define-public python-hdf4 |
| 1656 | (package |
| 1657 | (name "python-hdf4") |
| 1658 | (version "0.9") |
| 1659 | (source |
| 1660 | (origin |
| 1661 | (method url-fetch) |
| 1662 | (uri (pypi-uri name version)) |
| 1663 | (sha256 |
| 1664 | (base32 |
| 1665 | "1hjiyrxvxk9817qyqky3nar4y3fs4z8wxz0n884zzb5wi6skrjks")))) |
| 1666 | (build-system python-build-system) |
| 1667 | (native-inputs `(("nose" ,python-nose))) |
| 1668 | (propagated-inputs `(("numpy" ,python-numpy))) |
| 1669 | (inputs |
| 1670 | `(("hdf4" ,hdf4) |
| 1671 | ("libjpeg" ,libjpeg-turbo) |
| 1672 | ("zlib" ,zlib))) |
| 1673 | (arguments |
| 1674 | `(#:phases |
| 1675 | (modify-phases %standard-phases |
| 1676 | (replace 'check |
| 1677 | (lambda _ |
| 1678 | (invoke "./runexamples.sh") |
| 1679 | (invoke "nosetests" "-v")))))) |
| 1680 | (home-page "https://github.com/fhs/python-hdf4") |
| 1681 | (synopsis "Python interface to the NCSA HDF4 library") |
| 1682 | (description |
| 1683 | "Python-HDF4 is a python wrapper around the NCSA HDF version 4 library, |
| 1684 | which implements the SD (Scientific Dataset), VS (Vdata) and V (Vgroup) API’s. |
| 1685 | NetCDF files can also be read and modified. Python-HDF4 is a fork of |
| 1686 | @url{http://hdfeos.org/software/pyhdf.php,pyhdf}.") |
| 1687 | (license license:expat))) |
| 1688 | |
| 1689 | (define-public python-h5netcdf |
| 1690 | (package |
| 1691 | (name "python-h5netcdf") |
| 1692 | (version "1.0.1") |
| 1693 | (source |
| 1694 | (origin |
| 1695 | (method url-fetch) |
| 1696 | (uri (pypi-uri "h5netcdf" version)) |
| 1697 | (sha256 |
| 1698 | (base32 "1b2dcgf5rwy7pb7hr4prkc5vgcw9qc2was20dmnj90lbrpx08rvp")))) |
| 1699 | (build-system python-build-system) |
| 1700 | (arguments |
| 1701 | (list #:phases |
| 1702 | #~(modify-phases %standard-phases |
| 1703 | (replace 'check |
| 1704 | (lambda* (#:key tests? #:allow-other-keys) |
| 1705 | (when tests? |
| 1706 | (invoke "pytest" "-vv" "h5netcdf/tests"))))))) |
| 1707 | (native-inputs |
| 1708 | (list python-netcdf4 |
| 1709 | python-pytest |
| 1710 | python-setuptools-scm)) |
| 1711 | (propagated-inputs |
| 1712 | (list python-h5py python-packaging)) |
| 1713 | (home-page "https://h5netcdf.org") |
| 1714 | (synopsis "Python interface for the netCDF4 file-format based on h5py") |
| 1715 | (description "This package provides Python interface for the netCDF4 |
| 1716 | file-format that reads and writes local or remote HDF5 files directly via h5py |
| 1717 | or h5pyd, without relying on the Unidata netCDF library") |
| 1718 | (license license:bsd-3))) |
| 1719 | |
| 1720 | (define-public python-h5py |
| 1721 | (package |
| 1722 | (name "python-h5py") |
| 1723 | (version "3.6.0") |
| 1724 | (source |
| 1725 | (origin |
| 1726 | (method url-fetch) |
| 1727 | (uri (pypi-uri "h5py" version)) |
| 1728 | (sha256 |
| 1729 | (base32 |
| 1730 | "0afv805vqrm5071g7alwv41920nhh8kjv4m5nbia9awj9a0x4ll7")))) |
| 1731 | (build-system python-build-system) |
| 1732 | (arguments |
| 1733 | `(#:tests? #f ; no test target |
| 1734 | #:phases |
| 1735 | (modify-phases %standard-phases |
| 1736 | (add-after 'unpack 'fix-hdf5-paths |
| 1737 | (lambda* (#:key inputs #:allow-other-keys) |
| 1738 | (setenv "HDF5_DIR" (assoc-ref inputs "hdf5"))))))) |
| 1739 | (propagated-inputs |
| 1740 | (list python-six python-numpy)) |
| 1741 | (inputs |
| 1742 | (list hdf5-1.10)) |
| 1743 | (native-inputs |
| 1744 | (list python-cython python-pkgconfig pkg-config)) |
| 1745 | (home-page "https://www.h5py.org/") |
| 1746 | (synopsis "Read and write HDF5 files from Python") |
| 1747 | (description |
| 1748 | "The h5py package provides both a high- and low-level interface to the |
| 1749 | HDF5 library from Python. The low-level interface is intended to be a |
| 1750 | complete wrapping of the HDF5 API, while the high-level component supports |
| 1751 | access to HDF5 files, datasets and groups using established Python and NumPy |
| 1752 | concepts.") |
| 1753 | (license license:bsd-3))) |
| 1754 | |
| 1755 | (define-public python-hnswlib |
| 1756 | (package |
| 1757 | (name "python-hnswlib") |
| 1758 | (version "0.5.2") |
| 1759 | (source |
| 1760 | (origin |
| 1761 | (method url-fetch) |
| 1762 | (uri (pypi-uri "hnswlib" version)) |
| 1763 | (sha256 |
| 1764 | (base32 "0wf1cwmxmdzfqmfhrkqdxb5spf21ylgl2bidswhzjrqhwf35c9qf")))) |
| 1765 | (build-system python-build-system) |
| 1766 | (arguments |
| 1767 | `(#:phases |
| 1768 | (modify-phases %standard-phases |
| 1769 | (add-after 'unpack 'disable-native-optimization |
| 1770 | (lambda _ |
| 1771 | (substitute* "setup.py" |
| 1772 | ((", '-march=native'") ""))))))) |
| 1773 | (propagated-inputs |
| 1774 | (list python-numpy)) |
| 1775 | (native-inputs |
| 1776 | (list pybind11)) |
| 1777 | (home-page "https://github.com/nmslib/hnswlib") |
| 1778 | (synopsis "Fast approximate nearest neighbor search") |
| 1779 | (description "Hnswlib is a header-only C++ implementation of fast |
| 1780 | approximate nearest neighbor search with Python bindings.") |
| 1781 | (license license:asl2.0))) |
| 1782 | |
| 1783 | (define-public python-pylatexenc |
| 1784 | (package |
| 1785 | (name "python-pylatexenc") |
| 1786 | (version "2.10") |
| 1787 | (source (origin |
| 1788 | (method url-fetch) |
| 1789 | (uri (pypi-uri "pylatexenc" version)) |
| 1790 | (file-name (string-append name "-" version ".tar.gz")) |
| 1791 | (sha256 |
| 1792 | (base32 |
| 1793 | "1ls09z47b5md71gkxcj7fd87ynpvv2walgp2w6z31p26xf2gvn1x")))) |
| 1794 | (build-system python-build-system) |
| 1795 | (home-page "https://github.com/phfaist/pylatexenc") |
| 1796 | (synopsis "LaTeX parser for Unicode/LaTeX conversion") |
| 1797 | (description |
| 1798 | "@code{python-pylatexenc} is a LaTeX parser providing LaTeX-to-Unicode and |
| 1799 | Unicode-to-LaTeX conversion.") |
| 1800 | (license license:expat))) |
| 1801 | |
| 1802 | (define-public python-pyls-black |
| 1803 | (package |
| 1804 | (name "python-pyls-black") |
| 1805 | (version "0.4.7") |
| 1806 | (source |
| 1807 | (origin |
| 1808 | ;; There are no tests in the PyPI tarball. |
| 1809 | (method git-fetch) |
| 1810 | (uri (git-reference |
| 1811 | (url "https://github.com/rupert/pyls-black/") |
| 1812 | (commit (string-append "v" version)))) |
| 1813 | (file-name (git-file-name name version)) |
| 1814 | (sha256 |
| 1815 | (base32 "0bkhfnlik89j3yamr20br4wm8975f20v33wabi2nyxvj10whr5dj")) |
| 1816 | ;; Patch to work with python-lsp-server. Taken from |
| 1817 | ;; <https://github.com/rupert/pyls-black/pull/37>. |
| 1818 | (modules '((guix build utils))) |
| 1819 | (snippet |
| 1820 | '(begin |
| 1821 | (substitute* "setup.cfg" |
| 1822 | (("python-language-server") |
| 1823 | "python-lsp-server")) |
| 1824 | (substitute* '("pyls_black/plugin.py" "tests/test_plugin.py") |
| 1825 | (("pyls_format_document") |
| 1826 | "pylsp_format_document") |
| 1827 | (("pyls_format_range") |
| 1828 | "pylsp_format_range") |
| 1829 | (("from pyls([ \\.])" _ char) |
| 1830 | (string-append "from pylsp" char))))))) |
| 1831 | (build-system python-build-system) |
| 1832 | (arguments |
| 1833 | `(#:test-target "pytest")) |
| 1834 | (propagated-inputs |
| 1835 | (list python-black python-lsp-server python-tomli)) |
| 1836 | (native-inputs |
| 1837 | (list python-flake8 python-isort python-mypy python-pytest |
| 1838 | python-pytest-runner)) |
| 1839 | (home-page "https://github.com/rupert/pyls-black") |
| 1840 | (synopsis "Black plugin for the Python Language Server") |
| 1841 | (description "Black plugin for the Python Language Server.") |
| 1842 | (license license:expat))) |
| 1843 | |
| 1844 | (define-public python-sh |
| 1845 | (package |
| 1846 | (name "python-sh") |
| 1847 | (version "1.14.2") |
| 1848 | (source |
| 1849 | (origin |
| 1850 | (method url-fetch) |
| 1851 | (uri (pypi-uri "sh" version)) |
| 1852 | (sha256 |
| 1853 | (base32 |
| 1854 | "03gyss1rhj4in7pgysg4q0hxp3230whinlpy1532ljs99lrx0ywx")))) |
| 1855 | (build-system python-build-system) |
| 1856 | (arguments |
| 1857 | '(#:phases |
| 1858 | (modify-phases %standard-phases |
| 1859 | (replace 'check |
| 1860 | (lambda _ |
| 1861 | ;; XXX: A Python 2 test fails when HOME=/homeless-shelter. |
| 1862 | (setenv "HOME" "/tmp") |
| 1863 | (invoke "python" "sh.py" "test")))))) |
| 1864 | (native-inputs |
| 1865 | (list python-coverage)) |
| 1866 | (home-page "https://github.com/amoffat/sh") |
| 1867 | (synopsis "Python subprocess replacement") |
| 1868 | (description "This package provides a replacement for Python's |
| 1869 | @code{subprocess} feature.") |
| 1870 | (license license:expat))) |
| 1871 | |
| 1872 | (define-public python-cftime |
| 1873 | (package |
| 1874 | (name "python-cftime") |
| 1875 | (version "1.5.1.1") |
| 1876 | (source |
| 1877 | (origin |
| 1878 | (method url-fetch) |
| 1879 | (uri (pypi-uri "cftime" version)) |
| 1880 | (sha256 |
| 1881 | (base32 "0l1a22zlhdpgaisibvvm7dhij4vzfm661rnv00y2snpyqxpdgi3d")))) |
| 1882 | (build-system python-build-system) |
| 1883 | (propagated-inputs |
| 1884 | (list python-numpy)) |
| 1885 | (native-inputs |
| 1886 | (list python-check-manifest |
| 1887 | python-coverage |
| 1888 | python-coveralls |
| 1889 | python-cython |
| 1890 | python-pytest-cov |
| 1891 | python-sphinx |
| 1892 | python-twine |
| 1893 | python-wheel)) |
| 1894 | (home-page "https://unidata.github.io/cftime/") |
| 1895 | (synopsis "Library for time handling") |
| 1896 | (description |
| 1897 | "This package provides time-handling functionality that used to be part |
| 1898 | of the netcdf4 package before.") |
| 1899 | (license license:expat))) |
| 1900 | |
| 1901 | (define-public python-netcdf4 |
| 1902 | (package |
| 1903 | (name "python-netcdf4") |
| 1904 | (version "1.6.0") |
| 1905 | (source |
| 1906 | (origin |
| 1907 | (method url-fetch) |
| 1908 | (uri (pypi-uri "netCDF4" version)) |
| 1909 | (sha256 |
| 1910 | (base32 |
| 1911 | "0qxs8r1qmsmg760wm5q0wqlcm7hdd3k7cghryw6wvqd3v5rs7vwm")))) |
| 1912 | (build-system python-build-system) |
| 1913 | (arguments |
| 1914 | '(#:phases |
| 1915 | (modify-phases %standard-phases |
| 1916 | (add-after 'unpack 'configure-locations |
| 1917 | (lambda* (#:key inputs #:allow-other-keys) |
| 1918 | (setenv "HDF5_DIR" (assoc-ref inputs "hdf5")) |
| 1919 | #t))))) |
| 1920 | (native-inputs |
| 1921 | (list python-cython)) |
| 1922 | (propagated-inputs |
| 1923 | (list python-numpy python-cftime)) |
| 1924 | (inputs |
| 1925 | (list netcdf hdf4 hdf5)) |
| 1926 | (home-page "https://github.com/Unidata/netcdf4-python") |
| 1927 | (synopsis "Python/numpy interface to the netCDF library") |
| 1928 | (description "Netcdf4-python is a Python interface to the netCDF C |
| 1929 | library. netCDF version 4 has many features not found in earlier |
| 1930 | versions of the library and is implemented on top of HDF5. This module |
| 1931 | can read and write files in both the new netCDF 4 and the old netCDF 3 |
| 1932 | format, and can create files that are readable by HDF5 clients. The |
| 1933 | API is modelled after @code{Scientific.IO.NetCDF}, and should be familiar |
| 1934 | to users of that module.") |
| 1935 | ;; The software is mainly ISC, but includes some files covered |
| 1936 | ;; by the Expat license. |
| 1937 | (license (list license:isc license:expat)))) |
| 1938 | |
| 1939 | (define-public python-ncclient |
| 1940 | (package |
| 1941 | (name "python-ncclient") |
| 1942 | (version "0.6.12") |
| 1943 | (source |
| 1944 | (origin |
| 1945 | (method git-fetch) ;no tests in PyPI release |
| 1946 | (uri (git-reference |
| 1947 | (url "https://github.com/ncclient/ncclient") |
| 1948 | (commit (string-append "v" version)))) |
| 1949 | (file-name (git-file-name name version)) |
| 1950 | (sha256 |
| 1951 | (base32 |
| 1952 | "0cb568z5syg6hh0dv813bw7s1mjy7ga5xzxbm9naf4zz2qfdg4js")))) |
| 1953 | (build-system python-build-system) |
| 1954 | (arguments |
| 1955 | `(#:phases (modify-phases %standard-phases |
| 1956 | (replace 'check |
| 1957 | (lambda* (#:key tests? #:allow-other-keys) |
| 1958 | (when tests? |
| 1959 | (invoke "pytest"))))))) |
| 1960 | (native-inputs |
| 1961 | (list python-pytest)) |
| 1962 | (propagated-inputs |
| 1963 | (list python-lxml python-paramiko)) |
| 1964 | (home-page "https://github.com/ncclient/ncclient") |
| 1965 | (synopsis "Python library for NETCONF clients") |
| 1966 | (description "@code{ncclient} is a Python library that facilitates |
| 1967 | client-side scripting and application development around the NETCONF |
| 1968 | protocol.") |
| 1969 | (license license:asl2.0))) |
| 1970 | |
| 1971 | (define-public python-ncls |
| 1972 | (package |
| 1973 | (name "python-ncls") |
| 1974 | (version "0.0.65") |
| 1975 | (source (origin |
| 1976 | (method url-fetch) |
| 1977 | (uri (pypi-uri "ncls" version)) |
| 1978 | (sha256 |
| 1979 | (base32 |
| 1980 | "1wx06xqknd2r98w8z93f47g5dpxzn92kamhj8vkq0nj569hf7cg1")))) |
| 1981 | (build-system python-build-system) |
| 1982 | (propagated-inputs (list python-numpy)) |
| 1983 | (home-page "https://github.com/endrebak/ncls") |
| 1984 | (synopsis "Nested containment list data structure") |
| 1985 | (description |
| 1986 | "This package provides a wrapper for the nested containment list data |
| 1987 | structure. It is a static interval-tree that is fast for both construction |
| 1988 | and lookups.") |
| 1989 | (license license:bsd-3))) |
| 1990 | |
| 1991 | (define-public python-license-expression |
| 1992 | (package |
| 1993 | (name "python-license-expression") |
| 1994 | (version "1.2") |
| 1995 | (source |
| 1996 | (origin |
| 1997 | (method url-fetch) |
| 1998 | (uri (pypi-uri "license-expression" version)) |
| 1999 | (sha256 |
| 2000 | (base32 "1g0sgphss8hbi1rpl4avy1nmbixmy9v194xdbvkjgl90vzgy2q3r")))) |
| 2001 | (build-system python-build-system) |
| 2002 | (propagated-inputs |
| 2003 | (list python-boolean.py)) |
| 2004 | (home-page "https://github.com/nexB/license-expression") |
| 2005 | (synopsis "Apply boolean logic to license expressions") |
| 2006 | (description |
| 2007 | "This Python module defines a tiny language to evaluate and compare |
| 2008 | license expressions using boolean logic. Logical combinations of licenses can |
| 2009 | be tested for equality, containment, and equivalence. They can be normalised |
| 2010 | and simplified. It supports SPDX license expressions as well as other naming |
| 2011 | conventions and aliases in the same expression.") |
| 2012 | (license license:gpl2+))) |
| 2013 | |
| 2014 | (define-public python-wand |
| 2015 | (package |
| 2016 | (name "python-wand") |
| 2017 | (version "0.6.10") |
| 2018 | (source |
| 2019 | (origin |
| 2020 | (method url-fetch) |
| 2021 | (uri (pypi-uri "Wand" version)) |
| 2022 | (sha256 |
| 2023 | (base32 "0mywzs235skwq670c80achrd34kangwy24793k1nij3651zllgrp")))) |
| 2024 | (build-system python-build-system) |
| 2025 | (arguments |
| 2026 | `(#:phases |
| 2027 | (modify-phases %standard-phases |
| 2028 | (add-after 'unpack 'find-magickwand |
| 2029 | (lambda* (#:key inputs #:allow-other-keys) |
| 2030 | (setenv "MAGICK_HOME" (assoc-ref inputs "imagemagick")) |
| 2031 | (setenv "WAND_MAGICK_LIBRARY_SUFFIX" ".Q16")))))) |
| 2032 | (native-inputs |
| 2033 | (list python-pytest)) |
| 2034 | (inputs |
| 2035 | (list imagemagick)) |
| 2036 | (home-page "https://docs.wand-py.org/") |
| 2037 | (synopsis "MagickWand API binding for Python") |
| 2038 | (description |
| 2039 | "Wand is a ctypes-based binding for ImageMagick's MagickWand library.") |
| 2040 | (license license:expat))) |
| 2041 | |
| 2042 | (define-public python-lockfile |
| 2043 | (package |
| 2044 | (name "python-lockfile") |
| 2045 | (version "0.12.2") |
| 2046 | (source |
| 2047 | (origin |
| 2048 | (method url-fetch) |
| 2049 | (uri (pypi-uri "lockfile" version)) |
| 2050 | (sha256 |
| 2051 | (base32 |
| 2052 | "16gpx5hm73ah5n1079ng0vy381hl802v606npkx4x8nb0gg05vba")))) |
| 2053 | (build-system python-build-system) |
| 2054 | (arguments '(#:test-target "check")) |
| 2055 | (native-inputs |
| 2056 | (list python-pbr)) |
| 2057 | (home-page "https://launchpad.net/pylockfile") |
| 2058 | (synopsis "Platform-independent file locking module") |
| 2059 | (description |
| 2060 | "The lockfile package exports a LockFile class which provides a simple |
| 2061 | API for locking files.") |
| 2062 | (license license:expat))) |
| 2063 | |
| 2064 | (define-public python-fb-re2 |
| 2065 | (package |
| 2066 | (name "python-fb-re2") |
| 2067 | (version "1.0.7") |
| 2068 | (source |
| 2069 | (origin |
| 2070 | (method git-fetch) |
| 2071 | (uri (git-reference |
| 2072 | (url "https://github.com/facebook/pyre2") |
| 2073 | (commit (string-append "v" version)))) |
| 2074 | (file-name (git-file-name name version)) |
| 2075 | (sha256 |
| 2076 | (base32 |
| 2077 | "0snprxdnh3m45r3b0az4v0l28h90ycmfbybzla6xg1qviwv9w1ak")))) |
| 2078 | (build-system python-build-system) |
| 2079 | (inputs |
| 2080 | (list re2)) |
| 2081 | (home-page "https://github.com/facebook/pyre2") |
| 2082 | (synopsis "Python wrapper for RE2") |
| 2083 | (description "This package provides a Python extension that wraps Google's |
| 2084 | RE2 regular expression library. It implements many of the features of |
| 2085 | Python's built-in @code{re} module with compatible interfaces.") |
| 2086 | (license license:bsd-3))) |
| 2087 | |
| 2088 | (define-public python-filelock |
| 2089 | (package |
| 2090 | (name "python-filelock") |
| 2091 | (version "3.0.12") |
| 2092 | (source |
| 2093 | (origin |
| 2094 | (method url-fetch) |
| 2095 | (uri (pypi-uri "filelock" version)) |
| 2096 | (sha256 |
| 2097 | (base32 |
| 2098 | "0ngzlvb5j8gqs2nxlp2b0jhzii792h66wsn694qm8kqixr225n0q")))) |
| 2099 | (build-system python-build-system) |
| 2100 | (home-page |
| 2101 | "https://github.com/benediktschmitt/py-filelock") |
| 2102 | (synopsis "Platform independent file lock") |
| 2103 | (description "@code{filelock} contains a single module implementing |
| 2104 | a platform independent file lock in Python, which provides a simple way of |
| 2105 | inter-process communication.") |
| 2106 | (license license:unlicense))) |
| 2107 | |
| 2108 | (define-public python-semantic-version |
| 2109 | (package |
| 2110 | (name "python-semantic-version") |
| 2111 | (version "2.8.5") |
| 2112 | (source |
| 2113 | (origin |
| 2114 | (method url-fetch) |
| 2115 | (uri (pypi-uri "semantic_version" version)) |
| 2116 | (sha256 |
| 2117 | (base32 |
| 2118 | "0m4avx8zdkzc7qglv5zlr54g8yna5vl098drg5396ql7aph2vjyj")))) |
| 2119 | (build-system python-build-system) |
| 2120 | (home-page "https://github.com/rbarrois/python-semanticversion") |
| 2121 | (synopsis "Semantic versioning module for Python") |
| 2122 | (description |
| 2123 | "The @code{semantic_version} class is a small library for handling |
| 2124 | @uref{https://semver.org/, semantic versioning} (@dfn{SemVer}) in Python. |
| 2125 | |
| 2126 | It can compare versions, generate a new version that represents a bump in one of |
| 2127 | the version levels, and check whether any given string is a proper semantic |
| 2128 | version identifier.") |
| 2129 | (license license:bsd-3))) |
| 2130 | |
| 2131 | (define-public python-serpent |
| 2132 | (package |
| 2133 | (name "python-serpent") |
| 2134 | (version "1.28") |
| 2135 | (source |
| 2136 | (origin |
| 2137 | (method url-fetch) |
| 2138 | (uri (pypi-uri "serpent" version)) |
| 2139 | (sha256 |
| 2140 | (base32 "1arnckykpkvv2qrp49l1k7q5mr5pisswl0rvdx98x8wsl1n361pk")))) |
| 2141 | (build-system python-build-system) |
| 2142 | (native-inputs |
| 2143 | (list python-attrs python-pytz)) |
| 2144 | (home-page "https://github.com/irmen/Serpent") |
| 2145 | (synopsis "Serializer for literal Python expressions") |
| 2146 | (description |
| 2147 | "Serpent provides @code{ast.literal_eval()}-compatible object tree |
| 2148 | serialization. It serializes an object tree into bytes (an utf-8 encoded |
| 2149 | string) that can be decoded and then passed as-is to @code{ast.literal_eval()} |
| 2150 | to rebuild the original object tree. |
| 2151 | |
| 2152 | Because only safe literals are encoded, it is safe to send serpent data to |
| 2153 | other machines, such as over the network.") |
| 2154 | (license license:expat))) |
| 2155 | |
| 2156 | (define-public python-setuptools-declarative-requirements |
| 2157 | (package |
| 2158 | (name "python-setuptools-declarative-requirements") |
| 2159 | (version "1.2.0") |
| 2160 | (source |
| 2161 | (origin |
| 2162 | (method url-fetch) |
| 2163 | (uri (pypi-uri |
| 2164 | "setuptools-declarative-requirements" |
| 2165 | version)) |
| 2166 | (sha256 |
| 2167 | (base32 |
| 2168 | "1l8zmcnp9h8sp8hsw7b81djaa1a9yig0y7i4phh5pihqz1gdn7yi")))) |
| 2169 | (build-system python-build-system) |
| 2170 | (native-inputs |
| 2171 | (list python-pytest python-setuptools-scm)) |
| 2172 | (propagated-inputs |
| 2173 | (list python-toml python-wheel)) |
| 2174 | (home-page |
| 2175 | "https://github.com/s0undt3ch/setuptools-declarative-requirements") |
| 2176 | (synopsis "File support for setuptools declarative setup.cfg") |
| 2177 | (description |
| 2178 | "This package provides file support for setuptools declarative |
| 2179 | @code{setup.cfg}.") |
| 2180 | (license license:asl2.0))) |
| 2181 | |
| 2182 | ;; The setuptools provided by Python 3.9 is too new for Tensorflow. |
| 2183 | (define-public python-setuptools-for-tensorflow |
| 2184 | (hidden-package |
| 2185 | (package |
| 2186 | (inherit python-setuptools) |
| 2187 | (version "39.1.0") |
| 2188 | (source (origin |
| 2189 | (inherit (package-source python-setuptools)) |
| 2190 | (uri (pypi-uri "setuptools" version ".zip")) |
| 2191 | (sha256 |
| 2192 | (base32 |
| 2193 | "1mzdhvfhnv4lggxa8rjl0dzqxvfx377gg5sqs57v89wrp09lwj65")))) |
| 2194 | (arguments |
| 2195 | `(#:tests? #f ; tests require vendored resources |
| 2196 | #:phases |
| 2197 | (modify-phases %standard-phases |
| 2198 | (add-after 'unpack 'compatibility-fixes |
| 2199 | (lambda _ |
| 2200 | ;; Python 3.9 no longer has HTMLParser |
| 2201 | (substitute* "setuptools/py33compat.py" |
| 2202 | (("html_parser.HTMLParser\\(\\).unescape") |
| 2203 | "html.unescape")) |
| 2204 | ;; This needs distutils.msvc9compiler |
| 2205 | (delete-file "setuptools/tests/test_msvc.py")))))) |
| 2206 | (native-inputs |
| 2207 | (list python-pytest python-mock python-six))))) |
| 2208 | |
| 2209 | (define-public python-uniseg |
| 2210 | (package |
| 2211 | (name "python-uniseg") |
| 2212 | (version "0.7.1") |
| 2213 | (source |
| 2214 | (origin |
| 2215 | (method url-fetch) |
| 2216 | (uri (pypi-uri "uniseg" version ".zip")) |
| 2217 | (sha256 |
| 2218 | (base32 |
| 2219 | "05jsazvz6nbmh6l3v1rph5ydkqn1hzx1pyggdyvgp2qgmgrnmiz2")))) |
| 2220 | (build-system python-build-system) |
| 2221 | (arguments |
| 2222 | '(#:tests? #f)) ; The test suite requires network access. |
| 2223 | (native-inputs |
| 2224 | (list unzip)) |
| 2225 | (home-page |
| 2226 | "https://bitbucket.org/emptypage/uniseg-python") |
| 2227 | (synopsis |
| 2228 | "Python library to determine Unicode text segmentations") |
| 2229 | (description |
| 2230 | "Uniseg is a Python package used to determine Unicode text segmentations. |
| 2231 | Supported segmentations include: |
| 2232 | @enumerate |
| 2233 | @item @dfn{Code point} (any value in the Unicode codespace) |
| 2234 | @item @dfn{Grapheme cluster} (user-perceived character made of a single or |
| 2235 | multiple Unicode code points, e.g. \"G\" + acute-accent) |
| 2236 | @item Word break |
| 2237 | @item Sentence break |
| 2238 | @item Line break |
| 2239 | @end enumerate") |
| 2240 | (license license:expat))) |
| 2241 | |
| 2242 | (define-public python-humanfriendly |
| 2243 | (package |
| 2244 | (name "python-humanfriendly") |
| 2245 | (version "8.2") |
| 2246 | (source |
| 2247 | (origin |
| 2248 | (method url-fetch) |
| 2249 | (uri (pypi-uri "humanfriendly" version)) |
| 2250 | (sha256 |
| 2251 | (base32 |
| 2252 | "04ixg8b7p6xc8x8lffhi7wfl77xhszakhd0s6j0cf6a84j8yqlmz")))) |
| 2253 | (build-system python-build-system) |
| 2254 | (arguments |
| 2255 | `(;; XXX: Tests depend on coloredlogs, which in turn depends on humanfriendly. |
| 2256 | #:tests? #f)) |
| 2257 | (home-page "https://humanfriendly.readthedocs.io") |
| 2258 | (synopsis "Human-friendly input and output in Python") |
| 2259 | (description |
| 2260 | "The functions and classes in @code{humanfriendly} can be used to make |
| 2261 | text interfaces more user-friendly. It includes tools to parse and format |
| 2262 | numbers, file sizes, and timespans, timers for long-running operations, menus |
| 2263 | to allow the user to choose from a list of options, and terminal interaction |
| 2264 | helpers.") |
| 2265 | (license license:expat))) |
| 2266 | |
| 2267 | (define-public python-textparser |
| 2268 | (package |
| 2269 | (name "python-textparser") |
| 2270 | (version "0.23.0") |
| 2271 | (source |
| 2272 | (origin |
| 2273 | (method url-fetch) |
| 2274 | (uri (pypi-uri "textparser" version)) |
| 2275 | (sha256 |
| 2276 | (base32 |
| 2277 | "0w5lyhrsvzs5a9q1l3sjgxgljrvd3ybf796w93kc39wayzvd02gh")))) |
| 2278 | (build-system python-build-system) |
| 2279 | (home-page "https://github.com/eerimoq/textparser") |
| 2280 | (synopsis "Fast text parser for Python") |
| 2281 | (description "This library provides a text parser written in the Python |
| 2282 | language. It aims to be fast.") |
| 2283 | (license license:expat))) |
| 2284 | |
| 2285 | (define-public python-aenum |
| 2286 | (package |
| 2287 | (name "python-aenum") |
| 2288 | (version "2.2.4") |
| 2289 | (source |
| 2290 | (origin |
| 2291 | (method url-fetch) |
| 2292 | (uri (pypi-uri "aenum" version)) |
| 2293 | (sha256 |
| 2294 | (base32 "0r1812bjm72x73pl7y4yhffr4zbdjgxa08avsy4b3di0pqgqv0l1")))) |
| 2295 | (build-system python-build-system) |
| 2296 | (arguments |
| 2297 | `(#:phases (modify-phases %standard-phases |
| 2298 | (replace 'check |
| 2299 | (lambda _ |
| 2300 | ;; We must run the test suite module directly, as it |
| 2301 | ;; fails to define the 'tempdir' variable in scope for |
| 2302 | ;; the tests otherwise |
| 2303 | ;; (see:https://bitbucket.org/stoneleaf/aenum/\ |
| 2304 | ;; issues/32/running-tests-with-python-setuppy-test). |
| 2305 | (invoke "python3" "aenum/test.py") |
| 2306 | ;; This one fails with "NameError: name |
| 2307 | ;; 'test_pickle_dump_load' is not defined" (see: |
| 2308 | ;; https://bitbucket.org/stoneleaf/aenum/issues/33 |
| 2309 | ;; /error-running-the-test_v3py-test-suite). |
| 2310 | ;; (invoke "python3" "aenum/test_v3.py") |
| 2311 | #t))))) |
| 2312 | (home-page "https://bitbucket.org/stoneleaf/aenum") |
| 2313 | (synopsis "Advanced enumerations, namedtuples and constants for Python") |
| 2314 | (description "The aenum library includes an @code{Enum} base class, a |
| 2315 | metaclass-based @code{NamedTuple} implementation and a @code{NamedConstant} |
| 2316 | class.") |
| 2317 | (license license:bsd-3))) |
| 2318 | |
| 2319 | (define-public python-can |
| 2320 | (package |
| 2321 | (name "python-can") |
| 2322 | (version "4.0.0") |
| 2323 | (source |
| 2324 | (origin |
| 2325 | (method url-fetch) |
| 2326 | (uri (pypi-uri "python-can" version)) |
| 2327 | (sha256 |
| 2328 | (base32 |
| 2329 | "0pcbdgdw94lc2sxd56w6wdsshrs9dd5d3wp0x4sfd0drzx32inar")))) |
| 2330 | (build-system python-build-system) |
| 2331 | (arguments |
| 2332 | `(#:phases (modify-phases %standard-phases |
| 2333 | (add-after 'unpack 'relax-version-requirements |
| 2334 | (lambda _ |
| 2335 | (substitute* "setup.py" |
| 2336 | (("mock~=2\\.0") "mock") |
| 2337 | (("coverage<5") "coverage") |
| 2338 | (("pytest~=4\\.6") "pytest") |
| 2339 | (("pytest-timeout~=1\\.3") "pytest-timeout") |
| 2340 | (("pytest-cov.*") "pytest-cov\n") |
| 2341 | (("hypothesis~=4\\.56") "hypothesis")))) |
| 2342 | (add-after 'unpack 'fix-broken-tests |
| 2343 | ;; The tests try to run two scripts it expects should be |
| 2344 | ;; in PATH, but they aren't at this time (see: |
| 2345 | ;; https://github.com/hardbyte/python-can/issues/805). |
| 2346 | (lambda _ |
| 2347 | (substitute* "test/test_scripts.py" |
| 2348 | (("\"can_logger\\.py --help\"") "") |
| 2349 | (("\"can_player\\.py --help\"") "")))) |
| 2350 | (replace 'check |
| 2351 | (lambda* (#:key tests? #:allow-other-keys) |
| 2352 | (when tests? |
| 2353 | (invoke "pytest" "-vv" "test" |
| 2354 | ;; Disable tests which require specific CAN |
| 2355 | ;; drivers we have no package for in Guix. |
| 2356 | "--ignore" "test/test_interface_canalystii.py" |
| 2357 | ;; These tests fail with "OSError: [Errno 19] |
| 2358 | ;; No such device". |
| 2359 | "-k" "not BasicTestUdpMulticastBusIPv"))))))) |
| 2360 | (propagated-inputs |
| 2361 | (list python-msgpack python-typing-extensions python-wrapt)) |
| 2362 | (native-inputs |
| 2363 | (list python-codecov |
| 2364 | python-coverage |
| 2365 | python-future |
| 2366 | python-hypothesis |
| 2367 | python-mock |
| 2368 | python-parameterized |
| 2369 | python-pyserial |
| 2370 | python-pytest |
| 2371 | python-pytest-cov |
| 2372 | python-pytest-runner |
| 2373 | python-pytest-timeout)) |
| 2374 | (home-page "https://github.com/hardbyte/python-can") |
| 2375 | (synopsis "Controller Area Network (CAN) interface module for Python") |
| 2376 | (description "This package defines the @code{can} module, which provides |
| 2377 | controller area network (CAN) support for Python developers; providing common |
| 2378 | abstractions to different hardware devices, and a suite of utilities for |
| 2379 | sending and receiving messages on a CAN bus.") |
| 2380 | (license license:lgpl3+))) |
| 2381 | |
| 2382 | (define-public python-canopen |
| 2383 | (package |
| 2384 | (name "python-canopen") |
| 2385 | (version "2.0.0") |
| 2386 | (source |
| 2387 | (origin |
| 2388 | (method url-fetch) |
| 2389 | (uri (pypi-uri "canopen" version)) |
| 2390 | (sha256 |
| 2391 | (base32 "1nb543wb37kj95v6bhh272lm5gkpi41q3pnsl1fxlyizm2gamj5w")))) |
| 2392 | (build-system python-build-system) |
| 2393 | (native-inputs (list python-packaging)) |
| 2394 | (propagated-inputs (list python-can)) |
| 2395 | (home-page "https://github.com/christiansandberg/canopen") |
| 2396 | (synopsis "CANopen stack implementation") |
| 2397 | (description |
| 2398 | "This package provides a Python implementation of the |
| 2399 | @uref{https://www.can-cia.org/canopen/,CANopen standard} for |
| 2400 | @acronym{CANs, controller-area networks}. The aim of the project is to |
| 2401 | support the most common parts of the CiA 301 standard in a simple |
| 2402 | Pythonic interface. It is mainly targeted for testing and automation |
| 2403 | tasks rather than a standard compliant master implementation.") |
| 2404 | (license license:expat))) |
| 2405 | |
| 2406 | (define-public python-caniusepython3 |
| 2407 | (package |
| 2408 | (name "python-caniusepython3") |
| 2409 | (version "7.2.0") |
| 2410 | (source |
| 2411 | (origin |
| 2412 | (method url-fetch) |
| 2413 | (uri (pypi-uri "caniusepython3" version)) |
| 2414 | (sha256 |
| 2415 | (base32 |
| 2416 | "0a755444ln38j8d7xb3yw0wzpd0mjrzfn6zqvsh06nw1vdaq4l28")))) |
| 2417 | (build-system python-build-system) |
| 2418 | (arguments |
| 2419 | `(#:phases (modify-phases %standard-phases |
| 2420 | (add-after 'unpack 'relax-requirements |
| 2421 | (lambda _ |
| 2422 | (substitute* "setup.py" |
| 2423 | ;; These are for compatibility with Python 2. |
| 2424 | ((".*'argparse', 'backports.functools_lru_cache',.*") |
| 2425 | "")) |
| 2426 | (substitute* "dev_requirements.txt" |
| 2427 | ((".*pylint.*") "")) ;not actually required |
| 2428 | #t)) |
| 2429 | (replace 'check |
| 2430 | (lambda _ |
| 2431 | (invoke "py.test" "-k" "not NetworkTests")))))) |
| 2432 | (propagated-inputs |
| 2433 | (list python-distlib python-packaging python-requests)) |
| 2434 | (native-inputs |
| 2435 | (list python-mock python-pytest)) |
| 2436 | (home-page "https://github.com/brettcannon/caniusepython3") |
| 2437 | (synopsis "Check for Python 3-incompatible Python libraries") |
| 2438 | (description "The @command{caniusepython3} command scans your project and |
| 2439 | reports the Python 3-incompatible libraries it found. It can also be used as |
| 2440 | a library.") |
| 2441 | (license license:asl2.0))) |
| 2442 | |
| 2443 | (define-public python-diskcache |
| 2444 | (package |
| 2445 | (name "python-diskcache") |
| 2446 | (version "4.1.0") |
| 2447 | (source |
| 2448 | (origin |
| 2449 | (method url-fetch) |
| 2450 | (uri (pypi-uri "diskcache" version)) |
| 2451 | (sha256 |
| 2452 | (base32 |
| 2453 | "1q2wz5sj16zgyy1zpq516qgbnfwsavk1pl2qks0f4r62z5cmmvmw")))) |
| 2454 | (build-system python-build-system) |
| 2455 | (arguments |
| 2456 | `(#:tests? #f)) ;test suite not included in the release |
| 2457 | (home-page "http://www.grantjenks.com/docs/diskcache/") |
| 2458 | (synopsis "Disk and file backed cache library") |
| 2459 | (description "DiskCache is a disk and file backed persistent cache.") |
| 2460 | (license license:asl2.0))) |
| 2461 | |
| 2462 | (define-public python-argparse-addons |
| 2463 | (package |
| 2464 | (name "python-argparse-addons") |
| 2465 | (version "0.7.0") |
| 2466 | (source |
| 2467 | (origin |
| 2468 | (method url-fetch) |
| 2469 | (uri (pypi-uri "argparse_addons" version)) |
| 2470 | (sha256 |
| 2471 | (base32 "1yx54dmnr3xggjcjk6bbdafvzp6cynrakl56wyz3jglmfvk0znpm")))) |
| 2472 | (build-system python-build-system) |
| 2473 | (home-page "https://github.com/eerimoq/argparse_addons") |
| 2474 | (synopsis "Extensions for Python's @code{argparse} library") |
| 2475 | (description "This Python library provides additional types and actions |
| 2476 | for the standard @code{argparse} library.") |
| 2477 | (license license:expat))) |
| 2478 | |
| 2479 | (define-public python-bitstruct |
| 2480 | (package |
| 2481 | (name "python-bitstruct") |
| 2482 | (version "8.14.0") |
| 2483 | (source |
| 2484 | (origin |
| 2485 | (method url-fetch) |
| 2486 | (uri (pypi-uri "bitstruct" version)) |
| 2487 | (sha256 |
| 2488 | (base32 |
| 2489 | "149c73yrqbph71bbyf925r2mbh2jdymqxc6d49lnylpiflf1j313")))) |
| 2490 | (build-system python-build-system) |
| 2491 | (home-page "https://github.com/eerimoq/bitstruct") |
| 2492 | (synopsis "Python values to and C bit field structs converter") |
| 2493 | (description "This module performs conversions between Python values and C |
| 2494 | bit field structs represented as Python byte strings. It is intended to have |
| 2495 | a similar interface as the @code{struct} module from Python, but working on |
| 2496 | bits instead of primitive data types like @code{char}, @code{int}, etc.") |
| 2497 | (license license:expat))) |
| 2498 | |
| 2499 | (define-public python-cantools |
| 2500 | (package |
| 2501 | (name "python-cantools") |
| 2502 | (version "37.0.7") |
| 2503 | (source |
| 2504 | (origin |
| 2505 | ;; We take the sources from the Git repository as the documentation is |
| 2506 | ;; not included with the PyPI archive. |
| 2507 | (method git-fetch) |
| 2508 | (uri (git-reference |
| 2509 | (url "https://github.com/eerimoq/cantools") |
| 2510 | (commit version))) |
| 2511 | (file-name (git-file-name name version)) |
| 2512 | (sha256 |
| 2513 | (base32 |
| 2514 | "1qcf1fcwif7w70qmhxw2b8kqh420igbinq60p1chzf98xcb0ansx")))) |
| 2515 | (build-system python-build-system) |
| 2516 | (arguments |
| 2517 | (list |
| 2518 | #:phases |
| 2519 | #~(modify-phases %standard-phases |
| 2520 | (add-after 'build 'build-doc |
| 2521 | (lambda _ |
| 2522 | ;; See: https://github.com/eerimoq/cantools/issues/190. |
| 2523 | (substitute* "README.rst" |
| 2524 | (("https://github.com/eerimoq/cantools/raw/master\ |
| 2525 | /docs/monitor.png") |
| 2526 | "monitor.png")) |
| 2527 | (invoke "make" "-C" "docs" "man" "info"))) |
| 2528 | (add-after 'install 'install-doc |
| 2529 | (lambda* (#:key outputs #:allow-other-keys) |
| 2530 | (let* ((info (string-append #$output "/share/info")) |
| 2531 | (man1 (string-append #$output "/share/man/man1"))) |
| 2532 | (install-file "docs/_build/texinfo/cantools.info" info) |
| 2533 | (install-file "docs/_build/man/cantools.1" man1))))))) |
| 2534 | (native-inputs (list python-sphinx texinfo)) |
| 2535 | (propagated-inputs |
| 2536 | (list python-argparse-addons |
| 2537 | python-bitstruct |
| 2538 | python-can |
| 2539 | python-crccheck |
| 2540 | python-diskcache |
| 2541 | python-matplotlib |
| 2542 | python-parameterized |
| 2543 | python-textparser)) |
| 2544 | (home-page "https://github.com/eerimoq/cantools") |
| 2545 | (synopsis "Tools for the Controller Area Network (CAN) bus protocol") |
| 2546 | (description "This package includes Controller Area Network (CAN) related |
| 2547 | tools that can be used to: |
| 2548 | @itemize |
| 2549 | @item parse DBC, KCD, SYM, ARXML 4 and CDD files |
| 2550 | @item encode and decode CAN messages |
| 2551 | @item multiplex simple and extended signals |
| 2552 | @item diagnose DID encoding and decoding |
| 2553 | @item dump the CAN decoder output |
| 2554 | @item test CAN nodes |
| 2555 | @item generate C source code |
| 2556 | @item monitor the CAN bus |
| 2557 | @end itemize") |
| 2558 | (license license:expat))) |
| 2559 | |
| 2560 | (define-public python-capturer |
| 2561 | (package |
| 2562 | (name "python-capturer") |
| 2563 | (version "2.4") |
| 2564 | (source |
| 2565 | (origin |
| 2566 | (method url-fetch) |
| 2567 | (uri (pypi-uri "capturer" version)) |
| 2568 | (sha256 |
| 2569 | (base32 |
| 2570 | "05d6ji4j8ipiq0br7bwam38qc6hd9l1djmfxlzrxx19ziyjl4089")))) |
| 2571 | (build-system python-build-system) |
| 2572 | (arguments |
| 2573 | `(#:tests? #f)) |
| 2574 | (propagated-inputs |
| 2575 | (list python-humanfriendly)) |
| 2576 | (home-page "https://capturer.readthedocs.io") |
| 2577 | (synopsis "Capture stdout and stderr streams of the current process") |
| 2578 | (description |
| 2579 | "The capturer package makes it easy to capture the stdout and stderr |
| 2580 | streams of the current process and subprocesses. Output can be relayed |
| 2581 | to the terminal in real time but is also available to the Python program |
| 2582 | for additional processing.") |
| 2583 | (license license:expat))) |
| 2584 | |
| 2585 | (define-public python-case |
| 2586 | (package |
| 2587 | (name "python-case") |
| 2588 | (version "1.5.3") |
| 2589 | (source |
| 2590 | (origin |
| 2591 | (method url-fetch) |
| 2592 | (uri (pypi-uri "case" version)) |
| 2593 | (sha256 |
| 2594 | (base32 |
| 2595 | "1cagg06vfph864s6l5jb0zqliwxh647bki8j6lf4a4qrv40jnhs8")))) |
| 2596 | (build-system python-build-system) |
| 2597 | (propagated-inputs |
| 2598 | (list python-mock python-nose python-six)) |
| 2599 | (native-inputs |
| 2600 | (list python-coverage)) |
| 2601 | (home-page "https://github.com/celery/case") |
| 2602 | (synopsis "Unittest utilities and convenience methods") |
| 2603 | (description |
| 2604 | "The @code{case} package provides utilities on top of unittest, including |
| 2605 | some helpful Python 2 compatibility convenience methods.") |
| 2606 | (license license:bsd-3))) |
| 2607 | |
| 2608 | (define-public python-verboselogs |
| 2609 | (package |
| 2610 | (name "python-verboselogs") |
| 2611 | (version "1.7") |
| 2612 | (source |
| 2613 | (origin |
| 2614 | (method url-fetch) |
| 2615 | (uri (pypi-uri "verboselogs" version)) |
| 2616 | (sha256 |
| 2617 | (base32 |
| 2618 | "09z4d1jiasn7k1hs5af2ckmnrd0i1d1m04bhfjhv7z6svzfdwgg3")))) |
| 2619 | (build-system python-build-system) |
| 2620 | (arguments |
| 2621 | `(#:phases |
| 2622 | (modify-phases %standard-phases |
| 2623 | (replace 'check |
| 2624 | (lambda _ |
| 2625 | ;; Do not run pylint plugin test, as astroid is an old |
| 2626 | ;; unsupported version. |
| 2627 | (invoke "pytest" "-v" "-k" "not test_pylint_plugin" |
| 2628 | "verboselogs/tests.py")))))) |
| 2629 | (native-inputs |
| 2630 | (list python-mock python-pytest)) |
| 2631 | (home-page "https://verboselogs.readthedocs.io") |
| 2632 | (synopsis "Verbose logging level for Python's logging module") |
| 2633 | (description |
| 2634 | "The @code{verboselogs} package extends Python's @code{logging} module to |
| 2635 | add the log levels NOTICE, SPAM, SUCCESS and VERBOSE.") |
| 2636 | (license license:expat))) |
| 2637 | |
| 2638 | (define-public python-coloredlogs |
| 2639 | (package |
| 2640 | (name "python-coloredlogs") |
| 2641 | (version "10.0") |
| 2642 | (source |
| 2643 | (origin |
| 2644 | (method url-fetch) |
| 2645 | (uri (pypi-uri "coloredlogs" version)) |
| 2646 | (sha256 |
| 2647 | (base32 |
| 2648 | "0dkw6xp0r1dwgz4s2f58npx5nxfq51wf4l6qkm5ib27slgfs4sdq")))) |
| 2649 | (build-system python-build-system) |
| 2650 | (arguments |
| 2651 | `(;Tests require some updated modules |
| 2652 | #:tests? #f)) |
| 2653 | (propagated-inputs |
| 2654 | (list python-capturer)) |
| 2655 | (home-page "https://coloredlogs.readthedocs.io") |
| 2656 | (synopsis "Colored stream handler for Python's logging module") |
| 2657 | (description |
| 2658 | "The @code{coloredlogs} package enables colored terminal output for |
| 2659 | Python's logging module. The @code{ColoredFormatter} class inherits from |
| 2660 | @code{logging.Formatter} and uses ANSI escape sequences to render your logging |
| 2661 | messages in color.") |
| 2662 | (license license:expat))) |
| 2663 | |
| 2664 | (define-public python-editorconfig |
| 2665 | (package |
| 2666 | (name "python-editorconfig") |
| 2667 | (version "0.12.2") |
| 2668 | (source |
| 2669 | (origin |
| 2670 | (method url-fetch) |
| 2671 | (uri (pypi-uri "EditorConfig" version)) |
| 2672 | (sha256 |
| 2673 | (base32 |
| 2674 | "0v55z351p9qkyp3bbspwywwn28sbcknhirngjbj779n3z52z63hv")))) |
| 2675 | (build-system python-build-system) |
| 2676 | (home-page "https://editorconfig.org/") |
| 2677 | (synopsis "EditorConfig bindings for python") |
| 2678 | (description "The EditorConfig project consists of a file format for |
| 2679 | defining coding styles and a collection of text editor plugins that enable |
| 2680 | editors to read the file format and adhere to defined styles. EditorConfig |
| 2681 | files are easily readable and they work nicely with version control systems.") |
| 2682 | ;; "fnmatch.py" and "ini.py" are licensed under psfl, the rest is bsd-2. |
| 2683 | (license (list license:bsd-2 license:psfl)))) |
| 2684 | |
| 2685 | (define-public dosage |
| 2686 | (package |
| 2687 | (name "dosage") |
| 2688 | (version "2.17") |
| 2689 | (source |
| 2690 | (origin |
| 2691 | (method url-fetch) |
| 2692 | (uri (pypi-uri "dosage" version)) |
| 2693 | (sha256 |
| 2694 | (base32 |
| 2695 | "0vmxgn9wd3j80hp4gr5iq06jrl4gryz5zgfdd2ah30d12sfcfig0")))) |
| 2696 | (build-system python-build-system) |
| 2697 | (propagated-inputs |
| 2698 | (list python-cached-property |
| 2699 | python-colorama |
| 2700 | python-imagesize |
| 2701 | python-importlib-metadata |
| 2702 | python-lxml |
| 2703 | python-requests |
| 2704 | python-six)) |
| 2705 | (native-inputs |
| 2706 | (list python-pytest-cov python-pytest-xdist python-responses |
| 2707 | python-setuptools-scm)) |
| 2708 | (home-page "https://github.com/webcomics/dosage") |
| 2709 | (synopsis "Comic strip downloader and archiver") |
| 2710 | (description "Dosage is designed to keep a local copy of specific webcomics and other |
| 2711 | picture-based content such as Picture of the Day sites. With the @command{dosage} |
| 2712 | command-line script you can get the latest strip of a webcomic, catch-up to the last strip |
| 2713 | downloaded, or download a strip for a particular date or index, if possible.") |
| 2714 | (license license:expat))) |
| 2715 | |
| 2716 | (define-public python-et-xmlfile |
| 2717 | (package |
| 2718 | (name "python-et-xmlfile") |
| 2719 | (version "1.1") |
| 2720 | (source |
| 2721 | (origin |
| 2722 | ;; Use a checkout because the PyPI archive does not contain tests. |
| 2723 | (method hg-fetch) |
| 2724 | (uri (hg-reference |
| 2725 | (url "https://foss.heptapod.net/openpyxl/et_xmlfile") |
| 2726 | (changeset version))) |
| 2727 | (file-name (string-append name "-" version "-checkout")) |
| 2728 | (sha256 |
| 2729 | (base32 "09r8rjc5bhkqrm5c4n9jrlvad8vrvbyswl9g0wrc1qc7nzh9mpw7")))) |
| 2730 | (build-system python-build-system) |
| 2731 | (arguments |
| 2732 | (list #:phases |
| 2733 | #~(modify-phases %standard-phases |
| 2734 | (replace 'check |
| 2735 | (lambda* (#:key tests? #:allow-other-keys) |
| 2736 | (when tests? |
| 2737 | (invoke "pytest" "-vv"))))))) |
| 2738 | (native-inputs |
| 2739 | (list python-pytest python-lxml)) ;used for the tests |
| 2740 | (home-page "https://bitbucket.org/openpyxl/et_xmlfile") |
| 2741 | (synopsis "Low memory implementation of @code{lxml.xmlfile}") |
| 2742 | (description "This Python library is based upon the @code{xmlfile} module |
| 2743 | from @code{lxml}. It aims to provide a low memory, compatible implementation |
| 2744 | of @code{xmlfile}.") |
| 2745 | (license license:expat))) |
| 2746 | |
| 2747 | (define-public python-openpyxl |
| 2748 | (package |
| 2749 | (name "python-openpyxl") |
| 2750 | (version "3.0.9") |
| 2751 | (source |
| 2752 | (origin |
| 2753 | ;; We use the upstream repository, as the tests are not included in the |
| 2754 | ;; PyPI releases. |
| 2755 | (method hg-fetch) |
| 2756 | (uri (hg-reference |
| 2757 | (url "https://foss.heptapod.net/openpyxl/openpyxl") |
| 2758 | (changeset version))) |
| 2759 | (file-name (string-append name "-" version "-checkout")) |
| 2760 | (sha256 |
| 2761 | (base32 "1p8xvc2gjw6zyzbd7qdvc3x178sm00ymrbyh9539l4fpzgxh0j9c")))) |
| 2762 | (build-system python-build-system) |
| 2763 | (arguments |
| 2764 | `(#:phases (modify-phases %standard-phases |
| 2765 | (replace 'check |
| 2766 | (lambda _ |
| 2767 | (invoke "pytest")))))) |
| 2768 | (native-inputs (list python-lxml python-pillow python-pytest)) |
| 2769 | (propagated-inputs (list python-et-xmlfile python-jdcal)) |
| 2770 | (home-page "https://openpyxl.readthedocs.io") |
| 2771 | (synopsis "Python library to read/write Excel 2010 XLSX/XLSM files") |
| 2772 | (description |
| 2773 | "This Python library allows reading and writing to the Excel XLSX, XLSM, |
| 2774 | XLTX and XLTM file formats that are defined by the Office Open XML (OOXML) |
| 2775 | standard.") |
| 2776 | (license license:expat))) |
| 2777 | |
| 2778 | (define-public python-eventlet |
| 2779 | (package |
| 2780 | (name "python-eventlet") |
| 2781 | (version "0.33.0") |
| 2782 | (source |
| 2783 | (origin |
| 2784 | (method url-fetch) |
| 2785 | (uri (pypi-uri "eventlet" version)) |
| 2786 | (sha256 |
| 2787 | (base32 |
| 2788 | "07qlyhcm0f28sxdizawvdf3d50m3hnbzz5kg3fjp7chvki44y540")))) |
| 2789 | (build-system python-build-system) |
| 2790 | (propagated-inputs |
| 2791 | (list python-dnspython python-greenlet python-monotonic python-six)) |
| 2792 | (native-inputs |
| 2793 | (list python-nose)) |
| 2794 | (arguments |
| 2795 | '(#:phases |
| 2796 | (modify-phases %standard-phases |
| 2797 | (add-after 'unpack 'avoid-OSError |
| 2798 | (lambda _ |
| 2799 | ;; If eventlet tries to load greendns, an OSError is thrown when |
| 2800 | ;; getprotobyname is called. Thankfully there is an environment |
| 2801 | ;; variable to disable the greendns import, so use it: |
| 2802 | (setenv "EVENTLET_NO_GREENDNS" "yes"))) |
| 2803 | (add-after 'unpack 'delete-broken-tests |
| 2804 | (lambda _ |
| 2805 | (delete-file "tests/greendns_test.py") |
| 2806 | (delete-file "tests/socket_test.py"))) |
| 2807 | ;; See https://github.com/eventlet/eventlet/issues/562#issuecomment-714183009 |
| 2808 | (replace 'check |
| 2809 | (lambda* (#:key tests? #:allow-other-keys) |
| 2810 | (when tests? |
| 2811 | (invoke "nosetests" "-v" "tests/"))))))) |
| 2812 | (home-page "https://eventlet.net") |
| 2813 | (synopsis "Concurrent networking library for Python") |
| 2814 | (description |
| 2815 | "Eventlet is a concurrent networking library for Python that |
| 2816 | allows you to change how you run your code, not how you write it. |
| 2817 | It uses @code{epoll} or @code{libevent} for highly scalable non-blocking I/O. |
| 2818 | Coroutines ensure that the developer uses a blocking style of programming |
| 2819 | that is similar to threading, but provide the benefits of non-blocking I/O. |
| 2820 | The event dispatch is implicit, which means you can easily use @code{Eventlet} |
| 2821 | from the Python interpreter, or as a small part of a larger application.") |
| 2822 | (license license:expat))) |
| 2823 | |
| 2824 | (define-public python-sinfo |
| 2825 | (package |
| 2826 | (name "python-sinfo") |
| 2827 | (version "0.3.4") |
| 2828 | (source (origin |
| 2829 | (method url-fetch) |
| 2830 | (uri (pypi-uri "sinfo" version)) |
| 2831 | (sha256 |
| 2832 | (base32 |
| 2833 | "0kdsp883mx0lfyykv0p12bvs203kdm3skb8bw5wf2pc7kb393sl1")))) |
| 2834 | (build-system python-build-system) |
| 2835 | (propagated-inputs |
| 2836 | (list python-stdlib-list)) |
| 2837 | (home-page "https://gitlab.com/joelostblom/session_info") |
| 2838 | (synopsis "Output module version information loaded in a Python session") |
| 2839 | (description "This package outputs version information for modules loaded |
| 2840 | in the current session, Python, and the OS.") |
| 2841 | (license license:bsd-3))) |
| 2842 | |
| 2843 | (define-public python-six |
| 2844 | (package/inherit python-six-bootstrap |
| 2845 | (name "python-six") |
| 2846 | (arguments |
| 2847 | `(#:phases |
| 2848 | (modify-phases %standard-phases |
| 2849 | (replace 'check |
| 2850 | (lambda _ |
| 2851 | (invoke "pytest" "-v")))))) |
| 2852 | (native-inputs |
| 2853 | `(("python-pytest" ,python-pytest-bootstrap))))) |
| 2854 | |
| 2855 | (define-public python2-six |
| 2856 | (let ((base (package-with-python2 python-six))) |
| 2857 | (package |
| 2858 | (inherit base) |
| 2859 | ;; Reduce Python 2 closure by disabling tests and removing the native |
| 2860 | ;; inputs. |
| 2861 | (arguments (substitute-keyword-arguments (package-arguments base) |
| 2862 | ((#:phases phases) |
| 2863 | `(modify-phases ,phases |
| 2864 | (delete 'check))))) |
| 2865 | (native-inputs '())))) |
| 2866 | |
| 2867 | (define-public python-schedule |
| 2868 | (package |
| 2869 | (name "python-schedule") |
| 2870 | (version "0.4.3") |
| 2871 | (source |
| 2872 | (origin |
| 2873 | (method url-fetch) |
| 2874 | (uri (pypi-uri "schedule" version)) |
| 2875 | (sha256 |
| 2876 | (base32 |
| 2877 | "0vplyjcbfrq50sphlwya749z8p2pcyi2nycw3518i0qpd9a6189i")))) |
| 2878 | (build-system python-build-system) |
| 2879 | (native-inputs |
| 2880 | (list python-pytest python-mock)) |
| 2881 | (home-page "https://github.com/dbader/schedule") |
| 2882 | (synopsis "Schedule periodic function calls in Python") |
| 2883 | (description |
| 2884 | "Schedule is an in-process scheduler for periodic jobs that uses the |
| 2885 | builder pattern for configuration. Schedule lets you run Python functions (or |
| 2886 | any other callable) periodically at pre-determined intervals using a simple, |
| 2887 | human-friendly syntax.") |
| 2888 | (license license:expat))) |
| 2889 | |
| 2890 | (define-public python-scour |
| 2891 | (package |
| 2892 | (name "python-scour") |
| 2893 | (version "0.38.2") |
| 2894 | (source |
| 2895 | (origin |
| 2896 | (method git-fetch) |
| 2897 | (uri |
| 2898 | (git-reference |
| 2899 | (url "https://github.com/scour-project/scour") |
| 2900 | (commit |
| 2901 | (string-append "v" version)))) |
| 2902 | (file-name (git-file-name name version)) |
| 2903 | (sha256 |
| 2904 | (base32 "0mmfvx4wqp8gkpv0kbih89zfs9njvmd3v4dxfqii62xddpxq0f1k")))) |
| 2905 | (propagated-inputs |
| 2906 | (list python-six)) |
| 2907 | (build-system python-build-system) |
| 2908 | (home-page "https://github.com/scour-project/scour") |
| 2909 | (synopsis "Scour is an SVG optimizer/cleaner written in Python") |
| 2910 | (description "The goal of Scour is to output a file that renders |
| 2911 | identically at a fraction of the size by removing a lot of redundant |
| 2912 | information created by most SVG editors. Optimization options are typically |
| 2913 | lossless but can be tweaked for more aggressive cleaning.") |
| 2914 | (license license:asl2.0))) |
| 2915 | |
| 2916 | (define-public python-mechanize |
| 2917 | (package |
| 2918 | (name "python-mechanize") |
| 2919 | (version "0.4.5") |
| 2920 | (source |
| 2921 | (origin |
| 2922 | (method url-fetch) |
| 2923 | (uri (pypi-uri "mechanize" version)) |
| 2924 | (sha256 |
| 2925 | (base32 |
| 2926 | "1z9kqcwb8gfq2l6i42z624kxpd8692a0c8gw2x5bbm7n848w2mb3")))) |
| 2927 | (build-system python-build-system) |
| 2928 | (propagated-inputs |
| 2929 | (list python-html5lib)) |
| 2930 | (home-page "https://github.com/python-mechanize/mechanize") |
| 2931 | (synopsis |
| 2932 | "Stateful programmatic web browsing in Python") |
| 2933 | (description |
| 2934 | "Mechanize implements stateful programmatic web browsing in Python, |
| 2935 | after Andy Lester’s Perl module WWW::Mechanize.") |
| 2936 | (license license:bsd-3))) |
| 2937 | |
| 2938 | (define-public python-simpleaudio |
| 2939 | (package |
| 2940 | (name "python-simpleaudio") |
| 2941 | (version "1.0.4") |
| 2942 | (source |
| 2943 | (origin |
| 2944 | (method url-fetch) |
| 2945 | (uri (pypi-uri "simpleaudio" version)) |
| 2946 | (sha256 |
| 2947 | (base32 |
| 2948 | "07glihg0fpca0gvbbvqs9q815w8xhflzdvg72yvlsm23j9j8h739")))) |
| 2949 | (build-system python-build-system) |
| 2950 | (arguments |
| 2951 | `(#:tests? #f)) |
| 2952 | (inputs |
| 2953 | (list alsa-lib)) |
| 2954 | (home-page |
| 2955 | "https://github.com/hamiltron/py-simple-audio") |
| 2956 | (synopsis "Simple, asynchronous audio playback for Python 3") |
| 2957 | (description |
| 2958 | "The @code{simplaudio} package provides cross-platform, dependency-free |
| 2959 | audio playback capability for Python 3 on OSX, Windows, and Linux.") |
| 2960 | (license license:expat))) ; MIT license |
| 2961 | |
| 2962 | (define-public python-jsonalias |
| 2963 | (package |
| 2964 | (name "python-jsonalias") |
| 2965 | (version "0.1.1") |
| 2966 | (source (origin |
| 2967 | (method url-fetch) |
| 2968 | (uri (pypi-uri "jsonalias" version)) |
| 2969 | (sha256 |
| 2970 | (base32 |
| 2971 | "0sd7c3vyvfhhpnan77ax4f0x1whjcb5iz7jhjky7kmcpaf9lvw34")))) |
| 2972 | (build-system python-build-system) |
| 2973 | (arguments (list #:tests? #f)) ; There are no tests. |
| 2974 | (home-page "https://github.com/kevinheavey/jsonalias/") |
| 2975 | (synopsis "JSON type alias for Python") |
| 2976 | (description |
| 2977 | "This package provides a microlibrary that defines a JSON type alias for |
| 2978 | Python.") |
| 2979 | (license license:expat))) |
| 2980 | |
| 2981 | (define-public python-simplejson |
| 2982 | (package |
| 2983 | (name "python-simplejson") |
| 2984 | (version "3.17.6") |
| 2985 | (source |
| 2986 | (origin |
| 2987 | (method url-fetch) |
| 2988 | (uri (pypi-uri "simplejson" version)) |
| 2989 | (sha256 |
| 2990 | (base32 |
| 2991 | "19pqqn01y6qmhhv8q6dh4p1acav49kl923kklnns2qxz5a6h766g")))) |
| 2992 | (build-system python-build-system) |
| 2993 | (native-inputs |
| 2994 | (list python-toml)) |
| 2995 | (home-page "https://simplejson.readthedocs.io/en/latest") |
| 2996 | (synopsis |
| 2997 | "Json library for Python") |
| 2998 | (description |
| 2999 | "JSON (JavaScript Object Notation) is a subset of JavaScript |
| 3000 | syntax (ECMA-262 3rd edition) used as a lightweight data interchange |
| 3001 | format. |
| 3002 | |
| 3003 | Simplejson exposes an API familiar to users of the standard library marshal |
| 3004 | and pickle modules. It is the externally maintained version of the json |
| 3005 | library contained in Python 2.6, but maintains compatibility with Python 2.5 |
| 3006 | and (currently) has significant performance advantages, even without using |
| 3007 | the optional C extension for speedups. Simplejson is also supported on |
| 3008 | Python 3.3+.") |
| 3009 | (license license:x11))) |
| 3010 | |
| 3011 | |
| 3012 | (define-public python-pyicu |
| 3013 | (package |
| 3014 | (name "python-pyicu") |
| 3015 | (version "2.9") |
| 3016 | (source |
| 3017 | (origin |
| 3018 | (method url-fetch) |
| 3019 | (uri (pypi-uri "PyICU" version)) |
| 3020 | (sha256 |
| 3021 | (base32 |
| 3022 | "0y2qhh443vydi3y7kmhyb6kz3z6d7qq7ld0sg88mfqalcp7dca9w")))) |
| 3023 | (build-system python-build-system) |
| 3024 | (inputs |
| 3025 | (list icu4c)) |
| 3026 | (native-inputs |
| 3027 | (list python-pytest python-six)) |
| 3028 | (home-page "https://gitlab.pyicu.org/main/pyicu") |
| 3029 | (synopsis "Python extension wrapping the ICU C++ API") |
| 3030 | (description |
| 3031 | "PyICU is a python extension wrapping the ICU C++ API.") |
| 3032 | (license license:x11))) |
| 3033 | |
| 3034 | (define-public python-dogtail |
| 3035 | (package |
| 3036 | (name "python-dogtail") |
| 3037 | (version "0.9.11") |
| 3038 | (source (origin |
| 3039 | (method url-fetch) |
| 3040 | (uri |
| 3041 | (string-append |
| 3042 | "https://gitlab.com/dogtail/dogtail/-/raw/released/" |
| 3043 | "dogtail-" version ".tar.gz")) |
| 3044 | (sha256 |
| 3045 | (base32 |
| 3046 | "0sr38z7b2n12bvfd4xw4b5dnnhkn5zl3h0ymmnnzavcihfqia6l0")))) |
| 3047 | (build-system python-build-system) |
| 3048 | (arguments |
| 3049 | `(#:tests? #f ; TODO Launching dbus for the tests |
| 3050 | ; fails |
| 3051 | #:phases |
| 3052 | (modify-phases %standard-phases |
| 3053 | (replace 'check |
| 3054 | (lambda* (#:key tests? #:allow-other-keys) |
| 3055 | (when tests? |
| 3056 | (system "Xvfb :1 &") |
| 3057 | (setenv "DISPLAY" ":1") |
| 3058 | (invoke "dbus-run-session" "--" "nosetests" "-v" "tests/")) |
| 3059 | #t))))) |
| 3060 | (propagated-inputs |
| 3061 | (list python-pygobject python-pycairo python-pyatspi)) |
| 3062 | (native-inputs |
| 3063 | `(("python-nose" ,python-nose) |
| 3064 | ("gtk+" ,gtk+) |
| 3065 | ("xvfb" ,xorg-server) |
| 3066 | ("dbus" ,dbus) |
| 3067 | ("gsettings-desktop-schemas" ,gsettings-desktop-schemas) |
| 3068 | ("gobject-introspection" ,gobject-introspection))) |
| 3069 | (home-page "https://gitlab.com/dogtail/dogtail/") |
| 3070 | (synopsis "GUI test tool and automation framework written in Python") |
| 3071 | (description |
| 3072 | "Dogtail is a GUI test tool and automation framework written in Python. |
| 3073 | It uses Accessibility (a11y) technologies to communicate with desktop |
| 3074 | applications. dogtail scripts are written in Python and executed like any |
| 3075 | other Python program.") |
| 3076 | (license license:gpl2+))) |
| 3077 | |
| 3078 | (define-public python-doxyqml |
| 3079 | (package |
| 3080 | (name "python-doxyqml") |
| 3081 | (version "0.5.1") |
| 3082 | (source (origin |
| 3083 | (method url-fetch) |
| 3084 | (uri (pypi-uri "doxyqml" version)) |
| 3085 | (sha256 |
| 3086 | (base32 |
| 3087 | "1f0jjqvamly4hn7f1palvq27z6yr694rfzyxrb6g0ysbbawxkvq9")))) |
| 3088 | (build-system python-build-system) |
| 3089 | (home-page "http://agateau.com/projects/doxyqml") |
| 3090 | (synopsis "Doxygen input filter for QML files") |
| 3091 | (description |
| 3092 | "This package provides a Doxygen input filter for QML files.") |
| 3093 | (license license:bsd-3))) |
| 3094 | |
| 3095 | (define-public python-doxypypy |
| 3096 | (package |
| 3097 | (name "python-doxypypy") |
| 3098 | (version "0.8.8.6") |
| 3099 | (source (origin |
| 3100 | (method url-fetch) |
| 3101 | (uri (pypi-uri "doxypypy" version)) |
| 3102 | (sha256 |
| 3103 | (base32 |
| 3104 | "06z0vbh975g42z5szbfvn9i3bif3xwr5pncqd4fvjzjkbi2p2xb2")))) |
| 3105 | (build-system python-build-system) |
| 3106 | (arguments '(#:tests? #f)) ;no test suite |
| 3107 | (home-page "https://github.com/Feneric/doxypypy") |
| 3108 | (synopsis "Doxygen filter for Python") |
| 3109 | (description |
| 3110 | "This package provides a Doxygen filter for Python.") |
| 3111 | (license license:gpl2+))) |
| 3112 | |
| 3113 | (define-public python-empy |
| 3114 | (package |
| 3115 | (name "python-empy") |
| 3116 | (version "3.3.3") |
| 3117 | (source (origin |
| 3118 | (method url-fetch) |
| 3119 | (uri (string-append "http://www.alcyone.com/software/empy/empy-" |
| 3120 | version ".tar.gz")) |
| 3121 | (sha256 |
| 3122 | (base32 |
| 3123 | "1mxfy5mgp473ga1pgz2nvm8ds6z4g3hdky8523z6jzvcs9ny6hcq")))) |
| 3124 | (build-system python-build-system) |
| 3125 | (arguments |
| 3126 | `(#:tests? #f)) ; python2 only |
| 3127 | (home-page "http://www.alcyone.com/software/empy/") |
| 3128 | (synopsis "Templating system for Python") |
| 3129 | (description |
| 3130 | "EmPy is a system for embedding Python expressions and statements in |
| 3131 | template text; it takes an EmPy source file, processes it, and produces |
| 3132 | output. This is accomplished via expansions, which are special signals to the |
| 3133 | EmPy system and are set off by a special prefix (by default the at sign, @@). |
| 3134 | EmPy can expand arbitrary Python expressions and statements in this way, as |
| 3135 | well as a variety of special forms. Textual data not explicitly delimited in |
| 3136 | this way is sent unaffected to the output, allowing Python to be used in |
| 3137 | effect as a markup language. Also supported are callbacks via hooks, |
| 3138 | recording and playback via diversions, and dynamic, chainable filters. The |
| 3139 | system is highly configurable via command line options and embedded |
| 3140 | commands.") |
| 3141 | (license license:lgpl2.1+))) |
| 3142 | |
| 3143 | (define-public python-parse-type |
| 3144 | (package |
| 3145 | (name "python-parse-type") |
| 3146 | (version "0.6.0") |
| 3147 | (source |
| 3148 | (origin |
| 3149 | (method url-fetch) |
| 3150 | (uri (pypi-uri "parse_type" version)) |
| 3151 | (sha256 |
| 3152 | (base32 |
| 3153 | "07smqnzc9km7sbvxfyx4gdm9njrx58x8grdw6gs4gva81rk3rd10")))) |
| 3154 | (build-system python-build-system) |
| 3155 | (arguments |
| 3156 | '(#:phases |
| 3157 | (modify-phases %standard-phases |
| 3158 | (replace 'check |
| 3159 | (lambda* (#:key tests? #:allow-other-keys) |
| 3160 | (when tests? |
| 3161 | (invoke "pytest" "-vv" "-c" "/dev/null"))))))) |
| 3162 | (propagated-inputs (list python-six python-parse)) |
| 3163 | (native-inputs (list python-pytest)) |
| 3164 | (home-page "https://github.com/jenisys/parse_type") |
| 3165 | (synopsis "Extended parse module") |
| 3166 | (description "Parse_type extends the python parse module.") |
| 3167 | (license license:bsd-3))) |
| 3168 | |
| 3169 | (define-public python-parse |
| 3170 | (package |
| 3171 | (name "python-parse") |
| 3172 | (version "1.18.0") |
| 3173 | (source |
| 3174 | (origin |
| 3175 | (method url-fetch) |
| 3176 | (uri (pypi-uri "parse" version)) |
| 3177 | (sha256 |
| 3178 | (base32 |
| 3179 | "19063x4xdjpaf7rfxai6jpgm2k4yvkq7wha8aa8cagbjsqr60rli")))) |
| 3180 | (build-system python-build-system) |
| 3181 | (arguments |
| 3182 | `(#:phases |
| 3183 | (modify-phases %standard-phases |
| 3184 | (replace 'check |
| 3185 | (lambda _ (invoke "python" "test_parse.py")))))) |
| 3186 | (home-page "https://github.com/r1chardj0n3s/parse") |
| 3187 | (synopsis "Parse strings") |
| 3188 | (description |
| 3189 | "Parse strings using a specification based on the Python @code{format()} |
| 3190 | syntax.") |
| 3191 | (license license:x11))) |
| 3192 | |
| 3193 | (define-public python-polib |
| 3194 | (package |
| 3195 | (name "python-polib") |
| 3196 | (version "1.1.0") |
| 3197 | (source (origin |
| 3198 | (method url-fetch) |
| 3199 | (uri (pypi-uri "polib" version)) |
| 3200 | (sha256 |
| 3201 | (base32 |
| 3202 | "0aikb8gcarhifn3sadrbbs5czagih9hjv250gsrgy9v1d49pvn7s")))) |
| 3203 | (build-system python-build-system) |
| 3204 | (home-page "https://bitbucket.org/izi/polib/wiki/Home") |
| 3205 | (synopsis "Manipulate, create and modify gettext files") |
| 3206 | (description "Polib can manipulate any gettext format (po, pot and mo) |
| 3207 | files. It can be used to create po files from scratch or to modify |
| 3208 | existing ones.") |
| 3209 | (license license:expat))) |
| 3210 | |
| 3211 | (define-public python-polling2 |
| 3212 | (package |
| 3213 | (name "python-polling2") |
| 3214 | (version "0.5.0") |
| 3215 | (source |
| 3216 | (origin |
| 3217 | (method url-fetch) |
| 3218 | (uri (pypi-uri "polling2" version)) |
| 3219 | (sha256 |
| 3220 | (base32 "0hp3238fv6k1qk43gv4jwnv1mwlkmx33akbj560b9nvsry1dmdwh")))) |
| 3221 | (build-system python-build-system) |
| 3222 | (arguments '(#:tests? #false)) ; no tests included |
| 3223 | (native-inputs |
| 3224 | (list python-mock python-pytest python-pytest-runner)) |
| 3225 | (home-page "https://github.com/ddmee/polling2") |
| 3226 | (synopsis "Polling utility with many configurable options") |
| 3227 | (description "Polling2 is a utility used to wait for a function to return |
| 3228 | a certain expected condition.") |
| 3229 | (license license:expat))) |
| 3230 | |
| 3231 | (define-public python-poyo |
| 3232 | (package |
| 3233 | (name "python-poyo") |
| 3234 | (version "0.5.0") |
| 3235 | (source |
| 3236 | (origin |
| 3237 | (method url-fetch) |
| 3238 | (uri (pypi-uri "poyo" version)) |
| 3239 | (sha256 |
| 3240 | (base32 |
| 3241 | "1pflivs6j22frz0v3dqxnvc8yb8fb52g11lqr88z0i8cg2m5csg2")))) |
| 3242 | (build-system python-build-system) |
| 3243 | (home-page "https://github.com/hackebrot/poyo") |
| 3244 | (synopsis "Lightweight YAML Parser for Python") |
| 3245 | (description |
| 3246 | "This package provides a lightweight YAML Parser for Python. It supports |
| 3247 | only a chosen subset of the YAML format that is required to parse cookiecutter |
| 3248 | user configuration files. It does not have support for serializing into YAML |
| 3249 | and is not compatible with JSON.") |
| 3250 | (license license:expat))) |
| 3251 | |
| 3252 | (define-public python-exceptiongroup |
| 3253 | (package |
| 3254 | (name "python-exceptiongroup") |
| 3255 | (version "1.0.0rc8") |
| 3256 | (source (origin |
| 3257 | (method git-fetch) |
| 3258 | (uri (git-reference |
| 3259 | (url "https://github.com/agronholm/exceptiongroup") |
| 3260 | (commit version))) |
| 3261 | (file-name (git-file-name name version)) |
| 3262 | (sha256 |
| 3263 | (base32 |
| 3264 | "0xsbpv22n51p6yvyvz231mf8zhbi1i88b4zmacaxxx31zrq5ifv4")))) |
| 3265 | (build-system python-build-system) |
| 3266 | (arguments |
| 3267 | (list |
| 3268 | #:phases |
| 3269 | #~(modify-phases %standard-phases |
| 3270 | ;; XXX: PEP 517 manual build/install procedures copied from |
| 3271 | ;; python-isort. |
| 3272 | (replace 'build |
| 3273 | (lambda _ |
| 3274 | (setenv "SETUPTOOLS_SCM_PRETEND_VERSION" #$version) |
| 3275 | ;; ZIP does not support timestamps before 1980. |
| 3276 | (setenv "SOURCE_DATE_EPOCH" "315532800") |
| 3277 | (invoke "python" "-m" "build" "--wheel" "--no-isolation" "."))) |
| 3278 | (replace 'install |
| 3279 | (lambda* (#:key outputs #:allow-other-keys) |
| 3280 | (let ((whl (car (find-files "dist" "\\.whl$")))) |
| 3281 | (invoke "pip" "--no-cache-dir" "--no-input" |
| 3282 | "install" "--no-deps" "--prefix" #$output whl)))) |
| 3283 | (replace 'check |
| 3284 | (lambda* (#:key tests? #:allow-other-keys) |
| 3285 | (when tests? |
| 3286 | (invoke "pytest" "-vv" "tests"))))))) |
| 3287 | (native-inputs (list python-flit-scm python-pypa-build python-pytest)) |
| 3288 | (home-page "https://github.com/agronholm/exceptiongroup") |
| 3289 | (synopsis "PEP 654 backport from Python 3.11") |
| 3290 | (description "This is a backport of the @code{BaseExceptionGroup} and |
| 3291 | @code{ExceptionGroup} classes from Python 3.11.") |
| 3292 | (license license:expat))) |
| 3293 | |
| 3294 | (define-public python-extension-helpers |
| 3295 | (package |
| 3296 | (name "python-extension-helpers") |
| 3297 | (version "0.1") |
| 3298 | (source |
| 3299 | (origin |
| 3300 | (method url-fetch) |
| 3301 | (uri (pypi-uri "extension-helpers" version)) |
| 3302 | (sha256 |
| 3303 | (base32 "10iqjzmya2h4sk765dlm1pbqypwlqyh8rw59a5m9i63d3klnz2mc")))) |
| 3304 | (build-system python-build-system) |
| 3305 | (native-inputs |
| 3306 | (list python-coverage python-pytest-astropy python-pytest-cov |
| 3307 | python-setuptools-scm)) |
| 3308 | (home-page "https://github.com/astropy/astropy-helpers") |
| 3309 | (synopsis |
| 3310 | "Utilities for building and installing packages in the Astropy ecosystem") |
| 3311 | (description |
| 3312 | "The extension-helpers package includes many build, installation, and |
| 3313 | documentation-related tools used by the Astropy project.") |
| 3314 | (license license:bsd-3))) |
| 3315 | |
| 3316 | (define-public python-extras |
| 3317 | (package |
| 3318 | (name "python-extras") |
| 3319 | (version "1.0.0") |
| 3320 | (source |
| 3321 | (origin |
| 3322 | (method url-fetch) |
| 3323 | (uri (pypi-uri "extras" version)) |
| 3324 | (sha256 |
| 3325 | (base32 |
| 3326 | "0khvm08rcwm62wc47j8niyl6h13f8w51c8669ifivjdr23g3cbhk")))) |
| 3327 | (build-system python-build-system) |
| 3328 | (arguments |
| 3329 | ;; FIXME: Circular dependency on testtools. |
| 3330 | '(#:tests? #f)) |
| 3331 | (home-page "https://github.com/testing-cabal/extras") |
| 3332 | (synopsis "Useful extensions to the Python standard library") |
| 3333 | (description |
| 3334 | "Extras is a set of extensions to the Python standard library.") |
| 3335 | (license license:expat))) |
| 3336 | |
| 3337 | (define-public python-mimeparse |
| 3338 | (package |
| 3339 | (name "python-mimeparse") |
| 3340 | (version "1.6.0") |
| 3341 | (source |
| 3342 | (origin |
| 3343 | (method url-fetch) |
| 3344 | (uri (pypi-uri "python-mimeparse" version)) |
| 3345 | (sha256 |
| 3346 | (base32 |
| 3347 | "0y2g6cl660bpz11srgqyvvm8gmywpgyx8g0xfvbiyr0af0yv1r3n")))) |
| 3348 | (build-system python-build-system) |
| 3349 | (arguments |
| 3350 | '(#:phases |
| 3351 | (modify-phases %standard-phases |
| 3352 | (replace 'check |
| 3353 | (lambda _ |
| 3354 | (invoke "./mimeparse_test.py")))))) |
| 3355 | (home-page |
| 3356 | "https://github.com/dbtsai/python-mimeparse") |
| 3357 | (synopsis "Python library for parsing MIME types") |
| 3358 | (description |
| 3359 | "Mimeparse provides basic functions for parsing MIME type names and |
| 3360 | matching them against a list of media-ranges.") |
| 3361 | (license license:expat))) |
| 3362 | |
| 3363 | (define-public python-miniboa |
| 3364 | (package |
| 3365 | (name "python-miniboa") |
| 3366 | (version "1.0.8") |
| 3367 | (source |
| 3368 | (origin |
| 3369 | (method url-fetch) |
| 3370 | (uri (pypi-uri "miniboa" version)) |
| 3371 | (sha256 |
| 3372 | (base32 |
| 3373 | "002c1aki9hsrwj5plrwdrf3sk8rn95fqylqyjx2arrjfpsih4dgs")))) |
| 3374 | (build-system python-build-system) |
| 3375 | (home-page "https://github.com/shmup/miniboa") |
| 3376 | (synopsis "Simple, single-threaded Telnet server") |
| 3377 | (description |
| 3378 | "Miniboa is a simple, asynchronous, single-threaded, poll-based Telnet |
| 3379 | server.") |
| 3380 | (license license:asl2.0))) |
| 3381 | |
| 3382 | (define-public python-pafy |
| 3383 | (package |
| 3384 | (name "python-pafy") |
| 3385 | (version "0.5.3.1") |
| 3386 | (source |
| 3387 | (origin |
| 3388 | (method url-fetch) |
| 3389 | (uri (pypi-uri "pafy" version)) |
| 3390 | (sha256 |
| 3391 | (base32 |
| 3392 | "1a7dxi95m1043rxx1r5x3ngb66nwlq6aqcasyqqjzmmmjps4zrim")))) |
| 3393 | (build-system python-build-system) |
| 3394 | (arguments |
| 3395 | `(#:tests? #f)) ; Currently pafy can not find itself in the tests |
| 3396 | (propagated-inputs |
| 3397 | ;; Youtube-dl is a python package which is imported in the file |
| 3398 | ;; "backend_youtube_dl.py", therefore it needs to be propagated. |
| 3399 | (list youtube-dl)) |
| 3400 | (home-page "https://np1.github.io/pafy/") |
| 3401 | (synopsis "Retrieve YouTube content and metadata") |
| 3402 | (description |
| 3403 | "@code{pafy} is a python library to retrieve YouTube content and metadata.") |
| 3404 | (license license:lgpl3+))) |
| 3405 | |
| 3406 | (define-public python-miniupnpc |
| 3407 | (package |
| 3408 | (name "python-miniupnpc") |
| 3409 | (version "2.2.3") |
| 3410 | (source |
| 3411 | (origin |
| 3412 | (method git-fetch) |
| 3413 | (uri |
| 3414 | (git-reference |
| 3415 | (url "https://github.com/miniupnp/miniupnp") |
| 3416 | (commit |
| 3417 | (string-append |
| 3418 | "miniupnpc_" (string-replace-substring version "." "_"))))) |
| 3419 | (file-name |
| 3420 | (git-file-name name version)) |
| 3421 | (sha256 |
| 3422 | (base32 "03q1rlzvfzm15g1bfw2zqzavlsyaypnaf2k3cz6ha7k5rirkdy0l")))) |
| 3423 | (build-system python-build-system) |
| 3424 | (arguments |
| 3425 | (list |
| 3426 | #:phases |
| 3427 | #~(modify-phases %standard-phases |
| 3428 | (add-after 'unpack 'subdir |
| 3429 | (lambda* (#:key inputs #:allow-other-keys) |
| 3430 | (chdir "miniupnpc") |
| 3431 | (setenv "CC" #$(cc-for-target)) |
| 3432 | (substitute* "Makefile" |
| 3433 | (("/bin/sh") (search-input-file inputs "/bin/sh"))))) |
| 3434 | (add-before 'subdir 'remove-kernel-version |
| 3435 | ;; Avoid embedding the running kernel version for reproducible builds |
| 3436 | (lambda _ |
| 3437 | (substitute* |
| 3438 | "miniupnpc/updateminiupnpcstrings.sh" |
| 3439 | (("^OS_VERSION=`uname -r`") "OS_VERSION=Guix"))))))) |
| 3440 | (inputs (list python)) ;we are building a Python extension |
| 3441 | (synopsis "UPnP client for Python") |
| 3442 | (description "Miniupnpc is a client library for Python programs to set up |
| 3443 | port forwards using @acronym{UPnP, Universal Plug and Play}.") |
| 3444 | (home-page "http://miniupnp.free.fr") |
| 3445 | (license license:bsd-3))) |
| 3446 | |
| 3447 | (define-public python-py |
| 3448 | (package |
| 3449 | (name "python-py") |
| 3450 | (version "1.10.0") |
| 3451 | (source |
| 3452 | (origin |
| 3453 | (method url-fetch) |
| 3454 | (uri (pypi-uri "py" version)) |
| 3455 | (sha256 |
| 3456 | (base32 |
| 3457 | "1lqvkqk3b440g9z82gqbzlzas84wrm6ir8kplzhzavmn2pd1pf11")))) |
| 3458 | (build-system python-build-system) |
| 3459 | (arguments |
| 3460 | ;; FIXME: "ImportError: 'test' module incorrectly imported from |
| 3461 | ;; '/gnu/store/...-python-pytest-mimimal-3.0.5/lib/python3.5/site-packages'. |
| 3462 | ;; Expected '/tmp/guix-build-python-py-1.4.31.drv-0/py-1.4.31/py'. |
| 3463 | ;; Is this module globally installed?" |
| 3464 | '(#:tests? #f)) |
| 3465 | (native-inputs |
| 3466 | (list python-setuptools-scm)) |
| 3467 | (home-page "https://github.com/pytest-dev/py") |
| 3468 | (synopsis "Python library for parsing, I/O, instrospection, and logging") |
| 3469 | (description |
| 3470 | "Py is a Python library for file name parsing, .ini file parsing, I/O, |
| 3471 | code introspection, and logging.") |
| 3472 | (license license:expat))) |
| 3473 | |
| 3474 | ;; Recent versions of python-fixtures and python-testrepository need |
| 3475 | ;; python-pbr for packaging, which itself needs these two packages for |
| 3476 | ;; testing. |
| 3477 | ;; To fix this circular dependency, we use a build of python-pbr, based on the |
| 3478 | ;; same source, just without any test dependencies and with tests disabled. |
| 3479 | ;; python-pbr-minmal is then used to package python-fixtures and |
| 3480 | ;; python-testrepository. |
| 3481 | ;; Strictly speaking we currently could remove the test-requirements from the |
| 3482 | ;; normal python-pbr package (and save this package) since test are disabled |
| 3483 | ;; there anyway. But this may change in future. |
| 3484 | (define-public python-pbr-minimal |
| 3485 | (package |
| 3486 | (name "python-pbr-minimal") |
| 3487 | (version "5.5.1") |
| 3488 | (source |
| 3489 | (origin |
| 3490 | (method url-fetch) |
| 3491 | (uri (pypi-uri "pbr" version)) |
| 3492 | (sha256 |
| 3493 | (base32 |
| 3494 | "1j8k5d4rdhy5bw5ai1vkjzln2albah94in3vvyvxa0n42fv81baz")))) |
| 3495 | (build-system python-build-system) |
| 3496 | (arguments |
| 3497 | `(#:tests? #f)) |
| 3498 | (home-page "https://docs.openstack.org/pbr/latest/") |
| 3499 | (synopsis "Minimal build of python-pbr used for bootstrapping") |
| 3500 | (description |
| 3501 | "Used only for bootstrapping python2-pbr, you should not need this.") |
| 3502 | (license license:asl2.0))) |
| 3503 | |
| 3504 | (define-public python-pbr |
| 3505 | (package |
| 3506 | (inherit python-pbr-minimal) |
| 3507 | (name "python-pbr") |
| 3508 | (arguments |
| 3509 | `(#:tests? #f)) ;; Most tests seem to use the Internet. |
| 3510 | (propagated-inputs |
| 3511 | (list git)) ;; pbr actually uses the "git" binary. |
| 3512 | (native-inputs |
| 3513 | `(("python-fixtures" ,python-fixtures-bootstrap) |
| 3514 | ;; discover, coverage, hacking, subunit |
| 3515 | ("python-mock" ,python-mock) |
| 3516 | ("python-six" ,python-six) |
| 3517 | ("python-sphinx" ,python-sphinx) |
| 3518 | ("python-testrepository" ,python-testrepository-bootstrap) |
| 3519 | ("python-testresources" ,python-testresources-bootstrap) |
| 3520 | ("python-testscenarios" ,python-testscenarios-bootstrap) |
| 3521 | ("python-testtools" ,python-testtools-bootstrap) |
| 3522 | ("python-virtualenv" ,python-virtualenv))) |
| 3523 | (synopsis "Enhance the default behavior of Python’s setuptools") |
| 3524 | (description |
| 3525 | "Python Build Reasonableness (PBR) is a library that injects some useful |
| 3526 | and sensible default behaviors into your setuptools run. It will set |
| 3527 | versions, process requirements files and generate AUTHORS and ChangeLog file |
| 3528 | from git information. |
| 3529 | "))) |
| 3530 | |
| 3531 | (define-public python-pyrsistent |
| 3532 | (package |
| 3533 | (name "python-pyrsistent") |
| 3534 | (version "0.16.0") |
| 3535 | (home-page "https://github.com/tobgu/pyrsistent") |
| 3536 | (source (origin |
| 3537 | (method url-fetch) |
| 3538 | (uri (pypi-uri "pyrsistent" version)) |
| 3539 | (sha256 |
| 3540 | (base32 |
| 3541 | "1lrsjgblnapfimd0alsi1as5nz2lfqv97131l7d6anbjzq2rjri8")))) |
| 3542 | (build-system python-build-system) |
| 3543 | (arguments |
| 3544 | '(#:phases (modify-phases %standard-phases |
| 3545 | ;; The package works fine with newer Pytest and Hypothesis, but |
| 3546 | ;; has pinned older versions to stay compatible with Python 2. |
| 3547 | (add-before 'check 'loosen-pytest-requirement |
| 3548 | (lambda _ |
| 3549 | (substitute* "setup.py" |
| 3550 | (("pytest<5") "pytest") |
| 3551 | (("hypothesis<5") "hypothesis")) |
| 3552 | #t))))) |
| 3553 | (native-inputs |
| 3554 | (list python-hypothesis python-pytest python-pytest-runner)) |
| 3555 | (propagated-inputs |
| 3556 | (list python-six)) |
| 3557 | (synopsis "Persistent data structures for Python") |
| 3558 | (description |
| 3559 | "Pyrsistent is a number of persistent collections (by some referred to as |
| 3560 | functional data structures). Persistent in the sense that they are immutable. |
| 3561 | |
| 3562 | All methods on a data structure that would normally mutate it instead return a |
| 3563 | new copy of the structure containing the requested updates. The original |
| 3564 | structure is left untouched.") |
| 3565 | (license license:expat))) |
| 3566 | |
| 3567 | (define-public python-exif-read |
| 3568 | (package |
| 3569 | (name "python-exif-read") |
| 3570 | (version "2.1.2") |
| 3571 | (source (origin |
| 3572 | (method url-fetch) |
| 3573 | (uri (pypi-uri "ExifRead" version)) |
| 3574 | (sha256 |
| 3575 | (base32 |
| 3576 | "1b90jf6m9vxh9nanhpyvqdq7hmfx5iggw1l8kq10jrs6xgr49qkr")))) |
| 3577 | (build-system python-build-system) |
| 3578 | (arguments `(#:tests? #f)) ; no tests |
| 3579 | (home-page "https://github.com/ianare/exif-py") |
| 3580 | (synopsis "Python library to extract EXIF data from image files") |
| 3581 | (description |
| 3582 | "ExifRead is a Python library to extract EXIF data from tiff and jpeg |
| 3583 | files.") |
| 3584 | (license license:bsd-3))) |
| 3585 | |
| 3586 | (define-public python-pyld |
| 3587 | (package |
| 3588 | (name "python-pyld") |
| 3589 | (version "1.0.5") |
| 3590 | (source (origin |
| 3591 | (method url-fetch) |
| 3592 | (uri (pypi-uri "PyLD" version)) |
| 3593 | (sha256 |
| 3594 | (base32 |
| 3595 | "1ywbdbsrkg533qh8xn9ifjh2mvam6v5msrjyqq73jfpvcp89qvff")))) |
| 3596 | (build-system python-build-system) |
| 3597 | (home-page "https://github.com/digitalbazaar/pyld") |
| 3598 | (synopsis "Python implementation of the JSON-LD specification") |
| 3599 | (description |
| 3600 | "PyLD is an implementation of the JSON-LD specification.") |
| 3601 | (license license:bsd-3))) |
| 3602 | |
| 3603 | (define-public python-cli-helpers |
| 3604 | (package |
| 3605 | (name "python-cli-helpers") |
| 3606 | (version "2.2.1") |
| 3607 | (source |
| 3608 | (origin |
| 3609 | ;; There's no source tarball on PyPI. |
| 3610 | (method git-fetch) |
| 3611 | (uri (git-reference |
| 3612 | (url "https://github.com/dbcli/cli_helpers") |
| 3613 | (commit (string-append "v" version)))) |
| 3614 | (file-name (git-file-name name version)) |
| 3615 | (sha256 |
| 3616 | (base32 "1hzavh9v9lkd1dn9f0nvg80f7v4banxvcrj10zy72przqz51k1sb")))) |
| 3617 | (build-system python-build-system) |
| 3618 | (native-inputs |
| 3619 | (list python-pytest)) |
| 3620 | (propagated-inputs |
| 3621 | (list python-wcwidth python-configobj python-tabulate)) |
| 3622 | (home-page "https://github.com/dbcli/cli_helpers") |
| 3623 | (synopsis "Helpers for building command-line apps") |
| 3624 | (description |
| 3625 | "CLI Helpers is a Python package that makes it easy to perform common |
| 3626 | tasks when building command-line apps. It's a helper library for command-line |
| 3627 | interfaces.") |
| 3628 | (license license:bsd-3))) |
| 3629 | |
| 3630 | (define-public python-click |
| 3631 | (package |
| 3632 | (name "python-click") |
| 3633 | (version "8.1.3") |
| 3634 | (source |
| 3635 | (origin |
| 3636 | (method url-fetch) |
| 3637 | (uri (pypi-uri "click" version)) |
| 3638 | (sha256 |
| 3639 | (base32 |
| 3640 | "13kvp8visj5xh9d43brnda6q0kc1s40flxa5cw0p0a9hzf5dr0kn")))) |
| 3641 | (build-system python-build-system) |
| 3642 | (arguments |
| 3643 | `(#:phases |
| 3644 | (modify-phases %standard-phases |
| 3645 | (replace 'check |
| 3646 | (lambda* (#:key tests? #:allow-other-keys) |
| 3647 | (when tests? |
| 3648 | (invoke "pytest" "-vv"))))))) |
| 3649 | (native-inputs (list python-pytest)) |
| 3650 | (home-page "https://palletsprojects.com/p/click/") |
| 3651 | (synopsis "Command line library for Python") |
| 3652 | (description |
| 3653 | "Click is a Python package for creating command line interfaces in a |
| 3654 | composable way with as little code as necessary. Its name stands for |
| 3655 | \"Command Line Interface Creation Kit\". It's highly configurable but comes |
| 3656 | with sensible defaults out of the box.") |
| 3657 | (license license:bsd-3))) |
| 3658 | |
| 3659 | (define-public python-click-7 |
| 3660 | (package (inherit python-click) |
| 3661 | (name "python-click") |
| 3662 | (version "7.1.2") |
| 3663 | (source |
| 3664 | (origin |
| 3665 | (method url-fetch) |
| 3666 | (uri (pypi-uri "click" version)) |
| 3667 | (sha256 |
| 3668 | (base32 "06kbzd6sjfkqan3miwj9wqyddfxc2b6hi7p5s4dvqjb3gif2bdfj")))) |
| 3669 | (arguments `()))) |
| 3670 | |
| 3671 | (define-public python-click-5 |
| 3672 | (package (inherit python-click) |
| 3673 | (name "python-click") |
| 3674 | (version "5.1") |
| 3675 | (source |
| 3676 | (origin |
| 3677 | (method url-fetch) |
| 3678 | (uri (pypi-uri "click" version)) |
| 3679 | (sha256 |
| 3680 | (base32 "0njsm0wn31l21bi118g5825ma5sa3rwn7v2x4wjd7yiiahkri337")))) |
| 3681 | (arguments `()))) |
| 3682 | |
| 3683 | (define-public python-cligj |
| 3684 | (package |
| 3685 | (name "python-cligj") |
| 3686 | (version "0.7.2") |
| 3687 | (source |
| 3688 | (origin |
| 3689 | (method url-fetch) |
| 3690 | (uri (pypi-uri "cligj" version)) |
| 3691 | (sha256 |
| 3692 | (base32 |
| 3693 | "09vbkik6kyn6yrqzl2r74vaybjk8kjykvi975hy3fsrm4gb17g54")))) |
| 3694 | (build-system python-build-system) |
| 3695 | (propagated-inputs |
| 3696 | (list python-click)) |
| 3697 | (native-inputs |
| 3698 | (list python-pytest-cov)) |
| 3699 | (home-page "https://github.com/mapbox/cligj") |
| 3700 | (synopsis "Click params for command line interfaces to GeoJSON") |
| 3701 | (description |
| 3702 | "cligj is for Python developers who create command line interfaces |
| 3703 | for geospatial data. cligj allows you to quickly build consistent, |
| 3704 | well-tested and interoperable CLIs for handling GeoJSON.") |
| 3705 | (license license:bsd-3))) |
| 3706 | |
| 3707 | (define-public python-vcversioner |
| 3708 | (package |
| 3709 | (name "python-vcversioner") |
| 3710 | (version "2.16.0.0") |
| 3711 | (source |
| 3712 | (origin |
| 3713 | (method url-fetch) |
| 3714 | (uri (pypi-uri "vcversioner" version)) |
| 3715 | (sha256 |
| 3716 | (base32 |
| 3717 | "16z10sm78jd7ca3jbkgc3q5i8a8q7y1h21q1li21yy3rlhbhrrns")))) |
| 3718 | (build-system python-build-system) |
| 3719 | (synopsis "Python library for version number discovery") |
| 3720 | (description "Vcversioner is a Python library that inspects tagging |
| 3721 | information in a variety of version control systems in order to discover |
| 3722 | version numbers.") |
| 3723 | (home-page "https://github.com/habnabit/vcversioner") |
| 3724 | (license license:isc))) |
| 3725 | |
| 3726 | (define-public python-jdcal |
| 3727 | (package |
| 3728 | (name "python-jdcal") |
| 3729 | (version "1.4.1") |
| 3730 | (source |
| 3731 | (origin |
| 3732 | (method url-fetch) |
| 3733 | (uri (pypi-uri "jdcal" version)) |
| 3734 | (sha256 |
| 3735 | (base32 |
| 3736 | "1j6g19jf21qprjsr8h0r7nsbss366gy8j9izq8cz53gbjvh74a27")))) |
| 3737 | (build-system python-build-system) |
| 3738 | (arguments |
| 3739 | (list #:phases |
| 3740 | #~(modify-phases %standard-phases |
| 3741 | (replace 'check |
| 3742 | (lambda* (#:key tests? #:allow-other-keys) |
| 3743 | (when tests? |
| 3744 | (invoke "pytest" "-vv"))))))) |
| 3745 | (native-inputs |
| 3746 | (list python-pytest)) |
| 3747 | (home-page "https://github.com/phn/jdcal") |
| 3748 | (synopsis "Functions to convert between Julian dates Gregorian dates") |
| 3749 | (description "This Python library provides functions for converting |
| 3750 | between Julian dates and Gregorian dates.") |
| 3751 | (license license:bsd-2))) |
| 3752 | |
| 3753 | (define-public python-jsondiff |
| 3754 | (package |
| 3755 | (name "python-jsondiff") |
| 3756 | (version "1.2.0") |
| 3757 | (source |
| 3758 | (origin |
| 3759 | (method url-fetch) |
| 3760 | (uri (pypi-uri "jsondiff" version)) |
| 3761 | (sha256 |
| 3762 | (base32 |
| 3763 | "00v3689175aqzdscrxpffm712ylp8jvcpqdg51ca22ni6721p51l")))) |
| 3764 | (build-system python-build-system) |
| 3765 | (native-inputs |
| 3766 | (list python-nose python-nose-random)) |
| 3767 | (home-page |
| 3768 | "https://github.com/fzumstein/jsondiff") |
| 3769 | (synopsis "Compare JSON and JSON-like structures in Python") |
| 3770 | (description "@code{jsondiff} is a Python library which lets you |
| 3771 | compare, diff, and patch JSON and JSON-like structures in Python.") |
| 3772 | (license license:expat))) |
| 3773 | |
| 3774 | (define-public python-jsonschema |
| 3775 | (package |
| 3776 | (name "python-jsonschema") |
| 3777 | (version "3.2.0") |
| 3778 | (source (origin |
| 3779 | (method url-fetch) |
| 3780 | (uri (pypi-uri "jsonschema" version)) |
| 3781 | (sha256 |
| 3782 | (base32 |
| 3783 | "0ykr61yiiizgvm3bzipa3l73rvj49wmrybbfwhvpgk3pscl5pa68")))) |
| 3784 | (build-system python-build-system) |
| 3785 | (arguments |
| 3786 | '(#:phases |
| 3787 | (modify-phases %standard-phases |
| 3788 | (replace 'check |
| 3789 | (lambda* (#:key inputs outputs tests? #:allow-other-keys) |
| 3790 | (when tests? |
| 3791 | (setenv "JSON_SCHEMA_TEST_SUITE" "json") |
| 3792 | (invoke "trial" "jsonschema"))))))) |
| 3793 | (native-inputs |
| 3794 | `(("python-setuptools_scm" ,python-setuptools-scm) |
| 3795 | ("python-twisted" ,python-twisted))) |
| 3796 | (propagated-inputs |
| 3797 | (list python-attrs python-pyrsistent python-six)) |
| 3798 | (home-page "https://github.com/Julian/jsonschema") |
| 3799 | (synopsis "Implementation of JSON Schema for Python") |
| 3800 | (description |
| 3801 | "Jsonschema is an implementation of JSON Schema for Python.") |
| 3802 | (license license:expat))) |
| 3803 | |
| 3804 | ;;; TODO: Make the default python-jsonschema on core-updates |
| 3805 | (define-public python-jsonschema-next |
| 3806 | (package |
| 3807 | (inherit python-jsonschema) |
| 3808 | (version "4.5.1") |
| 3809 | (source |
| 3810 | (origin |
| 3811 | (method url-fetch) |
| 3812 | (uri (pypi-uri "jsonschema" version)) |
| 3813 | (sha256 |
| 3814 | (base32 "1z0x22691jva7lwfcfh377jdmlz68zhiawxzl53k631l34k8hvbw")))) |
| 3815 | (arguments |
| 3816 | (substitute-keyword-arguments (package-arguments python-jsonschema) |
| 3817 | ((#:phases phases) |
| 3818 | #~(modify-phases #$phases |
| 3819 | ;; XXX: PEP 517 manual build/install procedures copied from |
| 3820 | ;; python-isort. |
| 3821 | (replace 'build |
| 3822 | (lambda _ |
| 3823 | ;; ZIP does not support timestamps before 1980. |
| 3824 | (setenv "SOURCE_DATE_EPOCH" "315532800") |
| 3825 | (invoke "python" "-m" "build" "--wheel" "--no-isolation" "."))) |
| 3826 | (replace 'install |
| 3827 | (lambda* (#:key outputs #:allow-other-keys) |
| 3828 | (let ((whl (car (find-files "dist" "\\.whl$")))) |
| 3829 | (invoke "pip" "--no-cache-dir" "--no-input" |
| 3830 | "install" "--no-deps" "--prefix" #$output whl)))))))) |
| 3831 | (native-inputs (list python-pypa-build |
| 3832 | python-setuptools-scm |
| 3833 | python-twisted)) |
| 3834 | (propagated-inputs |
| 3835 | (list python-attrs |
| 3836 | python-importlib-metadata |
| 3837 | python-pyrsistent |
| 3838 | python-typing-extensions)))) |
| 3839 | |
| 3840 | (define-public python-schema |
| 3841 | (package |
| 3842 | (name "python-schema") |
| 3843 | (version "0.6.6") |
| 3844 | (source |
| 3845 | (origin |
| 3846 | (method url-fetch) |
| 3847 | (uri (pypi-uri "schema" version)) |
| 3848 | (sha256 |
| 3849 | (base32 |
| 3850 | "1lw28j9w9vxyigg7vkfkvi6ic9lgjkdnfvnxdr7pklslqvzmk2vm")))) |
| 3851 | (build-system python-build-system) |
| 3852 | (native-inputs |
| 3853 | (list python-pytest)) |
| 3854 | (home-page "https://github.com/keleshev/schema") |
| 3855 | (synopsis "Simple data validation library") |
| 3856 | (description |
| 3857 | "@code{python-schema} is a library for validating Python data |
| 3858 | structures, such as those obtained from config-files, forms, external |
| 3859 | services or command-line parsing, converted from JSON/YAML (or |
| 3860 | something else) to Python data-types.") |
| 3861 | (license license:psfl))) |
| 3862 | |
| 3863 | (define-public python-schema-0.5 |
| 3864 | (package (inherit python-schema) |
| 3865 | (version "0.5.0") |
| 3866 | (source |
| 3867 | (origin |
| 3868 | (method url-fetch) |
| 3869 | (uri (pypi-uri "schema" version)) |
| 3870 | (sha256 |
| 3871 | (base32 |
| 3872 | "10zqvpaky51kgb8nd42bk7jwl8cn2zvayxjpdc1wwmpybj92x67s")))))) |
| 3873 | |
| 3874 | (define-public python-kitchen |
| 3875 | (package |
| 3876 | (name "python-kitchen") |
| 3877 | (version "1.2.5") |
| 3878 | (source |
| 3879 | (origin |
| 3880 | (method url-fetch) |
| 3881 | (uri (pypi-uri "kitchen" version)) |
| 3882 | (sha256 |
| 3883 | (base32 |
| 3884 | "1zakh6l0yjvwic9p0nkvmbidpnkygkxbigh2skmb5gccyrhbp7xg")))) |
| 3885 | (build-system python-build-system) |
| 3886 | (propagated-inputs |
| 3887 | (list python-chardet)) |
| 3888 | (home-page "https://github.com/fedora-infra/kitchen") |
| 3889 | (synopsis "Python API for snippets") |
| 3890 | (description "@code{kitchen} module provides a python API for all sorts of |
| 3891 | little useful snippets of code that everybody ends up writing for their projects |
| 3892 | but never seem big enough to build an independent release. Use kitchen and stop |
| 3893 | cutting and pasting that code over and over.") |
| 3894 | (license (list license:lgpl2.1+ |
| 3895 | ;; subprocess.py, test_subprocess.py, |
| 3896 | ;; kitchen/pycompat25/defaultdict.py: |
| 3897 | license:psfl)))) |
| 3898 | |
| 3899 | (define-public python-roman |
| 3900 | (package |
| 3901 | (name "python-roman") |
| 3902 | (version "3.3") |
| 3903 | (source |
| 3904 | (origin |
| 3905 | (method url-fetch) |
| 3906 | (uri (pypi-uri "roman" version)) |
| 3907 | (sha256 |
| 3908 | (base32 |
| 3909 | "0gyp2bmw47jgpm8j64gydzqq838bgxz5gh6cm57lxlr7p26sqiic")))) |
| 3910 | (build-system python-build-system) |
| 3911 | (home-page "https://github.com/zopefoundation/roman") |
| 3912 | (synopsis "Integer to Roman numerals converter") |
| 3913 | (description |
| 3914 | "This package provides a small helper library to convert Arabic Numbers |
| 3915 | to Roman Numerals.") |
| 3916 | (license license:psfl))) |
| 3917 | |
| 3918 | (define-public python-unidecode |
| 3919 | (package |
| 3920 | (name "python-unidecode") |
| 3921 | (version "1.1.1") |
| 3922 | (source (origin |
| 3923 | (method url-fetch) |
| 3924 | (uri (pypi-uri "Unidecode" version)) |
| 3925 | (sha256 |
| 3926 | (base32 |
| 3927 | "1s6cp2lv4m0f00hjckjz8p6m7d3n3v16jvg353llf5ia1iqsnsib")))) |
| 3928 | (build-system python-build-system) |
| 3929 | (home-page "https://pypi.org/project/Unidecode/") |
| 3930 | (synopsis "ASCII transliterations of Unicode text") |
| 3931 | (description |
| 3932 | "Unidecode provides ASCII transliterations of Unicode text. Unidecode is |
| 3933 | useful when integrating with legacy code that doesn't support Unicode, or for |
| 3934 | ease of entry of non-Roman names on a US keyboard, or when constructing ASCII |
| 3935 | machine identifiers from human-readable Unicode strings that should still be |
| 3936 | somewhat intelligible.") |
| 3937 | (license license:gpl2+))) |
| 3938 | |
| 3939 | (define-public python-text-unidecode |
| 3940 | (package |
| 3941 | (name "python-text-unidecode") |
| 3942 | (version "1.3") |
| 3943 | (source (origin |
| 3944 | (method url-fetch) |
| 3945 | (uri (pypi-uri "text-unidecode" version)) |
| 3946 | (sha256 |
| 3947 | (base32 |
| 3948 | "14xb99fdv52j21dsljgsbmbaqv10ps4b453p229r29sdn4xn1mms")))) |
| 3949 | (build-system python-build-system) |
| 3950 | (arguments |
| 3951 | '(#:phases (modify-phases %standard-phases |
| 3952 | (replace 'check |
| 3953 | (lambda _ |
| 3954 | (invoke "pytest" "-vv")))))) |
| 3955 | (native-inputs |
| 3956 | (list python-pytest)) |
| 3957 | (home-page "https://github.com/kmike/text-unidecode/") |
| 3958 | (synopsis "Decode Unicode data") |
| 3959 | (description |
| 3960 | "@code{text-unidecode} is a basic Python port of the @code{Text::Unidecode} |
| 3961 | Perl library. It can create ASCII representations of Unicode data. In general |
| 3962 | users should prefer the @code{python-unidecode} package which offers better |
| 3963 | memory usage and transliteration quality.") |
| 3964 | ;; The user can choose either license. |
| 3965 | (license (list license:clarified-artistic license:gpl2+)))) |
| 3966 | |
| 3967 | (define-public python-pyjwt |
| 3968 | (package |
| 3969 | (name "python-pyjwt") |
| 3970 | (version "2.4.0") |
| 3971 | (source |
| 3972 | (origin |
| 3973 | (method url-fetch) |
| 3974 | (uri (pypi-uri "PyJWT" version)) |
| 3975 | (sha256 |
| 3976 | (base32 |
| 3977 | "1fmbcwfw1463wjzwbcgg3s16rad6kfb1mc5y7jbkp6v9ihh0hafl")))) |
| 3978 | (build-system python-build-system) |
| 3979 | (arguments |
| 3980 | '(#:phases (modify-phases %standard-phases |
| 3981 | (replace 'check |
| 3982 | (lambda* (#:key tests? #:allow-other-keys) |
| 3983 | (when tests? |
| 3984 | (invoke "pytest" "-vv"))))))) |
| 3985 | (native-inputs |
| 3986 | (list python-cryptography python-pytest)) |
| 3987 | (home-page "https://github.com/progrium/pyjwt") |
| 3988 | (synopsis "JSON Web Token implementation in Python") |
| 3989 | (description |
| 3990 | "PyJWT is a JSON Web Token implementation written in Python.") |
| 3991 | (license license:expat))) |
| 3992 | |
| 3993 | (define-public python-pymsgbox |
| 3994 | (package |
| 3995 | (name "python-pymsgbox") |
| 3996 | (version "1.0.6") |
| 3997 | (source |
| 3998 | (origin |
| 3999 | (method git-fetch) |
| 4000 | (uri (git-reference |
| 4001 | ;; LICENSE.txt is not present on pypi |
| 4002 | (url "https://github.com/asweigart/PyMsgBox") |
| 4003 | (commit "55926b55f46caa969c5ddb87990ebea2737bd66f"))) |
| 4004 | (file-name (git-file-name name version)) |
| 4005 | (sha256 |
| 4006 | (base32 |
| 4007 | "0zy7rjfpwlrd8b64j7jk2lb8m2npc21rnpwakpfvwgl4nxdy80rg")))) |
| 4008 | (arguments |
| 4009 | ;; Circular dependency to run tests: |
| 4010 | ;; Tests need pyautogui, which depends on pymsgbox. |
| 4011 | '(#:tests? #f)) |
| 4012 | (build-system python-build-system) |
| 4013 | (home-page "https://github.com/asweigart/PyMsgBox") |
| 4014 | (synopsis "Python module for JavaScript-like message boxes") |
| 4015 | (description |
| 4016 | "PyMsgBox is a simple, cross-platform, pure Python module for |
| 4017 | JavaScript-like message boxes. Types of dialog boxes include: |
| 4018 | @enumerate |
| 4019 | @item alert |
| 4020 | @item confirm |
| 4021 | @item prompt |
| 4022 | @item password |
| 4023 | @end enumerate |
| 4024 | ") |
| 4025 | (license license:bsd-3))) |
| 4026 | |
| 4027 | (define-public python-pympler |
| 4028 | (package |
| 4029 | (name "python-pympler") |
| 4030 | (home-page "https://pythonhosted.org/Pympler/") |
| 4031 | (version "1.0.1") |
| 4032 | (source (origin |
| 4033 | (method url-fetch) |
| 4034 | (uri (pypi-uri "Pympler" version)) |
| 4035 | (sha256 |
| 4036 | (base32 |
| 4037 | "1ynkqpv2akldmvkll5vh5zhwj433s1d59iv0f76lygyak4silgwr")))) |
| 4038 | (build-system python-build-system) |
| 4039 | (synopsis "Measure, monitor and analyze memory behavior") |
| 4040 | (description |
| 4041 | "Pympler is a development tool to measure, monitor and analyze |
| 4042 | the memory behavior of Python objects in a running Python application. |
| 4043 | |
| 4044 | By pympling a Python application, detailed insight in the size and the |
| 4045 | lifetime of Python objects can be obtained. Undesirable or unexpected |
| 4046 | runtime behavior like memory bloat and other @samp{pymples} can easily |
| 4047 | be identified. |
| 4048 | |
| 4049 | A web profiling frontend exposes process statistics, garbage |
| 4050 | visualisation and class tracker statistics.") |
| 4051 | (license license:asl2.0))) |
| 4052 | |
| 4053 | (define-public python-itsdangerous |
| 4054 | (package |
| 4055 | (name "python-itsdangerous") |
| 4056 | (version "2.0.1") |
| 4057 | (source |
| 4058 | (origin |
| 4059 | (method url-fetch) |
| 4060 | (uri (pypi-uri "itsdangerous" version)) |
| 4061 | (sha256 |
| 4062 | (base32 |
| 4063 | "1w6gfb2zhbcmrfj6digwzw1z68w6zg1q87rm6la2m412zil4swly")))) |
| 4064 | (build-system python-build-system) |
| 4065 | (home-page "https://palletsprojects.com/p/itsdangerous/") |
| 4066 | (synopsis "Python library for passing data to/from untrusted environments") |
| 4067 | (description |
| 4068 | "Itsdangerous provides various helpers to pass trusted data to untrusted |
| 4069 | environments and back.") |
| 4070 | (license license:bsd-3))) |
| 4071 | |
| 4072 | (define-public python-pyyaml |
| 4073 | (package |
| 4074 | (name "python-pyyaml") |
| 4075 | (version "6.0") |
| 4076 | (source |
| 4077 | (origin |
| 4078 | (method url-fetch) |
| 4079 | (uri (pypi-uri "PyYAML" version)) |
| 4080 | (sha256 |
| 4081 | (base32 |
| 4082 | "18imkjacvpxfgg1lbpraqywx3j7hr5dv99d242byqvrh2jf53yv8")))) |
| 4083 | (build-system python-build-system) |
| 4084 | (inputs |
| 4085 | (list libyaml python-cython)) |
| 4086 | (home-page "https://pyyaml.org") |
| 4087 | (synopsis "YAML parser and emitter for Python") |
| 4088 | (description |
| 4089 | "PyYAML is a YAML parser and emitter for Python. PyYAML features a |
| 4090 | complete YAML 1.1 parser, Unicode support, pickle support, capable extension |
| 4091 | API, and sensible error messages. PyYAML supports standard YAML tags and |
| 4092 | provides Python-specific tags that represent an arbitrary Python object.") |
| 4093 | (license license:expat))) |
| 4094 | |
| 4095 | (define-public python-pyyaml-5 |
| 4096 | (package |
| 4097 | (inherit python-pyyaml) |
| 4098 | (version "5.4.1") |
| 4099 | (source |
| 4100 | (origin |
| 4101 | (method url-fetch) |
| 4102 | (uri (pypi-uri "PyYAML" version)) |
| 4103 | (sha256 |
| 4104 | (base32 |
| 4105 | "0pm440pmpvgv5rbbnm8hk4qga5a292kvlm1bh3x2nwr8pb5p8xv0")))))) |
| 4106 | |
| 4107 | (define-public python-vine |
| 4108 | (package |
| 4109 | (name "python-vine") |
| 4110 | (version "5.0.0") |
| 4111 | (source |
| 4112 | (origin |
| 4113 | (method url-fetch) |
| 4114 | (uri (pypi-uri "vine" version)) |
| 4115 | (sha256 |
| 4116 | (base32 "0zk3pm0g7s4qfn0gk28lfmsyplvisaxi6826cgpq5njkm4j1cfvx")))) |
| 4117 | (build-system python-build-system) |
| 4118 | (native-inputs |
| 4119 | (list python-pytest python-case)) |
| 4120 | (home-page "https://github.com/celery/vine") |
| 4121 | (synopsis "Promises for Python") |
| 4122 | (description |
| 4123 | "@code{vine} provides a special implementation of promises in that it can |
| 4124 | be used both for \"promise of a value\" and lazy evaluation. The biggest |
| 4125 | upside for this is that everything in a promise can also be a promise, |
| 4126 | e.g. filters, callbacks and errbacks can all be promises.") |
| 4127 | (license license:bsd-3))) |
| 4128 | |
| 4129 | (define-public python-virtualenv |
| 4130 | (package |
| 4131 | (name "python-virtualenv") |
| 4132 | (version "20.3.1") |
| 4133 | (source |
| 4134 | (origin |
| 4135 | (method url-fetch) |
| 4136 | (uri (pypi-uri "virtualenv" version)) |
| 4137 | (sha256 |
| 4138 | (base32 |
| 4139 | "1nbhnpzswcf3lmzn5xabmfdd7ki8r2w2i37y6wml54di6qi1l48c")))) |
| 4140 | (build-system python-build-system) |
| 4141 | (native-inputs |
| 4142 | (list python-mock python-pytest python-setuptools-scm)) |
| 4143 | (propagated-inputs |
| 4144 | (list python-appdirs python-distlib python-filelock python-six)) |
| 4145 | (home-page "https://virtualenv.pypa.io/") |
| 4146 | (synopsis "Virtual Python environment builder") |
| 4147 | (description |
| 4148 | "Virtualenv is a tool to create isolated Python environments.") |
| 4149 | (license license:expat))) |
| 4150 | |
| 4151 | (define-public python-crossenv |
| 4152 | (package |
| 4153 | (name "python-crossenv") |
| 4154 | (version "1.3.0") |
| 4155 | (source |
| 4156 | (origin |
| 4157 | (method url-fetch) |
| 4158 | (uri (pypi-uri "crossenv" version)) |
| 4159 | (sha256 |
| 4160 | (base32 |
| 4161 | "07rv4650n19740ixmnsf4qbxyqlgi7f5m1cy8cq0gl01q3r6hps4")))) |
| 4162 | (build-system python-build-system) |
| 4163 | (arguments |
| 4164 | (list #:tests? #f)) ; tests not distributed on pypi |
| 4165 | (home-page "https://github.com/benfogle/virtualenv") |
| 4166 | (synopsis "Cross-compiling virtualenv for Python") |
| 4167 | (description "This package is a tool for cross-compiling extension |
| 4168 | modules. It creates a special virtual environment such that @command{pip} or |
| 4169 | @file{setup.py} will cross compile packages for you, usually with no further |
| 4170 | work on your part.") |
| 4171 | (license license:expat))) |
| 4172 | |
| 4173 | (define-public python-uc-micro-py |
| 4174 | (package |
| 4175 | (name "python-uc-micro-py") |
| 4176 | (version "1.0.1") |
| 4177 | (source (origin |
| 4178 | (method git-fetch) ;for tests |
| 4179 | (uri (git-reference |
| 4180 | (url "https://github.com/tsutsu3/uc.micro-py") |
| 4181 | (commit (string-append "v" version)))) |
| 4182 | (file-name (git-file-name name version)) |
| 4183 | (sha256 |
| 4184 | (base32 |
| 4185 | "17f55gi55rg47nm88fn3f8851ph03dgykdp011lxr3j6hk18lyfv")))) |
| 4186 | (build-system pyproject-build-system) |
| 4187 | (native-inputs (list python-pytest)) |
| 4188 | (home-page "https://github.com/tsutsu3/uc.micro-py") |
| 4189 | (synopsis "Unicode data files for linkify-it-py projects") |
| 4190 | (description "This package contains a micro subset of Unicode data files |
| 4191 | for linkify-it-py projects.") |
| 4192 | (license license:expat))) |
| 4193 | |
| 4194 | (define-public python-linkify-it-py |
| 4195 | (package |
| 4196 | (name "python-linkify-it-py") |
| 4197 | (version "2.0.0") |
| 4198 | (source (origin |
| 4199 | (method git-fetch) ;for tests |
| 4200 | (uri (git-reference |
| 4201 | (url "https://github.com/tsutsu3/linkify-it-py") |
| 4202 | (commit (string-append "v" version)))) |
| 4203 | (file-name (git-file-name name version)) |
| 4204 | (sha256 |
| 4205 | (base32 |
| 4206 | "0fg0a1lc8xbb62y9krxcp708ll58dxcwm8i7rrwpkd5sh2229f6x")))) |
| 4207 | (build-system pyproject-build-system) |
| 4208 | (propagated-inputs (list python-uc-micro-py)) |
| 4209 | (native-inputs (list python-pytest)) |
| 4210 | (home-page "https://github.com/tsutsu3/linkify-it-py") |
| 4211 | (synopsis "Links recognition library with full Unicode support") |
| 4212 | (description "This is Python port of |
| 4213 | @url{https://github.com/markdown-it/linkify-it, linkify-it}, which is a links |
| 4214 | recognition library with full Unicode support. It has features like: |
| 4215 | @itemize |
| 4216 | @item Full unicode support, with @i{astral} characters |
| 4217 | @item International domains support |
| 4218 | @item Allows rules extension and custom normalizers. |
| 4219 | @end itemize") |
| 4220 | (license license:expat))) |
| 4221 | |
| 4222 | (define-public python-markdown-it-py |
| 4223 | (package |
| 4224 | (name "python-markdown-it-py") |
| 4225 | (version "2.1.0") |
| 4226 | (source (origin |
| 4227 | (method url-fetch) |
| 4228 | (uri (pypi-uri "markdown-it-py" version)) |
| 4229 | (sha256 |
| 4230 | (base32 |
| 4231 | "1nh75i72584r70alhqc479gys04s5m5g3vq601yf2njbs7z5jzng")))) |
| 4232 | (build-system python-build-system) |
| 4233 | (arguments |
| 4234 | (list |
| 4235 | #:tests? #f ;pypi source does not contains tests |
| 4236 | #:phases |
| 4237 | #~(modify-phases %standard-phases |
| 4238 | (replace 'build |
| 4239 | (lambda _ (invoke "flit" "build"))) |
| 4240 | (replace 'install |
| 4241 | (lambda* (#:key inputs outputs #:allow-other-keys) |
| 4242 | (add-installed-pythonpath inputs outputs) |
| 4243 | (for-each |
| 4244 | (lambda (wheel) |
| 4245 | (invoke "python" "-m" "pip" "install" |
| 4246 | wheel (string-append "--prefix=" #$output))) |
| 4247 | (find-files "dist" "\\.whl$"))))))) |
| 4248 | (native-inputs (list python-flit)) |
| 4249 | (propagated-inputs |
| 4250 | (list python-mdurl |
| 4251 | python-typing-extensions)) |
| 4252 | (home-page "https://github.com/executablebooks/markdown-it-py") |
| 4253 | (synopsis "Python port of markdown-it") |
| 4254 | (description |
| 4255 | "This is a Python port of @code{markdown-it}, and some of its associated |
| 4256 | plugins. The driving design philosophy of the port has been to change as |
| 4257 | little of the fundamental code structure (file names, function name, etc) as |
| 4258 | possible.") |
| 4259 | (license license:expat))) |
| 4260 | |
| 4261 | (define-public python-markupsafe |
| 4262 | (package |
| 4263 | (name "python-markupsafe") |
| 4264 | (version "2.0.1") |
| 4265 | (source |
| 4266 | (origin |
| 4267 | (method url-fetch) |
| 4268 | (uri (pypi-uri "MarkupSafe" version)) |
| 4269 | (sha256 |
| 4270 | (base32 |
| 4271 | "02k2ynmqvvd0z0gakkf8s4idyb606r7zgga41jrkhqmigy06fk2r")))) |
| 4272 | (build-system python-build-system) |
| 4273 | (arguments |
| 4274 | `(#:phases (modify-phases %standard-phases |
| 4275 | (replace 'check |
| 4276 | (lambda* (#:key tests? #:allow-other-keys) |
| 4277 | (when tests? |
| 4278 | (invoke "pytest" "-vv"))))))) |
| 4279 | (native-inputs |
| 4280 | (list python-pytest)) |
| 4281 | (home-page "https://github.com/mitsuhiko/markupsafe") |
| 4282 | (synopsis "XML/HTML/XHTML markup safe string implementation for Python") |
| 4283 | (description |
| 4284 | "Markupsafe provides an XML/HTML/XHTML markup safe string implementation |
| 4285 | for Python.") |
| 4286 | (license license:bsd-3))) |
| 4287 | |
| 4288 | |
| 4289 | (define-public python-jinja2 |
| 4290 | (package |
| 4291 | (name "python-jinja2") |
| 4292 | (version "3.1.1") |
| 4293 | (source |
| 4294 | (origin |
| 4295 | (method url-fetch) |
| 4296 | (uri (pypi-uri "Jinja2" version)) |
| 4297 | (sha256 |
| 4298 | (base32 |
| 4299 | "1saawzys14l1p4kafs7hkihmnvqjq8fwxjmkjiqx3jq1nm5ys2v4")))) |
| 4300 | (build-system python-build-system) |
| 4301 | (arguments |
| 4302 | '(#:phases (modify-phases %standard-phases |
| 4303 | (replace 'check |
| 4304 | (lambda* (#:key tests? #:allow-other-keys) |
| 4305 | (if tests? |
| 4306 | (invoke "pytest" "-vv") |
| 4307 | (format #t "test suite not run~%"))))))) |
| 4308 | (native-inputs (list python-pytest)) |
| 4309 | (propagated-inputs (list python-markupsafe)) |
| 4310 | (home-page "https://jinja.palletsprojects.com/") |
| 4311 | (synopsis "Python template engine") |
| 4312 | (description |
| 4313 | "Jinja2 is a small but fast and easy to use stand-alone template engine |
| 4314 | written in pure Python.") |
| 4315 | (license license:bsd-3))) |
| 4316 | |
| 4317 | |
| 4318 | (define-public python-jinja2-time |
| 4319 | (package |
| 4320 | (name "python-jinja2-time") |
| 4321 | (version "0.2.0") |
| 4322 | (source |
| 4323 | (origin |
| 4324 | (method url-fetch) |
| 4325 | (uri (pypi-uri "jinja2-time" version)) |
| 4326 | (sha256 |
| 4327 | (base32 |
| 4328 | "0h0dr7cfpjnjj8bgl2vk9063a53649pn37wnlkd8hxjy656slkni")))) |
| 4329 | (build-system python-build-system) |
| 4330 | (propagated-inputs |
| 4331 | (list python-arrow python-jinja2)) |
| 4332 | (home-page |
| 4333 | "https://github.com/hackebrot/jinja2-time") |
| 4334 | (synopsis "Jinja2 Extension for Dates and Times") |
| 4335 | (description |
| 4336 | "This package provides an extension for the template engine Jinja2. It |
| 4337 | adds a 'now' tag providing a convenient access to the arrow.now() API from |
| 4338 | templates. A format string can be provided to control the output.") |
| 4339 | (license license:expat))) |
| 4340 | |
| 4341 | (define-public python-pysdl2 |
| 4342 | (package |
| 4343 | (name "python-pysdl2") |
| 4344 | (version "0.9.11") |
| 4345 | (source (origin |
| 4346 | (method url-fetch) |
| 4347 | (uri (pypi-uri "PySDL2" version)) |
| 4348 | (sha256 |
| 4349 | (base32 |
| 4350 | "19id1qswgcj4v4j5kn49shq1xxx3slhjpm0102w87mczsdbi1rck")))) |
| 4351 | (build-system python-build-system) |
| 4352 | (arguments |
| 4353 | (list #:tests? #f ;; Requires /dev/dri, OpenGL module, etc. |
| 4354 | #:phases |
| 4355 | #~(modify-phases %standard-phases |
| 4356 | (add-after 'unpack 'patch-paths |
| 4357 | (lambda* (#:key inputs #:allow-other-keys) |
| 4358 | (substitute* "sdl2/dll.py" |
| 4359 | ;; Disable pysdl2-dll. It can't be packaged on GNU Guix |
| 4360 | ;; as it duplicates an existing package (sdl2). |
| 4361 | (("prepath = os\\.getenv\\('PYSDL2_DLL_PATH'\\)") |
| 4362 | "prepath = \"system\"") |
| 4363 | (("^import sdl2dll$") "") |
| 4364 | (("postpath = os\\.getenv\\('PYSDL2_DLL_PATH'\\)") |
| 4365 | "postpath = \"system\"") |
| 4366 | (("DLL\\(.*, os\\.getenv\\(\"PYSDL2_DLL_PATH\"\\)\\)") |
| 4367 | (string-append |
| 4368 | "DLL(\"SDL2\", [\"SDL2\", \"SDL2-2.0\", \"SDL2-2.0.0\"], \"" |
| 4369 | (dirname (search-input-file inputs "/lib/libSDL2.so")) |
| 4370 | "\")"))) |
| 4371 | (substitute* "sdl2/sdlimage.py" |
| 4372 | (("os\\.getenv\\(\"PYSDL2_DLL_PATH\"\\)") |
| 4373 | (string-append |
| 4374 | "\"" |
| 4375 | (dirname (search-input-file inputs "/lib/libSDL2_image.so")) |
| 4376 | "\""))) |
| 4377 | (substitute* "sdl2/sdlgfx.py" |
| 4378 | (("os\\.getenv\\(\"PYSDL2_DLL_PATH\"\\)") |
| 4379 | (string-append |
| 4380 | "\"" |
| 4381 | (dirname (search-input-file inputs "/lib/libSDL2_gfx.so")) |
| 4382 | "\""))) |
| 4383 | (substitute* "sdl2/sdlmixer.py" |
| 4384 | (("os\\.getenv\\(\"PYSDL2_DLL_PATH\"\\)") |
| 4385 | (string-append |
| 4386 | "\"" |
| 4387 | (dirname (search-input-file inputs "/lib/libSDL2_mixer.so")) |
| 4388 | "\""))) |
| 4389 | (substitute* "sdl2/sdlttf.py" |
| 4390 | (("os\\.getenv\\(\"PYSDL2_DLL_PATH\"\\)") |
| 4391 | (string-append |
| 4392 | "\"" |
| 4393 | (dirname (search-input-file inputs "/lib/libSDL2_ttf.so")) |
| 4394 | "\"")))))))) |
| 4395 | (inputs |
| 4396 | (list sdl2 sdl2-image sdl2-gfx sdl2-mixer sdl2-ttf)) |
| 4397 | (home-page "https://github.com/py-sdl/py-sdl2") |
| 4398 | (synopsis "Python bindings around the SDL2 game development library") |
| 4399 | (description "PySDL2 is a pure Python wrapper around the @code{SDL2}, |
| 4400 | @code{SDL2_mixer}, @code{SDL2_image}, @code{SDL2_ttf}, and @code{SDL2_gfx} |
| 4401 | libraries. Instead of relying on C code, it uses the built-in ctypes module |
| 4402 | to interface with SDL2, and provides simple Python classes and wrappers for |
| 4403 | common SDL2 functionality.") |
| 4404 | (license license:cc0))) |
| 4405 | |
| 4406 | (define-public python-pystache |
| 4407 | (package |
| 4408 | (name "python-pystache") |
| 4409 | (version "0.6.0") |
| 4410 | (source (origin |
| 4411 | (method url-fetch) |
| 4412 | (uri (pypi-uri "pystache" version)) |
| 4413 | (sha256 |
| 4414 | (base32 |
| 4415 | "03a73ppf5vxnsk6az5ackvc0hp6xqv2f4hi1s5c4nk4s2jr95gwk")))) |
| 4416 | (build-system python-build-system) |
| 4417 | (arguments |
| 4418 | '(#:tests? #f)) ; FIXME: Python 3 tests are failing. |
| 4419 | (home-page "http://defunkt.io/pystache/") |
| 4420 | (synopsis "Python logic-less template engine") |
| 4421 | (description |
| 4422 | "Pystache is a Python implementation of the framework agnostic, |
| 4423 | logic-free templating system Mustache.") |
| 4424 | (license license:expat))) |
| 4425 | |
| 4426 | (define-public python-pystitcher |
| 4427 | (package |
| 4428 | (name "python-pystitcher") |
| 4429 | (version "1.0.4") |
| 4430 | (source |
| 4431 | (origin |
| 4432 | (method git-fetch) |
| 4433 | (uri |
| 4434 | (git-reference |
| 4435 | (url "https://github.com/captn3m0/pystitcher") |
| 4436 | (commit |
| 4437 | (string-append "v" version)))) |
| 4438 | (file-name |
| 4439 | (git-file-name name version)) |
| 4440 | (sha256 |
| 4441 | (base32 "03yrzqhcsjdj5zprrk3bh5bbyqfy3vfhxra9974vmkir3m121394")))) |
| 4442 | (build-system python-build-system) |
| 4443 | (inputs |
| 4444 | (list python-html5lib python-importlib-metadata python-markdown |
| 4445 | python-pypdf3 python-validators)) |
| 4446 | (home-page "https://github.com/captn3m0/pystitcher") |
| 4447 | (synopsis "Declaratively stitch together a PDF file from multiple sources") |
| 4448 | (description |
| 4449 | "This package stitches your PDF files together, generating customizable |
| 4450 | bookmarks using a declarative input in the form of a markdown file.") |
| 4451 | (license license:expat))) |
| 4452 | |
| 4453 | (define-public python-joblib |
| 4454 | (package |
| 4455 | (name "python-joblib") |
| 4456 | (version "1.1.0") |
| 4457 | (source (origin |
| 4458 | (method url-fetch) |
| 4459 | (uri (pypi-uri "joblib" version)) |
| 4460 | (sha256 |
| 4461 | (base32 |
| 4462 | "0d8ypyhsw1bjr96zan9ms8wbvnzbjqxniq4vcszghcrps7ngqn21")))) |
| 4463 | (build-system python-build-system) |
| 4464 | (arguments |
| 4465 | `(#:phases |
| 4466 | (modify-phases %standard-phases |
| 4467 | (replace 'check |
| 4468 | (lambda* (#:key tests? #:allow-other-keys) |
| 4469 | (when tests? |
| 4470 | (setenv "JOBLIB_MULTIPROCESSING" "0") |
| 4471 | (invoke "pytest" "-v" "joblib" |
| 4472 | ;; We disable this test to avoid having to depend on ipython/jupyter |
| 4473 | "-k" "not test_parallel_call_cached_function_defined_in_jupyter"))))))) |
| 4474 | (native-inputs |
| 4475 | (list python-pytest)) |
| 4476 | (home-page "https://joblib.readthedocs.io/") |
| 4477 | (synopsis "Using Python functions as pipeline jobs") |
| 4478 | (description |
| 4479 | "Joblib is a set of tools to provide lightweight pipelining in Python. |
| 4480 | In particular, joblib offers: transparent disk-caching of the output values |
| 4481 | and lazy re-evaluation (memoize pattern), easy simple parallel computing |
| 4482 | logging and tracing of the execution.") |
| 4483 | (license license:bsd-3))) |
| 4484 | |
| 4485 | |
| 4486 | (define-public python-daemon |
| 4487 | (package |
| 4488 | (name "python-daemon") |
| 4489 | (version "2.3.0") |
| 4490 | (source |
| 4491 | (origin |
| 4492 | (method url-fetch) |
| 4493 | (uri (pypi-uri "python-daemon" version)) |
| 4494 | (sha256 |
| 4495 | (base32 |
| 4496 | "1bxfn2bq56sd4w0nm9mqy8y0905m7fc8vmhnjxlrf49vcbqr7adx")))) |
| 4497 | (build-system python-build-system) |
| 4498 | (arguments |
| 4499 | `(#:phases |
| 4500 | (modify-phases %standard-phases |
| 4501 | (add-before 'check 'adjust-tests |
| 4502 | (lambda _ |
| 4503 | ;; Drop use of testtools.helpers.safe_hasattr which has |
| 4504 | ;; been removed in favor of hasattr. |
| 4505 | (substitute* "test/test_metadata.py" |
| 4506 | (("testtools\\.helpers\\.safe_hasattr") |
| 4507 | "hasattr")) |
| 4508 | ;; FIXME: Determine why test fails |
| 4509 | (substitute* "test/test_daemon.py" |
| 4510 | (("test_detaches_process_context") |
| 4511 | "skip_test_detaches_process_context"))))))) |
| 4512 | (propagated-inputs |
| 4513 | (list python-lockfile)) |
| 4514 | (native-inputs |
| 4515 | (list python-coverage |
| 4516 | python-testtools |
| 4517 | python-testscenarios |
| 4518 | python-twine |
| 4519 | python-mock |
| 4520 | python-docutils)) |
| 4521 | (home-page "https://pagure.io/python-daemon/") |
| 4522 | (synopsis "Python library for making a Unix daemon process") |
| 4523 | (description "Python-daemon is a library that assists a Python program to |
| 4524 | turn itself into a well-behaved Unix daemon process, as specified in PEP 3143. |
| 4525 | |
| 4526 | This library provides a @code{DaemonContext} class that manages the following |
| 4527 | important tasks for becoming a daemon process: |
| 4528 | @enumerate |
| 4529 | @item Detach the process into its own process group. |
| 4530 | @item Set process environment appropriate for running inside a chroot. |
| 4531 | @item Renounce suid and sgid privileges. |
| 4532 | @item Close all open file descriptors. |
| 4533 | @item Change the working directory, uid, gid, and umask. |
| 4534 | @item Set appropriate signal handlers. |
| 4535 | @item Open new file descriptors for stdin, stdout, and stderr. |
| 4536 | @item Manage a specified PID lock file. |
| 4537 | @item Register cleanup functions for at-exit processing. |
| 4538 | @end enumerate") |
| 4539 | ;; Only setup.py is gpl3+, everything else is apache 2.0 licensed. |
| 4540 | (license (list license:asl2.0 license:gpl3+)))) |
| 4541 | |
| 4542 | (define-public python-anytree |
| 4543 | (package |
| 4544 | (name "python-anytree") |
| 4545 | (version "2.8.0") |
| 4546 | (source (origin |
| 4547 | (method url-fetch) |
| 4548 | (uri (pypi-uri "anytree" version)) |
| 4549 | (sha256 |
| 4550 | (base32 |
| 4551 | "1aycpc387wqz7h9w2p53qxn43qsh3m6by6ak4kkc66x9aprr63rz")))) |
| 4552 | (build-system python-build-system) |
| 4553 | (propagated-inputs |
| 4554 | (list python-six)) |
| 4555 | (native-inputs |
| 4556 | (list ;; For tests. |
| 4557 | graphviz ;for 'dot' |
| 4558 | python-nose)) |
| 4559 | (home-page "https://github.com/c0fec0de/anytree") |
| 4560 | (synopsis "Lightweight tree data library") |
| 4561 | (description |
| 4562 | "@code{anytree} is a simple, lightweight, and extensible tree data |
| 4563 | structure for Python.") |
| 4564 | (license license:asl2.0))) |
| 4565 | |
| 4566 | (define-public autokey |
| 4567 | (package |
| 4568 | (name "autokey") |
| 4569 | (version "0.95.10") |
| 4570 | (source (origin |
| 4571 | (method git-fetch) |
| 4572 | (uri (git-reference |
| 4573 | (url "https://github.com/autokey/autokey") |
| 4574 | (commit (string-append "v" version)))) |
| 4575 | (file-name (git-file-name name version)) |
| 4576 | (sha256 |
| 4577 | (base32 |
| 4578 | "0f0cqfnb49wwdy7zl2f2ypcnd5pc8r8n7z7ssxkq20d4xfxlgamr")))) |
| 4579 | (build-system python-build-system) |
| 4580 | (arguments |
| 4581 | (list |
| 4582 | ;; Tests are deprecated and broken until next version, see |
| 4583 | ;; https://github.com/autokey/autokey/issues/327 |
| 4584 | #:tests? #f |
| 4585 | #:phases |
| 4586 | #~(modify-phases %standard-phases |
| 4587 | (add-after 'unpack 'fix-paths |
| 4588 | (lambda* (#:key inputs #:allow-other-keys) |
| 4589 | (substitute* "lib/autokey/scripting.py" |
| 4590 | (("\"wmctrl\"") |
| 4591 | (string-append "\"" (search-input-file inputs "bin/wmctrl") "\"")) |
| 4592 | (("\"zenity\"") |
| 4593 | (string-append "\"" (search-input-file inputs "bin/zenity") "\""))) |
| 4594 | (substitute* "autokey-shell" |
| 4595 | (("'ipython3'") |
| 4596 | (string-append "'" (search-input-file inputs "bin/ipython3") "'")) |
| 4597 | (("'python3'") |
| 4598 | (string-append "'" (search-input-file inputs "bin/python3") "'"))))) |
| 4599 | ;; Use 'prefix' instead of '=' to allow the user to use additional |
| 4600 | ;; GI paths from their autokey scripts. GUIX_PYTHONPATH is already |
| 4601 | ;; wrapped with prefix in python-build-system's wrap. |
| 4602 | (add-before 'wrap 'wrap-autokey-gi |
| 4603 | (lambda _ |
| 4604 | (let ((gi-typelib-path (getenv "GI_TYPELIB_PATH"))) |
| 4605 | (for-each |
| 4606 | (lambda (program) |
| 4607 | (wrap-program program |
| 4608 | `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path)))) |
| 4609 | (map (lambda (name) |
| 4610 | (string-append #$output "/bin/" name)) |
| 4611 | '("autokey-gtk" |
| 4612 | "autokey-shell"))))))))) |
| 4613 | (inputs |
| 4614 | (list bash-minimal ; for wrap-program |
| 4615 | gtksourceview-3 |
| 4616 | libappindicator |
| 4617 | libnotify |
| 4618 | python-dbus |
| 4619 | python-ipython |
| 4620 | python-pygobject |
| 4621 | python-pyinotify |
| 4622 | python-pyqt+qscintilla |
| 4623 | python-xlib |
| 4624 | wmctrl |
| 4625 | zenity)) |
| 4626 | (home-page "https://github.com/autokey/autokey") |
| 4627 | (synopsis |
| 4628 | "Keyboard and GUI automation utility") |
| 4629 | (description |
| 4630 | "AutoKey is a desktop automation utility for X11. It allows the automation of |
| 4631 | virtually any task by responding to typed abbreviations and hotkeys. It |
| 4632 | offers a full-featured GUI (GTK and QT versions) that makes it highly |
| 4633 | accessible for novices, as well as a scripting interface offering the full |
| 4634 | flexibility and power of the Python language.") |
| 4635 | (license license:gpl3+))) |
| 4636 | |
| 4637 | (define-public python-docutils |
| 4638 | (package |
| 4639 | (name "python-docutils") |
| 4640 | (version "0.17.1") |
| 4641 | (source |
| 4642 | (origin |
| 4643 | (method url-fetch) |
| 4644 | (uri (pypi-uri "docutils" version)) |
| 4645 | (sha256 |
| 4646 | (base32 |
| 4647 | "09gii36lp1bs26cpxqyfd20xahnpbrbjzcnba2xq08y3wk97frb8")))) |
| 4648 | (build-system python-build-system) |
| 4649 | (arguments |
| 4650 | '(#:phases (modify-phases %standard-phases |
| 4651 | (replace 'check |
| 4652 | (lambda* (#:key tests? #:allow-other-keys) |
| 4653 | (if tests? |
| 4654 | (invoke "python" "test/alltests.py") |
| 4655 | (format #t "test suite not run~%")) |
| 4656 | #t))))) |
| 4657 | (home-page "http://docutils.sourceforge.net/") |
| 4658 | (synopsis "Python Documentation Utilities") |
| 4659 | (description |
| 4660 | "Docutils is a modular system for processing documentation into useful |
| 4661 | formats, such as HTML, XML, and LaTeX. It uses @dfn{reStructuredText}, an |
| 4662 | easy to use markup language, for input. |
| 4663 | |
| 4664 | This package provides tools for converting @file{.rst} files to other formats |
| 4665 | via commands such as @command{rst2man}, as well as supporting Python code.") |
| 4666 | ;; Most of the source code is public domain, but some source files are |
| 4667 | ;; licensed under the PFSL, BSD 2-clause, and GPLv3+ licenses. |
| 4668 | (license (list license:public-domain license:psfl license:bsd-2 license:gpl3+)))) |
| 4669 | |
| 4670 | ;; TODO: Make this the default in the next rebuild cycle. |
| 4671 | (define-public python-docutils-0.19 |
| 4672 | (package |
| 4673 | (inherit python-docutils) |
| 4674 | (version "0.19") |
| 4675 | (source (origin |
| 4676 | (method url-fetch) |
| 4677 | (uri (pypi-uri "docutils" version)) |
| 4678 | (sha256 |
| 4679 | (base32 |
| 4680 | "1rprvir116g5rz2bgzkzgyn6mv0z8582rz7bgxbpy2y3adkmm69k")))))) |
| 4681 | |
| 4682 | ;; awscli refuses to be built with docutils < 0.16. |
| 4683 | (define-public python-docutils-0.15 |
| 4684 | (package |
| 4685 | (inherit python-docutils) |
| 4686 | (version "0.15") |
| 4687 | (source (origin |
| 4688 | (method url-fetch) |
| 4689 | (uri (pypi-uri "docutils" version)) |
| 4690 | (sha256 |
| 4691 | (base32 |
| 4692 | "0ja8q6mdj6xv62jjw3phv8j5nfqi5x8hnfy4pqfcjcgz4b34k8sl")))) |
| 4693 | ;; tests contain Python 2 syntax. |
| 4694 | (arguments '(#:tests? #false)))) |
| 4695 | |
| 4696 | (define-public python-restructuredtext-lint |
| 4697 | (package |
| 4698 | (name "python-restructuredtext-lint") |
| 4699 | (version "1.3.0") |
| 4700 | (source |
| 4701 | (origin |
| 4702 | (method url-fetch) |
| 4703 | (uri (pypi-uri "restructuredtext-lint" version)) |
| 4704 | (sha256 |
| 4705 | (base32 |
| 4706 | "026rdy5h82ng4vqxk8fnprii9d6qxf7hkygiv0a8afjvdlsxmcwp")))) |
| 4707 | (build-system python-build-system) |
| 4708 | (arguments |
| 4709 | `(#:phases |
| 4710 | (modify-phases %standard-phases |
| 4711 | (delete 'check) |
| 4712 | (add-after 'install 'check |
| 4713 | (lambda* (#:key inputs outputs tests? #:allow-other-keys) |
| 4714 | (when tests? |
| 4715 | (add-installed-pythonpath inputs outputs) |
| 4716 | (invoke "nosetests" "-v")) |
| 4717 | #t))))) |
| 4718 | (propagated-inputs |
| 4719 | (list python-docutils)) |
| 4720 | (native-inputs |
| 4721 | (list python-nose)) |
| 4722 | (home-page "https://github.com/twolfson/restructuredtext-lint") |
| 4723 | (synopsis "reStructuredText linter") |
| 4724 | (description "This package provides a linter for the reStructuredText |
| 4725 | format.") |
| 4726 | (license license:unlicense))) |
| 4727 | |
| 4728 | (define-public python-click-repl |
| 4729 | (package |
| 4730 | (name "python-click-repl") |
| 4731 | (version "0.2.0") |
| 4732 | (source |
| 4733 | (origin |
| 4734 | (method git-fetch) ; no tests in PyPI release |
| 4735 | (uri (git-reference |
| 4736 | (url "https://github.com/click-contrib/click-repl") |
| 4737 | (commit version))) |
| 4738 | (file-name (git-file-name name version)) |
| 4739 | (sha256 |
| 4740 | (base32 "16ybsnwlj2jlqcfxflky8jz7i3nhrd3f6mvkpgs95618l8lx994i")))) |
| 4741 | (build-system python-build-system) |
| 4742 | (arguments |
| 4743 | `(#:phases |
| 4744 | (modify-phases %standard-phases |
| 4745 | (replace 'check |
| 4746 | (lambda* (#:key inputs outputs tests? #:allow-other-keys) |
| 4747 | (when tests? |
| 4748 | (add-installed-pythonpath inputs outputs) |
| 4749 | (invoke "python" "-m" "pytest"))))))) |
| 4750 | (native-inputs |
| 4751 | (list python-pytest)) |
| 4752 | (propagated-inputs |
| 4753 | (list python-click python-prompt-toolkit python-six)) |
| 4754 | (home-page "https://github.com/untitaker/click-repl") |
| 4755 | (synopsis "REPL plugin for Click") |
| 4756 | (description "This package provides a REPL plugin for Click.") |
| 4757 | (license license:expat))) |
| 4758 | |
| 4759 | (define-public python-doc8 |
| 4760 | (package |
| 4761 | (name "python-doc8") |
| 4762 | (version "0.8.0") |
| 4763 | (source |
| 4764 | (origin |
| 4765 | (method url-fetch) |
| 4766 | (uri (pypi-uri "doc8" version)) |
| 4767 | (sha256 |
| 4768 | (base32 |
| 4769 | "0hw5w8mpgsp51qg8nnq28p7y1jiksvz7a0axnn5bkgss3af9zy1d")))) |
| 4770 | (build-system python-build-system) |
| 4771 | (arguments |
| 4772 | `(#:phases |
| 4773 | (modify-phases %standard-phases |
| 4774 | (delete 'check) |
| 4775 | (add-after 'install 'check |
| 4776 | (lambda* (#:key inputs outputs tests? #:allow-other-keys) |
| 4777 | (when tests? |
| 4778 | (add-installed-pythonpath inputs outputs) |
| 4779 | (invoke "pytest" "-v")) |
| 4780 | #t))))) |
| 4781 | (propagated-inputs |
| 4782 | (list python-chardet python-docutils python-restructuredtext-lint |
| 4783 | python-six python-stevedore)) |
| 4784 | (native-inputs |
| 4785 | (list python-testtools python-pytest)) |
| 4786 | (home-page "https://launchpad.net/doc8") |
| 4787 | (synopsis |
| 4788 | "Style checker for Sphinx (or other) RST documentation") |
| 4789 | (description |
| 4790 | "Doc8 is an opinionated style checker for reStructured Text and plain |
| 4791 | text styles of documentation.") |
| 4792 | (license license:asl2.0))) |
| 4793 | |
| 4794 | (define-public python-pygments |
| 4795 | (package |
| 4796 | (name "python-pygments") |
| 4797 | (version "2.12.0") |
| 4798 | (source |
| 4799 | (origin |
| 4800 | (method url-fetch) |
| 4801 | (uri (pypi-uri "Pygments" version)) |
| 4802 | (sha256 |
| 4803 | (base32 |
| 4804 | "1sr6iqh21xi6p8aba4wa9pqfhjbbpcvn9jcsx0ggy4lniw8idcay")))) |
| 4805 | (build-system python-build-system) |
| 4806 | (arguments |
| 4807 | ;; FIXME: Tests require sphinx, which depends on this. |
| 4808 | '(#:tests? #f)) |
| 4809 | (home-page "https://pygments.org/") |
| 4810 | (synopsis "Syntax highlighting") |
| 4811 | (description |
| 4812 | "Pygments is a syntax highlighting package written in Python.") |
| 4813 | (license license:bsd-2))) |
| 4814 | |
| 4815 | (define-public python-pygments-github-lexers |
| 4816 | (package |
| 4817 | (name "python-pygments-github-lexers") |
| 4818 | (version "0.0.5") |
| 4819 | (source |
| 4820 | (origin |
| 4821 | (method url-fetch) |
| 4822 | (uri (pypi-uri "pygments-github-lexers" version)) |
| 4823 | (sha256 |
| 4824 | (base32 |
| 4825 | "0cz14clcc9z4pn79ll8hp3xzgsrfjscak5zfsvlgrz6ngkkmgjma")))) |
| 4826 | (build-system python-build-system) |
| 4827 | (propagated-inputs |
| 4828 | (list python-pygments)) |
| 4829 | (home-page "https://github.com/liluo/pygments-github-lexers") |
| 4830 | (synopsis "Pygments Github custom lexers") |
| 4831 | (description "This package installs Github custom lexers to Pygments.") |
| 4832 | (license license:bsd-3))) |
| 4833 | |
| 4834 | (define-public python-bump2version |
| 4835 | (package |
| 4836 | (name "python-bump2version") |
| 4837 | (version "1.0.1") |
| 4838 | (source |
| 4839 | (origin |
| 4840 | (method url-fetch) |
| 4841 | (uri (pypi-uri "bump2version" version)) |
| 4842 | (sha256 |
| 4843 | (base32 "1rinm4gv1fyh7xjv3v6r1p3zh5kl4ry2qifz5f7frx31mnzv4b3n")))) |
| 4844 | (build-system python-build-system) |
| 4845 | (arguments |
| 4846 | ;; XXX: Tests fail with "bumpversion: error: the following arguments are |
| 4847 | ;; required: --new-version". |
| 4848 | `(#:tests? #false)) |
| 4849 | (home-page "https://github.com/c4urself/bump2version") |
| 4850 | (synopsis "Version-bump your software with a single command!") |
| 4851 | (description |
| 4852 | "This package provides a small command line tool to simplify releasing |
| 4853 | software by updating all version strings in your source code by the correct |
| 4854 | increment. It also creates commits and tags.") |
| 4855 | (license license:expat))) |
| 4856 | |
| 4857 | (define-public python-bumpversion |
| 4858 | (package |
| 4859 | (name "python-bumpversion") |
| 4860 | (version "0.5.3") |
| 4861 | (source |
| 4862 | (origin |
| 4863 | (method url-fetch) |
| 4864 | (uri (pypi-uri "bumpversion" version)) |
| 4865 | (sha256 |
| 4866 | (base32 |
| 4867 | "0zn7694yfipxg35ikkfh7kvgl2fissha3dnqad2c5bvsvmrwhi37")))) |
| 4868 | (build-system python-build-system) |
| 4869 | (home-page "https://github.com/peritus/bumpversion") |
| 4870 | (synopsis "Tool to bump software version") |
| 4871 | (description "This tool provides a command-line interface (CLI) to bump a |
| 4872 | software version simply.") |
| 4873 | (license license:expat))) |
| 4874 | |
| 4875 | (define-public python-deprecated |
| 4876 | (package |
| 4877 | (name "python-deprecated") |
| 4878 | (version "1.2.13") |
| 4879 | (source |
| 4880 | (origin |
| 4881 | (method git-fetch) |
| 4882 | (uri (git-reference |
| 4883 | (url "https://github.com/tantale/deprecated") |
| 4884 | (commit (string-append "v" version)))) |
| 4885 | (file-name (git-file-name name version)) |
| 4886 | (sha256 |
| 4887 | (base32 |
| 4888 | "0v4ys9xr8lski2r98da99spsj6hjlnnqgnhhmyhrm66myiix885c")))) |
| 4889 | (build-system python-build-system) |
| 4890 | (arguments |
| 4891 | `(#:phases (modify-phases %standard-phases |
| 4892 | (replace 'check |
| 4893 | (lambda* (#:key tests? #:allow-other-keys) |
| 4894 | (when tests? |
| 4895 | (invoke "pytest"))))))) |
| 4896 | (propagated-inputs |
| 4897 | (list python-wrapt)) |
| 4898 | (native-inputs |
| 4899 | (list python-bumpversion python-pytest python-pytest-cov |
| 4900 | python-sphinx python-tox)) |
| 4901 | (home-page "https://github.com/tantale/deprecated") |
| 4902 | (synopsis "Python decorator to deprecate classes, functions or methods") |
| 4903 | (description "The @code{deprecated} decorator provides a convenient way to deprecate |
| 4904 | to deprecate classes, functions or methods.") |
| 4905 | (license license:expat))) |
| 4906 | |
| 4907 | (define-public python-pygithub |
| 4908 | (package |
| 4909 | (name "python-pygithub") |
| 4910 | (version "1.55") |
| 4911 | (source |
| 4912 | ;; We fetch from the Git repo because there are no tests in the PyPI |
| 4913 | ;; archive. |
| 4914 | (origin |
| 4915 | (method git-fetch) |
| 4916 | (uri (git-reference |
| 4917 | (url "https://github.com/PyGithub/PyGithub") |
| 4918 | (commit (string-append "v" version)))) |
| 4919 | (file-name (git-file-name name version)) |
| 4920 | (sha256 |
| 4921 | (base32 "082bxffpy4h97dsay3l75cpgfjj10kywkvicnm6xscwvah285q9y")))) |
| 4922 | (build-system python-build-system) |
| 4923 | (arguments |
| 4924 | `(#:phases |
| 4925 | (modify-phases %standard-phases |
| 4926 | (replace 'check |
| 4927 | (lambda* (#:key tests? #:allow-other-keys) |
| 4928 | (when tests? |
| 4929 | (invoke "pytest")) |
| 4930 | #t))))) |
| 4931 | (propagated-inputs |
| 4932 | (list python-cryptography python-deprecated python-pyjwt |
| 4933 | python-pynacl python-requests)) |
| 4934 | (native-inputs |
| 4935 | (list python-httpretty python-pytest)) |
| 4936 | (home-page "https://pygithub.readthedocs.io/en/latest/") |
| 4937 | (synopsis "Python library for the GitHub API") |
| 4938 | (description "This library allows managing GitHub resources such as |
| 4939 | repositories, user profiles, and organizations in your Python applications, |
| 4940 | using version 3 of the GitHub application programming interface (API).") |
| 4941 | (license license:lgpl3+))) |
| 4942 | |
| 4943 | (define-public python-rellu |
| 4944 | (package |
| 4945 | (name "python-rellu") |
| 4946 | (version "0.7") |
| 4947 | (source |
| 4948 | (origin |
| 4949 | (method url-fetch) |
| 4950 | (uri (pypi-uri "rellu" version)) |
| 4951 | (sha256 |
| 4952 | (base32 |
| 4953 | "1w0arpj1sm7vh29nrbnca4pnp8sx42l07r17inwqcjjf9bhng66x")))) |
| 4954 | (build-system python-build-system) |
| 4955 | (propagated-inputs |
| 4956 | (list python-invoke python-pygithub)) |
| 4957 | (home-page "https://github.com/robotframework/rellu") |
| 4958 | (synopsis "Utilities to create PyPI releases") |
| 4959 | (description "This collection of utilities contains tooling and templates |
| 4960 | to assist in creating releases on GitHub and publishing them on PyPI. It is |
| 4961 | designed to be used by Robot Framework and tools and libraries in its |
| 4962 | ecosystem, but can naturally be used also by other projects.") |
| 4963 | (license license:asl2.0))) |
| 4964 | |
| 4965 | (define-public python-robotframework |
| 4966 | (package |
| 4967 | (name "python-robotframework") |
| 4968 | (version "5.0.1") |
| 4969 | ;; There are no tests in the PyPI archive. |
| 4970 | (source |
| 4971 | (origin |
| 4972 | (method git-fetch) |
| 4973 | (uri (git-reference |
| 4974 | (url "https://github.com/robotframework/robotframework") |
| 4975 | (commit (string-append "v" version)))) |
| 4976 | (file-name (git-file-name name version)) |
| 4977 | (sha256 |
| 4978 | (base32 "0jjr71npzrm5mv16pya3m2dqaqgf6sc45yca5kfmc5lfislig5b8")) |
| 4979 | (patches (search-patches |
| 4980 | "python-robotframework-atest.patch" |
| 4981 | "python-robotframework-source-date-epoch.patch")))) |
| 4982 | (build-system python-build-system) |
| 4983 | (arguments |
| 4984 | (list |
| 4985 | #:modules '((guix build python-build-system) |
| 4986 | (guix build utils) |
| 4987 | (ice-9 ftw) |
| 4988 | (ice-9 match) |
| 4989 | (srfi srfi-26)) |
| 4990 | #:phases |
| 4991 | #~(modify-phases %standard-phases |
| 4992 | (add-after 'unpack 'delete-problematic-tests |
| 4993 | (lambda _ |
| 4994 | ;; Tests such as 'Tilde and username in path' rely on HOME and |
| 4995 | ;; USER being set, on top of the user's /etc/passwd home |
| 4996 | ;; directory not being '/', as is the case in the Guix build |
| 4997 | ;; container. |
| 4998 | (delete-file "atest/robot/standard_libraries/\ |
| 4999 | operating_system/path_expansion.robot"))) |
| 5000 | (add-before 'build 'build-and-install-doc |
| 5001 | (lambda* (#:key outputs #:allow-other-keys) |
| 5002 | (let ((doc (string-append (assoc-ref outputs "doc") |
| 5003 | "/share/doc/robotframework"))) |
| 5004 | (invoke "invoke" "library-docs" "all") |
| 5005 | (invoke "doc/userguide/ug2html.py" "dist") ;user guide |
| 5006 | (mkdir-p doc) |
| 5007 | (with-directory-excursion "dist" |
| 5008 | (define user-guide-dir |
| 5009 | (match (scandir "." (cut string-prefix? |
| 5010 | "robotframework-userguide-" <>)) |
| 5011 | ((dir) dir) |
| 5012 | (_ (error "could not find the user guide directory")))) |
| 5013 | (copy-recursively user-guide-dir doc))))) |
| 5014 | (replace 'check |
| 5015 | (lambda* (#:key native-inputs inputs tests? |
| 5016 | #:allow-other-keys) |
| 5017 | (when tests? |
| 5018 | ;; Some tests require timezone data. Otherwise, they |
| 5019 | ;; look up /etc/localtime, which doesn't exist, and |
| 5020 | ;; fail with: |
| 5021 | ;; |
| 5022 | ;; OverflowError: mktime argument out of range |
| 5023 | (setenv "TZDIR" |
| 5024 | (search-input-directory |
| 5025 | (or native-inputs inputs) "share/zoneinfo")) |
| 5026 | (setenv "TZ" "Europe/Paris") |
| 5027 | |
| 5028 | (format #t "Running unit tests...~%") |
| 5029 | (invoke "utest/run.py") |
| 5030 | |
| 5031 | (format #t "Running acceptance tests...~%") |
| 5032 | (invoke "xvfb-run" "atest/run.py"))))))) |
| 5033 | (native-inputs |
| 5034 | (list python-docutils |
| 5035 | python-jsonschema-next |
| 5036 | python-invoke |
| 5037 | python-lxml |
| 5038 | python-pygments |
| 5039 | python-pyyaml |
| 5040 | python-rellu |
| 5041 | `(,python "tk") ;used when building the HTML doc |
| 5042 | python-xmlschema |
| 5043 | scrot ;for taking screenshots |
| 5044 | tzdata-for-tests |
| 5045 | xvfb-run)) |
| 5046 | (outputs '("out" "doc")) |
| 5047 | (home-page "https://robotframework.org") |
| 5048 | (synopsis "Generic automation framework") |
| 5049 | (description "Robot Framework is a generic automation framework for |
| 5050 | acceptance testing, acceptance test driven development (ATDD), and robotic |
| 5051 | process automation (RPA).") |
| 5052 | (license license:asl2.0))) |
| 5053 | |
| 5054 | (define-public python-robotframework-datadriver |
| 5055 | (package |
| 5056 | (name "python-robotframework-datadriver") |
| 5057 | (version "1.6.1") |
| 5058 | (source |
| 5059 | (origin |
| 5060 | (method url-fetch) |
| 5061 | (uri (pypi-uri "robotframework-datadriver" version)) |
| 5062 | (sha256 |
| 5063 | (base32 "0mcyr3v98nvfnvffy096qp3jqslas7l8hh0j00lpi0mp12cd0qk9")))) |
| 5064 | (build-system python-build-system) |
| 5065 | (arguments |
| 5066 | `(#:phases |
| 5067 | (modify-phases %standard-phases |
| 5068 | (add-before 'check 'skip-problematic-tests |
| 5069 | (lambda _ |
| 5070 | ;; The test file 'tab-csv-file-name.tsv' contains special |
| 5071 | ;; characters for which there is no locale in the build |
| 5072 | ;; environment, causing one test to fail. |
| 5073 | (delete-file-recursively "atest/TestCases/csv_reader_config"))) |
| 5074 | (replace 'check |
| 5075 | (lambda* (#:key tests? #:allow-other-keys) |
| 5076 | (when tests? |
| 5077 | (with-directory-excursion "atest" |
| 5078 | (invoke "sh" "run_atest.sh")))))))) |
| 5079 | (native-inputs (list python-docutils |
| 5080 | python-robotframework-stacktrace)) |
| 5081 | (propagated-inputs (list python-openpyxl |
| 5082 | python-pandas |
| 5083 | python-pygments |
| 5084 | python-robotframework)) |
| 5085 | (home-page "https://github.com/Snooz82/robotframework-datadriver") |
| 5086 | (synopsis "Data-driven test extension for Robot Framework") |
| 5087 | (description "DataDriver is a data-driven extension for Robot Framework. |
| 5088 | DataDriver uses the Listener Interface of Robot Framework to create new test |
| 5089 | cases based on a data file that contains the test data. DataDriver supports |
| 5090 | data files in the CSV, XLS or XLSX formats.") |
| 5091 | (license license:asl2.0))) |
| 5092 | |
| 5093 | (define-public python-robotframework-lint |
| 5094 | ;; There is no properly tagged release; the commit below seems to correspond |
| 5095 | ;; to the 0.9 stable release available from PyPI. The tests are not |
| 5096 | ;; included in the PyPI archive, so we fetch the sources from the upstream |
| 5097 | ;; Git repo. |
| 5098 | (let ((commit "b0619ac58a8b1be125f9c98856a664594614570f") |
| 5099 | (revision "0")) |
| 5100 | (package |
| 5101 | (name "python-robotframework-lint") |
| 5102 | (version (git-version "1.1" ;version taken from 'rflint/version.py' |
| 5103 | revision commit)) |
| 5104 | (source |
| 5105 | (origin |
| 5106 | (method git-fetch) |
| 5107 | (uri (git-reference |
| 5108 | (url "https://github.com/boakley/robotframework-lint") |
| 5109 | (commit commit))) |
| 5110 | (file-name (git-file-name name version)) |
| 5111 | (sha256 |
| 5112 | (base32 |
| 5113 | "180npmvzqync25b2scs878gv8q4y17dsinxyjcc10bw22msfap6b")))) |
| 5114 | (build-system python-build-system) |
| 5115 | (arguments |
| 5116 | `(#:phases |
| 5117 | (modify-phases %standard-phases |
| 5118 | (replace 'check |
| 5119 | (lambda _ |
| 5120 | (invoke "python" "-m" "robot" "-A" |
| 5121 | "tests/conf/default.args" "tests")))))) |
| 5122 | (propagated-inputs |
| 5123 | (list python-robotframework)) |
| 5124 | (home-page "https://github.com/boakley/robotframework-lint/") |
| 5125 | (synopsis "Static analysis tool (linter) for Robot Framework") |
| 5126 | (description "This package provides the @code{rflint} command-line |
| 5127 | utility, a static analysis tool (linter) for Robot Framework source files.") |
| 5128 | (license license:asl2.0)))) |
| 5129 | |
| 5130 | (define-public python-robotframework-pabot |
| 5131 | (package |
| 5132 | (name "python-robotframework-pabot") |
| 5133 | (version "2.7.0") |
| 5134 | (source |
| 5135 | (origin |
| 5136 | ;; There are no tests in the PyPI archive. |
| 5137 | (method git-fetch) |
| 5138 | (uri (git-reference |
| 5139 | (url "https://github.com/mkorpela/pabot") |
| 5140 | (commit version))) |
| 5141 | (file-name (git-file-name name version)) |
| 5142 | (sha256 |
| 5143 | (base32 |
| 5144 | "0246vvyaxax0nzlrffvp9vg6mh5jmvbbm87azignf0gakjidr7nn")))) |
| 5145 | (build-system python-build-system) |
| 5146 | (arguments |
| 5147 | (list |
| 5148 | #:phases #~(modify-phases %standard-phases |
| 5149 | (replace 'check |
| 5150 | (lambda* (#:key tests? #:allow-other-keys) |
| 5151 | (when tests? |
| 5152 | (invoke "pytest" "-vv" "tests"))))))) |
| 5153 | (propagated-inputs |
| 5154 | (list python-robotframework python-robotframework-stacktrace)) |
| 5155 | (native-inputs |
| 5156 | (list python-pytest)) |
| 5157 | (home-page "https://pabot.org") |
| 5158 | (synopsis "Parallel test runner for Robot Framework") |
| 5159 | (description "Pabot is a parallel executor for Robot Framework tests.") |
| 5160 | (license license:asl2.0))) |
| 5161 | |
| 5162 | (define-public python-sshtunnel |
| 5163 | (package |
| 5164 | (name "python-sshtunnel") |
| 5165 | (version "0.4.0") |
| 5166 | (source (origin |
| 5167 | (method url-fetch) |
| 5168 | (uri (pypi-uri "sshtunnel" version)) |
| 5169 | (sha256 |
| 5170 | (base32 |
| 5171 | "1z7rdgpp9m36ysh9pfzrn3vyiaj05bkjvcjdhj8vz0fvfjkhxjz7")))) |
| 5172 | (build-system python-build-system) |
| 5173 | (arguments |
| 5174 | `(#:phases |
| 5175 | (modify-phases %standard-phases |
| 5176 | (replace 'check |
| 5177 | (lambda* (#:key tests? #:allow-other-keys) |
| 5178 | (when tests? (invoke "pytest" "-vv" "tests"))))))) |
| 5179 | (propagated-inputs (list python-paramiko)) |
| 5180 | (native-inputs (list openssh python-pytest)) |
| 5181 | (home-page "https://github.com/pahaz/sshtunnel") |
| 5182 | (synopsis "Python SSH tunnels library") |
| 5183 | (description "@code{sshtunnel} is a Python module for easily creating SSH |
| 5184 | tunnels in the background, using Python.") |
| 5185 | (license license:expat))) |
| 5186 | |
| 5187 | (define-public python-robotframework-sshtunnellibrary |
| 5188 | (package |
| 5189 | (name "python-robotframework-sshtunnellibrary") |
| 5190 | (version "1.0.0") |
| 5191 | (source (origin |
| 5192 | (method git-fetch) |
| 5193 | (uri (git-reference |
| 5194 | (url "https://github.com/C-Squad/robotframework-sshtunnellibrary") |
| 5195 | (commit (string-append "v" version)))) |
| 5196 | (file-name (git-file-name name version)) |
| 5197 | (sha256 |
| 5198 | (base32 |
| 5199 | "1vkkmkb8iql13xpbyj4hvnnmfgzqlr8rffgryp2082cadb3w7xrd")))) |
| 5200 | (build-system python-build-system) |
| 5201 | (arguments |
| 5202 | (list #:phases #~(modify-phases %standard-phases |
| 5203 | (replace 'check |
| 5204 | (lambda* (#:key tests? #:allow-other-keys) |
| 5205 | (when tests? |
| 5206 | (invoke "python" "-m" "unittest" |
| 5207 | "discover" "-s" "test"))))))) |
| 5208 | (propagated-inputs (list python-robotframework python-sshtunnel)) |
| 5209 | (home-page "https://github.com/C-Squad/robotframework-sshtunnellibrary") |
| 5210 | (synopsis "Alternative RobotFramework library for SSH tunnels") |
| 5211 | (description "SSHTunnelLibrary is an alternative RobotFramework |
| 5212 | library (to the more official one that comes from the |
| 5213 | @code{robotframework-sshlibrary} package) to support SSH tunnels.") |
| 5214 | (license license:asl2.0))) |
| 5215 | |
| 5216 | (define-public python-robotframework-stacktrace |
| 5217 | (package |
| 5218 | (name "python-robotframework-stacktrace") |
| 5219 | (version "0.4.1") |
| 5220 | (source |
| 5221 | (origin |
| 5222 | (method url-fetch) |
| 5223 | (uri (pypi-uri "robotframework-stacktrace" version)) |
| 5224 | (sha256 |
| 5225 | (base32 "19gnwr7da1zz9clhwsmvqfjf02d195i61lzpq4253dcsgrpb6v79")))) |
| 5226 | (build-system python-build-system) |
| 5227 | (arguments |
| 5228 | ;; The test suite fails (see: |
| 5229 | ;; https://github.com/MarketSquare/robotframework-stacktrace/issues/4). |
| 5230 | `(#:tests? #f |
| 5231 | #:phases |
| 5232 | (modify-phases %standard-phases |
| 5233 | (replace 'check |
| 5234 | (lambda* (#:key tests? #:allow-other-keys) |
| 5235 | (when tests? |
| 5236 | (with-directory-excursion "tests" |
| 5237 | (invoke "python" "-m" "robot" ".")))))))) |
| 5238 | (propagated-inputs (list python-robotframework)) |
| 5239 | (home-page "https://github.com/MarketSquare/robotframework-stacktrace") |
| 5240 | (synopsis "Robot Framework listener to print a stack trace on error") |
| 5241 | (description "StackTrace is a Robot Framework listener that prints a stack |
| 5242 | trace directly to the terminal to ease debugging.") |
| 5243 | (license license:asl2.0))) |
| 5244 | |
| 5245 | (define-public python-robotframework-sshlibrary |
| 5246 | (package |
| 5247 | (name "python-robotframework-sshlibrary") |
| 5248 | (version "3.8.0") |
| 5249 | ;; There are no tests in the PyPI archive. |
| 5250 | (source |
| 5251 | (origin |
| 5252 | (method git-fetch) |
| 5253 | (uri (git-reference |
| 5254 | (url "https://github.com/robotframework/SSHLibrary") |
| 5255 | (commit (string-append "v" version)))) |
| 5256 | (file-name (git-file-name name version)) |
| 5257 | (sha256 |
| 5258 | (base32 |
| 5259 | "1fn72hw7xacjjpl4dd6wynh2x63i9rk8iqhj3v640db21qpcnbkw")) |
| 5260 | (patches (search-patches |
| 5261 | "python-robotframework-sshlibrary-rf5-compat.patch")))) |
| 5262 | (build-system python-build-system) |
| 5263 | (arguments |
| 5264 | `(#:phases |
| 5265 | (modify-phases %standard-phases |
| 5266 | (add-before 'build 'build-and-install-doc |
| 5267 | (lambda* (#:key outputs #:allow-other-keys) |
| 5268 | (let ((doc (string-append |
| 5269 | (assoc-ref outputs "doc") |
| 5270 | "/share/doc/robotframework-sshlibrary"))) |
| 5271 | (invoke "chmod" "-R" "+w" "docs") |
| 5272 | (invoke "invoke" "kw-docs" "project-docs") |
| 5273 | (mkdir-p doc) |
| 5274 | (for-each delete-file (find-files "docs" "\\.rst")) |
| 5275 | (copy-recursively "docs" doc)))) |
| 5276 | (replace 'check |
| 5277 | (lambda* (#:key tests? #:allow-other-keys) |
| 5278 | (when tests? |
| 5279 | ;; Some tests require an SSH server; we remove them. |
| 5280 | (delete-file "utest/test_client_api.py") |
| 5281 | (delete-file "utest/test_scp.py") |
| 5282 | (invoke "python" "utest/run.py"))))))) |
| 5283 | (propagated-inputs |
| 5284 | (list python-robotframework python-paramiko python-scp)) |
| 5285 | (native-inputs |
| 5286 | (list openssh |
| 5287 | which |
| 5288 | ;; To generate the documentation |
| 5289 | python-docutils |
| 5290 | python-invoke |
| 5291 | python-pygments |
| 5292 | python-rellu)) |
| 5293 | (outputs '("out" "doc")) |
| 5294 | (home-page "https://github.com/robotframework/SSHLibrary") |
| 5295 | (synopsis "Robot Framework library for SSH and SFTP") |
| 5296 | (description "SSHLibrary is a Robot Framework library providing support |
| 5297 | for SSH and SFTP. It has the following main usages: |
| 5298 | @itemize @bullet |
| 5299 | @item Executing commands on the remote machine, either blocking or non-blocking. |
| 5300 | @item Writing and reading in an interactive shell. |
| 5301 | @item Transferring files and directories over SFTP. |
| 5302 | @item Ensuring that files and directories exist on the remote machine. |
| 5303 | @end itemize") |
| 5304 | (license license:asl2.0))) |
| 5305 | |
| 5306 | (define-public python-robotframework-pythonlibcore |
| 5307 | (package |
| 5308 | (name "python-robotframework-pythonlibcore") |
| 5309 | (version "3.0.0") |
| 5310 | (source |
| 5311 | (origin |
| 5312 | (method git-fetch) ;no tests in pypi archive |
| 5313 | (uri (git-reference |
| 5314 | (url "https://github.com/robotframework/PythonLibCore") |
| 5315 | (commit (string-append "v" version)))) |
| 5316 | (file-name (git-file-name name version)) |
| 5317 | (sha256 |
| 5318 | (base32 |
| 5319 | "0v89v8va65l6inh0fb34qgxawx6p29pnrmw4n5941yzdi3804rc4")))) |
| 5320 | (build-system python-build-system) |
| 5321 | (arguments |
| 5322 | `(#:phases (modify-phases %standard-phases |
| 5323 | (replace 'check |
| 5324 | (lambda* (#:key tests? #:allow-other-keys) |
| 5325 | (when tests? |
| 5326 | (invoke "utest/run.py"))))))) |
| 5327 | (native-inputs |
| 5328 | (list python-pytest python-pytest-cov python-pytest-mockito |
| 5329 | python-robotframework)) |
| 5330 | (home-page "https://github.com/robotframework/PythonLibCore") |
| 5331 | (synopsis "Robot Framework Python library tools") |
| 5332 | (description "PythonLibCore provides tools for creating larger test |
| 5333 | libraries for Robot Framework using Python. The Robot Framework hybrid and |
| 5334 | dynamic library APIs give more flexibility for library than the static library |
| 5335 | API, but they also set requirements for libraries which need to be implemented |
| 5336 | in the library side. PythonLibCore eases the problem by providing a simpler |
| 5337 | interface and by handling all the requirements towards the Robot Framework |
| 5338 | library APIs.") |
| 5339 | (license license:asl2.0))) |
| 5340 | |
| 5341 | (define-public python-robotframework-seleniumlibrary |
| 5342 | (package |
| 5343 | (name "python-robotframework-seleniumlibrary") |
| 5344 | (version "5.1.3") |
| 5345 | (source |
| 5346 | (origin |
| 5347 | (method url-fetch) |
| 5348 | (uri (pypi-uri "robotframework-seleniumlibrary" version)) |
| 5349 | (sha256 |
| 5350 | (base32 "1dihrbcid9i7daw2qy6h3xsvwaxzmyip820jw5z11n60qrl006pm")))) |
| 5351 | (build-system python-build-system) |
| 5352 | ;; XXX: Tests require ungoogled-chromium, but the chromium module would |
| 5353 | ;; introduce a cycle if imported here. |
| 5354 | (propagated-inputs |
| 5355 | (list python-robotframework python-robotframework-pythonlibcore |
| 5356 | python-selenium)) |
| 5357 | (home-page "https://github.com/robotframework/SeleniumLibrary") |
| 5358 | (synopsis "Web testing library for Robot Framework") |
| 5359 | (description "SeleniumLibrary is a web testing library for Robot Framework |
| 5360 | that utilizes the Selenium tool internally.") |
| 5361 | (license license:asl2.0))) |
| 5362 | |
| 5363 | (define-public python-robotframework-seleniumscreenshots |
| 5364 | (package |
| 5365 | (name "python-robotframework-seleniumscreenshots") |
| 5366 | (version "0.9.5") |
| 5367 | (source |
| 5368 | (origin |
| 5369 | (method url-fetch) |
| 5370 | (uri (pypi-uri "robotframework-seleniumscreenshots" version)) |
| 5371 | (sha256 |
| 5372 | (base32 "05qv323hvjmy62h33ryrjaa9k1hyvp8hq5qnj8j1x3ap2ci3q3s0")))) |
| 5373 | (build-system python-build-system) |
| 5374 | (arguments |
| 5375 | ;; XXX: The tests require a relatively complicated setup configured in |
| 5376 | ;; their CI with Nix (!). |
| 5377 | `(#:tests? #f)) |
| 5378 | (propagated-inputs |
| 5379 | (list python-robotframework python-robotframework-seleniumlibrary)) |
| 5380 | (home-page "https://github.com/MarketSquare/robotframework-seleniumscreenshots") |
| 5381 | (synopsis "Robot Framework library for annotating and cropping screenshots") |
| 5382 | (description "The SeleniumScreenshots library for Robot Framework provides |
| 5383 | keywords for annotating and cropping screenshots taken with SeleniumLibrary. |
| 5384 | It is useful for scripting automatically updated screenshots for documentation |
| 5385 | or for visual regression testing purposes.") |
| 5386 | (license license:bsd-3))) |
| 5387 | |
| 5388 | (define-public python-rstr |
| 5389 | (package |
| 5390 | (name "python-rstr") |
| 5391 | (version "2.2.6") |
| 5392 | (source |
| 5393 | (origin |
| 5394 | (method url-fetch) |
| 5395 | (uri (pypi-uri "rstr" version)) |
| 5396 | (sha256 |
| 5397 | (base32 |
| 5398 | "197dw8mbq0pjjz1l6h1ksi62vgn7x55d373ch74y06744qiq5sjx")))) |
| 5399 | (build-system python-build-system) |
| 5400 | (home-page "https://github.com/leapfrogonline/rstr") |
| 5401 | (synopsis "Generate random strings in Python") |
| 5402 | (description "This package provides a python module for generating |
| 5403 | random strings of various types. It could be useful for fuzz testing, |
| 5404 | generating dummy data, or other applications. It has no dependencies |
| 5405 | outside the standard library.") |
| 5406 | (license license:bsd-3))) |
| 5407 | |
| 5408 | (define-public python-scp |
| 5409 | (package |
| 5410 | (name "python-scp") |
| 5411 | (version "0.13.3") |
| 5412 | (source |
| 5413 | (origin |
| 5414 | (method url-fetch) |
| 5415 | (uri (pypi-uri "scp" version)) |
| 5416 | (sha256 |
| 5417 | (base32 "1m2v09m407p097cy3xy5rxicqfzrqjwf8v5rd4qhfqkk7lllimwb")))) |
| 5418 | (build-system python-build-system) |
| 5419 | (arguments |
| 5420 | '(#:tests? #f)) ;tests require an SSH server |
| 5421 | (propagated-inputs |
| 5422 | (list python-paramiko)) |
| 5423 | (home-page "https://github.com/jbardin/scp.py") |
| 5424 | (synopsis "SCP protocol module for Python and Paramiko") |
| 5425 | (description "The scp module extends the Paramiko library to send and |
| 5426 | receive files via the SCP1 protocol, as implemented by the OpenSSH |
| 5427 | @command{scp} program.") |
| 5428 | (license license:gpl2+))) |
| 5429 | |
| 5430 | (define-public python-rst.linker |
| 5431 | (package |
| 5432 | (name "python-rst.linker") |
| 5433 | (version "1.11") |
| 5434 | (source |
| 5435 | (origin |
| 5436 | (method url-fetch) |
| 5437 | (uri (pypi-uri "rst.linker" version)) |
| 5438 | (sha256 |
| 5439 | (base32 "0pqsfqqx8h0pq21k8l3k62kznrgaj2ala93c64s4d9rpbr4mgkd2")))) |
| 5440 | (build-system python-build-system) |
| 5441 | (propagated-inputs |
| 5442 | (list python-dateutil python-six)) |
| 5443 | (native-inputs |
| 5444 | (list python-setuptools-scm)) |
| 5445 | ;; Test would require path.py, which would introduce a cyclic dependence. |
| 5446 | (arguments `(#:tests? #f)) |
| 5447 | ;; Note: As of version 1.7 the documentation is not worth building. |
| 5448 | (home-page "https://github.com/jaraco/rst.linker") |
| 5449 | (synopsis "Sphinx plugin to add links and timestamps") |
| 5450 | (description "rst.linker automatically replaces text by a |
| 5451 | reStructuredText external reference or timestamps. It's primary purpose is to |
| 5452 | augment the changelog, but it can be used for other documents, too.") |
| 5453 | (license license:expat))) |
| 5454 | |
| 5455 | (define-public python-sshpubkeys |
| 5456 | (package |
| 5457 | (name "python-sshpubkeys") |
| 5458 | (version "3.1.0") |
| 5459 | (home-page "https://github.com/ojarva/python-sshpubkeys") |
| 5460 | (source (origin |
| 5461 | (method git-fetch) |
| 5462 | (uri (git-reference |
| 5463 | (url home-page) |
| 5464 | (commit (string-append "v" version)))) |
| 5465 | (file-name (git-file-name name version)) |
| 5466 | (sha256 |
| 5467 | (base32 |
| 5468 | "1h4gwmcfn84kkqh83km1vfz8sc5kr2g4gzgzmr8gz704jmqiv7nq")))) |
| 5469 | (build-system python-build-system) |
| 5470 | (propagated-inputs |
| 5471 | (list python-cryptography python-ecdsa)) |
| 5472 | (synopsis "OpenSSH public key parser") |
| 5473 | (description |
| 5474 | "This package provides a library for parsing and validating OpenSSH |
| 5475 | public key files.") |
| 5476 | (license license:bsd-3))) |
| 5477 | |
| 5478 | (define-public python-feedgenerator |
| 5479 | (package |
| 5480 | (name "python-feedgenerator") |
| 5481 | (version "1.9") |
| 5482 | (source |
| 5483 | (origin |
| 5484 | (method url-fetch) |
| 5485 | (uri (pypi-uri "feedgenerator" version)) |
| 5486 | (sha256 |
| 5487 | (base32 |
| 5488 | "01mirwkm7xfx539hmvj7g9da1j51gw5lsx74dr0glizskjm5vq2s")) |
| 5489 | (modules '((guix build utils))) |
| 5490 | (snippet |
| 5491 | '(begin |
| 5492 | ;; Remove pre-compiled .pyc files from source. |
| 5493 | (for-each delete-file-recursively |
| 5494 | (find-files "." "__pycache__" #:directories? #t)) |
| 5495 | (for-each delete-file (find-files "." "\\.pyc$")) |
| 5496 | #t)))) |
| 5497 | (build-system python-build-system) |
| 5498 | (propagated-inputs |
| 5499 | (list python-pytz python-six)) |
| 5500 | (home-page "https://github.com/getpelican/feedgenerator") |
| 5501 | (synopsis |
| 5502 | "Standalone version of Django's Atom/RSS feed generator") |
| 5503 | (description |
| 5504 | "Feedgenerator-py3k is a standalone version of Django's feedgenerator, |
| 5505 | which can produce feeds in RSS 2.0, RSS 0.91, and Atom formats.") |
| 5506 | (license license:bsd-3))) |
| 5507 | |
| 5508 | (define-public python-lsp-jsonrpc |
| 5509 | (package |
| 5510 | (name "python-lsp-jsonrpc") |
| 5511 | (version "1.0.0") |
| 5512 | (source |
| 5513 | (origin |
| 5514 | (method url-fetch) |
| 5515 | (uri (pypi-uri "python-lsp-jsonrpc" version)) |
| 5516 | (sha256 |
| 5517 | (base32 |
| 5518 | "1gb0fsamxndhplx25v8m0b3k7aknzy454fpa0qsqsqnv6c3igv3v")))) |
| 5519 | (build-system python-build-system) |
| 5520 | (native-inputs |
| 5521 | (list python-mock python-pytest)) |
| 5522 | (propagated-inputs |
| 5523 | (list python-ujson)) |
| 5524 | (home-page "https://github.com/python-lsp/python-lsp-jsonrpc") |
| 5525 | (synopsis "JSON RPC 2.0 server library") |
| 5526 | (description |
| 5527 | "This package provides a JSON RPC 2.0 server library for Python.") |
| 5528 | (license license:expat))) |
| 5529 | |
| 5530 | (define-public python-jsonrpc-server |
| 5531 | (deprecated-package "python-jsonrpc-server" python-lsp-jsonrpc)) |
| 5532 | |
| 5533 | (define-public python-pydantic |
| 5534 | (package |
| 5535 | (name "python-pydantic") |
| 5536 | (version "1.9.1") |
| 5537 | (source |
| 5538 | (origin |
| 5539 | (method git-fetch) |
| 5540 | (uri (git-reference |
| 5541 | (url "https://github.com/samuelcolvin/pydantic") |
| 5542 | (commit (string-append "v" version)))) |
| 5543 | (file-name (git-file-name name version)) |
| 5544 | (sha256 |
| 5545 | (base32 "1406kgppqa7524mxllsipj7gb8fn7pwf51l11lqik59xjhsfv94f")))) |
| 5546 | (build-system python-build-system) |
| 5547 | (arguments |
| 5548 | '(#:phases |
| 5549 | (modify-phases %standard-phases |
| 5550 | (replace 'check |
| 5551 | (lambda _ (invoke "pytest" "-vv")))))) |
| 5552 | (native-inputs |
| 5553 | (list python-pytest python-pytest-mock)) |
| 5554 | (propagated-inputs |
| 5555 | (list python-typing-extensions)) |
| 5556 | (home-page "https://github.com/samuelcolvin/pydantic") |
| 5557 | (synopsis "Python data validation and settings management") |
| 5558 | (description |
| 5559 | "Pydantic enforces type hints at runtime, and provides user friendly |
| 5560 | errors when data is invalid.") |
| 5561 | (license license:expat))) |
| 5562 | |
| 5563 | (define-public python-pydantic-cli |
| 5564 | (package |
| 5565 | (name "python-pydantic-cli") |
| 5566 | (version "4.3.0") |
| 5567 | (source |
| 5568 | (origin |
| 5569 | (method git-fetch) ;for tests |
| 5570 | (uri (git-reference |
| 5571 | (url "https://github.com/mpkocher/pydantic-cli") |
| 5572 | (commit (string-append "v" version)))) |
| 5573 | (file-name (git-file-name name version)) |
| 5574 | (sha256 |
| 5575 | (base32 |
| 5576 | "1v4dx6n60rbsan5zpw2rgdih7lb3h0xclagn1p6zfwl0r9l9cvym")))) |
| 5577 | (build-system python-build-system) |
| 5578 | (propagated-inputs |
| 5579 | (list python-pydantic)) |
| 5580 | (native-inputs |
| 5581 | (list python-black |
| 5582 | python-mypy |
| 5583 | python-pytest)) |
| 5584 | (home-page "https://github.com/mpkocher/pydantic-cli") |
| 5585 | (synopsis "Turn Pydantic defined data models into CLI tools") |
| 5586 | (description |
| 5587 | "@code{python-pydantic} enables specifying @acronym{CLI, Command Line |
| 5588 | Interfaces} via data models provided in the JSON format.") |
| 5589 | (license license:expat))) |
| 5590 | |
| 5591 | (define-public python-pydocstyle |
| 5592 | (package |
| 5593 | (name "python-pydocstyle") |
| 5594 | (version "3.0.0") |
| 5595 | (source |
| 5596 | (origin |
| 5597 | (method url-fetch) |
| 5598 | (uri (pypi-uri "pydocstyle" version)) |
| 5599 | (sha256 |
| 5600 | (base32 |
| 5601 | "1m1xv9clkg9lgzyza6dnj359z04vh5g0h49nhzghv7lg81gchhap")))) |
| 5602 | (build-system python-build-system) |
| 5603 | (propagated-inputs |
| 5604 | (list python-six python-snowballstemmer)) |
| 5605 | (home-page |
| 5606 | "https://github.com/PyCQA/pydocstyle/") |
| 5607 | (synopsis "Python docstring style checker") |
| 5608 | (description |
| 5609 | "This package provides a style checker for the Python Language |
| 5610 | Server (PLS).") |
| 5611 | (license license:expat))) |
| 5612 | |
| 5613 | (define-public python-lsp-server |
| 5614 | (package |
| 5615 | (name "python-lsp-server") |
| 5616 | (version "1.3.3") |
| 5617 | (source |
| 5618 | (origin |
| 5619 | (method url-fetch) |
| 5620 | (uri (pypi-uri "python-lsp-server" version)) |
| 5621 | (sha256 |
| 5622 | (base32 |
| 5623 | "0h6wxzmm6qjfwkkn3mnzn1fpmcp23fpbk74bi8p540q1nzccqj0v")))) |
| 5624 | (build-system python-build-system) |
| 5625 | (arguments |
| 5626 | `(#:phases |
| 5627 | (modify-phases %standard-phases |
| 5628 | (add-before 'check 'set-HOME |
| 5629 | (lambda _ (setenv "HOME" "/tmp"))) |
| 5630 | (replace 'check |
| 5631 | (lambda _ |
| 5632 | ;; Disable failing test. |
| 5633 | (invoke "python" "-m" "pytest" "-k" |
| 5634 | "not test_pyqt_completion")))))) |
| 5635 | (propagated-inputs |
| 5636 | (list python-autopep8 |
| 5637 | python-pydocstyle |
| 5638 | python-flake8 |
| 5639 | python-future |
| 5640 | python-jedi |
| 5641 | python-lsp-jsonrpc |
| 5642 | python-pluggy |
| 5643 | python-pycodestyle |
| 5644 | python-pyflakes |
| 5645 | python-rope |
| 5646 | python-ujson |
| 5647 | python-yapf)) |
| 5648 | (native-inputs |
| 5649 | (list python-coverage |
| 5650 | python-flaky |
| 5651 | python-matplotlib |
| 5652 | python-mock |
| 5653 | python-numpy |
| 5654 | python-pandas |
| 5655 | python-pylint |
| 5656 | python-pytest |
| 5657 | python-pytest-cov |
| 5658 | python-versioneer)) |
| 5659 | (home-page "https://github.com/python-lsp/python-lsp-server") |
| 5660 | (synopsis "Python implementation of the Language Server Protocol") |
| 5661 | (description |
| 5662 | "The Python Language Server @command{pylsp} is an implementation of the |
| 5663 | Python 3 language specification for the Language Server Protocol (LSP). |
| 5664 | This tool is used in text editing environments to provide a complete |
| 5665 | and integrated feature-set for programming Python effectively.") |
| 5666 | (license license:expat))) |
| 5667 | |
| 5668 | (define-public python-language-server |
| 5669 | (deprecated-package "python-language-server" python-lsp-server)) |
| 5670 | |
| 5671 | (define-public python-pathspec |
| 5672 | (package |
| 5673 | (name "python-pathspec") |
| 5674 | (version "0.9.0") |
| 5675 | (source |
| 5676 | (origin |
| 5677 | (method url-fetch) |
| 5678 | (uri (pypi-uri "pathspec" version)) |
| 5679 | (sha256 |
| 5680 | (base32 |
| 5681 | "1cdbdb3s6ldnjpwbi0bgl0xlmw4mbfxk08bbdxc3srx26na4jr75")))) |
| 5682 | (build-system python-build-system) |
| 5683 | (home-page "https://github.com/cpburnz/python-path-specification") |
| 5684 | (synopsis "Utility library for gitignore style pattern matching of file paths") |
| 5685 | (description |
| 5686 | "This package provides a utility library for gitignore style pattern |
| 5687 | matching of file paths.") |
| 5688 | (license license:mpl2.0))) |
| 5689 | |
| 5690 | (define-public python-black |
| 5691 | (package |
| 5692 | (name "python-black") |
| 5693 | (version "22.3.0") |
| 5694 | (source |
| 5695 | (origin |
| 5696 | (method url-fetch) |
| 5697 | (uri (pypi-uri "black" version)) |
| 5698 | (sha256 |
| 5699 | (base32 |
| 5700 | "0yfahlqc7dsdp1js0cbv706apldnfnlbal9b53cww8n0hs40n0im")))) |
| 5701 | (build-system python-build-system) |
| 5702 | (arguments |
| 5703 | `(#:phases |
| 5704 | (modify-phases %standard-phases |
| 5705 | (add-after 'patch-source-shebangs 'use-absolute-file-names |
| 5706 | (lambda* (#:key native-inputs inputs #:allow-other-keys) |
| 5707 | (let* ((inpts (or native-inputs inputs)) |
| 5708 | (python3 (search-input-file inpts "/bin/python3"))) |
| 5709 | (substitute* (find-files "tests" "\\.py$") |
| 5710 | (("#!/usr/bin/env python3(\\.[0-9]+)?" _ minor-version) |
| 5711 | (string-append "#!" python3 (if (string? minor-version) |
| 5712 | minor-version |
| 5713 | ""))))))) |
| 5714 | (replace 'check |
| 5715 | (lambda* (#:key tests? #:allow-other-keys) |
| 5716 | (when tests? (invoke "pytest" "-vv"))))))) |
| 5717 | (propagated-inputs |
| 5718 | (list python-click |
| 5719 | python-attrs |
| 5720 | python-appdirs |
| 5721 | python-pathspec |
| 5722 | python-mypy-extensions |
| 5723 | python-platformdirs |
| 5724 | python-regex |
| 5725 | python-tomli |
| 5726 | python-typed-ast |
| 5727 | python-typing-extensions)) |
| 5728 | (native-inputs |
| 5729 | (list python-pytest python-pytest-aiohttp python-setuptools-scm)) |
| 5730 | (home-page "https://github.com/psf/black") |
| 5731 | (synopsis "The uncompromising code formatter") |
| 5732 | (description "Black is the uncompromising Python code formatter.") |
| 5733 | (license license:expat))) |
| 5734 | |
| 5735 | (define-public python-black-macchiato |
| 5736 | (package |
| 5737 | (name "python-black-macchiato") |
| 5738 | (version "1.3.0") |
| 5739 | (source |
| 5740 | (origin |
| 5741 | (method url-fetch) |
| 5742 | (uri (pypi-uri "black-macchiato" version)) |
| 5743 | (sha256 |
| 5744 | (base32 |
| 5745 | "1drp5p697ni1xn5y2lbjpalgpkzy2i4cyxjj5pk4dxr0vk97dd7i")))) |
| 5746 | (build-system python-build-system) |
| 5747 | (propagated-inputs |
| 5748 | (list python-black)) |
| 5749 | (home-page "https://github.com/wbolster/black-macchiato") |
| 5750 | (synopsis "Partial @code{python-black} formatting") |
| 5751 | (description |
| 5752 | "This package is built on top the @{python-black} code formatter to |
| 5753 | enable formatting of partial files.") |
| 5754 | (license license:bsd-3))) |
| 5755 | |
| 5756 | (define-public python-blinker |
| 5757 | (package |
| 5758 | (name "python-blinker") |
| 5759 | (version "1.4") |
| 5760 | (source |
| 5761 | (origin |
| 5762 | (method url-fetch) |
| 5763 | (uri (pypi-uri "blinker" version)) |
| 5764 | (sha256 |
| 5765 | (base32 |
| 5766 | "1dpq0vb01p36jjwbhhd08ylvrnyvcc82yxx3mwjx6awrycjyw6j7")))) |
| 5767 | (build-system python-build-system) |
| 5768 | (home-page "https://pythonhosted.org/blinker/") |
| 5769 | (synopsis "Fast, simple object-to-object and broadcast signaling") |
| 5770 | (description |
| 5771 | "Blinker provides a fast dispatching system that allows any number of |
| 5772 | interested parties to subscribe to events, or \"signals\".") |
| 5773 | (license license:expat))) |
| 5774 | |
| 5775 | (define-public pelican |
| 5776 | (package |
| 5777 | (name "pelican") |
| 5778 | (version "4.7.2") |
| 5779 | (source |
| 5780 | (origin |
| 5781 | (method url-fetch) |
| 5782 | (uri (pypi-uri "pelican" version)) |
| 5783 | (sha256 |
| 5784 | (base32 "0m1kndc98hhnlq0yl05f4lzccw555pkxnrajj6lks18yh491kw8w")))) |
| 5785 | (build-system python-build-system) |
| 5786 | (inputs |
| 5787 | (list python-blinker |
| 5788 | python-dateutil |
| 5789 | ;; Ignoring `guix lint` warning as python-docutils is used to support |
| 5790 | ;; reStructuredText processing at runtime. |
| 5791 | python-docutils |
| 5792 | python-feedgenerator |
| 5793 | python-jinja2 |
| 5794 | python-markdown |
| 5795 | python-pygments |
| 5796 | python-pytz |
| 5797 | python-rich |
| 5798 | python-unidecode)) |
| 5799 | (home-page "https://blog.getpelican.com/") |
| 5800 | (arguments |
| 5801 | `(;; XXX Requires a lot more packages to do unit tests :P |
| 5802 | #:tests? #f)) |
| 5803 | (synopsis "Python-based static site publishing system") |
| 5804 | (description |
| 5805 | "Pelican is a tool to generate a static blog from reStructuredText, |
| 5806 | Markdown input files, and more. Pelican uses Jinja2 for templating |
| 5807 | and is very extensible.") |
| 5808 | (license license:agpl3+))) |
| 5809 | |
| 5810 | (define-public mallard-ducktype |
| 5811 | (package |
| 5812 | (name "mallard-ducktype") |
| 5813 | (version "1.0.2") |
| 5814 | (source |
| 5815 | (origin |
| 5816 | (method git-fetch) |
| 5817 | ;; git-reference because tests are not included in pypi source tarball |
| 5818 | ;; https://issues.guix.gnu.org/issue/36755#2 |
| 5819 | (uri (git-reference |
| 5820 | (url "https://github.com/projectmallard/mallard-ducktype") |
| 5821 | (commit version))) |
| 5822 | (file-name (git-file-name name version)) |
| 5823 | (sha256 |
| 5824 | (base32 |
| 5825 | "1jk9bfz7g04ip78s03b0xak6d54rj4h9zpgadkziy1ji216g6y4c")))) |
| 5826 | (build-system python-build-system) |
| 5827 | (arguments |
| 5828 | '(#:phases |
| 5829 | (modify-phases %standard-phases |
| 5830 | (replace 'check |
| 5831 | (lambda _ |
| 5832 | (with-directory-excursion "tests" |
| 5833 | (invoke "sh" "runtests"))))))) |
| 5834 | (home-page "http://projectmallard.org") |
| 5835 | (synopsis "Convert Ducktype to Mallard documentation markup") |
| 5836 | (description |
| 5837 | "Ducktype is a lightweight syntax that can represent all the semantics |
| 5838 | of the Mallard XML documentation system. Ducktype files can be converted to |
| 5839 | Mallard using the @command{ducktype} tool. The yelp-tools package |
| 5840 | provides additional functionality on the produced Mallard documents.") |
| 5841 | (license license:expat))) |
| 5842 | |
| 5843 | (define-public python-cython |
| 5844 | (package |
| 5845 | (name "python-cython") |
| 5846 | (version "0.29.32") |
| 5847 | (source |
| 5848 | (origin |
| 5849 | (method url-fetch) |
| 5850 | (uri (pypi-uri "Cython" version)) |
| 5851 | (sha256 |
| 5852 | (base32 "1xqsihpqnfal29nb5kmw8z71nd4jbsnbz7p3lkr094xpb13wycw7")))) |
| 5853 | (build-system python-build-system) |
| 5854 | ;; we need the full python package and not just the python-wrapper |
| 5855 | ;; because we need libpython3.3m.so |
| 5856 | (inputs |
| 5857 | (list python)) |
| 5858 | (arguments |
| 5859 | `(#:phases |
| 5860 | (modify-phases %standard-phases |
| 5861 | (add-before 'check 'set-HOME |
| 5862 | ;; some tests require access to "$HOME/.cython" |
| 5863 | (lambda _ (setenv "HOME" "/tmp"))) |
| 5864 | (replace 'check |
| 5865 | (lambda* (#:key tests? #:allow-other-keys) |
| 5866 | ;; Disable compiler optimizations to greatly reduce the running |
| 5867 | ;; time of the test suite. |
| 5868 | (setenv "CFLAGS" "-O0") |
| 5869 | |
| 5870 | (when tests? |
| 5871 | (invoke "python" "runtests.py" "-vv" |
| 5872 | "-j" (number->string (parallel-job-count)) |
| 5873 | ;; XXX: On 32-bit architectures, running the parallel tests |
| 5874 | ;; fails on many-core systems, see |
| 5875 | ;; <https://github.com/cython/cython/issues/2807>. |
| 5876 | ,@(if (not (target-64bit?)) |
| 5877 | '("-x" "run.parallel") |
| 5878 | '()) |
| 5879 | ;; This test fails when running on 24 cores. |
| 5880 | "-x" "cpp_stl_conversion"))))))) |
| 5881 | (home-page "https://cython.org/") |
| 5882 | (synopsis "C extensions for Python") |
| 5883 | (description "Cython is an optimising static compiler for both the Python |
| 5884 | programming language and the extended Cython programming language. It makes |
| 5885 | writing C extensions for Python as easy as Python itself.") |
| 5886 | (license license:asl2.0))) |
| 5887 | |
| 5888 | (define-public python-cython-3 |
| 5889 | (package |
| 5890 | (inherit python-cython) |
| 5891 | ;; Cython 3 is not officially released yet, so distinguish the name |
| 5892 | ;; for now. |
| 5893 | (name "python-cython-next") |
| 5894 | (version "3.0.0a10") |
| 5895 | (source (origin |
| 5896 | (method url-fetch) |
| 5897 | (uri (pypi-uri "Cython" version)) |
| 5898 | (sha256 |
| 5899 | (base32 |
| 5900 | "17fqacrpis05w1rpi7d7sbimrk20xf8h6d3vrz5nf6ix3899abil")))) |
| 5901 | (properties '()))) |
| 5902 | |
| 5903 | ;; NOTE: when upgrading numpy please make sure that python-numba, |
| 5904 | ;; python-pandas and python-scipy still build, as these three packages are |
| 5905 | ;; often used together. |
| 5906 | (define-public python-numpy |
| 5907 | (package |
| 5908 | (name "python-numpy") |
| 5909 | (version "1.21.6") |
| 5910 | (source |
| 5911 | (origin |
| 5912 | (method url-fetch) |
| 5913 | (uri (string-append |
| 5914 | "https://github.com/numpy/numpy/releases/download/v" |
| 5915 | version "/numpy-" version ".tar.gz")) |
| 5916 | (sha256 |
| 5917 | (base32 |
| 5918 | "0b0c5y35rd3mvwfk5is1d5ppfw9nl4d2rgx9xkwh1p0w394wdvyl")))) |
| 5919 | (build-system python-build-system) |
| 5920 | (arguments |
| 5921 | (list |
| 5922 | #:modules '((guix build utils) |
| 5923 | (guix build python-build-system) |
| 5924 | (ice-9 format)) |
| 5925 | #:phases |
| 5926 | #~(modify-phases %standard-phases |
| 5927 | (add-before 'build 'parallelize-build |
| 5928 | (lambda _ |
| 5929 | (setenv "NPY_NUM_BUILD_JOBS" |
| 5930 | (number->string (parallel-job-count))))) |
| 5931 | (add-before 'build 'configure-blas |
| 5932 | (lambda* (#:key inputs #:allow-other-keys) |
| 5933 | (call-with-output-file "site.cfg" |
| 5934 | (lambda (port) |
| 5935 | (format port |
| 5936 | "\ |
| 5937 | [openblas] |
| 5938 | libraries = openblas |
| 5939 | library_dirs = ~a/lib |
| 5940 | include_dirs = ~:*~a/include~%" #$(this-package-input "openblas")))))) |
| 5941 | (add-before 'build 'fix-executable-paths |
| 5942 | (lambda* (#:key inputs #:allow-other-keys) |
| 5943 | ;; Make /gnu/store/...-bash-.../bin/sh the default shell, |
| 5944 | ;; instead of /bin/sh. |
| 5945 | (substitute* "numpy/distutils/exec_command.py" |
| 5946 | (("'/bin/sh'") |
| 5947 | (format #f "~s" (search-input-file inputs "bin/bash")))) |
| 5948 | ;; Don't try to call '/bin/true' specifically. |
| 5949 | (substitute* "numpy/core/tests/test_cpu_features.py" |
| 5950 | (("/bin/true") (search-input-file inputs "bin/true"))))) |
| 5951 | (replace 'check |
| 5952 | (lambda* (#:key tests? outputs inputs #:allow-other-keys) |
| 5953 | (when tests? |
| 5954 | (invoke "./runtests.py" "-vv" "--no-build" "--mode=fast" |
| 5955 | "-j" (number->string (parallel-job-count)) |
| 5956 | ;; Contrary to scipy, the runtests.py script of numpy |
| 5957 | ;; does *not* automatically provide -n when -j is used |
| 5958 | ;; (see: https://github.com/numpy/numpy/issues/21359). |
| 5959 | "--" "-n" (number->string (parallel-job-count)) |
| 5960 | "-k" (string-append |
| 5961 | ;; These tests may fail on 32-bit systems (see: |
| 5962 | ;; https://github.com/numpy/numpy/issues/18387). |
| 5963 | "not test_float_remainder_overflow " |
| 5964 | "and not test_pareto" |
| 5965 | ;; These tests seem to fail on machines without |
| 5966 | ;; an FPU is still under investigation upstream. |
| 5967 | ;; https://github.com/numpy/numpy/issues/20635 |
| 5968 | #$@(if (target-riscv64?) |
| 5969 | `(" and not test_float" |
| 5970 | " and not test_fpclass") |
| 5971 | '()))))))))) |
| 5972 | (native-inputs |
| 5973 | (list python-cython |
| 5974 | python-hypothesis-next |
| 5975 | python-pytest |
| 5976 | python-pytest-xdist |
| 5977 | gfortran)) |
| 5978 | (inputs (list bash openblas)) |
| 5979 | (home-page "https://numpy.org") |
| 5980 | (synopsis "Fundamental package for scientific computing with Python") |
| 5981 | (description "NumPy is the fundamental package for scientific computing |
| 5982 | with Python. It contains among other things: a powerful N-dimensional array |
| 5983 | object, sophisticated (broadcasting) functions, tools for integrating C/C++ |
| 5984 | and Fortran code, useful linear algebra, Fourier transform, and random number |
| 5985 | capabilities.") |
| 5986 | (properties |
| 5987 | '((upstream-name . "numpy"))) |
| 5988 | (license license:bsd-3))) |
| 5989 | |
| 5990 | (define-public python-numpy-next |
| 5991 | (package |
| 5992 | (inherit python-numpy) |
| 5993 | (name "python-numpy-next") |
| 5994 | (version "1.22.3") |
| 5995 | (source |
| 5996 | (origin |
| 5997 | (inherit (package-source python-numpy)) |
| 5998 | (method url-fetch) |
| 5999 | (uri (string-append |
| 6000 | "https://github.com/numpy/numpy/releases/download/v" |
| 6001 | version "/numpy-" version ".tar.gz")) |
| 6002 | (sha256 |
| 6003 | (base32 |
| 6004 | "19dw91pqbqcniw2z57kiyqs1qp56g7kqy1bdyv664g8s62sc01m9")))))) |
| 6005 | |
| 6006 | (define-public python-numpy-documentation |
| 6007 | (package |
| 6008 | (inherit python-numpy) |
| 6009 | (name "python-numpy-documentation") |
| 6010 | (arguments |
| 6011 | (list |
| 6012 | #:tests? #f ;we're only generating the documentation |
| 6013 | #:phases |
| 6014 | #~(modify-phases %standard-phases |
| 6015 | (add-before 'build 'add-gnu-freefont-to-texmf |
| 6016 | (lambda _ |
| 6017 | ;; XXX: The Sphinx-generated tex output specifies the GNU |
| 6018 | ;; FreeFont font to be searched via its extension, which uses |
| 6019 | ;; kpathsea instead of fontconfig and fail (see: |
| 6020 | ;; https://github.com/sphinx-doc/sphinx/issues/10347). Create a |
| 6021 | ;; symlink to GNU FreeFont and add it to the TEXMF tree via |
| 6022 | ;; GUIX_TEXMF. |
| 6023 | (mkdir-p "texmf-dist/fonts/opentype/public") |
| 6024 | (symlink (string-append |
| 6025 | #$(this-package-native-input "font-gnu-freefont") |
| 6026 | "/share/fonts/opentype") |
| 6027 | (string-append |
| 6028 | (getcwd) "/" |
| 6029 | "texmf-dist/fonts/opentype/public/gnu-freefont")) |
| 6030 | (setenv "GUIX_TEXMF" (string-append (getenv "GUIX_TEXMF") ":" |
| 6031 | (getcwd) "/texmf-dist")))) |
| 6032 | (delete 'build) |
| 6033 | (replace 'install |
| 6034 | (lambda _ |
| 6035 | (let* ((data (string-append #$output "/share")) |
| 6036 | (doc (string-append data "/doc/numpy")) |
| 6037 | (html (string-append doc "/html")) |
| 6038 | (info (string-append data "/info")) |
| 6039 | (sphinxopts (string-append |
| 6040 | "SPHINXOPTS=-j" |
| 6041 | (number->string (parallel-job-count))))) |
| 6042 | (with-directory-excursion "doc" |
| 6043 | ;; Do not treat warnings as errors. |
| 6044 | (substitute* "Makefile" |
| 6045 | ((" -WT ") " -T ")) |
| 6046 | (setenv "HOME" "/tmp") |
| 6047 | ;; Build the PDF documentation. |
| 6048 | (invoke "make" "latex-build" sphinxopts) |
| 6049 | (invoke "make" "-C" "build/latex" "all-pdf" sphinxopts) |
| 6050 | ;; Build the HTML documentation |
| 6051 | (invoke "make" "html" sphinxopts) |
| 6052 | ;; Build the Info documentation. The issues worked around |
| 6053 | ;; below can be tracked at |
| 6054 | ;; https://github.com/numpy/numpy/issues/12278. |
| 6055 | (substitute* "source/conf.py" |
| 6056 | ;; The root document should be "index", not "contents". |
| 6057 | (("\"contents\"") "'index'") |
| 6058 | ;; Disable Sphinx extensions that produce broken Texinfo. |
| 6059 | ((".*'numpydoc'.*") "") |
| 6060 | ((".*'sphinx.ext.autosummary'.*") "")) |
| 6061 | (invoke "make" "info" sphinxopts) |
| 6062 | ;; Install the HTML documentation. |
| 6063 | (mkdir-p html) |
| 6064 | (copy-recursively "build/html" html) |
| 6065 | ;; Install the PDF reference and user manuals. |
| 6066 | (install-file "build/latex/numpy-ref.pdf" doc) |
| 6067 | (install-file "build/latex/numpy-user.pdf" doc) |
| 6068 | ;; Install the info manual. |
| 6069 | (install-file "build/texinfo/numpy.info" info) |
| 6070 | (symlink (string-append html "/_images") |
| 6071 | (string-append info "/numpy-figures"))))))))) |
| 6072 | (native-inputs |
| 6073 | (list font-gnu-freefont |
| 6074 | perl |
| 6075 | python-breathe |
| 6076 | python-ipython |
| 6077 | python-matplotlib |
| 6078 | python-numpy |
| 6079 | python-numpydoc |
| 6080 | python-pandas |
| 6081 | python-pydata-sphinx-theme |
| 6082 | python-scipy ;used by matplotlib |
| 6083 | python-sphinx-4 |
| 6084 | python-sphinx-panels |
| 6085 | texinfo |
| 6086 | texlive-bin |
| 6087 | texlive-cbfonts |
| 6088 | texlive-cm-super |
| 6089 | texlive-greek-fontenc |
| 6090 | texlive-latex-expdlist |
| 6091 | texlive-polyglossia |
| 6092 | texlive-xindy)) |
| 6093 | (inputs '()) |
| 6094 | (propagated-inputs '()) |
| 6095 | (synopsis "Documentation for the @code{python-numpy} package") |
| 6096 | (description "This package provides the complete NumPy documentation in |
| 6097 | the Texinfo, HTML, and PDF formats."))) |
| 6098 | |
| 6099 | (define-public python-munch |
| 6100 | (package |
| 6101 | (name "python-munch") |
| 6102 | (version "2.5.0") |
| 6103 | (source |
| 6104 | (origin |
| 6105 | (method url-fetch) |
| 6106 | (uri (pypi-uri "munch" version)) |
| 6107 | (sha256 |
| 6108 | (base32 |
| 6109 | "1lnvlic9g68hcmgdnv5bzp0nx2bf1kjclj54gx0s7nyl4ipmywrd")))) |
| 6110 | (build-system python-build-system) |
| 6111 | (native-inputs (list python-pbr python-pytest)) |
| 6112 | (propagated-inputs (list python-six)) |
| 6113 | (home-page "https://github.com/Infinidat/munch") |
| 6114 | (synopsis "Dot-accessible dictionary") |
| 6115 | (description "Munch is a dot-accessible dictionary similar to JavaScript |
| 6116 | objects.") |
| 6117 | (license license:expat))) |
| 6118 | |
| 6119 | (define-public python-colormath |
| 6120 | (package |
| 6121 | (name "python-colormath") |
| 6122 | (version "3.0.0") |
| 6123 | (source |
| 6124 | (origin |
| 6125 | (method url-fetch) |
| 6126 | (uri (pypi-uri "colormath" version)) |
| 6127 | (sha256 |
| 6128 | (base32 |
| 6129 | "05qjycgxp3p2f9n6lmic68sxmsyvgnnlyl4z9w7dl9s56jphaiix")))) |
| 6130 | (build-system python-build-system) |
| 6131 | (propagated-inputs |
| 6132 | (list python-networkx python-numpy)) |
| 6133 | (home-page "https://github.com/gtaylor/python-colormath") |
| 6134 | (synopsis "Color math and conversion library") |
| 6135 | (description |
| 6136 | "This is a Python library for color math and conversions.") |
| 6137 | (license license:bsd-3))) |
| 6138 | |
| 6139 | (define-public python-sparse |
| 6140 | (package |
| 6141 | (name "python-sparse") |
| 6142 | (version "0.13.0") |
| 6143 | (source |
| 6144 | (origin |
| 6145 | (method url-fetch) |
| 6146 | (uri (pypi-uri "sparse" version)) |
| 6147 | (sha256 |
| 6148 | (base32 |
| 6149 | "05ar1lhq1yy4nb78s7vpb1wz4ac4kj0r4lrd7yrf23kpmaacjpb8")))) |
| 6150 | (build-system python-build-system) |
| 6151 | (arguments |
| 6152 | `(#:phases |
| 6153 | (modify-phases %standard-phases |
| 6154 | (replace 'check |
| 6155 | (lambda* (#:key tests? #:allow-other-keys) |
| 6156 | (when tests? |
| 6157 | (invoke "python" "-m" "pytest" "-v"))))))) |
| 6158 | (propagated-inputs |
| 6159 | (list python-numba python-numpy python-scipy)) |
| 6160 | (native-inputs |
| 6161 | (list python-dask python-pytest python-pytest-black |
| 6162 | python-pytest-cov)) |
| 6163 | (home-page "https://github.com/pydata/sparse/") |
| 6164 | (synopsis "Library for multi-dimensional sparse arrays") |
| 6165 | (description |
| 6166 | "This package implements sparse arrays of arbitrary dimension on top of |
| 6167 | @code{numpy} and @code{scipy.sparse}. Sparse array is a matrix in which most |
| 6168 | of the elements are zero. @code{python-sparse} generalizes the |
| 6169 | @code{scipy.sparse.coo_matrix} and @code{scipy.sparse.dok_matrix} layouts, but |
| 6170 | extends beyond just rows and columns to an arbitrary number of dimensions. |
| 6171 | Additionally, this project maintains compatibility with the |
| 6172 | @code{numpy.ndarray} interface rather than the @code{numpy.matrix} interface |
| 6173 | used in @code{scipy.sparse}. These differences make this project useful in |
| 6174 | certain situations where @code{scipy.sparse} matrices are not well suited, but |
| 6175 | it should not be considered a full replacement. It lacks layouts that are not |
| 6176 | easily generalized like @dfn{compressed sparse row/column}(CSR/CSC) and |
| 6177 | depends on @code{scipy.sparse} for some computations.") |
| 6178 | (license license:bsd-3))) |
| 6179 | |
| 6180 | (define-public python-spectra |
| 6181 | (package |
| 6182 | (name "python-spectra") |
| 6183 | (version "0.0.11") |
| 6184 | (source |
| 6185 | (origin |
| 6186 | (method url-fetch) |
| 6187 | (uri (pypi-uri "spectra" version)) |
| 6188 | (sha256 |
| 6189 | (base32 |
| 6190 | "1f322x914bhkg6r5gv1vmnir3iy0k5kih0fd2gp3rdkw32jn5cwf")))) |
| 6191 | (build-system python-build-system) |
| 6192 | (arguments |
| 6193 | `(#:phases |
| 6194 | (modify-phases %standard-phases |
| 6195 | (replace 'check |
| 6196 | (lambda _ (invoke "nosetests" "-v")))))) |
| 6197 | (propagated-inputs |
| 6198 | (list python-colormath)) |
| 6199 | (native-inputs |
| 6200 | (list python-nose)) |
| 6201 | (home-page "https://github.com/jsvine/spectra") |
| 6202 | (synopsis "Color scales and color conversion") |
| 6203 | (description |
| 6204 | "This package provides a Python library intended to make color math, |
| 6205 | color scales, and color space conversion easy. It has support for: |
| 6206 | |
| 6207 | @enumerate |
| 6208 | @item Color scales |
| 6209 | @item Color ranges |
| 6210 | @item Color blending |
| 6211 | @item Brightening/darkening colors |
| 6212 | @item Saturating/desaturating colors |
| 6213 | @item Conversion to/from multiple color spaces. |
| 6214 | @end enumerate\n") |
| 6215 | (license license:expat))) |
| 6216 | |
| 6217 | (define-public python-pyspnego |
| 6218 | (package |
| 6219 | (name "python-pyspnego") |
| 6220 | (version "0.1.6") |
| 6221 | (source |
| 6222 | (origin |
| 6223 | (method git-fetch) ;no tests in PyPI release |
| 6224 | (uri (git-reference |
| 6225 | (url "https://github.com/jborean93/pyspnego") |
| 6226 | (commit (string-append "v" version)))) |
| 6227 | (file-name (git-file-name name version)) |
| 6228 | (sha256 |
| 6229 | (base32 |
| 6230 | "0pfh2x0539f0k2qi2pbjm64b2fqp64c63xxpinvg1yfaw915kgpb")))) |
| 6231 | (build-system python-build-system) |
| 6232 | (arguments |
| 6233 | `(#:phases (modify-phases %standard-phases |
| 6234 | (replace 'check |
| 6235 | (lambda* (#:key tests? #:allow-other-keys) |
| 6236 | (when tests? |
| 6237 | (invoke "pytest"))))))) |
| 6238 | (native-inputs |
| 6239 | (list python-pytest python-pytest-mock)) |
| 6240 | (propagated-inputs |
| 6241 | (list python-cryptography python-gssapi python-ruamel.yaml)) |
| 6242 | (home-page "https://github.com/jborean93/pyspnego") |
| 6243 | (synopsis "Python SPNEGO library") |
| 6244 | (description "The @code{pyspnego} Python library handles Negotiate, NTLM, |
| 6245 | Kerberos (SPNEGO) and CredSSP authentication. It also includes a packet |
| 6246 | parser that can be used to decode raw NTLM/SPNEGO/Kerberos tokens into a human |
| 6247 | readable format.") |
| 6248 | (license license:expat))) |
| 6249 | |
| 6250 | (define-public python-pygit2 |
| 6251 | (package |
| 6252 | (name "python-pygit2") |
| 6253 | (version "1.9.2") |
| 6254 | (source |
| 6255 | (origin |
| 6256 | (method url-fetch) |
| 6257 | (uri (pypi-uri "pygit2" version)) |
| 6258 | (sha256 |
| 6259 | (base32 "068bwhirigbh2435abyv4shdxgxvyfqf4dxfmhd4hihivwrl9290")))) |
| 6260 | (build-system python-build-system) |
| 6261 | (arguments |
| 6262 | `(#:phases (modify-phases %standard-phases |
| 6263 | (replace 'check |
| 6264 | (lambda* (#:key tests? #:allow-other-keys) |
| 6265 | (when tests? |
| 6266 | (invoke "pytest" "-v"))))))) |
| 6267 | (propagated-inputs |
| 6268 | (list python-cached-property python-cffi libgit2)) |
| 6269 | (native-inputs |
| 6270 | (list python-pytest)) |
| 6271 | (home-page "https://github.com/libgit2/pygit2") |
| 6272 | (synopsis "Python bindings for libgit2") |
| 6273 | (description "Pygit2 is a set of Python bindings to the libgit2 shared library.") |
| 6274 | ;; GPL2.0 only, with linking exception. |
| 6275 | (license license:gpl2))) |
| 6276 | |
| 6277 | (define-public python-patiencediff |
| 6278 | (package |
| 6279 | (name "python-patiencediff") |
| 6280 | (version "0.2.0") |
| 6281 | (source |
| 6282 | (origin |
| 6283 | (method url-fetch) |
| 6284 | (uri (pypi-uri "patiencediff" version)) |
| 6285 | (sha256 |
| 6286 | (base32 |
| 6287 | "0yjk50lsd4gnllxls925xbcdxwvmda37w2a1shk0p1nvl3fcha6q")))) |
| 6288 | (build-system python-build-system) |
| 6289 | (home-page "https://www.breezy-vcs.org/") |
| 6290 | (synopsis "Python implementation of the patiencediff algorithm") |
| 6291 | (description |
| 6292 | "This package contains a Python implementation of the @code{patiencediff} |
| 6293 | algorithm. Patiencediff provides a good balance of performance, nice output for |
| 6294 | humans, and implementation simplicity.") |
| 6295 | (license license:gpl2))) |
| 6296 | |
| 6297 | (define-public python-wmctrl |
| 6298 | (package |
| 6299 | (name "python-wmctrl") |
| 6300 | (version "0.4") |
| 6301 | (source |
| 6302 | (origin |
| 6303 | (method url-fetch) |
| 6304 | (uri (pypi-uri "wmctrl" version)) |
| 6305 | (sha256 |
| 6306 | (base32 |
| 6307 | "1q0l1sqnj5wma87k3dsgmsyph464syjc6fl8qcpa41nan1rgzjv6")))) |
| 6308 | (build-system python-build-system) |
| 6309 | (arguments |
| 6310 | `(#:phases (modify-phases %standard-phases |
| 6311 | (add-after 'unpack 'patch-paths |
| 6312 | (lambda* (#:key inputs #:allow-other-keys) |
| 6313 | (let ((wmctrl (assoc-ref inputs "wmctrl"))) |
| 6314 | (substitute* "wmctrl.py" |
| 6315 | (("'wmctrl") |
| 6316 | (string-append "'" wmctrl "/bin/wmctrl"))))))))) |
| 6317 | (inputs (list wmctrl)) |
| 6318 | (propagated-inputs (list python-attrs)) |
| 6319 | (home-page "https://github.com/antocuni/wmctrl") |
| 6320 | (synopsis "Tool to programmatically control Xorg windows") |
| 6321 | (description "This package provides a library for programmatically |
| 6322 | controlling Xorg windows using Python. The library relies on the |
| 6323 | @command{wmctrl} to do so.") |
| 6324 | (license license:expat))) |
| 6325 | |
| 6326 | (define-public python-fancycompleter |
| 6327 | (package |
| 6328 | (name "python-fancycompleter") |
| 6329 | (version "0.9.1") |
| 6330 | (source |
| 6331 | (origin |
| 6332 | (method url-fetch) |
| 6333 | (uri (pypi-uri "fancycompleter" version)) |
| 6334 | (sha256 |
| 6335 | (base32 "0wkj4h01pxa8prv59zl09a0i3w26k835bfpjgvyvsai4mswgxq09")))) |
| 6336 | (build-system python-build-system) |
| 6337 | (arguments |
| 6338 | `(#:phases (modify-phases %standard-phases |
| 6339 | (add-after 'unpack 'fix-setup.py |
| 6340 | (lambda _ |
| 6341 | (substitute* "setup.py" |
| 6342 | ((".*setupmeta.*") |
| 6343 | "") |
| 6344 | (("versioning=.*") |
| 6345 | (string-append "version='" ,version "',")) |
| 6346 | ((".*pyrepl.*") ;broken on Python 3 |
| 6347 | ""))))))) |
| 6348 | (home-page "https://github.com/pdbpp/fancycompleter") |
| 6349 | (synopsis "TAB completion library for Python") |
| 6350 | (description "@code{fancycompleter} is a module that adds TAB completion |
| 6351 | to the interactive prompt. It is an extension of the @code{rlcompleter} |
| 6352 | module from the standard Python library.") |
| 6353 | (license license:bsd-3))) |
| 6354 | |
| 6355 | (define-public python-ipdb |
| 6356 | (package |
| 6357 | (name "python-ipdb") |
| 6358 | (version "0.13.9") |
| 6359 | (source |
| 6360 | (origin |
| 6361 | (method url-fetch) |
| 6362 | (uri (pypi-uri "ipdb" version)) |
| 6363 | (sha256 |
| 6364 | (base32 "1ibql99agjf2gj7y0svzd5m0h81hailf4p3sj3yl9i1i8ykdj6wm")))) |
| 6365 | (build-system python-build-system) |
| 6366 | (arguments |
| 6367 | (list #:phases #~(modify-phases %standard-phases |
| 6368 | (replace 'check |
| 6369 | (lambda* (#:key tests? #:allow-other-keys) |
| 6370 | (when tests? |
| 6371 | (invoke "python" "-m" "unittest" "discover"))))))) |
| 6372 | (propagated-inputs (list python-ipython python-toml python-decorator)) |
| 6373 | (home-page "https://github.com/gotcha/ipdb") |
| 6374 | (synopsis "IPython-enhanced Python debugger (pdb)") |
| 6375 | (description "@code{ipdb} exports functions to access the IPython |
| 6376 | debugger, which features tab completion, syntax highlighting, better |
| 6377 | tracebacks and better introspection than Python's standard @command{pdb} |
| 6378 | debugger, with which it shares the same interface.") |
| 6379 | (license license:bsd-3))) |
| 6380 | |
| 6381 | (define-public python-pdbpp |
| 6382 | (package |
| 6383 | (name "python-pdbpp") |
| 6384 | (version "0.10.3") |
| 6385 | (source |
| 6386 | (origin |
| 6387 | (method url-fetch) |
| 6388 | (uri (pypi-uri "pdbpp" version)) |
| 6389 | (sha256 |
| 6390 | (base32 |
| 6391 | "1xb9yvi30rb1cdpvfdk2kg79vh3anvkz91r8bwvfp3iqv97kzr6r")))) |
| 6392 | (build-system python-build-system) |
| 6393 | (arguments |
| 6394 | `(#:phases |
| 6395 | (modify-phases %standard-phases |
| 6396 | (replace 'check |
| 6397 | (lambda* (#:key tests? #:allow-other-keys) |
| 6398 | (when tests? |
| 6399 | (invoke "pytest" |
| 6400 | "-k" |
| 6401 | (string-append |
| 6402 | ;; These tests seem to require a real TTY. |
| 6403 | "not interaction_restores_previous_sigint_handler " |
| 6404 | "and not python_m_pdb_uses_pdbpp")))))))) |
| 6405 | (propagated-inputs |
| 6406 | (list python-fancycompleter python-pygments python-wmctrl)) |
| 6407 | (native-inputs |
| 6408 | (list python-pytest python-setuptools-scm)) |
| 6409 | (home-page "https://github.com/pdbpp/pdbpp") |
| 6410 | (synopsis "Drop-in replacement for pdb") |
| 6411 | (description "Pdb++ is a drop-in replacement for @code{pdb}. It |
| 6412 | includes the following improvements compared to @code{pdb}: |
| 6413 | @itemize |
| 6414 | @item auto-completion |
| 6415 | @item syntax highlighting of code listings |
| 6416 | @item sticky mode |
| 6417 | @item new commands to be used from the interactive (Pdb++) prompt |
| 6418 | @item smart command parsing |
| 6419 | @item additional convenience functions in the @code{pdb} module. |
| 6420 | @end itemize") |
| 6421 | (license license:bsd-3))) |
| 6422 | |
| 6423 | (define-public python-pdftotext |
| 6424 | (package |
| 6425 | (name "python-pdftotext") |
| 6426 | (version "2.1.6") |
| 6427 | (source |
| 6428 | (origin |
| 6429 | (method url-fetch) |
| 6430 | (uri (pypi-uri "pdftotext" version)) |
| 6431 | (sha256 |
| 6432 | (base32 "1555wbgr5spj8xflrs4mwsrdmba2f9s72nk50xzqk9ghxaxdvy6a")))) |
| 6433 | (build-system python-build-system) |
| 6434 | (inputs |
| 6435 | (list poppler)) |
| 6436 | (home-page "https://github.com/jalan/pdftotext") |
| 6437 | (synopsis "Simple PDF text extraction") |
| 6438 | (description "Pdftotext is a Python library of PDF text extraction.") |
| 6439 | (license license:expat))) |
| 6440 | |
| 6441 | (define-public python-pluginbase |
| 6442 | (package |
| 6443 | (name "python-pluginbase") |
| 6444 | (version "1.0.1") |
| 6445 | (source |
| 6446 | (origin |
| 6447 | (method url-fetch) |
| 6448 | (uri (pypi-uri "pluginbase" version)) |
| 6449 | (sha256 |
| 6450 | (base32 |
| 6451 | "11z2vvbp13828y0x3w39f29p9r9xcix7h7c4fff2w8yfiylk6v7z")))) |
| 6452 | (build-system python-build-system) |
| 6453 | (arguments |
| 6454 | `(#:phases (modify-phases %standard-phases |
| 6455 | (replace 'check |
| 6456 | (lambda* (#:key tests? #:allow-other-keys) |
| 6457 | (when tests? |
| 6458 | (invoke "make" "test"))))))) |
| 6459 | (native-inputs (list python-pytest)) |
| 6460 | (home-page "https://github.com/mitsuhiko/pluginbase") |
| 6461 | (synopsis "Simple but flexible plugin system for Python") |
| 6462 | (description "PluginBase is a library useful in the development of |
| 6463 | flexible plugin systems in Python.") |
| 6464 | (license license:bsd-3))) |
| 6465 | |
| 6466 | (define-public python-node-semver |
| 6467 | (package |
| 6468 | (name "python-node-semver") |
| 6469 | (version "0.8.1") |
| 6470 | (source |
| 6471 | (origin |
| 6472 | (method url-fetch) |
| 6473 | (uri (pypi-uri "node-semver" version)) |
| 6474 | (sha256 |
| 6475 | (base32 |
| 6476 | "000ypfns5x72b41w5f9pk6k3jnr35scliqfbvmilyvv0178005i8")))) |
| 6477 | (build-system python-build-system) |
| 6478 | (native-inputs |
| 6479 | (list python-pytest)) |
| 6480 | (home-page "https://github.com/podhmo/python-node-semver") |
| 6481 | (synopsis "Python port of node-semver") |
| 6482 | (description "This module provides a Python version of node-semver, a |
| 6483 | semantic version parser for Node.js.") |
| 6484 | (license license:expat))) |
| 6485 | |
| 6486 | (define-public python-patch-ng |
| 6487 | (package |
| 6488 | (name "python-patch-ng") |
| 6489 | (version "1.17.4") |
| 6490 | (source |
| 6491 | (origin |
| 6492 | (method git-fetch) ;no tests in PyPI archive |
| 6493 | (uri (git-reference |
| 6494 | (url "https://github.com/conan-io/python-patch-ng") |
| 6495 | (commit version))) |
| 6496 | (file-name (git-file-name name version)) |
| 6497 | (sha256 |
| 6498 | (base32 |
| 6499 | "0qxn4ss2s54qy87xrpcybz26kp2fwlaq41x4k9jcmp6d7p0w569m")))) |
| 6500 | (build-system python-build-system) |
| 6501 | (arguments |
| 6502 | `(#:phases (modify-phases %standard-phases |
| 6503 | (replace 'check |
| 6504 | (lambda* (#:key tests? #:allow-other-keys) |
| 6505 | (when tests? |
| 6506 | (invoke "tests/run_tests.py" "-v"))))))) |
| 6507 | (home-page "https://github.com/conan-io/python-patch-ng") |
| 6508 | (synopsis "Python library to parse and apply unified diffs") |
| 6509 | (description "Patch NG (New Generation) is a command and Python library to |
| 6510 | parse and apply unified diffs. It has features such as: |
| 6511 | @itemize |
| 6512 | @item automatic correction of common patch formatting corruption |
| 6513 | @item patch format detection (SVN, Hg, Git) |
| 6514 | @item nice diffstat histogram. |
| 6515 | @end itemize") |
| 6516 | (license license:expat))) |
| 6517 | |
| 6518 | (define-public python-numpydoc |
| 6519 | (package |
| 6520 | (name "python-numpydoc") |
| 6521 | (version "1.2.1") |
| 6522 | (source |
| 6523 | (origin |
| 6524 | (method url-fetch) |
| 6525 | (uri (pypi-uri "numpydoc" version)) |
| 6526 | (sha256 |
| 6527 | (base32 |
| 6528 | "1xjsli2fqks4iv3524v1d329siad7bbsi4kr174zvhsl1pnjds3w")))) |
| 6529 | (build-system python-build-system) |
| 6530 | (arguments |
| 6531 | `(#:phases |
| 6532 | (modify-phases %standard-phases |
| 6533 | (add-after 'unpack 'relax-requirements |
| 6534 | (lambda _ |
| 6535 | (substitute* "setup.py" |
| 6536 | (("'Jinja2>=2.10,<3.1'") |
| 6537 | "'Jinja2>=2.10'")))) |
| 6538 | (replace 'check |
| 6539 | (lambda* (#:key tests? #:allow-other-keys) |
| 6540 | (when tests? |
| 6541 | (invoke "pytest" "-v" "numpydoc/tests" |
| 6542 | ;; TODO: unclear why these fail. |
| 6543 | "-k" "not test_MyClass and not test_my_function"))))))) |
| 6544 | (propagated-inputs (list python-jinja2 python-sphinx)) |
| 6545 | (native-inputs (list python-matplotlib python-pytest python-pytest-cov)) |
| 6546 | (home-page "https://pypi.org/project/numpydoc/") |
| 6547 | (synopsis "Numpy's Sphinx extensions") |
| 6548 | (description "Sphinx extension to support docstrings in Numpy format.") |
| 6549 | (license license:bsd-2))) |
| 6550 | |
| 6551 | (define-public python-numexpr |
| 6552 | (package |
| 6553 | (name "python-numexpr") |
| 6554 | (version "2.7.3") |
| 6555 | (source |
| 6556 | (origin |
| 6557 | (method url-fetch) |
| 6558 | (uri (pypi-uri "numexpr" version)) |
| 6559 | (sha256 |
| 6560 | (base32 |
| 6561 | "09d8yfsx33ddwfkpn8805w2mxnn4cvf47yc66g4azldpz4lnaqa3")))) |
| 6562 | (build-system python-build-system) |
| 6563 | (arguments `(#:tests? #f)) ; no tests included |
| 6564 | (propagated-inputs |
| 6565 | (list python-numpy)) |
| 6566 | (home-page "https://github.com/pydata/numexpr") |
| 6567 | (synopsis "Fast numerical expression evaluator for NumPy") |
| 6568 | (description |
| 6569 | "Numexpr is a fast numerical expression evaluator for NumPy. With it, |
| 6570 | expressions that operate on arrays are accelerated and use less memory than |
| 6571 | doing the same calculation in Python. In addition, its multi-threaded |
| 6572 | capabilities can make use of all your cores, which may accelerate |
| 6573 | computations, most specially if they are not memory-bounded (e.g. those using |
| 6574 | transcendental functions).") |
| 6575 | (license license:expat))) |
| 6576 | |
| 6577 | (define-public python-cycler |
| 6578 | (package |
| 6579 | (name "python-cycler") |
| 6580 | (version "0.10.0") |
| 6581 | (source (origin |
| 6582 | (method url-fetch) |
| 6583 | (uri (pypi-uri "cycler" version)) |
| 6584 | (sha256 |
| 6585 | (base32 |
| 6586 | "1n69n23fak1gjxlrbhqisi2b9pv3ckrfj98llx3p53953082syyd")))) |
| 6587 | (build-system python-build-system) |
| 6588 | (arguments |
| 6589 | ;; XXX: The current version requires 'coveralls' which we don't have. |
| 6590 | ;; Enable this for the next release which uses 'python-pytest'. |
| 6591 | '(#:tests? #f)) |
| 6592 | (propagated-inputs |
| 6593 | (list python-six)) |
| 6594 | (home-page "https://matplotlib.org/cycler/") |
| 6595 | (synopsis "Composable keyword argument iterator") |
| 6596 | (description |
| 6597 | "When using @code{matplotlib} and plotting more than one line, it is |
| 6598 | common to want to be able to want to be able to cycle over one or more artist |
| 6599 | styles; but the plotting logic can quickly become involved. |
| 6600 | To address this and enable easy cycling over arbitrary @code{kwargs}, the |
| 6601 | @code{Cycler} class was developed.") |
| 6602 | (license license:bsd-3))) |
| 6603 | |
| 6604 | (define-public python-colorspacious |
| 6605 | (package |
| 6606 | (name "python-colorspacious") |
| 6607 | (version "1.1.2") |
| 6608 | (source |
| 6609 | (origin |
| 6610 | (method git-fetch) |
| 6611 | (uri (git-reference |
| 6612 | (url "https://github.com/njsmith/colorspacious") |
| 6613 | (commit (string-append "v" version)))) |
| 6614 | (file-name (git-file-name name version)) |
| 6615 | (sha256 |
| 6616 | (base32 "0x7nkphr6g5ql5fvgss8l56rgiyjgh6fm8zzs73i94ci9wzlm63w")))) |
| 6617 | (build-system python-build-system) |
| 6618 | (propagated-inputs |
| 6619 | (list python-numpy)) |
| 6620 | (native-inputs |
| 6621 | (list python-nose)) |
| 6622 | (arguments |
| 6623 | `(#:phases |
| 6624 | (modify-phases %standard-phases |
| 6625 | (replace 'check |
| 6626 | (lambda _ |
| 6627 | (invoke "nosetests" "--all-modules" "-v" "colorspacious")))))) |
| 6628 | (home-page "https://github.com/njsmith/colorspacious") |
| 6629 | (synopsis "Python library for colorspace conversions") |
| 6630 | (description "@code{colorspacious} is a Python library that lets you |
| 6631 | convert between colorspaces like sRGB, XYZ, CIEL*a*b*, CIECAM02, CAM02-UCS, etc.") |
| 6632 | (license license:expat))) |
| 6633 | |
| 6634 | (define-public python-proto-matcher |
| 6635 | (package |
| 6636 | (name "python-proto-matcher") |
| 6637 | (version "0.0.3") |
| 6638 | (source |
| 6639 | (origin |
| 6640 | (method url-fetch) |
| 6641 | (uri (pypi-uri "proto_matcher" version)) |
| 6642 | (sha256 |
| 6643 | (base32 "1644x0hrl398ji3281n44ymfgc3cspzfagjckhqjn4nja5nlikxg")))) |
| 6644 | (build-system python-build-system) |
| 6645 | (arguments |
| 6646 | `(#:tests? #f)) ;no test suite |
| 6647 | (propagated-inputs |
| 6648 | (list python-protobuf python-pyhamcrest)) |
| 6649 | (home-page "https://github.com/dayfine/proto-matcher") |
| 6650 | (synopsis "PyHamcrest test matchers for protocol buffers") |
| 6651 | (description "This package provides the following PyHamcrest test |
| 6652 | matchers, that enable matching a protocol buffer message: |
| 6653 | @table @code |
| 6654 | @item equals_proto |
| 6655 | Test the argument equals the given protobuf message. |
| 6656 | @item approximately |
| 6657 | Test the argument equals the given protobuf message, while comparing any float |
| 6658 | field using approximation. |
| 6659 | @item ignoring_field_paths |
| 6660 | Test the argument equals the given protobuf message, while ignoring those |
| 6661 | fields specified in the field paths. |
| 6662 | @item ignoring_repeated_field_ordering |
| 6663 | Test the argument equals the given protobuf message, ignoring the ordering of |
| 6664 | any repeated field. |
| 6665 | @item partially |
| 6666 | Test the argument partially equals the given protobuf message, i.e. if a field |
| 6667 | is in the argument but not in the expected message, it's ignored in the |
| 6668 | comparison. |
| 6669 | @end table") |
| 6670 | (license license:asl2.0))) |
| 6671 | |
| 6672 | (define-public python-matplotlib |
| 6673 | (package |
| 6674 | (name "python-matplotlib") |
| 6675 | (version "3.5.2") |
| 6676 | (source |
| 6677 | (origin |
| 6678 | (method url-fetch) |
| 6679 | (uri (pypi-uri "matplotlib" version)) |
| 6680 | (sha256 |
| 6681 | (base32 "18h78s5ld1i6mz00w258hy29909nfr3ddq6ry9kq18agw468bks8")))) |
| 6682 | (build-system python-build-system) |
| 6683 | (arguments |
| 6684 | (list |
| 6685 | #:phases |
| 6686 | #~(modify-phases %standard-phases |
| 6687 | (add-before 'build 'pretend-version |
| 6688 | ;; The version string is usually derived via setuptools-scm, but |
| 6689 | ;; without the git metadata available, the version string is set to |
| 6690 | ;; '0.0.0'. |
| 6691 | (lambda _ |
| 6692 | (setenv "SETUPTOOLS_SCM_PRETEND_VERSION" #$version))) |
| 6693 | (add-after 'unpack 'fix-and-disable-failing-tests |
| 6694 | ;; XXX: Disable all image comparison tests because we're using a |
| 6695 | ;; newer version of FreeType than matplotlib expects. This leads |
| 6696 | ;; to minor differences throughout the tests. |
| 6697 | (lambda _ |
| 6698 | (substitute* (append (find-files "lib/matplotlib/tests/" |
| 6699 | "test_.*\\.py$") |
| 6700 | (find-files "lib/mpl_toolkits/tests" |
| 6701 | "test_.*\\.py$")) |
| 6702 | (("^from matplotlib" match) |
| 6703 | (string-append "import pytest\n" match)) |
| 6704 | (("( *)@([^_]+_)*(image_comparison|check_figures_equal)" match |
| 6705 | indent) |
| 6706 | (string-append indent "@pytest.mark.skip(\ |
| 6707 | reason=\"unknown minor image differences\")\n" match))) |
| 6708 | (substitute* "lib/matplotlib/tests/test_animation.py" |
| 6709 | (("/bin/sh") (which "sh"))) |
| 6710 | (for-each delete-file |
| 6711 | ;; test_normal_axes, test_get_tightbbox_polar |
| 6712 | '("lib/matplotlib/tests/test_axes.py" |
| 6713 | "lib/matplotlib/tests/test_polar.py" |
| 6714 | ;; We don't use the webagg backend and this test |
| 6715 | ;; forces it. |
| 6716 | "lib/matplotlib/tests/test_backend_webagg.py" |
| 6717 | ;; test_outward_ticks |
| 6718 | "lib/matplotlib/tests/test_tightlayout.py" |
| 6719 | ;; test_hidden_axes fails with minor extent |
| 6720 | ;; differences, possibly due to the use of a |
| 6721 | ;; different version of FreeType. |
| 6722 | "lib/matplotlib/tests/test_constrainedlayout.py" |
| 6723 | ;; Fontconfig returns no fonts. |
| 6724 | "lib/matplotlib/tests/test_font_manager.py" |
| 6725 | ;; The images comparison test fails |
| 6726 | ;; non-deterministically when run in parallel (see: |
| 6727 | ;; https://github.com/matplotlib/matplotlib/issues/22992). |
| 6728 | "lib/matplotlib/tests/test_compare_images.py")))) |
| 6729 | (add-before 'build 'configure-environment |
| 6730 | (lambda* (#:key inputs #:allow-other-keys) |
| 6731 | ;; Fix rounding errors when using the x87 FPU. |
| 6732 | (when (string-prefix? "i686" #$(%current-system)) |
| 6733 | (setenv "CFLAGS" "-ffloat-store")) |
| 6734 | (call-with-output-file "mplsetup.cfg" |
| 6735 | (lambda (port) |
| 6736 | (format port "\ |
| 6737 | [libs] |
| 6738 | system_freetype = true |
| 6739 | system_qhull = true |
| 6740 | |
| 6741 | [rc_options] |
| 6742 | backend=Agg |
| 6743 | |
| 6744 | [directories] |
| 6745 | basedirlist = ~a,~a |
| 6746 | |
| 6747 | [packages] |
| 6748 | tests = True~%" (assoc-ref inputs "tcl") (assoc-ref inputs "tk")))))) |
| 6749 | (replace 'check |
| 6750 | (lambda* (#:key tests? #:allow-other-keys) |
| 6751 | (when tests? |
| 6752 | ;; Step out of the source directory to avoid interference. |
| 6753 | (with-directory-excursion "/tmp" |
| 6754 | ;; Run the installed tests, which is what we want since not |
| 6755 | ;; everything gets built in the source directory. |
| 6756 | (invoke "pytest" |
| 6757 | "-n" (number->string (parallel-job-count)) |
| 6758 | "-m" "not network" "--pyargs" "matplotlib" |
| 6759 | ;; The 'test_lazy_auto_backend_selection' fails |
| 6760 | ;; because it would require an X server; skip it. |
| 6761 | "-k" "not test_lazy_auto_backend_selection")))))))) |
| 6762 | (propagated-inputs |
| 6763 | (list gobject-introspection |
| 6764 | python-cairocffi |
| 6765 | python-certifi |
| 6766 | python-cycler |
| 6767 | python-dateutil |
| 6768 | python-fonttools |
| 6769 | python-kiwisolver |
| 6770 | python-numpy |
| 6771 | python-packaging |
| 6772 | python-pillow |
| 6773 | ;; ;; 'pycairo'. However, 'pygobject' makes use of a 'pycairo' 'context' |
| 6774 | ;; ;; From version 1.4.0 'matplotlib' makes use of 'cairocffi' instead of |
| 6775 | ;; ;; https://cairocffi.readthedocs.io/en/stable/cffi_api.html#converting-pycairo-wrappers-to-cairocffi |
| 6776 | ;; ;; object. For this reason we need to import both libraries. |
| 6777 | ;; python-pycairo |
| 6778 | python-pygobject |
| 6779 | python-pyparsing |
| 6780 | python-pytz |
| 6781 | python-six |
| 6782 | `(,python "tk") |
| 6783 | python-wxpython)) |
| 6784 | (inputs |
| 6785 | (list cairo |
| 6786 | freetype |
| 6787 | glib |
| 6788 | libpng |
| 6789 | qhull |
| 6790 | tcl |
| 6791 | tk)) |
| 6792 | (native-inputs |
| 6793 | (list pkg-config |
| 6794 | python-pytest |
| 6795 | python-pytest-timeout |
| 6796 | python-pytest-xdist |
| 6797 | python-setuptools-scm |
| 6798 | python-setuptools-scm-git-archive)) |
| 6799 | (home-page "https://matplotlib.org/") |
| 6800 | (synopsis "2D plotting library for Python") |
| 6801 | (description |
| 6802 | "Matplotlib is a Python 2D plotting library which produces publication |
| 6803 | quality figures in a variety of hardcopy formats and interactive environments |
| 6804 | across platforms. Matplotlib can be used in Python scripts, the python and |
| 6805 | ipython shell, web application servers, and six graphical user interface |
| 6806 | toolkits.") |
| 6807 | (license license:psfl))) |
| 6808 | |
| 6809 | (define-public python-matplotlib-documentation |
| 6810 | (package |
| 6811 | (inherit python-matplotlib) |
| 6812 | (name "python-matplotlib-documentation") |
| 6813 | (arguments |
| 6814 | (list |
| 6815 | #:tests? #f ;we're only generating documentation |
| 6816 | #:phases |
| 6817 | #~(modify-phases %standard-phases |
| 6818 | (replace 'build |
| 6819 | (lambda _ |
| 6820 | (setenv "HOME" "/tmp") |
| 6821 | (chdir "doc") |
| 6822 | (substitute* "conf.py" |
| 6823 | ;; The sphinx_panels extension causes a "TypeError: first |
| 6824 | ;; argument must be callable" to be raised when generating the |
| 6825 | ;; info target; remove it (see: |
| 6826 | ;; https://github.com/executablebooks/sphinx-panels/issues/74). |
| 6827 | ((".*'sphinx_panels',.*") "")) |
| 6828 | (invoke "make" "html" "info" |
| 6829 | ;; Don't abort on warnings; build in parallel. |
| 6830 | (format #f "SPHINXOPTS=-j~a" (parallel-job-count))))) |
| 6831 | (replace 'install |
| 6832 | (lambda _ |
| 6833 | (let* ((data (string-append #$output "/share")) |
| 6834 | (doc (string-append data "/doc/matplotlib")) |
| 6835 | (info (string-append data "/info")) |
| 6836 | (html (string-append doc "/html"))) |
| 6837 | (mkdir-p html) |
| 6838 | (copy-recursively "build/html" html) |
| 6839 | (install-file "build/texinfo/matplotlib.info" info) |
| 6840 | ;; The "matplotlib-figures" directory contains are a subset of |
| 6841 | ;; the images produced for the html target; simply create a |
| 6842 | ;; symlink to it, saving about 11 MiB. |
| 6843 | (symlink (string-append html "/_images") |
| 6844 | (string-append info "/matplotlib-figures")))))))) |
| 6845 | (native-inputs |
| 6846 | (list graphviz |
| 6847 | inkscape/stable |
| 6848 | python-colorspacious |
| 6849 | python-mpl-sphinx-theme |
| 6850 | python-scipy |
| 6851 | python-sphinx |
| 6852 | python-sphinx-copybutton |
| 6853 | python-sphinx-gallery |
| 6854 | python-sphinxcontrib-svg2pdfconverter |
| 6855 | python-numpydoc |
| 6856 | python-ipython |
| 6857 | python-ipywidgets |
| 6858 | texlive-amsfonts |
| 6859 | texlive-amsmath |
| 6860 | texlive-babel |
| 6861 | texlive-fontspec |
| 6862 | texlive-unicode-math |
| 6863 | texlive-etoolbox |
| 6864 | texlive-latex-expdlist |
| 6865 | texlive-underscore |
| 6866 | texlive-latex-type1cm |
| 6867 | texlive-times |
| 6868 | texinfo)) |
| 6869 | (synopsis "Documentation for the @code{python-matplotlib} package"))) |
| 6870 | |
| 6871 | (define-public python-matplotlib-inline |
| 6872 | (package |
| 6873 | (name "python-matplotlib-inline") |
| 6874 | (version "0.1.3") |
| 6875 | (source |
| 6876 | (origin |
| 6877 | (method url-fetch) |
| 6878 | (uri (pypi-uri "matplotlib-inline" version)) |
| 6879 | (sha256 |
| 6880 | (base32 "1vilzwj3xp00mxprmmn1hlafm3p23vn56s46kx3ra4qd5signjx0")))) |
| 6881 | (build-system python-build-system) |
| 6882 | (propagated-inputs |
| 6883 | (list python-matplotlib python-traitlets)) |
| 6884 | (arguments |
| 6885 | ;; Tests disabled because of a circular dependency with ipython. |
| 6886 | `(#:tests? #f)) |
| 6887 | (home-page "https://github.com/ipython/matplotlib-inline") |
| 6888 | (synopsis "Inline Matplotlib backend for Jupyter") |
| 6889 | (description |
| 6890 | "This package provides a Matplotlib inline back-end for IPython and |
| 6891 | Jupyter.") |
| 6892 | (license license:bsd-3))) |
| 6893 | |
| 6894 | (define-public python-matplotlib-venn |
| 6895 | (package |
| 6896 | (name "python-matplotlib-venn") |
| 6897 | (version "0.11.5") |
| 6898 | (source |
| 6899 | (origin |
| 6900 | (method url-fetch) |
| 6901 | (uri (pypi-uri "matplotlib-venn" version ".zip")) |
| 6902 | (sha256 |
| 6903 | (base32 |
| 6904 | "13w3i1wih0mij08hrgppzg0g9z50y54rc28l6gdi1r5w45l7l0dy")))) |
| 6905 | (build-system python-build-system) |
| 6906 | (arguments '(#:tests? #f)) ; tests are not included |
| 6907 | (propagated-inputs |
| 6908 | (list python-matplotlib python-numpy python-scipy)) |
| 6909 | (native-inputs |
| 6910 | (list unzip)) |
| 6911 | (home-page "https://github.com/konstantint/matplotlib-venn") |
| 6912 | (synopsis "Plot area-proportional Venn diagrams") |
| 6913 | (description |
| 6914 | "This package provides tools for plotting area-proportional two- and |
| 6915 | three-way Venn diagrams in @code{matplotlib}.") |
| 6916 | (license license:expat))) |
| 6917 | |
| 6918 | (define-public python-pysnptools |
| 6919 | (package |
| 6920 | (name "python-pysnptools") |
| 6921 | (version "0.4.11") |
| 6922 | (source |
| 6923 | (origin |
| 6924 | (method url-fetch) |
| 6925 | (uri (pypi-uri "pysnptools" version)) |
| 6926 | (sha256 |
| 6927 | (base32 |
| 6928 | "0gxr0bjix307wvk0qh7vkafbxbzfpdmq0wlswpxyyaymy0fwcypv")))) |
| 6929 | (build-system python-build-system) |
| 6930 | (arguments |
| 6931 | `(#:tests? #f ; no test data are included |
| 6932 | #:phases |
| 6933 | (modify-phases %standard-phases |
| 6934 | (replace 'check |
| 6935 | (lambda* (#:key inputs outputs tests? #:allow-other-keys) |
| 6936 | (if tests? |
| 6937 | (begin |
| 6938 | (add-installed-pythonpath inputs outputs) |
| 6939 | (invoke "python3" "pysnptools/test.py")) |
| 6940 | #t)))))) |
| 6941 | (propagated-inputs |
| 6942 | (list python-dill |
| 6943 | python-h5py |
| 6944 | python-numpy |
| 6945 | python-pandas |
| 6946 | python-psutil |
| 6947 | python-scipy)) |
| 6948 | (native-inputs |
| 6949 | (list python-cython)) |
| 6950 | (home-page "http://microsoftgenomics.github.io/PySnpTools/") |
| 6951 | (synopsis "Library for reading and manipulating genetic data") |
| 6952 | (description |
| 6953 | "PySnpTools is a library for reading and manipulating genetic data. It |
| 6954 | can, for example, efficiently read whole PLINK *.bed/bim/fam files or parts of |
| 6955 | those files. It can also efficiently manipulate ranges of integers using set |
| 6956 | operators such as union, intersection, and difference.") |
| 6957 | (license license:asl2.0))) |
| 6958 | |
| 6959 | (define-public python-pykdtree |
| 6960 | (package |
| 6961 | (name "python-pykdtree") |
| 6962 | (version "1.3.4") |
| 6963 | (source |
| 6964 | (origin |
| 6965 | (method url-fetch) |
| 6966 | (uri (pypi-uri "pykdtree" version)) |
| 6967 | (sha256 |
| 6968 | (base32 "0p8n2ljdacfixkiw092974dmhy4s1c0h032ii1z9kwi9h5h5rgmy")))) |
| 6969 | (build-system python-build-system) |
| 6970 | (native-inputs |
| 6971 | (list python-nose)) |
| 6972 | (propagated-inputs |
| 6973 | (list python-numpy)) |
| 6974 | (home-page "https://github.com/storpipfugl/pykdtree") |
| 6975 | (synopsis "Fast kd-tree implementation with OpenMP-enabled queries") |
| 6976 | (description |
| 6977 | "@code{pykdtree} is a kd-tree implementation for fast nearest neighbour |
| 6978 | search in Python.") |
| 6979 | (license license:lgpl3+))) |
| 6980 | |
| 6981 | (define-public python-wurlitzer |
| 6982 | (package |
| 6983 | (name "python-wurlitzer") |
| 6984 | (version "2.0.1") |
| 6985 | (source |
| 6986 | (origin |
| 6987 | (method url-fetch) |
| 6988 | (uri (pypi-uri "wurlitzer" version)) |
| 6989 | (sha256 |
| 6990 | (base32 "0hvmbc41kdwrjns8z1s4a59a4azdvzb8q3vs7nn1li4qm4l0g3yh")))) |
| 6991 | (build-system python-build-system) |
| 6992 | (arguments |
| 6993 | '(#:phases |
| 6994 | (modify-phases %standard-phases |
| 6995 | (replace 'check |
| 6996 | (lambda _ |
| 6997 | (invoke "pytest" "-vv" "test.py")))))) |
| 6998 | (native-inputs |
| 6999 | (list python-mock python-pytest)) |
| 7000 | (home-page "https://github.com/minrk/wurlitzer") |
| 7001 | (synopsis "Capture C-level output in context managers") |
| 7002 | (description |
| 7003 | "This library helps to redirect @code{sys.stdout} to a stream or a file |
| 7004 | while executing some piece of code, including C code running within a Python |
| 7005 | process.") |
| 7006 | (license license:expat))) |
| 7007 | |
| 7008 | (define-public python-socksipy-branch |
| 7009 | (package |
| 7010 | (name "python-socksipy-branch") |
| 7011 | (version "1.01") |
| 7012 | (source |
| 7013 | (origin |
| 7014 | (method url-fetch) |
| 7015 | (uri (pypi-uri "SocksiPy-branch" version)) |
| 7016 | (sha256 |
| 7017 | (base32 |
| 7018 | "01l41v4g7fy9fzvinmjxy6zcbhgqaif8dhdqm4w90fwcw9h51a8p")))) |
| 7019 | (build-system python-build-system) |
| 7020 | (arguments |
| 7021 | `(#:tests? #f)) ; There are no tests |
| 7022 | (home-page "https://code.google.com/archive/p/socksipy-branch/") |
| 7023 | (synopsis "Python SOCKS module") |
| 7024 | (description |
| 7025 | "SocksiPy - A Python SOCKS client module. It provides a |
| 7026 | socket-like interface that supports connections to any TCP |
| 7027 | service through the use of a SOCKS4, SOCKS5 or HTTP proxy. |
| 7028 | The original version was developed by Dan Haim, this is a |
| 7029 | branch created by Mario Vilas to address some open issues, |
| 7030 | as the original project seems to have been abandoned circa 2007.") |
| 7031 | (license license:bsd-3))) |
| 7032 | |
| 7033 | (define-public python-socksipychain |
| 7034 | (package |
| 7035 | (name "python-socksipychain") |
| 7036 | (version "2.1.2") |
| 7037 | (source |
| 7038 | (origin |
| 7039 | (method git-fetch) |
| 7040 | (uri (git-reference |
| 7041 | (url "https://github.com/pagekite/PySocksipyChain") |
| 7042 | (commit (string-append "v" version)))) |
| 7043 | (file-name (git-file-name name version)) |
| 7044 | (sha256 |
| 7045 | (base32 |
| 7046 | "02pp994qmiivkdx4y6az5q80l6rzy8g6d2ipvp7kns7lsxvmc2y7")))) |
| 7047 | (build-system python-build-system) |
| 7048 | (arguments |
| 7049 | `(#:tests? #f)) ; Tests try to access the network. |
| 7050 | (propagated-inputs |
| 7051 | (list python-six)) |
| 7052 | (home-page "http://pagekite.net/wiki/Floss/PySocksipyChain/") |
| 7053 | (synopsis "Python SOCKS module with chained proxies support") |
| 7054 | (description |
| 7055 | "SocksiPyChain is a modified version of the SocksiPy SOCKS module, which |
| 7056 | adds support for arbitrary chaining of proxy servers and various modes of |
| 7057 | TLS/SSL encryption. It was developed for use in PageKite, and also includes |
| 7058 | a simple netcat replacement with chaining support.") |
| 7059 | (license license:bsd-3))) |
| 7060 | |
| 7061 | (define-public python-pycodestyle |
| 7062 | (package |
| 7063 | (name "python-pycodestyle") |
| 7064 | (version "2.8.0") |
| 7065 | (source |
| 7066 | (origin |
| 7067 | (method url-fetch) |
| 7068 | (uri (pypi-uri "pycodestyle" version)) |
| 7069 | (sha256 |
| 7070 | (base32 |
| 7071 | "0zxyrg8029lzjhima6l5nk6y0z6lm5wfp9qchz3s33j3xx3mipgd")))) |
| 7072 | (build-system python-build-system) |
| 7073 | (arguments |
| 7074 | `(#:phases |
| 7075 | (modify-phases %standard-phases |
| 7076 | (replace 'check |
| 7077 | (lambda* (#:key tests? #:allow-other-keys) |
| 7078 | (when tests? |
| 7079 | (invoke "pytest" "-vv"))))))) |
| 7080 | (native-inputs |
| 7081 | (list python-pytest)) |
| 7082 | (home-page "https://pycodestyle.readthedocs.io/") |
| 7083 | (synopsis "Python style guide checker") |
| 7084 | (description "@code{pycodestyle} (formerly pep8) is a tool to check |
| 7085 | Python code against some of the style conventions in |
| 7086 | @url{http://www.python.org/dev/peps/pep-0008/,PEP 8}.") |
| 7087 | (license license:expat))) |
| 7088 | |
| 7089 | (define-public python-pycodestyle-2.6 |
| 7090 | (package |
| 7091 | (inherit python-pycodestyle) |
| 7092 | (version "2.6.0") |
| 7093 | (source (origin |
| 7094 | (method url-fetch) |
| 7095 | (uri (pypi-uri "pycodestyle" version)) |
| 7096 | (sha256 |
| 7097 | (base32 |
| 7098 | "0bhr6ia0hmgx3nhgibc9pmkzhlh1zcqk707i5fbxgs702ll7v2n5")))))) |
| 7099 | |
| 7100 | (define-public python-multidict |
| 7101 | (package |
| 7102 | (name "python-multidict") |
| 7103 | (version "5.2.0") |
| 7104 | (source |
| 7105 | (origin |
| 7106 | (method url-fetch) |
| 7107 | (uri (pypi-uri "multidict" version)) |
| 7108 | (sha256 |
| 7109 | (base32 |
| 7110 | "1kjrxav572j45xvr1iy60zb2g8zqvrinzdkl4ax36js4vczckl8d")))) |
| 7111 | (build-system python-build-system) |
| 7112 | (arguments |
| 7113 | '(#:phases (modify-phases %standard-phases |
| 7114 | (replace 'check |
| 7115 | (lambda* (#:key tests? #:allow-other-keys) |
| 7116 | (if tests? |
| 7117 | (invoke "pytest" "-vv") |
| 7118 | (format #t "test suite not run~%"))))))) |
| 7119 | (native-inputs |
| 7120 | (list python-pytest python-pytest-cov)) |
| 7121 | (home-page "https://github.com/aio-libs/multidict/") |
| 7122 | (synopsis "Multidict implementation") |
| 7123 | (description "Multidict is dict-like collection of key-value pairs |
| 7124 | where key might be occurred more than once in the container.") |
| 7125 | (license license:asl2.0))) |
| 7126 | |
| 7127 | (define-public python-orderedmultidict |
| 7128 | (package |
| 7129 | (name "python-orderedmultidict") |
| 7130 | (version "1.0.1") |
| 7131 | (source |
| 7132 | (origin |
| 7133 | (method url-fetch) |
| 7134 | (uri (pypi-uri "orderedmultidict" version)) |
| 7135 | (sha256 |
| 7136 | (base32 |
| 7137 | "1bc2v0yflsxjyyjx4q9wqx0j3bvzcw9z87d5pz4iqac7bsxhn1q4")))) |
| 7138 | (build-system python-build-system) |
| 7139 | (propagated-inputs |
| 7140 | (list python-six)) |
| 7141 | (native-inputs |
| 7142 | (list python-flake8 python-pycodestyle)) |
| 7143 | (home-page "https://github.com/gruns/orderedmultidict") |
| 7144 | (synopsis "Python Ordered Multivalue Dictionary - omdict") |
| 7145 | (description "This package contains a library for ordered multivalue |
| 7146 | dictionaries. A multivalue dictionary is a dictionary that can store |
| 7147 | multiple values for the same key. An ordered multivalue dictionary is a |
| 7148 | multivalue dictionary that retains the order of insertions and deletions.") |
| 7149 | (license license:unlicense))) |
| 7150 | |
| 7151 | (define-public python-autocommand |
| 7152 | (package |
| 7153 | (name "python-autocommand") |
| 7154 | (version "2.2.1") |
| 7155 | (source |
| 7156 | (origin |
| 7157 | (method url-fetch) |
| 7158 | (uri (pypi-uri "autocommand" version)) |
| 7159 | (sha256 |
| 7160 | (base32 "03qp9xx4dq81ljhf56r21gp5j0lpqs1vaw99g0d84i97s3lj1m7y")))) |
| 7161 | (build-system python-build-system) |
| 7162 | (arguments |
| 7163 | (list |
| 7164 | #:phases |
| 7165 | #~(modify-phases %standard-phases |
| 7166 | (replace 'check |
| 7167 | (lambda* (#:key tests? #:allow-other-keys) |
| 7168 | (when tests? |
| 7169 | ;; This test fails with an invalid syntax error on 'task1 = |
| 7170 | ;; asyncio.async(coro_1())' (see: |
| 7171 | ;; https://github.com/Lucretiel/autocommand/issues/20). |
| 7172 | (delete-file "test/test_autoasync.py") |
| 7173 | (invoke "pytest" "-vv"))))))) |
| 7174 | (native-inputs (list python-pytest python-pytest-asyncio)) |
| 7175 | (home-page "https://github.com/Lucretiel/autocommand") |
| 7176 | (synopsis "Python library to build a command-line from a function") |
| 7177 | (description "@code{autocommand} is library to automatically generate and |
| 7178 | run simple @code{argparse} parsers from function signatures.") |
| 7179 | (license license:lgpl3+))) |
| 7180 | |
| 7181 | (define-public python-autopage |
| 7182 | (package |
| 7183 | (name "python-autopage") |
| 7184 | (version "0.5.1") |
| 7185 | (source (origin |
| 7186 | (method url-fetch) |
| 7187 | (uri (pypi-uri "autopage" version)) |
| 7188 | (sha256 |
| 7189 | (base32 |
| 7190 | "169ixll1ncm2a2pcc86665ikjv2lrzs10p6c1w4yj55p3gk3xgh1")))) |
| 7191 | (build-system pyproject-build-system) |
| 7192 | (arguments |
| 7193 | (list |
| 7194 | #:phases |
| 7195 | #~(modify-phases %standard-phases |
| 7196 | (add-before 'check 'disable-e2e-tests |
| 7197 | (lambda _ |
| 7198 | ;; These tests rely on KeyboardInterrupts which do not |
| 7199 | ;; work in the build container. |
| 7200 | (delete-file "autopage/tests/test_end_to_end.py")))))) |
| 7201 | (native-inputs |
| 7202 | (list python-pypa-build |
| 7203 | python-setuptools |
| 7204 | python-wheel |
| 7205 | ;; For tests. |
| 7206 | python-fixtures |
| 7207 | python-pytest |
| 7208 | python-testtools)) |
| 7209 | (home-page "https://github.com/zaneb/autopage") |
| 7210 | (synopsis "Automatic paging for console output") |
| 7211 | (description |
| 7212 | "Autopage is a Python library to automatically display terminal output |
| 7213 | from a program in a @dfn{pager} such as @command{less}.") |
| 7214 | (license license:asl2.0))) |
| 7215 | |
| 7216 | (define-public python-autopep8 |
| 7217 | (package |
| 7218 | (name "python-autopep8") |
| 7219 | (version "1.5.3") |
| 7220 | (source |
| 7221 | (origin |
| 7222 | (method url-fetch) |
| 7223 | (uri (pypi-uri "autopep8" version)) |
| 7224 | (sha256 |
| 7225 | (base32 |
| 7226 | "1w6vh627vrmgfbvrdcxrc3k4gxcldrb2lpgxv9irkdds851qrzb0")))) |
| 7227 | (build-system python-build-system) |
| 7228 | (propagated-inputs |
| 7229 | (list python-pycodestyle python-toml)) |
| 7230 | (home-page "https://github.com/hhatto/autopep8") |
| 7231 | (synopsis "Format Python code according to the PEP 8 style guide") |
| 7232 | (description |
| 7233 | "@code{autopep8} automatically formats Python code to conform to |
| 7234 | the PEP 8 style guide. It uses the pycodestyle utility to determine |
| 7235 | what parts of the code needs to be formatted. @code{autopep8} is |
| 7236 | capable of fixing most of the formatting issues that can be reported |
| 7237 | by pycodestyle.") |
| 7238 | (license (license:non-copyleft |
| 7239 | "https://github.com/hhatto/autopep8/blob/master/LICENSE")))) |
| 7240 | |
| 7241 | (define-public python-distlib |
| 7242 | (package |
| 7243 | (name "python-distlib") |
| 7244 | (version "0.3.1") |
| 7245 | (source |
| 7246 | (origin |
| 7247 | (method url-fetch) |
| 7248 | (uri (pypi-uri "distlib" version ".zip")) |
| 7249 | (sha256 |
| 7250 | (base32 |
| 7251 | "1wdzv7fsjhrkhh1wfkarlhcwa8m00mgcpdsvknmf2qy8f9l13xpd")))) |
| 7252 | (build-system python-build-system) |
| 7253 | (arguments |
| 7254 | `(#:phases |
| 7255 | (modify-phases %standard-phases |
| 7256 | (add-before 'build 'no-/bin/sh |
| 7257 | (lambda _ |
| 7258 | (substitute* '("distlib/scripts.py" "tests/test_scripts.py") |
| 7259 | (("/bin/sh") (which "sh"))) |
| 7260 | #t)) |
| 7261 | (add-before 'check 'prepare-test-env |
| 7262 | (lambda _ |
| 7263 | (setenv "HOME" "/tmp") |
| 7264 | ;; NOTE: Any value works, the variable just has to be present. |
| 7265 | (setenv "SKIP_ONLINE" "1") |
| 7266 | #t))))) |
| 7267 | (native-inputs (list unzip)) |
| 7268 | (home-page "https://bitbucket.org/pypa/distlib") |
| 7269 | (synopsis "Distribution utilities") |
| 7270 | (description "Distlib is a library which implements low-level functions that |
| 7271 | relate to packaging and distribution of Python software. It is intended to be |
| 7272 | used as the basis for third-party packaging tools.") |
| 7273 | (license license:psfl))) |
| 7274 | |
| 7275 | (define-public python-distutils-extra |
| 7276 | (package |
| 7277 | (name "python-distutils-extra") |
| 7278 | (version "2.38") |
| 7279 | (source |
| 7280 | (origin |
| 7281 | (method url-fetch) |
| 7282 | (uri (string-append "https://launchpad.net/python-distutils-extra/trunk/" |
| 7283 | version "/+download/python-distutils-extra-" |
| 7284 | version ".tar.gz")) |
| 7285 | (sha256 |
| 7286 | (base32 |
| 7287 | "0lx15kcbby9zisx33p2h5hgakgwh2bvh0ibag8z0px4j6ifhs41x")))) |
| 7288 | (build-system python-build-system) |
| 7289 | (home-page "https://launchpad.net/python-distutils-extra/") |
| 7290 | (synopsis "Enhancements to Python's distutils") |
| 7291 | (description |
| 7292 | "The python-distutils-extra module enables you to easily integrate |
| 7293 | gettext support, themed icons, and scrollkeeper-based documentation into |
| 7294 | Python's distutils.") |
| 7295 | (license license:gpl2))) |
| 7296 | |
| 7297 | (define-public python-olefile |
| 7298 | (package |
| 7299 | (name "python-olefile") |
| 7300 | (version "0.46") |
| 7301 | (source |
| 7302 | (origin |
| 7303 | (method url-fetch) |
| 7304 | (uri (string-append "https://github.com/decalage2/olefile/releases/" |
| 7305 | "download/v" version "/olefile-" version ".tar.gz")) |
| 7306 | (file-name (string-append name "-" version ".tar.gz")) |
| 7307 | (sha256 |
| 7308 | (base32 |
| 7309 | "1kjxh4gr651hpqkjfv89cfzr40hyvf3vjlda7mifiail83j7j07m")))) |
| 7310 | (build-system python-build-system) |
| 7311 | (home-page "https://www.decalage.info/python/olefileio") |
| 7312 | (synopsis "Read and write Microsoft OLE2 files") |
| 7313 | (description |
| 7314 | "@code{olefile} can parse, read and write Microsoft OLE2 files (Structured |
| 7315 | Storage or Compound Document, Microsoft Office). It is an improved version of |
| 7316 | the OleFileIO module from PIL, the Python Image Library.") |
| 7317 | (license license:bsd-3))) |
| 7318 | |
| 7319 | (define-public python-pypdf3 |
| 7320 | (package |
| 7321 | (name "python-pypdf3") |
| 7322 | (version "1.0.5") |
| 7323 | (source |
| 7324 | (origin |
| 7325 | (method url-fetch) |
| 7326 | (uri (pypi-uri "PyPDF3" version)) |
| 7327 | (sha256 |
| 7328 | (base32 "018hlq9q2qa96vw4j7ppq352znykldwy98h2w9qcpkvpi93sjqhc")))) |
| 7329 | (build-system python-build-system) |
| 7330 | (propagated-inputs |
| 7331 | (list python-tqdm)) |
| 7332 | (home-page "https://github.com/sfneal/PyPDF3") |
| 7333 | (synopsis "Utility to read and write PDFs with Python") |
| 7334 | (description "PyPDF3 is a pure-python PDF library capable of splitting, |
| 7335 | merging together, cropping, and transforming the pages of PDF files. It can |
| 7336 | also add custom data, viewing options, and passwords to PDF files. It can |
| 7337 | retrieve text and metadata from PDFs as well as merge entire files together.") |
| 7338 | (license license:bsd-3))) |
| 7339 | |
| 7340 | (define-public python-pikepdf |
| 7341 | (package |
| 7342 | (name "python-pikepdf") |
| 7343 | (version "2.16.1") |
| 7344 | (source |
| 7345 | (origin |
| 7346 | (method url-fetch) |
| 7347 | (uri (pypi-uri "pikepdf" version)) |
| 7348 | (sha256 |
| 7349 | (base32 "1phdpi9cm2pbvgcxqvwr8ck327sxhdw4dnxmzhrbf7hzydmgykg2")))) |
| 7350 | (build-system python-build-system) |
| 7351 | (arguments |
| 7352 | `(#:tests? #false)) ;require python-xmp-toolkit |
| 7353 | (native-inputs |
| 7354 | (list pybind11 |
| 7355 | python-setuptools |
| 7356 | python-setuptools-scm |
| 7357 | python-setuptools-scm-git-archive |
| 7358 | python-toml |
| 7359 | python-wheel)) |
| 7360 | (inputs |
| 7361 | (list qpdf)) |
| 7362 | (propagated-inputs |
| 7363 | (list python-lxml python-pillow)) |
| 7364 | (home-page "https://github.com/pikepdf/pikepdf") |
| 7365 | (synopsis "Read and write PDFs with Python") |
| 7366 | (description |
| 7367 | "pikepdf is a Python library for reading and writing PDF files.") |
| 7368 | (license license:mpl2.0))) |
| 7369 | |
| 7370 | (define-public python-pillow |
| 7371 | (package |
| 7372 | (name "python-pillow") |
| 7373 | (version "9.2.0") |
| 7374 | (source (origin |
| 7375 | (method url-fetch) |
| 7376 | (uri (pypi-uri "Pillow" version)) |
| 7377 | (sha256 |
| 7378 | (base32 |
| 7379 | "011wgm1mssjchpva9wsi2a07im9czyjvik137xlp5f0g7vykdrkm")) |
| 7380 | (modules '((guix build utils))) |
| 7381 | (snippet '(begin |
| 7382 | (delete-file-recursively "src/thirdparty"))))) |
| 7383 | (build-system python-build-system) |
| 7384 | (native-inputs (list python-pytest)) |
| 7385 | (inputs (list freetype |
| 7386 | lcms |
| 7387 | libjpeg-turbo |
| 7388 | libtiff |
| 7389 | libwebp |
| 7390 | openjpeg |
| 7391 | zlib)) |
| 7392 | (propagated-inputs (list python-olefile)) |
| 7393 | (arguments |
| 7394 | `(#:phases (modify-phases %standard-phases |
| 7395 | (add-after 'unpack 'patch-ldconfig |
| 7396 | (lambda _ |
| 7397 | (substitute* "setup.py" |
| 7398 | (("\\['/sbin/ldconfig', '-p'\\]") "['true']")))) |
| 7399 | (replace 'check |
| 7400 | (lambda* (#:key outputs inputs tests? #:allow-other-keys) |
| 7401 | (when tests? |
| 7402 | (setenv "HOME" |
| 7403 | (getcwd)) |
| 7404 | (add-installed-pythonpath inputs outputs) |
| 7405 | (invoke "python" "selftest.py" "--installed") |
| 7406 | (invoke "python" "-m" "pytest" "-vv"))))))) |
| 7407 | (home-page "https://python-pillow.org") |
| 7408 | (synopsis "Fork of the Python Imaging Library") |
| 7409 | (description |
| 7410 | "The Python Imaging Library adds image processing capabilities to your |
| 7411 | Python interpreter. This library provides extensive file format support, an |
| 7412 | efficient internal representation, and fairly powerful image processing |
| 7413 | capabilities. The core image library is designed for fast access to data |
| 7414 | stored in a few basic pixel formats. It should provide a solid foundation for |
| 7415 | a general image processing tool.") |
| 7416 | (properties `((cpe-name . "pillow"))) |
| 7417 | (license (license:x11-style |
| 7418 | "http://www.pythonware.com/products/pil/license.htm" |
| 7419 | "The PIL Software License")))) |
| 7420 | |
| 7421 | (define-public python-pillow-2.9 |
| 7422 | (package |
| 7423 | (inherit python-pillow) |
| 7424 | (version "2.9.0") |
| 7425 | (source |
| 7426 | (origin |
| 7427 | (method url-fetch) |
| 7428 | (uri (pypi-uri "Pillow" version)) |
| 7429 | (sha256 |
| 7430 | (base32 |
| 7431 | "0ada7lf3lmbdsqm3b7ja920p1pllyfhmqndr85ikpj77fmz9s5qg")))) |
| 7432 | (arguments |
| 7433 | (substitute-keyword-arguments (package-arguments python-pillow) |
| 7434 | ((#:tests? _ #f) #f))) |
| 7435 | (properties '((hidden? #t))))) |
| 7436 | |
| 7437 | (define-public python-pillow-simd |
| 7438 | (package |
| 7439 | (inherit python-pillow) |
| 7440 | (name "python-pillow-simd") |
| 7441 | (version "9.0.0.post1") |
| 7442 | ;; The PyPI tarball does not include test files. |
| 7443 | (source |
| 7444 | (origin |
| 7445 | (method git-fetch) |
| 7446 | (uri (git-reference |
| 7447 | (url "https://github.com/uploadcare/pillow-simd") |
| 7448 | (commit (string-append "v" version)))) |
| 7449 | (file-name (git-file-name name version)) |
| 7450 | (sha256 |
| 7451 | (base32 "1dnvsln451aw3qy2cxg2ndd5mcanf5nrhxw9l7mcam730635hdm9")))) |
| 7452 | (inputs |
| 7453 | (modify-inputs (package-inputs python-pillow) |
| 7454 | (prepend libraqm libimagequant))) |
| 7455 | (home-page "https://github.com/uploadcare/pillow-simd") |
| 7456 | (synopsis "Fork of the Python Imaging Library (Pillow)") |
| 7457 | (description "This package is a fork of Pillow which adds support for SIMD |
| 7458 | parallelism."))) |
| 7459 | |
| 7460 | (define-public python-imagecodecs |
| 7461 | (package |
| 7462 | (name "python-imagecodecs") |
| 7463 | (version "2021.3.31") |
| 7464 | (source |
| 7465 | (origin |
| 7466 | (method url-fetch) |
| 7467 | (uri (pypi-uri "imagecodecs" version)) |
| 7468 | (sha256 |
| 7469 | (base32 |
| 7470 | "0q7pslb6wd56vbcq2mdxwsiha32mxjr7mgqqfbq5w42q601p9pi0")) |
| 7471 | (modules '((guix build utils))) |
| 7472 | (snippet |
| 7473 | '(begin |
| 7474 | ;; Unbundle 3rd party modules. |
| 7475 | (delete-file-recursively "3rdparty") |
| 7476 | ;; Delete pre-generated Cython files. |
| 7477 | (for-each delete-file (find-files "imagecodecs" "_.*\\.c$")) |
| 7478 | #t)))) |
| 7479 | (build-system python-build-system) |
| 7480 | (arguments |
| 7481 | `(#:tests? #f ; Tests are disabled, because dependencies are missing. |
| 7482 | #:phases |
| 7483 | (modify-phases %standard-phases |
| 7484 | (add-after 'unpack 'create-configuration |
| 7485 | (lambda* (#:key inputs #:allow-other-keys) |
| 7486 | ;; By default everything is enabled. We can selectively disable |
| 7487 | ;; extensions (and thus dependencies) by deleting them from the |
| 7488 | ;; EXTENSIONS dictionary. This is upstream’s preferred way. |
| 7489 | (call-with-output-file "imagecodecs_distributor_setup.py" |
| 7490 | (lambda (port) |
| 7491 | (format port "\ |
| 7492 | def customize_build(EXTENSIONS, OPTIONS): |
| 7493 | del EXTENSIONS['aec'] |
| 7494 | del EXTENSIONS['avif'] |
| 7495 | del EXTENSIONS['bitshuffle'] |
| 7496 | del EXTENSIONS['deflate'] |
| 7497 | del EXTENSIONS['jpeg2k'] |
| 7498 | del EXTENSIONS['jpeg12'] |
| 7499 | del EXTENSIONS['jpegls'] |
| 7500 | del EXTENSIONS['jpegxl'] |
| 7501 | del EXTENSIONS['jpegxr'] |
| 7502 | del EXTENSIONS['lerc'] |
| 7503 | del EXTENSIONS['ljpeg'] |
| 7504 | del EXTENSIONS['lzf'] |
| 7505 | del EXTENSIONS['zfp'] |
| 7506 | del EXTENSIONS['zopfli'] |
| 7507 | OPTIONS['cythonize'] |
| 7508 | "))))) |
| 7509 | ;; XXX: The installed scripts import packages that depend on |
| 7510 | ;; this package; disable import check to avoid the cycle. |
| 7511 | (delete 'sanity-check)))) |
| 7512 | (inputs |
| 7513 | (list c-blosc |
| 7514 | giflib |
| 7515 | brotli |
| 7516 | libjpeg-turbo |
| 7517 | libpng |
| 7518 | libtiff |
| 7519 | libwebp |
| 7520 | lz4 |
| 7521 | snappy |
| 7522 | xz |
| 7523 | zlib |
| 7524 | `(,zstd "lib"))) |
| 7525 | (propagated-inputs |
| 7526 | ;; For the Python library. |
| 7527 | (list python-numpy)) |
| 7528 | (native-inputs |
| 7529 | ;; For building. |
| 7530 | (list python-cython |
| 7531 | ;; For testing. Incomplete. |
| 7532 | ;("python-numcodecs" ,python-numcodecs) |
| 7533 | ;("python-zarr" ,python-zarr) |
| 7534 | ;("python-pytest" ,python-pytest) |
| 7535 | )) |
| 7536 | (home-page "https://www.lfd.uci.edu/~gohlke/") |
| 7537 | (synopsis |
| 7538 | "Image transformation, compression, and decompression codecs") |
| 7539 | (description |
| 7540 | "Imagecodecs is a Python library that provides block-oriented, in-memory |
| 7541 | buffer transformation, compression, and decompression functions for use in the |
| 7542 | tifffile, czifile, and other scientific image input/output modules.") |
| 7543 | (license license:bsd-3))) |
| 7544 | |
| 7545 | (define-public python-property-manager |
| 7546 | (package |
| 7547 | (name "python-property-manager") |
| 7548 | (version "3.0") |
| 7549 | (source |
| 7550 | (origin |
| 7551 | (method url-fetch) |
| 7552 | (uri (pypi-uri "property-manager" version)) |
| 7553 | (sha256 |
| 7554 | (base32 "0m3w4spr8f39xnm65naw29ncal4r453kn7ndqb63rwbsmslnvrwk")))) |
| 7555 | (build-system python-build-system) |
| 7556 | (native-inputs |
| 7557 | (list python-pytest-cov)) |
| 7558 | (propagated-inputs |
| 7559 | (list python-verboselogs |
| 7560 | python-humanfriendly |
| 7561 | python-coloredlogs)) |
| 7562 | (home-page "https://github.com/xolox/python-property-manager") |
| 7563 | (synopsis "Useful property variants for Python programming") |
| 7564 | (description "The @code{property-manager} package defines several custom |
| 7565 | property variants for Python programming including required properties, |
| 7566 | writable properties, cached properties, etc.") |
| 7567 | (license license:expat))) ; MIT license |
| 7568 | |
| 7569 | (define-public python-executing |
| 7570 | (package |
| 7571 | (name "python-executing") |
| 7572 | (version "0.8.2") |
| 7573 | (source |
| 7574 | (origin |
| 7575 | (method url-fetch) |
| 7576 | (uri (pypi-uri "executing" version)) |
| 7577 | (sha256 |
| 7578 | (base32 "08q0xh9fd8k41sqpp23q6fb9bf7yj4y2q6sv30pj36vvk8pg8fy2")))) |
| 7579 | (build-system python-build-system) |
| 7580 | (arguments |
| 7581 | `(#:tests? #f)) ; TODO: tests require python-asttokens |
| 7582 | (native-inputs |
| 7583 | (list python-setuptools-scm python-toml)) |
| 7584 | (home-page "https://github.com/alexmojaki/executing") |
| 7585 | (synopsis "Get information about what a Python frame is currently doing") |
| 7586 | (description "This package lets you get information about what a frame is |
| 7587 | currently doing, particularly the AST node being executed.") |
| 7588 | (license license:expat))) |
| 7589 | |
| 7590 | (define-public python-executor |
| 7591 | (package |
| 7592 | (name "python-executor") |
| 7593 | (version "23.2") |
| 7594 | (source |
| 7595 | (origin |
| 7596 | (method url-fetch) |
| 7597 | (uri (pypi-uri "executor" version)) |
| 7598 | (sha256 |
| 7599 | (base32 "0g83yr54j0vcwhy6h7n0jsd7q0q630kwa6v9kqzlzrm9xj6c3ip1")))) |
| 7600 | (build-system python-build-system) |
| 7601 | (arguments |
| 7602 | `(#:tests? #f)) ; TODO: tests require root/sudo |
| 7603 | (propagated-inputs |
| 7604 | (list python-six |
| 7605 | python-property-manager |
| 7606 | python-fasteners |
| 7607 | python-virtualenv)) |
| 7608 | (home-page "https://github.com/xolox/python-executor") |
| 7609 | (synopsis "Programmer friendly subprocess wrapper") |
| 7610 | (description "The @code{executor} package is a simple wrapper for Python’s |
| 7611 | subprocess module that makes it very easy to handle subprocesses on UNIX |
| 7612 | systems with proper escaping of arguments and error checking currently doing, |
| 7613 | particularly the AST node being executed.") |
| 7614 | (license license:expat))) ; MIT license |
| 7615 | |
| 7616 | (define-public python-roifile |
| 7617 | (package |
| 7618 | (name "python-roifile") |
| 7619 | (version "2020.11.28") |
| 7620 | (source |
| 7621 | (origin |
| 7622 | (method url-fetch) |
| 7623 | (uri (pypi-uri "roifile" version)) |
| 7624 | (sha256 |
| 7625 | (base32 |
| 7626 | "04argnc7qccybkrj9ww18bf81ghsghhh93hnqy3p111rcdlyn66p")))) |
| 7627 | (build-system python-build-system) |
| 7628 | (arguments `(#:tests? #f)) ; there are none |
| 7629 | (propagated-inputs |
| 7630 | (list python-numpy)) |
| 7631 | (home-page "https://www.lfd.uci.edu/~gohlke/") |
| 7632 | (synopsis "Read and write ImageJ ROI format") |
| 7633 | (description "Roifile is a Python library to read, write, create, and plot |
| 7634 | ImageJ ROIs, an undocumented and ImageJ application specific format to store |
| 7635 | regions of interest, geometric shapes, paths, text, etc for image overlays.") |
| 7636 | (license license:bsd-3))) |
| 7637 | |
| 7638 | (define-public python-tifffile |
| 7639 | (package |
| 7640 | (name "python-tifffile") |
| 7641 | (version "2021.4.8") |
| 7642 | (source |
| 7643 | (origin |
| 7644 | (method url-fetch) |
| 7645 | (uri (pypi-uri "tifffile" version)) |
| 7646 | (sha256 |
| 7647 | (base32 |
| 7648 | "16r0hw7shka1bqf28bv198lj2jhf2r9gy3s5zv4nf5cfsfm8pajm")))) |
| 7649 | (build-system python-build-system) |
| 7650 | ;; Tests require lfdfiles, which depends on tifffile |
| 7651 | (arguments `(#:tests? #f)) |
| 7652 | (propagated-inputs |
| 7653 | (list python-numpy python-imagecodecs)) |
| 7654 | (home-page "https://www.lfd.uci.edu/~gohlke/") |
| 7655 | (synopsis "Read and write TIFF(r) files") |
| 7656 | (description "This package lets you read image and metadata from many |
| 7657 | bio-scientific formats such as plain TIFF, BigTIFF, OME-TIFF, STK, LSM, SGI, |
| 7658 | NIH, ImageJ, MicroManager, MD GEL, and FluoView files. It also lets you write |
| 7659 | numpy arrays to TIFF, BigTIFF, and ImageJ hyperstack compatible files.") |
| 7660 | (license license:bsd-3))) |
| 7661 | |
| 7662 | (define-public python-lfdfiles |
| 7663 | (package |
| 7664 | (name "python-lfdfiles") |
| 7665 | (version "2021.2.22") |
| 7666 | (source |
| 7667 | (origin |
| 7668 | (method url-fetch) |
| 7669 | (uri (pypi-uri "lfdfiles" version)) |
| 7670 | (sha256 |
| 7671 | (base32 |
| 7672 | "12fxm4v805dgjrih7x6jnl1wd7y7jw1rkhjs3d4am8s6qk1cbar2")) |
| 7673 | (modules '((guix build utils))) |
| 7674 | (snippet |
| 7675 | '(begin |
| 7676 | ;; Delete pre-generated Cython files. |
| 7677 | (for-each delete-file (find-files "lfdfiles" "_.*\\.c$")) |
| 7678 | #t)))) |
| 7679 | (build-system python-build-system) |
| 7680 | (arguments |
| 7681 | `(#:tests? #f)) ; No tests exist, despite a test dependency on pytest. |
| 7682 | (propagated-inputs |
| 7683 | (list python-click python-numpy python-tifffile)) |
| 7684 | (native-inputs (list python-cython)) |
| 7685 | (home-page "https://www.lfd.uci.edu/~gohlke/") |
| 7686 | (synopsis "Work with LFD data files") |
| 7687 | (description |
| 7688 | "Lfdfiles is a Python library and console script for reading, writing, |
| 7689 | converting, and viewing many of the proprietary file formats used to store |
| 7690 | experimental data and metadata at the Laboratory for Fluorescence Dynamics.") |
| 7691 | (license license:bsd-3))) |
| 7692 | |
| 7693 | (define-public python-imageio |
| 7694 | (package |
| 7695 | (name "python-imageio") |
| 7696 | (version "2.8.0") |
| 7697 | (source |
| 7698 | (origin |
| 7699 | (method url-fetch) |
| 7700 | (uri (pypi-uri "imageio" version)) |
| 7701 | (sha256 |
| 7702 | (base32 |
| 7703 | "1ksjl523fm0fikrd85llxfba35rc1qsgwadgr6mbn9kis79xcpzv")))) |
| 7704 | (build-system python-build-system) |
| 7705 | (arguments |
| 7706 | `(#:tests? #f ; many tests require online data |
| 7707 | #:phases |
| 7708 | (modify-phases %standard-phases |
| 7709 | (replace 'check |
| 7710 | (lambda* (#:key outputs inputs tests? #:allow-other-keys) |
| 7711 | (if tests? |
| 7712 | (begin |
| 7713 | ;; Make installed package available for running the tests. |
| 7714 | (add-installed-pythonpath inputs outputs) |
| 7715 | (invoke "pytest" "-vv")) |
| 7716 | #t)))))) |
| 7717 | (propagated-inputs |
| 7718 | (list python-numpy python-pillow python-psutil)) |
| 7719 | (native-inputs |
| 7720 | (list python-pytest)) |
| 7721 | (home-page "https://imageio.github.io/") |
| 7722 | (synopsis "Library for reading and writing a wide range of image data") |
| 7723 | (description |
| 7724 | "Imageio is a Python library that provides an easy interface to read and |
| 7725 | write a wide range of image data, including animated images, video, volumetric |
| 7726 | data, and scientific formats.") |
| 7727 | (license license:bsd-2))) |
| 7728 | |
| 7729 | (define-public python-pyvips |
| 7730 | (package |
| 7731 | (name "python-pyvips") |
| 7732 | (version "2.2.1") |
| 7733 | (source |
| 7734 | (origin |
| 7735 | (method url-fetch) |
| 7736 | (uri (pypi-uri "pyvips" version)) |
| 7737 | (sha256 |
| 7738 | (base32 "1dfbwwvnnsk4g2kj1pw654z9jq3mb72l1m8ma29858jpn12vn7dm")))) |
| 7739 | (build-system python-build-system) |
| 7740 | (arguments |
| 7741 | (list #:phases |
| 7742 | #~(modify-phases %standard-phases |
| 7743 | ;; Maybe switch to API mode (i.e., build the C extension)? |
| 7744 | ;; It is advertised as faster to start up and run. |
| 7745 | ;; However, even with ‘pkg-config’ and ‘python-pkgconfig’ in |
| 7746 | ;; ‘native-inputs’, the API mode build fails with: |
| 7747 | ;; |
| 7748 | ;; Falling back to ABI mode. Details: unable to find pkg-config package "vips" |
| 7749 | ;; |
| 7750 | ;; The build doesn't actually fail without the below |
| 7751 | ;; substitution, it's just slower because ‘setup.py’ tries |
| 7752 | ;; (unsuccessfully) to download the Python ‘pkgconfig’ module. |
| 7753 | (add-after 'unpack 'fix-build |
| 7754 | (lambda _ |
| 7755 | (substitute* "setup.py" |
| 7756 | (("^( +setup_)API\\(\\)\n" _ prefix) |
| 7757 | (string-append prefix "ABI()\n"))))) |
| 7758 | (add-after 'unpack 'fix-paths |
| 7759 | (lambda _ |
| 7760 | (substitute* "pyvips/__init__.py" |
| 7761 | (("^( +_vips_libname) = '(libvips.so.42)'" |
| 7762 | _ var libname) |
| 7763 | (format #f "~a = '~a/lib/~a'" |
| 7764 | var #$(this-package-input "vips") libname)) |
| 7765 | (("^( +_gobject_libname) = '(libgobject-2.0.so.0)'" |
| 7766 | _ var libname) |
| 7767 | (format #f "~a = '~a/lib/~a'" |
| 7768 | var #$(this-package-input "glib") libname))))) |
| 7769 | (replace 'check |
| 7770 | (lambda* (#:key tests? #:allow-other-keys) |
| 7771 | (when tests? |
| 7772 | (invoke "python" "setup.py" "test"))))))) |
| 7773 | (native-inputs |
| 7774 | (list python-pyperf |
| 7775 | python-pytest |
| 7776 | python-pytest-flake8 |
| 7777 | python-pytest-runner)) |
| 7778 | (inputs |
| 7779 | (list glib vips)) |
| 7780 | (propagated-inputs |
| 7781 | (list python-cffi)) |
| 7782 | (home-page "https://github.com/libvips/pyvips") |
| 7783 | (synopsis "Python bindings for VIPS") |
| 7784 | (description "The @code{pyvips} package provides Python bindings for VIPS, |
| 7785 | a multithreaded image-processing system with low memory needs.") |
| 7786 | (license license:expat))) |
| 7787 | |
| 7788 | (define-public python-pycparser |
| 7789 | (package |
| 7790 | (name "python-pycparser") |
| 7791 | (version "2.21") |
| 7792 | (source |
| 7793 | (origin |
| 7794 | (method url-fetch) |
| 7795 | (uri (pypi-uri "pycparser" version)) |
| 7796 | (sha256 |
| 7797 | (base32 |
| 7798 | "01kjlyn5w2nn2saj8w1rhq7v26328pd91xwgqn32z1zp2bngsi76")))) |
| 7799 | (outputs '("out" "doc")) |
| 7800 | (build-system python-build-system) |
| 7801 | (arguments |
| 7802 | `(#:phases |
| 7803 | (modify-phases %standard-phases |
| 7804 | (replace 'check |
| 7805 | (lambda _ |
| 7806 | (invoke "python" "-m" "unittest" "discover"))) |
| 7807 | (add-after 'install 'install-doc |
| 7808 | (lambda* (#:key outputs #:allow-other-keys) |
| 7809 | (let* ((data (string-append (assoc-ref outputs "doc") "/share")) |
| 7810 | (doc (string-append data "/doc/" ,name "-" ,version)) |
| 7811 | (examples (string-append doc "/examples"))) |
| 7812 | (mkdir-p examples) |
| 7813 | (for-each (lambda (file) |
| 7814 | (copy-file (string-append "." file) |
| 7815 | (string-append doc file))) |
| 7816 | '("/README.rst" "/CHANGES" "/LICENSE")) |
| 7817 | (copy-recursively "examples" examples))))))) |
| 7818 | (home-page "https://github.com/eliben/pycparser") |
| 7819 | (synopsis "C parser in Python") |
| 7820 | (description |
| 7821 | "Pycparser is a complete parser of the C language, written in pure Python |
| 7822 | using the PLY parsing library. It parses C code into an AST and can serve as |
| 7823 | a front-end for C compilers or analysis tools.") |
| 7824 | (license license:bsd-3))) |
| 7825 | |
| 7826 | (define-public python2-pycparser |
| 7827 | (package-with-python2 python-pycparser)) |
| 7828 | |
| 7829 | (define-public python-xlsxwriter |
| 7830 | (package |
| 7831 | (name "python-xlsxwriter") |
| 7832 | (version "3.0.3") |
| 7833 | (source |
| 7834 | (origin |
| 7835 | ;; There are no tests in the PyPI tarball. |
| 7836 | (method git-fetch) |
| 7837 | (uri (git-reference |
| 7838 | (url "https://github.com/jmcnamara/XlsxWriter") |
| 7839 | (commit (string-append "RELEASE_" version)))) |
| 7840 | (file-name (git-file-name name version)) |
| 7841 | (sha256 |
| 7842 | (base32 "1lr7mmik6r4zns069i4zfx1cnwhz6snmlh2zsiry0cwx8cv33wpm")))) |
| 7843 | (build-system python-build-system) |
| 7844 | (home-page "https://github.com/jmcnamara/XlsxWriter") |
| 7845 | (synopsis "Python module for creating Excel XLSX files") |
| 7846 | (description |
| 7847 | "XlsxWriter is a Python module that can be used to write text, numbers, |
| 7848 | formulas and hyperlinks to multiple worksheets in an Excel 2007+ XLSX file.") |
| 7849 | (license license:bsd-2))) |
| 7850 | |
| 7851 | (define-public python-pywavelets |
| 7852 | (package |
| 7853 | (name "python-pywavelets") |
| 7854 | (version "1.2.0") |
| 7855 | (home-page "https://github.com/PyWavelets/pywt") |
| 7856 | (source (origin |
| 7857 | (method url-fetch) |
| 7858 | (uri (pypi-uri "PyWavelets" version)) |
| 7859 | (sha256 |
| 7860 | (base32 |
| 7861 | "13csbr6ls9q9ww53z2xwwsj0hpsz88rj2iwp623h0kmv8yq6kgbc")) |
| 7862 | (snippet |
| 7863 | #~(begin |
| 7864 | (use-modules ((guix build utils))) |
| 7865 | (for-each delete-file |
| 7866 | (list |
| 7867 | "pywt/_extensions/_cwt.c" |
| 7868 | "pywt/_extensions/_dwt.c" |
| 7869 | "pywt/_extensions/_pywt.c" |
| 7870 | "pywt/_extensions/_pywt.h" |
| 7871 | "pywt/_extensions/_swt.c")))))) |
| 7872 | (build-system python-build-system) |
| 7873 | (arguments |
| 7874 | '(#:modules ((ice-9 ftw) |
| 7875 | (srfi srfi-1) |
| 7876 | (srfi srfi-26) |
| 7877 | (guix build utils) |
| 7878 | (guix build python-build-system)) |
| 7879 | #:phases |
| 7880 | (modify-phases %standard-phases |
| 7881 | (replace 'check |
| 7882 | (lambda _ |
| 7883 | (let ((cwd (getcwd)) |
| 7884 | (libdir (find (cut string-prefix? "lib." <>) |
| 7885 | (scandir "build")))) |
| 7886 | (with-directory-excursion (string-append cwd "/build/" libdir) |
| 7887 | (invoke "pytest" "-vv")))))))) |
| 7888 | (native-inputs |
| 7889 | (list python-cython |
| 7890 | python-matplotlib ;for tests |
| 7891 | python-pytest)) |
| 7892 | (propagated-inputs |
| 7893 | (list python-numpy)) |
| 7894 | (synopsis "Wavelet transforms in Python") |
| 7895 | (description |
| 7896 | "PyWavelets is a library for wavelet transforms in Python. Wavelets are |
| 7897 | mathematical basis functions that are localized in both time and frequency. |
| 7898 | Wavelet transforms are time-frequency transforms employing wavelets. They are |
| 7899 | similar to Fourier transforms, the difference being that Fourier transforms are |
| 7900 | localized only in frequency instead of in time and frequency.") |
| 7901 | (license license:expat))) |
| 7902 | |
| 7903 | (define-public python-pywal |
| 7904 | (package |
| 7905 | (name "python-pywal") |
| 7906 | (version "3.3.0") |
| 7907 | (source |
| 7908 | (origin |
| 7909 | (method git-fetch) |
| 7910 | (uri (git-reference |
| 7911 | (url "https://github.com/dylanaraps/pywal") |
| 7912 | (commit version))) |
| 7913 | (file-name (git-file-name name version)) |
| 7914 | (sha256 |
| 7915 | (base32 "039m7dch479hlwddynacdrr0klz6a5bdly5swqbs94hfimficiyf")))) |
| 7916 | (build-system python-build-system) |
| 7917 | (arguments |
| 7918 | `(#:phases |
| 7919 | (modify-phases %standard-phases |
| 7920 | (add-before 'check 'fix-home-directory |
| 7921 | (lambda _ |
| 7922 | ;; Tests fail with "Permission denied: '/homeless-shelter'". |
| 7923 | (setenv "HOME" "/tmp") |
| 7924 | #t))))) |
| 7925 | (inputs |
| 7926 | (list imagemagick)) |
| 7927 | (home-page "https://github.com/dylanaraps/pywal") |
| 7928 | (synopsis "Color palette generator and applicator") |
| 7929 | (description |
| 7930 | "Pywal is a tool that generates a color palette from the dominant colors |
| 7931 | in an image. It then applies the colors system-wide and on-the-fly in all of |
| 7932 | your favourite programs.") |
| 7933 | (license license:expat))) |
| 7934 | |
| 7935 | (define-public python-click-didyoumean |
| 7936 | (package |
| 7937 | (name "python-click-didyoumean") |
| 7938 | (version "0.3.0") |
| 7939 | (source |
| 7940 | (origin |
| 7941 | (method url-fetch) |
| 7942 | (uri (pypi-uri "click-didyoumean" version)) |
| 7943 | (sha256 |
| 7944 | (base32 "0dc0xrmqbw0idpx843ahzzvivmvx3fcfsm3k54lnssyra7cg117i")))) |
| 7945 | (build-system python-build-system) |
| 7946 | (arguments |
| 7947 | `(#:tests? #f)) ; no tests in PyPI and no setup.py in github |
| 7948 | (propagated-inputs |
| 7949 | (list python-click)) |
| 7950 | (home-page "https://github.com/timofurrer/click-didyoumean") |
| 7951 | (synopsis "Git-like did-you-mean feature in Click") |
| 7952 | (description |
| 7953 | "This plugin enables git-like did-you-mean feature in Click.") |
| 7954 | (license license:expat))) |
| 7955 | |
| 7956 | (define-public python-pywinrm |
| 7957 | (package |
| 7958 | (name "python-pywinrm") |
| 7959 | (version "0.4.1") |
| 7960 | (source |
| 7961 | (origin |
| 7962 | (method url-fetch) |
| 7963 | (uri (pypi-uri "pywinrm" version)) |
| 7964 | (sha256 |
| 7965 | (base32 |
| 7966 | "10gabhhg3rgacd5ahmi2r128z99fzbrbx6mz1nnq0dxmhmn5rpjf")))) |
| 7967 | (build-system python-build-system) |
| 7968 | (propagated-inputs |
| 7969 | (list python-six python-requests_ntlm python-xmltodict |
| 7970 | python-kerberos)) |
| 7971 | (native-inputs |
| 7972 | (list python-mock python-pytest)) |
| 7973 | (home-page "https://github.com/diyan/pywinrm/") |
| 7974 | (synopsis |
| 7975 | "Python library for Windows Remote Management (WinRM)") |
| 7976 | (description |
| 7977 | "pywinrm is a Python client for the Windows Remote Management (WinRM) |
| 7978 | service. It allows you to invoke commands on target Windows machines from |
| 7979 | any machine that can run Python.") |
| 7980 | (license license:expat))) |
| 7981 | |
| 7982 | (define-public python-xcffib |
| 7983 | (package |
| 7984 | (name "python-xcffib") |
| 7985 | (version "0.11.1") |
| 7986 | (source |
| 7987 | (origin |
| 7988 | (method url-fetch) |
| 7989 | (uri (pypi-uri "xcffib" version)) |
| 7990 | (sha256 |
| 7991 | (base32 |
| 7992 | "0nkglsm9nbhv238iagmmsjcz6lf1yfdvp5kmspphdj385vz9r50j")))) |
| 7993 | (build-system python-build-system) |
| 7994 | (inputs |
| 7995 | (list libxcb)) |
| 7996 | (propagated-inputs |
| 7997 | (list python-cffi ; used at run time |
| 7998 | python-six)) |
| 7999 | (arguments |
| 8000 | `(;; FIXME: Tests need more work. See ".travis.yml" in the repository. |
| 8001 | #:tests? #f |
| 8002 | #:phases |
| 8003 | (modify-phases %standard-phases |
| 8004 | (add-after 'unpack 'fix-libxcb-path |
| 8005 | (lambda* (#:key inputs #:allow-other-keys) |
| 8006 | (let ((libxcb (assoc-ref inputs "libxcb"))) |
| 8007 | (substitute* '("xcffib/__init__.py") |
| 8008 | (("soname = ctypes.util.find_library.*xcb.*") |
| 8009 | (string-append "soname = \"" libxcb "/lib/libxcb.so\"\n"))) |
| 8010 | #t))) |
| 8011 | (add-after 'install 'install-doc |
| 8012 | (lambda* (#:key outputs #:allow-other-keys) |
| 8013 | (let ((doc (string-append (assoc-ref outputs "out") "/share" |
| 8014 | "/doc/" ,name "-" ,version))) |
| 8015 | (mkdir-p doc) |
| 8016 | (copy-file "README.md" |
| 8017 | (string-append doc "/README.md")) |
| 8018 | #t)))))) |
| 8019 | (home-page "https://github.com/tych0/xcffib") |
| 8020 | (synopsis "XCB Python bindings") |
| 8021 | (description |
| 8022 | "Xcffib is a replacement for xpyb, an XCB Python bindings. It adds |
| 8023 | support for Python 3 and PyPy. It is based on cffi.") |
| 8024 | (license license:expat))) |
| 8025 | |
| 8026 | (define-public python-cairocffi |
| 8027 | (package |
| 8028 | (name "python-cairocffi") |
| 8029 | (version "1.3.0") |
| 8030 | (source |
| 8031 | (origin |
| 8032 | ;; The PyPI archive does not include the documentation, so use Git. |
| 8033 | (method git-fetch) |
| 8034 | (uri (git-reference |
| 8035 | (url "https://github.com/Kozea/cairocffi") |
| 8036 | (commit (string-append "v" version)))) |
| 8037 | (file-name (git-file-name name version)) |
| 8038 | (sha256 |
| 8039 | (base32 |
| 8040 | "0lylyxyyd8csjhn5kxwzrcr6ick6pvvm1wclpmb5ni28jznxn7lb")))) |
| 8041 | (build-system python-build-system) |
| 8042 | (outputs '("out" "doc")) |
| 8043 | (inputs |
| 8044 | (list glib gtk+ gdk-pixbuf cairo)) |
| 8045 | (native-inputs |
| 8046 | (list python-numpy |
| 8047 | python-pytest |
| 8048 | python-pytest-cov |
| 8049 | python-pytest-runner |
| 8050 | python-sphinx |
| 8051 | python-sphinx-rtd-theme)) |
| 8052 | (propagated-inputs |
| 8053 | (list python-xcffib)) ; used at run time |
| 8054 | (arguments |
| 8055 | `(#:phases |
| 8056 | (modify-phases %standard-phases |
| 8057 | (add-after 'unpack 'patch-paths |
| 8058 | (lambda* (#:key inputs #:allow-other-keys) |
| 8059 | (substitute* "cairocffi/__init__.py" |
| 8060 | ;; Hack the dynamic library loading mechanism. |
| 8061 | (("find_library\\(library_name\\)") |
| 8062 | "\"found\"") |
| 8063 | (("filenames = \\(library_filename,\\) \\+ filenames") |
| 8064 | "pass") |
| 8065 | (("libcairo.so.2") |
| 8066 | (search-input-file inputs "/lib/libcairo.so.2"))) |
| 8067 | (substitute* "cairocffi/pixbuf.py" |
| 8068 | (("libgdk_pixbuf-2.0.so.0") |
| 8069 | (search-input-file inputs "/lib/libgdk_pixbuf-2.0.so.0")) |
| 8070 | (("libgobject-2.0.so.0") |
| 8071 | (search-input-file inputs "/lib/libgobject-2.0.so.0")) |
| 8072 | (("libglib-2.0.so.0") |
| 8073 | (search-input-file inputs "/lib/libglib-2.0.so.0")) |
| 8074 | (("libgdk-3.so.0") |
| 8075 | (search-input-file inputs "/lib/libgdk-3.so.0"))))) |
| 8076 | (add-after 'unpack 'disable-linters |
| 8077 | ;; Their check fails; none of our business. |
| 8078 | (lambda _ |
| 8079 | (substitute* "setup.cfg" |
| 8080 | ((".*pytest-flake8.*") "") |
| 8081 | ((".*pytest-isort.*") "") |
| 8082 | (("--flake8") "") |
| 8083 | (("--isort") "")) |
| 8084 | #t)) |
| 8085 | (add-after 'install 'install-doc |
| 8086 | (lambda* (#:key inputs outputs #:allow-other-keys) |
| 8087 | (let* ((data (string-append (assoc-ref outputs "doc") "/share")) |
| 8088 | (doc (string-append data "/doc/" ,name "-" ,version)) |
| 8089 | (html (string-append doc "/html"))) |
| 8090 | (setenv "LD_LIBRARY_PATH" |
| 8091 | (string-append (assoc-ref inputs "cairo") "/lib" ":" |
| 8092 | (assoc-ref inputs "gdk-pixbuf") "/lib")) |
| 8093 | (setenv "LANG" "en_US.UTF-8") |
| 8094 | (mkdir-p html) |
| 8095 | (for-each (lambda (file) |
| 8096 | (copy-file (string-append "." file) |
| 8097 | (string-append doc file))) |
| 8098 | '("/README.rst" "/NEWS.rst")) |
| 8099 | (system* "python" "setup.py" "build_sphinx") |
| 8100 | (copy-recursively "docs/_build/html" html) |
| 8101 | #t)))))) |
| 8102 | (home-page "https://github.com/Kozea/cairocffi") |
| 8103 | (synopsis "Python bindings and object-oriented API for Cairo") |
| 8104 | (description |
| 8105 | "Cairocffi is a CFFI-based drop-in replacement for Pycairo, a set of |
| 8106 | Python bindings and object-oriented API for cairo. Cairo is a 2D vector |
| 8107 | graphics library with support for multiple backends including image buffers, |
| 8108 | PNG, PostScript, PDF, and SVG file output.") |
| 8109 | (license license:bsd-3))) |
| 8110 | |
| 8111 | (define-public python-decorator |
| 8112 | (package |
| 8113 | (name "python-decorator") |
| 8114 | (version "5.0.9") |
| 8115 | (source |
| 8116 | (origin |
| 8117 | (method url-fetch) |
| 8118 | (uri (pypi-uri "decorator" version)) |
| 8119 | (sha256 |
| 8120 | (base32 "1mcy64hllgm938v8k1x2a4g0q9swsnrfnsvhz59kr28a6ajgpv3j")))) |
| 8121 | (build-system python-build-system) |
| 8122 | (home-page "https://pypi.org/project/decorator/") |
| 8123 | (synopsis "Python module to simplify usage of decorators") |
| 8124 | (description |
| 8125 | "The aim of the decorator module is to simplify the usage of decorators |
| 8126 | for the average programmer, and to popularize decorators usage giving examples |
| 8127 | of useful decorators, such as memoize, tracing, redirecting_stdout, locked, |
| 8128 | etc. The core of this module is a decorator factory.") |
| 8129 | (license license:expat))) |
| 8130 | |
| 8131 | |
| 8132 | (define-public python-drmaa |
| 8133 | (package |
| 8134 | (name "python-drmaa") |
| 8135 | (version "0.7.7") |
| 8136 | (source |
| 8137 | (origin |
| 8138 | (method url-fetch) |
| 8139 | (uri (pypi-uri "drmaa" version)) |
| 8140 | (sha256 |
| 8141 | (base32 "0xzqriqyvk5b8hszbavsyxd29wm3sxirm8zvvdm73rs2iq7w4hkx")))) |
| 8142 | (build-system python-build-system) |
| 8143 | ;; The test suite requires libdrmaa which is provided by the cluster |
| 8144 | ;; environment. At runtime the environment variable DRMAA_LIBRARY_PATH |
| 8145 | ;; should be set to the path of the libdrmaa library. |
| 8146 | (arguments |
| 8147 | '(#:tests? #f |
| 8148 | #:phases (modify-phases %standard-phases |
| 8149 | ;; Loading the library fails because DRMAA_LIBRARY_PATH |
| 8150 | ;; is not configured. |
| 8151 | (delete 'sanity-check)))) |
| 8152 | (home-page "https://pypi.org/project/drmaa/") |
| 8153 | (synopsis "Python bindings for the DRMAA library") |
| 8154 | (description |
| 8155 | "A Python package for Distributed Resource Management (DRM) job |
| 8156 | submission and control. This package is an implementation of the DRMAA 1.0 |
| 8157 | Python language binding specification.") |
| 8158 | (license license:bsd-3))) |
| 8159 | |
| 8160 | (define-public python-grako |
| 8161 | (package |
| 8162 | (name "python-grako") |
| 8163 | (version "3.99.9") |
| 8164 | (source |
| 8165 | (origin |
| 8166 | (method url-fetch) |
| 8167 | (uri |
| 8168 | (pypi-uri "grako" version ".zip")) |
| 8169 | (sha256 |
| 8170 | (base32 |
| 8171 | "0r63i68wcnv63rfjkasq1ah81frz61a6mzbcnaxhrkdpx84p7hzw")))) |
| 8172 | (build-system python-build-system) |
| 8173 | (arguments '(#:tests? #f)) ; Test file 'grako.ebnf' is missing from archive. |
| 8174 | (native-inputs |
| 8175 | (list unzip python-pytest python-pytest-runner)) |
| 8176 | (home-page "https://bitbucket.org/neogeny/grako") |
| 8177 | (synopsis "EBNF parser generator") |
| 8178 | (description |
| 8179 | "Grako takes a grammar in a variation of EBNF as input, and outputs a |
| 8180 | memoizing PEG/Packrat parser in Python.") |
| 8181 | (license license:bsd-3))) |
| 8182 | |
| 8183 | (define-public python-grandalf |
| 8184 | (package |
| 8185 | (name "python-grandalf") |
| 8186 | (version "0.7") |
| 8187 | (source |
| 8188 | (origin |
| 8189 | ;; There's no source tarball on PyPI. |
| 8190 | (method git-fetch) |
| 8191 | (uri (git-reference |
| 8192 | (url "https://github.com/bdcht/grandalf") |
| 8193 | (commit (string-append "v" version)))) |
| 8194 | (file-name (git-file-name name version)) |
| 8195 | (sha256 |
| 8196 | (base32 |
| 8197 | "03p8w8ljpb87qbyldm3s6b7qi30hfcn43h33iwlgqcf31fjsyr4g")))) |
| 8198 | (build-system python-build-system) |
| 8199 | (arguments |
| 8200 | '(#:phases |
| 8201 | (modify-phases %standard-phases |
| 8202 | (replace 'check |
| 8203 | (lambda _ |
| 8204 | (invoke "python" "setup.py" "pytest")))))) |
| 8205 | (native-inputs |
| 8206 | (list python-pytest python-pytest-runner)) |
| 8207 | (propagated-inputs |
| 8208 | (list python-numpy python-ply)) |
| 8209 | (home-page "https://github.com/bdcht/grandalf") |
| 8210 | (synopsis "Graph and drawing algorithms framework") |
| 8211 | (description |
| 8212 | "Grandalf is a Python package made for experimentations with graphs |
| 8213 | drawing algorithms. It is written in pure Python, and currently implements |
| 8214 | two layouts: the Sugiyama hierarchical layout and the force-driven or energy |
| 8215 | minimization approach. While not as fast or featured as graphviz or other |
| 8216 | libraries like OGDF (C++), it provides a way to walk and draw graphs no larger |
| 8217 | than thousands of nodes, while keeping the source code simple enough to tweak |
| 8218 | and hack any part of it for experimental purpose. With a total of about 1500 |
| 8219 | lines of Python, the code involved in drawing the Sugiyama (dot) layout fits |
| 8220 | in less than 600 lines. The energy minimization approach is comprised of only |
| 8221 | 250 lines! |
| 8222 | |
| 8223 | Grandalf does only 2 not-so-simple things: |
| 8224 | @itemize |
| 8225 | @item computing the nodes (x,y) coordinates (based on provided nodes |
| 8226 | dimensions, and a chosen layout) |
| 8227 | @item routing the edges with lines or nurbs |
| 8228 | @end itemize |
| 8229 | |
| 8230 | It doesn’t depend on any GTK/Qt/whatever graphics toolkit. This means that it |
| 8231 | will help you find where to draw things like nodes and edges, but it’s up to |
| 8232 | you to actually draw things with your favorite toolkit.") |
| 8233 | ;; The user can choose either license. |
| 8234 | (license (list license:gpl2 license:epl1.0)))) |
| 8235 | |
| 8236 | (define-public python-gridmap |
| 8237 | (package |
| 8238 | (name "python-gridmap") |
| 8239 | (version "0.14.0") |
| 8240 | (source |
| 8241 | (origin |
| 8242 | (method git-fetch) |
| 8243 | (uri (git-reference |
| 8244 | (url "https://github.com/pygridtools/gridmap") |
| 8245 | (commit (string-append "v" version)))) |
| 8246 | (file-name (git-file-name name version)) |
| 8247 | (sha256 |
| 8248 | (base32 "0v0sgpg6pz8h61f9aqjf5xk0ipr512bbz8dxzjjylksj135qr19l")))) |
| 8249 | (build-system python-build-system) |
| 8250 | (arguments |
| 8251 | '(#:tests? #f ;FIXME: Requires python-cherrypy. |
| 8252 | #:phases (modify-phases %standard-phases |
| 8253 | ;; Importing the web server module requires cherrypy, too. |
| 8254 | (delete 'sanity-check)))) |
| 8255 | (propagated-inputs |
| 8256 | (list python-psutil python-drmaa python-pyzmq)) |
| 8257 | (home-page "https://github.com/pygridtools/gridmap") |
| 8258 | (synopsis "Create jobs on a cluster directly from Python") |
| 8259 | (description |
| 8260 | "Gridmap is a Python package to allow you to easily create jobs on the |
| 8261 | cluster directly from Python. You can directly map Python functions onto the |
| 8262 | cluster without needing to write any wrapper code yourself.") |
| 8263 | (license license:gpl3+))) |
| 8264 | |
| 8265 | (define-public python-honcho |
| 8266 | (package |
| 8267 | (name "python-honcho") |
| 8268 | (version "1.1.0") |
| 8269 | (source |
| 8270 | (origin |
| 8271 | (method git-fetch) |
| 8272 | (uri (git-reference |
| 8273 | (url "https://github.com/nickstenning/honcho") |
| 8274 | (commit (string-append "v" version)))) |
| 8275 | (file-name (git-file-name name version)) |
| 8276 | (sha256 |
| 8277 | (base32 "1y0r8dw4pqcq7r4n58ixjdg1iy60lp0gxsd7d2jmhals16ij71rj")))) |
| 8278 | (build-system python-build-system) |
| 8279 | (native-inputs |
| 8280 | (list python-pytest python-mock python-tox which)) ;for tests |
| 8281 | (propagated-inputs |
| 8282 | (list python-jinja2)) |
| 8283 | (arguments |
| 8284 | `(#:phases |
| 8285 | (modify-phases %standard-phases |
| 8286 | (delete 'check) |
| 8287 | (add-after 'install 'check |
| 8288 | (lambda* (#:key outputs inputs #:allow-other-keys) |
| 8289 | ;; fix honcho path in testsuite |
| 8290 | (substitute* "tests/conftest.py" |
| 8291 | (("'honcho'") (string-append "'" (assoc-ref outputs "out") |
| 8292 | "/bin/honcho" "'"))) |
| 8293 | ;; It's easier to run tests after install. |
| 8294 | ;; Make installed package available for running the tests |
| 8295 | (add-installed-pythonpath inputs outputs) |
| 8296 | ;; Skip failing test_export |
| 8297 | (invoke "py.test" "-v" "-k" "not test_export")))))) |
| 8298 | (home-page "https://github.com/nickstenning/honcho") |
| 8299 | (synopsis "Manage Procfile-based applications") |
| 8300 | (description |
| 8301 | "A Procfile is a file which describes how to run an application |
| 8302 | consisting of several processes. honcho starts all listed processes. |
| 8303 | The output of all running processes is collected by honcho and |
| 8304 | displayed.") |
| 8305 | (license license:expat))) |
| 8306 | |
| 8307 | (define-public python-pebble |
| 8308 | (package |
| 8309 | (name "python-pebble") |
| 8310 | (version "4.6.1") |
| 8311 | (source |
| 8312 | (origin |
| 8313 | (method url-fetch) |
| 8314 | (uri (pypi-uri "Pebble" version)) |
| 8315 | (sha256 |
| 8316 | (base32 "16siqc3brbk7dp4d9sg48bjl6a8wyy24aib3il1hf4y2624draxh")))) |
| 8317 | (build-system python-build-system) |
| 8318 | (native-inputs |
| 8319 | (list python-pytest)) |
| 8320 | (arguments |
| 8321 | `(#:phases |
| 8322 | (modify-phases %standard-phases |
| 8323 | (replace 'check |
| 8324 | (lambda _ (invoke "python" "-m" "pytest" "-sv")))))) |
| 8325 | (home-page "https://github.com/noxdafox/pebble") |
| 8326 | (synopsis "Threading and multiprocessing for Python") |
| 8327 | (description |
| 8328 | "Pebble aims to help manage threads and processes in an easier way. It |
| 8329 | wraps Python's standard library threading and multiprocessing objects.") |
| 8330 | (license license:lgpl3+))) |
| 8331 | |
| 8332 | (define-public python-pexpect |
| 8333 | (package |
| 8334 | (name "python-pexpect") |
| 8335 | (version "4.8.0") |
| 8336 | (source |
| 8337 | (origin |
| 8338 | (method url-fetch) |
| 8339 | (uri (pypi-uri "pexpect" version)) |
| 8340 | (sha256 |
| 8341 | (base32 "032cg337h8awydgypz6f4wx848lw8dyrj4zy988x0lyib4ws8rgw")))) |
| 8342 | (build-system python-build-system) |
| 8343 | (arguments |
| 8344 | `(#:phases |
| 8345 | (modify-phases %standard-phases |
| 8346 | (add-before 'check 'prepare-tests |
| 8347 | (lambda _ |
| 8348 | (substitute* (find-files "tests") |
| 8349 | (("/bin/ls") (which "ls")) |
| 8350 | (("/bin/echo") (which "echo")) |
| 8351 | (("/bin/which") (which "which")) |
| 8352 | ;; Many tests try to use the /bin directory which |
| 8353 | ;; is not present in the build environment. |
| 8354 | ;; Use one that's non-empty and unlikely to change. |
| 8355 | (("/bin'") "/dev'") |
| 8356 | ;; Disable failing test. See upstream bug report |
| 8357 | ;; https://github.com/pexpect/pexpect/issues/568 |
| 8358 | (("def test_bash") "def _test_bash")) |
| 8359 | ;; XXX: Socket connection test gets "Connection reset by peer". |
| 8360 | ;; Why does it not work? Delete for now. |
| 8361 | (delete-file "tests/test_socket.py") |
| 8362 | #t)) |
| 8363 | (replace 'check (lambda _ (invoke "nosetests" "-v")))))) |
| 8364 | (native-inputs |
| 8365 | `(("python-nose" ,python-nose) |
| 8366 | ("python-pytest" ,python-pytest) |
| 8367 | ("man-db" ,man-db) |
| 8368 | ("which" ,which) |
| 8369 | ("bash-full" ,bash))) ;full Bash for 'test_replwrap.py' |
| 8370 | (propagated-inputs |
| 8371 | (list python-ptyprocess)) |
| 8372 | (home-page "http://pexpect.readthedocs.org/") |
| 8373 | (synopsis "Controlling interactive console applications") |
| 8374 | (description |
| 8375 | "Pexpect is a pure Python module for spawning child applications; |
| 8376 | controlling them; and responding to expected patterns in their output. |
| 8377 | Pexpect works like Don Libes’ Expect. Pexpect allows your script to spawn a |
| 8378 | child application and control it as if a human were typing commands.") |
| 8379 | (license license:isc))) |
| 8380 | |
| 8381 | (define-public python-sexpdata |
| 8382 | (package |
| 8383 | (name "python-sexpdata") |
| 8384 | (version "0.0.3") |
| 8385 | (source |
| 8386 | (origin |
| 8387 | (method url-fetch) |
| 8388 | (uri (pypi-uri "sexpdata" version)) |
| 8389 | (sha256 |
| 8390 | (base32 |
| 8391 | "1q4lsjyzzqrdv64l0pv4ij9nd8gqhvxqcrpxc2xpxs652sk2gj0s")))) |
| 8392 | (build-system python-build-system) |
| 8393 | (home-page "https://github.com/jd-boyd/sexpdata") |
| 8394 | (synopsis "S-expression parser for Python") |
| 8395 | (description |
| 8396 | "Sexpdata is an S-expression parser/serializer. It has load and dump |
| 8397 | functions like pickle, json or PyYAML module.") |
| 8398 | (license license:bsd-3))) |
| 8399 | |
| 8400 | (define-public python-pathlib2 |
| 8401 | (package |
| 8402 | (name "python-pathlib2") |
| 8403 | (version "2.3.7.post1") |
| 8404 | (source |
| 8405 | (origin |
| 8406 | (method url-fetch) |
| 8407 | (uri (pypi-uri "pathlib2" version)) |
| 8408 | (sha256 |
| 8409 | (base32 |
| 8410 | "0hf62d0lsf37vnr5fxqp5rfn85njgsr45j4rw71w10wbi6nyvq4z")))) |
| 8411 | (build-system python-build-system) |
| 8412 | (propagated-inputs |
| 8413 | (list python-scandir python-six)) |
| 8414 | (home-page "https://pypi.org/project/pathlib2/") |
| 8415 | (synopsis "Object-oriented file system paths") |
| 8416 | (description "The goal of pathlib2 is to provide a backport of the |
| 8417 | standard @code{pathlib} module which tracks the standard library module, so |
| 8418 | all the newest features of the standard @code{pathlib} can be used also on |
| 8419 | older Python versions.") |
| 8420 | (license license:expat))) |
| 8421 | |
| 8422 | (define-public python-importlib-resources |
| 8423 | (package |
| 8424 | (name "python-importlib-resources") |
| 8425 | (version "3.0.0") |
| 8426 | (source (origin |
| 8427 | (method url-fetch) |
| 8428 | (uri (pypi-uri "importlib_resources" version)) |
| 8429 | (sha256 |
| 8430 | (base32 |
| 8431 | "1hq626mx5jl9zfl0wdrjkxsnh8qd98fqv322n68b9251xjk4bxqr")))) |
| 8432 | (build-system python-build-system) |
| 8433 | (native-inputs (list python-setuptools-scm python-toml)) |
| 8434 | (home-page "http://importlib-resources.readthedocs.io/") |
| 8435 | (synopsis "Read resources from Python packages") |
| 8436 | (description |
| 8437 | "@code{importlib_resources} is a backport of Python 3's standard library |
| 8438 | @code{importlib.resources} module for Python 2.7, and Python 3.") |
| 8439 | (license license:asl2.0))) |
| 8440 | |
| 8441 | (define-public python-importlib-metadata |
| 8442 | (package |
| 8443 | (name "python-importlib-metadata") |
| 8444 | (version "4.11.3") |
| 8445 | (source |
| 8446 | (origin |
| 8447 | (method url-fetch) |
| 8448 | (uri (pypi-uri "importlib_metadata" version)) |
| 8449 | (sha256 |
| 8450 | (base32 |
| 8451 | "0f951zynlh39yicqnhrs3p1qa5p3g6ajjfcggf12y51ppxz5jk7a")))) |
| 8452 | (build-system python-build-system) |
| 8453 | (arguments |
| 8454 | (list |
| 8455 | #:phases |
| 8456 | #~(modify-phases %standard-phases |
| 8457 | ;; XXX: PEP 517 manual build/install procedures copied from |
| 8458 | ;; python-isort. |
| 8459 | (replace 'build |
| 8460 | (lambda _ |
| 8461 | ;; ZIP does not support timestamps before 1980. |
| 8462 | (setenv "SOURCE_DATE_EPOCH" "315532800") |
| 8463 | (invoke "python" "-m" "build" "--wheel" "--no-isolation" "."))) |
| 8464 | (replace 'install |
| 8465 | (lambda* (#:key outputs #:allow-other-keys) |
| 8466 | (let ((whl (car (find-files "dist" "\\.whl$")))) |
| 8467 | (invoke "pip" "--no-cache-dir" "--no-input" |
| 8468 | "install" "--no-deps" "--prefix" #$output whl)))) |
| 8469 | (replace 'check |
| 8470 | (lambda* (#:key tests? #:allow-other-keys) |
| 8471 | (when tests? |
| 8472 | (invoke "pytest" "-vv" "tests"))))))) |
| 8473 | (propagated-inputs (list python-zipp)) |
| 8474 | (native-inputs |
| 8475 | (list python-pypa-build |
| 8476 | python-pyfakefs |
| 8477 | python-pytest |
| 8478 | python-setuptools-scm)) |
| 8479 | (home-page "https://importlib-metadata.readthedocs.io/") |
| 8480 | (synopsis "Read metadata from Python packages") |
| 8481 | (description |
| 8482 | "@code{importlib_metadata} is a library which provides an API for |
| 8483 | accessing an installed Python package's metadata, such as its entry points or |
| 8484 | its top-level name. This functionality intends to replace most uses of |
| 8485 | @code{pkg_resources} entry point API and metadata API. Along with |
| 8486 | @code{importlib.resources} in Python 3.7 and newer, this can eliminate the |
| 8487 | need to use the older and less efficient @code{pkg_resources} package.") |
| 8488 | (license license:asl2.0))) |
| 8489 | |
| 8490 | (define-public python-importmagic |
| 8491 | (package |
| 8492 | (name "python-importmagic") |
| 8493 | (version "0.1.7") |
| 8494 | (source |
| 8495 | (origin |
| 8496 | (method url-fetch) |
| 8497 | (uri (pypi-uri "importmagic" version)) |
| 8498 | (sha256 |
| 8499 | (base32 |
| 8500 | "1n7qxa1snj06aw45mcfz7bxc46zp7fxj687140g2k6jcnyjmfxrz")))) |
| 8501 | (build-system python-build-system) |
| 8502 | (arguments |
| 8503 | (list #:phases |
| 8504 | #~(modify-phases %standard-phases |
| 8505 | (replace 'check |
| 8506 | (lambda* (#:key tests? #:allow-other-keys) |
| 8507 | (when tests? |
| 8508 | (invoke "pytest" "-v"))))))) |
| 8509 | (native-inputs |
| 8510 | (list python-pytest)) |
| 8511 | (home-page "https://github.com/alecthomas/importmagic") |
| 8512 | (synopsis "Library for adding, removing and managing Python imports") |
| 8513 | (description |
| 8514 | "Importmagic is a Python library for automatically managing imports by |
| 8515 | finding unresolved symbols in Python code and their corresponding imports.") |
| 8516 | (license license:bsd-3))) |
| 8517 | |
| 8518 | (define-public python-inotify-simple |
| 8519 | (package |
| 8520 | (name "python-inotify-simple") |
| 8521 | (version "1.3.5") |
| 8522 | (source |
| 8523 | (origin |
| 8524 | (method git-fetch) |
| 8525 | (uri (git-reference |
| 8526 | (url "https://github.com/chrisjbillington/inotify_simple") |
| 8527 | (commit version))) |
| 8528 | (file-name (git-file-name name version)) |
| 8529 | (sha256 |
| 8530 | (base32 "1dv9svrcz31acyq9smjlnw75xv3x5wpn5h6s8j8h0vrqyl3d7l05")))) |
| 8531 | (build-system python-build-system) |
| 8532 | (home-page |
| 8533 | "https://github.com/chrisjbillington/inotify_simple") |
| 8534 | (synopsis "Simple wrapper around inotify library") |
| 8535 | (description |
| 8536 | "@code{inotify-simple} is a simple wrapper around inotify library.") |
| 8537 | (license license:bsd-3))) |
| 8538 | |
| 8539 | (define-public python-jaraco-classes |
| 8540 | (package |
| 8541 | (name "python-jaraco-classes") |
| 8542 | (version "3.2.1") |
| 8543 | (source |
| 8544 | (origin |
| 8545 | (method url-fetch) |
| 8546 | (uri (pypi-uri "jaraco.classes" version)) |
| 8547 | (sha256 |
| 8548 | (base32 "0d6g7qvfv1jlzbzh6asprqdblqd59grvlvr3nwbdqdqrmwlbfm7d")))) |
| 8549 | (build-system python-build-system) |
| 8550 | (arguments |
| 8551 | (list |
| 8552 | #:phases |
| 8553 | #~(modify-phases %standard-phases |
| 8554 | (replace 'check |
| 8555 | (lambda* (#:key tests? #:allow-other-keys) |
| 8556 | (when tests? |
| 8557 | ;; Do not test the myproject.toml build as it tries to pull |
| 8558 | ;; dependencies from the Internet. |
| 8559 | (invoke "pytest" "-vv" "-k" "not project"))))))) |
| 8560 | (native-inputs |
| 8561 | (list python-pytest |
| 8562 | python-pytest-black |
| 8563 | python-pytest-checkdocs |
| 8564 | python-pytest-cov |
| 8565 | python-pytest-enabler-bootstrap ;OK since not propagated |
| 8566 | python-pytest-flake8 |
| 8567 | python-pytest-mypy |
| 8568 | python-setuptools-scm |
| 8569 | python-wheel)) |
| 8570 | (propagated-inputs (list python-more-itertools)) |
| 8571 | (home-page "https://github.com/jaraco/jaraco.classes") |
| 8572 | (synopsis "Utility functions for Python class constructs") |
| 8573 | (description "This Python library contains utility functions for Python |
| 8574 | class constructs.") |
| 8575 | (license license:expat))) |
| 8576 | |
| 8577 | ;;; Variant used to break a cycle with python-pytest-enabler. |
| 8578 | (define-public python-jaraco-context-bootstrap |
| 8579 | (hidden-package |
| 8580 | (package |
| 8581 | (name "python-jaraco-context-bootstrap") |
| 8582 | (version "4.1.1") |
| 8583 | (source |
| 8584 | (origin |
| 8585 | (method url-fetch) |
| 8586 | (uri (pypi-uri "jaraco.context" version)) |
| 8587 | (sha256 |
| 8588 | (base32 "0hbjm1rpxf4pzmbdp9rh3ali4zqnlcr8m97bhh1nizxvzcpxim7h")))) |
| 8589 | (build-system python-build-system) |
| 8590 | (arguments (list #:tests? #f)) |
| 8591 | (native-inputs (list python-setuptools-scm)) |
| 8592 | (home-page "https://github.com/jaraco/jaraco.context") |
| 8593 | (synopsis "Context managers Python library") |
| 8594 | (description "This Python library provides context managers-related |
| 8595 | procedures.") |
| 8596 | (license license:expat)))) |
| 8597 | |
| 8598 | (define-public python-jaraco-context |
| 8599 | (package/inherit python-jaraco-context-bootstrap |
| 8600 | (name "python-jaraco-context") |
| 8601 | (arguments |
| 8602 | (substitute-keyword-arguments |
| 8603 | (package-arguments python-jaraco-context-bootstrap) |
| 8604 | ((#:tests? _ #f) |
| 8605 | (not (%current-target-system))) |
| 8606 | ((#:phases phases #~%standard-phases) |
| 8607 | #~(modify-phases #$phases |
| 8608 | (replace 'check |
| 8609 | (lambda* (#:key tests? #:allow-other-keys) |
| 8610 | (when tests? |
| 8611 | ;; Do not test the myproject.toml build as it tries to pull |
| 8612 | ;; dependencies from the Internet. |
| 8613 | (invoke "pytest" "-vv" "-k" "not project")))))))) |
| 8614 | (native-inputs |
| 8615 | (modify-inputs |
| 8616 | (package-native-inputs python-jaraco-context-bootstrap) |
| 8617 | (append python-pytest |
| 8618 | python-pytest-black |
| 8619 | python-pytest-checkdocs |
| 8620 | python-pytest-cov |
| 8621 | python-pytest-enabler-bootstrap ;OK since not propagated |
| 8622 | python-pytest-flake8 |
| 8623 | python-pytest-mypy))) |
| 8624 | (properties (alist-delete 'hidden? (package-properties |
| 8625 | python-jaraco-context-bootstrap))))) |
| 8626 | |
| 8627 | ;;; Variant used to break a cycle with python-pytest-enabler. |
| 8628 | (define-public python-jaraco-functools-bootstrap |
| 8629 | (hidden-package |
| 8630 | (package |
| 8631 | (name "python-jaraco-functools-bootstrap") |
| 8632 | (version "3.5.0") |
| 8633 | (source |
| 8634 | (origin |
| 8635 | (method url-fetch) |
| 8636 | (uri (pypi-uri "jaraco.functools" version)) |
| 8637 | (sha256 |
| 8638 | (base32 "186xqzs3bqhjwajnprxy3sc3h0w5vdld8spc1dxjnn9720yykq1i")))) |
| 8639 | (build-system python-build-system) |
| 8640 | (arguments (list #:tests? #f)) |
| 8641 | (native-inputs (list python-setuptools-scm)) |
| 8642 | (propagated-inputs (list python-more-itertools)) |
| 8643 | (home-page "https://github.com/jaraco/jaraco.functools") |
| 8644 | (synopsis "Python library extending Python's @code{functools}") |
| 8645 | (description "This library extends the standard @code{functools} Python |
| 8646 | module with a few extra procedures.") |
| 8647 | (license license:expat)))) |
| 8648 | |
| 8649 | (define-public python-jaraco-functools |
| 8650 | (package/inherit python-jaraco-functools-bootstrap |
| 8651 | (name "python-jaraco-functools") |
| 8652 | (arguments |
| 8653 | (substitute-keyword-arguments |
| 8654 | (package-arguments python-jaraco-functools-bootstrap) |
| 8655 | ((#:tests? _ #f) |
| 8656 | (not (%current-target-system))) |
| 8657 | ((#:phases phases #~%standard-phases) |
| 8658 | #~(modify-phases #$phases |
| 8659 | (replace 'check |
| 8660 | (lambda* (#:key tests? #:allow-other-keys) |
| 8661 | (when tests? |
| 8662 | ;; Do not test the myproject.toml build as it tries to pull |
| 8663 | ;; dependencies from the Internet. Do not run a test that |
| 8664 | ;; tries to emulate a broken proprietary CI set-up, fails |
| 8665 | ;; to do so correctly, and then throws an error about it. |
| 8666 | (invoke "pytest" "-vv" "-k" |
| 8667 | "not project and not test_function_throttled")))))))) |
| 8668 | (native-inputs |
| 8669 | (modify-inputs |
| 8670 | (package-native-inputs python-jaraco-functools-bootstrap) |
| 8671 | (append python-jaraco-classes |
| 8672 | python-pytest |
| 8673 | python-pytest-black |
| 8674 | python-pytest-checkdocs |
| 8675 | python-pytest-cov |
| 8676 | python-pytest-enabler-bootstrap ;OK since not propagated |
| 8677 | python-pytest-flake8 |
| 8678 | python-pytest-mypy))) |
| 8679 | (properties (alist-delete 'hidden? (package-properties |
| 8680 | python-jaraco-functools-bootstrap))))) |
| 8681 | |
| 8682 | (define-public python-jaraco-packaging |
| 8683 | (package |
| 8684 | (name "python-jaraco-packaging") |
| 8685 | (version "6.1") |
| 8686 | (source |
| 8687 | (origin |
| 8688 | (method url-fetch) |
| 8689 | (uri (pypi-uri "jaraco.packaging" version)) |
| 8690 | (sha256 |
| 8691 | (base32 |
| 8692 | "0zimrnkh33b9g8ffw11mjh6kvs54cy5gcjw1h5cl1r7dc833dmkm")))) |
| 8693 | (build-system python-build-system) |
| 8694 | (propagated-inputs |
| 8695 | (list python-pytest |
| 8696 | python-pytest-checkdocs |
| 8697 | python-pytest-flake8 |
| 8698 | python-rst.linker |
| 8699 | python-setuptools |
| 8700 | python-setuptools-scm |
| 8701 | python-six |
| 8702 | python-sphinx)) |
| 8703 | (home-page "https://github.com/jaraco/jaraco.packaging") |
| 8704 | (synopsis "Tools to supplement packaging Python releases") |
| 8705 | (description |
| 8706 | "This package provides various tools to supplement packaging Python |
| 8707 | releases.") |
| 8708 | (license license:expat))) |
| 8709 | |
| 8710 | (define-public python-simplegeneric |
| 8711 | (package |
| 8712 | (name "python-simplegeneric") |
| 8713 | (version "0.8.1") |
| 8714 | (source |
| 8715 | (origin |
| 8716 | (method url-fetch) |
| 8717 | (uri (pypi-uri "simplegeneric" version ".zip")) |
| 8718 | (sha256 |
| 8719 | (base32 "0wwi1c6md4vkbcsfsf8dklf3vr4mcdj4mpxkanwgb6jb1432x5yw")))) |
| 8720 | (build-system python-build-system) |
| 8721 | (native-inputs |
| 8722 | (list unzip)) |
| 8723 | (home-page "http://cheeseshop.python.org/pypi/simplegeneric") |
| 8724 | (synopsis "Python module for simple generic functions") |
| 8725 | (description |
| 8726 | "The simplegeneric module lets you define simple single-dispatch generic |
| 8727 | functions, akin to Python’s built-in generic functions like @code{len()}, |
| 8728 | @code{iter()} and so on. However, instead of using specially-named methods, |
| 8729 | these generic functions use simple lookup tables, akin to those used by |
| 8730 | e.g. @code{pickle.dump()} and other generic functions found in the Python |
| 8731 | standard library.") |
| 8732 | (license license:zpl2.1))) |
| 8733 | |
| 8734 | (define-public python-ipython-genutils |
| 8735 | ;; TODO: This package is retired, check if can be removed, see description. |
| 8736 | (package |
| 8737 | (name "python-ipython-genutils") |
| 8738 | (version "0.1.0") |
| 8739 | (source |
| 8740 | (origin |
| 8741 | (method url-fetch) |
| 8742 | (uri (pypi-uri "ipython_genutils" version)) |
| 8743 | (sha256 |
| 8744 | (base32 "19l2pp1c64ansr89l3cqh19jdi2ixhssdzx0vz4n6r52a6i281is")))) |
| 8745 | (build-system python-build-system) |
| 8746 | (arguments `(#:tests? #f)) ; no tests |
| 8747 | (home-page "https://ipython.org") |
| 8748 | (synopsis "Vestigial utilities from IPython") |
| 8749 | (description |
| 8750 | "This package provides retired utilities from IPython. No packages |
| 8751 | outside IPython/Jupyter should depend on it. |
| 8752 | |
| 8753 | This package shouldn't exist. It contains some common utilities shared by |
| 8754 | Jupyter and IPython projects during The Big Split. As soon as possible, those |
| 8755 | packages will remove their dependency on this, and this package will go |
| 8756 | away.") |
| 8757 | (license license:bsd-3))) |
| 8758 | |
| 8759 | ;;; Variant used to break a cycle with python-ipykernel. |
| 8760 | (define-public python-ipyparallel-bootstrap |
| 8761 | (hidden-package |
| 8762 | (package |
| 8763 | (name "python-ipyparallel-bootstrap") |
| 8764 | (version "8.2.1") |
| 8765 | (source |
| 8766 | (origin |
| 8767 | (method url-fetch) |
| 8768 | (uri (pypi-uri "ipyparallel" version)) |
| 8769 | (sha256 |
| 8770 | (base32 |
| 8771 | "0wiwfd7870zbmczzn96jqxxjf2zcbcaxnsl1ddn8hspwa8y4frzj")))) |
| 8772 | (build-system python-build-system) |
| 8773 | (arguments |
| 8774 | (list |
| 8775 | #:tests? #f |
| 8776 | #:phases #~(modify-phases %standard-phases |
| 8777 | ;; The python-ipykernel is normally propagated but is |
| 8778 | ;; removed from this package to break the cycle. |
| 8779 | (delete 'sanity-check)))) |
| 8780 | (propagated-inputs |
| 8781 | (list python-dateutil |
| 8782 | python-decorator |
| 8783 | python-entrypoints |
| 8784 | python-ipython |
| 8785 | ;; python-ipykernel is omitted here to break a cycle. |
| 8786 | python-jupyter-client-bootstrap |
| 8787 | python-psutil |
| 8788 | python-pyzmq |
| 8789 | python-tornado-6 |
| 8790 | python-tqdm |
| 8791 | python-traitlets)) |
| 8792 | (home-page "https://ipython.org/") |
| 8793 | (synopsis "Interactive Parallel Computing with IPython") |
| 8794 | (description |
| 8795 | "@code{ipyparallel} is a Python package and collection of CLI scripts for |
| 8796 | controlling clusters for Jupyter. @code{ipyparallel} contains the following |
| 8797 | CLI scripts: |
| 8798 | @enumerate |
| 8799 | @item ipcluster - start/stop a cluster |
| 8800 | @item ipcontroller - start a scheduler |
| 8801 | @item ipengine - start an engine |
| 8802 | @end enumerate") |
| 8803 | (license license:bsd-3)))) |
| 8804 | |
| 8805 | (define-public python-ipyparallel |
| 8806 | (package |
| 8807 | (inherit python-ipyparallel-bootstrap) |
| 8808 | (name "python-ipyparallel") |
| 8809 | (arguments |
| 8810 | (list |
| 8811 | #:phases |
| 8812 | #~(modify-phases %standard-phases |
| 8813 | (replace 'check |
| 8814 | (lambda _ |
| 8815 | (invoke "pytest" "-vv")))))) |
| 8816 | (native-inputs |
| 8817 | (list python-ipython |
| 8818 | python-pytest |
| 8819 | python-pytest-asyncio |
| 8820 | python-pytest-cov |
| 8821 | python-pytest-tornado |
| 8822 | python-testpath)) |
| 8823 | (propagated-inputs |
| 8824 | (modify-inputs (package-propagated-inputs python-ipyparallel-bootstrap) |
| 8825 | (replace "python-jupyter-client-bootstrap" python-jupyter-client) |
| 8826 | (append python-ipykernel))) |
| 8827 | (properties (alist-delete 'hidden? (package-properties |
| 8828 | python-ipyparallel-bootstrap))))) |
| 8829 | |
| 8830 | (define-public python-ipython-cluster-helper |
| 8831 | (package |
| 8832 | (name "python-ipython-cluster-helper") |
| 8833 | (version "0.6.4") |
| 8834 | (source |
| 8835 | (origin |
| 8836 | (method url-fetch) |
| 8837 | (uri (pypi-uri "ipython-cluster-helper" version)) |
| 8838 | (sha256 |
| 8839 | (base32 |
| 8840 | "1l6mlwxlkxpbvawfwk6qffich7ahg9hq2bxfissgz6144p3k4arj")) |
| 8841 | (modules '((guix build utils))) |
| 8842 | (snippet |
| 8843 | '(begin (substitute* "requirements.txt" |
| 8844 | (("ipython.*") "ipython\n")) |
| 8845 | #t)))) |
| 8846 | (build-system python-build-system) |
| 8847 | (arguments |
| 8848 | `(#:tests? #f ; Test suite can't find IPython. |
| 8849 | #:phases |
| 8850 | (modify-phases %standard-phases |
| 8851 | (replace 'check |
| 8852 | (lambda* (#:key inputs outputs tests? #:allow-other-keys) |
| 8853 | (if tests? |
| 8854 | (begin |
| 8855 | (setenv "HOME" (getcwd)) |
| 8856 | (add-installed-pythonpath inputs outputs) |
| 8857 | (invoke "python" "example/example.py" "--local")) |
| 8858 | #t)))))) |
| 8859 | (propagated-inputs |
| 8860 | (list python-ipyparallel |
| 8861 | python-ipython |
| 8862 | python-netifaces |
| 8863 | python-pyzmq |
| 8864 | python-setuptools |
| 8865 | python-six)) |
| 8866 | (home-page "https://github.com/roryk/ipython-cluster-helper") |
| 8867 | (synopsis |
| 8868 | "Simplify IPython cluster start up and use for multiple schedulers") |
| 8869 | (description |
| 8870 | "@code{ipython-cluster-helper} creates a throwaway parallel IPython |
| 8871 | profile, launches a cluster and returns a view. On program exit it shuts the |
| 8872 | cluster down and deletes the throwaway profile.") |
| 8873 | (license license:expat))) |
| 8874 | |
| 8875 | (define-public python-ipython-sql |
| 8876 | (package |
| 8877 | (name "python-ipython-sql") |
| 8878 | (version "0.4.1") |
| 8879 | (source |
| 8880 | (origin |
| 8881 | (method url-fetch) |
| 8882 | (uri (pypi-uri "ipython-sql" version)) |
| 8883 | (sha256 |
| 8884 | (base32 "1r6rz8jgrqzhkf2flwjw75d96g8l7kykmx5wli3q1988w96391ip")))) |
| 8885 | (build-system python-build-system) |
| 8886 | (arguments |
| 8887 | (list #:tests? #f ;must run under IPython |
| 8888 | #:phases |
| 8889 | #~(modify-phases %standard-phases |
| 8890 | (add-after 'unpack 'permit-newer-prettytable |
| 8891 | ;; See https://github.com/catherinedevlin/ipython-sql/issues/202 |
| 8892 | (lambda _ |
| 8893 | (substitute* "setup.py" |
| 8894 | (("prettytable<1") |
| 8895 | "prettytable"))))))) |
| 8896 | (propagated-inputs |
| 8897 | (list python-ipython |
| 8898 | python-ipython-genutils |
| 8899 | python-prettytable |
| 8900 | python-six |
| 8901 | python-sqlalchemy |
| 8902 | python-sqlparse)) |
| 8903 | (home-page "https://github.com/catherinedevlin/ipython-sql") |
| 8904 | (synopsis "RDBMS access via IPython") |
| 8905 | (description "This library connects to a database, using SQLAlchemy URL |
| 8906 | connect strings, then issue SQL commands within IPython or IPython Notebook.") |
| 8907 | (license license:expat))) |
| 8908 | |
| 8909 | (define-public python-traitlets |
| 8910 | (package |
| 8911 | (name "python-traitlets") |
| 8912 | (version "5.1.1") |
| 8913 | (source |
| 8914 | (origin |
| 8915 | (method url-fetch) |
| 8916 | (uri (pypi-uri "traitlets" version)) |
| 8917 | (sha256 |
| 8918 | (base32 |
| 8919 | "1ivhxglsrnhqw4g98ihddn7i5f6976gpk31fijwq473wb9n4b7q5")))) |
| 8920 | (build-system python-build-system) |
| 8921 | (arguments |
| 8922 | `(#:phases |
| 8923 | (modify-phases %standard-phases |
| 8924 | (replace 'check (lambda* (#:key tests? #:allow-other-keys) |
| 8925 | (when tests? |
| 8926 | (invoke "pytest" "-vv" "traitlets"))))))) |
| 8927 | (native-inputs |
| 8928 | (list python-pytest)) |
| 8929 | (home-page "https://ipython.org") |
| 8930 | (synopsis "Configuration system for Python applications") |
| 8931 | (description |
| 8932 | "Traitlets is a framework that lets Python classes have attributes with |
| 8933 | type checking, dynamically calculated default values, and ‘on change’ |
| 8934 | callbacks. The package also includes a mechanism to use traitlets for |
| 8935 | configuration, loading values from files or from command line arguments. This |
| 8936 | is a distinct layer on top of traitlets, so you can use traitlets in your code |
| 8937 | without using the configuration machinery.") |
| 8938 | (license license:bsd-3))) |
| 8939 | |
| 8940 | (define-public python-jupyter-core |
| 8941 | (package |
| 8942 | (name "python-jupyter-core") |
| 8943 | (version "4.10.0") |
| 8944 | (source |
| 8945 | (origin |
| 8946 | (method url-fetch) |
| 8947 | (uri (string-append (pypi-uri "jupyter_core" version))) |
| 8948 | (sha256 |
| 8949 | (base32 |
| 8950 | "1v0s31rmwppdmww135hif03hy164j9kimirh24kxfcbvdfql9pm6")))) |
| 8951 | (build-system python-build-system) |
| 8952 | (arguments |
| 8953 | `(#:phases |
| 8954 | (modify-phases %standard-phases |
| 8955 | (replace 'check |
| 8956 | (lambda* (#:key tests? #:allow-other-keys) |
| 8957 | (when tests? |
| 8958 | ;; Some tests write to $HOME. |
| 8959 | (setenv "HOME" "/tmp") |
| 8960 | (invoke "pytest" "-vv" |
| 8961 | "-k" |
| 8962 | (string-append |
| 8963 | ;; XXX: These tests fail with "ModuleNotFoundError: No |
| 8964 | ;; module named 'jupyter_core'". |
| 8965 | "not test_argv0 and not test_path_priority " |
| 8966 | "and not test_not_on_path"))))) |
| 8967 | (add-after 'unpack 'patch-testsuite |
| 8968 | (lambda _ |
| 8969 | ;; test_not_on_path() and test_path_priority() try to run a test |
| 8970 | ;; that loads jupyter_core, so we need GUIX_PYTHONPATH |
| 8971 | (substitute* "jupyter_core/tests/test_command.py" |
| 8972 | (("env = \\{'PATH': ''\\}") |
| 8973 | "env = {'PATH': '', 'PYTHONPATH': os.environ['GUIX_PYTHONPATH']}") |
| 8974 | (("env = \\{'PATH': str\\(b\\)\\}") |
| 8975 | "env = {'PATH': str(b), 'PYTHONPATH': os.environ['GUIX_PYTHONPATH']}")))) |
| 8976 | ;; Migration is running whenever etc/jupyter exists, but the |
| 8977 | ;; Guix-managed directory will never contain any migratable IPython |
| 8978 | ;; config files and cannot be written to anyway, so just pretend we |
| 8979 | ;; already did that. |
| 8980 | (add-after 'install 'disable-migration |
| 8981 | (lambda* (#:key outputs #:allow-other-keys) |
| 8982 | (mkdir-p (string-append (assoc-ref outputs "out") "/etc/jupyter")) |
| 8983 | (invoke "touch" |
| 8984 | (string-append |
| 8985 | (assoc-ref outputs "out") |
| 8986 | "/etc/jupyter/migrated"))))))) |
| 8987 | (propagated-inputs (list python-traitlets)) |
| 8988 | (native-inputs (list python-pytest)) |
| 8989 | ;; This package provides the `jupyter` binary and thus also exports the |
| 8990 | ;; search paths. |
| 8991 | (native-search-paths |
| 8992 | (list (search-path-specification |
| 8993 | (variable "JUPYTER_CONFIG_PATH") |
| 8994 | (files '("etc/jupyter"))) |
| 8995 | (search-path-specification |
| 8996 | (variable "JUPYTER_PATH") |
| 8997 | (files '("share/jupyter"))))) |
| 8998 | (home-page "https://jupyter.org/") |
| 8999 | (synopsis "Jupyter base package") |
| 9000 | (description |
| 9001 | "Jupyter core is the base package on which Jupyter projects rely.") |
| 9002 | (license license:bsd-3))) |
| 9003 | |
| 9004 | ;; Bootstrap variant of jupyter-client, which breaks the loop between ipykernel |
| 9005 | ;; and jupyter-client by removing the former from its native-inputs and |
| 9006 | ;; disabling tests. |
| 9007 | (define-public python-jupyter-client-bootstrap |
| 9008 | (hidden-package |
| 9009 | (package |
| 9010 | (name "python-jupyter-client-bootstrap") |
| 9011 | (version "7.2.2") |
| 9012 | (source |
| 9013 | (origin |
| 9014 | (method url-fetch) |
| 9015 | (uri (pypi-uri "jupyter_client" version)) |
| 9016 | (sha256 |
| 9017 | (base32 |
| 9018 | "12pbp177bfb3710y1a5598mwn8ffhyzmpll67m0nmalb98savnwg")))) |
| 9019 | (build-system python-build-system) |
| 9020 | (arguments |
| 9021 | (list |
| 9022 | #:tests? #f |
| 9023 | #:phases |
| 9024 | #~(modify-phases %standard-phases |
| 9025 | (add-after 'unpack 'set-tool-file-names |
| 9026 | (lambda* (#:key inputs #:allow-other-keys) |
| 9027 | (substitute* "jupyter_client/localinterfaces.py" |
| 9028 | (("'ip'") |
| 9029 | (format #f "'~a'" (search-input-file inputs "sbin/ip"))))))))) |
| 9030 | (inputs (list iproute)) |
| 9031 | (propagated-inputs |
| 9032 | (list python-dateutil |
| 9033 | python-entrypoints |
| 9034 | python-jupyter-core |
| 9035 | python-nest-asyncio |
| 9036 | python-pyzmq |
| 9037 | python-tornado-6 |
| 9038 | python-traitlets)) |
| 9039 | (home-page "https://jupyter.org/") |
| 9040 | (synopsis "Jupyter protocol implementation and client libraries") |
| 9041 | (description |
| 9042 | "The @code{jupyter_client} package contains the reference implementation |
| 9043 | of the Jupyter protocol. It also provides client and kernel management APIs |
| 9044 | for working with kernels, and the @code{jupyter kernelspec} entrypoint for |
| 9045 | installing @code{kernelspec}s for use with Jupyter frontends.") |
| 9046 | (license license:bsd-3)))) |
| 9047 | |
| 9048 | (define-public python-jupyter-client |
| 9049 | (let ((base python-jupyter-client-bootstrap)) |
| 9050 | (package |
| 9051 | (inherit base) |
| 9052 | (name "python-jupyter-client") |
| 9053 | (arguments |
| 9054 | (substitute-keyword-arguments (package-arguments base) |
| 9055 | ((#:tests? _ #f) |
| 9056 | (not (%current-target-system))) |
| 9057 | ((#:phases phases #~%standard-phases) |
| 9058 | #~(modify-phases #$phases |
| 9059 | (replace 'check |
| 9060 | (lambda* (#:key tests? #:allow-other-keys) |
| 9061 | (when tests? |
| 9062 | ;; Some tests try to write to $HOME. |
| 9063 | (setenv "HOME" "/tmp") |
| 9064 | (invoke "pytest" "-vv")))))))) |
| 9065 | (native-inputs |
| 9066 | (list python-pytest |
| 9067 | python-pytest-asyncio |
| 9068 | python-pytest-timeout |
| 9069 | python-async-generator |
| 9070 | python-ipython |
| 9071 | python-ipykernel-bootstrap)) |
| 9072 | (properties (alist-delete 'hidden? (package-properties base)))))) |
| 9073 | |
| 9074 | (define-public python-ipykernel |
| 9075 | (package |
| 9076 | (name "python-ipykernel") |
| 9077 | (version "6.13.0") |
| 9078 | (source |
| 9079 | (origin |
| 9080 | (method url-fetch) |
| 9081 | (uri (pypi-uri "ipykernel" version)) |
| 9082 | (sha256 |
| 9083 | (base32 "0q5yni8h08nadsn53f957p0pjsjhwl2b2lp1hqz3jn0854z2fa0f")))) |
| 9084 | (build-system python-build-system) |
| 9085 | (arguments |
| 9086 | (list |
| 9087 | #:imported-modules `(,@%python-build-system-modules |
| 9088 | (guix build syscalls)) |
| 9089 | #:modules '((guix build python-build-system) |
| 9090 | (guix build syscalls) |
| 9091 | (guix build utils) |
| 9092 | (ice-9 match)) |
| 9093 | #:phases |
| 9094 | #~(modify-phases %standard-phases |
| 9095 | (replace 'check |
| 9096 | (lambda* (#:key tests? #:allow-other-keys) |
| 9097 | (when tests? |
| 9098 | (match (primitive-fork) |
| 9099 | (0 ;child process |
| 9100 | (set-child-subreaper!) |
| 9101 | ;; XXX: Tini provides proper PID1-like signal handling that |
| 9102 | ;; reaps zombie processes, necessary for the |
| 9103 | ;; 'test_shutdown_subprocesses' test to pass. |
| 9104 | |
| 9105 | ;; TODO: Complete https://issues.guix.gnu.org/30948. |
| 9106 | (setenv "HOME" "/tmp") |
| 9107 | (execlp "tini" "--" "pytest" "-vv")) |
| 9108 | (pid |
| 9109 | (match (waitpid pid) |
| 9110 | ((_ . status) |
| 9111 | (unless (zero? status) |
| 9112 | (error "`pytest' exited with status" |
| 9113 | status))))))))) |
| 9114 | (add-after 'install 'set-python-file-name |
| 9115 | (lambda* (#:key inputs #:allow-other-keys) |
| 9116 | ;; Record the absolute file name of the 'python' executable in |
| 9117 | ;; 'kernel.json'. |
| 9118 | (substitute* (string-append #$output "/share/jupyter" |
| 9119 | "/kernels/python3/kernel.json") |
| 9120 | (("\"python\"") |
| 9121 | (format #f "~s" (search-input-file inputs |
| 9122 | "/bin/python3"))))))))) |
| 9123 | (propagated-inputs |
| 9124 | (list python-debugpy |
| 9125 | python-ipython |
| 9126 | python-jupyter-client ;imported at runtime during connect |
| 9127 | python-matplotlib-inline |
| 9128 | ;;python-nest-asyncio |
| 9129 | ;;python-packaging |
| 9130 | python-psutil |
| 9131 | python-tornado-6 |
| 9132 | python-traitlets)) |
| 9133 | (inputs (list python)) ;for cross compilation |
| 9134 | (native-inputs |
| 9135 | (list python-flaky |
| 9136 | python-ipyparallel-bootstrap |
| 9137 | ;; XXX: Our Pytest package captures its native inputs in its |
| 9138 | ;; wrapper script (such as python-nose), which is used in the code |
| 9139 | ;; and causes deprecation warnings. Using the bootstrap variant |
| 9140 | ;; avoids that. |
| 9141 | python-pytest-bootstrap |
| 9142 | python-pytest-timeout |
| 9143 | tini)) |
| 9144 | (home-page "https://ipython.org") |
| 9145 | (synopsis "IPython Kernel for Jupyter") |
| 9146 | (description "This package provides the IPython kernel for Jupyter.") |
| 9147 | (license license:bsd-3))) |
| 9148 | |
| 9149 | ;; Bootstrap variant of ipykernel, which uses the bootstrap jupyter-client to |
| 9150 | ;; break the cycle between ipykernel and jupyter-client. |
| 9151 | (define-public python-ipykernel-bootstrap |
| 9152 | (let ((parent python-ipykernel)) |
| 9153 | (hidden-package |
| 9154 | (package |
| 9155 | (inherit parent) |
| 9156 | (name "python-ipykernel-bootstrap") |
| 9157 | (arguments (list #:tests? #f |
| 9158 | ;; The package should normally propagate ipykernel, |
| 9159 | ;; left out here to break the cycle. |
| 9160 | #:phases #~(modify-phases %standard-phases |
| 9161 | (delete 'sanity-check)))) |
| 9162 | (native-inputs '()) |
| 9163 | (propagated-inputs |
| 9164 | (modify-inputs (package-propagated-inputs parent) |
| 9165 | (replace "python-jupyter-client" python-jupyter-client-bootstrap) |
| 9166 | (append python-ipyparallel-bootstrap))))))) |
| 9167 | |
| 9168 | (define-public python-pari-jupyter |
| 9169 | (package |
| 9170 | (name "python-pari-jupyter") |
| 9171 | (version "1.4.1") |
| 9172 | (source |
| 9173 | (origin |
| 9174 | (method url-fetch) |
| 9175 | (uri (pypi-uri "pari-jupyter" version)) |
| 9176 | (sha256 |
| 9177 | (base32 |
| 9178 | "1ikqvv335qfrhmlji0iclci6pnm2c3fvnxf031jr1d68j79g6ypd")))) |
| 9179 | (build-system python-build-system) |
| 9180 | (arguments '(#:tests? #f)) ;no test suite |
| 9181 | (inputs |
| 9182 | (list pari-gp readline python-ipykernel)) |
| 9183 | (home-page "https://github.com/sagemath/pari-jupyter") |
| 9184 | (synopsis "Jupyter kernel for PARI/GP") |
| 9185 | (description "The package provides a PARI/GP kernel for Jupyter.") |
| 9186 | (license license:gpl3+))) |
| 9187 | |
| 9188 | (define-public python-backcall |
| 9189 | (package |
| 9190 | (name "python-backcall") |
| 9191 | (version "0.2.0") |
| 9192 | (source |
| 9193 | (origin |
| 9194 | (method url-fetch) |
| 9195 | (uri (pypi-uri "backcall" version)) |
| 9196 | (sha256 |
| 9197 | (base32 |
| 9198 | "07jy4562lvnhkk6kfr3cphmizy88anlhmbwb8kdzlz2ypqkvzgaw")))) |
| 9199 | (build-system python-build-system) |
| 9200 | (home-page "https://github.com/takluyver/backcall/") |
| 9201 | (synopsis "Specifications for callback functions passed in to an API") |
| 9202 | (description |
| 9203 | "If your code lets other people supply callback functions, it's important |
| 9204 | to specify the function signature you expect, and check that functions support |
| 9205 | that. Adding extra parameters later would break other peoples code unless |
| 9206 | you're careful. The @code{backcall} package provides a way of specifying the |
| 9207 | callback signature using a prototype function.") |
| 9208 | (license license:bsd-3))) |
| 9209 | |
| 9210 | (define-public python-pure-eval |
| 9211 | (package |
| 9212 | (name "python-pure-eval") |
| 9213 | (version "0.2.2") |
| 9214 | (source |
| 9215 | (origin |
| 9216 | (method url-fetch) |
| 9217 | (uri (pypi-uri "pure_eval" version)) |
| 9218 | (sha256 |
| 9219 | (base32 "1hwsm85cwqwh6d6x4vzcimla2865s6v19ms3ym81ganzyq534i9b")))) |
| 9220 | (build-system python-build-system) |
| 9221 | (native-inputs (list python-pytest python-setuptools-scm)) |
| 9222 | (home-page "https://github.com/alexmojaki/pure_eval") |
| 9223 | (synopsis "Python library to evaluate abstract syntax tree nodes") |
| 9224 | (description "The @code{pure_eval} Python library can safely evaluate |
| 9225 | abstract syntax tree (AST) nodes without side effects.") |
| 9226 | (license license:expat))) |
| 9227 | |
| 9228 | (define-public python-asttokens |
| 9229 | (package |
| 9230 | (name "python-asttokens") |
| 9231 | (version "2.0.5") |
| 9232 | (source |
| 9233 | (origin |
| 9234 | (method url-fetch) |
| 9235 | (uri (pypi-uri "asttokens" version)) |
| 9236 | (sha256 |
| 9237 | (base32 "1mglbkikxvnhrk3inbx0v1qzxwd38qjr6l35sn098yicy0ac2m4s")))) |
| 9238 | (build-system python-build-system) |
| 9239 | (propagated-inputs (list python-six)) |
| 9240 | (native-inputs (list python-astroid python-pytest python-setuptools-scm)) |
| 9241 | (home-page "https://github.com/gristlabs/asttokens") |
| 9242 | (synopsis "Python library to annotate abstract syntax trees") |
| 9243 | (description "The @code{asttokens} module annotates Python abstract syntax |
| 9244 | trees (ASTs) with the positions of tokens and text in the source code that |
| 9245 | generated them. It makes it possible for tools that work with logical AST |
| 9246 | nodes to find the particular text that resulted in those nodes, for example |
| 9247 | for automated refactoring or highlighting.") |
| 9248 | (license license:asl2.0))) |
| 9249 | |
| 9250 | (define-public python-littleutils |
| 9251 | (package |
| 9252 | (name "python-littleutils") |
| 9253 | (version "0.2.2") |
| 9254 | (source |
| 9255 | (origin |
| 9256 | (method url-fetch) |
| 9257 | (uri (pypi-uri "littleutils" version)) |
| 9258 | (sha256 |
| 9259 | (base32 "0vwijrylppmk0nbddqvn527r9cg3zw8d6zk6r58hslry42jf7jp6")))) |
| 9260 | (build-system python-build-system) |
| 9261 | (home-page "https://github.com/alexmojaki/littleutils") |
| 9262 | (synopsis "Python utility function collection") |
| 9263 | (description "@code{littleutils} is a small collection of Python utility |
| 9264 | functions, useful in the context of writing unit tests among other uses.") |
| 9265 | (license license:expat))) |
| 9266 | |
| 9267 | (define-public python-stack-data |
| 9268 | (package |
| 9269 | (name "python-stack-data") |
| 9270 | (version "0.2.0") |
| 9271 | (source |
| 9272 | (origin |
| 9273 | (method url-fetch) |
| 9274 | (uri (pypi-uri "stack_data" version)) |
| 9275 | (sha256 |
| 9276 | (base32 "04lfcj5qrn4qikjw89qbdzqwm0xm4bgm4m8rll1rafk3pm0jssa5")))) |
| 9277 | (build-system python-build-system) |
| 9278 | (propagated-inputs (list python-asttokens python-executing python-pure-eval)) |
| 9279 | (native-inputs |
| 9280 | (list python-cython |
| 9281 | python-littleutils |
| 9282 | python-pygments |
| 9283 | python-pytest |
| 9284 | python-setuptools-scm |
| 9285 | python-typeguard)) |
| 9286 | (home-page "https://github.com/alexmojaki/stack_data") |
| 9287 | (synopsis "Python stack frame and traceback manipulation library") |
| 9288 | (description "The @code{stack_data} Python library extracts data from |
| 9289 | stack frames and tracebacks. Is can be used to display more useful tracebacks |
| 9290 | than the default.") |
| 9291 | (license license:expat))) |
| 9292 | |
| 9293 | (define-public python-ipython |
| 9294 | (package |
| 9295 | (name "python-ipython") |
| 9296 | (version "8.2.0") |
| 9297 | (source |
| 9298 | (origin |
| 9299 | (method url-fetch) |
| 9300 | (uri (pypi-uri "ipython" version ".tar.gz")) |
| 9301 | (sha256 |
| 9302 | (base32 "1hcxa713wh3axa57412iy02rj0494ljvv6gpnls4lndc5h9yprbh")))) |
| 9303 | (build-system python-build-system) |
| 9304 | (arguments |
| 9305 | `(#:phases |
| 9306 | (modify-phases %standard-phases |
| 9307 | (add-after 'unpack 'make-docs-reproducible |
| 9308 | (lambda _ |
| 9309 | (substitute* "IPython/sphinxext/ipython_directive.py" |
| 9310 | ((".*import datetime") "") |
| 9311 | ((".*datetime.datetime.now\\(\\)") "") |
| 9312 | (("%timeit") "# %timeit")))) |
| 9313 | (replace 'check |
| 9314 | (lambda* (#:key inputs outputs tests? #:allow-other-keys) |
| 9315 | (when tests? |
| 9316 | (setenv "HOME" "/tmp/") ;required by some tests |
| 9317 | (invoke "python" "-m" "pytest" "-vv"))))))) |
| 9318 | (inputs (list readline which)) |
| 9319 | (propagated-inputs |
| 9320 | (list python-backcall |
| 9321 | python-decorator |
| 9322 | python-jedi |
| 9323 | python-jinja2 |
| 9324 | python-jsonschema |
| 9325 | python-matplotlib |
| 9326 | python-matplotlib-inline |
| 9327 | python-mistune |
| 9328 | python-nbformat |
| 9329 | python-numpy |
| 9330 | python-numpydoc |
| 9331 | python-pexpect |
| 9332 | python-pickleshare |
| 9333 | python-prompt-toolkit |
| 9334 | python-pygments |
| 9335 | python-pyzmq |
| 9336 | python-simplegeneric |
| 9337 | python-stack-data |
| 9338 | python-terminado |
| 9339 | python-traitlets)) |
| 9340 | (native-inputs |
| 9341 | (list graphviz |
| 9342 | pkg-config |
| 9343 | ;; For tests. |
| 9344 | python-pytest |
| 9345 | python-requests |
| 9346 | python-testpath)) |
| 9347 | (home-page "https://ipython.org") |
| 9348 | (synopsis "IPython is a tool for interactive computing in Python") |
| 9349 | (description |
| 9350 | "IPython provides a rich architecture for interactive computing with: |
| 9351 | Powerful interactive shells, a browser-based notebook, support for interactive |
| 9352 | data visualization, embeddable interpreters and tools for parallel |
| 9353 | computing.") |
| 9354 | (properties '((cpe-name . "ipython"))) |
| 9355 | (license license:bsd-3))) |
| 9356 | |
| 9357 | (define-public python-ipython-documentation |
| 9358 | (package |
| 9359 | (inherit python-ipython) |
| 9360 | (name "python-ipython-documentation") |
| 9361 | (version (package-version python-ipython)) |
| 9362 | (source |
| 9363 | (origin |
| 9364 | (inherit (package-source python-ipython)) |
| 9365 | (patches (append (search-patches |
| 9366 | "python-ipython-documentation-chars.patch" |
| 9367 | "python-ipython-documentation-repro.patch") |
| 9368 | (origin-patches (package-source python-ipython)))))) |
| 9369 | (arguments |
| 9370 | (list |
| 9371 | #:phases |
| 9372 | #~(modify-phases %standard-phases |
| 9373 | (add-after 'unpack 'set-pythonpath |
| 9374 | (lambda _ |
| 9375 | ;; Ensure this fixed (via the |
| 9376 | ;; "python-ipython-documentation-chars.patch" patch) copy of |
| 9377 | ;; IPython gets used. |
| 9378 | (setenv "PYTHONPATH" (string-append (getcwd))))) |
| 9379 | (add-before 'build 'configure-sphinx-for-xelatex |
| 9380 | (lambda _ |
| 9381 | ;; Use XeLaTeX instead of PDFLaTeX, as it can |
| 9382 | ;; cope with the Unicode characters present in the |
| 9383 | ;; contributors page, for example. |
| 9384 | (substitute* "docs/source/conf.py" |
| 9385 | (("project = 'IPython'.*" all) |
| 9386 | (string-append all "latex_engine = 'xelatex'\n"))) |
| 9387 | ;; XXX: The Sphinx-generated ipython.tex specifies the GNU |
| 9388 | ;; FreeFont font to be searched via its extension, which uses |
| 9389 | ;; kpathsea instead of fontconfig and fail (see: |
| 9390 | ;; https://github.com/sphinx-doc/sphinx/issues/10347). Create a |
| 9391 | ;; symlink to GNU FreeFont and add it to the TEXMF tree via |
| 9392 | ;; GUIX_TEXMF. |
| 9393 | (mkdir-p "texmf-dist/fonts/opentype/public") |
| 9394 | (symlink (string-append |
| 9395 | #$(this-package-native-input "font-gnu-freefont") |
| 9396 | "/share/fonts/opentype") |
| 9397 | (string-append |
| 9398 | (getcwd) "/" |
| 9399 | "texmf-dist/fonts/opentype/public/gnu-freefont")) |
| 9400 | (setenv "GUIX_TEXMF" (string-append (getenv "GUIX_TEXMF") ":" |
| 9401 | (getcwd) "/texmf-dist")))) |
| 9402 | (delete 'build) |
| 9403 | (delete 'check) |
| 9404 | (replace 'install |
| 9405 | (lambda* (#:key outputs #:allow-other-keys) |
| 9406 | (let* ((data (string-append #$output "/share")) |
| 9407 | (doc (string-append data "/doc/" #$name "-" #$version)) |
| 9408 | (html (string-append doc "/html")) |
| 9409 | (info (string-append data "/info"))) |
| 9410 | (invoke "make" "-C" "docs" "info" "html" "pdf" |
| 9411 | (string-append "SPHINXOPTS=-j" |
| 9412 | (number->string (parallel-job-count)))) |
| 9413 | (install-file "COPYING.rst" doc) |
| 9414 | (copy-recursively "examples" (string-append doc "/examples")) |
| 9415 | ;; Install HTML documentation. |
| 9416 | (copy-recursively "docs/build/html" html) |
| 9417 | ;; Likewise for the PDF. |
| 9418 | (install-file "docs/build/latex/ipython.pdf" doc) |
| 9419 | ;; Likewise for the info manual. |
| 9420 | (install-file "docs/build/texinfo/ipython.info" info) |
| 9421 | (symlink (string-append html "/_images") |
| 9422 | (string-append info "/ipython-figures")))))))) |
| 9423 | (native-inputs |
| 9424 | (list fontconfig ;for XDG_DATA_DIRS to locate fonts |
| 9425 | font-gnu-freefont |
| 9426 | graphviz |
| 9427 | python-docrepr |
| 9428 | python-sphinx |
| 9429 | python-sphinx-rtd-theme |
| 9430 | texinfo |
| 9431 | texlive-bin |
| 9432 | texlive-polyglossia |
| 9433 | texlive-xindy)))) |
| 9434 | |
| 9435 | (define-public python-urwid |
| 9436 | (package |
| 9437 | (name "python-urwid") |
| 9438 | (version "2.1.2") |
| 9439 | (source |
| 9440 | (origin |
| 9441 | (method url-fetch) |
| 9442 | (uri (pypi-uri "urwid" version)) |
| 9443 | (sha256 |
| 9444 | (base32 |
| 9445 | "1bky2bra6673xx8jy0826znw6cmxs89wcwwzda8d025j3jffx2sq")))) |
| 9446 | (build-system python-build-system) |
| 9447 | (arguments |
| 9448 | (list |
| 9449 | #:phases |
| 9450 | #~(modify-phases %standard-phases |
| 9451 | (add-after 'unpack 'remove-vterm-tests |
| 9452 | ;; According to Debian these tests are cursed. |
| 9453 | ;; https://salsa.debian.org/python-team/packages/urwid/-/blob/debian/2.1.2-2/debian/changelog#L141 |
| 9454 | (lambda _ |
| 9455 | (delete-file "urwid/tests/test_vterm.py")))))) |
| 9456 | (home-page "http://urwid.org") |
| 9457 | (synopsis "Console user interface library for Python") |
| 9458 | (description |
| 9459 | "Urwid is a curses-based UI/widget library for Python. It includes many |
| 9460 | features useful for text console applications.") |
| 9461 | (license license:lgpl2.1+))) |
| 9462 | |
| 9463 | (define-public python-urwid-readline |
| 9464 | (package |
| 9465 | (name "python-urwid-readline") |
| 9466 | (version "0.13") |
| 9467 | (source |
| 9468 | (origin |
| 9469 | (method git-fetch) |
| 9470 | (uri (git-reference |
| 9471 | (url "https://github.com/rr-/urwid_readline") |
| 9472 | (commit version))) |
| 9473 | (file-name (git-file-name name version)) |
| 9474 | (sha256 |
| 9475 | (base32 |
| 9476 | "0y9k86p31mlr9rwnrbljvfgl183r5j60yaj0r3scljn1m0mlg8qg")))) |
| 9477 | (build-system python-build-system) |
| 9478 | (arguments |
| 9479 | `(#:phases |
| 9480 | (modify-phases %standard-phases |
| 9481 | (replace 'check |
| 9482 | (lambda* (#:key tests? #:allow-other-keys) |
| 9483 | (when tests? |
| 9484 | (invoke "pytest" "-vv"))))))) |
| 9485 | (propagated-inputs (list python-urwid)) |
| 9486 | (native-inputs (list python-pytest)) |
| 9487 | (home-page "https://github.com/rr-/urwid_readline") |
| 9488 | (synopsis "Text input widget for urwid that supports readline shortcuts") |
| 9489 | (description |
| 9490 | "This package provides a textbox edit widget for @code{python-urwid} that |
| 9491 | supports @code{readline} shortcuts.") |
| 9492 | (license license:expat))) |
| 9493 | |
| 9494 | (define-public python-textdistance |
| 9495 | (package |
| 9496 | (name "python-textdistance") |
| 9497 | (version "4.2.1") |
| 9498 | (source |
| 9499 | (origin |
| 9500 | ;; There are no tests in the PyPI tarball. |
| 9501 | (method git-fetch) |
| 9502 | (uri (git-reference |
| 9503 | (url "https://github.com/life4/textdistance") |
| 9504 | (commit (string-append "v." version)))) |
| 9505 | (file-name (git-file-name name version)) |
| 9506 | (sha256 |
| 9507 | (base32 "1g17i356fnny4k6hjr2ayy9k77jbvd6zzmngws2kbrnvhss1wgwf")))) |
| 9508 | (build-system python-build-system) |
| 9509 | (arguments |
| 9510 | `(#:test-target "pytest" |
| 9511 | #:phases |
| 9512 | (modify-phases %standard-phases |
| 9513 | (add-after 'unpack 'delete-external-test |
| 9514 | (lambda _ |
| 9515 | ;; All tests in this file require external libraries. |
| 9516 | (delete-file "tests/test_external.py") |
| 9517 | #t))))) |
| 9518 | (native-inputs |
| 9519 | (list python-hypothesis |
| 9520 | python-isort |
| 9521 | python-numpy |
| 9522 | python-pytest |
| 9523 | python-pytest-runner |
| 9524 | python-tabulate)) |
| 9525 | (home-page "https://github.com/life4/textdistance") |
| 9526 | (synopsis "Compute distance between the two texts") |
| 9527 | (description "@code{textdistance} is a pure Python library for comparing |
| 9528 | distance between two or more sequences by many algorithms.") |
| 9529 | (license license:expat))) |
| 9530 | |
| 9531 | (define-public python-urwidtrees |
| 9532 | (package |
| 9533 | (name "python-urwidtrees") |
| 9534 | (version "1.0.3") |
| 9535 | (source |
| 9536 | (origin |
| 9537 | (method git-fetch) |
| 9538 | ;; package author intends on distributing via github rather than pypi: |
| 9539 | ;; https://github.com/pazz/alot/issues/877#issuecomment-230173331 |
| 9540 | (uri (git-reference |
| 9541 | (url "https://github.com/pazz/urwidtrees") |
| 9542 | (commit version))) |
| 9543 | (file-name (git-file-name name version)) |
| 9544 | (sha256 |
| 9545 | (base32 |
| 9546 | "1y1vysx7jg0vbrarlsykhf7nmr8fc6k1fva1q3i98xq2m30s6r68")))) |
| 9547 | (build-system python-build-system) |
| 9548 | (arguments |
| 9549 | '(#:tests? #f)) ; no tests |
| 9550 | (propagated-inputs (list python-urwid)) |
| 9551 | (native-inputs (list python-mock)) |
| 9552 | (home-page "https://github.com/pazz/urwidtrees") |
| 9553 | (synopsis "Tree widgets for urwid") |
| 9554 | (description "Urwidtrees is a Widget Container API for the @code{urwid} |
| 9555 | toolkit. Use it to build trees of widgets.") |
| 9556 | (license license:gpl3+))) |
| 9557 | |
| 9558 | (define-public python-ua-parser |
| 9559 | (package |
| 9560 | (name "python-ua-parser") |
| 9561 | (version "0.10.0") |
| 9562 | (source |
| 9563 | (origin |
| 9564 | (method url-fetch) |
| 9565 | (uri (pypi-uri "ua-parser" version)) |
| 9566 | (sha256 |
| 9567 | (base32 |
| 9568 | "0csh307zfz666kkk5idrw3crj1x8q8vsqgwqil0r1n1hs4p7ica7")))) |
| 9569 | (build-system python-build-system) |
| 9570 | (arguments |
| 9571 | `(#:tests? #f)) ;no test suite in release |
| 9572 | (native-inputs |
| 9573 | (list python-pyyaml)) |
| 9574 | (home-page "https://github.com/ua-parser/uap-python") |
| 9575 | (synopsis "User agent parser") |
| 9576 | (description |
| 9577 | "@code{ua-parser} is a Python port of Browserscope's user agent parser.") |
| 9578 | (license license:asl2.0))) |
| 9579 | |
| 9580 | (define-public python-user-agents |
| 9581 | (package |
| 9582 | (name "python-user-agents") |
| 9583 | (version "2.2.0") |
| 9584 | (source |
| 9585 | (origin |
| 9586 | (method url-fetch) |
| 9587 | (uri (pypi-uri "user-agents" version)) |
| 9588 | (sha256 |
| 9589 | (base32 |
| 9590 | "09mddriffm9rkwr30081fy9n3cn976ms8pwc8p8hhlxnilbjavfk")))) |
| 9591 | (build-system python-build-system) |
| 9592 | (arguments |
| 9593 | `(#:tests? #f)) ;missing devices.json test file in release |
| 9594 | (propagated-inputs |
| 9595 | (list python-ua-parser)) |
| 9596 | (home-page "https://github.com/selwin/python-user-agents") |
| 9597 | (synopsis "User Agent strings parsing library") |
| 9598 | (description |
| 9599 | "A library to identify devices (phones, tablets) and their capabilities by |
| 9600 | parsing (browser/HTTP) user agent strings.") |
| 9601 | (license license:expat))) |
| 9602 | |
| 9603 | (define-public python-pydbus |
| 9604 | (package |
| 9605 | (name "python-pydbus") |
| 9606 | (version "0.6.0") |
| 9607 | (source |
| 9608 | (origin |
| 9609 | (method url-fetch) |
| 9610 | (uri (pypi-uri "pydbus" version)) |
| 9611 | (sha256 |
| 9612 | (base32 "0b0gipvz7vcfa9ddmwq2jrx16d4apb0hdnl5q4i3h8jlzwp1c1s2")))) |
| 9613 | (build-system python-build-system) |
| 9614 | (propagated-inputs (list python-pygobject)) |
| 9615 | (home-page "https://github.com/LEW21/pydbus") |
| 9616 | (synopsis "Pythonic D-Bus library") |
| 9617 | (description "Pydbus provides a pythonic interface to the D-Bus |
| 9618 | message bus system. Pydbus can be used to access remote objects and |
| 9619 | also for object publication. It is based on PyGI, the Python GObject |
| 9620 | Introspection bindings, which is the recommended way to use GLib from Python.") |
| 9621 | (license license:lgpl2.1+))) |
| 9622 | |
| 9623 | (define-public python-dbus |
| 9624 | (package |
| 9625 | (name "python-dbus") |
| 9626 | (version "1.2.18") |
| 9627 | (source |
| 9628 | (origin |
| 9629 | (method url-fetch) |
| 9630 | (uri (string-append "https://dbus.freedesktop.org/releases/dbus-python/" |
| 9631 | "dbus-python-" version ".tar.gz")) |
| 9632 | (sha256 |
| 9633 | (base32 "0q3jrw515z98mqdk9x822nd95rky455zz9876f1nqna5igkd3gcj")))) |
| 9634 | (build-system gnu-build-system) |
| 9635 | (native-inputs |
| 9636 | (list pkg-config)) |
| 9637 | (inputs |
| 9638 | `(("python" ,python-wrapper) |
| 9639 | ("dbus-glib" ,dbus-glib))) |
| 9640 | (synopsis "Python bindings for D-bus") |
| 9641 | (description "python-dbus provides bindings for libdbus, the reference |
| 9642 | implementation of D-Bus.") |
| 9643 | (home-page "https://www.freedesktop.org/wiki/Software/DBusBindings/") |
| 9644 | (properties `((python2-variant . ,(delay python2-dbus)))) |
| 9645 | (license license:expat))) |
| 9646 | |
| 9647 | (define-public python2-dbus |
| 9648 | (package/inherit python-dbus |
| 9649 | (name "python2-dbus") |
| 9650 | (inputs `(("python" ,python-2) |
| 9651 | ,@(alist-delete "python" |
| 9652 | (package-inputs python-dbus)))) |
| 9653 | (arguments |
| 9654 | `(#:configure-flags '("PYTHON_VERSION=2"))))) |
| 9655 | |
| 9656 | (define-public python-dbus-next |
| 9657 | (package |
| 9658 | (name "python-dbus-next") |
| 9659 | (version "0.2.3") |
| 9660 | (source |
| 9661 | (origin |
| 9662 | (method git-fetch) |
| 9663 | (uri (git-reference |
| 9664 | (url "https://github.com/altdesktop/python-dbus-next") |
| 9665 | (commit (string-append "v" version)))) |
| 9666 | (file-name (git-file-name name version)) |
| 9667 | (sha256 |
| 9668 | (base32 |
| 9669 | "1ahaz52kny1p9xxv6phvk4iq56rg8li390wywlxf2yslaij1188h")))) |
| 9670 | (build-system python-build-system) |
| 9671 | (native-inputs |
| 9672 | (list python-pytest)) |
| 9673 | (home-page "https://github.com/altdesktop/python-dbus-next") |
| 9674 | (synopsis "Zero-dependency DBus library for Python with asyncio support") |
| 9675 | (description |
| 9676 | "This DBus library for Python aims to be a fully-featured high-level |
| 9677 | library primarily geared towards integration of applications into desktop and |
| 9678 | mobile environments.") |
| 9679 | (license license:expat))) |
| 9680 | |
| 9681 | (define-public python-notify2 |
| 9682 | (package |
| 9683 | (name "python-notify2") |
| 9684 | (version "0.3.1") |
| 9685 | (source |
| 9686 | (origin |
| 9687 | (method url-fetch) |
| 9688 | (uri (pypi-uri "notify2" version)) |
| 9689 | (sha256 |
| 9690 | (base32 |
| 9691 | "0z8rrv9rsg1r2qgh2dxj3dfj5xnki98kgi3w839kqby4a26i1yik")))) |
| 9692 | (build-system python-build-system) |
| 9693 | (arguments `(#:tests? #f)) ; tests depend on system state |
| 9694 | (propagated-inputs |
| 9695 | (list python-dbus)) |
| 9696 | (home-page "https://bitbucket.org/takluyver/pynotify2") |
| 9697 | (synopsis "Python interface to D-Bus notifications") |
| 9698 | (description |
| 9699 | "Pynotify2 provides a Python interface for sending D-Bus notifications. |
| 9700 | It is a reimplementation of pynotify in pure Python, and an alternative to |
| 9701 | the GObject Introspection bindings to libnotify for non-GTK applications.") |
| 9702 | (license (list license:bsd-2 |
| 9703 | license:lgpl2.1+)))) |
| 9704 | |
| 9705 | ;; beautifulsoup4 has a totally different namespace than 3.x, |
| 9706 | ;; and pypi seems to put it under its own name, so I guess we should too |
| 9707 | (define-public python-beautifulsoup4 |
| 9708 | (package |
| 9709 | (name "python-beautifulsoup4") |
| 9710 | (version "4.11.1") |
| 9711 | (source |
| 9712 | (origin |
| 9713 | (method url-fetch) |
| 9714 | (uri (pypi-uri "beautifulsoup4" version)) |
| 9715 | (sha256 |
| 9716 | (base32 |
| 9717 | "14v68cpfzckfz63n9hnbsm271jvzvxscyijz83mhha7gcmdsb6md")))) |
| 9718 | (build-system python-build-system) |
| 9719 | (arguments |
| 9720 | '(#:phases (modify-phases %standard-phases |
| 9721 | (replace 'check |
| 9722 | (lambda* (#:key tests? #:allow-other-keys) |
| 9723 | (when tests? |
| 9724 | (invoke "pytest" "-vv"))))))) |
| 9725 | (native-inputs |
| 9726 | (list python-pytest)) |
| 9727 | (propagated-inputs |
| 9728 | (list python-soupsieve python-html5lib python-lxml)) |
| 9729 | (home-page |
| 9730 | "https://www.crummy.com/software/BeautifulSoup/bs4/") |
| 9731 | (synopsis |
| 9732 | "Python screen-scraping library") |
| 9733 | (description |
| 9734 | "Beautiful Soup is a Python library designed for rapidly setting up |
| 9735 | screen-scraping projects. It offers Pythonic idioms for navigating, |
| 9736 | searching, and modifying a parse tree, providing a toolkit for |
| 9737 | dissecting a document and extracting what you need. It automatically |
| 9738 | converts incoming documents to Unicode and outgoing documents to UTF-8.") |
| 9739 | (license license:expat))) |
| 9740 | |
| 9741 | (define-public python-soupsieve |
| 9742 | (package |
| 9743 | (name "python-soupsieve") |
| 9744 | (version "2.2.1") |
| 9745 | (source |
| 9746 | (origin |
| 9747 | (method url-fetch) |
| 9748 | (uri (pypi-uri "soupsieve" version)) |
| 9749 | (sha256 |
| 9750 | (base32 |
| 9751 | "1k70gpn2d3vgdyxbdy536dgm4kchcraxz6lmgsfg3324iy2789q5")))) |
| 9752 | (build-system python-build-system) |
| 9753 | (arguments |
| 9754 | ;;XXX: 2 tests fail currently despite claming they were to be |
| 9755 | ;;skipped. Also, beautifulsoup4 may depend on this in the future, so we |
| 9756 | ;;don't want to create a circular dependency. |
| 9757 | (list #:tests? #f |
| 9758 | #:phases |
| 9759 | #~(modify-phases %standard-phases |
| 9760 | ;; Circular dependency with python-beautifulsoup4. |
| 9761 | (delete 'sanity-check)))) |
| 9762 | (home-page "https://github.com/facelessuser/soupsieve") |
| 9763 | (synopsis "CSS selector library") |
| 9764 | (description |
| 9765 | "Soup Sieve is a CSS selector library designed to be used with Beautiful |
| 9766 | Soup 4. It aims to provide selecting, matching, and filtering using modern |
| 9767 | CSS selectors. Soup Sieve currently provides selectors from the CSS level 1 |
| 9768 | specifications up through the latest CSS level 4 drafts and beyond (though |
| 9769 | some are not yet implemented).") |
| 9770 | (license license:expat))) |
| 9771 | |
| 9772 | |
| 9773 | (define-public python-netifaces |
| 9774 | (package |
| 9775 | (name "python-netifaces") |
| 9776 | (version "0.11.0") |
| 9777 | (source |
| 9778 | (origin |
| 9779 | (method url-fetch) |
| 9780 | (uri (pypi-uri "netifaces" version)) |
| 9781 | (sha256 |
| 9782 | (base32 |
| 9783 | "0cnajf5rl4w1sa72j921scbigr6zndig56cq8ggpx45jdqa7jfh4")))) |
| 9784 | (build-system python-build-system) |
| 9785 | (home-page "https://github.com/al45tair/netifaces") |
| 9786 | (synopsis |
| 9787 | "Python module for portable network interface information") |
| 9788 | (description |
| 9789 | "Netifaces is a Python module providing information on network |
| 9790 | interfaces in an easy and portable manner.") |
| 9791 | (license license:expat))) |
| 9792 | |
| 9793 | (define-public python-networkx |
| 9794 | (package |
| 9795 | (name "python-networkx") |
| 9796 | (version "2.8.6") |
| 9797 | (source |
| 9798 | (origin |
| 9799 | (method url-fetch) |
| 9800 | (uri (pypi-uri "networkx" version)) |
| 9801 | (sha256 |
| 9802 | (base32 "19h18f5j79l7kmwm5cvm75fadjgmkzw5m3pyvb9cnq0860q7faxx")))) |
| 9803 | (build-system python-build-system) |
| 9804 | (arguments |
| 9805 | '(#:phases (modify-phases %standard-phases |
| 9806 | (replace 'check |
| 9807 | (lambda* (#:key tests? #:allow-other-keys) |
| 9808 | (if tests? |
| 9809 | (invoke "pytest" "-vv" "--pyargs" "networkx") |
| 9810 | (format #t "test suite not run~%")) #t))))) |
| 9811 | (propagated-inputs (list python-decorator)) |
| 9812 | (native-inputs (list python-pytest)) |
| 9813 | (home-page "https://networkx.github.io/") |
| 9814 | (synopsis |
| 9815 | "Python module for creating and manipulating graphs and networks") |
| 9816 | (description |
| 9817 | "NetworkX is a Python package for the creation, manipulation, and study |
| 9818 | of the structure, dynamics, and functions of complex networks.") |
| 9819 | (license license:bsd-3))) |
| 9820 | |
| 9821 | |
| 9822 | (define-public python-datrie |
| 9823 | (package |
| 9824 | (name "python-datrie") |
| 9825 | (version "0.8.2") |
| 9826 | (source |
| 9827 | (origin |
| 9828 | (method url-fetch) |
| 9829 | (uri (pypi-uri "datrie" version)) |
| 9830 | (sha256 |
| 9831 | (base32 |
| 9832 | "0pbn32flkrpjiwfcknmj6398qa81ba783kbcvwan3kym73v0hnsj")))) |
| 9833 | (build-system python-build-system) |
| 9834 | (native-inputs |
| 9835 | (list python-cython python-hypothesis python-pytest |
| 9836 | python-pytest-runner)) |
| 9837 | (home-page "https://github.com/kmike/datrie") |
| 9838 | (synopsis "Fast, efficiently stored trie for Python") |
| 9839 | (description |
| 9840 | "This package provides a fast, efficiently stored trie implementation for |
| 9841 | Python.") |
| 9842 | (license license:lgpl2.1+))) |
| 9843 | |
| 9844 | (define-public python-amply |
| 9845 | (package |
| 9846 | (name "python-amply") |
| 9847 | (version "0.1.4") |
| 9848 | (source |
| 9849 | (origin |
| 9850 | (method url-fetch) |
| 9851 | (uri (pypi-uri "amply" version)) |
| 9852 | (sha256 |
| 9853 | (base32 |
| 9854 | "0f1db9zp0rsfzxvaz55xwh8h5rfdgr9a2a715g06ic8nknsdq4nb")))) |
| 9855 | (build-system python-build-system) |
| 9856 | (propagated-inputs |
| 9857 | (list python-docutils python-pyparsing)) |
| 9858 | (native-inputs |
| 9859 | (list python-setuptools-scm)) |
| 9860 | (home-page "https://github.com/willu47/amply") |
| 9861 | (synopsis "Load and manipulate AMPL/GLPK data as Python data structures") |
| 9862 | (description |
| 9863 | "Amply allows you to load and manipulate AMPL/GLPK data as Python data |
| 9864 | structures.") |
| 9865 | (license license:epl1.0))) |
| 9866 | |
| 9867 | (define-public python-pulp |
| 9868 | (package |
| 9869 | (name "python-pulp") |
| 9870 | (version "2.4") |
| 9871 | (source |
| 9872 | (origin |
| 9873 | (method url-fetch) |
| 9874 | (uri (pypi-uri "PuLP" version)) |
| 9875 | (sha256 |
| 9876 | (base32 |
| 9877 | "1dammrg0f1v0r028i3rpxbf2bsyxmjq0q6ihb4x2wsdki44z3bxj")))) |
| 9878 | (build-system python-build-system) |
| 9879 | (propagated-inputs |
| 9880 | (list python-amply)) |
| 9881 | (home-page "https://github.com/coin-or/pulp") |
| 9882 | (synopsis "Linear Programming modeler") |
| 9883 | (description |
| 9884 | "PuLP is a Linear Programming modeler written in Python. PuLP can |
| 9885 | generate MPS or LP files and call GLPK, COIN CLP/CBC, CPLEX, and GUROBI to |
| 9886 | solve linear problems.") |
| 9887 | (license license:expat))) |
| 9888 | |
| 9889 | (define-public python-py-tes |
| 9890 | (package |
| 9891 | (name "python-py-tes") |
| 9892 | (version "0.4.2") |
| 9893 | (source |
| 9894 | (origin |
| 9895 | (method url-fetch) |
| 9896 | (uri (pypi-uri "py-tes" version)) |
| 9897 | (sha256 |
| 9898 | (base32 "0b272y392v0mnq0f3sm5kgcx8fn4qwfbym89hhvqxz3xkganr4pn")))) |
| 9899 | (build-system python-build-system) |
| 9900 | (propagated-inputs |
| 9901 | (list python-attrs python-dateutil python-future python-requests)) |
| 9902 | (home-page "https://github.com/ohsu-comp-bio/py-tes") |
| 9903 | (synopsis "Library for communicating with the GA4GH Task Execution API") |
| 9904 | (description "This package provides a library for communicating with the |
| 9905 | GA4GH Task Execution API.") |
| 9906 | (license license:expat))) |
| 9907 | |
| 9908 | (define-public python-toposort |
| 9909 | (package |
| 9910 | (name "python-toposort") |
| 9911 | (version "1.6") |
| 9912 | (source |
| 9913 | (origin |
| 9914 | (method url-fetch) |
| 9915 | (uri (pypi-uri "toposort" version)) |
| 9916 | (sha256 |
| 9917 | (base32 |
| 9918 | "1b2hppzjg3p006qya3yfdnp76dwq8frl97lypdam0kw4xxb8yhm7")))) |
| 9919 | (build-system python-build-system) |
| 9920 | (home-page "https://gitlab.com/ericvsmith/toposort") |
| 9921 | (synopsis "Topological sort algorithm") |
| 9922 | (description |
| 9923 | "This package provides an implementation of a topological sort |
| 9924 | algorithm.") |
| 9925 | (license license:asl2.0))) |
| 9926 | |
| 9927 | (define-public python-three-merge |
| 9928 | (package |
| 9929 | (name "python-three-merge") |
| 9930 | (version "0.1.1") |
| 9931 | (source |
| 9932 | (origin |
| 9933 | ;; There are no tests in the PyPI tarball. |
| 9934 | (method git-fetch) |
| 9935 | (uri (git-reference |
| 9936 | (url "https://github.com/spyder-ide/three-merge") |
| 9937 | (commit (string-append "v" version)))) |
| 9938 | (file-name (git-file-name name version)) |
| 9939 | (sha256 |
| 9940 | (base32 "1fw28swh6jq4myr09j7gv68l241b8vwg470ak5xv0x4xwh2a1m86")))) |
| 9941 | (build-system python-build-system) |
| 9942 | (arguments |
| 9943 | `(#:test-target "pytest")) |
| 9944 | (propagated-inputs |
| 9945 | (list python-diff-match-patch)) |
| 9946 | (native-inputs |
| 9947 | (list python-flaky python-pytest python-pytest-cov |
| 9948 | python-pytest-runner python-pytest-timeout)) |
| 9949 | (home-page "https://github.com/spyder-ide/three-merge") |
| 9950 | (synopsis "Library for merging two strings with respect to a base one") |
| 9951 | (description |
| 9952 | "This package provides a Python library to perform a 3-way merge between |
| 9953 | strings, based on @code{diff-match-patch}. This library performs merges at a |
| 9954 | character level, as opposed to most VCS systems, which opt for a line-based |
| 9955 | approach.") |
| 9956 | (license license:expat))) |
| 9957 | |
| 9958 | (define-public snakemake |
| 9959 | (package |
| 9960 | (name "snakemake") |
| 9961 | (version "5.32.2") |
| 9962 | (source |
| 9963 | (origin |
| 9964 | (method url-fetch) |
| 9965 | (uri (pypi-uri "snakemake" version)) |
| 9966 | (sha256 |
| 9967 | (base32 "13013gdavwvyj1qr9xfi9fpwhb3km8c3z53bja5b7ic3sb2z6dgz")))) |
| 9968 | (build-system python-build-system) |
| 9969 | (arguments |
| 9970 | ;; TODO: Package missing test dependencies. |
| 9971 | '(#:tests? #f |
| 9972 | #:phases |
| 9973 | (modify-phases %standard-phases |
| 9974 | ;; For cluster execution Snakemake will call Python. Since there is |
| 9975 | ;; no suitable PYTHONPATH set, cluster execution will fail. We fix |
| 9976 | ;; this by calling the snakemake wrapper instead. |
| 9977 | (add-after 'unpack 'call-wrapper-not-wrapped-snakemake |
| 9978 | (lambda* (#:key outputs #:allow-other-keys) |
| 9979 | (substitute* "snakemake/executors/__init__.py" |
| 9980 | (("\\{sys.executable\\} -m snakemake") |
| 9981 | (string-append (assoc-ref outputs "out") |
| 9982 | "/bin/snakemake"))) |
| 9983 | #t))))) |
| 9984 | (propagated-inputs |
| 9985 | (list python-appdirs |
| 9986 | python-configargparse |
| 9987 | python-datrie |
| 9988 | python-docutils |
| 9989 | python-gitpython |
| 9990 | python-jinja2 |
| 9991 | python-jsonschema |
| 9992 | python-nbformat |
| 9993 | python-networkx |
| 9994 | python-psutil |
| 9995 | python-pulp |
| 9996 | python-pyyaml |
| 9997 | python-ratelimiter |
| 9998 | python-requests |
| 9999 | python-toposort |
| 10000 | python-wrapt)) |
| 10001 | (home-page "https://snakemake.readthedocs.io") |
| 10002 | (synopsis "Python-based execution environment for make-like workflows") |
| 10003 | (description |
| 10004 | "Snakemake aims to reduce the complexity of creating workflows by |
| 10005 | providing a clean and modern domain specific specification language (DSL) in |
| 10006 | Python style, together with a fast and comfortable execution environment.") |
| 10007 | (license license:expat))) |
| 10008 | |
| 10009 | (define-public snakemake-6 |
| 10010 | (package |
| 10011 | (inherit snakemake) |
| 10012 | (name "snakemake") |
| 10013 | (version "6.15.5") |
| 10014 | (source |
| 10015 | (origin |
| 10016 | (method git-fetch) |
| 10017 | (uri (git-reference |
| 10018 | (url "https://github.com/snakemake/snakemake") |
| 10019 | (commit (string-append "v" version)))) |
| 10020 | (file-name (git-file-name name version)) |
| 10021 | (sha256 |
| 10022 | (base32 "09yrpi9f86r9yvcm2dfjs5zy87c4j31bxama77kfd6y8yfrrjlai")))) |
| 10023 | (build-system python-build-system) |
| 10024 | (arguments |
| 10025 | '(#:phases |
| 10026 | (modify-phases %standard-phases |
| 10027 | ;; For cluster execution Snakemake will call Python. Since there is |
| 10028 | ;; no suitable GUIX_PYTHONPATH set, cluster execution will fail. We |
| 10029 | ;; fix this by calling the snakemake wrapper instead. |
| 10030 | |
| 10031 | ;; XXX: There is another instance of sys.executable on line 692, but |
| 10032 | ;; it is not clear how to patch it. |
| 10033 | (add-after 'unpack 'call-wrapper-not-wrapped-snakemake |
| 10034 | (lambda* (#:key outputs #:allow-other-keys) |
| 10035 | (substitute* "snakemake/executors/__init__.py" |
| 10036 | (("\\{sys.executable\\} -m snakemake") |
| 10037 | (string-append (assoc-ref outputs "out") |
| 10038 | "/bin/snakemake"))))) |
| 10039 | (replace 'check |
| 10040 | (lambda* (#:key tests? #:allow-other-keys) |
| 10041 | (when tests? |
| 10042 | (setenv "HOME" "/tmp") |
| 10043 | ;; This test attempts to change S3 buckets on AWS and fails |
| 10044 | ;; because there are no AWS credentials. |
| 10045 | (delete-file "tests/test_tibanna.py") |
| 10046 | (invoke "pytest"))))))) |
| 10047 | (propagated-inputs |
| 10048 | (list python-appdirs |
| 10049 | python-configargparse |
| 10050 | python-connection-pool |
| 10051 | python-datrie |
| 10052 | python-docutils |
| 10053 | python-filelock |
| 10054 | python-gitpython |
| 10055 | python-jinja2 |
| 10056 | python-jsonschema |
| 10057 | python-nbformat |
| 10058 | python-networkx |
| 10059 | python-psutil |
| 10060 | python-pulp |
| 10061 | python-pyyaml |
| 10062 | python-py-tes |
| 10063 | python-ratelimiter |
| 10064 | python-requests |
| 10065 | python-smart-open |
| 10066 | python-stopit |
| 10067 | python-tabulate |
| 10068 | python-toposort |
| 10069 | python-wrapt)) |
| 10070 | (native-inputs |
| 10071 | (list git-minimal |
| 10072 | python-wrapper |
| 10073 | python-pytest |
| 10074 | python-pandas |
| 10075 | python-requests-mock)))) |
| 10076 | |
| 10077 | (define-public snakemake-7 |
| 10078 | (package |
| 10079 | (inherit snakemake-6) |
| 10080 | (name "snakemake") |
| 10081 | (version "7.7.0") |
| 10082 | (source |
| 10083 | (origin |
| 10084 | (method git-fetch) |
| 10085 | (uri (git-reference |
| 10086 | (url "https://github.com/snakemake/snakemake") |
| 10087 | (commit (string-append "v" version)))) |
| 10088 | (file-name (git-file-name name version)) |
| 10089 | (sha256 |
| 10090 | (base32 "1qrqbmx4cbis0wxr6dl2rdjv9v627sbirsz6v5c31vlbqwkvs04q")))) |
| 10091 | (build-system python-build-system) |
| 10092 | (arguments |
| 10093 | '(#:phases |
| 10094 | (modify-phases %standard-phases |
| 10095 | ;; For cluster execution Snakemake will call Python. Since there is |
| 10096 | ;; no suitable GUIX_PYTHONPATH set, cluster execution will fail. We |
| 10097 | ;; fix this by calling the snakemake wrapper instead. |
| 10098 | (add-after 'unpack 'call-wrapper-not-wrapped-snakemake |
| 10099 | (lambda* (#:key outputs #:allow-other-keys) |
| 10100 | (substitute* "snakemake/executors/__init__.py" |
| 10101 | (("self\\.get_python_executable\\(\\),") |
| 10102 | "") |
| 10103 | (("\"-m snakemake\"") |
| 10104 | (string-append "\"" (assoc-ref outputs "out") |
| 10105 | "/bin/snakemake" "\""))))) |
| 10106 | (replace 'check |
| 10107 | (lambda* (#:key tests? #:allow-other-keys) |
| 10108 | (when tests? |
| 10109 | (setenv "HOME" "/tmp") |
| 10110 | ;; This test attempts to change S3 buckets on AWS and fails |
| 10111 | ;; because there are no AWS credentials. |
| 10112 | (delete-file "tests/test_tibanna.py") |
| 10113 | ;; It's a similar story with this test, which requires access |
| 10114 | ;; to the Google Storage service. |
| 10115 | (delete-file "tests/test_google_lifesciences.py") |
| 10116 | (invoke "pytest"))))))) |
| 10117 | (propagated-inputs |
| 10118 | (list python-appdirs |
| 10119 | python-configargparse |
| 10120 | python-connection-pool |
| 10121 | python-datrie |
| 10122 | python-docutils |
| 10123 | python-filelock |
| 10124 | python-gitpython |
| 10125 | python-jinja2 |
| 10126 | python-jsonschema |
| 10127 | python-nbformat |
| 10128 | python-networkx |
| 10129 | python-psutil |
| 10130 | python-pulp |
| 10131 | python-pyyaml |
| 10132 | python-py-tes |
| 10133 | python-ratelimiter |
| 10134 | python-requests |
| 10135 | python-retry |
| 10136 | python-smart-open |
| 10137 | python-stopit |
| 10138 | python-tabulate |
| 10139 | python-toposort |
| 10140 | python-wrapt |
| 10141 | python-yte)) |
| 10142 | (native-inputs |
| 10143 | (list git-minimal |
| 10144 | python-wrapper |
| 10145 | python-pytest |
| 10146 | python-pandas |
| 10147 | python-requests-mock)))) |
| 10148 | |
| 10149 | (define-public python-pyqrcode |
| 10150 | (package |
| 10151 | (name "python-pyqrcode") |
| 10152 | (version "1.2.1") |
| 10153 | (source |
| 10154 | (origin |
| 10155 | (method url-fetch) |
| 10156 | (uri (pypi-uri "PyQRCode" version)) |
| 10157 | (sha256 |
| 10158 | (base32 |
| 10159 | "1m9ln8k9v7dfbh1i81225hx5mdsh8mpf9g7r4wpbfmiyfcs7dgzx")))) |
| 10160 | (build-system python-build-system) |
| 10161 | (home-page |
| 10162 | "https://github.com/mnooner256/pyqrcode") |
| 10163 | (synopsis "QR code generator") |
| 10164 | (description |
| 10165 | "Pyqrcode is a QR code generator written purely in Python with |
| 10166 | SVG, EPS, PNG and terminal output.") |
| 10167 | (license license:bsd-3))) |
| 10168 | |
| 10169 | (define-public python-seaborn |
| 10170 | (package |
| 10171 | (name "python-seaborn") |
| 10172 | (version "0.11.2") |
| 10173 | (source (origin |
| 10174 | (method url-fetch) |
| 10175 | (uri (pypi-uri "seaborn" version)) |
| 10176 | (sha256 |
| 10177 | (base32 |
| 10178 | "1xpl3zb945sihsiwm9q1yyx84sakk1phcg0fprj6i0j0dllfjifg")) |
| 10179 | (patches (search-patches "python-seaborn-kde-test.patch" |
| 10180 | "python-seaborn-2690.patch")))) |
| 10181 | (build-system python-build-system) |
| 10182 | (arguments |
| 10183 | `(#:phases (modify-phases %standard-phases |
| 10184 | (add-after 'unpack 'patch-more-tests |
| 10185 | (lambda _ |
| 10186 | (substitute* "seaborn/tests/test_distributions.py" |
| 10187 | (("get_contour_color\\(ax\\.collections\\[0\\]\\)") |
| 10188 | "get_contour_color(ax.collections[0])") |
| 10189 | (("c\\.get_color\\(\\)") "get_contour_color(c)") |
| 10190 | (("def test_hue_ignores_cmap") |
| 10191 | "def skip_test_hue_ignores_cmap") |
| 10192 | (("def test_fill_artists") |
| 10193 | "def skip_test_fill_artists") |
| 10194 | (("def test_with_rug") "def skip_test_with_rug")))) |
| 10195 | (add-before 'check 'start-xserver |
| 10196 | (lambda _ |
| 10197 | (system "Xvfb :1 &") |
| 10198 | (setenv "DISPLAY" ":1"))) |
| 10199 | (replace 'check |
| 10200 | (lambda* (#:key tests? #:allow-other-keys) |
| 10201 | (when tests? |
| 10202 | (invoke "pytest" "seaborn"))))))) |
| 10203 | (propagated-inputs (list python-pandas python-matplotlib python-numpy |
| 10204 | python-scipy)) |
| 10205 | (native-inputs (list python-pytest xorg-server-for-tests)) |
| 10206 | (home-page "https://seaborn.pydata.org/") |
| 10207 | (synopsis "Statistical data visualization") |
| 10208 | (description |
| 10209 | "Seaborn is a library for making attractive and informative statistical |
| 10210 | graphics in Python. It is built on top of matplotlib and tightly integrated |
| 10211 | with the PyData stack, including support for numpy and pandas data structures |
| 10212 | and statistical routines from scipy and statsmodels.") |
| 10213 | (license license:bsd-3))) |
| 10214 | |
| 10215 | |
| 10216 | (define-public python-session-info |
| 10217 | (package |
| 10218 | (name "python-session-info") |
| 10219 | (version "1.0.0") |
| 10220 | (source (origin |
| 10221 | (method url-fetch) |
| 10222 | (uri (pypi-uri "session_info" version)) |
| 10223 | (sha256 |
| 10224 | (base32 |
| 10225 | "1dxnrgaxd2nb44n423mnrx119hmnh2yxdnzaw8mg60x7rh1mxniw")))) |
| 10226 | (build-system python-build-system) |
| 10227 | (propagated-inputs (list python-stdlib-list)) |
| 10228 | (home-page "https://gitlab.com/joelostblom/session_info") |
| 10229 | (synopsis "Output version information for modules currently loaded") |
| 10230 | (description |
| 10231 | "This package outputs version information for modules loaded in the current |
| 10232 | session, Python, and the OS.") |
| 10233 | (license license:bsd-3))) |
| 10234 | |
| 10235 | (define-public python-mpmath |
| 10236 | (package |
| 10237 | (name "python-mpmath") |
| 10238 | (version "1.2.1") |
| 10239 | (source (origin |
| 10240 | (method git-fetch) |
| 10241 | (uri (git-reference |
| 10242 | (url "https://github.com/fredrik-johansson/mpmath") |
| 10243 | (commit "c6a35f9ee7c294bcf4e0517bc76b268843db9499"))) |
| 10244 | (file-name (git-file-name name version)) |
| 10245 | (sha256 |
| 10246 | (base32 |
| 10247 | "0ifw59fjjls3mas104rh0frilvab2fhk1dkjraxlqni5n9l676im")))) |
| 10248 | (build-system python-build-system) |
| 10249 | (arguments |
| 10250 | `(#:phases |
| 10251 | (modify-phases %standard-phases |
| 10252 | (add-before 'build 'set-version |
| 10253 | (lambda _ |
| 10254 | (setenv "SETUPTOOLS_SCM_PRETEND_VERSION" ,version) |
| 10255 | ;; ZIP does not support timestamps before 1980. |
| 10256 | (setenv "SOURCE_DATE_EPOCH" "315532800"))) |
| 10257 | (replace 'check |
| 10258 | (lambda* (#:key tests? inputs outputs #:allow-other-keys) |
| 10259 | (when tests? |
| 10260 | (add-installed-pythonpath inputs outputs) |
| 10261 | (invoke "pytest" "-vv"))))))) |
| 10262 | (native-inputs |
| 10263 | (list python-pytest python-setuptools-scm)) |
| 10264 | (home-page "https://mpmath.org") |
| 10265 | (synopsis "Arbitrary-precision floating-point arithmetic in python") |
| 10266 | (description |
| 10267 | "@code{mpmath} can be used as an arbitrary-precision substitute for |
| 10268 | Python's float/complex types and math/cmath modules, but also does much |
| 10269 | more advanced mathematics.") |
| 10270 | (license license:bsd-3))) |
| 10271 | |
| 10272 | (define-public python-bigfloat |
| 10273 | (package |
| 10274 | (name "python-bigfloat") |
| 10275 | (version "0.4.0") |
| 10276 | (source |
| 10277 | (origin |
| 10278 | (method url-fetch) |
| 10279 | (uri (pypi-uri "bigfloat" version)) |
| 10280 | (sha256 |
| 10281 | (base32 "1f0c1hdr39bbl5rds5r1waa1papjmjiyp0ixs64mkjiahzg6pfaq")))) |
| 10282 | (build-system python-build-system) |
| 10283 | (inputs |
| 10284 | (list mpfr)) |
| 10285 | (propagated-inputs |
| 10286 | (list python-six)) |
| 10287 | (home-page "https://github.com/mdickinson/bigfloat") |
| 10288 | (synopsis "Arbitrary precision floating-point arithmetic for Python") |
| 10289 | (description |
| 10290 | "This package provides a Python interface to the MPFR library for |
| 10291 | multiprecision arithmetic.") |
| 10292 | (license license:lgpl3+))) |
| 10293 | |
| 10294 | (define-public python-plac |
| 10295 | (package |
| 10296 | (name "python-plac") |
| 10297 | (version "1.3.5") |
| 10298 | (source |
| 10299 | (origin |
| 10300 | (method url-fetch) |
| 10301 | (uri (pypi-uri "plac" version)) |
| 10302 | (sha256 |
| 10303 | (base32 "1410h6jw1ksi24kb55xzkwqzba2qqjwiga1s354bf3s5s1jdig9q")))) |
| 10304 | (build-system python-build-system) |
| 10305 | (arguments |
| 10306 | '(#:phases |
| 10307 | (modify-phases %standard-phases |
| 10308 | (add-after 'unpack 'fix-tkinter |
| 10309 | (lambda _ |
| 10310 | (substitute* "plac_tk.py" |
| 10311 | (("from Tkinter import Tk") |
| 10312 | "from tkinter import Tk") |
| 10313 | (("from ScrolledText import ScrolledText") |
| 10314 | "from tkinter.scrolledtext import ScrolledText"))))))) |
| 10315 | (native-inputs |
| 10316 | `(("python-tkinter" ,python "tk"))) |
| 10317 | (home-page "https://github.com/ialbert/plac") |
| 10318 | (synopsis "Command line arguments parser") |
| 10319 | (description "This package can generate command line parameters from |
| 10320 | function signatures.") |
| 10321 | (license license:bsd-3))) |
| 10322 | |
| 10323 | (define-public python-yte |
| 10324 | (package |
| 10325 | (name "python-yte") |
| 10326 | (version "1.2.0") |
| 10327 | (source |
| 10328 | (origin |
| 10329 | (method url-fetch) |
| 10330 | (uri (pypi-uri "yte" version)) |
| 10331 | (sha256 |
| 10332 | (base32 "07hm1warpqi4ifqgkaz5sg887x4a44yhxafmpf835ywnpchg4s03")))) |
| 10333 | (build-system python-build-system) |
| 10334 | (arguments |
| 10335 | '(#:phases |
| 10336 | (modify-phases %standard-phases |
| 10337 | (add-after 'unpack 'set-HOME |
| 10338 | (lambda _ (setenv "HOME" "/tmp")))))) |
| 10339 | (propagated-inputs (list python-plac python-pyyaml)) |
| 10340 | (home-page "https://github.com/koesterlab/yte") |
| 10341 | (synopsis "YAML template engine with Python expressions") |
| 10342 | (description |
| 10343 | "This package provides a YAML template engine with Python expressions.") |
| 10344 | (license license:expat))) |
| 10345 | |
| 10346 | (define-public python-syllables |
| 10347 | (package |
| 10348 | (name "python-syllables") |
| 10349 | (version "1.0.3") |
| 10350 | (source (origin |
| 10351 | (method url-fetch) |
| 10352 | (uri (pypi-uri "syllables" version)) |
| 10353 | (sha256 |
| 10354 | (base32 |
| 10355 | "0wkl6h0rg6fbsxfp0a8fnibf3l4l6lbh6z12cvcilgb6qhxzpmv3")))) |
| 10356 | (build-system python-build-system) |
| 10357 | (home-page "https://github.com/prosegrinder/python-syllables") |
| 10358 | (synopsis "Package for estimating the number of syllables in a word") |
| 10359 | (description |
| 10360 | "This package provides a Python package for estimating the number of |
| 10361 | syllables in a word.") |
| 10362 | (license license:gpl3))) |
| 10363 | |
| 10364 | (define-public python-sympy |
| 10365 | (package |
| 10366 | (name "python-sympy") |
| 10367 | (version "1.11.1") |
| 10368 | (source |
| 10369 | (origin |
| 10370 | (method url-fetch) |
| 10371 | (uri (pypi-uri "sympy" version)) |
| 10372 | (sha256 |
| 10373 | (base32 "0n46x1rfy8c2a9za3yp2va5icigxj805f9fmiq8c1drwwvf808z3")))) |
| 10374 | (build-system python-build-system) |
| 10375 | (arguments |
| 10376 | `(#:phases |
| 10377 | (modify-phases %standard-phases |
| 10378 | (replace 'check |
| 10379 | (lambda* (#:key outputs #:allow-other-keys) |
| 10380 | (invoke |
| 10381 | (or (which "python3") (which "python")) |
| 10382 | "-c" "import sympy; sympy.test(\"/core\")")))))) |
| 10383 | (propagated-inputs |
| 10384 | (list python-mpmath)) |
| 10385 | (home-page "https://www.sympy.org/") |
| 10386 | (synopsis "Python library for symbolic mathematics") |
| 10387 | (description |
| 10388 | "SymPy is a Python library for symbolic mathematics. It aims to become a |
| 10389 | full-featured computer algebra system (CAS) while keeping the code as simple |
| 10390 | as possible in order to be comprehensible and easily extensible.") |
| 10391 | (license license:bsd-3))) |
| 10392 | |
| 10393 | (define-public python-q |
| 10394 | (package |
| 10395 | (name "python-q") |
| 10396 | (version "2.6") |
| 10397 | (source |
| 10398 | (origin |
| 10399 | (method url-fetch) |
| 10400 | (uri (pypi-uri "q" version)) |
| 10401 | (sha256 |
| 10402 | (base32 |
| 10403 | "1mgfazh8fkizh6walra2zv885f3lcgr3nb02v1frfm4p8ddcy3yy")))) |
| 10404 | (build-system python-build-system) |
| 10405 | (home-page "https://github.com/zestyping/q") |
| 10406 | (synopsis "Quick-and-dirty debugging output for tired programmers") |
| 10407 | (description |
| 10408 | "q is a Python module for \"print\" style of debugging Python code. It |
| 10409 | provides convenient short API for print out of values, tracebacks, and |
| 10410 | falling into the Python interpreter.") |
| 10411 | (license license:asl2.0))) |
| 10412 | |
| 10413 | (define-public python-xlib |
| 10414 | (package |
| 10415 | (name "python-xlib") |
| 10416 | (version "0.29") |
| 10417 | (source |
| 10418 | (origin |
| 10419 | (method git-fetch) |
| 10420 | (uri (git-reference |
| 10421 | (url "https://github.com/python-xlib/python-xlib") |
| 10422 | (commit version))) |
| 10423 | (file-name (git-file-name name version)) |
| 10424 | (sha256 |
| 10425 | (base32 "17cwd2knqm2vwrii3kqii9abwsnydhpg4byqx1vy7rjs6i1vbqfc")))) |
| 10426 | (build-system python-build-system) |
| 10427 | (arguments |
| 10428 | `(#:phases |
| 10429 | (modify-phases %standard-phases |
| 10430 | (add-before 'check 'start-xserver |
| 10431 | (lambda* (#:key inputs #:allow-other-keys) |
| 10432 | (let ((xorg-server (assoc-ref inputs "xorg-server"))) |
| 10433 | ;; There must be a running X server and make check doesn't |
| 10434 | ;; start one. Therefore we must do it. |
| 10435 | (system (format #f "~a/bin/Xvfb :1 &" xorg-server)) |
| 10436 | (setenv "DISPLAY" ":1") |
| 10437 | #t)))))) |
| 10438 | (native-inputs |
| 10439 | (list python-mock python-setuptools-scm xorg-server)) |
| 10440 | (propagated-inputs |
| 10441 | (list python-six)) |
| 10442 | (home-page "https://github.com/python-xlib/python-xlib") |
| 10443 | (synopsis "Python X11 client library") |
| 10444 | (description |
| 10445 | "The Python X Library is intended to be a fully functional |
| 10446 | X client library for Python programs. It is useful to implement |
| 10447 | low-level X clients. It is written entirely in Python.") |
| 10448 | (license license:gpl2+))) |
| 10449 | |
| 10450 | (define-public python-singledispatch |
| 10451 | (package |
| 10452 | (name "python-singledispatch") |
| 10453 | (version "3.4.0.3") |
| 10454 | (source |
| 10455 | (origin |
| 10456 | (method url-fetch) |
| 10457 | (uri (pypi-uri "singledispatch" version)) |
| 10458 | (sha256 |
| 10459 | (base32 |
| 10460 | "171b7ip0hsq5qm83np40h3phlr36ym18w0lay0a8v08kvy3sy1jv")))) |
| 10461 | (build-system python-build-system) |
| 10462 | (native-inputs |
| 10463 | (list python-six)) ; required for conversion, not at run-time |
| 10464 | (home-page |
| 10465 | "https://docs.python.org/3/library/functools.html#functools.singledispatch") |
| 10466 | (synopsis "Backport of singledispatch feature from Python 3.4") |
| 10467 | (description |
| 10468 | "This library brings functools.singledispatch from Python 3.4 to Python |
| 10469 | 2.6-3.3.") |
| 10470 | (license license:expat))) |
| 10471 | |
| 10472 | ;; the python- version can be removed with python-3.5 |
| 10473 | (define-public python-backports-abc |
| 10474 | (package |
| 10475 | (name "python-backports-abc") |
| 10476 | (version "0.5") |
| 10477 | (source |
| 10478 | (origin |
| 10479 | (method url-fetch) |
| 10480 | (uri (pypi-uri "backports_abc" version)) |
| 10481 | (sha256 |
| 10482 | (base32 |
| 10483 | "1pkv8d1zxj5f9i227dxbjczncbv7ks7ywnjwyxfjagm02i2yafq3")))) |
| 10484 | (build-system python-build-system) |
| 10485 | (home-page "https://github.com/cython/backports_abc") |
| 10486 | (synopsis "Backport of additions to the 'collections.abc' module") |
| 10487 | (description |
| 10488 | "Python-backports-abc provides a backport of additions to the |
| 10489 | @code{collections.abc} module in Python-3.5.") |
| 10490 | (license license:psfl))) |
| 10491 | |
| 10492 | (define-public python-backports-csv |
| 10493 | (package |
| 10494 | (name "python-backports-csv") |
| 10495 | (version "1.0.7") |
| 10496 | (source |
| 10497 | (origin |
| 10498 | (method url-fetch) |
| 10499 | (uri (pypi-uri "backports.csv" version)) |
| 10500 | (sha256 |
| 10501 | (base32 "0vdx5jlhs91iizc8j8l8811nqprwvdx39pgkdc82w2qkfgzxyxqj")))) |
| 10502 | (build-system python-build-system) |
| 10503 | (home-page "https://github.com/ryanhiebert/backports.csv") |
| 10504 | (synopsis "Backport of Python 3's csv module for Python 2") |
| 10505 | (description |
| 10506 | "Provides a backport of Python 3's @code{csv} module for parsing |
| 10507 | comma separated values. The API of the @code{csv} module in Python 2 |
| 10508 | is drastically different from the @code{csv} module in Python 3. |
| 10509 | This is due, for the most part, to the difference between str in |
| 10510 | Python 2 and Python 3.") |
| 10511 | (license license:psfl))) |
| 10512 | |
| 10513 | (define-public python-waf |
| 10514 | (package |
| 10515 | (name "python-waf") |
| 10516 | (version "2.0.19") |
| 10517 | (source (origin |
| 10518 | (method url-fetch) |
| 10519 | (uri (string-append "https://waf.io/" |
| 10520 | "waf-" version ".tar.bz2")) |
| 10521 | (sha256 |
| 10522 | (base32 |
| 10523 | "19dvqbsvxz7ch03dh1v0znklrwxlz6yzddc3k9smzrrgny4jch6q")))) |
| 10524 | (build-system python-build-system) |
| 10525 | (arguments |
| 10526 | '(#:phases |
| 10527 | (modify-phases %standard-phases |
| 10528 | (replace 'build |
| 10529 | (lambda _ |
| 10530 | ;; XXX: Find a way to add all extra tools. |
| 10531 | (let ((tools '("gccdeps" |
| 10532 | "clang_compilation_database"))) |
| 10533 | (invoke "python" "waf-light" "configure" "build" |
| 10534 | (string-append "--tools=" |
| 10535 | (string-join tools ",")))))) |
| 10536 | (replace 'check |
| 10537 | (lambda _ |
| 10538 | (invoke "python" "waf" "--version"))) |
| 10539 | (replace 'install |
| 10540 | (lambda* (#:key outputs #:allow-other-keys) |
| 10541 | (let ((out (assoc-ref outputs "out"))) |
| 10542 | (install-file "waf" (string-append out "/bin"))) |
| 10543 | #t)) |
| 10544 | ;; waf breaks when it is wrapped. |
| 10545 | (delete 'wrap)))) |
| 10546 | (home-page "https://waf.io/") |
| 10547 | (synopsis "Python-based build system") |
| 10548 | (description |
| 10549 | "Waf is a Python-based framework for configuring, compiling and installing |
| 10550 | applications.") |
| 10551 | (license license:bsd-3))) |
| 10552 | |
| 10553 | (define-public python-pyzmq |
| 10554 | (package |
| 10555 | (name "python-pyzmq") |
| 10556 | (version "22.3.0") |
| 10557 | (source |
| 10558 | (origin |
| 10559 | (method url-fetch) |
| 10560 | (uri (pypi-uri "pyzmq" version)) |
| 10561 | (sha256 |
| 10562 | (base32 "0737kizh53n4rjq1xbm6nhr0bq65xflg04i1d8fcky0nwwrw1pcf")) |
| 10563 | (snippet |
| 10564 | #~(begin |
| 10565 | (use-modules (guix build utils)) |
| 10566 | ;; The bundled zeromq source code. |
| 10567 | (delete-file-recursively "bundled") |
| 10568 | ;; Delete cythonized files. |
| 10569 | (for-each delete-file |
| 10570 | (list "zmq/backend/cython/constants.c" |
| 10571 | "zmq/backend/cython/context.c" |
| 10572 | "zmq/backend/cython/_device.c" |
| 10573 | "zmq/backend/cython/error.c" |
| 10574 | "zmq/backend/cython/message.c" |
| 10575 | "zmq/backend/cython/_poll.c" |
| 10576 | "zmq/backend/cython/_proxy_steerable.c" |
| 10577 | "zmq/backend/cython/socket.c" |
| 10578 | "zmq/backend/cython/utils.c" |
| 10579 | "zmq/backend/cython/_version.c" |
| 10580 | "zmq/devices/monitoredqueue.c")))))) |
| 10581 | (build-system python-build-system) |
| 10582 | (arguments |
| 10583 | `(#:configure-flags |
| 10584 | (list (string-append "--zmq=" (assoc-ref %build-inputs "zeromq"))) |
| 10585 | #:phases |
| 10586 | (modify-phases %standard-phases |
| 10587 | (add-before 'check 'build-extensions |
| 10588 | (lambda _ |
| 10589 | ;; Cython extensions have to be built before running the tests. |
| 10590 | (invoke "python" "setup.py" "build_ext" "--inplace")))))) |
| 10591 | (inputs |
| 10592 | (list zeromq)) |
| 10593 | (native-inputs |
| 10594 | (list pkg-config python-cython python-pytest)) |
| 10595 | (home-page "https://github.com/zeromq/pyzmq") |
| 10596 | (synopsis "Python bindings for 0MQ") |
| 10597 | (description |
| 10598 | "PyZMQ is the official Python binding for the ZeroMQ messaging library.") |
| 10599 | (license license:bsd-4))) |
| 10600 | |
| 10601 | (define-public python-immutabledict |
| 10602 | (package |
| 10603 | (name "python-immutabledict") |
| 10604 | (version "2.2.1") |
| 10605 | (source |
| 10606 | (origin |
| 10607 | (method url-fetch) |
| 10608 | (uri (pypi-uri "immutabledict" version)) |
| 10609 | (sha256 |
| 10610 | (base32 "0fpc4gbk7inpfbgdypsg6c18bmdjw8gwx47bjw0hvixn3gghxnqx")))) |
| 10611 | (build-system python-build-system) |
| 10612 | (arguments |
| 10613 | `(#:tests? #f)) ; no tests in PyPI release and no setup.py in GitHub |
| 10614 | (native-inputs |
| 10615 | (list python-pytest)) |
| 10616 | (home-page "https://github.com/corenting/immutabledict") |
| 10617 | (synopsis "Immutable wrapper around dictionaries") |
| 10618 | (description |
| 10619 | "@dfn{immutabledict} is an immutable wrapper around dictionaries. |
| 10620 | It implements the complete mapping interface and can be used as a drop-in |
| 10621 | replacement for dictionaries where immutability is desired.") |
| 10622 | (license license:expat))) |
| 10623 | |
| 10624 | (define-public python-emoji |
| 10625 | (package |
| 10626 | (name "python-emoji") |
| 10627 | (version "1.6.1") |
| 10628 | (source |
| 10629 | (origin |
| 10630 | (method url-fetch) |
| 10631 | (uri (pypi-uri "emoji" version)) |
| 10632 | (sha256 |
| 10633 | (base32 "0923mpixwq6hdpkgvi4r46alfvf608iq975rb8lnqpq29j71mmjk")))) |
| 10634 | (build-system python-build-system) |
| 10635 | (arguments |
| 10636 | `(#:phases |
| 10637 | (modify-phases %standard-phases |
| 10638 | (replace 'check |
| 10639 | (lambda* (#:key tests? #:allow-other-keys) |
| 10640 | (when tests? |
| 10641 | (invoke "python" "-m" "pytest"))))))) |
| 10642 | (native-inputs |
| 10643 | (list python-pytest)) |
| 10644 | (home-page "https://github.com/carpedm20/emoji/") |
| 10645 | (synopsis "Emoji terminal output for Python") |
| 10646 | (description "This package provides Emoji terminal output for Python. The |
| 10647 | entire set of Emoji codes as defined by the Unicode Consortium is supported in |
| 10648 | addition to a bunch of aliases.") |
| 10649 | (license license:bsd-3))) |
| 10650 | |
| 10651 | (define-public python-sarge |
| 10652 | (package |
| 10653 | (name "python-sarge") |
| 10654 | (version "0.1.7.post1") ; post release only to correct errors in metadata |
| 10655 | (source |
| 10656 | (origin |
| 10657 | (method url-fetch) |
| 10658 | (uri (pypi-uri "sarge" version)) |
| 10659 | (sha256 |
| 10660 | (base32 "0g9a53mfnp96877n1yq2jdk1mcv3xm0d93iisvgcn2prdsp45zv4")))) |
| 10661 | (build-system python-build-system) |
| 10662 | (home-page "https://docs.red-dove.com/sarge/") |
| 10663 | (synopsis "Subprocess wrapper with command pipeline functionality") |
| 10664 | (description "@code{sarge} is a wrapper for subprocess which provides |
| 10665 | command pipeline functionality.") |
| 10666 | (license license:bsd-3))) |
| 10667 | |
| 10668 | (define-public python-zipstream-new |
| 10669 | (package |
| 10670 | (name "python-zipstream-new") |
| 10671 | (version "1.1.8") |
| 10672 | (source |
| 10673 | (origin |
| 10674 | (method git-fetch) ; no tests in PyPI release |
| 10675 | (uri (git-reference |
| 10676 | (url "https://github.com/arjan-s/python-zipstream") |
| 10677 | (commit (string-append "v" version)))) |
| 10678 | (file-name (git-file-name name version)) |
| 10679 | (sha256 |
| 10680 | (base32 "14vhgg8mcjqi8cpzrw8qzbij2fr2a63l2a8fhil21k2r8vzv92cv")))) |
| 10681 | (build-system python-build-system) |
| 10682 | (native-inputs |
| 10683 | (list python-nose)) |
| 10684 | (home-page "https://github.com/arjan-s/python-zipstream") |
| 10685 | (synopsis "Zipfile generator that takes input files as well as streams") |
| 10686 | (description "@code{zipstream.py} is a zip archive generator based on |
| 10687 | @code{zipfile.py}. It was created to generate a zip file generator for |
| 10688 | streaming. This is beneficial for when you want to provide a downloadable |
| 10689 | archive of a large collection of regular files, which would be infeasible |
| 10690 | to generate the archive prior to downloading or of a very large file that |
| 10691 | you do not want to store entirely on disk or on memory.") |
| 10692 | ;; No copyright headers in the source. The LICENSE file indicates GPL3. |
| 10693 | (license license:gpl3))) |
| 10694 | |
| 10695 | (define-public python-sentry-sdk |
| 10696 | (package |
| 10697 | (name "python-sentry-sdk") |
| 10698 | (version "1.5.1") |
| 10699 | (source |
| 10700 | (origin |
| 10701 | (method git-fetch) ; no tests in PyPI release |
| 10702 | (uri (git-reference |
| 10703 | (url "https://github.com/getsentry/sentry-python") |
| 10704 | (commit version))) |
| 10705 | (file-name (git-file-name name version)) |
| 10706 | (sha256 |
| 10707 | (base32 "128bm136l5zprr3sqqb8j3d6k5i1fhz853mzvh3w8g0w1dw763mx")))) |
| 10708 | (build-system python-build-system) |
| 10709 | (arguments |
| 10710 | `(#:phases |
| 10711 | (modify-phases %standard-phases |
| 10712 | (replace 'check |
| 10713 | (lambda* (#:key inputs outputs tests? #:allow-other-keys) |
| 10714 | (when tests? |
| 10715 | (add-installed-pythonpath inputs outputs) |
| 10716 | (invoke "python" "-m" "pytest" "-k" |
| 10717 | (string-append |
| 10718 | ;; This test requires extra dependencies. |
| 10719 | "not test_auto_enabling_integrations" |
| 10720 | "_catches_import_error" |
| 10721 | ;; Tests below run pip command. |
| 10722 | " and not test_unhandled_exception" |
| 10723 | " and not test_timeout_error" |
| 10724 | " and not test_performance_no_error" |
| 10725 | " and not test_performance_error" |
| 10726 | " and not test_traces_sampler_gets_correct" |
| 10727 | "_values_in_sampling_context" |
| 10728 | " and not test_handled_exception" |
| 10729 | ;; Tests below require network. |
| 10730 | " and not test_crumb_capture" |
| 10731 | " and not test_crumb_capture" |
| 10732 | " and not test_crumb_capture_hint" |
| 10733 | " and not test_httplib_misuse" |
| 10734 | ;; Fails with IndexError. |
| 10735 | " and not test_session_mode_defaults_to" |
| 10736 | "_request_mode_in_wsgi_handler")))))))) |
| 10737 | (native-inputs |
| 10738 | (list python-django |
| 10739 | python-executing |
| 10740 | python-gevent |
| 10741 | python-jsonschema |
| 10742 | python-mock |
| 10743 | python-pyrsistent |
| 10744 | python-pytest |
| 10745 | python-pytest-cov |
| 10746 | python-pytest-django |
| 10747 | python-pytest-forked |
| 10748 | python-pytest-localserver |
| 10749 | python-werkzeug)) |
| 10750 | (propagated-inputs |
| 10751 | (list python-certifi python-urllib3)) |
| 10752 | (home-page "https://github.com/getsentry/sentry-python") |
| 10753 | (synopsis "Python SDK for Sentry") |
| 10754 | (description "This package provides a Python SDK for the Sentry |
| 10755 | application monitoring and error tracking software.") |
| 10756 | (license license:bsd-2))) |
| 10757 | |
| 10758 | (define-public python-pep8 |
| 10759 | ;; This package has been renamed to ‘pycodestyle’ and is no longer updated. |
| 10760 | ;; Its last release (1.7.1) adds only a scary warning to this effect, breaking |
| 10761 | ;; some dependents' test suites, and nothing more. |
| 10762 | (package |
| 10763 | (name "python-pep8") |
| 10764 | (version "1.7.0") |
| 10765 | (source |
| 10766 | (origin |
| 10767 | (method url-fetch) |
| 10768 | (uri (pypi-uri "pep8" version)) |
| 10769 | (sha256 |
| 10770 | (base32 |
| 10771 | "002rkl4lsn6x2mxmf8ar00l0m8i3mzrc6pnzz77blyksmpsxa4x1")) |
| 10772 | (patches (search-patches "python-pep8-stdlib-tokenize-compat.patch")))) |
| 10773 | (build-system python-build-system) |
| 10774 | (home-page "https://pep8.readthedocs.org/") |
| 10775 | (synopsis "Python style guide checker") |
| 10776 | (description |
| 10777 | "This tools checks Python code against some of the style conventions in |
| 10778 | PEP 8.") |
| 10779 | (license license:expat))) |
| 10780 | |
| 10781 | (define-public python-pep8-naming |
| 10782 | (package |
| 10783 | (name "python-pep8-naming") |
| 10784 | (version "0.13.0") |
| 10785 | (source |
| 10786 | (origin |
| 10787 | (method url-fetch) |
| 10788 | (uri (pypi-uri "pep8-naming" version)) |
| 10789 | (sha256 |
| 10790 | (base32 |
| 10791 | "1dc0b6xw1cxp01v9zsv4ryk49rfs1lngfpvzsixgp8b7z3ffcf4z")))) |
| 10792 | (build-system python-build-system) |
| 10793 | (propagated-inputs (list python-flake8)) |
| 10794 | (home-page "https://github.com/PyCQA/pep8-naming") |
| 10795 | (synopsis "Check PEP-8 naming conventions") |
| 10796 | (description |
| 10797 | "This package provides the @code{pep8-naming} Python module, a |
| 10798 | plugin for flake8 to check PEP-8 naming conventions.") |
| 10799 | (license license:expat))) |
| 10800 | |
| 10801 | (define-public python-pep517 |
| 10802 | (package |
| 10803 | (inherit python-pep517-bootstrap) |
| 10804 | (name "python-pep517") |
| 10805 | (arguments |
| 10806 | '(#:phases (modify-phases %standard-phases |
| 10807 | (replace 'check |
| 10808 | (lambda* (#:key tests? #:allow-other-keys) |
| 10809 | (delete-file "pytest.ini") |
| 10810 | (delete-file "tests/test_meta.py") |
| 10811 | (if tests? |
| 10812 | (invoke "pytest") #t)))))) |
| 10813 | (native-inputs (list python-mock python-pytest python-testpath)))) |
| 10814 | |
| 10815 | (define-public python-pyproject-metadata |
| 10816 | (package |
| 10817 | (name "python-pyproject-metadata") |
| 10818 | (version "0.6.1") |
| 10819 | (source |
| 10820 | (origin |
| 10821 | (method git-fetch) |
| 10822 | (uri (git-reference |
| 10823 | (url "https://github.com/FFY00/python-pyproject-metadata") |
| 10824 | (commit version))) |
| 10825 | (file-name (git-file-name name version)) |
| 10826 | (sha256 |
| 10827 | (base32 |
| 10828 | "00zahgw9zjfqwf0218bj5k732aibnn68cq1p8f0wmbirb7fy5k31")))) |
| 10829 | (build-system python-build-system) |
| 10830 | (arguments |
| 10831 | (list |
| 10832 | #:phases |
| 10833 | #~(modify-phases %standard-phases |
| 10834 | ;; XXX: PEP 517 manual build/install procedures copied from |
| 10835 | ;; python-isort. |
| 10836 | (replace 'build |
| 10837 | (lambda _ |
| 10838 | ;; ZIP does not support timestamps before 1980. |
| 10839 | (setenv "SOURCE_DATE_EPOCH" "315532800") |
| 10840 | (invoke "python" "-m" "build" "--wheel" "--no-isolation" "."))) |
| 10841 | (replace 'check |
| 10842 | (lambda* (#:key tests? inputs outputs #:allow-other-keys) |
| 10843 | (when tests? |
| 10844 | (invoke "pytest" "-vv" |
| 10845 | ;; Two parameterized test_load tests are currently |
| 10846 | ;; failing (see: |
| 10847 | ;; https://github.com/FFY00/python-pep621/issues/14). |
| 10848 | "-k" "not test_load")))) |
| 10849 | (replace 'install |
| 10850 | (lambda* (#:key outputs #:allow-other-keys) |
| 10851 | (let ((whl (car (find-files "dist" "\\.whl$")))) |
| 10852 | (invoke "pip" "--no-cache-dir" "--no-input" |
| 10853 | "install" "--no-deps" "--prefix" #$output whl))))))) |
| 10854 | (propagated-inputs (list python-packaging)) |
| 10855 | (native-inputs (list python-pypa-build python-pytest python-tomli)) |
| 10856 | (home-page "https://github.com/FFY00/python-pyproject-metadata") |
| 10857 | (synopsis "Dataclass for PEP 621 metadata") |
| 10858 | (description "This project does not implement the parsing of |
| 10859 | @file{pyproject.toml} containing PEP 621 metadata. Instead, given a Python |
| 10860 | data structure representing PEP 621 metadata (already parsed), it will |
| 10861 | validate this input and generate a PEP 643-compliant metadata |
| 10862 | file (e.g. @file{PKG-INFO}).") |
| 10863 | (license license:expat))) |
| 10864 | |
| 10865 | ;; pep621 was renamed to pyproject-metadata. |
| 10866 | (define-public python-pep621 |
| 10867 | (deprecated-package "python-pep621" python-pyproject-metadata)) |
| 10868 | |
| 10869 | (define-public python-pyflakes |
| 10870 | (package |
| 10871 | (name "python-pyflakes") |
| 10872 | (version "2.4.0") |
| 10873 | (source |
| 10874 | (origin |
| 10875 | (method url-fetch) |
| 10876 | (uri (pypi-uri "pyflakes" version)) |
| 10877 | (sha256 |
| 10878 | (base32 |
| 10879 | "0k5jn8jpxni264wxf6cc3xcd1qckc0pww30bsd77mwzdf8l5ra05")))) |
| 10880 | (build-system python-build-system) |
| 10881 | (home-page "https://github.com/PyCQA/pyflakes") |
| 10882 | (synopsis "Passive checker of Python programs") |
| 10883 | (description |
| 10884 | "Pyflakes statically checks Python source code for common errors.") |
| 10885 | (license license:expat))) |
| 10886 | |
| 10887 | (define-public python-pyflakes-2.2 |
| 10888 | (package |
| 10889 | (inherit python-pyflakes) |
| 10890 | (version "2.2.0") |
| 10891 | (source (origin |
| 10892 | (method url-fetch) |
| 10893 | (uri (pypi-uri "pyflakes" version)) |
| 10894 | (sha256 |
| 10895 | (base32 |
| 10896 | "1j3zqbiwkyicvww499bblq33x0bjpzdrxajhaysr7sk7x5gdgcim")) |
| 10897 | (patches |
| 10898 | (search-patches "python-pyflakes-test-location.patch")))))) |
| 10899 | |
| 10900 | (define-public python-mccabe |
| 10901 | (package |
| 10902 | (name "python-mccabe") |
| 10903 | (version "0.6.1") |
| 10904 | (source |
| 10905 | (origin |
| 10906 | (method url-fetch) |
| 10907 | (uri (pypi-uri "mccabe" version)) |
| 10908 | (sha256 |
| 10909 | (base32 |
| 10910 | "07w3p1qm44hgxf3vvwz84kswpsx6s7kvaibzrsx5dzm0hli1i3fx")))) |
| 10911 | (build-system python-build-system) |
| 10912 | (native-inputs |
| 10913 | (list python-toml python-pytest-bootstrap python-pytest-runner)) |
| 10914 | (home-page "https://github.com/PyCQA/mccabe") |
| 10915 | (synopsis "McCabe checker, plugin for flake8") |
| 10916 | (description "This package provides a Flake8 plug-in to compute the McCabe |
| 10917 | cyclomatic complexity of Python source code.") |
| 10918 | (license license:expat))) |
| 10919 | |
| 10920 | (define-public python-autoflake8 |
| 10921 | (package |
| 10922 | (name "python-autoflake8") |
| 10923 | (version "0.4.0") |
| 10924 | (source (origin |
| 10925 | (method git-fetch) ;for tests |
| 10926 | (uri (git-reference |
| 10927 | (url "https://github.com/fsouza/autoflake8") |
| 10928 | (commit (string-append "v" version)))) |
| 10929 | (file-name (git-file-name name version)) |
| 10930 | (sha256 |
| 10931 | (base32 |
| 10932 | "0jx7bkslbhr24yvq60pl39faz2r6g93f1zm1gygswl0rzr5zmgnh")))) |
| 10933 | (build-system pyproject-build-system) |
| 10934 | (native-inputs |
| 10935 | (list python-aiofiles |
| 10936 | python-poetry-core |
| 10937 | python-pytest |
| 10938 | python-pytest-xdist)) |
| 10939 | (propagated-inputs (list python-pyflakes)) |
| 10940 | (home-page "https://github.com/fsouza/autoflake8") |
| 10941 | (synopsis "Automatically fix issues reported by flake8") |
| 10942 | (description "Tool to automatically fix some issues reported by |
| 10943 | @command{flake8}.") |
| 10944 | (license license:expat))) |
| 10945 | |
| 10946 | (define-public python-flake8 |
| 10947 | (package |
| 10948 | (name "python-flake8") |
| 10949 | (version "4.0.1") |
| 10950 | (source (origin |
| 10951 | (method url-fetch) |
| 10952 | (uri (pypi-uri "flake8" version)) |
| 10953 | (sha256 |
| 10954 | (base32 |
| 10955 | "03c7mnk34wfz7a0m5zq0273y94awz69fy5iww8alh4a4v96h6vl0")))) |
| 10956 | (build-system python-build-system) |
| 10957 | (arguments |
| 10958 | `(#:phases (modify-phases %standard-phases |
| 10959 | (replace 'check |
| 10960 | (lambda* (#:key tests? #:allow-other-keys) |
| 10961 | (when tests? |
| 10962 | (invoke "pytest" "-v"))))))) |
| 10963 | (propagated-inputs |
| 10964 | (list python-entrypoints |
| 10965 | python-mccabe |
| 10966 | python-pycodestyle |
| 10967 | python-pyflakes)) |
| 10968 | (native-inputs (list python-pytest)) |
| 10969 | (home-page "https://gitlab.com/pycqa/flake8") |
| 10970 | (synopsis "The modular source code checker: pep8, pyflakes and co") |
| 10971 | (description |
| 10972 | "Flake8 is a wrapper around PyFlakes, pep8 and python-mccabe.") |
| 10973 | (license license:expat))) |
| 10974 | |
| 10975 | (define-public python-flake8-3.8 |
| 10976 | (package |
| 10977 | (inherit python-flake8) |
| 10978 | (version "3.8.4") |
| 10979 | (source (origin |
| 10980 | (method url-fetch) |
| 10981 | (uri (pypi-uri "flake8" version)) |
| 10982 | (sha256 |
| 10983 | (base32 |
| 10984 | "0fvcrsbyzjpcli8ldbpsdbpmf238nkvwc1dy4hy82lf63rvfinma")))) |
| 10985 | (propagated-inputs |
| 10986 | (list python-pycodestyle-2.6 python-entrypoints python-pyflakes-2.2 |
| 10987 | python-mccabe)))) |
| 10988 | |
| 10989 | (define-public python-flake8-blind-except |
| 10990 | (package |
| 10991 | (name "python-flake8-blind-except") |
| 10992 | (version "0.2.1") |
| 10993 | (source |
| 10994 | (origin |
| 10995 | (method url-fetch) |
| 10996 | (uri (pypi-uri "flake8-blind-except" version)) |
| 10997 | (sha256 |
| 10998 | (base32 "05nxsxfzfhwsm8gys90228imm2qbnqnw5y8bfqyfngnbkmd5fnpj")))) |
| 10999 | (build-system python-build-system) |
| 11000 | (arguments |
| 11001 | `(#:tests? #f)) ; no tests |
| 11002 | (native-inputs (list python-pycodestyle)) |
| 11003 | (home-page "https://github.com/elijahandrews/flake8-blind-except") |
| 11004 | (synopsis "Check for blind @code{except:} statements") |
| 11005 | (description "This package provides a flake8 extension that checks for |
| 11006 | blind @code{except:} statements.") |
| 11007 | (license license:expat))) |
| 11008 | |
| 11009 | (define-public python-flake8-bugbear |
| 11010 | (package |
| 11011 | (name "python-flake8-bugbear") |
| 11012 | (version "20.1.4") |
| 11013 | (source |
| 11014 | (origin |
| 11015 | (method url-fetch) |
| 11016 | (uri (pypi-uri "flake8-bugbear" version)) |
| 11017 | (sha256 |
| 11018 | (base32 |
| 11019 | "0qiihb242fygzyrfynq913ak7cdmx8mcac9c0zk3y5gv16qf80mx")))) |
| 11020 | (build-system python-build-system) |
| 11021 | (arguments |
| 11022 | '(#:phases |
| 11023 | (modify-phases %standard-phases |
| 11024 | (add-before 'check 'disable-test |
| 11025 | (lambda _ |
| 11026 | ;; This test fails on slow computers. |
| 11027 | (substitute* "tests/test_bugbear.py" |
| 11028 | (("def test_does_not_crash_on_any_valid_code") |
| 11029 | "def _test_does_not_crash_on_any_valid_code"))))))) |
| 11030 | (native-inputs |
| 11031 | (list python-hypothesis python-hypothesmith)) |
| 11032 | (propagated-inputs |
| 11033 | (list python-attrs python-flake8)) |
| 11034 | (home-page "https://github.com/PyCQA/flake8-bugbear") |
| 11035 | (synopsis |
| 11036 | "Flake8 plugin for finding likely bugs and design problems in your program") |
| 11037 | (description |
| 11038 | "This package contains a plugin for Flake8 finding likely bugs and |
| 11039 | design problems in your program. It contains warnings that don't belong |
| 11040 | in pyflakes and pycodestyle.") |
| 11041 | (license license:expat))) |
| 11042 | |
| 11043 | (define-public python-flake8-continuation |
| 11044 | (package |
| 11045 | (name "python-flake8-continuation") |
| 11046 | (version "1.0.5") |
| 11047 | (source |
| 11048 | (origin |
| 11049 | (method url-fetch) |
| 11050 | (uri (pypi-uri "flake8-continuation" version)) |
| 11051 | (sha256 |
| 11052 | (base32 |
| 11053 | "0dzaw8jr7yhlabxhrblnrizxx17xa9ngjnbr1kidg5lapq6b9q1y")))) |
| 11054 | (build-system python-build-system) |
| 11055 | (propagated-inputs |
| 11056 | (list python-flake8 python-pycodestyle python-six)) |
| 11057 | (home-page "https://github.com/planetlabs/flake8-continuation") |
| 11058 | (synopsis "Flake8 Line Continuation Plugin") |
| 11059 | (description "A Flake8 plugin that checks for the line continuation |
| 11060 | style to be in the preferred method according to PEP-8, specifically: |
| 11061 | @quotation |
| 11062 | The preferred way of wrapping long lines is by using Python's implied |
| 11063 | line continuation inside parentheses, brackets and braces. Long lines |
| 11064 | can be broken over multiple lines by wrapping expressions in parentheses. |
| 11065 | These should be used in preference to using a backslash for line continuation. |
| 11066 | @end quotation") |
| 11067 | (license license:asl2.0))) |
| 11068 | |
| 11069 | (define-public python-flake8-debugger |
| 11070 | (package |
| 11071 | (name "python-flake8-debugger") |
| 11072 | (version "4.1.2") |
| 11073 | (source |
| 11074 | (origin |
| 11075 | (method url-fetch) |
| 11076 | (uri (pypi-uri "flake8-debugger" version)) |
| 11077 | (sha256 |
| 11078 | (base32 "0h1qlzbxxhjsw6kg3mcml9h8byy77m9a5z06z2dnvqs115b05c2j")))) |
| 11079 | (build-system python-build-system) |
| 11080 | (arguments |
| 11081 | `(#:tests? #f)) ; no tests in PyPI and no setup.py in GitHub |
| 11082 | (propagated-inputs |
| 11083 | (list python-flake8 python-pycodestyle)) |
| 11084 | (home-page "https://github.com/jbkahn/flake8-debugger") |
| 11085 | (synopsis "@code{ipdb} and @code{pdb} statement checker plugin for flake8") |
| 11086 | (description "This package provides a Flake8 plugin that checks for |
| 11087 | @code{ipdb} and @code{pdb} imports and set traces, as well as |
| 11088 | @code{from IPython.terminal.embed}, @code{import InteractiveShellEmbed} |
| 11089 | and @code{InteractiveShellEmbed()()}.") |
| 11090 | (license license:expat))) |
| 11091 | |
| 11092 | (define-public python-flake8-implicit-str-concat |
| 11093 | (package |
| 11094 | (name "python-flake8-implicit-str-concat") |
| 11095 | (version "0.2.0") |
| 11096 | (source |
| 11097 | (origin |
| 11098 | (method url-fetch) |
| 11099 | (uri (pypi-uri "flake8_implicit_str_concat" version)) |
| 11100 | (sha256 |
| 11101 | (base32 "1v0y29xlmbr2q12a4nnpm1dm9aw1mjiys1x8jif4z8c90d63cqm6")))) |
| 11102 | (build-system python-build-system) |
| 11103 | (arguments |
| 11104 | '(#:tests? #f ;no tests |
| 11105 | #:phases (modify-phases %standard-phases |
| 11106 | (add-after 'unpack 'loosen-requirements |
| 11107 | (lambda _ |
| 11108 | ;; Permit newer versions of attrs. Remove for >0.2. |
| 11109 | (substitute* "setup.py" |
| 11110 | ((", <21") ""))))))) |
| 11111 | (propagated-inputs |
| 11112 | (list python-attrs python-more-itertools)) |
| 11113 | (home-page "https://github.com/keisheiled/flake8-implicit-str-concat") |
| 11114 | (synopsis "Flake8 plugin to encourage correct string literal concatenation") |
| 11115 | (description |
| 11116 | "This is a plugin for the Python code checking tool Flake8 to encourage |
| 11117 | correct string literal concatenation. |
| 11118 | |
| 11119 | It looks for style problems like implicitly concatenated string literals on |
| 11120 | the same line (which can be introduced by the code formatting tool Black), or |
| 11121 | unnecessary plus operators for explicit string literal concatenation.") |
| 11122 | (license license:expat))) |
| 11123 | |
| 11124 | (define-public python-flake8-print |
| 11125 | (package |
| 11126 | (name "python-flake8-print") |
| 11127 | (version "4.0.0") |
| 11128 | (source |
| 11129 | (origin |
| 11130 | (method url-fetch) |
| 11131 | (uri (pypi-uri "flake8-print" version)) |
| 11132 | (sha256 |
| 11133 | (base32 "05k5kkvyk6fdmvnacxfzypk74vbl3pmva13dqg1aljfwnxsc7yjs")))) |
| 11134 | (build-system python-build-system) |
| 11135 | (propagated-inputs |
| 11136 | (list python-flake8 python-pycodestyle python-six)) |
| 11137 | (home-page "https://github.com/jbkahn/flake8-print") |
| 11138 | (synopsis "Print statement checker plugin for Flake8") |
| 11139 | (description |
| 11140 | "This plugin for Flake8 checks for @code{print} statements in Python |
| 11141 | files.") |
| 11142 | (license license:expat))) |
| 11143 | |
| 11144 | (define-public python-flake8-pyi |
| 11145 | (package |
| 11146 | (name "python-flake8-pyi") |
| 11147 | (version "20.10.0") |
| 11148 | (source |
| 11149 | (origin |
| 11150 | (method url-fetch) |
| 11151 | (uri (pypi-uri "flake8-pyi" version)) |
| 11152 | (sha256 |
| 11153 | (base32 |
| 11154 | "0b27n2pmrxcc7nva4wp2i7mrag0fnq0firvhg1ljq593a45b5qyf")))) |
| 11155 | (build-system python-build-system) |
| 11156 | (propagated-inputs |
| 11157 | (list python-attrs python-flake8 python-pyflakes)) |
| 11158 | (home-page "https://github.com/ambv/flake8-pyi") |
| 11159 | (synopsis |
| 11160 | "Flake8 plugin that provides specializations for type hinting stub files") |
| 11161 | (description |
| 11162 | "This package contains a plugin that provides specializations for |
| 11163 | type hinting stub files, especially interesting for linting typeshed. It |
| 11164 | adds the @file{.pyi} extension to the default value of the @code{--filename} |
| 11165 | command-line argument to Flake8. This means stubs are linted by default with |
| 11166 | this plugin enabled, without needing to explicitly list every file. It |
| 11167 | modifies PyFlakes runs for @file{.pyi} files to defer checking type annotation |
| 11168 | expressions after the entire file has been read. This enables support for |
| 11169 | first-class forward references that stub files use.") |
| 11170 | (license license:expat))) |
| 11171 | |
| 11172 | (define-public python-flake8-pie |
| 11173 | (package |
| 11174 | (name "python-flake8-pie") |
| 11175 | (version "0.5.0") |
| 11176 | (source |
| 11177 | (origin |
| 11178 | (method url-fetch) |
| 11179 | (uri (pypi-uri "flake8-pie" version)) |
| 11180 | (sha256 |
| 11181 | (base32 "0kgipl5gljlp7aa7ykx15pswpzkd0d0qiznihb2z0d9a73181dyd")))) |
| 11182 | (build-system python-build-system) |
| 11183 | (home-page "https://github.com/sbdchd/flake8-pie") |
| 11184 | (synopsis "Flake8 extension that implements lints") |
| 11185 | (description |
| 11186 | "This package provides a flake8 extension that implements miscellaneous |
| 11187 | lints.") |
| 11188 | (license license:bsd-2))) |
| 11189 | |
| 11190 | (define-public python-flake8-quotes |
| 11191 | (package |
| 11192 | (name "python-flake8-quotes") |
| 11193 | (version "3.2.0") |
| 11194 | (source |
| 11195 | (origin |
| 11196 | (method url-fetch) |
| 11197 | (uri (pypi-uri "flake8-quotes" version)) |
| 11198 | (sha256 |
| 11199 | (base32 |
| 11200 | "0ph5s6lxgpzz4an0ax6s5xjqypqmngwr5b1i0h9pqhzghplic49z")))) |
| 11201 | (build-system python-build-system) |
| 11202 | (propagated-inputs |
| 11203 | (list python-flake8)) |
| 11204 | (home-page "https://github.com/zheller/flake8-quotes/") |
| 11205 | (synopsis "Flake8 lint for quotes") |
| 11206 | (description "This package provides a Flake8 lint for quotes.") |
| 11207 | (license license:expat))) |
| 11208 | |
| 11209 | (define-public python-flake8-todo |
| 11210 | (package |
| 11211 | (name "python-flake8-todo") |
| 11212 | (version "0.7") |
| 11213 | (source |
| 11214 | (origin |
| 11215 | (method url-fetch) |
| 11216 | (uri (pypi-uri "flake8-todo" version)) |
| 11217 | (sha256 |
| 11218 | (base32 |
| 11219 | "05arm0sch3r8248035kilmf01z0mxsahw6vpbbz0d343zy8m8k3f")))) |
| 11220 | (build-system python-build-system) |
| 11221 | (propagated-inputs |
| 11222 | (list python-pycodestyle)) |
| 11223 | (home-page "https://github.com/schlamar/flake8-todo") |
| 11224 | (synopsis "TODO notes checker, plugin for flake8") |
| 11225 | (description |
| 11226 | "This package provides the @code{flake8-todo} Python module, a |
| 11227 | TODO notes checker plugin for flake8.") |
| 11228 | (license license:expat))) |
| 11229 | |
| 11230 | (define-public python-flake8-isort |
| 11231 | (package |
| 11232 | (name "python-flake8-isort") |
| 11233 | (version "4.1.1") |
| 11234 | (source |
| 11235 | (origin |
| 11236 | (method url-fetch) |
| 11237 | (uri (pypi-uri "flake8-isort" version)) |
| 11238 | (sha256 |
| 11239 | (base32 "05r7z0j9rqgy0a9261bhisairrz6w8hy5hy5kf2mhvhfnx53056q")))) |
| 11240 | (build-system python-build-system) |
| 11241 | (arguments |
| 11242 | (list |
| 11243 | #:phases |
| 11244 | #~(modify-phases %standard-phases |
| 11245 | (replace 'check |
| 11246 | (lambda* (#:key tests? #:allow-other-keys) |
| 11247 | (when tests? |
| 11248 | (invoke "pytest" "-vv"))))))) |
| 11249 | (propagated-inputs (list python-flake8 python-isort python-testfixtures)) |
| 11250 | (native-inputs (list python-pytest)) |
| 11251 | (home-page "https://github.com/gforcada/flake8-isort") |
| 11252 | (synopsis "Flake8 plugin integrating isort") |
| 11253 | (description "This package provides a flake8 plugin that integrates isort, |
| 11254 | extending flake8 so that it can warn about badly sorted Python import |
| 11255 | directives.") |
| 11256 | (license license:gpl2+))) |
| 11257 | |
| 11258 | (define-public python-autoflake |
| 11259 | (package |
| 11260 | (name "python-autoflake") |
| 11261 | (version "1.3.1") |
| 11262 | (source |
| 11263 | (origin |
| 11264 | (method url-fetch) |
| 11265 | (uri (pypi-uri "autoflake" version)) |
| 11266 | (sha256 |
| 11267 | (base32 "0nzr057dbmgprp4a52ymafdkdd5zp2wcqf42913xc7hhvvdbj338")))) |
| 11268 | (build-system python-build-system) |
| 11269 | (propagated-inputs |
| 11270 | (list python-pyflakes)) |
| 11271 | (home-page "https://github.com/myint/autoflake") |
| 11272 | (synopsis "Removes unused imports and unused variables") |
| 11273 | (description |
| 11274 | "@code{autoflake} removes unused imports and unused variables from Python |
| 11275 | code as reported by @code{pyflakes}. |
| 11276 | |
| 11277 | By default, it only removes unused imports for modules that are part of the |
| 11278 | standard library. Removal of unused variables is also disabled by default. |
| 11279 | It also removes useless @code{pass} statements.") |
| 11280 | (license license:expat))) |
| 11281 | |
| 11282 | (define-public python-mistune |
| 11283 | (package |
| 11284 | (name "python-mistune") |
| 11285 | (version "0.8.4") |
| 11286 | (source |
| 11287 | (origin |
| 11288 | (method url-fetch) |
| 11289 | (uri (pypi-uri "mistune" version)) |
| 11290 | (sha256 |
| 11291 | (base32 |
| 11292 | "0vkmsh0x480rni51lhyvigfdf06b9247z868pk3bal1wnnfl58sr")))) |
| 11293 | (build-system python-build-system) |
| 11294 | (native-inputs |
| 11295 | (list python-nose python-cython)) |
| 11296 | (home-page "https://github.com/lepture/mistune") |
| 11297 | (synopsis "Markdown parser in pure Python") |
| 11298 | (description "This package provides a fast markdown parser in pure |
| 11299 | Python.") |
| 11300 | (license license:bsd-3))) |
| 11301 | |
| 11302 | ;; 2.0 is not released yet, but some packages have started using it. |
| 11303 | (define-public python-mistune-next |
| 11304 | (package |
| 11305 | (inherit python-mistune) |
| 11306 | (name "python-mistune-next") |
| 11307 | (version "2.0.4") |
| 11308 | (source (origin |
| 11309 | (method url-fetch) |
| 11310 | (uri (pypi-uri "mistune" version)) |
| 11311 | (sha256 |
| 11312 | (base32 |
| 11313 | "024q9l6mgd37wa25w7dhskv1m3zsj5lf0w9cfyx7l9p2adhadq4y")))) |
| 11314 | (arguments |
| 11315 | (list |
| 11316 | #:phases |
| 11317 | #~(modify-phases %standard-phases |
| 11318 | (replace 'check |
| 11319 | (lambda* (#:key tests? #:allow-other-keys) |
| 11320 | (when tests? |
| 11321 | (invoke "pytest" "-vv"))))))) |
| 11322 | (native-inputs (list python-pytest)))) |
| 11323 | |
| 11324 | (define-public python-markdown |
| 11325 | (package |
| 11326 | (name "python-markdown") |
| 11327 | (version "3.3.4") |
| 11328 | (source |
| 11329 | (origin |
| 11330 | (method url-fetch) |
| 11331 | (uri (pypi-uri "Markdown" version)) |
| 11332 | (sha256 |
| 11333 | (base32 |
| 11334 | "0jbs73nincha8fkfxx267sfxac6pl0ckszjbqbb8gk4dhs8v9d9i")))) |
| 11335 | (build-system python-build-system) |
| 11336 | (native-inputs |
| 11337 | (list python-nose python-pyyaml)) |
| 11338 | (home-page "https://python-markdown.github.io/") |
| 11339 | (synopsis "Python implementation of Markdown") |
| 11340 | (description |
| 11341 | "This package provides a Python implementation of John Gruber's |
| 11342 | Markdown. The library features international input, various Markdown |
| 11343 | extensions, and several HTML output formats. A command line wrapper |
| 11344 | markdown_py is also provided to convert Markdown files to HTML.") |
| 11345 | (license license:bsd-3))) |
| 11346 | |
| 11347 | (define-public python-mdx-include |
| 11348 | (package |
| 11349 | (name "python-mdx-include") |
| 11350 | (version "1.4.1") |
| 11351 | (source (origin |
| 11352 | ;; Use git, as there are some test files missing from the PyPI |
| 11353 | ;; release, see https://github.com/neurobin/mdx_include/issues/9 |
| 11354 | (method git-fetch) |
| 11355 | (uri (git-reference |
| 11356 | (url "https://github.com/neurobin/mdx_include") |
| 11357 | ;; Releases are not tagged on github, see |
| 11358 | ;; https://github.com/neurobin/mdx_include/issues/10 |
| 11359 | (commit "683e6be7a00a1ef4d673ad0294458fa61bc97286"))) |
| 11360 | (file-name (git-file-name name version)) |
| 11361 | (sha256 |
| 11362 | (base32 |
| 11363 | "0qpzgln4ybd7pl0m9s19dv60aq9cvwrk7x3yz96kjhcywaa5w386")))) |
| 11364 | (build-system python-build-system) |
| 11365 | (arguments |
| 11366 | '(#:phases |
| 11367 | (modify-phases %standard-phases |
| 11368 | (add-before 'check 'disable-test-requiring-network |
| 11369 | (lambda _ |
| 11370 | (substitute* "mdx_include/test/test.py" |
| 11371 | (("(\\s+def )test_(cache|config|default)\\(" _ pre post) |
| 11372 | (string-append pre "__off__test_" post "(")))))))) |
| 11373 | (propagated-inputs (list python-cyclic python-markdown python-rcslice)) |
| 11374 | (home-page "https://github.com/neurobin/mdx_include") |
| 11375 | (synopsis "Python Markdown extension to include local or remote files") |
| 11376 | (description "Include extension for Python Markdown. It lets you include |
| 11377 | local or remote (downloadable) files into your markdown at arbitrary |
| 11378 | positions. |
| 11379 | |
| 11380 | This project is motivated by markdown-include and provides the same |
| 11381 | functionalities with some extras.") |
| 11382 | (license license:bsd-3))) |
| 11383 | |
| 11384 | (define-public python-ptyprocess |
| 11385 | (package |
| 11386 | (name "python-ptyprocess") |
| 11387 | (version "0.5.2") |
| 11388 | (source |
| 11389 | (origin |
| 11390 | (method url-fetch) |
| 11391 | (uri (pypi-uri "ptyprocess" version)) |
| 11392 | (sha256 |
| 11393 | (base32 |
| 11394 | "0ra31k10v3629xq0kdn8lwmfbi97anmk48r03yvh7mks0kq96hg6")))) |
| 11395 | (build-system python-build-system) |
| 11396 | (native-inputs |
| 11397 | (list python-nose)) |
| 11398 | (arguments |
| 11399 | `(#:phases |
| 11400 | (modify-phases %standard-phases |
| 11401 | (replace 'check |
| 11402 | (lambda _ (invoke "nosetests")))))) |
| 11403 | (home-page "https://github.com/pexpect/ptyprocess") |
| 11404 | (synopsis "Run a subprocess in a pseudo terminal") |
| 11405 | (description |
| 11406 | "This package provides a Python library used to launch a subprocess in a |
| 11407 | pseudo terminal (pty), and interact with both the process and its pty.") |
| 11408 | (license license:isc))) |
| 11409 | |
| 11410 | (define-public python-cram |
| 11411 | (package |
| 11412 | (name "python-cram") |
| 11413 | (version "0.7") |
| 11414 | (home-page "https://bitheap.org/cram/") |
| 11415 | (source (origin |
| 11416 | (method url-fetch) |
| 11417 | (uri (list (string-append home-page "cram-" |
| 11418 | version ".tar.gz") |
| 11419 | (pypi-uri "cram" version))) |
| 11420 | (sha256 |
| 11421 | (base32 |
| 11422 | "0bvz6fwdi55rkrz3f50zsy35gvvwhlppki2yml5bj5ffy9d499vx")))) |
| 11423 | (arguments |
| 11424 | '(#:phases |
| 11425 | (modify-phases %standard-phases |
| 11426 | (add-after 'unpack 'patch-source |
| 11427 | (lambda _ |
| 11428 | (substitute* (find-files "cram" ".*\\.py$") |
| 11429 | ;; Replace default shell path. |
| 11430 | (("/bin/sh") (which "sh"))) |
| 11431 | (substitute* (find-files "tests" ".*\\.t$") |
| 11432 | (("md5") "md5sum") |
| 11433 | (("/bin/bash") (which "bash")) |
| 11434 | (("/bin/sh") (which "sh"))) |
| 11435 | (substitute* "cram/_test.py" |
| 11436 | ;; This hack works around a bug triggered by substituting |
| 11437 | ;; the /bin/sh paths. "tests/usage.t" compares the output of |
| 11438 | ;; "cram -h", which breaks the output at 80 characters. This |
| 11439 | ;; causes the line showing the default shell to break into two |
| 11440 | ;; lines, but the test expects a single line... |
| 11441 | (("env\\['COLUMNS'\\] = '80'") |
| 11442 | "env['COLUMNS'] = '160'")) |
| 11443 | |
| 11444 | (substitute* "Makefile" |
| 11445 | ;; Recent versions of python-coverage have caused the test |
| 11446 | ;; coverage to decrease (as of version 0.7). Allow that. |
| 11447 | (("--fail-under=100") |
| 11448 | "--fail-under=90")) |
| 11449 | |
| 11450 | #t)) |
| 11451 | (replace 'check |
| 11452 | ;; The test phase uses the built library and executable. |
| 11453 | (lambda* (#:key inputs outputs #:allow-other-keys) |
| 11454 | (add-installed-pythonpath inputs outputs) |
| 11455 | (setenv "PATH" (string-append (getenv "PATH") ":" |
| 11456 | (assoc-ref outputs "out") "/bin")) |
| 11457 | (invoke "make" "test")))))) |
| 11458 | (build-system python-build-system) |
| 11459 | (native-inputs |
| 11460 | (list python-coverage which)) |
| 11461 | (synopsis "Simple testing framework for command line applications") |
| 11462 | (description |
| 11463 | "Cram is a functional testing framework for command line applications. |
| 11464 | Cram tests look like snippets of interactive shell sessions. Cram runs each |
| 11465 | command and compares the command output in the test with the command’s actual |
| 11466 | output.") |
| 11467 | (license license:gpl2+))) |
| 11468 | |
| 11469 | (define-public python-crccheck |
| 11470 | (package |
| 11471 | (name "python-crccheck") |
| 11472 | (version "1.1") |
| 11473 | (source |
| 11474 | (origin |
| 11475 | (method url-fetch) |
| 11476 | (uri (pypi-uri "crccheck" version)) |
| 11477 | (sha256 |
| 11478 | (base32 "15psg7wjfbpmmry54ffwg6pg63mnv7mkwmb0a7884axnr8qj55j5")))) |
| 11479 | (build-system python-build-system) |
| 11480 | (arguments |
| 11481 | (list |
| 11482 | #:phases |
| 11483 | #~(modify-phases %standard-phases |
| 11484 | (replace 'check |
| 11485 | (lambda* (#:key tests? #:allow-other-keys) |
| 11486 | (when tests? |
| 11487 | (invoke "pytest" "-vv"))))))) |
| 11488 | (native-inputs (list python-pytest)) |
| 11489 | (home-page "https://sourceforge.net/projects/crccheck/") |
| 11490 | (synopsis "Calculation library for CRCs and checksums") |
| 11491 | (description "@code{crccheck} is a calculation library for CRCs and |
| 11492 | checksums. It implement more than a hundred checksum routines.") |
| 11493 | (license license:gpl3+))) |
| 11494 | |
| 11495 | (define-public python-crashtest |
| 11496 | (package |
| 11497 | (name "python-crashtest") |
| 11498 | (version "0.3.1") |
| 11499 | (source |
| 11500 | (origin |
| 11501 | (method url-fetch) |
| 11502 | (uri (pypi-uri "crashtest" version)) |
| 11503 | (sha256 |
| 11504 | (base32 "1p9p7mn8x2j9psc4jxab98897v4i9s4fliyfw8rp8v4bx1n7pjj2")))) |
| 11505 | (build-system python-build-system) |
| 11506 | (home-page "https://github.com/sdispater/crashtest") |
| 11507 | (synopsis "Manage Python errors with ease") |
| 11508 | (description |
| 11509 | "Python library that makes exceptions handling and inspection easier.") |
| 11510 | (license license:expat))) |
| 11511 | |
| 11512 | (define-public python-stdlib-list |
| 11513 | (package |
| 11514 | (name "python-stdlib-list") |
| 11515 | (version "0.8.0") |
| 11516 | (source (origin |
| 11517 | (method url-fetch) |
| 11518 | (uri (pypi-uri "stdlib-list" version)) |
| 11519 | (sha256 |
| 11520 | (base32 |
| 11521 | "17vdn4q0sdlndc2fr9svapxx6366hnrhkn0fswp1xmr0jxqh7rd1")))) |
| 11522 | (build-system python-build-system) |
| 11523 | (arguments |
| 11524 | `(#:tests? #f)) ; Tests require more dependencies. |
| 11525 | (native-inputs |
| 11526 | (list python-sphinx)) |
| 11527 | (home-page "https://github.com/jackmaney/python-stdlib-list") |
| 11528 | (synopsis "Python Standard Libraries") |
| 11529 | (description "This package contains a list of Python Standard Libraries.") |
| 11530 | (license license:expat))) |
| 11531 | |
| 11532 | (define-public python-stopit |
| 11533 | (package |
| 11534 | (name "python-stopit") |
| 11535 | (version "1.1.2") |
| 11536 | (source |
| 11537 | (origin |
| 11538 | (method url-fetch) |
| 11539 | (uri (pypi-uri "stopit" version)) |
| 11540 | (sha256 |
| 11541 | (base32 "0vcrcvky249q4rbgmwf18mwmnypfk8jpn4h6knyjf86r7xc9rwzp")))) |
| 11542 | (build-system python-build-system) |
| 11543 | (arguments '(#:tests? #f)) ;there are none |
| 11544 | (home-page "https://pypi.python.org/pypi/stopit") |
| 11545 | (synopsis "Timeout control decorator and context managers") |
| 11546 | (description |
| 11547 | "Raise asynchronous exceptions in other threads, control the timeout of |
| 11548 | blocks or callables with two context managers and two decorators.") |
| 11549 | (license license:expat))) |
| 11550 | |
| 11551 | (define-public python-timeout-decorator |
| 11552 | (package |
| 11553 | (name "python-timeout-decorator") |
| 11554 | (version "0.5.0") |
| 11555 | (source (origin |
| 11556 | (method url-fetch) |
| 11557 | (uri (pypi-uri "timeout-decorator" version)) |
| 11558 | (sha256 |
| 11559 | (base32 |
| 11560 | "1mxk2qyydhzncm93z08kvj5ssxq3fr2n7pkrrji28nqwvdc2ybva")))) |
| 11561 | (build-system python-build-system) |
| 11562 | (home-page "https://github.com/pnpnpn/timeout-decorator") |
| 11563 | (synopsis "Timeout decorator") |
| 11564 | (description "This package provides a decorator that raises an error |
| 11565 | when an operation takes longer than expected.") |
| 11566 | (license license:expat))) |
| 11567 | |
| 11568 | (define-public python-straight-plugin |
| 11569 | (package |
| 11570 | (name "python-straight-plugin") |
| 11571 | (version "1.4.1") |
| 11572 | (source |
| 11573 | (origin |
| 11574 | (method url-fetch) |
| 11575 | (uri (pypi-uri "straight.plugin" version)) |
| 11576 | (sha256 |
| 11577 | (base32 |
| 11578 | "069pjll4383p4kkgvcc40hgyvf79j2wdbpgwz77yigzxksh1gj62")))) |
| 11579 | (build-system python-build-system) |
| 11580 | (home-page "https://github.com/ironfroggy/straight.plugin") |
| 11581 | (synopsis "Simple namespaced plugin facility") |
| 11582 | (description "Straight Plugin provides a type of plugin you can create from |
| 11583 | almost any existing Python modules, and an easy way for outside developers to |
| 11584 | add functionality and customization to your projects with their own plugins.") |
| 11585 | (license license:expat))) |
| 11586 | |
| 11587 | (define-public python-pysendfile |
| 11588 | (package |
| 11589 | (name "python-pysendfile") |
| 11590 | (version "2.0.1") |
| 11591 | (source |
| 11592 | (origin |
| 11593 | (method url-fetch) |
| 11594 | (uri (pypi-uri "pysendfile" version)) |
| 11595 | (sha256 |
| 11596 | (base32 "05qf0m32isflln1zjgxlpw0wf469lj86vdwwqyizp1h94x5l22ji")))) |
| 11597 | (build-system python-build-system) |
| 11598 | (arguments |
| 11599 | (list |
| 11600 | #:phases #~(modify-phases %standard-phases |
| 11601 | (replace 'check |
| 11602 | (lambda* (#:key tests? #:allow-other-keys) |
| 11603 | (when tests? |
| 11604 | (setenv "HOME" "/tmp") |
| 11605 | (invoke "make" "test"))))))) |
| 11606 | (home-page "https://github.com/giampaolo/pysendfile") |
| 11607 | (synopsis "Python interface to sendfile(2)") |
| 11608 | (description "The @{pysendfile} Python library provides an interface to |
| 11609 | the @code{sendfile(2)} system call.") |
| 11610 | (license license:expat))) |
| 11611 | |
| 11612 | (define-public python-pyftpdlib |
| 11613 | (package |
| 11614 | (name "python-pyftpdlib") |
| 11615 | (version "1.5.6") |
| 11616 | (source |
| 11617 | (origin |
| 11618 | (method url-fetch) |
| 11619 | (uri (pypi-uri "pyftpdlib" version)) |
| 11620 | (sha256 |
| 11621 | (base32 "0pnv2byzmzg84q5nmmhn1xafvfil85qa5y52bj455br93zc5b9px")))) |
| 11622 | (build-system python-build-system) |
| 11623 | (arguments |
| 11624 | (list |
| 11625 | #:phases |
| 11626 | #~(modify-phases %standard-phases |
| 11627 | (replace 'check |
| 11628 | (lambda* (#:key tests? #:allow-other-keys) |
| 11629 | (when tests? |
| 11630 | (invoke |
| 11631 | "pytest" |
| 11632 | ;; Deselect failing tests. |
| 11633 | "-k" (string-append |
| 11634 | ;; Using Pytest instead of the Makefile causes the |
| 11635 | ;; command line tests to fail on unknown Pytest |
| 11636 | ;; arguments. |
| 11637 | "not TestCommandLineParser " |
| 11638 | ;; https://github.com/giampaolo/pyftpdlib/issues/478 |
| 11639 | "and not test_use_gmt_times " |
| 11640 | ;; https://github.com/giampaolo/pyftpdlib/issues/550 |
| 11641 | "and not test_masquerade_address " |
| 11642 | ;; https://github.com/giampaolo/pyftpdlib/issues/500 |
| 11643 | "and not test_rest_on_stor " |
| 11644 | "and not test_stor_ascii")))))))) |
| 11645 | (native-inputs (list python-psutil python-pytest)) |
| 11646 | (propagated-inputs (list python-pyopenssl python-pysendfile)) |
| 11647 | (home-page "https://github.com/giampaolo/pyftpdlib/") |
| 11648 | (synopsis "Asynchronous and scalable Python FTP server library") |
| 11649 | (description "The Python FTP server library provides a high-level |
| 11650 | interface to write efficient, scalable and asynchronous FTP servers with |
| 11651 | Python. It is the most complete @url{http://www.faqs.org/rfcs/rfc959.html, |
| 11652 | RFC-959} FTP server implementation available for Python, and has the following |
| 11653 | traits: |
| 11654 | @itemize |
| 11655 | @item |
| 11656 | It is lightweight, fast and scalable. |
| 11657 | @item |
| 11658 | It uses the @code{sendfile(2)} system call for uploads. |
| 11659 | @item |
| 11660 | It uses @code{epoll}, @code{kqueue} and @code{select} to handle concurrency |
| 11661 | asynchronously. |
| 11662 | @item |
| 11663 | It supports FTPS (@url{http://tools.ietf.org/html/rfc4217, RFC-4217}), |
| 11664 | IPv6 (RFC-2428), Unicode file names (@url{http://tools.ietf.org/html/rfc2640, |
| 11665 | RFC-2640}) and MLSD/MLST commands (RFC-3659). |
| 11666 | @item |
| 11667 | It has a flexible system of @samp{authorizers} able to manage both |
| 11668 | @samp{virtual} and @samp{real} users. |
| 11669 | @end itemize") |
| 11670 | (license license:expat))) |
| 11671 | |
| 11672 | (define-public python-fs |
| 11673 | (package |
| 11674 | (name "python-fs") |
| 11675 | (version "2.4.16") |
| 11676 | (source |
| 11677 | (origin |
| 11678 | (method url-fetch) |
| 11679 | (uri (pypi-uri "fs" version)) |
| 11680 | (sha256 |
| 11681 | (base32 "04ykd7q49qgv13hl2n71lzihs2c9099r50lmd85vgx0k2bawg5xf")))) |
| 11682 | (build-system python-build-system) |
| 11683 | (arguments |
| 11684 | (list |
| 11685 | #:phases #~(modify-phases %standard-phases |
| 11686 | (replace 'check |
| 11687 | (lambda* (#:key tests? #:allow-other-keys) |
| 11688 | (when tests? |
| 11689 | (setenv "HOME" "/tmp") |
| 11690 | (invoke "pytest" "-m" "not slow"))))))) |
| 11691 | (propagated-inputs |
| 11692 | (list python-appdirs python-pytz python-six)) |
| 11693 | (native-inputs |
| 11694 | (list python-mock python-parameterized python-pyftpdlib python-pytest)) |
| 11695 | (home-page "https://github.com/PyFilesystem/pyfilesystem2/") |
| 11696 | (synopsis "File system abstraction layer for Python") |
| 11697 | (description "PyFilesystem's @code{FS} object is a file system abstraction |
| 11698 | sharing similarities with Python's own @code{file} object for single files. |
| 11699 | It allows opening all the files under a given directory recursively, as a |
| 11700 | single @code{FS} object. This enables, for example, counting the combined |
| 11701 | number of lines in the contained files easily.") |
| 11702 | (license license:expat))) |
| 11703 | |
| 11704 | ;;; Tests are left out in the main package to avoid cycles. |
| 11705 | (define-public python-fonttools |
| 11706 | (hidden-package |
| 11707 | (package |
| 11708 | (name "python-fonttools") |
| 11709 | (version "4.28.5") |
| 11710 | (source (origin |
| 11711 | (method url-fetch) |
| 11712 | (uri (pypi-uri "fonttools" version ".zip")) |
| 11713 | (sha256 |
| 11714 | (base32 |
| 11715 | "1jhl5n3rfqq7fznvsh6r80n7ylap1a7ppq1040y8cflhyz80ap2l")))) |
| 11716 | (build-system python-build-system) |
| 11717 | (native-inputs |
| 11718 | (list unzip)) |
| 11719 | (arguments '(#:tests? #f)) |
| 11720 | (home-page "https://github.com/fonttools/fonttools") |
| 11721 | (synopsis "Tools to manipulate font files") |
| 11722 | (description |
| 11723 | "FontTools/TTX is a library to manipulate font files from Python. It |
| 11724 | supports reading and writing of TrueType/OpenType fonts, reading and writing |
| 11725 | of AFM files, reading (and partially writing) of PS Type 1 fonts. The package |
| 11726 | also contains a tool called “TTX” which converts TrueType/OpenType fonts to and |
| 11727 | from an XML-based format.") |
| 11728 | (license license:expat)))) |
| 11729 | |
| 11730 | ;;; Rename 'python-fonttools' in next cycle, renaming the current |
| 11731 | ;;; 'python-fonttools' to 'python-fonttools-minimal'. |
| 11732 | (define-public python-fonttools-full |
| 11733 | (package/inherit python-fonttools |
| 11734 | (arguments |
| 11735 | (substitute-keyword-arguments (package-arguments python-fonttools) |
| 11736 | ((#:tests? _ #f) |
| 11737 | (not (%current-target-system))) |
| 11738 | ((#:phases phases '%standard-phases) |
| 11739 | `(modify-phases ,phases |
| 11740 | (replace 'check |
| 11741 | (lambda* (#:key tests? #:allow-other-keys) |
| 11742 | (when tests? |
| 11743 | (invoke "pytest" "-vv" |
| 11744 | "-k" |
| 11745 | ;; XXX: These tests need .trm files that are |
| 11746 | ;; not shipped with the PyPI release. |
| 11747 | (format #f "not ~a" |
| 11748 | (string-join |
| 11749 | '("test_read_fontdimens_mathsy" |
| 11750 | "test_read_fontdimens_mathex" |
| 11751 | "test_read_fontdimens_vanilla" |
| 11752 | "test_read_boundary_char" |
| 11753 | "fontTools.tfmLib") |
| 11754 | " and not ")))))))))) |
| 11755 | (native-inputs |
| 11756 | (modify-inputs (package-native-inputs python-fonttools) |
| 11757 | (append python-pytest))) |
| 11758 | (propagated-inputs |
| 11759 | (list python-brotli |
| 11760 | python-fs |
| 11761 | python-lxml |
| 11762 | python-lz4 |
| 11763 | python-scipy |
| 11764 | python-unicodedata2 |
| 11765 | python-zopfli)) |
| 11766 | (properties (alist-delete 'hidden? (package-properties python-fonttools))))) |
| 11767 | |
| 11768 | (define-public python-fonttools-next |
| 11769 | (package |
| 11770 | (inherit python-fonttools-full) |
| 11771 | (version "4.37.1") |
| 11772 | (source (origin |
| 11773 | (inherit (package-source python-fonttools-full)) |
| 11774 | (method url-fetch) |
| 11775 | (uri (pypi-uri "fonttools" version ".zip")) |
| 11776 | (sha256 |
| 11777 | (base32 |
| 11778 | "1ryc1wca2v92wn24baryj5fr32lspl8rbsig32fnkxp1islf21j6")))))) |
| 11779 | |
| 11780 | (define-public python-ly |
| 11781 | (package |
| 11782 | (name "python-ly") |
| 11783 | (version "0.9.5") |
| 11784 | (source |
| 11785 | (origin |
| 11786 | (method url-fetch) |
| 11787 | (uri (pypi-uri name version)) |
| 11788 | (sha256 |
| 11789 | (base32 |
| 11790 | "0x98dv7p8mg26p4816yy8hz4f34zf6hpnnfmr56msgh9jnsm2qfl")))) |
| 11791 | (build-system python-build-system) |
| 11792 | (arguments |
| 11793 | ;; FIXME: Some tests need network access. |
| 11794 | '(#:tests? #f)) |
| 11795 | (synopsis "Tool and library for manipulating LilyPond files") |
| 11796 | (description "This package provides a Python library to parse, manipulate |
| 11797 | or create documents in LilyPond format. A command line program ly is also |
| 11798 | provided that can be used to do various manipulations with LilyPond files.") |
| 11799 | (home-page "https://pypi.org/project/python-ly/") |
| 11800 | (license license:gpl2+))) |
| 11801 | |
| 11802 | (define-public python-appdirs |
| 11803 | (package |
| 11804 | (name "python-appdirs") |
| 11805 | (version "1.4.3") |
| 11806 | (source |
| 11807 | (origin |
| 11808 | (method url-fetch) |
| 11809 | (uri (pypi-uri "appdirs" version)) |
| 11810 | (sha256 |
| 11811 | (base32 |
| 11812 | "14id6wxi12lgyw0mg3bcfnf888ad07jz9yj46gfzhn186z8rcn4y")))) |
| 11813 | (build-system python-build-system) |
| 11814 | (home-page "https://github.com/ActiveState/appdirs") |
| 11815 | (synopsis |
| 11816 | "Determine platform-specific dirs, e.g. a \"user data dir\"") |
| 11817 | (description |
| 11818 | "This module provides a portable way of finding out where user data |
| 11819 | should be stored on various operating systems.") |
| 11820 | (license license:expat))) |
| 11821 | |
| 11822 | (define-public python-gorilla |
| 11823 | (package |
| 11824 | (name "python-gorilla") |
| 11825 | (version "0.3.0") |
| 11826 | (source (origin |
| 11827 | (method url-fetch) |
| 11828 | (uri (pypi-uri "gorilla" version)) |
| 11829 | (sha256 |
| 11830 | (base32 |
| 11831 | "0b40blcp6fih4nvqbilra4qw1dfccv1ahjmr41ac4d9rjadqkcpy")))) |
| 11832 | (build-system python-build-system) |
| 11833 | (home-page "https://github.com/christophercrouzet/gorilla") |
| 11834 | (synopsis "Convenient monkey patching with Python") |
| 11835 | (description |
| 11836 | "Gorilla is a Python library that provides a convenient approach to |
| 11837 | monkey patching. Monkey patching is the process of modifying module and |
| 11838 | class attributes at runtime with the purpose of replacing or extending |
| 11839 | third-party code.") |
| 11840 | (license license:expat))) |
| 11841 | |
| 11842 | (define-public python-llfuse |
| 11843 | (package |
| 11844 | (name "python-llfuse") |
| 11845 | (version "1.4.1") |
| 11846 | (source (origin |
| 11847 | (method url-fetch) |
| 11848 | (uri (pypi-uri "llfuse" version)) |
| 11849 | (sha256 |
| 11850 | (base32 |
| 11851 | "1jaf790rsxvz3hs9fbr3hrnmg0xzl6a2bqfa10bbbsjsdbcpk762")))) |
| 11852 | (build-system python-build-system) |
| 11853 | (inputs |
| 11854 | (list fuse attr)) |
| 11855 | (native-inputs |
| 11856 | (list pkg-config python-pytest)) |
| 11857 | (synopsis "Python bindings for FUSE") |
| 11858 | (description |
| 11859 | "Python-LLFUSE is a set of Python bindings for the low level FUSE API.") |
| 11860 | (home-page "https://bitbucket.org/nikratio/python-llfuse/") |
| 11861 | (license license:lgpl2.0+))) |
| 11862 | |
| 11863 | (define-public python-msgpack |
| 11864 | (package |
| 11865 | (name "python-msgpack") |
| 11866 | (version "1.0.4") |
| 11867 | (source (origin |
| 11868 | (method url-fetch) |
| 11869 | (uri (pypi-uri "msgpack" version)) |
| 11870 | (sha256 |
| 11871 | (base32 |
| 11872 | "0pqzy1zclyhd42gfibhkcqymbspy5a6v421g87mh40h3iz0nkn7m")))) |
| 11873 | (build-system python-build-system) |
| 11874 | (arguments |
| 11875 | `(#:modules ((guix build utils) |
| 11876 | (guix build python-build-system) |
| 11877 | (ice-9 ftw) |
| 11878 | (srfi srfi-1) |
| 11879 | (srfi srfi-26)) |
| 11880 | #:phases |
| 11881 | (modify-phases %standard-phases |
| 11882 | (replace 'check |
| 11883 | (lambda _ |
| 11884 | (invoke "pytest" "-v" "test")))))) |
| 11885 | (native-inputs |
| 11886 | (list python-pytest)) |
| 11887 | (synopsis "MessagePack (de)serializer") |
| 11888 | (description "MessagePack is a fast, compact binary serialization format, |
| 11889 | suitable for similar data to JSON. This package provides CPython bindings for |
| 11890 | reading and writing MessagePack data.") |
| 11891 | (home-page "https://pypi.org/project/msgpack/") |
| 11892 | (license license:asl2.0))) |
| 11893 | |
| 11894 | (define-public python-msgpack-1.0.2 |
| 11895 | (package |
| 11896 | (inherit python-msgpack) |
| 11897 | (version "1.0.2") |
| 11898 | (source (origin |
| 11899 | (method url-fetch) |
| 11900 | (uri (pypi-uri "msgpack" version)) |
| 11901 | (sha256 |
| 11902 | (base32 |
| 11903 | "1109s2yynrahwi64ikax68hx0mbclz8p35afmpphw5dwynb49q7s")))))) |
| 11904 | |
| 11905 | ;; This msgpack library's name changed from "python-msgpack" to "msgpack" with |
| 11906 | ;; release 0.5. Some packages like borg still call it by the old name for now. |
| 11907 | ;; <https://bugs.gnu.org/30662> |
| 11908 | (define-public python-msgpack-transitional |
| 11909 | (package |
| 11910 | (inherit python-msgpack) |
| 11911 | (name "python-msgpack-transitional") |
| 11912 | (version "0.5.6") |
| 11913 | (source (origin |
| 11914 | (method url-fetch) |
| 11915 | (uri (pypi-uri "msgpack" version)) |
| 11916 | (sha256 |
| 11917 | (base32 |
| 11918 | "1hz2dba1nvvn52afg34liijsm7kn65cmn06dl0xbwld6bb4cis0f")))) |
| 11919 | (arguments |
| 11920 | (substitute-keyword-arguments (package-arguments python-msgpack) |
| 11921 | ((#:phases phases) |
| 11922 | `(modify-phases ,phases |
| 11923 | (add-after 'unpack 'configure-transitional |
| 11924 | (lambda _ |
| 11925 | ;; Keep using the old name. |
| 11926 | (substitute* "setup.py" |
| 11927 | (("TRANSITIONAL = False") |
| 11928 | "TRANSITIONAL = 1")) |
| 11929 | ;; This old version is not compatible with Python 3.9 |
| 11930 | (substitute* '("test/test_buffer.py" "test/test_extension.py") |
| 11931 | ((".tostring\\(") ".tobytes(")) |
| 11932 | (substitute* '("test/test_buffer.py" "test/test_extension.py") |
| 11933 | ((".fromstring\\(") ".frombytes(")) |
| 11934 | #t)))))))) |
| 11935 | |
| 11936 | (define-public python-netaddr |
| 11937 | (package |
| 11938 | (name "python-netaddr") |
| 11939 | (version "0.8.0") |
| 11940 | (source |
| 11941 | (origin |
| 11942 | (method url-fetch) |
| 11943 | (uri (pypi-uri "netaddr" version)) |
| 11944 | (sha256 |
| 11945 | (base32 |
| 11946 | "0hx2npi0wnhwlcybilgwlddw6qffx1mb7a3sj4p9s7bvl33mgk6n")))) |
| 11947 | (build-system python-build-system) |
| 11948 | (arguments `(#:tests? #f)) ;; No tests. |
| 11949 | (home-page "https://github.com/drkjam/netaddr/") |
| 11950 | (synopsis "Pythonic manipulation of network addresses") |
| 11951 | (description |
| 11952 | "A Python library for representing and manipulating IPv4, IPv6, CIDR, EUI |
| 11953 | and MAC network addresses.") |
| 11954 | (license license:bsd-3))) |
| 11955 | |
| 11956 | (define-public python-openstep-plist |
| 11957 | (package |
| 11958 | (name "python-openstep-plist") |
| 11959 | (version "0.3.0") |
| 11960 | (home-page "https://github.com/fonttools/openstep-plist") |
| 11961 | (source (origin |
| 11962 | (method git-fetch) |
| 11963 | (uri (git-reference |
| 11964 | (url home-page) |
| 11965 | (commit (string-append "v" version)))) |
| 11966 | (file-name (git-file-name name version)) |
| 11967 | (sha256 |
| 11968 | (base32 |
| 11969 | "1rxjgzh0p069ncsr2986rn32vhdqyq35irbqg2559jh18456mkca")))) |
| 11970 | (build-system python-build-system) |
| 11971 | (arguments |
| 11972 | (list #:phases |
| 11973 | #~(modify-phases %standard-phases |
| 11974 | (add-after 'unpack 'pretend-version |
| 11975 | (lambda _ |
| 11976 | (setenv "SETUPTOOLS_SCM_PRETEND_VERSION" |
| 11977 | #$(package-version this-package)))) |
| 11978 | (replace 'check |
| 11979 | (lambda* (#:key tests? #:allow-other-keys) |
| 11980 | (when tests? |
| 11981 | (invoke "pytest" "-vv"))))))) |
| 11982 | (native-inputs |
| 11983 | (list python-cython python-pytest python-setuptools-scm)) |
| 11984 | (synopsis "OpenStep plist parser and writer") |
| 11985 | (description |
| 11986 | "This package provides a parser for the \"old style\" OpenStep property |
| 11987 | list format (also known as ASCII plist), written in Cython.") |
| 11988 | (license license:expat))) |
| 11989 | |
| 11990 | (define-public python-wrapt |
| 11991 | (package |
| 11992 | (name "python-wrapt") |
| 11993 | (version "1.11.2") |
| 11994 | (source |
| 11995 | (origin |
| 11996 | (method url-fetch) |
| 11997 | (uri (pypi-uri "wrapt" version)) |
| 11998 | (sha256 |
| 11999 | (base32 |
| 12000 | "1q81762dgsgrd12f8qc39zk8s5wll3m5xc32jdmlf6cls4gh4njn")))) |
| 12001 | (build-system python-build-system) |
| 12002 | (arguments |
| 12003 | ;; Tests are not included in the tarball, they are only available in the |
| 12004 | ;; git repository. |
| 12005 | `(#:tests? #f)) |
| 12006 | (home-page "https://github.com/GrahamDumpleton/wrapt") |
| 12007 | (synopsis "Module for decorators, wrappers and monkey patching") |
| 12008 | (description |
| 12009 | "The aim of the wrapt module is to provide a transparent object proxy for |
| 12010 | Python, which can be used as the basis for the construction of function |
| 12011 | wrappers and decorator functions.") |
| 12012 | (license license:bsd-2))) |
| 12013 | |
| 12014 | (define-public python-commentjson |
| 12015 | (package |
| 12016 | (name "python-commentjson") |
| 12017 | (version "0.9.0") |
| 12018 | (source (origin |
| 12019 | ;; The PyPI release is missing some test files. |
| 12020 | (method git-fetch) |
| 12021 | (uri (git-reference |
| 12022 | (url "https://github.com/vaidik/commentjson") |
| 12023 | (commit (string-append "v" version)))) |
| 12024 | (file-name (git-file-name name version)) |
| 12025 | (sha256 |
| 12026 | (base32 |
| 12027 | "01iscgrc6bkyrxbzmf46csbf9c0n7g6dygdmxs3fq8fkzrrciybl")))) |
| 12028 | (build-system python-build-system) |
| 12029 | (arguments |
| 12030 | `(#:modules ((guix build python-build-system) |
| 12031 | (guix build utils) |
| 12032 | (ice-9 ftw) |
| 12033 | (ice-9 textual-ports)) |
| 12034 | #:phases |
| 12035 | (modify-phases %standard-phases |
| 12036 | (add-after 'unpack 'relax-requirements |
| 12037 | (lambda _ |
| 12038 | (substitute* "setup.py" |
| 12039 | (("lark-parser>=0.7.1,<0.8.0") |
| 12040 | "lark-parser>=0.7.1")))) |
| 12041 | (add-after 'unpack 'delete-unspported-tests |
| 12042 | ;; Some tests rely on the 'test' module of Python itself, |
| 12043 | ;; which is not available with the Python package in Guix; |
| 12044 | ;; remove them. |
| 12045 | (lambda _ |
| 12046 | ;; XXX: Copied from (guix build dub-build-system). |
| 12047 | (define (grep string file-name) |
| 12048 | (string-contains (call-with-input-file file-name get-string-all) |
| 12049 | string)) |
| 12050 | |
| 12051 | (with-directory-excursion "commentjson/tests/test_json" |
| 12052 | (let* ((dot? (lambda (x) (member x '("." "..")))) |
| 12053 | (test-files (scandir "." (negate dot?)))) |
| 12054 | (for-each delete-file |
| 12055 | (filter (lambda (f) (grep "from test." f)) |
| 12056 | test-files))))))))) |
| 12057 | (propagated-inputs |
| 12058 | (list python-lark-parser)) |
| 12059 | (native-inputs |
| 12060 | (list python-six)) |
| 12061 | (home-page "https://github.com/vaidik/commentjson") |
| 12062 | (synopsis "Python library for adding comments to JSON files") |
| 12063 | (description "Comment JSON is a Python package that helps you create JSON |
| 12064 | files with Python and JavaScript style inline comments. Its API is very |
| 12065 | similar to the Python standard library's @code{json} module.") |
| 12066 | (license license:expat))) |
| 12067 | |
| 12068 | (define-public python-resolvelib |
| 12069 | (package |
| 12070 | (name "python-resolvelib") |
| 12071 | (version "0.7.1") |
| 12072 | (source |
| 12073 | (origin |
| 12074 | ;; Tests are missing from the PyPI release. |
| 12075 | (method git-fetch) |
| 12076 | (uri (git-reference |
| 12077 | (url "https://github.com/sarugaku/resolvelib") |
| 12078 | (commit version))) |
| 12079 | (file-name (git-file-name name version)) |
| 12080 | (sha256 |
| 12081 | (base32 |
| 12082 | "1fqz75riagizihvf4j7wc3zjw6kmg1dd8sf49aszyml105kb33n8")))) |
| 12083 | (build-system python-build-system) |
| 12084 | (arguments |
| 12085 | `(#:phases |
| 12086 | (modify-phases %standard-phases |
| 12087 | (replace 'check |
| 12088 | (lambda* (#:key tests? inputs outputs #:allow-other-keys) |
| 12089 | (when tests? |
| 12090 | (add-installed-pythonpath inputs outputs) |
| 12091 | (invoke "pytest"))))))) |
| 12092 | (native-inputs |
| 12093 | (list python-commentjson python-packaging python-pytest)) |
| 12094 | (home-page "https://github.com/sarugaku/resolvelib") |
| 12095 | (synopsis "Abstract dependencies resolver") |
| 12096 | (description "The ResolveLib library provides a @code{Resolver} class that |
| 12097 | includes dependency resolution logic.") |
| 12098 | (license license:isc))) |
| 12099 | |
| 12100 | ;;; This older version is required by ansible-core. |
| 12101 | (define-public python-resolvelib-0.5 |
| 12102 | (package/inherit python-resolvelib |
| 12103 | (name "python-resolvelib") |
| 12104 | (version "0.5.4") |
| 12105 | (source |
| 12106 | (origin |
| 12107 | (method git-fetch) |
| 12108 | (uri (git-reference |
| 12109 | (url "https://github.com/sarugaku/resolvelib") |
| 12110 | (commit version))) |
| 12111 | (file-name (git-file-name name version)) |
| 12112 | (sha256 |
| 12113 | (base32 |
| 12114 | "0697y330sqhiclk25v151qxg7aixzpj434lbg5qib0qlna5zg9la")))))) |
| 12115 | |
| 12116 | (define-public python-commonmark |
| 12117 | (package |
| 12118 | (name "python-commonmark") |
| 12119 | (version "0.9.1") |
| 12120 | (source |
| 12121 | (origin |
| 12122 | (method url-fetch) |
| 12123 | (uri (pypi-uri "commonmark" version)) |
| 12124 | (sha256 |
| 12125 | (base32 "0q7d39lm8kcingpmykk5r959hrwwj6v2icyw3mihczxyb749sbs5")))) |
| 12126 | (build-system python-build-system) |
| 12127 | (arguments |
| 12128 | `(#:phases |
| 12129 | (modify-phases %standard-phases |
| 12130 | (replace 'check |
| 12131 | (lambda* (#:key inputs outputs #:allow-other-keys) |
| 12132 | (add-installed-pythonpath inputs outputs) |
| 12133 | (invoke "python" "setup.py" "test")))))) |
| 12134 | (home-page "https://github.com/readthedocs/commonmark.py") |
| 12135 | (synopsis "Python parser for the CommonMark Markdown spec") |
| 12136 | (description |
| 12137 | "This module is a pure Python port of jgm's @code{commonmark.js}, a |
| 12138 | Markdown parser and renderer for the CommonMark specification, using only |
| 12139 | native modules.") |
| 12140 | (license license:bsd-3))) |
| 12141 | |
| 12142 | (define-public python-xlrd |
| 12143 | (package |
| 12144 | (name "python-xlrd") |
| 12145 | (version "2.0.1") |
| 12146 | (source (origin |
| 12147 | ;; The tests are not included in the PyPI archive. |
| 12148 | (method git-fetch) |
| 12149 | (uri (git-reference |
| 12150 | (url "https://github.com/python-excel/xlrd") |
| 12151 | (commit version))) |
| 12152 | (file-name (git-file-name name version)) |
| 12153 | (sha256 |
| 12154 | (base32 |
| 12155 | "170asszffvf6rh5w169ic4h5kxgjkmdl3060vw737d4g1qfifvzz")))) |
| 12156 | (build-system python-build-system) |
| 12157 | (native-inputs |
| 12158 | (list python-pytest)) |
| 12159 | (home-page "http://www.python-excel.org/") |
| 12160 | (synopsis "Library for extracting data from Excel files") |
| 12161 | (description "This package provides a library to extract data from |
| 12162 | spreadsheets using Microsoft Excel proprietary file formats @samp{.xls} and |
| 12163 | @samp{.xlsx} (versions 2.0 onwards). It has support for Excel dates and is |
| 12164 | Unicode-aware. It is not intended as an end-user tool.") |
| 12165 | (license license:bsd-3))) |
| 12166 | |
| 12167 | ;;; Note: this package is unmaintained since 2018 (archived on GitHub). |
| 12168 | (define-public python-xlwt |
| 12169 | (package |
| 12170 | (name "python-xlwt") |
| 12171 | (version "1.3.0") |
| 12172 | (source |
| 12173 | (origin |
| 12174 | (method url-fetch) |
| 12175 | (uri (pypi-uri "xlwt" version)) |
| 12176 | (sha256 |
| 12177 | (base32 "123c2pdamshkq75wwvck8fq0cjq1843xd3x9qaiz2a4vg9qi56f5")))) |
| 12178 | (build-system python-build-system) |
| 12179 | (arguments |
| 12180 | `(#:phases |
| 12181 | (modify-phases %standard-phases |
| 12182 | (replace 'check |
| 12183 | (lambda* (#:key tests? #:allow-other-keys) |
| 12184 | (when tests? |
| 12185 | (setenv "GUIX_PYTHONPATH" |
| 12186 | (string-append (getcwd) "/build/lib:" |
| 12187 | (getenv "GUIX_PYTHONPATH"))) |
| 12188 | (invoke "nosetests" "-v"))))))) |
| 12189 | (native-inputs |
| 12190 | `(("nose" ,python-nose))) |
| 12191 | (home-page "http://www.python-excel.org/") |
| 12192 | (synopsis "Library for creating spreadsheet Excel files") |
| 12193 | (description "@code{xlwt} is a library for writing data and formatting |
| 12194 | information to older Excel files (i.e. .xls). The package itself is pure |
| 12195 | Python with no dependencies on modules or packages outside the standard Python |
| 12196 | distribution. It is not intended as an end-user tool.") |
| 12197 | (license license:bsd-3))) |
| 12198 | |
| 12199 | (define-public python-immutables |
| 12200 | (package |
| 12201 | (name "python-immutables") |
| 12202 | (version "0.18") |
| 12203 | (source |
| 12204 | (origin |
| 12205 | (method url-fetch) |
| 12206 | (uri (pypi-uri "immutables" version)) |
| 12207 | (sha256 |
| 12208 | (base32 "1x4cinh0xbl6p6p2yfm2s07mxxy3lf0zzai9gqpydk4482bwfdjk")))) |
| 12209 | (build-system python-build-system) |
| 12210 | (native-inputs (list python-mypy python-pytest)) |
| 12211 | (home-page "https://github.com/MagicStack/immutables") |
| 12212 | (synopsis "High-performance immutable mapping type for Python") |
| 12213 | (description |
| 12214 | "An immutable mapping type for Python. The underlying datastructure is a |
| 12215 | Hash Array Mapped Trie (HAMT) used in Clojure, Scala, Haskell, and other |
| 12216 | functional languages.") |
| 12217 | (license license:asl2.0))) |
| 12218 | |
| 12219 | (define-public python-prettytable |
| 12220 | (package |
| 12221 | (name "python-prettytable") |
| 12222 | (version "3.3.0") |
| 12223 | (source |
| 12224 | (origin |
| 12225 | (method url-fetch) |
| 12226 | (uri (pypi-uri "prettytable" version)) |
| 12227 | (sha256 |
| 12228 | (base32 |
| 12229 | "1c599w31i2ndzbkn85xwsgv9sd2j16r56dl922w4jh3rs97vb3hi")))) |
| 12230 | (build-system python-build-system) |
| 12231 | (arguments |
| 12232 | (list #:phases |
| 12233 | #~(modify-phases %standard-phases |
| 12234 | (replace 'check |
| 12235 | (lambda* (#:key tests? #:allow-other-keys) |
| 12236 | (when tests? |
| 12237 | (invoke "pytest" "-vv"))))))) |
| 12238 | (native-inputs |
| 12239 | (list python-pytest |
| 12240 | python-pytest-lazy-fixture |
| 12241 | python-setuptools-scm)) |
| 12242 | (propagated-inputs (list python-wcwidth)) |
| 12243 | (home-page "https://github.com/jazzband/prettytable") |
| 12244 | (synopsis "Display tabular data in an ASCII table format") |
| 12245 | (description |
| 12246 | "A library designed to represent tabular data in visually appealing ASCII |
| 12247 | tables. PrettyTable allows for selection of which columns are to be printed, |
| 12248 | independent alignment of columns (left or right justified or centred) and |
| 12249 | printing of sub-tables by specifying a row range.") |
| 12250 | (license license:bsd-3))) |
| 12251 | |
| 12252 | (define-public python-rtf-tokenize |
| 12253 | (package |
| 12254 | (name "python-rtf-tokenize") |
| 12255 | (version "1.0.0") |
| 12256 | (source (origin |
| 12257 | (method url-fetch) |
| 12258 | (uri (pypi-uri "rtf_tokenize" version)) |
| 12259 | (sha256 |
| 12260 | (base32 |
| 12261 | "026njb9iwznycda83bln3gfivcnzdz6vy8y86xvbsy84s28g6gaw")))) |
| 12262 | (build-system python-build-system) |
| 12263 | (native-inputs (list python-pytest)) |
| 12264 | (home-page "https://github.com/benoit-pierre/rtf_tokenize") |
| 12265 | (synopsis "Simple RTF tokenizer") |
| 12266 | (description "This package is a simple RTF tokenizer.") |
| 12267 | (license license:gpl2+))) |
| 12268 | |
| 12269 | (define-public python-curio |
| 12270 | (package |
| 12271 | (name "python-curio") |
| 12272 | (version "1.5") |
| 12273 | (source |
| 12274 | (origin |
| 12275 | (method url-fetch) |
| 12276 | (uri (pypi-uri "curio" version)) |
| 12277 | (sha256 |
| 12278 | (base32 "045wwg16qadsalhicbv21p14sj8i4w0l57639j7dmdqbb4p2225g")))) |
| 12279 | (build-system python-build-system) |
| 12280 | (arguments |
| 12281 | `(#:phases |
| 12282 | (modify-phases %standard-phases |
| 12283 | (replace 'check |
| 12284 | (lambda* (#:key inputs outputs tests? #:allow-other-keys) |
| 12285 | (when tests? |
| 12286 | (add-installed-pythonpath inputs outputs) |
| 12287 | (invoke "pytest" "-vv" "-k" |
| 12288 | (string-append |
| 12289 | ;; Tries to open an outgoing connection. |
| 12290 | "not test_ssl_outgoing " |
| 12291 | ;; This test fails since Python 3.9.9 (see: |
| 12292 | ;; https://github.com/dabeaz/curio/issues/347). |
| 12293 | "and not test_timeout")))))))) |
| 12294 | (native-inputs |
| 12295 | (list python-pytest)) |
| 12296 | (home-page "https://github.com/dabeaz/curio") |
| 12297 | (synopsis "Coroutine-based library for concurrent Python") |
| 12298 | (description |
| 12299 | "Curio is a coroutine-based library for concurrent Python systems |
| 12300 | programming. It provides standard programming abstractions such as as |
| 12301 | tasks, sockets, files, locks, and queues.") |
| 12302 | (license license:bsd-3))) |
| 12303 | |
| 12304 | (define-public python-tables |
| 12305 | (package |
| 12306 | (name "python-tables") |
| 12307 | (version "3.6.1") |
| 12308 | (source |
| 12309 | (origin |
| 12310 | (method url-fetch) |
| 12311 | (uri (pypi-uri "tables" version)) |
| 12312 | (sha256 |
| 12313 | (base32 |
| 12314 | "0j8vnxh2m5n0cyk9z3ndcj5n1zj5rdxgc1gb78bqlyn2lyw75aa9")) |
| 12315 | (modules '((guix build utils))) |
| 12316 | (snippet |
| 12317 | '(begin |
| 12318 | ;; Remove pre-compiled .pyc files from source. |
| 12319 | (for-each delete-file-recursively |
| 12320 | (find-files "." "__pycache__" #:directories? #t)) |
| 12321 | (for-each delete-file (find-files "." "\\.pyc$")) |
| 12322 | #t)))) |
| 12323 | (build-system python-build-system) |
| 12324 | (arguments |
| 12325 | `(;; FIXME: python-build-system does not pass configure-flags to "build" |
| 12326 | ;; or "check", so we must override the build and check phases. |
| 12327 | #:phases |
| 12328 | (modify-phases %standard-phases |
| 12329 | (add-after 'unpack 'use-gcc |
| 12330 | (lambda _ |
| 12331 | (substitute* "setup.py" |
| 12332 | (("^( +)compiler = new_compiler\\(\\)" line indent) |
| 12333 | (string-append line |
| 12334 | "\n" |
| 12335 | indent |
| 12336 | "compiler.set_executables(compiler='gcc'," |
| 12337 | "compiler_so='gcc'," |
| 12338 | "linker_exe='gcc'," |
| 12339 | "linker_so='gcc -shared')"))) |
| 12340 | #t)) |
| 12341 | (add-after 'unpack 'disable-tuning |
| 12342 | (lambda _ |
| 12343 | (substitute* "setup.py" |
| 12344 | (("cpu_flags = .*") |
| 12345 | "cpu_flags = ['sse2']\n")) |
| 12346 | #t)) |
| 12347 | (replace 'build |
| 12348 | (lambda* (#:key inputs #:allow-other-keys) |
| 12349 | (invoke "python" "setup.py" "build" |
| 12350 | (string-append "--hdf5=" |
| 12351 | (assoc-ref inputs "hdf5"))))) |
| 12352 | (replace 'check |
| 12353 | (lambda* (#:key inputs #:allow-other-keys) |
| 12354 | (invoke "python" "setup.py" "check" |
| 12355 | (string-append "--hdf5=" |
| 12356 | (assoc-ref inputs "hdf5")))))))) |
| 12357 | (propagated-inputs |
| 12358 | (list python-numexpr python-numpy)) |
| 12359 | (native-inputs |
| 12360 | (list python-cython pkg-config)) |
| 12361 | (inputs |
| 12362 | (list hdf5-1.10 bzip2 zlib)) |
| 12363 | (home-page "https://www.pytables.org/") |
| 12364 | (synopsis "Hierarchical datasets for Python") |
| 12365 | (description "PyTables is a package for managing hierarchical datasets and |
| 12366 | designed to efficiently cope with extremely large amounts of data.") |
| 12367 | (license license:bsd-3))) |
| 12368 | |
| 12369 | (define-public python-sniffio |
| 12370 | (package |
| 12371 | (name "python-sniffio") |
| 12372 | (version "1.2.0") |
| 12373 | (source |
| 12374 | (origin |
| 12375 | (method url-fetch) |
| 12376 | (uri (pypi-uri "sniffio" version)) |
| 12377 | (sha256 |
| 12378 | (base32 "1pnkvi6wvn4qd37y69n1ls6n8l63gfmn3pvb1jb50gqxxkn6wrn4")))) |
| 12379 | (build-system python-build-system) |
| 12380 | (arguments |
| 12381 | `(#:phases |
| 12382 | (modify-phases %standard-phases |
| 12383 | (replace 'check |
| 12384 | (lambda _ |
| 12385 | (invoke "pytest" "-vv")))))) |
| 12386 | (native-inputs |
| 12387 | (list python-curio python-pytest python-pytest-cov)) |
| 12388 | (home-page "https://github.com/python-trio/sniffio") |
| 12389 | (synopsis "Detect which async library a program is running under") |
| 12390 | (description "This package detects which async library a program is |
| 12391 | running under. It supports multiple async I/O packages, like Trio, and |
| 12392 | asyncio.") |
| 12393 | ;; Either license applies. |
| 12394 | (license (list license:expat license:asl2.0)))) |
| 12395 | |
| 12396 | (define-public python-pytest-black |
| 12397 | (package |
| 12398 | (name "python-pytest-black") |
| 12399 | (version "0.3.12") |
| 12400 | (source |
| 12401 | (origin |
| 12402 | (method url-fetch) |
| 12403 | (uri (pypi-uri "pytest-black" version)) |
| 12404 | (sha256 |
| 12405 | (base32 |
| 12406 | "19bmbcnaq02md8nnj6pywri3vps8sxnhysbfy386qkbn9w09ncqx")))) |
| 12407 | (build-system python-build-system) |
| 12408 | (propagated-inputs |
| 12409 | (list python-pytest python-black python-toml)) |
| 12410 | (native-inputs |
| 12411 | (list python-setuptools-scm)) |
| 12412 | (home-page "https://github.com/shopkeep/pytest-black") |
| 12413 | (synopsis "Pytest plugin to enable format checking with black") |
| 12414 | (description |
| 12415 | "This package provides a pytest plugin to enable format checking with the |
| 12416 | Python code formatter \"black\".") |
| 12417 | (license license:expat))) |
| 12418 | |
| 12419 | (define-public python-geojson |
| 12420 | (package |
| 12421 | (name "python-geojson") |
| 12422 | (version "2.5.0") |
| 12423 | (source |
| 12424 | (origin |
| 12425 | (method url-fetch) |
| 12426 | (uri (pypi-uri "geojson" version)) |
| 12427 | (sha256 |
| 12428 | (base32 "12k5bzqskvq3gqzkryarhdjl0df47y5k9cf8r3clasi2wjnbfjvf")))) |
| 12429 | (build-system python-build-system) |
| 12430 | (arguments |
| 12431 | ;; https://github.com/jazzband/geojson/issues/175 |
| 12432 | `(#:tests? #f)) |
| 12433 | (home-page "https://github.com/jazzband/geojson") |
| 12434 | (synopsis "Python bindings and utilities for GeoJSON") |
| 12435 | (description |
| 12436 | "This package provides Python bindings and utilities for |
| 12437 | @uref{http://geojson.org/, GeoJSON}, a format for encoding geographic data |
| 12438 | structures.") |
| 12439 | (license license:bsd-3))) |
| 12440 | |
| 12441 | (define-public wfetch |
| 12442 | (let ((commit "e1cfa37814aebc9eb56ce994ebe877b6a6f9a715") |
| 12443 | (revision "1")) |
| 12444 | (package |
| 12445 | (name "wfetch") |
| 12446 | (version (git-version "0.1-pre" revision commit)) |
| 12447 | (home-page "https://github.com/Gcat101/Wfetch") |
| 12448 | (source |
| 12449 | (origin |
| 12450 | (method git-fetch) |
| 12451 | (uri (git-reference (url home-page) |
| 12452 | (commit commit))) |
| 12453 | (file-name (git-file-name name version)) |
| 12454 | (sha256 |
| 12455 | (base32 "1dmr85plx8zr6s14ym3r32g6crwxghkval5a24ah90ijx4dbn5q5")))) |
| 12456 | (build-system python-build-system) |
| 12457 | (arguments |
| 12458 | `(#:use-setuptools? #f ; no setup.py |
| 12459 | #:tests? #f ; no test suite |
| 12460 | #:phases |
| 12461 | (modify-phases %standard-phases |
| 12462 | (delete 'build) |
| 12463 | (replace 'install |
| 12464 | (lambda* (#:key outputs #:allow-other-keys) |
| 12465 | (let* ((out (assoc-ref outputs "out")) |
| 12466 | (bin (string-append out "/bin")) |
| 12467 | (share (string-append out "/share"))) |
| 12468 | (mkdir-p share) |
| 12469 | (substitute* "wfetch/wfetch.py" |
| 12470 | (("os.sep, 'opt', 'wfetch'") (string-append "'" share "'"))) |
| 12471 | (install-file "wfetch/wfetch.py" bin) |
| 12472 | (copy-recursively "wfetch/icons" share))))))) |
| 12473 | (inputs (list python-pyowm python-fire python-termcolor python-requests)) |
| 12474 | (synopsis "Command-line tool to display weather info") |
| 12475 | (description |
| 12476 | "This package provides a tool similar to Neofetch/pfetch, but for |
| 12477 | weather: it can display the weather condition, temperature, humidity, etc. |
| 12478 | |
| 12479 | To use it, you must first run: |
| 12480 | |
| 12481 | @example |
| 12482 | export WEATHER_CLI_API=@var{your OpenWeatherMap API key} |
| 12483 | @end example\n") |
| 12484 | (license license:gpl3+)))) |
| 12485 | |
| 12486 | (define-public python-get-version |
| 12487 | (package |
| 12488 | (name "python-get-version") |
| 12489 | (version "2.1") |
| 12490 | (source |
| 12491 | (origin |
| 12492 | (method url-fetch) |
| 12493 | (uri (pypi-uri "get_version" version)) |
| 12494 | (sha256 |
| 12495 | (base32 |
| 12496 | "1g15jyx33vkxavv9hwv275cs4g9bp2i1y942raw3fxamq8kbaml1")))) |
| 12497 | (build-system python-build-system) |
| 12498 | (propagated-inputs |
| 12499 | (list python-pygments |
| 12500 | python-pytest |
| 12501 | python-pytest-black |
| 12502 | python-pytest-cov |
| 12503 | python-setuptools |
| 12504 | python-testpath)) |
| 12505 | (home-page "https://github.com/flying-sheep/get_version") |
| 12506 | (synopsis "Version helper in the spirit of versioneer") |
| 12507 | (description |
| 12508 | "This package provides a version helper that lets you automatically use |
| 12509 | the latest @code{vX.X.X} Git tag as the version in your Python package. It |
| 12510 | also supports getting the version from Python source distributions or, once |
| 12511 | your package is installed, via @code{pkg_resources} (part of |
| 12512 | @code{setuptools}).") |
| 12513 | (license license:gpl3+))) |
| 12514 | |
| 12515 | (define-public python-filetype |
| 12516 | (package |
| 12517 | (name "python-filetype") |
| 12518 | (version "1.0.8") |
| 12519 | (source |
| 12520 | (origin |
| 12521 | (method url-fetch) |
| 12522 | (uri (pypi-uri "filetype" version)) |
| 12523 | (sha256 |
| 12524 | (base32 "05mkinkcn36v1cnb5hzay3zxmv7jmmflckxxp08rgzbkkf3i9pvp")))) |
| 12525 | (build-system python-build-system) |
| 12526 | (arguments |
| 12527 | `(#:phases |
| 12528 | (modify-phases %standard-phases |
| 12529 | (replace 'check |
| 12530 | (lambda* (#:key inputs outputs tests? #:allow-other-keys) |
| 12531 | (when tests? |
| 12532 | (add-installed-pythonpath inputs outputs) |
| 12533 | (invoke "python" "-m" "pytest" "-k" |
| 12534 | (string-append |
| 12535 | ;; Both tests fail with FileNotFoundError. |
| 12536 | "not test_infer_zip_from_disk" |
| 12537 | " and not test_infer_tar_from_disk")))))))) |
| 12538 | (native-inputs |
| 12539 | (list python-pytest python-pytest-benchmark)) |
| 12540 | (home-page "https://github.com/h2non/filetype.py") |
| 12541 | (synopsis "Infer file type and MIME type of any file/buffer") |
| 12542 | (description "@code{filetype} is a small and dependency free Python |
| 12543 | package to infer file type and MIME type checking the magic numbers |
| 12544 | signature of a file or buffer.") |
| 12545 | (license license:expat))) |
| 12546 | |
| 12547 | (define-public python-cachelib |
| 12548 | (package |
| 12549 | (name "python-cachelib") |
| 12550 | (version "0.4.1") |
| 12551 | (source |
| 12552 | (origin |
| 12553 | (method url-fetch) |
| 12554 | (uri (pypi-uri "cachelib" version)) |
| 12555 | (sha256 |
| 12556 | (base32 "0p4chkvbvffcllsny5rpzmsq2vyr24ql3kzif4ha0fxp3fp7vqk8")))) |
| 12557 | (build-system python-build-system) |
| 12558 | (arguments |
| 12559 | `(#:phases |
| 12560 | (modify-phases %standard-phases |
| 12561 | (replace 'check |
| 12562 | (lambda* (#:key tests? inputs outputs #:allow-other-keys) |
| 12563 | (when tests? |
| 12564 | (add-installed-pythonpath inputs outputs) |
| 12565 | (invoke "pytest"))))))) |
| 12566 | (native-inputs |
| 12567 | (list python-pytest python-pytest-xprocess)) |
| 12568 | (home-page "https://github.com/pallets/cachelib") |
| 12569 | (synopsis "Collection of cache libraries") |
| 12570 | (description "Cachelib is a library extracted from @code{werkzeug} which |
| 12571 | provides a collection of cache libraries in the same API interface.") |
| 12572 | (license license:bsd-3))) |
| 12573 | |
| 12574 | (define-public python-pylru |
| 12575 | (package |
| 12576 | (name "python-pylru") |
| 12577 | (version "1.2.0") |
| 12578 | (source |
| 12579 | (origin |
| 12580 | (method url-fetch) |
| 12581 | (uri (pypi-uri "pylru" version)) |
| 12582 | (sha256 |
| 12583 | (base32 "15yj46307sw703vjfkgnr04dqvaicmfcj0hc6yrciildp55r6bs9")))) |
| 12584 | (build-system python-build-system) |
| 12585 | (arguments |
| 12586 | `(#:phases |
| 12587 | (modify-phases %standard-phases |
| 12588 | (replace 'check |
| 12589 | (lambda* (#:key inputs outputs tests? #:allow-other-keys) |
| 12590 | (when tests? |
| 12591 | (add-installed-pythonpath inputs outputs) |
| 12592 | (invoke "python" "test.py"))))))) |
| 12593 | (home-page "https://github.com/jlhutch/pylru") |
| 12594 | (synopsis "Least recently used (LRU) cache implementation") |
| 12595 | (description |
| 12596 | "Pylru implements a true LRU cache along with several support classes. |
| 12597 | Pylru provides a cache class with a simple dict interface. It also provides |
| 12598 | classes to wrap any object that has a dict interface with a cache. Both |
| 12599 | write-through and write-back semantics are supported. Pylru also provides |
| 12600 | classes to wrap functions in a similar way, including a function decorator.") |
| 12601 | (license license:gpl2+))) |
| 12602 | |
| 12603 | (define-public python-legacy-api-wrap |
| 12604 | (package |
| 12605 | (name "python-legacy-api-wrap") |
| 12606 | (version "1.2") |
| 12607 | (source |
| 12608 | (origin |
| 12609 | (method url-fetch) |
| 12610 | (uri (pypi-uri "legacy-api-wrap" version)) |
| 12611 | (sha256 |
| 12612 | (base32 |
| 12613 | "06qhp0g543dy98vpa41hwdalvdbsjfc3ldk474yr9sd75mhl8jh3")))) |
| 12614 | (build-system python-build-system) |
| 12615 | (propagated-inputs |
| 12616 | (list python-get-version python-pytest python-pytest-black |
| 12617 | python-pytest-cov python-setuptools)) |
| 12618 | (home-page "https://github.com/flying-sheep/legacy-api-wrap") |
| 12619 | (synopsis "Legacy API wrapper") |
| 12620 | (description "This module defines a decorator to wrap legacy APIs. The |
| 12621 | primary use case is APIs defined before keyword-only parameters existed.") |
| 12622 | (license license:gpl3+))) |
| 12623 | |
| 12624 | (define-public python-langdetect |
| 12625 | (package |
| 12626 | (name "python-langdetect") |
| 12627 | (version "1.0.9") |
| 12628 | (source |
| 12629 | (origin |
| 12630 | (method url-fetch) |
| 12631 | (uri (pypi-uri "langdetect" version)) |
| 12632 | (sha256 |
| 12633 | (base32 "1805svvb7xjm4sf1j7b6nc3409x37pd1xmabfwwjf1ldkzwgxhfb")))) |
| 12634 | (build-system python-build-system) |
| 12635 | (propagated-inputs |
| 12636 | (list python-six)) |
| 12637 | (home-page "https://github.com/Mimino666/langdetect") |
| 12638 | (synopsis "Language detection library") |
| 12639 | (description |
| 12640 | "This library is a port of Nakatani Shuyo's language-detection library |
| 12641 | (version from 03/03/2014) to Python.") |
| 12642 | (license license:expat))) |
| 12643 | |
| 12644 | (define-public python-pyasn1 |
| 12645 | (package |
| 12646 | (name "python-pyasn1") |
| 12647 | (version "0.4.8") |
| 12648 | (source |
| 12649 | (origin |
| 12650 | (method url-fetch) |
| 12651 | (uri (pypi-uri "pyasn1" version)) |
| 12652 | (sha256 |
| 12653 | (base32 |
| 12654 | "1fnhbi3rmk47l9851gbik0flfr64vs5j0hbqx24cafjap6gprxxf")))) |
| 12655 | (build-system python-build-system) |
| 12656 | (home-page "http://pyasn1.sourceforge.net/") |
| 12657 | (synopsis "ASN.1 types and codecs") |
| 12658 | (description |
| 12659 | "This is an implementation of ASN.1 types and codecs in Python. It is |
| 12660 | suitable for a wide range of protocols based on the ASN.1 specification.") |
| 12661 | (license license:bsd-2))) |
| 12662 | |
| 12663 | (define-public python-pyasn1-modules |
| 12664 | (package |
| 12665 | (name "python-pyasn1-modules") |
| 12666 | (version "0.2.8") |
| 12667 | (source |
| 12668 | (origin |
| 12669 | (method url-fetch) |
| 12670 | (uri (pypi-uri "pyasn1-modules" version)) |
| 12671 | (sha256 |
| 12672 | (base32 |
| 12673 | "0pp6dcagd8c2c9qx3lahc1rdwlnmm0y0siqr5icjq2r32b3q8pwh")))) |
| 12674 | (build-system python-build-system) |
| 12675 | (propagated-inputs |
| 12676 | (list python-pyasn1)) |
| 12677 | (home-page "https://sourceforge.net/projects/pyasn1/") |
| 12678 | (synopsis "ASN.1 codec implementations") |
| 12679 | (description |
| 12680 | "Pyasn1-modules is a collection of Python modules providing ASN.1 types and |
| 12681 | implementations of ASN.1-based codecs and protocols.") |
| 12682 | (license license:bsd-3))) |
| 12683 | |
| 12684 | (define-public python-ipaddress |
| 12685 | (package |
| 12686 | (name "python-ipaddress") |
| 12687 | (version "1.0.23") |
| 12688 | (source (origin |
| 12689 | (method url-fetch) |
| 12690 | (uri (pypi-uri "ipaddress" version)) |
| 12691 | (sha256 |
| 12692 | (base32 |
| 12693 | "1qp743h30s04m3cg3yk3fycad930jv17q7dsslj4mfw0jlvf1y5p")))) |
| 12694 | (build-system python-build-system) |
| 12695 | (home-page "https://github.com/phihag/ipaddress") |
| 12696 | (synopsis "IP address manipulation library") |
| 12697 | (description |
| 12698 | "This package provides a fast, lightweight IPv4/IPv6 manipulation library |
| 12699 | in Python. This library is used to create, poke at, and manipulate IPv4 and |
| 12700 | IPv6 addresses and networks.") |
| 12701 | (license license:psfl))) |
| 12702 | |
| 12703 | (define-public python-asn1tools |
| 12704 | (package |
| 12705 | (name "python-asn1tools") |
| 12706 | (version "0.158.0") |
| 12707 | (source |
| 12708 | (origin |
| 12709 | (method url-fetch) |
| 12710 | (uri (pypi-uri "asn1tools" version)) |
| 12711 | (sha256 |
| 12712 | (base32 "1k88a1azmyvp2ab6qcf2i40dig5abhyn7cmlyhmwwh8kr3syvma0")))) |
| 12713 | (build-system python-build-system) |
| 12714 | (propagated-inputs |
| 12715 | (list python-bitstruct python-diskcache python-prompt-toolkit |
| 12716 | python-pyparsing)) |
| 12717 | (home-page "https://github.com/eerimoq/asn1tools") |
| 12718 | (synopsis "ASN.1 parsing, encoding and decoding") |
| 12719 | (description "This package provides ASN.1 parsing, encoding and decoding |
| 12720 | for Python, including constraints checking. It supports several |
| 12721 | codecs (e.g. BER, PER, UPER, XER) as well as limited C source code generating |
| 12722 | for OER and UPER.") |
| 12723 | (license license:expat))) |
| 12724 | |
| 12725 | (define-public python-idna |
| 12726 | (package |
| 12727 | (name "python-idna") |
| 12728 | (version "3.3") |
| 12729 | (source |
| 12730 | (origin |
| 12731 | (method url-fetch) |
| 12732 | (uri (pypi-uri "idna" version)) |
| 12733 | (sha256 |
| 12734 | (base32 |
| 12735 | "0v8f6qjfi5i7qc5icsbv2pi24qy6k6m8wjqjvdf2sxjvlpq3yr4x")))) |
| 12736 | (build-system python-build-system) |
| 12737 | (home-page "https://github.com/kjd/idna") |
| 12738 | (synopsis "Internationalized domain names in applications") |
| 12739 | (description |
| 12740 | "This is a library to support the Internationalised Domain Names in |
| 12741 | Applications (IDNA) protocol as specified in RFC 5891. This version of the |
| 12742 | protocol is often referred to as “IDNA2008” and can produce different results |
| 12743 | from the earlier standard from 2003. The library is also intended to act as a |
| 12744 | suitable drop-in replacement for the “encodings.idna” module that comes with |
| 12745 | the Python standard library but currently only supports the older 2003 |
| 12746 | specification.") |
| 12747 | (license license:bsd-4))) |
| 12748 | |
| 12749 | (define-public python-libsass |
| 12750 | (package |
| 12751 | (name "python-libsass") |
| 12752 | (version "0.20.1") |
| 12753 | (source |
| 12754 | (origin |
| 12755 | ;; PyPI tarball is missing some test files. |
| 12756 | (method git-fetch) |
| 12757 | (uri (git-reference |
| 12758 | (url "https://github.com/sass/libsass-python") |
| 12759 | (commit version))) |
| 12760 | (file-name (git-file-name name version)) |
| 12761 | (sha256 |
| 12762 | (base32 "1r0kgl7i6nnhgjl44sjw57k08gh2qr7l8slqih550dyxbf1akbxh")))) |
| 12763 | (build-system python-build-system) |
| 12764 | (arguments |
| 12765 | '(#:phases |
| 12766 | (modify-phases %standard-phases |
| 12767 | ;; Use Guix package of libsass instead of compiling from a checkout. |
| 12768 | (add-before 'build 'set-libsass |
| 12769 | (lambda _ (setenv "SYSTEM_SASS" "indeed"))) |
| 12770 | (replace 'check |
| 12771 | (lambda* (#:key tests? #:allow-other-keys) |
| 12772 | (when tests? |
| 12773 | (invoke "pytest" "sasstests.py")))) |
| 12774 | (add-after 'install 'delete-test |
| 12775 | (lambda* (#:key inputs outputs #:allow-other-keys) |
| 12776 | ;; Delete sasstests.py because it attempts to open a file |
| 12777 | ;; that is not installed when loaded, which breaks the sanity |
| 12778 | ;; check. |
| 12779 | (delete-file (string-append |
| 12780 | (assoc-ref outputs "out") |
| 12781 | "/lib/python" |
| 12782 | (python-version |
| 12783 | (dirname (dirname |
| 12784 | (search-input-file inputs "bin/python")))) |
| 12785 | "/site-packages/sasstests.py"))))))) |
| 12786 | (native-inputs |
| 12787 | (list python-pytest python-werkzeug)) |
| 12788 | (inputs |
| 12789 | (list libsass)) |
| 12790 | (propagated-inputs |
| 12791 | (list python-six)) |
| 12792 | (home-page "https://sass.github.io/libsass-python/") |
| 12793 | (synopsis "Straightforward binding of libsass for Python") |
| 12794 | (description |
| 12795 | "This package provides a simple Python extension module @code{sass} which |
| 12796 | is binding LibSass.") |
| 12797 | (license license:expat))) |
| 12798 | |
| 12799 | (define-public python-idna-ssl |
| 12800 | (package |
| 12801 | (name "python-idna-ssl") |
| 12802 | (version "1.0.1") |
| 12803 | (source |
| 12804 | (origin |
| 12805 | (method url-fetch) |
| 12806 | (uri (pypi-uri "idna-ssl" version)) |
| 12807 | (sha256 |
| 12808 | (base32 |
| 12809 | "0ydrc8hpg9mdr5hqq1lqfsfbn6sjq69slwpfrnlrm3k0phqg14qj")))) |
| 12810 | (build-system python-build-system) |
| 12811 | (arguments |
| 12812 | `(#:tests? #f)) ;circular dependency with python-aiohttp |
| 12813 | (propagated-inputs (list python-idna)) |
| 12814 | (home-page "https://github.com/aio-libs/idna-ssl") |
| 12815 | (synopsis "Patch @code{ssl.match_hostname} for Unicode(idna) domains support") |
| 12816 | (description "Patch @code{ssl.match_hostname} for Unicode(idna) |
| 12817 | domains support.") |
| 12818 | (license license:expat))) |
| 12819 | |
| 12820 | ;;; Variant used to break a cycle with python-pip-run-bootstrap. |
| 12821 | (define-public python-path-bootstrap |
| 12822 | (hidden-package |
| 12823 | (package |
| 12824 | (name "python-path-bootstrap") |
| 12825 | (version "16.4.0") |
| 12826 | (source |
| 12827 | (origin |
| 12828 | (method url-fetch) |
| 12829 | (uri (pypi-uri "path" version)) |
| 12830 | (sha256 |
| 12831 | (base32 "0lig13gxnfv98v790db1smvsbd3mnj7y8rwyiwhfi6xiqibygwms")))) |
| 12832 | (build-system pyproject-build-system) |
| 12833 | (arguments |
| 12834 | (list #:tests? #f)) |
| 12835 | (native-inputs (list python-setuptools-scm)) |
| 12836 | (home-page "https://github.com/jaraco/path") |
| 12837 | (synopsis "Object-oriented file system path manipulation library") |
| 12838 | (description "@code{path} (formerly @code{path.py}) implements path |
| 12839 | objects as first-class entities, allowing common operations on files to be |
| 12840 | invoked on those path objects directly.") |
| 12841 | (license license:expat)))) |
| 12842 | |
| 12843 | (define-public python-path |
| 12844 | (package/inherit python-path-bootstrap |
| 12845 | (name "python-path") |
| 12846 | (arguments |
| 12847 | (substitute-keyword-arguments |
| 12848 | (package-arguments python-path-bootstrap) |
| 12849 | ((#:tests? _ #f) |
| 12850 | (not (%current-target-system))) |
| 12851 | ((#:test-flags flags #~'()) |
| 12852 | #~(append (list "-k" |
| 12853 | (string-append |
| 12854 | ;; Do not test the myproject.toml build as it tries |
| 12855 | ;; to pull dependencies from the Internet. |
| 12856 | "not project " |
| 12857 | ;; This tests assumes a root user exists. |
| 12858 | "and not test_get_owner")) |
| 12859 | #$flags)))) |
| 12860 | (native-inputs |
| 12861 | (modify-inputs (package-native-inputs python-path-bootstrap) |
| 12862 | (append python-appdirs |
| 12863 | python-packaging |
| 12864 | python-pygments |
| 12865 | python-pytest |
| 12866 | python-pytest-black |
| 12867 | python-pytest-checkdocs |
| 12868 | python-pytest-cov |
| 12869 | python-pytest-enabler |
| 12870 | python-pytest-flake8 |
| 12871 | python-pytest-mypy))) |
| 12872 | (properties (alist-delete 'hidden? |
| 12873 | (package-properties |
| 12874 | python-path-bootstrap))))) |
| 12875 | |
| 12876 | (define-public python-pathpy |
| 12877 | (deprecated-package "python-pathpy" python-path)) |
| 12878 | |
| 12879 | (define-public python-pretend |
| 12880 | (package |
| 12881 | (name "python-pretend") |
| 12882 | (version "1.0.9") |
| 12883 | (source |
| 12884 | (origin |
| 12885 | (method url-fetch) |
| 12886 | (uri (pypi-uri "pretend" version)) |
| 12887 | (sha256 |
| 12888 | (base32 |
| 12889 | "040vm94lcbscg5p81g1icmwwwa2jm7wrd1ybmxnv1sz8rl8bh3n9")))) |
| 12890 | (build-system python-build-system) |
| 12891 | (home-page "https://github.com/alex/pretend") |
| 12892 | (synopsis "Library for stubbing in Python") |
| 12893 | (description |
| 12894 | "Pretend is a library to make stubbing with Python easier. Stubbing is a |
| 12895 | technique for writing tests. You may hear the term mixed up with mocks, |
| 12896 | fakes, or doubles. Basically, a stub is an object that returns pre-canned |
| 12897 | responses, rather than doing any computation.") |
| 12898 | (license license:bsd-3))) |
| 12899 | |
| 12900 | ;;; Variant used to break a dependency cycle with |
| 12901 | ;;; python-pytest-perf-bootstrap. |
| 12902 | (define-public python-pip-run-bootstrap |
| 12903 | (hidden-package |
| 12904 | (package |
| 12905 | (name "python-pip-run-bootstrap") |
| 12906 | (version "8.8.0") |
| 12907 | (source (origin |
| 12908 | (method git-fetch) |
| 12909 | (uri (git-reference |
| 12910 | (url "https://github.com/jaraco/pip-run") |
| 12911 | (commit (string-append "v" version)))) |
| 12912 | (file-name (git-file-name name version)) |
| 12913 | (sha256 |
| 12914 | (base32 |
| 12915 | "0ycrjj3jgqcr9c2k7y8vprq65iblg0q0hvwz8zwi13gmb0ffds0c")))) |
| 12916 | (build-system python-build-system) |
| 12917 | (arguments |
| 12918 | (list |
| 12919 | #:tests? #f |
| 12920 | #:phases |
| 12921 | #~(modify-phases %standard-phases |
| 12922 | (add-before 'build 'pretend-version |
| 12923 | ;; The version string is usually derived via setuptools-scm, but |
| 12924 | ;; without the git metadata available this fails. |
| 12925 | (lambda _ |
| 12926 | (setenv "SETUPTOOLS_SCM_PRETEND_VERSION" #$version)))))) |
| 12927 | (native-inputs (list python-setuptools-scm)) |
| 12928 | (propagated-inputs (list python-autocommand python-path-bootstrap |
| 12929 | python-packaging)) |
| 12930 | (home-page "https://github.com/jaraco/pip-run") |
| 12931 | (synopsis "Dynamic dependency loader for Python") |
| 12932 | (description "The @command{pip-run} command provides on-demand temporary |
| 12933 | package installation for a single interpreter run. It replaces this series of |
| 12934 | commands: |
| 12935 | @example |
| 12936 | $ virtualenv --python pythonX.X --system-site-packages /tmp/env |
| 12937 | $ /tmp/env/bin/pip install pkg1 pkg2 -r reqs.txt |
| 12938 | $ /tmp/env/bin/python ... |
| 12939 | $ rm -rf /tmp/env |
| 12940 | @end example") |
| 12941 | (license license:expat)))) |
| 12942 | |
| 12943 | (define-public python-pip-run |
| 12944 | (package/inherit python-pip-run-bootstrap |
| 12945 | (name "python-pip-run") |
| 12946 | (arguments |
| 12947 | (substitute-keyword-arguments (package-arguments python-pip-run-bootstrap) |
| 12948 | ((#:tests? _ #f) |
| 12949 | (not (%current-target-system))) |
| 12950 | ((#:phases phases #~%standard-phases) |
| 12951 | #~(modify-phases #$phases |
| 12952 | (replace 'check |
| 12953 | (lambda* (#:key tests? #:allow-other-keys) |
| 12954 | (when tests? |
| 12955 | (invoke "pytest" "-k" |
| 12956 | (string-append |
| 12957 | ;; Do not test the myproject.toml build as it tries |
| 12958 | ;; to pull dependencies from the internet. |
| 12959 | "not project " |
| 12960 | ;; These tests attempt to install dependencies from |
| 12961 | ;; the network and fail. |
| 12962 | "and not test_pkg_imported " |
| 12963 | "and not test_pkg_loaded_from_alternate_index "))))))))) |
| 12964 | (propagated-inputs |
| 12965 | (modify-inputs (package-propagated-inputs python-pip-run-bootstrap) |
| 12966 | (replace "python-path-bootstrap" python-path))) |
| 12967 | (native-inputs |
| 12968 | (modify-inputs (package-native-inputs python-pip-run-bootstrap) |
| 12969 | (append python-nbformat |
| 12970 | python-pygments |
| 12971 | python-pytest |
| 12972 | python-pytest-black |
| 12973 | python-pytest-checkdocs |
| 12974 | python-pytest-cov |
| 12975 | python-pytest-enabler |
| 12976 | python-pytest-flake8 |
| 12977 | python-pytest-mypy))) |
| 12978 | (properties (alist-delete 'hidden? (package-properties |
| 12979 | python-pip-run-bootstrap))))) |
| 12980 | |
| 12981 | (define-public python-tlsh |
| 12982 | (package |
| 12983 | (name "python-tlsh") |
| 12984 | (version "4.11.2") |
| 12985 | (home-page "https://github.com/trendmicro/tlsh") |
| 12986 | (source |
| 12987 | (origin |
| 12988 | (method git-fetch) |
| 12989 | (uri (git-reference (url home-page) (commit version))) |
| 12990 | (file-name (git-file-name name version)) |
| 12991 | (sha256 |
| 12992 | (base32 "1gb5j73nw3nmx030rf8pm75rns5syxhv44zxr6i74kjicyly1i9w")))) |
| 12993 | (build-system cmake-build-system) |
| 12994 | (arguments |
| 12995 | (list #:out-of-source? #f |
| 12996 | #:phases |
| 12997 | #~(modify-phases %standard-phases |
| 12998 | (replace 'install |
| 12999 | (lambda _ |
| 13000 | ;; Build and install the Python bindings. The underlying |
| 13001 | ;; C++ library is apparently not meant to be installed. |
| 13002 | (with-directory-excursion "py_ext" |
| 13003 | (and (system* "python" "setup.py" "build") |
| 13004 | (system* "python" "setup.py" "install" |
| 13005 | (string-append "--prefix=" #$output)))))) |
| 13006 | ;; Delay tests until the phase above has run. |
| 13007 | (delete 'check) |
| 13008 | (add-after 'install 'check |
| 13009 | (lambda* (#:key tests? #:allow-other-keys) |
| 13010 | (substitute* "Testing/python_test.sh" |
| 13011 | ;; The script sets up a working PYTHONPATH, but does not |
| 13012 | ;; export it for all subsequent test commands. Fix that. |
| 13013 | (("^PYTHONPATH=\".*" all) |
| 13014 | (string-append all "\nexport PYTHONPATH\n"))) |
| 13015 | (when tests? |
| 13016 | (with-directory-excursion "Testing" |
| 13017 | (invoke "./python_test.sh")))))))) |
| 13018 | (inputs (list python-wrapper)) ;for the bindings |
| 13019 | (synopsis "Fuzzy matching library for Python") |
| 13020 | (description |
| 13021 | "Trend Micro Locality Sensitive Hash (TLSH) is a fuzzy matching library. |
| 13022 | Given a byte stream with a minimum length of 256 bytes, TLSH generates a hash |
| 13023 | value which can be used for similarity comparisons. Similar objects have |
| 13024 | similar hash values, which allows for the detection of similar objects by |
| 13025 | comparing their hash values. The byte stream should have a sufficient amount |
| 13026 | of complexity; for example, a byte stream of identical bytes will not generate |
| 13027 | a hash value.") |
| 13028 | (license license:asl2.0))) |
| 13029 | |
| 13030 | (define-public python-termcolor |
| 13031 | (package |
| 13032 | (name "python-termcolor") |
| 13033 | (version "1.1.0") |
| 13034 | (source |
| 13035 | (origin |
| 13036 | (method url-fetch) |
| 13037 | (uri (pypi-uri "termcolor" version)) |
| 13038 | (sha256 |
| 13039 | (base32 |
| 13040 | "0fv1vq14rpqwgazxg4981904lfyp84mnammw7y046491cv76jv8x")))) |
| 13041 | (build-system python-build-system) |
| 13042 | (arguments |
| 13043 | ;; There are no tests. |
| 13044 | `(#:tests? #f)) |
| 13045 | (home-page "https://pypi.org/project/termcolor/") |
| 13046 | (synopsis "ANSII Color formatting for terminal output") |
| 13047 | (description |
| 13048 | "This package provides ANSII Color formatting for output in terminals.") |
| 13049 | (license license:expat))) |
| 13050 | |
| 13051 | (define-public python-terminaltables |
| 13052 | (package |
| 13053 | (name "python-terminaltables") |
| 13054 | (version "3.1.0") |
| 13055 | (source |
| 13056 | (origin |
| 13057 | (method url-fetch) |
| 13058 | (uri (pypi-uri "terminaltables" version)) |
| 13059 | (sha256 |
| 13060 | (base32 |
| 13061 | "109vhldk6nv1z3hzp4dyqf6rjvlhl0y2k5k7qcm9fcrq5swhxszk")))) |
| 13062 | (build-system python-build-system) |
| 13063 | (home-page "https://github.com/Robpol86/terminaltables") |
| 13064 | (synopsis |
| 13065 | "Generate simple tables in terminals from a nested list of strings") |
| 13066 | (description |
| 13067 | "This package makes it easy to draw tables in terminal/console |
| 13068 | applications from a list of lists of strings. It supports multi-line rows.") |
| 13069 | (license license:expat))) |
| 13070 | |
| 13071 | (define-public python-libarchive-c |
| 13072 | (package |
| 13073 | (name "python-libarchive-c") |
| 13074 | (version "2.9") |
| 13075 | (source (origin |
| 13076 | (method url-fetch) |
| 13077 | (uri (pypi-uri "libarchive-c" version)) |
| 13078 | (sha256 |
| 13079 | (base32 |
| 13080 | "0q7g6a97110bk0j5x81555kajyxh4sybaabab6v5sgr0xi6386cr")))) |
| 13081 | (build-system python-build-system) |
| 13082 | (arguments |
| 13083 | '(#:phases (modify-phases %standard-phases |
| 13084 | (add-before |
| 13085 | 'build 'reference-libarchive |
| 13086 | (lambda* (#:key inputs #:allow-other-keys) |
| 13087 | ;; Retain the absolute file name of libarchive.so. |
| 13088 | (let ((libarchive (assoc-ref inputs "libarchive"))) |
| 13089 | (substitute* "libarchive/ffi.py" |
| 13090 | (("find_library\\('archive'\\)") |
| 13091 | (string-append "'" libarchive |
| 13092 | "/lib/libarchive.so'")))))) |
| 13093 | (replace 'check |
| 13094 | (lambda _ (invoke "pytest" "-vv")))))) |
| 13095 | (native-inputs |
| 13096 | (list python-mock python-pytest)) |
| 13097 | (inputs |
| 13098 | (list libarchive)) |
| 13099 | (home-page "https://github.com/Changaco/python-libarchive-c") |
| 13100 | (synopsis "Python interface to libarchive") |
| 13101 | (description |
| 13102 | "This package provides Python bindings to libarchive, a C library to |
| 13103 | access possibly compressed archives in many different formats. It uses |
| 13104 | Python's @code{ctypes} foreign function interface (FFI).") |
| 13105 | (license license:lgpl2.0+))) |
| 13106 | |
| 13107 | (define-public python-file |
| 13108 | (package/inherit file |
| 13109 | (name "python-file") |
| 13110 | (build-system python-build-system) |
| 13111 | (arguments |
| 13112 | '(#:tests? #f ;no tests |
| 13113 | #:configure-flags '("--single-version-externally-managed" "--root=/") |
| 13114 | #:phases (modify-phases %standard-phases |
| 13115 | (add-before 'build 'change-directory |
| 13116 | (lambda _ |
| 13117 | (chdir "python") |
| 13118 | #t)) |
| 13119 | (add-before 'build 'set-library-file-name |
| 13120 | (lambda* (#:key inputs #:allow-other-keys) |
| 13121 | (let ((file (assoc-ref inputs "file"))) |
| 13122 | (substitute* "magic.py" |
| 13123 | (("find_library\\('magic'\\)") |
| 13124 | (string-append "'" file "/lib/libmagic.so'"))) |
| 13125 | #t)))))) |
| 13126 | (inputs `(("file" ,file))) |
| 13127 | (native-inputs (if (%current-target-system) |
| 13128 | `(("self" ,this-package)) |
| 13129 | '())) |
| 13130 | (synopsis "Python bindings to the libmagic file type guesser") |
| 13131 | (description "This package provides Python bindings to the libmagic file |
| 13132 | type guesser. |
| 13133 | |
| 13134 | Note that this module and the @code{python-magic} module both provide a |
| 13135 | @file{magic.py} file; these two modules, which are different and were |
| 13136 | developed separately, both serve the same purpose: provide Python bindings for |
| 13137 | libmagic."))) |
| 13138 | |
| 13139 | (define-public python-pydevd |
| 13140 | ;; Use the latest commit, which includes cleanups that removes Python 2 |
| 13141 | ;; syntax that would fail to build. |
| 13142 | (let ((revision "0") |
| 13143 | (commit "47e298499ef19563bb2ef5941a57046a35ae6868")) |
| 13144 | (package |
| 13145 | (name "python-pydevd") |
| 13146 | (version (git-version "2.8.0" revision commit)) |
| 13147 | (source |
| 13148 | (origin |
| 13149 | (method git-fetch) |
| 13150 | (uri (git-reference |
| 13151 | (url "https://github.com/fabioz/PyDev.Debugger") |
| 13152 | (commit commit))) |
| 13153 | (modules '((guix build utils))) |
| 13154 | (snippet '(begin |
| 13155 | ;; Delete pre-built binaries. |
| 13156 | (for-each delete-file (find-files "." "\\.(so|dylib|dll)")) |
| 13157 | ;; This source is generated via Cython. |
| 13158 | (delete-file "_pydevd_bundle/pydevd_cython.c"))) |
| 13159 | (file-name (git-file-name name version)) |
| 13160 | (sha256 |
| 13161 | (base32 |
| 13162 | "1yd017dh6xgxrqcyf8kk8jrr0a3zw895yfjih0z5jghyf0rck38q")))) |
| 13163 | (build-system python-build-system) |
| 13164 | (arguments |
| 13165 | (list |
| 13166 | #:phases |
| 13167 | #~(modify-phases %standard-phases |
| 13168 | (add-after 'unpack 'fix-tests |
| 13169 | (lambda _ |
| 13170 | (substitute* "tests_python/test_convert_utilities.py" |
| 13171 | ;; Add missing trailing '/'. |
| 13172 | (("'\\\\\\\\usr\\\\\\\\bin\\\\\\\\') == '/usr/bin" all) |
| 13173 | (string-append all "/"))))) |
| 13174 | (add-after 'unpack 'patch-command-paths |
| 13175 | (lambda* (#:key inputs #:allow-other-keys) |
| 13176 | (substitute* "_pydevd_bundle/pydevd_api.py" |
| 13177 | (("'kill'") |
| 13178 | (format #f "~s" (search-input-file inputs "bin/kill"))) |
| 13179 | (("'pgrep'") |
| 13180 | (format #f "~s" (search-input-file inputs "bin/pgrep")))))) |
| 13181 | (add-after 'unpack 'generate-sources |
| 13182 | (lambda _ |
| 13183 | (setenv "PYTHONPATH" (getcwd)) |
| 13184 | (invoke "python" "build_tools/build.py"))) |
| 13185 | (add-after 'unpack 'adjust-attach-binary-name |
| 13186 | (lambda _ |
| 13187 | (substitute* |
| 13188 | '("pydevd_tracing.py" |
| 13189 | "pydevd_attach_to_process/add_code_to_python_process.py") |
| 13190 | (("def get_(target|python_helper_lib)_filename.*" all) |
| 13191 | (format #f "~a return ~s~%" all |
| 13192 | (string-append #$output "/lib/attach.so")))))) |
| 13193 | (add-after 'unpack 'patch-gdb |
| 13194 | (lambda* (#:key inputs #:allow-other-keys) |
| 13195 | (substitute* |
| 13196 | "pydevd_attach_to_process/add_code_to_python_process.py" |
| 13197 | (("'gdb',") |
| 13198 | (format #f "~s," (search-input-file inputs "bin/gdb")))))) |
| 13199 | (add-after 'build 'build-attach-linux-binary |
| 13200 | (lambda _ |
| 13201 | (invoke #+(cxx-for-target) "-shared" "-o" "attach.so" |
| 13202 | "-fPIC" "-nostartfiles" |
| 13203 | "pydevd_attach_to_process/linux_and_mac/attach.cpp"))) |
| 13204 | (replace 'check |
| 13205 | (lambda* (#:key tests? #:allow-other-keys) |
| 13206 | (when tests? |
| 13207 | (setenv "PYDEVD_USE_CYTHON" "YES") |
| 13208 | (invoke "pytest" "-vv" |
| 13209 | "-n" (number->string (parallel-job-count)) |
| 13210 | "-k" |
| 13211 | (string-append |
| 13212 | ;; the GUI event loop requires an X server. |
| 13213 | "not test_gui_event_loop_custom " |
| 13214 | ;; This test validates that 'pydevd' is not in the |
| 13215 | ;; exception message, but it is due to being part |
| 13216 | ;; of the build file name present in the message. |
| 13217 | "and not test_evaluate_exception_trace " |
| 13218 | ;; These fail on systems with YAMA LSM’s ptrace |
| 13219 | ;; scope > 0. Upstream issue: |
| 13220 | ;; https://github.com/fabioz/PyDev.Debugger/issues/218 |
| 13221 | "and not test_attach_to_pid"))))) |
| 13222 | (add-after 'install 'install-attach-binary |
| 13223 | (lambda _ |
| 13224 | (install-file "attach.so" |
| 13225 | (string-append #$output "/lib")))) |
| 13226 | ;; Some modules aren't designed to be loadable by themselves, such |
| 13227 | ;; as 'pydev_app_engine_debug_startup' and fail. |
| 13228 | (delete 'sanity-check)))) |
| 13229 | (native-inputs |
| 13230 | (list python-cython |
| 13231 | python-numpy |
| 13232 | python-psutil |
| 13233 | python-pytest |
| 13234 | python-pytest-xdist |
| 13235 | python-trio |
| 13236 | python-untangle)) |
| 13237 | (inputs (list coreutils gdb procps)) |
| 13238 | (home-page "https://github.com/fabioz/PyDev.Debugger/") |
| 13239 | (synopsis "Python debugger") |
| 13240 | (description "PyDev.Debugger is a capable Python debugger used in PyDev |
| 13241 | and other @acronym{IDEs, Integrated Development Environments}.") |
| 13242 | (license license:epl1.0)))) |
| 13243 | |
| 13244 | (define-public python-debugpy |
| 13245 | (package |
| 13246 | (name "python-debugpy") |
| 13247 | (version "1.6.0") |
| 13248 | (source |
| 13249 | (origin |
| 13250 | (method git-fetch) |
| 13251 | (uri (git-reference ;no tests in PyPI archive |
| 13252 | (url "https://github.com/microsoft/debugpy") |
| 13253 | (commit (string-append "v" version)))) |
| 13254 | (file-name (git-file-name name version)) |
| 13255 | (modules '((guix build utils))) |
| 13256 | ;; Remove the bundled PyDev-Debugger copy, including its pre-built |
| 13257 | ;; attach binary. |
| 13258 | (snippet '(delete-file-recursively "src/debugpy/_vendored")) |
| 13259 | (patches (search-patches "python-debugpy-unbundle-pydevd.patch")) |
| 13260 | (sha256 |
| 13261 | (base32 |
| 13262 | "1dpfzs3p51648i7f3fz8dw5d0vrj39iwn1jhn0226idc02ybyqih")))) |
| 13263 | (build-system python-build-system) |
| 13264 | (arguments |
| 13265 | (list |
| 13266 | #:tests? #f ; Fail on systems with YAMA LSM’s ptrace scope > 0. |
| 13267 | #:phases |
| 13268 | #~(modify-phases %standard-phases |
| 13269 | (add-after 'unpack 'patch-sh-in-tests |
| 13270 | (lambda _ |
| 13271 | (substitute* "tests/debugpy/test_run.py" |
| 13272 | (("#!/bin/sh") |
| 13273 | (string-append "#!" (which "sh")))))) |
| 13274 | (add-after 'unpack 'fix-version |
| 13275 | ;; Versioneer is useless when there is no git metadata. |
| 13276 | (lambda _ |
| 13277 | (substitute* "setup.py" |
| 13278 | (("version=versioneer.get_version\\(),") |
| 13279 | (format #f "version=~s," #$version))))) |
| 13280 | (add-before 'build 'configure |
| 13281 | (lambda _ |
| 13282 | ;; This adjusts the behavior of debugpy to load pydevd from |
| 13283 | ;; Python site packages. |
| 13284 | (setenv "DEBUGPY_BUNDLING_DISABLED" "1"))) |
| 13285 | (replace 'check |
| 13286 | (lambda* (#:key tests? #:allow-other-keys) |
| 13287 | (when tests? |
| 13288 | (invoke "pytest" "-vv" |
| 13289 | "-n" (number->string (parallel-job-count)) |
| 13290 | "-k" |
| 13291 | (string-append |
| 13292 | ;; These tests cannot be run in parallel because their |
| 13293 | ;; test data would not be copied by xdist and lead to |
| 13294 | ;; import errors. (see: |
| 13295 | ;; https://github.com/microsoft/debugpy/issues/342 and |
| 13296 | ;; https://github.com/microsoft/debugpy/issues/880). |
| 13297 | "not test_custom_python_args " |
| 13298 | "and not test_autokill ")))))))) |
| 13299 | (native-inputs |
| 13300 | ;; See: https://raw.githubusercontent.com/microsoft/debugpy/ |
| 13301 | ;; main/tests/requirements.txt. |
| 13302 | (list python-django |
| 13303 | python-gevent |
| 13304 | python-flask |
| 13305 | python-psutil |
| 13306 | python-pytest |
| 13307 | python-pytest-cov |
| 13308 | python-pytest-timeout |
| 13309 | python-pytest-xdist |
| 13310 | python-requests)) |
| 13311 | (propagated-inputs (list python-pydevd)) |
| 13312 | (home-page "https://aka.ms/debugpy") |
| 13313 | (synopsis "Debug Adapter Protocol Python implementation") |
| 13314 | (description "An implementation of the Debug Adapter Protocol for |
| 13315 | Python.") |
| 13316 | (license license:expat))) |
| 13317 | |
| 13318 | (define-public python-debian |
| 13319 | (package |
| 13320 | (name "python-debian") |
| 13321 | (home-page "https://salsa.debian.org/python-debian-team/python-debian") |
| 13322 | (version "0.1.36") |
| 13323 | (source |
| 13324 | (origin |
| 13325 | ;; Use git-fetch, as pypi doesn't include test suite. |
| 13326 | (method git-fetch) |
| 13327 | (uri (git-reference |
| 13328 | (url home-page) |
| 13329 | (commit version))) |
| 13330 | (file-name (git-file-name name version)) |
| 13331 | (sha256 |
| 13332 | (base32 |
| 13333 | "0qy6x28bj6yfikhjww932v5xq4mf5bm1iczl7acy4c7zm6mwhqfa")))) |
| 13334 | (build-system python-build-system) |
| 13335 | (arguments |
| 13336 | `(#:phases (modify-phases %standard-phases |
| 13337 | (add-after 'unpack 'set-version |
| 13338 | ;; for reproducible builds, otherwise python-debian |
| 13339 | ;; generates a _version.py including the date |
| 13340 | (lambda _ |
| 13341 | (copy-file "lib/debian/_version.py.in" "lib/debian/_version.py") |
| 13342 | (substitute* "lib/debian/_version.py" |
| 13343 | (("__CHANGELOG_VERSION__") ,version)))) |
| 13344 | (add-after 'unpack 'remove-debian-specific-tests |
| 13345 | ;; python-apt, apt and dpkg are not yet available in guix, |
| 13346 | ;; and these tests heavily depend on them. |
| 13347 | (lambda _ |
| 13348 | (delete-file "lib/debian/tests/test_deb822.py") |
| 13349 | (delete-file "lib/debian/tests/test_debfile.py") |
| 13350 | #t))))) |
| 13351 | (propagated-inputs |
| 13352 | (list python-six python-chardet)) |
| 13353 | (synopsis "Debian package related modules") |
| 13354 | (description |
| 13355 | ;; XXX: Use @enumerate instead of @itemize to work around |
| 13356 | ;; <http://bugs.gnu.org/21772>. |
| 13357 | "This package provides Python modules that abstract many formats of |
| 13358 | Debian-related files, such as: |
| 13359 | |
| 13360 | @enumerate |
| 13361 | @item Debtags information; |
| 13362 | @item @file{debian/changelog} files; |
| 13363 | @item packages files, pdiffs; |
| 13364 | @item control files of single or multiple RFC822-style paragraphs---e.g. |
| 13365 | @file{debian/control}, @file{.changes}, @file{.dsc}; |
| 13366 | @item Raw @file{.deb} and @file{.ar} files, with (read-only) access to |
| 13367 | contained files and meta-information. |
| 13368 | @end enumerate\n") |
| 13369 | |
| 13370 | ;; Modules are either GPLv2+ or GPLv3+. |
| 13371 | (license license:gpl3+))) |
| 13372 | |
| 13373 | (define-public python-json-spec |
| 13374 | (package |
| 13375 | (name "python-json-spec") |
| 13376 | (version "0.10.1") |
| 13377 | (source |
| 13378 | (origin |
| 13379 | (method url-fetch) |
| 13380 | (uri (pypi-uri "json-spec" version)) |
| 13381 | (sha256 |
| 13382 | (base32 |
| 13383 | "06dpbsq61ja9r89wpa2pzdii47qh3xri9ajdrgn1awfl102znchb")))) |
| 13384 | (build-system python-build-system) |
| 13385 | (propagated-inputs |
| 13386 | (list python-pathlib python-six)) |
| 13387 | (native-inputs |
| 13388 | (list python-pytest)) |
| 13389 | (home-page "http://py.errorist.io/json-spec") |
| 13390 | (synopsis |
| 13391 | "JSON Schema, JSON Pointer and JSON Reference for Python") |
| 13392 | (description |
| 13393 | "This Python library implements several JSON specs, like JSON Schema, |
| 13394 | JSON Reference and JSON Pointer.") |
| 13395 | (license license:bsd-3))) |
| 13396 | |
| 13397 | (define-public python-fastbencode |
| 13398 | (package |
| 13399 | (name "python-fastbencode") |
| 13400 | (version "0.0.7") |
| 13401 | (source |
| 13402 | (origin |
| 13403 | (method url-fetch) |
| 13404 | (uri (pypi-uri "fastbencode" version)) |
| 13405 | (modules '((guix build utils))) |
| 13406 | ;; Delete pre-generated Cython C files. |
| 13407 | (snippet '(for-each delete-file (find-files "." "\\.c$"))) |
| 13408 | (sha256 |
| 13409 | (base32 "1r66w3vpmvfmssshjpgqaj2m14c8p94nymr96mwn61idajz9mg5n")))) |
| 13410 | (build-system python-build-system) |
| 13411 | (native-inputs (list python-cython)) |
| 13412 | (home-page "https://github.com/breezy-team/fastbencode") |
| 13413 | (synopsis "Python Bencode (de)serializer with optional fast C extensions") |
| 13414 | (description |
| 13415 | "The fastbencode Python package implements the bencode serialization |
| 13416 | format for storing and transmitting loosely structured data, originally used |
| 13417 | by BitTorrent. |
| 13418 | |
| 13419 | The format can encode four different types of values: byte strings, integers, |
| 13420 | lists, and dictionaries (associative arrays). It's simple and unaffected by |
| 13421 | endianness, |
| 13422 | |
| 13423 | This package includes both a pure-Python version and an optional C extension |
| 13424 | based on Cython. Both provide the same functionality, but the C version has |
| 13425 | significantly better performance.") |
| 13426 | (license (list license:expat ; _bencode_py.py |
| 13427 | license:gpl2+)))) ; __init__.py |
| 13428 | |
| 13429 | (define-public python-fastjsonschema |
| 13430 | (package |
| 13431 | (name "python-fastjsonschema") |
| 13432 | (version "2.15.1") |
| 13433 | (source |
| 13434 | (origin |
| 13435 | (method url-fetch) |
| 13436 | (uri (pypi-uri "fastjsonschema" version)) |
| 13437 | (sha256 |
| 13438 | (base32 "1ln2j60jzyn6p8i8ljygfgrji58hc23452g7nllkcjdk4p93c7v7")))) |
| 13439 | (build-system python-build-system) |
| 13440 | (arguments |
| 13441 | `(#:tests? #f ; Fail with a strange backtrace ending in importlib. |
| 13442 | #:phases |
| 13443 | (modify-phases %standard-phases |
| 13444 | (replace 'check |
| 13445 | (lambda* (#:key inputs outputs tests? #:allow-other-keys) |
| 13446 | (when tests? |
| 13447 | (invoke "pytest" "-vv" "-m" "not benchmark"))))))) |
| 13448 | (native-inputs |
| 13449 | (list python-colorama |
| 13450 | python-json-spec |
| 13451 | python-jsonschema |
| 13452 | python-pylint |
| 13453 | python-pytest |
| 13454 | python-pytest-benchmark |
| 13455 | python-pytest-cache |
| 13456 | python-validictory)) |
| 13457 | (home-page |
| 13458 | "https://github.com/horejsek/python-fastjsonschema") |
| 13459 | (synopsis |
| 13460 | "Fast Python implementation of JSON schema") |
| 13461 | (description |
| 13462 | "This library implements validation of JSON documents by JSON schema for |
| 13463 | drafts 04, 06 and 07.") |
| 13464 | (license license:bsd-3))) |
| 13465 | |
| 13466 | (define-public python-nbformat |
| 13467 | (package |
| 13468 | (name "python-nbformat") |
| 13469 | (version "5.3.0") |
| 13470 | ;; The PyPi release tarball lacks some test cases and test data. |
| 13471 | (source (origin |
| 13472 | (method git-fetch) |
| 13473 | (uri (git-reference |
| 13474 | (url "https://github.com/jupyter/nbformat") |
| 13475 | (commit version))) |
| 13476 | (sha256 |
| 13477 | (base32 |
| 13478 | "114c5c6cvpxhxj8zrw74351gcfzyzjh1jq3py4xf8wk9rahfay9z")) |
| 13479 | (file-name (git-file-name name version)))) |
| 13480 | (build-system python-build-system) |
| 13481 | (arguments |
| 13482 | `(#:phases |
| 13483 | (modify-phases %standard-phases |
| 13484 | (replace 'check |
| 13485 | (lambda* (#:key inputs outputs tests? #:allow-other-keys) |
| 13486 | (when tests? |
| 13487 | (invoke "pytest" "-vv"))))))) |
| 13488 | (propagated-inputs |
| 13489 | (list python-fastjsonschema python-jsonschema python-jupyter-core |
| 13490 | python-traitlets)) |
| 13491 | (native-inputs |
| 13492 | (list python-pytest |
| 13493 | python-testpath)) |
| 13494 | (home-page "https://jupyter.org") |
| 13495 | (synopsis "Jupyter Notebook format") |
| 13496 | (description "This package provides the reference implementation of the |
| 13497 | Jupyter Notebook format and Python APIs for working with notebooks.") |
| 13498 | (license license:bsd-3))) |
| 13499 | |
| 13500 | (define-public python-nb-clean |
| 13501 | (package |
| 13502 | (name "python-nb-clean") |
| 13503 | (version "2.1.0") |
| 13504 | (source |
| 13505 | (origin |
| 13506 | (method url-fetch) |
| 13507 | (uri (pypi-uri "nb-clean" version)) |
| 13508 | (sha256 |
| 13509 | (base32 "01qvk9n7rx15dhc23m8bj9bw5wdyxh6y18c5fm8hllmrd3ndsx14")))) |
| 13510 | (build-system python-build-system) |
| 13511 | (propagated-inputs (list python-nbformat)) |
| 13512 | (home-page "https://github.com/srstevenson/nb-clean") |
| 13513 | (synopsis "Clean Jupyter notebooks for versioning") |
| 13514 | (description "This package cleans Jupyter notebooks of cell execution |
| 13515 | counts, metadata, outputs, and empty cells, preparing them for committing to |
| 13516 | version control. It provides a Git filter to automatically clean notebooks |
| 13517 | before they're staged, and can also be used with other version control |
| 13518 | systems, as a command line tool, and as a Python library.") |
| 13519 | (license license:isc))) |
| 13520 | |
| 13521 | (define-public python-bleach |
| 13522 | (package |
| 13523 | (name "python-bleach") |
| 13524 | (version "5.0.0") |
| 13525 | (source |
| 13526 | (origin |
| 13527 | (method url-fetch) |
| 13528 | (uri (pypi-uri "bleach" version)) |
| 13529 | (sha256 |
| 13530 | (base32 "0rc5avysbsl3w3i2qvb6522263zhwlvf50w0ifs8776w9c2wrmn6")))) |
| 13531 | (build-system python-build-system) |
| 13532 | (arguments |
| 13533 | '(#:phases (modify-phases %standard-phases |
| 13534 | (replace 'check |
| 13535 | (lambda* (#:key tests? #:allow-other-keys) |
| 13536 | (when tests? (invoke "pytest" "-vv"))))))) |
| 13537 | (propagated-inputs (list python-tinycss2 python-webencodings)) |
| 13538 | (native-inputs (list python-pytest)) |
| 13539 | (home-page "https://github.com/mozilla/bleach") |
| 13540 | (synopsis "Whitelist-based HTML-sanitizing tool") |
| 13541 | (description "Bleach is an easy whitelist-based HTML-sanitizing tool.") |
| 13542 | (license license:asl2.0))) |
| 13543 | |
| 13544 | (define-public python-entrypoints |
| 13545 | (package |
| 13546 | (name "python-entrypoints") |
| 13547 | (version "0.3") |
| 13548 | (source |
| 13549 | (origin |
| 13550 | (method url-fetch) |
| 13551 | (uri (pypi-uri "entrypoints" version)) |
| 13552 | (sha256 |
| 13553 | (base32 |
| 13554 | "0lc4si3xb7hza424414rdqdc3vng3kcrph8jbvjqb32spqddf3f7")))) |
| 13555 | (build-system python-build-system) |
| 13556 | ;; The package does not come with a setup.py file, so we have to generate |
| 13557 | ;; one ourselves. |
| 13558 | (arguments |
| 13559 | `(#:tests? #f |
| 13560 | #:phases |
| 13561 | (modify-phases %standard-phases |
| 13562 | (add-after 'unpack 'create-setup.py |
| 13563 | (lambda _ |
| 13564 | (call-with-output-file "setup.py" |
| 13565 | (lambda (port) |
| 13566 | (format port "\ |
| 13567 | from setuptools import setup |
| 13568 | setup(name='entrypoints', version='~a', py_modules=['entrypoints']) |
| 13569 | " ,version)))))))) |
| 13570 | (home-page "https://github.com/takluyver/entrypoints") |
| 13571 | (synopsis "Discover and load entry points from installed Python packages") |
| 13572 | (description "Entry points are a way for Python packages to advertise |
| 13573 | objects with some common interface. The most common examples are |
| 13574 | @code{console_scripts} entry points, which define shell commands by |
| 13575 | identifying a Python function to run. The @code{entrypoints} module contains |
| 13576 | functions to find and load entry points.") |
| 13577 | (license license:expat))) |
| 13578 | |
| 13579 | (define-public python-epc |
| 13580 | (package |
| 13581 | (name "python-epc") |
| 13582 | (version "0.0.5") |
| 13583 | (source |
| 13584 | (origin |
| 13585 | (method url-fetch) |
| 13586 | (uri (pypi-uri "epc" version)) |
| 13587 | (sha256 |
| 13588 | (base32 |
| 13589 | "09bx1ln1bwa00917dndlgs4k589h8qx2x080xch5m58p92kjwkd1")))) |
| 13590 | (build-system python-build-system) |
| 13591 | (propagated-inputs |
| 13592 | (list python-sexpdata)) |
| 13593 | (native-inputs |
| 13594 | (list python-nose)) |
| 13595 | (home-page "https://github.com/tkf/python-epc") |
| 13596 | (synopsis "Remote procedure call (RPC) stack for Emacs Lisp and Python") |
| 13597 | (description |
| 13598 | "Python-EPC can call elisp functions from Python and Python functions |
| 13599 | from elisp.") |
| 13600 | (license license:gpl3))) |
| 13601 | |
| 13602 | (define-public python-forex-python |
| 13603 | (package |
| 13604 | (name "python-forex-python") |
| 13605 | (version "1.5") |
| 13606 | (source |
| 13607 | (origin |
| 13608 | (method url-fetch) |
| 13609 | (uri (pypi-uri "forex-python" version)) |
| 13610 | (sha256 |
| 13611 | (base32 "1ma8cl1i2dh8aa99pifnlilyy4d1gd1s07fj0yd17wcbpsh532cj")))) |
| 13612 | (build-system python-build-system) |
| 13613 | (arguments |
| 13614 | ;; Tests are not included in the PyPI tarball. Also, the tests in the |
| 13615 | ;; repository require online data. |
| 13616 | `(#:tests? #f)) |
| 13617 | (propagated-inputs |
| 13618 | (list python-requests python-simplejson)) |
| 13619 | (home-page "https://github.com/MicroPyramid/forex-python") |
| 13620 | (synopsis "Foreign exchange rates and currency conversion") |
| 13621 | (description |
| 13622 | "@code{python-forex-python} can be used to manipulate foreign |
| 13623 | exchange rates and to operate currency conversions. |
| 13624 | |
| 13625 | Features: |
| 13626 | @itemize |
| 13627 | @item List all currency rates. |
| 13628 | @item BitCoin price for all currencies. |
| 13629 | @item Converting amount to BitCoins. |
| 13630 | @item Get historical rates for any day since 1999. |
| 13631 | @item Conversion rate for one currency(ex; USD to INR). |
| 13632 | @item Convert amount from one currency to other.('USD 10$' to INR). |
| 13633 | @item Currency symbols. |
| 13634 | @item Currency names. |
| 13635 | @end itemize") |
| 13636 | (license license:expat))) |
| 13637 | |
| 13638 | (define-public python-simpleeval |
| 13639 | (package |
| 13640 | (name "python-simpleeval") |
| 13641 | (version "0.9.12") |
| 13642 | (source |
| 13643 | (origin |
| 13644 | (method url-fetch) |
| 13645 | (uri (pypi-uri "simpleeval" version)) |
| 13646 | (sha256 |
| 13647 | (base32 "0diysdzvx865yy2rjfah75ha2qfxaxz7r108kp7j2kkd903ya2ry")))) |
| 13648 | (build-system python-build-system) |
| 13649 | (home-page "https://github.com/danthedeckie/simpleeval") |
| 13650 | (synopsis "Simple, safe single expression evaluator library") |
| 13651 | (description |
| 13652 | "This package provides a quick single file library for easily adding |
| 13653 | evaluatable expressions into python projects. Say you want to allow a user |
| 13654 | to set an alarm volume, which could depend on the time of day, alarm level, |
| 13655 | how many previous alarms had gone off, and if there is music playing at the |
| 13656 | time.") |
| 13657 | (license license:expat))) |
| 13658 | |
| 13659 | (define-public python-nbconvert |
| 13660 | (package |
| 13661 | (name "python-nbconvert") |
| 13662 | (version "6.5.0") |
| 13663 | (source |
| 13664 | (origin |
| 13665 | (method url-fetch) |
| 13666 | (uri (pypi-uri "nbconvert" version)) |
| 13667 | (sha256 |
| 13668 | (base32 |
| 13669 | "17g9xq4za7vvzml6l6d8zrzknhxsvgx02hymmsw9d1dygbi4cgi2")))) |
| 13670 | (build-system python-build-system) |
| 13671 | (arguments |
| 13672 | (list |
| 13673 | #:phases |
| 13674 | #~(modify-phases %standard-phases |
| 13675 | (add-after 'unpack 'fix-paths |
| 13676 | (lambda* (#:key inputs #:allow-other-keys) |
| 13677 | ;; Use pandoc binary from input. |
| 13678 | (substitute* "nbconvert/utils/pandoc.py" |
| 13679 | (("'pandoc'") |
| 13680 | (format #f "~s" (search-input-file inputs "bin/pandoc")))) |
| 13681 | ;; Same for LaTeX. |
| 13682 | (substitute* "nbconvert/exporters/pdf.py" |
| 13683 | (("\"xelatex\"") |
| 13684 | (format #f "~s" (search-input-file inputs "bin/xelatex"))) |
| 13685 | (("\"bibtex\"") |
| 13686 | (format #f "~s" (search-input-file inputs "bin/bibtex")))) |
| 13687 | ;; Likewise for Inkscape. |
| 13688 | (substitute* "nbconvert/preprocessors/svg2pdf.py" |
| 13689 | (("inkscape_path = which\\(\"inkscape\")") |
| 13690 | (format #f "inkscape_path = ~s" |
| 13691 | (search-input-file inputs "bin/inkscape")))))) |
| 13692 | (replace 'check |
| 13693 | (lambda* (#:key tests? #:allow-other-keys) |
| 13694 | (when tests? |
| 13695 | ;; Tests depend on templates installed to output. |
| 13696 | (setenv "JUPYTER_PATH" |
| 13697 | (string-append #$output "/share/jupyter:" |
| 13698 | (getenv "JUPYTER_PATH"))) |
| 13699 | ;; Step outside of the source directory to avoid having both |
| 13700 | ;; the installed package *and* the package from the source on |
| 13701 | ;; Python's path. |
| 13702 | (with-directory-excursion "/tmp" |
| 13703 | (invoke "pytest" "--pyargs" "nbconvert" |
| 13704 | "-vv" "-n" (number->string (parallel-job-count)) |
| 13705 | "-k" |
| 13706 | (string-append |
| 13707 | ;; These tests require pyppeteer, not yet |
| 13708 | ;; available in Guix. |
| 13709 | "not test_webpdf_with_chromium " |
| 13710 | "and not test_webpdf.py " |
| 13711 | ;; These tests require ipywidgets, which would |
| 13712 | ;; introduce a dependency cycle. |
| 13713 | "and not test_execute_widgets_from_nbconvert " |
| 13714 | "and not test_execute_multiple_notebooks "))))))))) |
| 13715 | (inputs |
| 13716 | (list inkscape/stable pandoc)) |
| 13717 | (native-inputs |
| 13718 | (list python-ipykernel |
| 13719 | ;; Adding ipywidgets would create a cycle. |
| 13720 | ;;python-ipywidgets |
| 13721 | ;;python-pyppeteer ;TODO: package me |
| 13722 | python-pytest |
| 13723 | python-pytest-xdist)) |
| 13724 | (propagated-inputs |
| 13725 | (list python-beautifulsoup4 |
| 13726 | python-bleach |
| 13727 | python-defusedxml |
| 13728 | python-entrypoints |
| 13729 | python-jinja2 |
| 13730 | python-jupyter-core |
| 13731 | python-mistune |
| 13732 | python-nbclient |
| 13733 | python-nbformat |
| 13734 | python-pandocfilters |
| 13735 | python-pygments |
| 13736 | python-jupyterlab-pygments |
| 13737 | python-testpath |
| 13738 | python-traitlets |
| 13739 | ;; Required, even if [serve] is not used. |
| 13740 | python-tornado-6 |
| 13741 | ;; Required at runtime for `jupyter nbconvert --to=pdf`. |
| 13742 | texlive-adjustbox |
| 13743 | texlive-booktabs |
| 13744 | texlive-caption |
| 13745 | texlive-enumitem |
| 13746 | texlive-fontspec |
| 13747 | texlive-generic-iftex |
| 13748 | texlive-grffile |
| 13749 | texlive-hyperref |
| 13750 | texlive-latex-fancyvrb |
| 13751 | texlive-latex-float |
| 13752 | texlive-latex-geometry |
| 13753 | texlive-latex-jknapltx |
| 13754 | texlive-latex-ms |
| 13755 | texlive-latex-parskip |
| 13756 | texlive-latex-trimspaces |
| 13757 | texlive-latex-upquote |
| 13758 | texlive-stringenc |
| 13759 | texlive-tcolorbox |
| 13760 | texlive-titling |
| 13761 | texlive-tools |
| 13762 | texlive-ulem |
| 13763 | texlive-unicode-math |
| 13764 | texlive-xcolor |
| 13765 | (texlive-updmap.cfg (list texlive-amsfonts |
| 13766 | texlive-amsmath |
| 13767 | texlive-eurosym |
| 13768 | texlive-fonts-rsfs |
| 13769 | texlive-jknappen |
| 13770 | texlive-latex-ucs |
| 13771 | texlive-lm |
| 13772 | texlive-lm-math |
| 13773 | texlive-mathpazo |
| 13774 | texlive-oberdiek |
| 13775 | texlive-zapfding)))) |
| 13776 | (home-page "https://jupyter.org") |
| 13777 | (synopsis "Converting Jupyter Notebooks") |
| 13778 | (description "The @code{nbconvert} tool, @code{jupyter nbconvert}, converts |
| 13779 | notebooks to various other formats via Jinja templates. It allows you to |
| 13780 | convert an @code{.ipynb} notebook file into various static formats including: |
| 13781 | |
| 13782 | @enumerate |
| 13783 | @item HTML |
| 13784 | @item LaTeX |
| 13785 | @item PDF |
| 13786 | @item Reveal JS |
| 13787 | @item Markdown (md) |
| 13788 | @item ReStructured Text (rst) |
| 13789 | @item executable script |
| 13790 | @end enumerate\n") |
| 13791 | (license license:bsd-3))) |
| 13792 | |
| 13793 | (define-public python-notebook |
| 13794 | (package |
| 13795 | (name "python-notebook") |
| 13796 | (version "6.4.10") |
| 13797 | (source (origin |
| 13798 | (method url-fetch) |
| 13799 | (uri (pypi-uri "notebook" version)) |
| 13800 | (sha256 |
| 13801 | (base32 |
| 13802 | "03p976xq1l9xf4djwk0snmywd0zck3i6gjngxsl874i8qrmsf214")))) |
| 13803 | (build-system python-build-system) |
| 13804 | (arguments |
| 13805 | `(#:phases |
| 13806 | (modify-phases %standard-phases |
| 13807 | (add-after 'unpack 'use-our-home-for-tests |
| 13808 | (lambda _ |
| 13809 | ;; The 'get_patch_env' function in this file reads: |
| 13810 | ;; 'HOME': cls.home_dir |
| 13811 | ;; but for some reason, that definition of HOME is not what the |
| 13812 | ;; GLib/GIO trash mechanism honors, which would cause test |
| 13813 | ;; failures. Instead, set 'HOME' here to an existing directory |
| 13814 | ;; and let the tests honor it. |
| 13815 | (substitute* "notebook/tests/launchnotebook.py" |
| 13816 | (("'HOME': .*," all) |
| 13817 | (string-append "# " all "\n"))) |
| 13818 | (setenv "HOME" (getcwd)))) |
| 13819 | (replace 'check |
| 13820 | (lambda* (#:key tests? inputs outputs #:allow-other-keys) |
| 13821 | ;; These tests require a browser. |
| 13822 | (delete-file-recursively "notebook/tests/selenium") |
| 13823 | (when tests? |
| 13824 | ;; Interferes with test expectations. |
| 13825 | (unsetenv "JUPYTER_CONFIG_PATH") |
| 13826 | ;; Some tests do not expect all files to be installed in the |
| 13827 | ;; same directory, but JUPYTER_PATH contains multiple entries. |
| 13828 | (unsetenv "JUPYTER_PATH") |
| 13829 | (invoke "pytest" "-vv" |
| 13830 | ;; TODO: This tests fails because nbconvert does not |
| 13831 | ;; list "python" as a format. |
| 13832 | "-k" "not test_list_formats"))))))) |
| 13833 | (propagated-inputs |
| 13834 | (list python-argon2-cffi |
| 13835 | python-ipykernel |
| 13836 | python-ipython-genutils |
| 13837 | python-jinja2 |
| 13838 | python-jupyter-client |
| 13839 | python-jupyter-core |
| 13840 | python-nest-asyncio |
| 13841 | python-nbconvert |
| 13842 | python-nbformat |
| 13843 | python-prometheus-client |
| 13844 | python-pyzmq |
| 13845 | python-send2trash |
| 13846 | python-terminado |
| 13847 | python-tornado-6 |
| 13848 | python-traitlets)) |
| 13849 | (native-inputs |
| 13850 | (list python-coverage |
| 13851 | python-nbval |
| 13852 | python-pytest |
| 13853 | python-pytest-cov |
| 13854 | python-requests |
| 13855 | python-requests-unixsocket)) |
| 13856 | (home-page "https://jupyter.org/") |
| 13857 | (synopsis "Web-based notebook environment for interactive computing") |
| 13858 | (description |
| 13859 | "The Jupyter HTML notebook is a web-based notebook environment for |
| 13860 | interactive computing.") |
| 13861 | (license license:bsd-3))) |
| 13862 | |
| 13863 | (define-public python-widgetsnbextension |
| 13864 | (package |
| 13865 | (name "python-widgetsnbextension") |
| 13866 | (version "3.5.1") |
| 13867 | (source |
| 13868 | (origin |
| 13869 | (method url-fetch) |
| 13870 | (uri (pypi-uri "widgetsnbextension" version)) |
| 13871 | (sha256 |
| 13872 | (base32 |
| 13873 | "1ismyaxbv9d56yqqqb8xl58hg0iq0bbyy014a53y1g3hfbc8g7q7")))) |
| 13874 | (build-system python-build-system) |
| 13875 | (propagated-inputs |
| 13876 | (list python-notebook)) |
| 13877 | (home-page "https://ipython.org") |
| 13878 | (synopsis "IPython HTML widgets for Jupyter") |
| 13879 | (description "This package provides interactive HTML widgets for Jupyter |
| 13880 | notebooks.") |
| 13881 | (license license:bsd-3))) |
| 13882 | |
| 13883 | (define-public python-ipywidgets |
| 13884 | (package |
| 13885 | (name "python-ipywidgets") |
| 13886 | (version "7.6.3") |
| 13887 | (source |
| 13888 | (origin |
| 13889 | (method url-fetch) |
| 13890 | (uri (pypi-uri "ipywidgets" version)) |
| 13891 | (sha256 |
| 13892 | (base32 |
| 13893 | "1w217j8i53x14l7b05fk300k222zs9vkcjaa1rbrw3sk43k466lz")))) |
| 13894 | (build-system python-build-system) |
| 13895 | (propagated-inputs |
| 13896 | (list python-ipykernel |
| 13897 | python-ipython |
| 13898 | python-jupyterlab-widgets |
| 13899 | python-nbformat |
| 13900 | python-traitlets |
| 13901 | python-widgetsnbextension)) |
| 13902 | (native-inputs |
| 13903 | (list python-mock python-pytest python-pytest-cov)) |
| 13904 | (home-page "https://ipython.org") |
| 13905 | (synopsis "IPython HTML widgets for Jupyter") |
| 13906 | (description "Ipywidgets are interactive HTML widgets for Jupyter |
| 13907 | notebooks and the IPython kernel. Notebooks come alive when interactive |
| 13908 | widgets are used. Users gain control of their data and can visualize changes |
| 13909 | in the data.") |
| 13910 | (license license:bsd-3))) |
| 13911 | |
| 13912 | (define-public python-jupyter-console |
| 13913 | (package |
| 13914 | (name "python-jupyter-console") |
| 13915 | (version "6.4.0") |
| 13916 | (source |
| 13917 | (origin |
| 13918 | (method url-fetch) |
| 13919 | (uri (pypi-uri "jupyter_console" version)) |
| 13920 | (sha256 |
| 13921 | (base32 |
| 13922 | "1iqrxhd8hvlyf8cqbc731ssnwm61wrycnbiczy5wsfahd3hlh8i4")))) |
| 13923 | (build-system python-build-system) |
| 13924 | (propagated-inputs |
| 13925 | (list python-ipykernel python-jupyter-client python-prompt-toolkit |
| 13926 | python-pygments)) |
| 13927 | (native-inputs |
| 13928 | (list python-nose python-pytest)) |
| 13929 | (home-page "https://jupyter.org") |
| 13930 | (synopsis "Jupyter terminal console") |
| 13931 | (description "This package provides a terminal-based console frontend for |
| 13932 | Jupyter kernels. It also allows for console-based interaction with non-Python |
| 13933 | Jupyter kernels such as IJulia and IRKernel.") |
| 13934 | (license license:bsd-3))) |
| 13935 | |
| 13936 | ;; The python-ipython and python-jupyter-console require each other. To get |
| 13937 | ;; the functionality in both packages working, strip down the |
| 13938 | ;; python-jupyter-console package when using it as an input to python-ipython. |
| 13939 | (define python-jupyter-console-minimal |
| 13940 | (package/inherit python-jupyter-console |
| 13941 | (name "python-jupyter-console-minimal") |
| 13942 | (arguments |
| 13943 | (substitute-keyword-arguments |
| 13944 | (package-arguments python-jupyter-console) |
| 13945 | ((#:phases phases) |
| 13946 | `(modify-phases ,phases |
| 13947 | (add-after 'install 'delete-bin |
| 13948 | (lambda* (#:key outputs #:allow-other-keys) |
| 13949 | ;; Delete the bin files, to avoid conflicts in profiles |
| 13950 | ;; where python-ipython and python-jupyter-console are |
| 13951 | ;; both present. |
| 13952 | (delete-file-recursively |
| 13953 | (string-append |
| 13954 | (assoc-ref outputs "out") "/bin")))))))) |
| 13955 | ;; Remove the python-ipython propagated input, to avoid the cycle |
| 13956 | (propagated-inputs |
| 13957 | (modify-inputs (package-propagated-inputs python-jupyter-console) |
| 13958 | (delete "python-ipython"))))) |
| 13959 | |
| 13960 | (define-public python-qtconsole |
| 13961 | (package |
| 13962 | (name "python-qtconsole") |
| 13963 | (version "5.3.0") |
| 13964 | (source |
| 13965 | (origin |
| 13966 | (method url-fetch) |
| 13967 | (uri (pypi-uri "qtconsole" version)) |
| 13968 | (sha256 |
| 13969 | (base32 "09anp8g7vqi8z8wyi2lv21a2frd2dyhyrzvcrk2anijyqzyj0dcf")))) |
| 13970 | (build-system python-build-system) |
| 13971 | (arguments |
| 13972 | `(#:phases |
| 13973 | (modify-phases %standard-phases |
| 13974 | (add-before 'check 'pre-check |
| 13975 | (lambda _ |
| 13976 | (setenv "QT_QPA_PLATFORM" "offscreen") |
| 13977 | (setenv "HOME" "/tmp") |
| 13978 | ;; FIXME: skip a failing test. |
| 13979 | (substitute* "qtconsole/tests/test_jupyter_widget.py" |
| 13980 | (("def test_other_output") "def _test_other_output"))))))) |
| 13981 | (propagated-inputs |
| 13982 | (list python-ipykernel python-ipython-genutils python-jupyter-client |
| 13983 | python-jupyter-core python-pygments python-pyqt-without-qtwebkit |
| 13984 | python-pyzmq python-qtpy python-traitlets)) |
| 13985 | (native-inputs |
| 13986 | (list python-flaky python-pytest python-pytest-qt)) |
| 13987 | (home-page "https://jupyter.org") |
| 13988 | (synopsis "Jupyter Qt console") |
| 13989 | (description "This package provides a Qt-based console for Jupyter with |
| 13990 | support for rich media output.") |
| 13991 | (license license:bsd-3))) |
| 13992 | |
| 13993 | (define-public python-jsbeautifier |
| 13994 | (package |
| 13995 | (name "python-jsbeautifier") |
| 13996 | (version "1.10.2") |
| 13997 | (home-page "https://github.com/beautify-web/js-beautify") |
| 13998 | (source (origin |
| 13999 | (method git-fetch) |
| 14000 | (uri (git-reference |
| 14001 | (url home-page) |
| 14002 | (commit (string-append "v" version)))) |
| 14003 | (file-name (git-file-name name version)) |
| 14004 | (sha256 |
| 14005 | (base32 |
| 14006 | "0wawb070ki1axb3jc9xvsrgpji52vcfif3zmjzc3z4g98m5xw4kg")))) |
| 14007 | (build-system python-build-system) |
| 14008 | (arguments |
| 14009 | `(#:phases (modify-phases %standard-phases |
| 14010 | (add-after 'unpack 'chdir |
| 14011 | (lambda _ |
| 14012 | ;; The upstream Git repository contains all the code, |
| 14013 | ;; but this package only builds the python code. |
| 14014 | (chdir "python") |
| 14015 | #t)) |
| 14016 | (add-after 'unpack 'patch-python-six-requirements |
| 14017 | (lambda _ |
| 14018 | (substitute* "python/setup.py" |
| 14019 | (("six>=1.12.0") |
| 14020 | "six>=1.11.0")) |
| 14021 | #t))))) |
| 14022 | (propagated-inputs |
| 14023 | (list python-editorconfig python-six)) |
| 14024 | (native-inputs |
| 14025 | (list python-pytest)) |
| 14026 | (synopsis "JavaScript unobfuscator and beautifier") |
| 14027 | (description "Beautify, unpack or deobfuscate JavaScript, leveraging |
| 14028 | popular online obfuscators.") |
| 14029 | (license license:expat))) |
| 14030 | |
| 14031 | (define-public jupyter |
| 14032 | (package |
| 14033 | (name "jupyter") |
| 14034 | (version "1.0.0") |
| 14035 | (source |
| 14036 | (origin |
| 14037 | (method url-fetch) |
| 14038 | (uri (pypi-uri "jupyter" version)) |
| 14039 | (sha256 |
| 14040 | (base32 |
| 14041 | "0pwf3pminkzyzgx5kcplvvbvwrrzd3baa7lmh96f647k30rlpp6r")))) |
| 14042 | (build-system python-build-system) |
| 14043 | (arguments '(#:tests? #f)) ; there are none. |
| 14044 | (propagated-inputs |
| 14045 | (list python-ipykernel |
| 14046 | python-ipywidgets |
| 14047 | python-jupyter-console |
| 14048 | python-nbconvert |
| 14049 | python-notebook |
| 14050 | python-qtconsole)) |
| 14051 | (home-page "https://jupyter.org") |
| 14052 | (synopsis "Web application for interactive documents") |
| 14053 | (description |
| 14054 | "The Jupyter Notebook is a web application that allows you to create and |
| 14055 | share documents that contain live code, equations, visualizations and |
| 14056 | explanatory text. Uses include: data cleaning and transformation, numerical |
| 14057 | simulation, statistical modeling, machine learning and much more.") |
| 14058 | (license license:bsd-3))) |
| 14059 | |
| 14060 | (define-public python-chardet |
| 14061 | (package |
| 14062 | (name "python-chardet") |
| 14063 | (version "5.0.0") |
| 14064 | (source |
| 14065 | (origin |
| 14066 | (method url-fetch) |
| 14067 | (uri (pypi-uri "chardet" version)) |
| 14068 | (sha256 |
| 14069 | (base32 |
| 14070 | "1amqmz8731ly6f9rkbk09w4jqgmmgyxykd1bawhgrdbqzlmxys03")))) |
| 14071 | (native-inputs |
| 14072 | (list python-pytest)) |
| 14073 | (build-system python-build-system) |
| 14074 | (arguments |
| 14075 | (list #:phases |
| 14076 | #~(modify-phases %standard-phases |
| 14077 | (replace 'check |
| 14078 | (lambda _ |
| 14079 | (invoke "pytest" "-vv" "-k" |
| 14080 | ;; Disable test that fails sporadically: |
| 14081 | ;; https://github.com/chardet/chardet/issues/256 |
| 14082 | "not test_detect_all_and_detect_one_should_agree"))) |
| 14083 | ;; This package provides a 'chardetect' executable that only |
| 14084 | ;; depends on Python, so customize the wrap phase to avoid |
| 14085 | ;; adding pytest and friends in order to save size. |
| 14086 | ;; (See also <https://bugs.gnu.org/25235>.) |
| 14087 | (replace 'wrap |
| 14088 | (lambda* (#:key inputs outputs #:allow-other-keys) |
| 14089 | (let* ((sitedir (site-packages inputs outputs)) |
| 14090 | (python (dirname (dirname |
| 14091 | (search-input-file |
| 14092 | inputs "bin/python")))) |
| 14093 | (python-sitedir |
| 14094 | (string-append python "/lib/python" |
| 14095 | (python-version python) |
| 14096 | "/site-packages"))) |
| 14097 | (wrap-program (string-append #$output "/bin/chardetect") |
| 14098 | `("GUIX_PYTHONPATH" ":" suffix |
| 14099 | ,(list sitedir python-sitedir))))))))) |
| 14100 | (home-page "https://github.com/chardet/chardet") |
| 14101 | (synopsis "Universal encoding detector for Python 2 and 3") |
| 14102 | (description |
| 14103 | "This package provides @code{chardet}, a Python module that can |
| 14104 | automatically detect a wide range of file encodings.") |
| 14105 | (license license:lgpl2.1+))) |
| 14106 | |
| 14107 | (define-public python-charset-normalizer |
| 14108 | (package |
| 14109 | (name "python-charset-normalizer") |
| 14110 | (version "2.1.0") |
| 14111 | (source |
| 14112 | (origin |
| 14113 | (method url-fetch) |
| 14114 | (uri (pypi-uri "charset-normalizer" version)) |
| 14115 | (sha256 |
| 14116 | (base32 "04zlajr77f6c7ai59l46as1idi0jjgbvj72lh4v5wfpz2s070pjp")))) |
| 14117 | (build-system python-build-system) |
| 14118 | (arguments |
| 14119 | (list #:phases |
| 14120 | #~(modify-phases %standard-phases |
| 14121 | ;; This package provides a 'normalizer' executable that only |
| 14122 | ;; depends on Python, so customize the wrap phase to avoid |
| 14123 | ;; adding pytest and friends in order to save size. |
| 14124 | ;; (See also <https://bugs.gnu.org/25235>.) |
| 14125 | (replace 'wrap |
| 14126 | (lambda* (#:key inputs outputs #:allow-other-keys) |
| 14127 | (let* ((sitedir (site-packages inputs outputs)) |
| 14128 | (python (dirname (dirname |
| 14129 | (search-input-file |
| 14130 | inputs "bin/python")))) |
| 14131 | (python-sitedir |
| 14132 | (string-append python "/lib/python" |
| 14133 | (python-version python) |
| 14134 | "/site-packages"))) |
| 14135 | (wrap-program (string-append #$output "/bin/normalizer") |
| 14136 | `("GUIX_PYTHONPATH" ":" suffix |
| 14137 | ,(list sitedir python-sitedir))))))))) |
| 14138 | (native-inputs |
| 14139 | (list python-pytest)) |
| 14140 | (home-page "https://github.com/ousret/charset_normalizer") |
| 14141 | (synopsis "Universal Charset Detector, alternative to Chardet") |
| 14142 | (description "This library helps you read text from an unknown charset |
| 14143 | encoding. Motivated by @code{chardet}, it tries to resolve the issue by |
| 14144 | taking a new approach. All IANA character set names for which the Python core |
| 14145 | library provides codecs are supported.") |
| 14146 | (license license:expat))) |
| 14147 | |
| 14148 | (define-public python-docopt |
| 14149 | (package |
| 14150 | (name "python-docopt") |
| 14151 | (version "0.6.2") |
| 14152 | (source |
| 14153 | (origin |
| 14154 | (method git-fetch) |
| 14155 | ;; The release on PyPI does not include tests. |
| 14156 | (uri (git-reference |
| 14157 | (url "https://github.com/docopt/docopt") |
| 14158 | (commit version))) |
| 14159 | (file-name (git-file-name name version)) |
| 14160 | (sha256 |
| 14161 | (base32 |
| 14162 | "0aad9gbswnnhssin2q0m5lmpm0ahyf80ahs2zjigbn5y7fvljnd0")) |
| 14163 | (patches (search-patches "python-docopt-pytest6-compat.patch")))) |
| 14164 | (build-system python-build-system) |
| 14165 | (native-inputs |
| 14166 | (list python-pytest)) |
| 14167 | (arguments |
| 14168 | `(#:phases |
| 14169 | (modify-phases %standard-phases |
| 14170 | (replace 'check |
| 14171 | (lambda* (#:key tests? #:allow-other-keys) |
| 14172 | (when tests? |
| 14173 | (invoke "py.test"))))))) |
| 14174 | (home-page "http://docopt.org") |
| 14175 | (synopsis "Command-line interface description language for Python") |
| 14176 | (description "This library allows the user to define a command-line |
| 14177 | interface from a program's help message rather than specifying it |
| 14178 | programmatically with command-line parsers like @code{getopt} and |
| 14179 | @code{argparse}.") |
| 14180 | (license license:expat))) |
| 14181 | |
| 14182 | (define-public python-pythonanywhere |
| 14183 | (package |
| 14184 | (name "python-pythonanywhere") |
| 14185 | (version "0.9.10") |
| 14186 | (source |
| 14187 | (origin |
| 14188 | (method git-fetch) |
| 14189 | (uri (git-reference |
| 14190 | (url "https://github.com/pythonanywhere/helper_scripts") |
| 14191 | (commit (string-append "v" version)))) |
| 14192 | (file-name (git-file-name name version)) |
| 14193 | (sha256 |
| 14194 | (base32 |
| 14195 | "0vzzc1g8pl7cb9yvm3n1j5zlzxf0jd423rzspc2kvpb8yhvydklx")))) |
| 14196 | (build-system python-build-system) |
| 14197 | (arguments |
| 14198 | `(#:phases |
| 14199 | (modify-phases %standard-phases |
| 14200 | (add-before 'check 'change-home |
| 14201 | (lambda _ |
| 14202 | (setenv "HOME" "/tmp"))) |
| 14203 | (replace 'check |
| 14204 | (lambda* (#:key tests? #:allow-other-keys) |
| 14205 | (when tests? |
| 14206 | ;; Exclude tests marked as slowtest that assume running |
| 14207 | ;; inside Git repository on system with virtualenvwrapper |
| 14208 | ;; installed. |
| 14209 | (invoke "pytest" "-m" "not slowtest"))))))) |
| 14210 | (native-inputs |
| 14211 | (list python-pytest |
| 14212 | python-psutil |
| 14213 | python-responses |
| 14214 | python-pytest-mock)) |
| 14215 | (propagated-inputs |
| 14216 | (list python-dateutil |
| 14217 | python-docopt |
| 14218 | python-packaging |
| 14219 | python-requests |
| 14220 | python-schema |
| 14221 | python-tabulate |
| 14222 | python-typer)) |
| 14223 | (home-page "https://github.com/pythonanywhere/helper_scripts/") |
| 14224 | (synopsis "PythonAnywhere helper tools for users") |
| 14225 | (description "PythonAnywhere provides a command-line interface and an |
| 14226 | application programming interface that allows managing Web apps and scheduled |
| 14227 | tasks. It includes single-command deployment for the Django Girls tutorial.") |
| 14228 | (license license:expat))) |
| 14229 | |
| 14230 | (define-public python-pythondialog |
| 14231 | (package |
| 14232 | (name "python-pythondialog") |
| 14233 | (version "3.4.0") |
| 14234 | (source (origin |
| 14235 | (method url-fetch) |
| 14236 | (uri (pypi-uri "pythondialog" version)) |
| 14237 | (sha256 |
| 14238 | (base32 |
| 14239 | "1728ghsran47jczn9bhlnkvk5bvqmmbihabgif5h705b84r1272c")))) |
| 14240 | (build-system python-build-system) |
| 14241 | (arguments |
| 14242 | `(#:phases (modify-phases %standard-phases |
| 14243 | (add-after 'unpack 'patch-path |
| 14244 | (lambda* (#:key inputs #:allow-other-keys) |
| 14245 | (let* ((dialog (assoc-ref inputs "dialog"))) |
| 14246 | (substitute* "dialog.py" |
| 14247 | (("os.getenv\\(\"PATH\", \":/bin:/usr/bin\"\\)") (string-append |
| 14248 | "os.getenv(\"PATH\") + \":" |
| 14249 | dialog |
| 14250 | "/bin\""))) |
| 14251 | #t)))) |
| 14252 | #:tests? #f)) |
| 14253 | (propagated-inputs (list dialog)) |
| 14254 | (home-page "http://pythondialog.sourceforge.net/") |
| 14255 | (synopsis "Python interface to the UNIX dialog utility") |
| 14256 | (description |
| 14257 | "A Python wrapper for the dialog utility. Its purpose is to |
| 14258 | provide an easy to use, pythonic and comprehensive Python interface to dialog. |
| 14259 | This allows one to make simple text-mode user interfaces on Unix-like systems") |
| 14260 | (license license:lgpl2.1))) |
| 14261 | |
| 14262 | (define-public python-configobj |
| 14263 | (package |
| 14264 | (name "python-configobj") |
| 14265 | (version "5.0.6") |
| 14266 | (source (origin |
| 14267 | (method url-fetch) |
| 14268 | (uri (pypi-uri "configobj" version)) |
| 14269 | (sha256 |
| 14270 | (base32 |
| 14271 | "00h9rcmws03xvdlfni11yb60bz3kxfvsj6dg6nrpzj71f03nbxd2")) |
| 14272 | ;; Patch setup.py so it looks for python-setuptools, which is |
| 14273 | ;; required to parse the keyword 'install_requires' in setup.py. |
| 14274 | (patches (search-patches "python-configobj-setuptools.patch")))) |
| 14275 | (build-system python-build-system) |
| 14276 | (propagated-inputs |
| 14277 | (list python-six)) |
| 14278 | (synopsis "Config file reading, writing and validation") |
| 14279 | (description "ConfigObj is a simple but powerful config file reader and |
| 14280 | writer: an ini file round tripper. Its main feature is that it is very easy to |
| 14281 | use, with a straightforward programmer’s interface and a simple syntax for |
| 14282 | config files.") |
| 14283 | (home-page "https://github.com/DiffSK/configobj") |
| 14284 | (license license:bsd-3))) |
| 14285 | |
| 14286 | (define-public python-configargparse |
| 14287 | (package |
| 14288 | (name "python-configargparse") |
| 14289 | (version "1.2.3") |
| 14290 | (source (origin |
| 14291 | (method url-fetch) |
| 14292 | (uri (pypi-uri "ConfigArgParse" version)) |
| 14293 | (sha256 |
| 14294 | (base32 |
| 14295 | "1p1pzpf5qpf80bfxsx1mbw9blyhhypjvhl3i60pbmhfmhvlpplgd")))) |
| 14296 | (build-system python-build-system) |
| 14297 | (native-inputs |
| 14298 | (list python-pyyaml)) |
| 14299 | (arguments |
| 14300 | `(#:phases |
| 14301 | (modify-phases %standard-phases |
| 14302 | (replace 'check |
| 14303 | (lambda _ |
| 14304 | ;; Bypass setuptools-shim because one test relies on "setup.py" |
| 14305 | ;; being the first argument passed to the python call. |
| 14306 | ;; |
| 14307 | ;; NOTE: Many tests do not run because they rely on Python's |
| 14308 | ;; built-in test.test_argparse, but we remove the unit tests from |
| 14309 | ;; our Python installation. |
| 14310 | (invoke "python" "setup.py" "test")))))) |
| 14311 | (synopsis "Replacement for argparse") |
| 14312 | (description "A drop-in replacement for argparse that allows options to also |
| 14313 | be set via config files and/or environment variables.") |
| 14314 | (home-page "https://github.com/bw2/ConfigArgParse") |
| 14315 | (license license:expat))) |
| 14316 | |
| 14317 | (define-public python-connection-pool |
| 14318 | (package |
| 14319 | (name "python-connection-pool") |
| 14320 | (version "0.0.3") |
| 14321 | (source |
| 14322 | (origin |
| 14323 | (method url-fetch) |
| 14324 | (uri (pypi-uri "connection_pool" version)) |
| 14325 | (sha256 |
| 14326 | (base32 "1p6hfkcl4n3hhhcgjbaxn21i7b1yipag6j7dnilir4k5xxx9whmz")))) |
| 14327 | (build-system python-build-system) |
| 14328 | (home-page "https://github.com/zhouyl/ConnectionPool") |
| 14329 | (synopsis "Thread-safe connection pool") |
| 14330 | (description "This package provides a library implementing a thread-safe |
| 14331 | connection pool.") |
| 14332 | (license license:expat))) |
| 14333 | |
| 14334 | (define-public python-argparse-manpage |
| 14335 | (package |
| 14336 | (name "python-argparse-manpage") |
| 14337 | (version "1.1") |
| 14338 | (source |
| 14339 | (origin |
| 14340 | (method url-fetch) |
| 14341 | (uri (pypi-uri "argparse-manpage" version)) |
| 14342 | (sha256 |
| 14343 | (base32 |
| 14344 | "0blh31zns68anina9lba5wh81d1414s97p60zw5l0d0shhh0wj5p")))) |
| 14345 | (build-system python-build-system) |
| 14346 | (home-page "https://github.com/praiskup/argparse-manpage") |
| 14347 | (synopsis "Build manual page from Python's ArgumentParser object") |
| 14348 | (description |
| 14349 | "This package provides tools to build manual pages from Python's |
| 14350 | @code{ArgumentParser} object.") |
| 14351 | (license license:asl2.0))) |
| 14352 | |
| 14353 | (define-public python-contextlib2 |
| 14354 | (package |
| 14355 | (name "python-contextlib2") |
| 14356 | (version "0.6.0.post1") |
| 14357 | (source |
| 14358 | (origin |
| 14359 | (method url-fetch) |
| 14360 | (uri (pypi-uri "contextlib2" version)) |
| 14361 | (sha256 |
| 14362 | (base32 |
| 14363 | "0bhnr2ac7wy5l85ji909gyljyk85n92w8pdvslmrvc8qih4r1x01")))) |
| 14364 | (build-system python-build-system) |
| 14365 | (home-page "https://contextlib2.readthedocs.org/") |
| 14366 | (synopsis "Tools for decorators and context managers") |
| 14367 | (description "This module is primarily a backport of the Python |
| 14368 | 3.2 contextlib to earlier Python versions. Like contextlib, it |
| 14369 | provides utilities for common tasks involving decorators and context |
| 14370 | managers. It also contains additional features that are not part of |
| 14371 | the standard library.") |
| 14372 | (license license:psfl))) |
| 14373 | |
| 14374 | (define-public python-texttable |
| 14375 | (package |
| 14376 | (name "python-texttable") |
| 14377 | (version "1.6.4") |
| 14378 | (source |
| 14379 | (origin |
| 14380 | (method url-fetch) |
| 14381 | (uri (pypi-uri "texttable" version)) |
| 14382 | (sha256 |
| 14383 | (base32 |
| 14384 | "1sbn821394rix6xgj3zqk743pj6nqm1qz81zgis2bcpp2ng7pvj2")))) |
| 14385 | (build-system python-build-system) |
| 14386 | (arguments |
| 14387 | `(#:phases |
| 14388 | (modify-phases %standard-phases |
| 14389 | (replace 'check |
| 14390 | (lambda* (#:key tests? #:allow-other-keys) |
| 14391 | (when tests? (invoke "pytest" "-vv" "tests.py"))))))) |
| 14392 | (native-inputs |
| 14393 | (list python-pytest)) |
| 14394 | (home-page "https://github.com/foutaise/texttable/") |
| 14395 | (synopsis "Python module for creating simple ASCII tables") |
| 14396 | (description "Texttable is a Python module for creating simple ASCII |
| 14397 | tables.") |
| 14398 | (license license:expat))) |
| 14399 | |
| 14400 | (define-public python-atomicwrites |
| 14401 | (package |
| 14402 | (name "python-atomicwrites") |
| 14403 | (version "1.4.0") |
| 14404 | (source (origin |
| 14405 | (method url-fetch) |
| 14406 | (uri (pypi-uri "atomicwrites" version)) |
| 14407 | (sha256 |
| 14408 | (base32 |
| 14409 | "0yla2svfhfqrcj8qbyqzx7wi4jy0dwcxvlkg0k3zjd54s5m3jw5f")))) |
| 14410 | (build-system python-build-system) |
| 14411 | (arguments `(#:tests? #f)) ;avoid circular dependency with pytest |
| 14412 | (synopsis "Atomic file writes in Python") |
| 14413 | (description "Library for atomic file writes using platform dependent tools |
| 14414 | for atomic file system operations.") |
| 14415 | (home-page "https://github.com/untitaker/python-atomicwrites") |
| 14416 | (license license:expat))) |
| 14417 | |
| 14418 | (define-public python-qstylizer |
| 14419 | (package |
| 14420 | (name "python-qstylizer") |
| 14421 | (version "0.1.10") |
| 14422 | (source |
| 14423 | (origin |
| 14424 | (method git-fetch) |
| 14425 | (uri (git-reference |
| 14426 | (url "https://github.com/blambright/qstylizer") |
| 14427 | (commit version))) |
| 14428 | (file-name (git-file-name name version)) |
| 14429 | (sha256 |
| 14430 | (base32 "0zvkn6g1dn51kkw33v8qrlnwlmf5h6sw1ay3bh14ifjr8b9xsjjz")))) |
| 14431 | (build-system python-build-system) |
| 14432 | (arguments |
| 14433 | `(#:test-target "pytest" |
| 14434 | #:phases |
| 14435 | (modify-phases %standard-phases |
| 14436 | (add-before 'build 'set-pbr-version |
| 14437 | (lambda _ |
| 14438 | (setenv "PBR_VERSION" "3.0.1")))))) |
| 14439 | (native-inputs |
| 14440 | (list python-pbr |
| 14441 | python-pytest |
| 14442 | python-pytest-catchlog |
| 14443 | python-pytest-cov |
| 14444 | python-pytest-mock |
| 14445 | python-pytest-runner |
| 14446 | python-pytest-xdist)) |
| 14447 | (propagated-inputs |
| 14448 | (list python-inflection python-tinycss)) |
| 14449 | (home-page "https://github.com/blambright/qstylizer") |
| 14450 | (synopsis "Qt stylesheet generation utility for PyQt/PySide") |
| 14451 | (description "@code{qstylizer} is a Python package designed to help with |
| 14452 | the construction of PyQt/PySide stylesheets.") |
| 14453 | (license license:expat))) |
| 14454 | |
| 14455 | (define-public python-click-threading |
| 14456 | (package |
| 14457 | (name "python-click-threading") |
| 14458 | (version "0.5.0") |
| 14459 | (source (origin |
| 14460 | (method url-fetch) |
| 14461 | (uri (pypi-uri "click-threading" version)) |
| 14462 | (sha256 |
| 14463 | (base32 |
| 14464 | "0f9lmxwcq0y9lb8w0whbni7gwy12gbv74h1igh85qn9aq0iydkxd")))) |
| 14465 | (build-system python-build-system) |
| 14466 | (propagated-inputs |
| 14467 | (list python-click)) |
| 14468 | (synopsis "Utilities for multithreading in Click") |
| 14469 | (description "This package provides utilities for multithreading in Click |
| 14470 | applications.") |
| 14471 | (home-page "https://github.com/click-contrib/click-threading") |
| 14472 | (license license:expat))) |
| 14473 | |
| 14474 | (define-public python-click-log |
| 14475 | (package |
| 14476 | (name "python-click-log") |
| 14477 | (version "0.3.2") |
| 14478 | (source (origin |
| 14479 | (method url-fetch) |
| 14480 | (uri (pypi-uri "click-log" version)) |
| 14481 | (sha256 |
| 14482 | (base32 |
| 14483 | "091i03bhxyzsdbc6kilxhivfda2f8ymz3b33xa6cj5kbzjiirz8n")))) |
| 14484 | (build-system python-build-system) |
| 14485 | (propagated-inputs |
| 14486 | (list python-click)) |
| 14487 | (synopsis "Logging for click applications") |
| 14488 | (description "This package provides a Python library for logging Click |
| 14489 | applications.") |
| 14490 | (home-page "https://github.com/click-contrib/click-log") |
| 14491 | (license license:expat))) |
| 14492 | |
| 14493 | (define-public python-click-default-group |
| 14494 | (package |
| 14495 | (name "python-click-default-group") |
| 14496 | (version "1.2.2") |
| 14497 | (source (origin |
| 14498 | (method url-fetch) |
| 14499 | (uri (pypi-uri "click-default-group" version)) |
| 14500 | (sha256 |
| 14501 | (base32 |
| 14502 | "015r78jk8gznfw0dphpwaqcx5mhg5822b55w5xbb6i7sin70wmnr")))) |
| 14503 | (build-system python-build-system) |
| 14504 | (arguments |
| 14505 | `(#:tests? #f)) ; no target |
| 14506 | (propagated-inputs |
| 14507 | (list python-click)) |
| 14508 | (synopsis "Extends click.Group") |
| 14509 | (description "This package extends click.Group to invoke a command without |
| 14510 | explicit subcommand name.") |
| 14511 | (home-page "https://github.com/click-contrib/click-default-group") |
| 14512 | (license license:bsd-3))) |
| 14513 | |
| 14514 | (define-public python-structlog |
| 14515 | (package |
| 14516 | (name "python-structlog") |
| 14517 | (version "20.2.0") |
| 14518 | (source |
| 14519 | (origin |
| 14520 | (method url-fetch) |
| 14521 | (uri (pypi-uri "structlog" version)) |
| 14522 | (sha256 |
| 14523 | (base32 |
| 14524 | "0x1i21vn3xjfa3j9ijbblia5z0jlzc9aqvpqc26sy16i8yjxyydg")))) |
| 14525 | (build-system python-build-system) |
| 14526 | (arguments |
| 14527 | `(#:phases |
| 14528 | (modify-phases %standard-phases |
| 14529 | (replace 'check |
| 14530 | (lambda* (#:key tests? inputs outputs #:allow-other-keys) |
| 14531 | (when tests? |
| 14532 | (add-installed-pythonpath inputs outputs) |
| 14533 | (invoke "pytest")) |
| 14534 | #t))))) |
| 14535 | (native-inputs |
| 14536 | (list python-coverage |
| 14537 | python-freezegun |
| 14538 | python-pretend |
| 14539 | python-pytest |
| 14540 | python-pytest-asyncio |
| 14541 | python-simplejson |
| 14542 | python-twisted)) |
| 14543 | (home-page "https://www.structlog.org/") |
| 14544 | (synopsis "Structured Logging for Python") |
| 14545 | (description "@code{structlog} changes logging in Python by adding structure |
| 14546 | to your log entries.") |
| 14547 | (license (list license:asl2.0 license:expat)))) |
| 14548 | |
| 14549 | (define-public python-apipkg |
| 14550 | (package |
| 14551 | (name "python-apipkg") |
| 14552 | (version "1.5") |
| 14553 | (source (origin |
| 14554 | (method url-fetch) |
| 14555 | (uri (pypi-uri "apipkg" version)) |
| 14556 | (sha256 |
| 14557 | (base32 |
| 14558 | "1xhak74yj3lqflvpijg15rnkklrigvsp5q7s4as4h6a157d8q8ip")))) |
| 14559 | (build-system python-build-system) |
| 14560 | (native-inputs |
| 14561 | (list python-pytest python-setuptools-scm)) |
| 14562 | (synopsis "Namespace control and lazy-import mechanism") |
| 14563 | (description "With apipkg you can control the exported namespace of a Python |
| 14564 | package and greatly reduce the number of imports for your users. It is a small |
| 14565 | pure Python module that works on virtually all Python versions.") |
| 14566 | (home-page "https://github.com/pytest-dev/apipkg") |
| 14567 | (license license:expat))) |
| 14568 | |
| 14569 | (define-public python-execnet |
| 14570 | (package |
| 14571 | (name "python-execnet") |
| 14572 | (version "1.9.0") |
| 14573 | (source (origin |
| 14574 | (method url-fetch) |
| 14575 | (uri (pypi-uri "execnet" version)) |
| 14576 | (sha256 |
| 14577 | (base32 |
| 14578 | "1ia7dvrh0gvzzpi758mx55f9flr16bzdqlmi12swm4ncm4xlyscg")) |
| 14579 | (patches (search-patches "python-execnet-read-only-fix.patch")))) |
| 14580 | (build-system python-build-system) |
| 14581 | (arguments |
| 14582 | `(#:phases |
| 14583 | (modify-phases %standard-phases |
| 14584 | (replace 'check |
| 14585 | (lambda* (#:key inputs outputs tests? #:allow-other-keys) |
| 14586 | (when tests? |
| 14587 | ;; Unset PYTHONDONTWRITEBYTECODE to match the |
| 14588 | ;; expectations of a test in |
| 14589 | ;; 'testing/test_gateway.py'. |
| 14590 | (unsetenv "PYTHONDONTWRITEBYTECODE") |
| 14591 | |
| 14592 | (add-installed-pythonpath inputs outputs) |
| 14593 | (invoke "pytest" "-vv"))))))) |
| 14594 | (native-inputs |
| 14595 | (list python-pytest python-setuptools-scm)) |
| 14596 | (synopsis "Rapid multi-Python deployment") |
| 14597 | (description "Execnet provides a share-nothing model with |
| 14598 | channel-send/receive communication for distributing execution across many |
| 14599 | Python interpreters across version, platform and network barriers. It has a |
| 14600 | minimal and fast API targeting the following uses: |
| 14601 | @enumerate |
| 14602 | @item distribute tasks to (many) local or remote CPUs |
| 14603 | @item write and deploy hybrid multi-process applications |
| 14604 | @item write scripts to administer multiple environments |
| 14605 | @end enumerate") |
| 14606 | (home-page "https://codespeak.net/execnet/") |
| 14607 | (license license:expat))) |
| 14608 | |
| 14609 | (define-public python-icalendar |
| 14610 | (package |
| 14611 | (name "python-icalendar") |
| 14612 | (version "4.1.0") |
| 14613 | (source (origin |
| 14614 | (method url-fetch) |
| 14615 | (uri (pypi-uri "icalendar" version)) |
| 14616 | (sha256 |
| 14617 | (base32 |
| 14618 | "15dkq42rkqjdi17rpvmd1plnbwn4daby0nk1s1c3xi7w5v0bfj4p")))) |
| 14619 | (build-system python-build-system) |
| 14620 | (propagated-inputs |
| 14621 | (list python-dateutil python-pytz)) |
| 14622 | (synopsis "Python library for parsing iCalendar files") |
| 14623 | (description "The icalendar package is a parser/generator of iCalendar |
| 14624 | files for use with Python.") |
| 14625 | (home-page "https://github.com/collective/icalendar") |
| 14626 | (license license:bsd-2))) |
| 14627 | |
| 14628 | (define-public python-args |
| 14629 | (let ((commit "9460f1a35eb3055e9e4de1f0a6932e0883c72d65") (revision "0")) |
| 14630 | (package |
| 14631 | (name "python-args") |
| 14632 | (version (git-version "0.1.0" revision commit)) |
| 14633 | (home-page "https://github.com/kennethreitz-archive/args") |
| 14634 | (source (origin |
| 14635 | (method git-fetch) |
| 14636 | (uri (git-reference |
| 14637 | (url home-page) |
| 14638 | (commit commit))) |
| 14639 | (file-name (git-file-name name version)) |
| 14640 | (sha256 |
| 14641 | (base32 |
| 14642 | "1zfxpbp9vldqdrjmd0c6y3wisl35mx5v8zlyp3nhwpy1730wrc9j")))) |
| 14643 | (build-system python-build-system) |
| 14644 | (arguments |
| 14645 | `(#:phases (modify-phases %standard-phases |
| 14646 | (add-after 'unpack 'patch-args.py |
| 14647 | (lambda _ |
| 14648 | (substitute* "args.py" |
| 14649 | (("basestring") "str")))) |
| 14650 | (replace 'check |
| 14651 | (lambda* (#:key tests? #:allow-other-keys) |
| 14652 | (when tests? |
| 14653 | (invoke "nosetests" "-v"))))))) |
| 14654 | (native-inputs (list python-nose)) |
| 14655 | (synopsis "Command-line argument parser") |
| 14656 | (description |
| 14657 | "This library provides a Python module to parse command-line arguments.") |
| 14658 | (license license:bsd-3)))) |
| 14659 | |
| 14660 | (define-public python-clint |
| 14661 | (package |
| 14662 | (name "python-clint") |
| 14663 | (version "0.5.1") |
| 14664 | (source (origin |
| 14665 | (method url-fetch) |
| 14666 | (uri (pypi-uri "clint" version)) |
| 14667 | (sha256 |
| 14668 | (base32 |
| 14669 | "1an5lkkqk1zha47198p42ji3m94xmzx1a03dn7866m87n4r4q8h5")))) |
| 14670 | (build-system python-build-system) |
| 14671 | (arguments |
| 14672 | '(#:phases |
| 14673 | (modify-phases %standard-phases |
| 14674 | (replace 'check |
| 14675 | (lambda _ (invoke "py.test" "-v")))))) |
| 14676 | (native-inputs |
| 14677 | (list python-pytest)) |
| 14678 | (propagated-inputs |
| 14679 | (list python-args)) |
| 14680 | (home-page "https://github.com/kennethreitz/clint") |
| 14681 | (synopsis "Command-line interface tools") |
| 14682 | (description |
| 14683 | "Clint is a Python module filled with a set of tools for developing |
| 14684 | command-line applications, including tools for colored and indented |
| 14685 | output, progress bar display, and pipes.") |
| 14686 | (license license:isc))) |
| 14687 | |
| 14688 | (define-public python-rply |
| 14689 | (package |
| 14690 | (name "python-rply") |
| 14691 | (version "0.7.8") |
| 14692 | (source (origin |
| 14693 | (method url-fetch) |
| 14694 | (uri (pypi-uri "rply" version)) |
| 14695 | (sha256 |
| 14696 | (base32 |
| 14697 | "1j81nddvnb145x4p81bnfpyai6g26i2dc1633ycsk025bb18m01a")))) |
| 14698 | (build-system python-build-system) |
| 14699 | (propagated-inputs |
| 14700 | (list python-appdirs)) |
| 14701 | (home-page "https://github.com/alex/rply") |
| 14702 | (synopsis "Parser generator for Python") |
| 14703 | (description |
| 14704 | "This package provides a pure Python based parser generator, that also |
| 14705 | works with RPython. It is a more-or-less direct port of David Bazzley's PLY, |
| 14706 | with a new public API, and RPython support.") |
| 14707 | (license license:bsd-3))) |
| 14708 | |
| 14709 | (define-public python-hy |
| 14710 | (package |
| 14711 | (name "python-hy") |
| 14712 | (version "0.24.0") |
| 14713 | (source |
| 14714 | (origin |
| 14715 | (method git-fetch) ; no tests in PyPI release |
| 14716 | (uri (git-reference |
| 14717 | (url "https://github.com/hylang/hy") |
| 14718 | (commit version))) |
| 14719 | (file-name (git-file-name name version)) |
| 14720 | (sha256 |
| 14721 | (base32 "1s458ymd9g3s8k2ccc300jr4w66c7q3vhmhs9z3d3a4qg0xdhs9y")))) |
| 14722 | (build-system python-build-system) |
| 14723 | (arguments |
| 14724 | '(#:phases |
| 14725 | (modify-phases %standard-phases |
| 14726 | (replace 'check |
| 14727 | (lambda* (#:key tests? #:allow-other-keys) |
| 14728 | (when tests? |
| 14729 | (invoke "python" "-m" "pytest" "-k" |
| 14730 | (string-append ; skip some failed tests |
| 14731 | "not test_sys_executable" |
| 14732 | " and not test_circular_macro_require" |
| 14733 | " and not test_macro_require" |
| 14734 | " and not test_requires_pollutes_core")))))))) |
| 14735 | (native-inputs |
| 14736 | (list python-pytest-7.1 python-wheel)) |
| 14737 | (propagated-inputs |
| 14738 | (list python-colorama python-funcparserlib)) |
| 14739 | (home-page "https://docs.hylang.org/en/stable/") |
| 14740 | (synopsis "Lisp frontend to Python") |
| 14741 | (description |
| 14742 | "Hy is a dialect of Lisp that's embedded in Python. Since Hy transforms |
| 14743 | its Lisp code into the Python Abstract Syntax Tree, you have the whole world of |
| 14744 | Python at your fingertips, in Lisp form.") |
| 14745 | (license license:expat))) |
| 14746 | |
| 14747 | (define-public python-hissp |
| 14748 | (package |
| 14749 | (name "python-hissp") |
| 14750 | (version "0.2.0") |
| 14751 | (source |
| 14752 | (origin |
| 14753 | (method url-fetch) |
| 14754 | (uri (pypi-uri "hissp" version)) |
| 14755 | (sha256 |
| 14756 | (base32 |
| 14757 | "0yns7f0q699zn2ziagyas2nkndl7mp1hhssv9x9mpl7jxj2p5myw")))) |
| 14758 | (build-system python-build-system) |
| 14759 | (home-page "https://github.com/gilch/hissp") |
| 14760 | (synopsis "It's Python with a Lissp") |
| 14761 | (description "Hissp is a modular Lisp implementation that compiles to a |
| 14762 | functional subset of Python—Syntactic macro metaprogramming with full access |
| 14763 | to the Python ecosystem.") |
| 14764 | (license license:asl2.0))) |
| 14765 | |
| 14766 | (define-public python-promise |
| 14767 | (package |
| 14768 | (name "python-promise") |
| 14769 | (version "0.4.2") |
| 14770 | (source |
| 14771 | (origin |
| 14772 | (method url-fetch) |
| 14773 | (uri (pypi-uri "promise" version)) |
| 14774 | (sha256 |
| 14775 | (base32 |
| 14776 | "1k19ms8l3d5jzjh557rgkxb5sg4mqgfc315rn4hx1z3n8qq6lr3h")))) |
| 14777 | (build-system python-build-system) |
| 14778 | ;; Tests wants python-futures, which is a python2 only program, and |
| 14779 | ;; can't be found by python-promise at test time. |
| 14780 | (arguments `(#:tests? #f)) |
| 14781 | (home-page "https://github.com/syrusakbary/promise") |
| 14782 | (synopsis "Promises/A+ implementation for Python") |
| 14783 | (description |
| 14784 | "Promises/A+ implementation for Python") |
| 14785 | (license license:expat))) |
| 14786 | |
| 14787 | (define-public python-progress |
| 14788 | (package |
| 14789 | (name "python-progress") |
| 14790 | (version "1.6") |
| 14791 | (source |
| 14792 | (origin |
| 14793 | (method url-fetch) |
| 14794 | (uri (pypi-uri "progress" version)) |
| 14795 | (sha256 |
| 14796 | (base32 "1k9lpb7lqr6mywpnqcz71y6qny54xlgprdp327za2gy0nnc6xj69")))) |
| 14797 | (build-system python-build-system) |
| 14798 | (home-page "http://github.com/verigak/progress/") |
| 14799 | (synopsis "Progress reporting bars for Python") |
| 14800 | (description "This Python package provides progress reporting for visual |
| 14801 | of progress of long running operations. There are multiple choices of |
| 14802 | progress bars and spinners, with customizable options, such as width, fill |
| 14803 | character, and suffix.") |
| 14804 | (license license:isc))) |
| 14805 | |
| 14806 | (define-public python-progressbar2 |
| 14807 | (package |
| 14808 | (name "python-progressbar2") |
| 14809 | (version "3.51.3") |
| 14810 | (source |
| 14811 | (origin |
| 14812 | (method url-fetch) |
| 14813 | (uri (pypi-uri "progressbar2" version)) |
| 14814 | (sha256 |
| 14815 | (base32 |
| 14816 | "0b2v3mim90rmfvixkaniz2qrs650sk230rzgd5zhcjfldmlqgxpc")))) |
| 14817 | (build-system python-build-system) |
| 14818 | (propagated-inputs |
| 14819 | (list python-six python-utils)) |
| 14820 | (native-inputs |
| 14821 | (list python-flake8 |
| 14822 | python-freezegun |
| 14823 | python-pycodestyle |
| 14824 | python-pytest |
| 14825 | python-pytest-cache |
| 14826 | python-pytest-cov |
| 14827 | python-pytest-flakes |
| 14828 | python-pytest-pep8 |
| 14829 | python-sphinx)) |
| 14830 | (home-page "https://github.com/WoLpH/python-progressbar") |
| 14831 | (synopsis "Text progress bar library for Python") |
| 14832 | (description |
| 14833 | "This package provides a Python progressbar library to provide |
| 14834 | visual (yet text based) progress to long running operations.") |
| 14835 | (license license:bsd-3))) |
| 14836 | |
| 14837 | (define-public python-progressbar33 |
| 14838 | (package |
| 14839 | (name "python-progressbar33") |
| 14840 | (version "2.4") |
| 14841 | (source |
| 14842 | (origin |
| 14843 | (method url-fetch) |
| 14844 | (uri (pypi-uri "progressbar33" version)) |
| 14845 | (sha256 |
| 14846 | (base32 |
| 14847 | "1zvf6zs5hzrc03p9nfs4p16vhilqikycvv1yk0pxn8s07fdhvzji")))) |
| 14848 | (build-system python-build-system) |
| 14849 | (home-page "https://github.com/germangh/python-progressbar") |
| 14850 | (synopsis "Text progress bar library for Python") |
| 14851 | (description |
| 14852 | "This package provides a text progress bar library for Python. This |
| 14853 | version only differs from the original @code{progressbar} package in that it |
| 14854 | uses relative package imports instead of absolute imports, which is necessary |
| 14855 | for the module to work under Python 3.3.") |
| 14856 | ;; Either or both of these licenses may be selected. |
| 14857 | (license (list license:lgpl2.1+ license:bsd-3)))) |
| 14858 | |
| 14859 | (define-public python-colorama |
| 14860 | (package |
| 14861 | (name "python-colorama") |
| 14862 | (version "0.4.4") |
| 14863 | (source |
| 14864 | (origin |
| 14865 | (method url-fetch) |
| 14866 | (uri (pypi-uri "colorama" version)) |
| 14867 | (sha256 |
| 14868 | (base32 "16w62sm95hmh55rqxn4zwdz0bkh3fqm1qnz9cwi3s510iasb4har")))) |
| 14869 | (build-system python-build-system) |
| 14870 | (synopsis "Colored terminal text rendering for Python") |
| 14871 | (description "Colorama is a Python library for rendering colored terminal |
| 14872 | text.") |
| 14873 | (home-page "https://pypi.org/project/colorama/") |
| 14874 | (license license:bsd-3))) |
| 14875 | |
| 14876 | ;; awscli and botocore do not accept version 0.4.4 |
| 14877 | (define-public python-colorama-for-awscli |
| 14878 | (package |
| 14879 | (inherit python-colorama) |
| 14880 | (version "0.4.3") |
| 14881 | (source |
| 14882 | (origin |
| 14883 | (method url-fetch) |
| 14884 | (uri (pypi-uri "colorama" version)) |
| 14885 | (sha256 |
| 14886 | (base32 "189n8hpijy14jfan4ha9f5n06mnl33cxz7ay92wjqgkr639s0vg9")))))) |
| 14887 | |
| 14888 | (define-public python-moto |
| 14889 | (package |
| 14890 | (name "python-moto") |
| 14891 | (version "3.1.4") |
| 14892 | (source (origin |
| 14893 | (method url-fetch) |
| 14894 | (uri (pypi-uri "moto" version)) |
| 14895 | (sha256 |
| 14896 | (base32 "0dfnad1f9d5ybabs69dzc7x357z1r4jbhrhgw57gyic1qnmcw864")))) |
| 14897 | (build-system python-build-system) |
| 14898 | (arguments |
| 14899 | `(#:phases |
| 14900 | (modify-phases %standard-phases |
| 14901 | (add-after 'unpack 'patch-hardcoded-executable-names |
| 14902 | (lambda* (#:key inputs #:allow-other-keys) |
| 14903 | (let ((bash-exec (search-input-file inputs "/bin/sh"))) |
| 14904 | (substitute* "moto/batch/models.py" |
| 14905 | (("/bin/sh") bash-exec)) |
| 14906 | (substitute* (find-files "tests" "\\.py$") |
| 14907 | (("#!/bin/bash") (string-append "#!" bash-exec)))))) |
| 14908 | (replace 'check |
| 14909 | (lambda* (#:key tests? #:allow-other-keys) |
| 14910 | (when tests? |
| 14911 | (invoke "pytest" "-vv" "-m" "not network" "-k" |
| 14912 | (string-append |
| 14913 | ;; XXX: This test is timing sensitive and may |
| 14914 | ;; fail non-deterministically. |
| 14915 | "not test_cancel_pending_job" |
| 14916 | ;; These tests require Docker. |
| 14917 | " and not test_terminate_job" |
| 14918 | " and not test_invoke_function_from_sqs_exception" |
| 14919 | " and not test_create_custom_lambda_resource__verify_cfnresponse_failed" |
| 14920 | " and not test_lambda_function" |
| 14921 | |
| 14922 | ;; These tests also require the network. |
| 14923 | " and not test_put_record_batch_http_destination" |
| 14924 | " and not test_put_record_http_destination" |
| 14925 | " and not test_dependencies" |
| 14926 | " and not test_cancel_running_job" |
| 14927 | " and not test_container_overrides")))))))) |
| 14928 | (native-inputs |
| 14929 | (list python-flask |
| 14930 | python-flask-cors |
| 14931 | python-freezegun |
| 14932 | python-graphql-core |
| 14933 | python-pytest |
| 14934 | python-sure)) |
| 14935 | (inputs |
| 14936 | (list bash-minimal)) |
| 14937 | (propagated-inputs |
| 14938 | (list python-aws-xray-sdk |
| 14939 | python-boto3 |
| 14940 | python-botocore |
| 14941 | python-cfn-lint |
| 14942 | python-cryptography |
| 14943 | python-dateutil |
| 14944 | python-docker |
| 14945 | python-importlib-metadata |
| 14946 | python-jinja2 |
| 14947 | python-jose |
| 14948 | python-jsondiff |
| 14949 | python-markupsafe |
| 14950 | python-pytz |
| 14951 | python-pyyaml |
| 14952 | python-requests |
| 14953 | python-responses |
| 14954 | python-sshpubkeys |
| 14955 | python-werkzeug |
| 14956 | python-xmltodict)) |
| 14957 | (home-page "https://github.com/spulec/moto") |
| 14958 | (synopsis "Mock out the boto library") |
| 14959 | (description |
| 14960 | "@code{moto} is a library designed to easily mock out the |
| 14961 | @code{boto} library.") |
| 14962 | (license license:asl2.0))) |
| 14963 | |
| 14964 | (define-public python-rsa |
| 14965 | (package |
| 14966 | (name "python-rsa") |
| 14967 | (version "3.4.2") |
| 14968 | (source |
| 14969 | (origin |
| 14970 | (method url-fetch) |
| 14971 | (uri (pypi-uri "rsa" version)) |
| 14972 | (sha256 |
| 14973 | (base32 |
| 14974 | "1dcxvszbikgzh99ybdc7jq0zb9wspy2ds8z9mjsqiyv3q884xpr5")))) |
| 14975 | (build-system python-build-system) |
| 14976 | (propagated-inputs |
| 14977 | (list python-pyasn1)) |
| 14978 | (synopsis "Pure-Python RSA implementation") |
| 14979 | (description "Python-RSA is a pure-Python RSA implementation. It supports |
| 14980 | encryption and decryption, signing and verifying signatures, and key |
| 14981 | generation according to PKCS#1 version 1.5. It can be used as a Python |
| 14982 | library as well as on the command line.") |
| 14983 | (home-page "https://stuvel.eu/rsa") |
| 14984 | (license license:asl2.0))) |
| 14985 | |
| 14986 | (define-public python-pluggy |
| 14987 | (package |
| 14988 | (name "python-pluggy") |
| 14989 | (version "0.13.1") |
| 14990 | (source |
| 14991 | (origin |
| 14992 | (method url-fetch) |
| 14993 | (uri (pypi-uri "pluggy" version)) |
| 14994 | (sha256 |
| 14995 | (base32 |
| 14996 | "1c35qyhvy27q9ih9n899f3h4sdnpgq027dbiilly2qb5cvgarchm")))) |
| 14997 | (build-system python-build-system) |
| 14998 | (native-inputs |
| 14999 | (list python-setuptools-scm)) |
| 15000 | (synopsis "Plugin and hook calling mechanism for Python") |
| 15001 | (description "Pluggy is an extraction of the plugin manager as used by |
| 15002 | Pytest but stripped of Pytest specific details.") |
| 15003 | (home-page "https://pypi.org/project/pluggy/") |
| 15004 | (license license:expat))) |
| 15005 | |
| 15006 | (define-public python-plumbum |
| 15007 | (package |
| 15008 | (name "python-plumbum") |
| 15009 | (version "1.7.0") |
| 15010 | (source |
| 15011 | (origin |
| 15012 | (method url-fetch) |
| 15013 | (uri (pypi-uri "plumbum" version)) |
| 15014 | (sha256 |
| 15015 | (base32 "1kidj821k79dw064rlxh84xamb9h79ychg3pgj81jlvm5hs48xri")))) |
| 15016 | (build-system python-build-system) |
| 15017 | (arguments |
| 15018 | `(#:tests? #f)) ;no tests |
| 15019 | (native-inputs |
| 15020 | ;; XXX: Not actually used since there are no tests but required for |
| 15021 | ;; build. |
| 15022 | (list python-pytest)) |
| 15023 | (home-page "https://plumbum.readthedocs.io") |
| 15024 | (synopsis "Python shell combinators library") |
| 15025 | (description |
| 15026 | "Plumbum is a library of tools for replacing shell scripts with Python |
| 15027 | code.") |
| 15028 | (license license:expat))) |
| 15029 | |
| 15030 | (define-public python-deprecation |
| 15031 | (package |
| 15032 | (name "python-deprecation") |
| 15033 | (version "2.1.0") |
| 15034 | (source |
| 15035 | (origin |
| 15036 | (method url-fetch) |
| 15037 | (uri (pypi-uri "deprecation" version)) |
| 15038 | (sha256 |
| 15039 | (base32 |
| 15040 | "1zqqjlgmhgkpzg9ss5ki8wamxl83xn51fs6gn2a8cxsx9vkbvcvj")))) |
| 15041 | (build-system python-build-system) |
| 15042 | (propagated-inputs |
| 15043 | (list python-packaging)) |
| 15044 | (native-inputs |
| 15045 | (list python-unittest2)) |
| 15046 | (home-page "https://deprecation.readthedocs.io/") |
| 15047 | (synopsis "Python library to handle automated deprecations") |
| 15048 | (description |
| 15049 | "This is a library that enables automated deprecations. It offers the |
| 15050 | @code{deprecated()} decorator to wrap functions, providing proper warnings |
| 15051 | both in documentation and via Python’s warnings system, as well as the |
| 15052 | @code{deprecation.fail_if_not_removed()} decorator for test methods to ensure |
| 15053 | that deprecated code is eventually removed.") |
| 15054 | (license license:asl2.0))) |
| 15055 | |
| 15056 | (define-public python-jmespath |
| 15057 | (package |
| 15058 | (name "python-jmespath") |
| 15059 | (version "1.0.0") |
| 15060 | (source |
| 15061 | (origin |
| 15062 | (method url-fetch) |
| 15063 | (uri (pypi-uri "jmespath" version)) |
| 15064 | (sha256 |
| 15065 | (base32 |
| 15066 | "0pmzfi230zfgiq2rz896kbb9f7mp0lnrjdl6x1npvxfixn0f5454")))) |
| 15067 | (build-system python-build-system) |
| 15068 | (native-inputs |
| 15069 | (list python-nose)) |
| 15070 | (synopsis "JSON Matching Expressions") |
| 15071 | (description "JMESPath (pronounced “james path”) is a Python library that |
| 15072 | allows one to declaratively specify how to extract elements from a JSON |
| 15073 | document.") |
| 15074 | (home-page "https://github.com/jmespath/jmespath.py") |
| 15075 | (license license:expat))) |
| 15076 | |
| 15077 | (define-public python-symengine |
| 15078 | (package |
| 15079 | (name "python-symengine") |
| 15080 | (version "0.9.2") |
| 15081 | (source |
| 15082 | (origin |
| 15083 | (method url-fetch) |
| 15084 | (uri (pypi-uri "symengine" version)) |
| 15085 | (sha256 |
| 15086 | (base32 "0qjgdbnb10kfk7jdhxnzfl8cpaps81k8vap7gm7q9ym3pgslazhg")))) |
| 15087 | (build-system python-build-system) |
| 15088 | (arguments |
| 15089 | (list |
| 15090 | #:phases |
| 15091 | #~(modify-phases %standard-phases |
| 15092 | (replace 'check |
| 15093 | (lambda* (#:key tests? #:allow-other-keys) |
| 15094 | (if tests? |
| 15095 | ;; Run tests against installed package. |
| 15096 | (with-directory-excursion "/tmp" |
| 15097 | (invoke "nosetests" "-v" "symengine.tests")) |
| 15098 | (format #t "test suite not run~%"))))))) |
| 15099 | (native-inputs |
| 15100 | (list cmake python-cython python-nose)) |
| 15101 | (inputs |
| 15102 | (list symengine)) |
| 15103 | (home-page "https://github.com/symengine/symengine.py") |
| 15104 | (synopsis "Python library providing wrappers to SymEngine") |
| 15105 | (description |
| 15106 | "This library provides a Python wrapper to SymEngine, a fast C++ symbolic |
| 15107 | manipulation library.") |
| 15108 | (license license:expat))) |
| 15109 | |
| 15110 | (define-public python-uncertainties |
| 15111 | (package |
| 15112 | (name "python-uncertainties") |
| 15113 | (version "3.1.5") |
| 15114 | (source |
| 15115 | (origin |
| 15116 | (method url-fetch) |
| 15117 | (uri (pypi-uri "uncertainties" version)) |
| 15118 | (sha256 |
| 15119 | (base32 |
| 15120 | "00z9xl40czmqk0vmxjvmjvwb41r893l4dad7nj1nh6blw3kw28li")))) |
| 15121 | (build-system python-build-system) |
| 15122 | ;; While there are test files, there is no "tests" directory, so the tests |
| 15123 | ;; fail. |
| 15124 | (arguments '(#:tests? #false)) |
| 15125 | (propagated-inputs |
| 15126 | (list python-future)) |
| 15127 | (native-inputs |
| 15128 | (list python-nose python-numpy)) |
| 15129 | (home-page "https://uncertainties-python-package.readthedocs.io/") |
| 15130 | (synopsis "Calculations with uncertainties") |
| 15131 | (description |
| 15132 | "The uncertainties package transparently handles calculations with |
| 15133 | numbers with uncertainties. It can also yield the derivatives of any |
| 15134 | expression.") |
| 15135 | (license license:bsd-3))) |
| 15136 | |
| 15137 | (define-public python-unicodedata2 |
| 15138 | (package |
| 15139 | (name "python-unicodedata2") |
| 15140 | (version "14.0.0") |
| 15141 | (source |
| 15142 | (origin |
| 15143 | (method url-fetch) |
| 15144 | (uri (pypi-uri "unicodedata2" version)) |
| 15145 | (sha256 |
| 15146 | (base32 "110nnvh02ssp92xbmswy39aa186jrmb7m41x4220wigl8c0dzxs1")))) |
| 15147 | (build-system python-build-system) |
| 15148 | (home-page "https://github.com/fonttools/unicodedata2") |
| 15149 | (synopsis "Python unicodedata backport") |
| 15150 | (description "This package corresponds to the latest @code{unicodedata} |
| 15151 | standard Python module.") |
| 15152 | (license license:asl2.0))) |
| 15153 | |
| 15154 | (define-public python-asteval |
| 15155 | (package |
| 15156 | (name "python-asteval") |
| 15157 | (version "0.9.23") |
| 15158 | (source |
| 15159 | (origin |
| 15160 | (method url-fetch) |
| 15161 | (uri (pypi-uri "asteval" version)) |
| 15162 | (sha256 |
| 15163 | (base32 |
| 15164 | "0f54sd4w1a72ij1bcxs2x7dk9xf8bzclawijf1z18bqx9f96l2gm")))) |
| 15165 | (build-system python-build-system) |
| 15166 | (native-inputs |
| 15167 | (list python-pytest)) |
| 15168 | (home-page "https://github.com/newville/asteval") |
| 15169 | (synopsis "Minimalistic evaluator of Python expressions") |
| 15170 | (description |
| 15171 | "This package provides a minimalistic evaluator of Python expression |
| 15172 | using the @code{ast} module") |
| 15173 | (license license:expat))) |
| 15174 | |
| 15175 | (define-public python-lmfit |
| 15176 | (package |
| 15177 | (name "python-lmfit") |
| 15178 | (version "1.0.2") |
| 15179 | (source |
| 15180 | (origin |
| 15181 | (method url-fetch) |
| 15182 | (uri (pypi-uri "lmfit" version)) |
| 15183 | (sha256 |
| 15184 | (base32 |
| 15185 | "0iab33jjb60f8kn0k0cqb0vjp1mdskks2n3kpn97zkw5cvjhq2b7")))) |
| 15186 | (build-system python-build-system) |
| 15187 | (propagated-inputs |
| 15188 | (list python-asteval python-numpy python-scipy python-uncertainties)) |
| 15189 | (native-inputs |
| 15190 | (list python-pytest)) |
| 15191 | (home-page "https://lmfit.github.io/lmfit-py/") |
| 15192 | (synopsis "Least-Squares minimization with bounds and constraints") |
| 15193 | (description |
| 15194 | "Lmfit provides a high-level interface to non-linear optimization and |
| 15195 | curve fitting problems for Python. It builds on and extends many of the |
| 15196 | optimization methods of @code{scipy.optimize}. Initially inspired by (and |
| 15197 | named for) extending the Levenberg-Marquardt method from |
| 15198 | @code{scipy.optimize.leastsq}, lmfit now provides a number of useful |
| 15199 | enhancements to optimization and data fitting problems.") |
| 15200 | (license license:bsd-3))) |
| 15201 | |
| 15202 | (define-public python-bokeh |
| 15203 | (package |
| 15204 | (name "python-bokeh") |
| 15205 | (version "2.4.3") |
| 15206 | (source (origin |
| 15207 | (method url-fetch) |
| 15208 | (uri (pypi-uri "bokeh" version)) |
| 15209 | (sha256 |
| 15210 | (base32 |
| 15211 | "00sbhya9vfdv3yi07j6mxwx1x1h9497nhd3smdjrcdxgc48q0czg")))) |
| 15212 | (build-system python-build-system) |
| 15213 | (arguments |
| 15214 | `(#:phases |
| 15215 | (modify-phases %standard-phases |
| 15216 | (replace 'check |
| 15217 | (lambda* (#:key tests? #:allow-other-keys) |
| 15218 | (when tests? |
| 15219 | ;; These require selenium. |
| 15220 | (delete-file "tests/unit/bokeh/io/test_export.py") |
| 15221 | (delete-file "tests/unit/bokeh/io/test_webdriver.py") |
| 15222 | (delete-file "tests/unit/bokeh/embed/test_standalone.py") |
| 15223 | |
| 15224 | ;; Doesn't find ManagedServerLoop fixture |
| 15225 | (delete-file "tests/unit/bokeh/test_client_server.py") |
| 15226 | |
| 15227 | ;; This fails because of the Guix wrapper around pytest |
| 15228 | (delete-file "tests/unit/bokeh/io/test_util__io.py") |
| 15229 | |
| 15230 | ;; Fixture ipython not found. |
| 15231 | (delete-file "tests/unit/bokeh/application/handlers/test_notebook__handlers.py") |
| 15232 | (delete-file "tests/unit/bokeh/command/subcommands/test_info.py") |
| 15233 | |
| 15234 | ;; pd fixture not found. |
| 15235 | (delete-file "tests/unit/bokeh/models/test_mappers.py") |
| 15236 | (delete-file "tests/unit/bokeh/models/util/test_structure.py") |
| 15237 | (delete-file "tests/unit/bokeh/plotting/test__plot.py") |
| 15238 | (delete-file "tests/unit/bokeh/plotting/test__graph.py") |
| 15239 | (delete-file "tests/unit/bokeh/plotting/test_figure.py") |
| 15240 | (delete-file "tests/unit/bokeh/core/test_json_encoder.py") |
| 15241 | (delete-file "tests/unit/bokeh/core/property/test_bases.py") |
| 15242 | (delete-file "tests/unit/bokeh/core/property/test_container.py") |
| 15243 | (delete-file "tests/unit/bokeh/core/property/test_dataspec.py") |
| 15244 | (delete-file "tests/unit/bokeh/core/property/test_datetime.py") |
| 15245 | (delete-file "tests/unit/bokeh/core/property/test_pandas.py") |
| 15246 | |
| 15247 | ;; nx fixture not found. |
| 15248 | (delete-file "tests/unit/bokeh/plotting/test_graph.py") |
| 15249 | (delete-file "tests/unit/bokeh/models/test_graphs.py") |
| 15250 | (delete-file "tests/unit/bokeh/io/test_showing.py") |
| 15251 | (delete-file "tests/unit/bokeh/document/test_events__document.py") |
| 15252 | |
| 15253 | ;; These tests need external sample data |
| 15254 | (delete-file-recursively "tests/unit/bokeh/sampledata/") |
| 15255 | |
| 15256 | ;; Attempts to install something via npm. |
| 15257 | (delete-file "tests/unit/bokeh/test_ext.py") |
| 15258 | |
| 15259 | ;; More failures due to set up problems. |
| 15260 | (delete-file "tests/unit/bokeh/server/test_server__server.py") |
| 15261 | (delete-file "tests/unit/bokeh/server/test_tornado__server.py") |
| 15262 | (delete-file "tests/unit/bokeh/util/test_serialization.py") |
| 15263 | (delete-file "tests/unit/bokeh/util/test_hex.py") |
| 15264 | (delete-file "tests/unit/bokeh/models/test_sources.py") |
| 15265 | (delete-file "tests/unit/bokeh/embed/test_bundle.py") |
| 15266 | |
| 15267 | (invoke "pytest" "-v"))))))) |
| 15268 | (propagated-inputs |
| 15269 | (list node-lts |
| 15270 | python-jinja2 |
| 15271 | python-numpy |
| 15272 | python-packaging |
| 15273 | python-pillow |
| 15274 | python-pyyaml |
| 15275 | python-tornado |
| 15276 | python-typing-extensions)) |
| 15277 | (native-inputs |
| 15278 | (list python-beautifulsoup4 |
| 15279 | python-dateutil |
| 15280 | python-flaky |
| 15281 | python-nbconvert |
| 15282 | python-pandas |
| 15283 | python-pytest |
| 15284 | python-pytz |
| 15285 | python-requests)) |
| 15286 | (home-page "https://github.com/bokeh/bokeh") |
| 15287 | (synopsis "Interactive plots and applications in the browser from Python") |
| 15288 | (description |
| 15289 | "This package provides tools for interactive plots and applications in the |
| 15290 | browser from Python.") |
| 15291 | (license license:bsd-3))) |
| 15292 | |
| 15293 | (define-public python-boto |
| 15294 | (package |
| 15295 | (name "python-boto") |
| 15296 | (version "2.49.0") |
| 15297 | (source (origin |
| 15298 | (method url-fetch) |
| 15299 | (uri (pypi-uri "boto" version)) |
| 15300 | (sha256 |
| 15301 | (base32 |
| 15302 | "0njy09c4wjx7ipxhwi6vv404nflyiasl78vwwxxpclnql903n3ga")))) |
| 15303 | (build-system python-build-system) |
| 15304 | (arguments |
| 15305 | ;; XXX: This package is unmaintained and has problems with newer versions |
| 15306 | ;; of Python 3 as well as test libraries. 'python-moto' still uses a |
| 15307 | ;; subset of this library, so keep it around for now, but disable tests. |
| 15308 | '(#:tests? #f)) |
| 15309 | (propagated-inputs |
| 15310 | (list python-paramiko python-requests)) |
| 15311 | (home-page "https://github.com/boto/boto") |
| 15312 | (synopsis "Python interfaces for Amazon Web Services") |
| 15313 | (description |
| 15314 | "This package provides various facilities for interacting with Amazon |
| 15315 | Web Services through Python. |
| 15316 | |
| 15317 | This software is unmaintained, and new projects should use @code{boto3} instead.") |
| 15318 | (license license:expat))) |
| 15319 | |
| 15320 | (define-public python-botocore |
| 15321 | ;; Note: When updating botocore, also make sure that boto3 and awscli |
| 15322 | ;; are compatible. |
| 15323 | (package |
| 15324 | (name "python-botocore") |
| 15325 | (version "1.24.35") |
| 15326 | (source |
| 15327 | (origin |
| 15328 | (method url-fetch) |
| 15329 | (uri (pypi-uri "botocore" version)) |
| 15330 | (sha256 |
| 15331 | (base32 |
| 15332 | "0rv8mvhq5s373zdjs2yb45hzvqcqdh2lp2rbb21jjc8ciwnl5d9n")))) |
| 15333 | (build-system python-build-system) |
| 15334 | (arguments |
| 15335 | ;; FIXME: Many tests are failing. |
| 15336 | '(#:tests? #f)) |
| 15337 | (propagated-inputs |
| 15338 | (list python-dateutil python-jmespath python-urllib3)) |
| 15339 | (home-page "https://github.com/boto/botocore") |
| 15340 | (synopsis "Low-level interface to AWS") |
| 15341 | (description "Botocore is a Python library that provides a low-level |
| 15342 | interface to the Amazon Web Services (AWS) API.") |
| 15343 | (license license:asl2.0))) |
| 15344 | |
| 15345 | (define-public python-boto3 |
| 15346 | (package |
| 15347 | (name "python-boto3") |
| 15348 | (version "1.21.35") |
| 15349 | (home-page "https://github.com/boto/boto3") |
| 15350 | (source (origin |
| 15351 | (method git-fetch) |
| 15352 | (uri (git-reference (url home-page) (commit version))) |
| 15353 | (file-name (git-file-name name version)) |
| 15354 | (sha256 |
| 15355 | (base32 |
| 15356 | "1kdyf238rpfldnpzs0rdh3nhjn6hwfym4faskyhzlgzkf1smmbg1")))) |
| 15357 | (arguments |
| 15358 | `(#:phases |
| 15359 | (modify-phases %standard-phases |
| 15360 | (add-after 'unpack 'delete-network-tests |
| 15361 | ;; Deleting integration tests because they are trying to connect to AWS. |
| 15362 | (lambda _ |
| 15363 | (delete-file-recursively "tests/integration"))) |
| 15364 | (replace 'check |
| 15365 | (lambda* (#:key tests? #:allow-other-keys) |
| 15366 | (when tests? |
| 15367 | (invoke "pytest" "-v"))))))) |
| 15368 | (build-system python-build-system) |
| 15369 | (native-inputs |
| 15370 | (list python-nose python-mock python-pytest)) |
| 15371 | (propagated-inputs |
| 15372 | (list python-botocore python-jmespath python-s3transfer)) |
| 15373 | (synopsis "AWS SDK for Python") |
| 15374 | (description |
| 15375 | "Boto3 is a Python library for writing programs that interact with |
| 15376 | @acronym{AWS,Amazon Web Services}.") |
| 15377 | (license license:asl2.0))) |
| 15378 | |
| 15379 | (define-public python-pyfiglet |
| 15380 | (package |
| 15381 | (name "python-pyfiglet") |
| 15382 | (version "0.8.post1") |
| 15383 | (source |
| 15384 | (origin |
| 15385 | (method url-fetch) |
| 15386 | (uri (pypi-uri "pyfiglet" version)) |
| 15387 | (sha256 |
| 15388 | (base32 |
| 15389 | "0f9n2076ga2ccsg174k2d7n0z4d44ml96yzc72s6g4nhalbk5hn6")))) |
| 15390 | (build-system python-build-system) |
| 15391 | (home-page "https://github.com/pwaller/pyfiglet") |
| 15392 | (synopsis "Draw ASCII art big letters in Python") |
| 15393 | (description "This module lets you draw large letter from ordinary characters |
| 15394 | in pure Python.") |
| 15395 | (license license:expat))) |
| 15396 | |
| 15397 | (define-public python-xdo |
| 15398 | (package |
| 15399 | (name "python-xdo") |
| 15400 | (version "0.3") |
| 15401 | (source (origin |
| 15402 | (method url-fetch) |
| 15403 | (uri (string-append |
| 15404 | "http://http.debian.net/debian/pool/main/p/python-xdo/" |
| 15405 | "python-xdo_" version ".orig.tar.gz")) |
| 15406 | (sha256 |
| 15407 | (base32 |
| 15408 | "1vqh1n5yy5dhnq312kwrl90fnck4v26is3lq3lxdvcn60vv19da0")))) |
| 15409 | (build-system python-build-system) |
| 15410 | (arguments |
| 15411 | '(#:phases |
| 15412 | (modify-phases %standard-phases |
| 15413 | (add-before 'install 'patch-libxdo-path |
| 15414 | ;; Hardcode the path of dynamically loaded libxdo library. |
| 15415 | (lambda* (#:key inputs #:allow-other-keys) |
| 15416 | (let ((libxdo (string-append |
| 15417 | (assoc-ref inputs "xdotool") |
| 15418 | "/lib/libxdo.so")) |
| 15419 | (libc (string-append |
| 15420 | (assoc-ref inputs "libc") |
| 15421 | "/lib/libc.so.6"))) |
| 15422 | (substitute* "xdo/_xdo.py" |
| 15423 | (("find_library\\(\"xdo\"\\)") |
| 15424 | (simple-format #f "\"~a\"" libxdo)) |
| 15425 | (("ctypes\\.util\\.find_library\\('libc'\\)") |
| 15426 | (simple-format #f "\"~a\"" libc))) |
| 15427 | #t)))) |
| 15428 | #:tests? #f)) ; no tests provided |
| 15429 | (propagated-inputs |
| 15430 | (list python-six)) |
| 15431 | (inputs |
| 15432 | `(("xdotool" ,xdotool) |
| 15433 | ("libX11" ,libx11))) |
| 15434 | (home-page "https://tracker.debian.org/pkg/python-xdo") |
| 15435 | (synopsis "Python library for simulating X11 keyboard/mouse input") |
| 15436 | (description "Provides bindings to libxdo for manipulating X11 via simulated |
| 15437 | input. (Note that this is mostly a legacy library; you may wish to look at |
| 15438 | python-xdo for newer bindings.)") |
| 15439 | (license license:bsd-3))) |
| 15440 | |
| 15441 | (define-public python-xdoctest |
| 15442 | (package |
| 15443 | (name "python-xdoctest") |
| 15444 | (version "1.0.0") |
| 15445 | (source |
| 15446 | (origin |
| 15447 | (method url-fetch) |
| 15448 | (uri (pypi-uri "xdoctest" version)) |
| 15449 | (sha256 |
| 15450 | (base32 "0bgbmb9nqv95f9gfxqifqff1qaz5fnanjqy4hv7ygrjp2kksgfvy")))) |
| 15451 | (build-system python-build-system) |
| 15452 | (arguments |
| 15453 | (list #:phases |
| 15454 | #~(modify-phases %standard-phases |
| 15455 | (replace 'check |
| 15456 | (lambda* (#:key tests? #:allow-other-keys) |
| 15457 | (when tests? |
| 15458 | ;; A writable HOME is needed by the |
| 15459 | ;; 'import_module_from_path' test. |
| 15460 | (setenv "HOME" "/tmp") |
| 15461 | (invoke "pytest" "-vv"))))))) |
| 15462 | (propagated-inputs (list python-six)) |
| 15463 | (native-inputs (list python-pytest which)) |
| 15464 | (home-page "https://github.com/Erotemic/xdoctest") |
| 15465 | (synopsis "Rewrite of the Python builtin doctest module") |
| 15466 | (description "This package provides a rewrite of the builtin doctest |
| 15467 | module which leverages the Python @acronym{AST, Abstract Syntax Tree} instead |
| 15468 | of @acronym{REGEXPs, regular expressions}.") |
| 15469 | (license license:asl2.0))) |
| 15470 | |
| 15471 | (define-public python-mako |
| 15472 | (package |
| 15473 | (name "python-mako") |
| 15474 | (version "1.1.3") |
| 15475 | (source |
| 15476 | (origin |
| 15477 | (method url-fetch) |
| 15478 | (uri (pypi-uri "Mako" version)) |
| 15479 | (sha256 |
| 15480 | (base32 |
| 15481 | "09ywrmhr6gdyfx6d5727wwjnz73i6rklqcb4c14m7sqc830wi5c1")))) |
| 15482 | (build-system python-build-system) |
| 15483 | (arguments |
| 15484 | `(#:phases (modify-phases %standard-phases |
| 15485 | (replace 'check |
| 15486 | (lambda* (#:key tests? #:allow-other-keys) |
| 15487 | (if tests? |
| 15488 | (invoke "nosetests" "-v") |
| 15489 | (format #t "test suite not run~%")) |
| 15490 | #t))))) |
| 15491 | (propagated-inputs |
| 15492 | (list python-markupsafe)) |
| 15493 | (native-inputs |
| 15494 | (list python-mock python-nose)) |
| 15495 | (home-page "https://www.makotemplates.org/") |
| 15496 | (synopsis "Templating language for Python") |
| 15497 | (description "Mako is a templating language for Python that compiles |
| 15498 | templates into Python modules.") |
| 15499 | (license license:expat))) |
| 15500 | |
| 15501 | (define-public python-waitress |
| 15502 | (package |
| 15503 | (name "python-waitress") |
| 15504 | (version "1.1.0") |
| 15505 | (source |
| 15506 | (origin |
| 15507 | (method url-fetch) |
| 15508 | (uri (pypi-uri "waitress" version)) |
| 15509 | (patches (search-patches "python-waitress-fix-tests.patch")) |
| 15510 | (sha256 |
| 15511 | (base32 |
| 15512 | "1a85gyji0kajc3p0s1pwwfm06w4wfxjkvvl4rnrz3h164kbd6g6k")))) |
| 15513 | (build-system python-build-system) |
| 15514 | (home-page "https://github.com/Pylons/waitress") |
| 15515 | (synopsis "Waitress WSGI server") |
| 15516 | (description "Waitress is meant to be a production-quality pure-Python WSGI |
| 15517 | server with very acceptable performance.") |
| 15518 | (license license:zpl2.1))) |
| 15519 | |
| 15520 | (define-public python-whichcraft |
| 15521 | (package |
| 15522 | (name "python-whichcraft") |
| 15523 | (version "0.6.1") |
| 15524 | (source |
| 15525 | (origin |
| 15526 | (method url-fetch) |
| 15527 | (uri (pypi-uri "whichcraft" version)) |
| 15528 | (sha256 |
| 15529 | (base32 |
| 15530 | "11yfkzyplizdgndy34vyd5qlmr1n5mxis3a3svxmx8fnccdvknxc")))) |
| 15531 | (build-system python-build-system) |
| 15532 | (native-inputs |
| 15533 | (list python-pytest)) |
| 15534 | (home-page "https://github.com/pydanny/whichcraft") |
| 15535 | (synopsis "Cross-platform cross-python shutil.which functionality") |
| 15536 | (description |
| 15537 | "This package provides a shim of the shutil.which function that's |
| 15538 | designed to work across multiple versions of Python.") |
| 15539 | (license license:bsd-3))) |
| 15540 | |
| 15541 | (define-public python-cookiecutter |
| 15542 | (package |
| 15543 | (name "python-cookiecutter") |
| 15544 | (version "1.7.3") |
| 15545 | (source |
| 15546 | (origin |
| 15547 | (method url-fetch) |
| 15548 | (uri (pypi-uri "cookiecutter" version)) |
| 15549 | (sha256 |
| 15550 | (base32 "0mx49whhwcxmvcak27zr7p7ndzkn3w7psfd7fzh3n91fi1r4v6kb")))) |
| 15551 | (build-system python-build-system) |
| 15552 | (native-inputs |
| 15553 | (list python-freezegun python-pytest python-pytest-catchlog |
| 15554 | python-pytest-cov python-pytest-mock)) |
| 15555 | (propagated-inputs |
| 15556 | (list python-binaryornot |
| 15557 | python-click |
| 15558 | python-future |
| 15559 | python-jinja2 |
| 15560 | python-jinja2-time |
| 15561 | python-poyo |
| 15562 | python-requests |
| 15563 | python-slugify |
| 15564 | python-text-unidecode |
| 15565 | python-whichcraft)) |
| 15566 | (home-page "https://github.com/cookiecutter/cookiecutter") |
| 15567 | (synopsis |
| 15568 | "Command-line utility that creates projects from project templates") |
| 15569 | (description |
| 15570 | "This package provides a command-line utility that creates projects from |
| 15571 | project templates, e.g. creating a Python package project from a Python package |
| 15572 | project template.") |
| 15573 | (license license:bsd-3))) |
| 15574 | |
| 15575 | (define-public python-pyquery |
| 15576 | (package |
| 15577 | (name "python-pyquery") |
| 15578 | (version "1.2.17") |
| 15579 | (source |
| 15580 | (origin |
| 15581 | (method url-fetch) |
| 15582 | (uri (pypi-uri "pyquery" version)) |
| 15583 | (sha256 |
| 15584 | (base32 |
| 15585 | "1xia20wm0vx5dk85kcwgh13bylz8qh47ffjxssd2586r60xi783a")))) |
| 15586 | (build-system python-build-system) |
| 15587 | (native-inputs |
| 15588 | (list python-webob python-webtest)) |
| 15589 | (propagated-inputs |
| 15590 | (list python-lxml python-cssselect)) |
| 15591 | (home-page "https://github.com/gawel/pyquery") |
| 15592 | (synopsis "Make jQuery-like queries on xml documents") |
| 15593 | (description "pyquery allows you to make jQuery queries on xml documents. |
| 15594 | The API is as much as possible the similar to jQuery. pyquery uses lxml for |
| 15595 | fast xml and html manipulation.") |
| 15596 | (license license:bsd-3))) |
| 15597 | |
| 15598 | (define-public python-anyjson |
| 15599 | (package |
| 15600 | (name "python-anyjson") |
| 15601 | (version "0.3.3") |
| 15602 | (source |
| 15603 | (origin |
| 15604 | (method url-fetch) |
| 15605 | (uri (pypi-uri "anyjson" version)) |
| 15606 | (sha256 |
| 15607 | (base32 |
| 15608 | "1fjph4alvcscsl5d4b6qpv1yh31jy05jxi1l0xff7lws7j32v09p")))) |
| 15609 | (build-system python-build-system) |
| 15610 | (arguments |
| 15611 | `(;; We could possibly get tests working, but on Python 3 it's not so easy. |
| 15612 | ;; Very strangely, 2to3 is run *during setup.py install* (or bdist, or |
| 15613 | ;; whatever) so this transformation needs to be done before the tests |
| 15614 | ;; can be run. Maybe we could add a build step to transform beforehand |
| 15615 | ;; but it could be annoying/difficult. |
| 15616 | ;; We can enable tests for the Python 2 version, though, and do below. |
| 15617 | #:tests? #f)) |
| 15618 | (home-page "https://bitbucket.org/runeh/anyjson/") |
| 15619 | (synopsis |
| 15620 | "Wraps best available JSON implementation in a common interface") |
| 15621 | (description |
| 15622 | "Anyjson loads whichever is the fastest JSON module installed |
| 15623 | and provides a uniform API regardless of which JSON implementation is used.") |
| 15624 | (license license:bsd-3))) |
| 15625 | |
| 15626 | (define-public python-amqp |
| 15627 | (package |
| 15628 | (name "python-amqp") |
| 15629 | (version "5.1.1") |
| 15630 | (source |
| 15631 | (origin |
| 15632 | (method url-fetch) |
| 15633 | (uri (pypi-uri "amqp" version)) |
| 15634 | (sha256 |
| 15635 | (base32 "1qmmffiy48nady7is8529vxcyqbq88v5zgawqr3fk4q8rkz166rc")))) |
| 15636 | (build-system python-build-system) |
| 15637 | (arguments |
| 15638 | (list |
| 15639 | #:phases |
| 15640 | #~(modify-phases %standard-phases |
| 15641 | (replace 'check |
| 15642 | (lambda* (#:key tests? #:allow-other-keys) |
| 15643 | (when tests? |
| 15644 | (invoke "pytest" "-vv" |
| 15645 | "-c" "/dev/null" ;take control over pytest options |
| 15646 | ;; Integration tests require network connectivity. |
| 15647 | "--ignore" "t/integration"))))))) |
| 15648 | (native-inputs (list python-pytest)) |
| 15649 | (propagated-inputs (list python-vine)) |
| 15650 | (home-page "https://github.com/celery/py-amqp") |
| 15651 | (synopsis "Low-level AMQP client for Python (fork of amqplib)") |
| 15652 | (description |
| 15653 | "This is a fork of amqplib which was originally written by Barry Pederson. |
| 15654 | It is maintained by the Celery project, and used by kombu as a pure python |
| 15655 | alternative when librabbitmq is not available.") |
| 15656 | (license license:lgpl2.1+))) |
| 15657 | |
| 15658 | (define-public python-beniget |
| 15659 | (package |
| 15660 | (name "python-beniget") |
| 15661 | (version "0.4.1") |
| 15662 | (home-page "https://github.com/serge-sans-paille/beniget") |
| 15663 | (source |
| 15664 | (origin |
| 15665 | (method url-fetch) |
| 15666 | (uri (pypi-uri "beniget" version)) |
| 15667 | (sha256 |
| 15668 | (base32 "035c4f78yllpw2c5p1w92520rilm7nnpsqh7yvi3qmfhi8xlnmbm")))) |
| 15669 | (build-system python-build-system) |
| 15670 | (propagated-inputs |
| 15671 | (list python-gast)) |
| 15672 | (synopsis "Extract semantic information about static Python code") |
| 15673 | (description |
| 15674 | "Beniget is a collection of analyzers for Python @acronym{AST, |
| 15675 | Abstract Syntax Tree}. It is a building block for writing a static analyzer |
| 15676 | or compiler for Python.") |
| 15677 | (license license:bsd-3))) |
| 15678 | |
| 15679 | (define-public python-txamqp |
| 15680 | (package |
| 15681 | (name "python-txamqp") |
| 15682 | (version "0.8.2") |
| 15683 | (source |
| 15684 | (origin |
| 15685 | (method url-fetch) |
| 15686 | (uri (pypi-uri "txAMQP" version)) |
| 15687 | (sha256 |
| 15688 | (base32 |
| 15689 | "0jd9864k3csc06kipiwzjlk9mq4054s8kzk5q1cfnxj8572s4iv4")))) |
| 15690 | (build-system python-build-system) |
| 15691 | (propagated-inputs |
| 15692 | (list python-six python-twisted)) |
| 15693 | (home-page "https://github.com/txamqp/txamqp") |
| 15694 | (synopsis "Communicate with AMQP peers and brokers using Twisted") |
| 15695 | (description |
| 15696 | "This package provides a Python library for communicating with AMQP peers |
| 15697 | and brokers using the asynchronous networking framework Twisted. It contains |
| 15698 | all the necessary code to connect, send and receive messages to/from an |
| 15699 | AMQP-compliant peer or broker (Qpid, OpenAMQ, RabbitMQ) using Twisted. It |
| 15700 | also includes support for using Thrift RPC over AMQP in Twisted |
| 15701 | applications.") |
| 15702 | (license license:asl2.0))) |
| 15703 | |
| 15704 | (define-public python-kombu |
| 15705 | (package |
| 15706 | (name "python-kombu") |
| 15707 | (version "5.2.4") |
| 15708 | (source |
| 15709 | (origin |
| 15710 | (method url-fetch) |
| 15711 | (uri (pypi-uri "kombu" version)) |
| 15712 | (sha256 |
| 15713 | (base32 "044ng79gj04668kf5fmy7fjkw8302xyapskkn65ym52zfbpf7kip")))) |
| 15714 | (build-system python-build-system) |
| 15715 | (arguments |
| 15716 | (list |
| 15717 | #:phases |
| 15718 | #~(modify-phases %standard-phases |
| 15719 | (replace 'check |
| 15720 | (lambda* (#:key tests? #:allow-other-keys) |
| 15721 | (when tests? |
| 15722 | (invoke "pytest" "-vv" |
| 15723 | ;; The transport tests attempt to pass messages to |
| 15724 | ;; many different databases. |
| 15725 | "--ignore" "t/unit/transport"))))))) |
| 15726 | (native-inputs |
| 15727 | (list python-case python-pyro4 python-pytest-sugar |
| 15728 | python-pytest python-pytz)) |
| 15729 | (propagated-inputs |
| 15730 | (list python-amqp python-cached-property python-vine)) |
| 15731 | (home-page "https://kombu.readthedocs.io") |
| 15732 | (synopsis "Message passing library for Python") |
| 15733 | (description "The aim of Kombu is to make messaging in Python as easy as |
| 15734 | possible by providing an idiomatic high-level interface for the AMQ protocol, |
| 15735 | and also provide proven and tested solutions to common messaging problems. |
| 15736 | AMQP is the Advanced Message Queuing Protocol, an open standard protocol for |
| 15737 | message orientation, queuing, routing, reliability and security, for which the |
| 15738 | RabbitMQ messaging server is the most popular implementation.") |
| 15739 | (license license:bsd-3))) |
| 15740 | |
| 15741 | (define-public python-billiard |
| 15742 | (package |
| 15743 | (name "python-billiard") |
| 15744 | (version "3.6.4.0") |
| 15745 | (source |
| 15746 | (origin |
| 15747 | (method url-fetch) |
| 15748 | (uri (pypi-uri "billiard" version)) |
| 15749 | (sha256 |
| 15750 | (base32 "0ismj2p8c66ykpss94rs0bfra5agxxmljz8r3gaq79r8valfb799")))) |
| 15751 | (build-system python-build-system) |
| 15752 | (arguments |
| 15753 | `(#:phases |
| 15754 | (modify-phases %standard-phases |
| 15755 | (add-after 'unpack 'remove-win-files |
| 15756 | (lambda _ |
| 15757 | (for-each delete-file-recursively |
| 15758 | ;; test_multiprocessing seem to be written in Python2. |
| 15759 | '("t/integration/tests/test_multiprocessing.py" |
| 15760 | "t/unit/test_win32.py" |
| 15761 | "billiard/popen_spawn_win32.py" |
| 15762 | "billiard/_win.py"))))))) |
| 15763 | (native-inputs |
| 15764 | (list python-case python-psutil python-pytest)) |
| 15765 | (home-page "https://github.com/celery/billiard") |
| 15766 | (synopsis "Python multiprocessing fork with improvements and bugfixes") |
| 15767 | (description |
| 15768 | "Billiard is a fork of the Python 2.7 multiprocessing package. The |
| 15769 | multiprocessing package itself is a renamed and updated version of R Oudkerk's |
| 15770 | pyprocessing package. This standalone variant is intended to be compatible with |
| 15771 | Python 2.4 and 2.5, and will draw its fixes/improvements from python-trunk.") |
| 15772 | (license license:bsd-3))) |
| 15773 | |
| 15774 | (define-public python-celery |
| 15775 | (package |
| 15776 | (name "python-celery") |
| 15777 | (version "5.2.6") |
| 15778 | (source |
| 15779 | (origin |
| 15780 | (method url-fetch) |
| 15781 | (uri (pypi-uri "celery" version)) |
| 15782 | (sha256 |
| 15783 | (base32 "109lcqarrbmh95sk1dm4yxayq1h3i27f4w23ndk64mqgyfnqqffi")))) |
| 15784 | (build-system python-build-system) |
| 15785 | (arguments |
| 15786 | '(#:phases |
| 15787 | (modify-phases %standard-phases |
| 15788 | (add-after 'unpack 'relax-requirements |
| 15789 | (lambda _ |
| 15790 | (substitute* "requirements/default.txt" |
| 15791 | (("pytz.*") |
| 15792 | "pytz\n")))) |
| 15793 | (replace 'check |
| 15794 | (lambda* (#:key tests? #:allow-other-keys) |
| 15795 | (when tests? |
| 15796 | (invoke "python" "-m" "pytest" "t" |
| 15797 | "--ignore" "t/integration" ;hangs tests |
| 15798 | ;; The MongoDB backend test appears to expect an older |
| 15799 | ;; version of MongoDB which provided its own bson |
| 15800 | ;; module, fails with " AttributeError: module 'bson' |
| 15801 | ;; has no attribute 'encode'". |
| 15802 | "--ignore" "t/unit/backends/test_mongodb.py" |
| 15803 | ;; AssertionErrors |
| 15804 | "-k" "not test_check_privileges_no_fchown "))))))) |
| 15805 | (native-inputs |
| 15806 | (list python-case |
| 15807 | python-dnspython |
| 15808 | python-flaky |
| 15809 | python-iniconfig |
| 15810 | python-moto |
| 15811 | python-msgpack |
| 15812 | python-pytest |
| 15813 | python-pytest-celery |
| 15814 | python-pytest-subtests |
| 15815 | python-pytest-timeout |
| 15816 | python-toml)) |
| 15817 | (propagated-inputs |
| 15818 | (list python-billiard |
| 15819 | python-click |
| 15820 | python-click-didyoumean |
| 15821 | python-click-plugins |
| 15822 | python-click-repl |
| 15823 | python-kombu |
| 15824 | python-pytz |
| 15825 | python-vine)) |
| 15826 | (home-page "https://celeryproject.org") |
| 15827 | (synopsis "Distributed Task Queue") |
| 15828 | (description "Celery is an asynchronous task queue/job queue based on |
| 15829 | distributed message passing. It is focused on real-time operation, but |
| 15830 | supports scheduling as well. The execution units, called tasks, are executed |
| 15831 | concurrently on a single or more worker servers using multiprocessing, |
| 15832 | Eventlet, or gevent. Tasks can execute asynchronously (in the background) or |
| 15833 | synchronously (wait until ready).") |
| 15834 | (license license:bsd-3))) |
| 15835 | |
| 15836 | (define-public python-translitcodec |
| 15837 | (package |
| 15838 | (name "python-translitcodec") |
| 15839 | (version "0.4.0") |
| 15840 | (source |
| 15841 | (origin |
| 15842 | (method url-fetch) |
| 15843 | (uri (pypi-uri "translitcodec" version)) |
| 15844 | (sha256 |
| 15845 | (base32 |
| 15846 | "10x6pvblkzky1zhjs8nmx64nb9jdzxad4bxhq4iwv0j4z2aqjnki")))) |
| 15847 | (build-system python-build-system) |
| 15848 | (arguments |
| 15849 | `(#:tests? #f)) ; no tests provided |
| 15850 | (home-page |
| 15851 | "https://github.com/claudep/translitcodec") |
| 15852 | (synopsis |
| 15853 | "Unicode to 8-bit charset transliteration codec") |
| 15854 | (description |
| 15855 | "This package contains codecs for transliterating ISO 10646 texts into |
| 15856 | best-effort representations using smaller coded character sets (ASCII, |
| 15857 | ISO 8859, etc.).") |
| 15858 | (license license:expat))) |
| 15859 | |
| 15860 | (define-public python-anyqt |
| 15861 | (package |
| 15862 | (name "python-anyqt") |
| 15863 | (version "0.0.13") |
| 15864 | (source |
| 15865 | (origin |
| 15866 | (method url-fetch) |
| 15867 | (uri (pypi-uri "AnyQt" version)) |
| 15868 | (sha256 |
| 15869 | (base32 "0z7myf0mp1qx4gza6ncqyq9whk67vblmh9n3klk19dv4aakjml2f")))) |
| 15870 | (build-system python-build-system) |
| 15871 | (arguments |
| 15872 | `(#:tests? #f ;there are no tests |
| 15873 | #:phases |
| 15874 | (modify-phases %standard-phases |
| 15875 | (add-after 'unpack 'delete-files |
| 15876 | ;; Delete files related to other operating systems. |
| 15877 | (lambda _ |
| 15878 | (delete-file "AnyQt/QtMacExtras.py") |
| 15879 | (delete-file "AnyQt/QtWinExtras.py")))))) |
| 15880 | (home-page "https://github.com/ales-erjavec/anyqt") |
| 15881 | (synopsis "PyQt4/PyQt5 compatibility layer") |
| 15882 | (description "AnyQt is a PyQt4/PyQt5 compatibility layer.") |
| 15883 | (license license:gpl3))) |
| 15884 | |
| 15885 | (define-public python-pyqtgraph |
| 15886 | (package |
| 15887 | (name "python-pyqtgraph") |
| 15888 | (version "0.12.1") |
| 15889 | (source |
| 15890 | (origin |
| 15891 | (method url-fetch) |
| 15892 | (uri (pypi-uri "pyqtgraph" version)) |
| 15893 | (sha256 |
| 15894 | (base32 "0kc7ncv0lr3spni29i9g8nszyr4xinswqi2zzs6v8kqqi593pvyj")))) |
| 15895 | (build-system python-build-system) |
| 15896 | (arguments |
| 15897 | `(#:phases |
| 15898 | (modify-phases %standard-phases |
| 15899 | (add-before 'check 'set-home-and-qpa |
| 15900 | (lambda _ |
| 15901 | (setenv "HOME" "/tmp") |
| 15902 | (setenv "QT_QPA_PLATFORM" "offscreen") |
| 15903 | #t)) |
| 15904 | (replace 'check |
| 15905 | (lambda* (#:key inputs outputs #:allow-other-keys) |
| 15906 | (add-installed-pythonpath inputs outputs) |
| 15907 | (invoke "pytest" "-vv" "-k" |
| 15908 | (string-append |
| 15909 | ;; These tests try to download online data. |
| 15910 | "not test_PolyLineROI" |
| 15911 | " and not test_getArrayRegion_axisorder" |
| 15912 | " and not test_getArrayRegion" |
| 15913 | " and not test_PlotCurveItem" |
| 15914 | " and not test_NonUniformImage_colormap" |
| 15915 | " and not test_NonUniformImage_lut" |
| 15916 | " and not test_ImageItem_axisorder" |
| 15917 | " and not test_ImageItem" |
| 15918 | ;; The test_reload test fails and suggests adding |
| 15919 | ;; "--assert=plain" to the pytest command, but it |
| 15920 | ;; doesn't solve the failure. |
| 15921 | " and not test_reload"))))))) |
| 15922 | (native-inputs |
| 15923 | (list python-pytest python-pytest-cov python-pytest-xdist)) |
| 15924 | (inputs |
| 15925 | (list qtbase-5)) |
| 15926 | (propagated-inputs |
| 15927 | (list python-h5py python-numpy python-pyopengl python-scipy |
| 15928 | python-pyqt-without-qtwebkit)) |
| 15929 | (home-page "http://www.pyqtgraph.org") |
| 15930 | (synopsis "Scientific graphics and GUI library for Python") |
| 15931 | (description |
| 15932 | "PyQtGraph is a Pure-python graphics library for PyQt5, PyQt6, PySide2 |
| 15933 | and PySide6. It is intended for use in mathematics, scientific or engineering |
| 15934 | applications.") |
| 15935 | (license license:expat))) |
| 15936 | |
| 15937 | (define-public python-qasync |
| 15938 | (package |
| 15939 | (name "python-qasync") |
| 15940 | (version "0.22.0") |
| 15941 | (source |
| 15942 | (origin |
| 15943 | ;; There are no tests in the PyPI tarball. |
| 15944 | (method git-fetch) |
| 15945 | (uri (git-reference |
| 15946 | (url "https://github.com/CabbageDevelopment/qasync/") |
| 15947 | (commit (string-append "v" version)))) |
| 15948 | (file-name (git-file-name name version)) |
| 15949 | (sha256 |
| 15950 | (base32 "1q9cllrwf94whr0f6mipa0hdq1rcyqvklwx19g35g2dav8f3xkjl")))) |
| 15951 | (build-system python-build-system) |
| 15952 | (arguments |
| 15953 | `(#:test-target "pytest" |
| 15954 | #:phases |
| 15955 | (modify-phases %standard-phases |
| 15956 | (add-before 'check 'set-qpa |
| 15957 | (lambda _ |
| 15958 | (setenv "QT_QPA_PLATFORM" "offscreen")))))) |
| 15959 | (native-inputs |
| 15960 | (list python-pytest python-pytest-runner)) |
| 15961 | (propagated-inputs |
| 15962 | (list python-pyqt)) |
| 15963 | (home-page "https://github.com/CabbageDevelopment/qasync") |
| 15964 | (synopsis "Implementation of the PEP 3156 Event-Loop with Qt") |
| 15965 | (description |
| 15966 | "@code{qasync} allows coroutines to be used in PyQt/PySide applications |
| 15967 | by providing an implementation of the PEP 3156 event-loop.") |
| 15968 | (license license:bsd-2))) |
| 15969 | |
| 15970 | (define-public python-editor |
| 15971 | (package |
| 15972 | (name "python-editor") |
| 15973 | (version "1.0.4") |
| 15974 | (source |
| 15975 | (origin |
| 15976 | (method url-fetch) |
| 15977 | (uri (pypi-uri "python-editor" version)) |
| 15978 | (sha256 |
| 15979 | (base32 |
| 15980 | "0yrjh8w72ivqxi4i7xsg5b1vz15x8fg51xra7c3bgfyxqnyadzai")))) |
| 15981 | (build-system python-build-system) |
| 15982 | (arguments |
| 15983 | '(#:tests? #f)) ;XXX: needs a TTY and an editor |
| 15984 | (home-page "https://github.com/fmoo/python-editor") |
| 15985 | (synopsis "Programmatically open an editor, capture the result") |
| 15986 | (description |
| 15987 | "python-editor is a library that provides the editor module for |
| 15988 | programmatically interfacing with your system's $EDITOR.") |
| 15989 | (license license:asl2.0))) |
| 15990 | |
| 15991 | (define-public python-multiprocessing-logging |
| 15992 | (package |
| 15993 | (name "python-multiprocessing-logging") |
| 15994 | (version "0.3.1") |
| 15995 | (home-page "https://github.com/jruere/multiprocessing-logging") |
| 15996 | (source (origin |
| 15997 | (method git-fetch) |
| 15998 | (uri (git-reference |
| 15999 | (url home-page) |
| 16000 | (commit (string-append "v" version)))) |
| 16001 | (file-name (git-file-name name version)) |
| 16002 | (sha256 |
| 16003 | (base32 |
| 16004 | "1625wy3djlr3b2fpd3vi822f8gw6b75mnls5a4318dbi9za5pf0y")))) |
| 16005 | (build-system python-build-system) |
| 16006 | (synopsis "Manage logs from multiple processes") |
| 16007 | (description |
| 16008 | "This Python module implements a multiprocessing-aware @code{Handler} |
| 16009 | that, when set on the root @code{Logger}, will tunnel log records to the |
| 16010 | main process so that they are handled correctly.") |
| 16011 | (license license:lgpl3+))) |
| 16012 | |
| 16013 | (define-public python-vobject |
| 16014 | (package |
| 16015 | (name "python-vobject") |
| 16016 | (version "0.9.6.1") |
| 16017 | (source (origin |
| 16018 | (method url-fetch) |
| 16019 | (uri (pypi-uri "vobject" version)) |
| 16020 | (sha256 |
| 16021 | (base32 |
| 16022 | "0081g4gngw28j7vw8101jk600wz4gzfrhf5myrqvn2mrfkn2llcn")))) |
| 16023 | (build-system python-build-system) |
| 16024 | (arguments |
| 16025 | '(;; The test suite relies on some non-portable Windows interfaces. |
| 16026 | #:tests? #f)) |
| 16027 | (propagated-inputs |
| 16028 | (list python-dateutil python-pyicu)) |
| 16029 | (synopsis "Parse and generate vCard and vCalendar files") |
| 16030 | (description "Vobject is intended to be a full featured Python package for |
| 16031 | parsing and generating vCard and vCalendar files. Currently, iCalendar files |
| 16032 | are supported and well tested. vCard 3.0 files are supported, and all data |
| 16033 | should be imported, but only a few components are understood in a sophisticated |
| 16034 | way.") |
| 16035 | (home-page "https://eventable.github.io/vobject/") |
| 16036 | (license license:asl2.0))) |
| 16037 | |
| 16038 | (define-public python-munkres |
| 16039 | (package |
| 16040 | (name "python-munkres") |
| 16041 | (version "1.1.4") |
| 16042 | (source (origin |
| 16043 | (method url-fetch) |
| 16044 | (uri (pypi-uri "munkres" version)) |
| 16045 | (sha256 |
| 16046 | (base32 |
| 16047 | "00yvj8bxmhhhhd74v7j0x673is7vizmxwgb3dd5xmnkr74ybyi7w")))) |
| 16048 | (arguments |
| 16049 | (list |
| 16050 | #:phases |
| 16051 | '(modify-phases %standard-phases |
| 16052 | (add-after 'unpack 'disable-test |
| 16053 | (lambda _ |
| 16054 | ;; See https://github.com/bmc/munkres/issues/40 |
| 16055 | (substitute* "test/test_munkres.py" |
| 16056 | (("^def test_profit_float" m) |
| 16057 | (string-append "\ |
| 16058 | import platform |
| 16059 | @pytest.mark.skipif(platform.architecture()[0] == \"32bit\", |
| 16060 | reason=\"Fails on 32 bit architectures\") |
| 16061 | " m)))))))) |
| 16062 | (build-system python-build-system) |
| 16063 | (native-inputs (list python-pytest-6)) |
| 16064 | (home-page "https://software.clapper.org/munkres/") |
| 16065 | (synopsis "Implementation of the Munkres algorithm") |
| 16066 | (description "The Munkres module provides an implementation of the Munkres |
| 16067 | algorithm (also called the Hungarian algorithm or the Kuhn-Munkres algorithm), |
| 16068 | useful for solving the Assignment Problem.") |
| 16069 | (license license:bsd-3))) |
| 16070 | |
| 16071 | (define-public python-whoosh |
| 16072 | (package |
| 16073 | (name "python-whoosh") |
| 16074 | (version "2.7.4") |
| 16075 | (source |
| 16076 | (origin |
| 16077 | (method url-fetch) |
| 16078 | (uri (pypi-uri "Whoosh" version)) |
| 16079 | (sha256 |
| 16080 | (base32 |
| 16081 | "10qsqdjpbc85fykc1vgcs8xwbgn4l2l52c8d83xf1q59pwyn79bw")))) |
| 16082 | (build-system python-build-system) |
| 16083 | (arguments '(#:tests? #f)) ; Test invocation is no longer supported by Python. |
| 16084 | (native-inputs |
| 16085 | (list python-pytest)) |
| 16086 | (home-page "https://bitbucket.org/mchaput/whoosh") |
| 16087 | (synopsis "Full text indexing, search, and spell checking library") |
| 16088 | (description |
| 16089 | "Whoosh is a fast, pure-Python full text indexing, search, and spell |
| 16090 | checking library.") |
| 16091 | (license license:bsd-2))) |
| 16092 | |
| 16093 | (define-public python-codespell |
| 16094 | (package |
| 16095 | (name "python-codespell") |
| 16096 | (version "2.1.0") |
| 16097 | (source |
| 16098 | (origin |
| 16099 | (method url-fetch) |
| 16100 | (uri (pypi-uri "codespell" version)) |
| 16101 | (sha256 |
| 16102 | (base32 "1r9y714cz8m894rxp7pyvicr1lw2iid24vz6fxbl5wzy8ibgxlqr")))) |
| 16103 | (build-system python-build-system) |
| 16104 | (inputs |
| 16105 | (list python-chardet)) |
| 16106 | (native-inputs |
| 16107 | (list python-check-manifest python-flake8 python-pytest |
| 16108 | python-pytest-cov python-pytest-dependency)) |
| 16109 | (arguments |
| 16110 | `(#:phases |
| 16111 | (modify-phases %standard-phases |
| 16112 | (replace 'check |
| 16113 | (lambda* (#:key outputs tests? #:allow-other-keys) |
| 16114 | (when tests? |
| 16115 | ;; Make installed executable available for running the tests. |
| 16116 | (setenv "PATH" |
| 16117 | (string-append (assoc-ref outputs "out") "/bin" |
| 16118 | ":" (getenv "PATH"))) |
| 16119 | (invoke "pytest" "-vv"))))))) |
| 16120 | (home-page "https://github.com/codespell-project/codespell/") |
| 16121 | (synopsis "Spellchecker for code") |
| 16122 | (description "Codespell fixes common misspellings in text files. |
| 16123 | It's designed primarily for checking misspelled words in source code, |
| 16124 | but it can be used with other files as well. It does not check for word |
| 16125 | membership in a complete dictionary, but instead looks for a set of |
| 16126 | common misspellings. Therefore it should catch errors like \"adn\", but |
| 16127 | it will not catch \"adnasdfasdf\". This also means it shouldn't |
| 16128 | generate false-positives when you use a niche term it doesn't know |
| 16129 | about.") |
| 16130 | (license |
| 16131 | (list |
| 16132 | ; for codespell and codespell_lib |
| 16133 | license:gpl2 |
| 16134 | ; for dictionary*.txt |
| 16135 | license:cc-by-sa3.0)))) |
| 16136 | |
| 16137 | (define-public python-pathlib |
| 16138 | (package |
| 16139 | (name "python-pathlib") |
| 16140 | (version "1.0.1") |
| 16141 | (source (origin |
| 16142 | (method url-fetch) |
| 16143 | (uri (pypi-uri "pathlib" version)) |
| 16144 | (sha256 |
| 16145 | (base32 |
| 16146 | "17zajiw4mjbkkv6ahp3xf025qglkj0805m9s41c45zryzj6p2h39")))) |
| 16147 | (build-system python-build-system) |
| 16148 | ;; The tests depend on the internal "test" module, which does not provide |
| 16149 | ;; a stable interface. |
| 16150 | (arguments `(#:tests? #f)) |
| 16151 | (home-page "https://pathlib.readthedocs.org/") |
| 16152 | (synopsis "Object-oriented file system paths") |
| 16153 | (description "Pathlib offers a set of classes to handle file system paths. |
| 16154 | It offers the following advantages over using string objects: |
| 16155 | |
| 16156 | @enumerate |
| 16157 | @item No more cumbersome use of os and os.path functions. Everything can |
| 16158 | be done easily through operators, attribute accesses, and method calls. |
| 16159 | @item Embodies the semantics of different path types. For example, |
| 16160 | comparing Windows paths ignores casing. |
| 16161 | @item Well-defined semantics, eliminating any inconsistencies or |
| 16162 | ambiguities (forward vs. backward slashes, etc.). |
| 16163 | @end enumerate |
| 16164 | |
| 16165 | Note: In Python 3.4, pathlib is now part of the standard library. For other |
| 16166 | Python versions please consider python-pathlib2 instead, which tracks the |
| 16167 | standard library module. This module (python-pathlib) isn't maintained |
| 16168 | anymore.") |
| 16169 | (license license:expat))) |
| 16170 | |
| 16171 | (define-public python-jellyfish |
| 16172 | (package |
| 16173 | (name "python-jellyfish") |
| 16174 | (version "0.8.8") |
| 16175 | (source (origin |
| 16176 | (method url-fetch) |
| 16177 | (uri (pypi-uri "jellyfish" version)) |
| 16178 | (sha256 |
| 16179 | (base32 |
| 16180 | "0p2s6b30sfffx8sya2i8kz0i0riw9fq1fi0k89s8kdgrmjf0h1h5")))) |
| 16181 | (build-system python-build-system) |
| 16182 | (arguments |
| 16183 | `(#:tests? #f ; XXX: Tests cannot find C coded version. |
| 16184 | #:phases |
| 16185 | (modify-phases %standard-phases |
| 16186 | (replace 'check |
| 16187 | (lambda* (#:key inputs outputs tests? #:allow-other-keys) |
| 16188 | (when tests? |
| 16189 | (add-installed-pythonpath inputs outputs) |
| 16190 | (invoke "pytest" "-vv" "jellyfish/test.py"))))))) |
| 16191 | (native-inputs |
| 16192 | (list python-pytest)) |
| 16193 | (home-page "https://github.com/jamesturk/jellyfish") |
| 16194 | (synopsis "Approximate and phonetic matching of strings") |
| 16195 | (description "Jellyfish uses a variety of string comparison and phonetic |
| 16196 | encoding algorithms to do fuzzy string matching.") |
| 16197 | (license license:bsd-2))) |
| 16198 | |
| 16199 | (define-public python-pdfminer-six |
| 16200 | (package |
| 16201 | (name "python-pdfminer-six") |
| 16202 | (version "20201018") |
| 16203 | ;; There are no tests in the PyPI tarball. |
| 16204 | (source |
| 16205 | (origin |
| 16206 | (method git-fetch) |
| 16207 | (uri (git-reference |
| 16208 | (url "https://github.com/pdfminer/pdfminer.six") |
| 16209 | (commit version))) |
| 16210 | (file-name (git-file-name name version)) |
| 16211 | (sha256 |
| 16212 | (base32 "1a2fxxnnjqbx344znpvx7cnv1881dk6585ibw01inhfq3w6yj2lr")))) |
| 16213 | (build-system python-build-system) |
| 16214 | (arguments |
| 16215 | `(#:phases |
| 16216 | (modify-phases %standard-phases |
| 16217 | ;; Tests write to the source tree. |
| 16218 | (add-after 'unpack 'make-git-checkout-writable |
| 16219 | (lambda _ |
| 16220 | (for-each make-file-writable (find-files ".")) |
| 16221 | #t)) |
| 16222 | (replace 'check |
| 16223 | (lambda _ |
| 16224 | (invoke "make" "test")))))) |
| 16225 | (propagated-inputs |
| 16226 | (list python-chardet python-cryptography python-sortedcontainers)) |
| 16227 | (native-inputs |
| 16228 | (list python-nose python-tox)) |
| 16229 | (home-page "https://github.com/pdfminer/pdfminer.six") |
| 16230 | (synopsis "PDF parser and analyzer") |
| 16231 | (description "@code{pdfminer.six} is a community maintained fork of |
| 16232 | the original PDFMiner. It is a tool for extracting information from PDF |
| 16233 | documents. It focuses on getting and analyzing text data. Pdfminer.six |
| 16234 | extracts the text from a page directly from the sourcecode of the PDF. It |
| 16235 | can also be used to get the exact location, font or color of the text.") |
| 16236 | (license license:expat))) |
| 16237 | |
| 16238 | (define-public python-rarfile |
| 16239 | (package |
| 16240 | (name "python-rarfile") |
| 16241 | (version "4.0") |
| 16242 | (source (origin |
| 16243 | (method url-fetch) |
| 16244 | (uri (pypi-uri "rarfile" version)) |
| 16245 | (sha256 |
| 16246 | (base32 |
| 16247 | "1882wv9szcm29mnyhjmspyflyr2l7z73srn14w4dlnww49lqfm37")))) |
| 16248 | (build-system python-build-system) |
| 16249 | (arguments |
| 16250 | `(#:tests? #f ;; The bsdtar utility is very limited and most tests fail. |
| 16251 | #:phases |
| 16252 | (modify-phases %standard-phases |
| 16253 | (add-after 'unpack 'patch |
| 16254 | (lambda* (#:key inputs #:allow-other-keys) |
| 16255 | (substitute* "rarfile.py" |
| 16256 | ;; Disable unrar and unar, which are unavailable on Guix. |
| 16257 | (("(unrar|unar)=True" all tool) (string-append tool "=False")) |
| 16258 | ;; Hardcode path to bsdtar |
| 16259 | (("\"bsdtar\"") |
| 16260 | (string-append "\"" (assoc-ref inputs "libarchive") "/bin/bsdtar\""))) |
| 16261 | #t)) |
| 16262 | (replace 'check |
| 16263 | (lambda* (#:key inputs tests? #:allow-other-keys) |
| 16264 | (when tests? |
| 16265 | (invoke "pytest" "-vv"))))))) |
| 16266 | (native-inputs (list python-pytest)) |
| 16267 | (inputs (list libarchive)) |
| 16268 | (home-page "https://github.com/markokr/rarfile") |
| 16269 | (synopsis "RAR archive reader for Python") |
| 16270 | (description "This is Python module for RAR archive reading. The interface |
| 16271 | is made as zipfile like as possible.") |
| 16272 | (license license:isc))) |
| 16273 | |
| 16274 | (define-public python-rich |
| 16275 | (package |
| 16276 | (name "python-rich") |
| 16277 | (version "12.4.1") |
| 16278 | (source (origin |
| 16279 | (method url-fetch) |
| 16280 | (uri (pypi-uri "rich" version)) |
| 16281 | (sha256 |
| 16282 | (base32 |
| 16283 | "149vjb4cpf9mz14iig0b6d8065dm8aslp6pc45g9ipmp1wf00ffj")))) |
| 16284 | (build-system python-build-system) |
| 16285 | (arguments |
| 16286 | `(#:phases |
| 16287 | (modify-phases %standard-phases |
| 16288 | (replace 'check |
| 16289 | (lambda* (#:key inputs tests? #:allow-other-keys) |
| 16290 | (when tests? |
| 16291 | (copy-recursively (string-append |
| 16292 | (assoc-ref inputs "tests") "/tests") |
| 16293 | "tests") |
| 16294 | (invoke "python" "-m" "pytest" "-vv"))))))) |
| 16295 | (propagated-inputs |
| 16296 | (list python-attrs python-colorama python-commonmark python-pygments |
| 16297 | python-typing-extensions)) |
| 16298 | (native-inputs |
| 16299 | `(("python-pytest" ,python-pytest) |
| 16300 | ("tests" |
| 16301 | ;; The release on pypi comes without tests. We can't build from this |
| 16302 | ;; checkout, though, because installation requires an invocation of |
| 16303 | ;; poetry. |
| 16304 | ,(origin |
| 16305 | (method git-fetch) |
| 16306 | (uri (git-reference |
| 16307 | (url "https://github.com/willmcgugan/rich") |
| 16308 | (commit (string-append "v" version)))) |
| 16309 | (file-name (git-file-name name version)) |
| 16310 | (sha256 |
| 16311 | (base32 |
| 16312 | "17c3gljn8zv32xnpsgd3fqgqn4r7cdfqri41hridcpbhssdgkyp9")))))) |
| 16313 | (home-page "https://github.com/willmcgugan/rich") |
| 16314 | (synopsis "Render rich text and more to the terminal") |
| 16315 | (description |
| 16316 | "This is a Python package for rendering rich text, tables, progress bars, |
| 16317 | syntax highlighting, markdown and more to the terminal.") |
| 16318 | (license license:expat))) |
| 16319 | |
| 16320 | (define-public python-textual |
| 16321 | (package |
| 16322 | (name "python-textual") |
| 16323 | (version "0.1.18") |
| 16324 | (source (origin |
| 16325 | (method url-fetch) |
| 16326 | (uri (pypi-uri "textual" version)) |
| 16327 | (sha256 |
| 16328 | (base32 |
| 16329 | "08yg5a51hz1axfj5hx28hx31gq5apcj6vpkkmawmiplisa73z25j")))) |
| 16330 | (build-system python-build-system) |
| 16331 | (arguments |
| 16332 | (let ((tests |
| 16333 | ;; The release on pypi comes without tests. We can't build |
| 16334 | ;; from this checkout, though, because installation requires |
| 16335 | ;; an invocation of poetry. |
| 16336 | (origin |
| 16337 | (method git-fetch) |
| 16338 | (uri (git-reference |
| 16339 | (url "https://github.com/Textualize/textual") |
| 16340 | (commit (string-append "v" version)))) |
| 16341 | (file-name (git-file-name name version)) |
| 16342 | (sha256 |
| 16343 | (base32 |
| 16344 | "0b3ycwqhp21mg9fvmadgxhgbvkwq6fd784l2xcmvy77rravrnnax"))))) |
| 16345 | (list #:phases |
| 16346 | #~(modify-phases %standard-phases |
| 16347 | (replace 'check |
| 16348 | (lambda* (#:key tests? #:allow-other-keys) |
| 16349 | (when tests? |
| 16350 | (copy-recursively #$(file-append tests "/tests") |
| 16351 | "tests") |
| 16352 | (invoke "python" "-m" "pytest" "-vv")))))))) |
| 16353 | (propagated-inputs |
| 16354 | (list python-rich python-typing-extensions)) |
| 16355 | (native-inputs |
| 16356 | (list python-pytest)) |
| 16357 | (home-page "https://github.com/Textualize/textual") |
| 16358 | (synopsis "Build text user interfaces in Python") |
| 16359 | (description "Textual is a @acronym{TUI, Text User Interface} framework |
| 16360 | for Python inspired by modern web development.") |
| 16361 | (license license:expat))) |
| 16362 | |
| 16363 | (define-public python-magic |
| 16364 | (package |
| 16365 | (name "python-magic") |
| 16366 | (version "0.4.24") |
| 16367 | (home-page "https://github.com/ahupp/python-magic") |
| 16368 | (source |
| 16369 | (origin |
| 16370 | (method git-fetch) |
| 16371 | (uri (git-reference (url home-page) (commit version))) |
| 16372 | (file-name (git-file-name name version)) |
| 16373 | (patches (search-patches "python-magic-python-bytecode.patch")) |
| 16374 | (sha256 |
| 16375 | (base32 |
| 16376 | "17jalhjbfd600lzfz296m0nvgp6c7vx1mgz82jbzn8hgdzknf4w0")))) |
| 16377 | (build-system python-build-system) |
| 16378 | (arguments |
| 16379 | '(#:phases (modify-phases %standard-phases |
| 16380 | ;; Replace a specific method call with a hard-coded |
| 16381 | ;; path to the necessary libmagic.so file in the |
| 16382 | ;; store. If we don't do this, then the method call |
| 16383 | ;; will fail to find the libmagic.so file, which in |
| 16384 | ;; turn will cause any application using |
| 16385 | ;; python-magic to fail. |
| 16386 | (add-before 'build 'hard-code-path-to-libmagic |
| 16387 | (lambda* (#:key inputs #:allow-other-keys) |
| 16388 | (let ((magic (search-input-file inputs "/lib/libmagic.so"))) |
| 16389 | (substitute* "magic/loader.py" |
| 16390 | (("find_library\\('magic'\\)") |
| 16391 | (string-append "'" magic "'")))))) |
| 16392 | (replace 'check |
| 16393 | (lambda* (#:key tests? #:allow-other-keys) |
| 16394 | ;; The test suite mandates this variable. |
| 16395 | (setenv "LC_ALL" "en_US.UTF-8") |
| 16396 | (if tests? |
| 16397 | (with-directory-excursion "test" |
| 16398 | (invoke "python" "./test.py") |
| 16399 | (invoke "python" "./libmagic_test.py")) |
| 16400 | (format #t "test suite not run~%"))))))) |
| 16401 | (native-inputs |
| 16402 | (list which)) |
| 16403 | (inputs |
| 16404 | ;; python-magic needs to be able to find libmagic.so. |
| 16405 | ;; Use a newer version because 5.39 returns bogus for some archives |
| 16406 | ;; (notably Chromium .crx extensions), which breaks e.g. 'diffoscope'. |
| 16407 | (list file-next)) |
| 16408 | (synopsis "File type identification using libmagic") |
| 16409 | (description |
| 16410 | "This module uses ctypes to access the libmagic file type |
| 16411 | identification library. It makes use of the local magic database and |
| 16412 | supports both textual and MIME-type output. Note that this module and |
| 16413 | the python-file module both provide a \"magic.py\" file; these two |
| 16414 | modules, which are different and were developed separately, both serve |
| 16415 | the same purpose: to provide Python bindings for libmagic.") |
| 16416 | (license license:expat))) |
| 16417 | |
| 16418 | (define-public s3cmd |
| 16419 | (package |
| 16420 | (name "s3cmd") |
| 16421 | (version "2.3.0") |
| 16422 | (source |
| 16423 | (origin |
| 16424 | (method git-fetch) |
| 16425 | (uri (git-reference |
| 16426 | (url "https://github.com/s3tools/s3cmd") |
| 16427 | (commit (string-append "v" version)))) |
| 16428 | (file-name (git-file-name name version)) |
| 16429 | (sha256 |
| 16430 | (base32 "0rdgwwmmp8mdxc84bxq6k9a7v7z2qgc3df47djzs2b84gw81dglx")))) |
| 16431 | (build-system python-build-system) |
| 16432 | (arguments |
| 16433 | (list #:phases |
| 16434 | #~(modify-phases %standard-phases |
| 16435 | (add-after 'unpack 'hide-wrapping |
| 16436 | (lambda _ |
| 16437 | (substitute* "S3/MultiPart.py" |
| 16438 | (("sys\\.argv\\[0\\]") "\"s3cmd\"")) |
| 16439 | (substitute* "s3cmd" |
| 16440 | (("optparser\\.get_prog_name\\(\\)") "\"s3cmd\""))))))) |
| 16441 | (inputs |
| 16442 | (list python-dateutil |
| 16443 | python-magic)) |
| 16444 | (home-page "https://s3tools.org/s3cmd") |
| 16445 | (synopsis "Command line tool for S3-compatible storage services") |
| 16446 | (description |
| 16447 | "S3cmd is a command line tool for uploading, retrieving and managing data |
| 16448 | in storage services that are compatible with the Amazon Simple Storage |
| 16449 | Service (S3) protocol, including S3 itself. It supports rsync-like backup, |
| 16450 | GnuPG encryption, and more. It also supports management of Amazon's |
| 16451 | CloudFront content delivery network.") |
| 16452 | (license license:gpl2+))) |
| 16453 | |
| 16454 | (define-public python-pkgconfig |
| 16455 | (package |
| 16456 | (name "python-pkgconfig") |
| 16457 | (version "1.3.1") |
| 16458 | (source |
| 16459 | (origin |
| 16460 | (method url-fetch) |
| 16461 | (uri (pypi-uri "pkgconfig" version)) |
| 16462 | (sha256 |
| 16463 | (base32 |
| 16464 | "107x2wmchlch8saixb488cgjz9n6inl38wi7nxkb942rbaapxiqb")))) |
| 16465 | (build-system python-build-system) |
| 16466 | (native-inputs |
| 16467 | (list python-nose)) |
| 16468 | (inputs |
| 16469 | (list pkg-config)) |
| 16470 | (arguments |
| 16471 | `(#:phases |
| 16472 | (modify-phases %standard-phases |
| 16473 | (add-before 'build 'patch |
| 16474 | ;; Hard-code the path to pkg-config. |
| 16475 | (lambda _ |
| 16476 | (substitute* "pkgconfig/pkgconfig.py" |
| 16477 | (("'pkg-config'") |
| 16478 | (string-append "'" (which "pkg-config") "'"))))) |
| 16479 | (replace 'check |
| 16480 | (lambda _ |
| 16481 | (invoke "nosetests" "test.py")))))) |
| 16482 | (home-page "https://github.com/matze/pkgconfig") |
| 16483 | (synopsis "Python interface for pkg-config") |
| 16484 | (description "This module provides a Python interface to pkg-config. It |
| 16485 | can be used to find all pkg-config packages, check if a package exists, |
| 16486 | check if a package meets certain version requirements, query CFLAGS and |
| 16487 | LDFLAGS and parse the output to build extensions with setup.py.") |
| 16488 | (license license:expat))) |
| 16489 | |
| 16490 | (define-public python-bz2file |
| 16491 | (package |
| 16492 | (name "python-bz2file") |
| 16493 | (version "0.98") |
| 16494 | (source |
| 16495 | (origin |
| 16496 | (method url-fetch) |
| 16497 | (uri (pypi-uri "bz2file" version)) |
| 16498 | (sha256 |
| 16499 | (base32 |
| 16500 | "126s53fkpx04f33a829yqqk8fj4png3qwg4m66cvlmhmwc8zihb4")))) |
| 16501 | (build-system python-build-system) |
| 16502 | (arguments |
| 16503 | `(#:tests? #f)) ; Tests use deprecated python modules. |
| 16504 | (home-page "https://github.com/nvawda/bz2file") |
| 16505 | (synopsis "Read and write bzip2-compressed files") |
| 16506 | (description |
| 16507 | "Bz2file is a Python library for reading and writing bzip2-compressed |
| 16508 | files. It contains a drop-in replacement for the I/O interface in the |
| 16509 | standard library's @code{bz2} module, including features from the latest |
| 16510 | development version of CPython that are not available in older releases.") |
| 16511 | (license license:asl2.0))) |
| 16512 | |
| 16513 | (define-public python-future |
| 16514 | (package |
| 16515 | (name "python-future") |
| 16516 | (version "0.18.2") |
| 16517 | (source |
| 16518 | (origin |
| 16519 | (method url-fetch) |
| 16520 | (uri (pypi-uri "future" version)) |
| 16521 | (sha256 |
| 16522 | (base32 |
| 16523 | "0zakvfj87gy6mn1nba06sdha63rn4njm7bhh0wzyrxhcny8avgmi")))) |
| 16524 | (build-system python-build-system) |
| 16525 | ;; Many tests connect to the network or are otherwise flawed. |
| 16526 | ;; https://github.com/PythonCharmers/python-future/issues/210 |
| 16527 | (arguments |
| 16528 | `(#:tests? #f |
| 16529 | #:phases |
| 16530 | (modify-phases %standard-phases |
| 16531 | (replace 'sanity-check |
| 16532 | (let ((sanity-check (assoc-ref %standard-phases 'sanity-check))) |
| 16533 | (lambda* (#:key inputs outputs #:allow-other-keys #:rest args) |
| 16534 | (let* ((files (find-files (site-packages inputs outputs) |
| 16535 | "top_level\\.txt")) |
| 16536 | (backups (map (lambda (f) (string-append f ".bak")) |
| 16537 | files))) |
| 16538 | (for-each copy-file files backups) |
| 16539 | (substitute* files |
| 16540 | ;; Nobody be usin' winreg on Guix |
| 16541 | ;; Also, don't force users to have tkinter when they don't |
| 16542 | ;; need it |
| 16543 | (("(winreg|tkinter)") "")) |
| 16544 | (apply sanity-check args) |
| 16545 | (for-each rename-file backups files)))))))) |
| 16546 | (home-page "https://python-future.org") |
| 16547 | (synopsis "Single-source support for Python 3 and 2") |
| 16548 | (description |
| 16549 | "@code{python-future} is the missing compatibility layer between Python 2 and |
| 16550 | Python 3. It allows you to use a single, clean Python 3.x-compatible codebase |
| 16551 | to support both Python 2 and Python 3 with minimal overhead.") |
| 16552 | (license license:expat))) |
| 16553 | |
| 16554 | (define-public python-cysignals |
| 16555 | (package |
| 16556 | (name "python-cysignals") |
| 16557 | (version "1.9.0") |
| 16558 | (source |
| 16559 | (origin |
| 16560 | (method url-fetch) |
| 16561 | (uri (pypi-uri "cysignals" version)) |
| 16562 | (sha256 |
| 16563 | (base32 |
| 16564 | "15ix8crpad26cfl1skyg7qajqqfdrm8q5ahhmlfmqi1aw0jqj2g2")))) |
| 16565 | (build-system python-build-system) |
| 16566 | (native-inputs |
| 16567 | (list python-cython python-sphinx)) |
| 16568 | (inputs |
| 16569 | (list pari-gp)) |
| 16570 | (arguments |
| 16571 | `(#:modules ((guix build python-build-system) |
| 16572 | ((guix build gnu-build-system) #:prefix gnu:) |
| 16573 | (guix build utils)) |
| 16574 | ;; FIXME: Tests are executed after installation and currently fail |
| 16575 | ;; when not installing into standard locations; the author is working |
| 16576 | ;; on a fix. |
| 16577 | #:tests? #f |
| 16578 | #:phases |
| 16579 | (modify-phases %standard-phases |
| 16580 | (add-before |
| 16581 | 'build 'configure |
| 16582 | (assoc-ref gnu:%standard-phases 'configure))))) |
| 16583 | (home-page |
| 16584 | "https://github.com/sagemath/cysignals") |
| 16585 | (synopsis |
| 16586 | "Handling of interrupts and signals for Cython") |
| 16587 | (description |
| 16588 | "The cysignals package provides mechanisms to handle interrupts (and |
| 16589 | other signals and errors) in Cython code, using two related approaches, |
| 16590 | for mixed Cython/Python code or external C libraries and pure Cython code, |
| 16591 | respectively.") |
| 16592 | (license license:lgpl3+))) |
| 16593 | |
| 16594 | (define-public python-rope |
| 16595 | (package |
| 16596 | (name "python-rope") |
| 16597 | (version "1.1.1") |
| 16598 | (source |
| 16599 | (origin |
| 16600 | (method url-fetch) |
| 16601 | (uri (pypi-uri "rope" version)) |
| 16602 | (sha256 |
| 16603 | (base32 |
| 16604 | "0bkzwkllxxdxd3w70xiy137lqvnlmmaplsc2ya3s23ss4kq8y10k")))) |
| 16605 | (build-system python-build-system) |
| 16606 | (arguments |
| 16607 | (list #:phases |
| 16608 | `(modify-phases %standard-phases |
| 16609 | (add-after 'unpack 'disable-broken-test |
| 16610 | (lambda _ |
| 16611 | (substitute* "ropetest/contrib/autoimporttest.py" |
| 16612 | (("def test_search_module") |
| 16613 | "def __notest_search_module") |
| 16614 | (("def test_search_submodule") |
| 16615 | "def __notest_search_submodule"))))))) |
| 16616 | (native-inputs |
| 16617 | (list python-pytest-timeout |
| 16618 | python-pytest)) |
| 16619 | (home-page "https://github.com/python-rope/rope") |
| 16620 | (synopsis "Refactoring library for Python") |
| 16621 | (description "Rope is a refactoring library for Python. It facilitates |
| 16622 | the renaming, moving and extracting of attributes, functions, modules, fields |
| 16623 | and parameters in Python source code. These refactorings can also be applied |
| 16624 | to occurrences in strings and comments.") |
| 16625 | (license license:lgpl3+))) |
| 16626 | |
| 16627 | (define-public python-py3status |
| 16628 | (package |
| 16629 | (name "python-py3status") |
| 16630 | (version "3.21") |
| 16631 | (source |
| 16632 | (origin |
| 16633 | (method url-fetch) |
| 16634 | (uri (pypi-uri "py3status" version)) |
| 16635 | (sha256 |
| 16636 | (base32 "16z8zq83hxy48g6hh4xczbdz50qvxv9k1aahr4fqq7jis60cc262")))) |
| 16637 | (build-system python-build-system) |
| 16638 | (inputs |
| 16639 | (list file)) |
| 16640 | (arguments |
| 16641 | '(#:phases |
| 16642 | (modify-phases %standard-phases |
| 16643 | ;; 'file' is used for detection of configuration file encoding |
| 16644 | ;; let's make link the dependency to particular input |
| 16645 | (add-before 'build 'patch-file-path |
| 16646 | (lambda* (#:key inputs #:allow-other-keys) |
| 16647 | (let ((file-path (assoc-ref inputs "file"))) |
| 16648 | (substitute* "py3status/parse_config.py" |
| 16649 | (("\\[\"file\", \"-b\"") |
| 16650 | (string-append "['" file-path "/bin/file', '-b'"))) |
| 16651 | #t)))) |
| 16652 | #:tests? #f)) ; TODO: Requires many libraries not in Guix. |
| 16653 | (home-page "https://github.com/ultrabug/py3status") |
| 16654 | (synopsis "Extensible i3status wrapper written in Python") |
| 16655 | (description "py3status is an i3status wrapper which extends i3status |
| 16656 | functionality in a modular way, allowing you to extend your panel with your |
| 16657 | own code, responding to click events and updating clock every second.") |
| 16658 | (license license:bsd-3))) |
| 16659 | |
| 16660 | (define-public python-tblib |
| 16661 | (package |
| 16662 | (name "python-tblib") |
| 16663 | (version "1.6.0") |
| 16664 | (source (origin |
| 16665 | (method url-fetch) |
| 16666 | (uri (pypi-uri "tblib" version)) |
| 16667 | (sha256 |
| 16668 | (base32 |
| 16669 | "0i136n5pydmd202254wzrdbspkw0br0c9mbxhfs9hpfbahvyx6r2")))) |
| 16670 | (build-system python-build-system) |
| 16671 | (arguments |
| 16672 | `(#:phases |
| 16673 | (modify-phases %standard-phases |
| 16674 | (replace 'check |
| 16675 | (lambda _ |
| 16676 | (invoke "py.test" "-vv" "tests" "README.rst")))))) |
| 16677 | (native-inputs |
| 16678 | (list python-pytest python-six)) |
| 16679 | (home-page "https://github.com/ionelmc/python-tblib") |
| 16680 | (synopsis "Traceback serialization library") |
| 16681 | (description |
| 16682 | "Traceback serialization allows you to: |
| 16683 | |
| 16684 | @enumerate |
| 16685 | @item Pickle tracebacks and raise exceptions with pickled tracebacks in |
| 16686 | different processes. This allows better error handling when running code over |
| 16687 | multiple processes (imagine multiprocessing, billiard, futures, celery etc). |
| 16688 | |
| 16689 | @item Parse traceback strings and raise with the parsed tracebacks. |
| 16690 | @end enumerate\n") |
| 16691 | (license license:bsd-3))) |
| 16692 | |
| 16693 | (define-public python-tftpy |
| 16694 | (package |
| 16695 | (name "python-tftpy") |
| 16696 | (version "0.8.2") |
| 16697 | (source |
| 16698 | (origin |
| 16699 | (method git-fetch) ;no tests in PyPI archive |
| 16700 | (uri (git-reference |
| 16701 | (url "https://github.com/msoulier/tftpy") |
| 16702 | (commit version))) |
| 16703 | (file-name (git-file-name name version)) |
| 16704 | (sha256 |
| 16705 | (base32 |
| 16706 | "1gl04ps8h8r7av3h0zbm8gwmkqs9rkk5vf7n8mv2bzrkwvy9hacc")))) |
| 16707 | (build-system python-build-system) |
| 16708 | (arguments |
| 16709 | `(#:phases (modify-phases %standard-phases |
| 16710 | (replace 'check |
| 16711 | (lambda* (#:key tests? inputs outputs #:allow-other-keys) |
| 16712 | (when tests? |
| 16713 | ;; The default DEBUG logging level is way too verbose. |
| 16714 | (substitute* "t/test.py" |
| 16715 | (("logging\\.DEBUG") |
| 16716 | "logging.INFO")) |
| 16717 | (invoke "python" "-m" "unittest" "t/test.py"))))))) |
| 16718 | (home-page "http://tftpy.sourceforge.net/") |
| 16719 | (synopsis "Python trivial file transfer protocol (TFTP) library") |
| 16720 | (description "TFTPy is a trivial file transfer protocol (TFTP) Python |
| 16721 | library. It can be used to act both as a TFTP client or TFTP server.") |
| 16722 | (license license:expat))) |
| 16723 | |
| 16724 | (define-public python-greenlet |
| 16725 | (package |
| 16726 | (name "python-greenlet") |
| 16727 | (version "1.1.2") |
| 16728 | (source (origin |
| 16729 | (method url-fetch) |
| 16730 | (uri (pypi-uri "greenlet" version)) |
| 16731 | (sha256 |
| 16732 | (base32 |
| 16733 | "0jkln5bf6rq7dbvpv7ypin3pp9jqd2jr91yyxlnfcii3msj5w3z3")))) |
| 16734 | (build-system python-build-system) |
| 16735 | (home-page "https://greenlet.readthedocs.io/") |
| 16736 | (synopsis "Lightweight in-process concurrent programming") |
| 16737 | (description |
| 16738 | "Greenlet package is a spin-off of Stackless, a version of CPython |
| 16739 | that supports micro-threads called \"tasklets\". Tasklets run |
| 16740 | pseudo-concurrently (typically in a single or a few OS-level threads) and |
| 16741 | are synchronized with data exchanges on \"channels\".") |
| 16742 | (license (list license:psfl license:expat)))) |
| 16743 | |
| 16744 | (define-public python-objgraph |
| 16745 | (package |
| 16746 | (name "python-objgraph") |
| 16747 | (version "3.4.1") |
| 16748 | (source |
| 16749 | (origin |
| 16750 | (method url-fetch) |
| 16751 | (uri (pypi-uri "objgraph" version)) |
| 16752 | (sha256 |
| 16753 | (base32 |
| 16754 | "19qmqsh984zq1rzzjy4vqnmviaqnymcyl8h7z99pnicbgwnm2adz")))) |
| 16755 | (build-system python-build-system) |
| 16756 | (propagated-inputs |
| 16757 | (list python-graphviz)) |
| 16758 | (native-inputs |
| 16759 | (list python-mock graphviz)) |
| 16760 | (home-page "https://mg.pov.lt/objgraph/") |
| 16761 | (synopsis "Draw Python object reference graphs with graphviz") |
| 16762 | (description |
| 16763 | "This package provides tools to draw Python object reference graphs with |
| 16764 | graphviz.") |
| 16765 | (license license:expat))) |
| 16766 | |
| 16767 | (define-public python-gevent |
| 16768 | (package |
| 16769 | (name "python-gevent") |
| 16770 | (version "21.12.0") |
| 16771 | (source (origin |
| 16772 | (method url-fetch) |
| 16773 | (uri (pypi-uri "gevent" version)) |
| 16774 | (sha256 |
| 16775 | (base32 |
| 16776 | "0kh9mmq811mzfgj60n64icybjp4ryjmfmy1vg7x92yrniibn92zl")) |
| 16777 | (modules '((guix build utils))) |
| 16778 | (snippet |
| 16779 | '(begin |
| 16780 | ;; unbunding libev and c-ares |
| 16781 | (delete-file-recursively "deps") |
| 16782 | ;; Remove cythonized files. |
| 16783 | (with-directory-excursion "src/gevent" |
| 16784 | (for-each delete-file |
| 16785 | (append (list "resolver/cares.c" |
| 16786 | "queue.c" |
| 16787 | "local.c" |
| 16788 | "libev/corecext.h" |
| 16789 | "libev/corecext.c" |
| 16790 | "greenlet.c" |
| 16791 | "event.c" |
| 16792 | "_waiter.c" |
| 16793 | "_tracer.c" |
| 16794 | "_semaphore.c" |
| 16795 | "_imap.c" |
| 16796 | "_ident.c" |
| 16797 | "_hub_primitives.c" |
| 16798 | "_hub_local.c" |
| 16799 | "_greenlet_primitives.c" |
| 16800 | "_abstract_linkable.c") |
| 16801 | (find-files "." "\\.html$")))))))) |
| 16802 | (build-system python-build-system) |
| 16803 | (arguments |
| 16804 | `(#:modules ((ice-9 ftw) |
| 16805 | (ice-9 match) |
| 16806 | (srfi srfi-26) |
| 16807 | (guix build utils) |
| 16808 | (guix build python-build-system)) |
| 16809 | #:phases (modify-phases %standard-phases |
| 16810 | (add-before 'patch-source-shebangs 'patch-hard-coded-paths |
| 16811 | (lambda _ |
| 16812 | (substitute* "src/gevent/subprocess.py" |
| 16813 | (("/bin/sh") (which "sh"))) |
| 16814 | (for-each (lambda (file) |
| 16815 | (substitute* file |
| 16816 | (("/bin/sh") (which "sh")) |
| 16817 | (("/bin/true") (which "true")))) |
| 16818 | (find-files "src/greentest" "\\.py$")))) |
| 16819 | (add-before 'build 'do-not-use-bundled-sources |
| 16820 | (lambda _ |
| 16821 | (setenv "GEVENTSETUP_EMBED" "0") |
| 16822 | |
| 16823 | ;; Prevent building bundled libev. |
| 16824 | (substitute* "setup.py" |
| 16825 | (("run_make=_BUILDING") |
| 16826 | "run_make=False")))) |
| 16827 | (add-before 'build 'add-greenlet-on-C_INCLUDE_PATH |
| 16828 | (lambda* (#:key inputs #:allow-other-keys) |
| 16829 | (let ((greenlet (string-append |
| 16830 | (assoc-ref inputs "python-greenlet") |
| 16831 | "/include"))) |
| 16832 | (match (scandir greenlet |
| 16833 | (lambda (item) |
| 16834 | (string-prefix? "python" item))) |
| 16835 | ((python) |
| 16836 | (setenv "C_INCLUDE_PATH" |
| 16837 | (string-append greenlet "/" python ":" |
| 16838 | (or (getenv "C_INCLUDE_PATH") |
| 16839 | "")))))))) |
| 16840 | (add-before 'check 'pretend-to-be-CI |
| 16841 | (lambda _ |
| 16842 | ;; A few tests are skipped due to network constraints or |
| 16843 | ;; get longer timeouts when running in a CI environment. |
| 16844 | ;; Piggy-back on that, as we need the same adjustments. |
| 16845 | (setenv "TRAVIS" "1") |
| 16846 | (setenv "APPVEYOR" "1"))) |
| 16847 | (add-before 'check 'adjust-tests |
| 16848 | (lambda _ |
| 16849 | (let ((disabled-tests |
| 16850 | '(;; These tests relies on networking which is |
| 16851 | ;; not available in the build container. |
| 16852 | "test__getaddrinfo_import.py" |
| 16853 | "test__server_pywsgi.py" |
| 16854 | ;; XXX: These tests borrow functionality from the |
| 16855 | ;; Python builtin 'test' module, but it is not |
| 16856 | ;; installed with the Guix Python distribution. |
| 16857 | "test_smtpd.py" |
| 16858 | "test_wsgiref.py" |
| 16859 | "test_urllib2.py" |
| 16860 | "test_thread.py" |
| 16861 | "test_threading.py" |
| 16862 | "test__threading_2.py" |
| 16863 | ;; These tests rely on KeyboardInterrupts which do not |
| 16864 | ;; work inside the build container for some reason |
| 16865 | ;; (lack of controlling terminal?). |
| 16866 | "test_subprocess.py" |
| 16867 | "test__issues461_471.py" |
| 16868 | ;; TODO: Patch out the tests that use getprotobyname, etc |
| 16869 | ;; instead of disabling all the tests from these files. |
| 16870 | "test__resolver_dnspython.py" |
| 16871 | "test__doctests.py" |
| 16872 | "test__all__.py" |
| 16873 | "test___config.py" |
| 16874 | "test__execmodules.py" |
| 16875 | ;; This test contains 'test_unlink', which |
| 16876 | ;; fails on i686 (see: |
| 16877 | ;; https://github.com/gevent/gevent/issues/1558). |
| 16878 | "test__core_stat.py"))) |
| 16879 | (call-with-output-file "skipped_tests.txt" |
| 16880 | (lambda (port) |
| 16881 | (format port "~a~%" |
| 16882 | (string-join disabled-tests "\n"))))))) |
| 16883 | (replace 'check |
| 16884 | (lambda _ |
| 16885 | ;; Use the build daemons configured number of workers. |
| 16886 | (setenv "NWORKERS" (number->string (parallel-job-count))) |
| 16887 | |
| 16888 | (invoke "python" "-m" "gevent.tests" "-unone" "--config" |
| 16889 | "known_failures.py" "--ignore" "skipped_tests.txt")))))) |
| 16890 | (propagated-inputs |
| 16891 | (list python-greenlet python-zope-event python-zope-interface)) |
| 16892 | (native-inputs |
| 16893 | (list python-cython |
| 16894 | ;; For tests. |
| 16895 | python-dnspython python-psutil python-objgraph)) |
| 16896 | (inputs |
| 16897 | (list c-ares libev)) |
| 16898 | (home-page "https://www.gevent.org/") |
| 16899 | (synopsis "Coroutine-based network library") |
| 16900 | (description |
| 16901 | "@code{gevent} is a coroutine-based Python networking library that uses |
| 16902 | @code{greenlet} to provide a high-level synchronous API on top of the |
| 16903 | @code{libev} event loop.") |
| 16904 | (license license:expat))) |
| 16905 | |
| 16906 | (define-public python-fastimport |
| 16907 | (package |
| 16908 | (name "python-fastimport") |
| 16909 | (version "0.9.9") |
| 16910 | (source |
| 16911 | (origin |
| 16912 | (method url-fetch) |
| 16913 | (uri (pypi-uri "fastimport" version)) |
| 16914 | (sha256 |
| 16915 | (base32 "06gk14qgm9dxx3pzjn0ckdbywc8ial2bjfzddqwlr4bn1nnqkbll")))) |
| 16916 | (build-system python-build-system) |
| 16917 | (home-page "https://github.com/jelmer/python-fastimport") |
| 16918 | (synopsis "VCS fastimport parser and generator in Python") |
| 16919 | (description "This package provides a parser for and generator of the Git |
| 16920 | @url{https://www.kernel.org/pub/software/scm/git/docs/git-fast-import.html,fastimport} |
| 16921 | format.") |
| 16922 | (license license:gpl2+))) |
| 16923 | |
| 16924 | (define-public python-twisted |
| 16925 | (package |
| 16926 | (name "python-twisted") |
| 16927 | (version "19.7.0") |
| 16928 | (source (origin |
| 16929 | (method url-fetch) |
| 16930 | (uri (pypi-uri "Twisted" version ".tar.bz2")) |
| 16931 | (sha256 |
| 16932 | (base32 |
| 16933 | "17d3hnxv9qndagzz63mdpyk99xj63p9gq586vjn0rxk8cl197nym")))) |
| 16934 | (build-system python-build-system) |
| 16935 | (arguments |
| 16936 | '(#:tests? #f ; FIXME: some tests fail |
| 16937 | #:phases |
| 16938 | (modify-phases %standard-phases |
| 16939 | ;; Remove scripts, because they depend on [conch] |
| 16940 | (add-after 'unpack 'remove-entrypoint |
| 16941 | (lambda _ |
| 16942 | (substitute* "src/twisted/python/_setup.py" |
| 16943 | (("\".+ = twisted\\.conch\\.scripts\\..+\",") ""))))))) |
| 16944 | (propagated-inputs |
| 16945 | (list python-zope-interface |
| 16946 | python-pyhamcrest |
| 16947 | python-incremental |
| 16948 | python-hyperlink |
| 16949 | python-constantly |
| 16950 | python-automat)) |
| 16951 | (home-page "https://twistedmatrix.com/") |
| 16952 | (synopsis "Asynchronous networking framework written in Python") |
| 16953 | (description |
| 16954 | "Twisted is an extensible framework for Python programming, with special |
| 16955 | focus on event-based network programming and multiprotocol integration.") |
| 16956 | (license license:expat))) |
| 16957 | |
| 16958 | (define-public python-pika |
| 16959 | (package |
| 16960 | (name "python-pika") |
| 16961 | (version "1.2.1") |
| 16962 | (source |
| 16963 | (origin |
| 16964 | (method git-fetch) |
| 16965 | (uri (git-reference |
| 16966 | (url "https://github.com/pika/pika") |
| 16967 | (commit version))) |
| 16968 | (file-name (git-file-name name version)) |
| 16969 | (sha256 |
| 16970 | (base32 |
| 16971 | "0sqj3bg6jwign8vwvn337fbwy69sm684ns1vh5kbfnskq4him9i2")))) |
| 16972 | (build-system python-build-system) |
| 16973 | (arguments |
| 16974 | '(#:phases (modify-phases %standard-phases |
| 16975 | (add-after 'unpack 'disable-live-tests |
| 16976 | (lambda _ |
| 16977 | ;; Disable tests that require RabbitMQ, which is not |
| 16978 | ;; yet available in Guix. |
| 16979 | (substitute* "nose2.cfg" |
| 16980 | (("tests=tests/unit,tests/acceptance") |
| 16981 | "start-dir=tests/unit")) |
| 16982 | (with-directory-excursion "tests" |
| 16983 | (for-each delete-file |
| 16984 | '("unit/base_connection_tests.py" |
| 16985 | "unit/threaded_test_wrapper_test.py"))))) |
| 16986 | (replace 'check |
| 16987 | (lambda* (#:key tests? #:allow-other-keys) |
| 16988 | (when tests? |
| 16989 | (setenv "PYTHONPATH" (getcwd)) |
| 16990 | (invoke "nose2" "-v"))))))) |
| 16991 | (native-inputs |
| 16992 | (list python-mock |
| 16993 | python-nose2 |
| 16994 | ;; These are optional at runtime, and provided here for tests. |
| 16995 | python-gevent |
| 16996 | python-tornado |
| 16997 | python-twisted)) |
| 16998 | (home-page "https://pika.readthedocs.org") |
| 16999 | (synopsis "Pure Python AMQP Client Library") |
| 17000 | (description |
| 17001 | "Pika is a pure-Python implementation of the AMQP (Advanced Message Queuing |
| 17002 | Protocol) 0-9-1 protocol that tries to stay fairly independent of the underlying |
| 17003 | network support library.") |
| 17004 | (license license:bsd-3))) |
| 17005 | |
| 17006 | (define-public python-ply |
| 17007 | (package |
| 17008 | (name "python-ply") |
| 17009 | (version "3.11") |
| 17010 | (source |
| 17011 | (origin |
| 17012 | (method url-fetch) |
| 17013 | (uri (pypi-uri "ply" version)) |
| 17014 | (sha256 |
| 17015 | (base32 |
| 17016 | "18qx113g9bi1ac4indd5phma82zcdq601lxncp3vjn43m2mc3iq0")))) |
| 17017 | (build-system python-build-system) |
| 17018 | (home-page "http://www.dabeaz.com/ply/") |
| 17019 | (synopsis "Python Lex & Yacc") |
| 17020 | (description "PLY is a @code{lex}/@code{yacc} implemented purely in Python. |
| 17021 | It uses LR parsing and does extensive error checking.") |
| 17022 | (license license:bsd-3))) |
| 17023 | |
| 17024 | (define-public python-tabulate |
| 17025 | (package |
| 17026 | (name "python-tabulate") |
| 17027 | (version "0.8.9") |
| 17028 | (source (origin |
| 17029 | (method url-fetch) |
| 17030 | (uri (pypi-uri "tabulate" version)) |
| 17031 | (sha256 |
| 17032 | (base32 |
| 17033 | "19qkdz8xwk5jxa5xn53mnk76qnh4ysm81vzj664jw1b0azr167gb")))) |
| 17034 | (build-system python-build-system) |
| 17035 | (arguments |
| 17036 | ;; FIXME: The pypi release tarball is missing a 'test/common.py' |
| 17037 | ;; and the latest release is not tagged in the upstream repository. |
| 17038 | '(#:tests? #f)) |
| 17039 | (home-page "https://bitbucket.org/astanin/python-tabulate") |
| 17040 | (synopsis "Pretty-print tabular data") |
| 17041 | (description |
| 17042 | "Tabulate is a library and command-line utility to pretty-print tabular |
| 17043 | data in Python.") |
| 17044 | (license license:expat))) |
| 17045 | |
| 17046 | (define-public python-kazoo |
| 17047 | (package |
| 17048 | (name "python-kazoo") |
| 17049 | (version "2.8.0") |
| 17050 | (source |
| 17051 | (origin |
| 17052 | (method url-fetch) |
| 17053 | (uri (pypi-uri "kazoo" version)) |
| 17054 | (sha256 |
| 17055 | (base32 |
| 17056 | "1zpj5cc8624w6i0pxgcxqkjwbkm4pkrv19d7wh5df3jais32g3jq")))) |
| 17057 | (build-system python-build-system) |
| 17058 | (arguments '(#:tests? #f)) ; XXX: needs zookeeper |
| 17059 | (propagated-inputs |
| 17060 | (list python-six)) |
| 17061 | (home-page "https://kazoo.readthedocs.org") |
| 17062 | (synopsis "High-level Zookeeper client library") |
| 17063 | (description |
| 17064 | "Kazoo is a Python client library for the Apache Zookeeper distributed |
| 17065 | application service. It is designed to be easy to use and to avoid common |
| 17066 | programming errors.") |
| 17067 | (license license:asl2.0))) |
| 17068 | |
| 17069 | (define-public python-pykafka |
| 17070 | (package |
| 17071 | (name "python-pykafka") |
| 17072 | (version "2.4.0") |
| 17073 | (source (origin |
| 17074 | (method url-fetch) |
| 17075 | (uri (pypi-uri "pykafka" version)) |
| 17076 | (sha256 |
| 17077 | (base32 |
| 17078 | "1id6sr159p6aa13bxcqyr9gln8sqg1l0ddzns5iws8kk5q1p5cfv")))) |
| 17079 | (build-system python-build-system) |
| 17080 | (arguments '(#:tests? #f)) ; XXX: needs zookeeper, kafka, etc. |
| 17081 | (propagated-inputs |
| 17082 | (list python-gevent python-kazoo python-tabulate)) |
| 17083 | (inputs |
| 17084 | (list librdkafka)) |
| 17085 | (home-page "https://pykafka.readthedocs.io/") |
| 17086 | (synopsis "Apache Kafka client for Python") |
| 17087 | (description |
| 17088 | "PyKafka is a client for the Apache Kafka distributed messaging system. |
| 17089 | It includes Python implementations of Kafka producers and consumers, which |
| 17090 | are optionally backed by a C extension built on librdkafka.") |
| 17091 | (license license:asl2.0))) |
| 17092 | |
| 17093 | (define-public python-wcwidth |
| 17094 | (package |
| 17095 | (name "python-wcwidth") |
| 17096 | (version "0.1.8") |
| 17097 | (source (origin |
| 17098 | (method url-fetch) |
| 17099 | (uri (pypi-uri "wcwidth" version)) |
| 17100 | (sha256 |
| 17101 | (base32 |
| 17102 | "1a1pzds3xzfylm5mnc5f6c1p8kiig0daqjc9gygd9rc3cj53x2zj")))) |
| 17103 | (build-system python-build-system) |
| 17104 | (home-page "https://github.com/jquast/wcwidth") |
| 17105 | (synopsis "Measure number of terminal column cells of wide-character codes") |
| 17106 | (description "Wcwidth measures the number of terminal column cells of |
| 17107 | wide-character codes. It is useful for those implementing a terminal emulator, |
| 17108 | or programs that carefully produce output to be interpreted by one. It is a |
| 17109 | Python implementation of the @code{wcwidth} and @code{wcswidth} C functions |
| 17110 | specified in POSIX.1-2001 and POSIX.1-2008.") |
| 17111 | (license license:expat))) |
| 17112 | |
| 17113 | (define-public python-chai |
| 17114 | (package |
| 17115 | (name "python-chai") |
| 17116 | (version "1.1.2") |
| 17117 | (source (origin |
| 17118 | (method url-fetch) |
| 17119 | (uri (pypi-uri "chai" version)) |
| 17120 | (sha256 |
| 17121 | (base32 |
| 17122 | "1k6n6zbgrrs83crp6mr3yqj9zlv40b8rpisyrliwsq7naml2p3gz")) |
| 17123 | (patches (search-patches "python-chai-drop-python2.patch")))) |
| 17124 | (build-system python-build-system) |
| 17125 | (home-page "https://github.com/agoragames/chai") |
| 17126 | (synopsis "Mocking framework for Python") |
| 17127 | (description |
| 17128 | "Chai provides an api for mocking, stubbing and spying your python |
| 17129 | objects, patterned after the Mocha library for Ruby.") |
| 17130 | (license license:bsd-3))) |
| 17131 | |
| 17132 | (define-public python-inflection |
| 17133 | (package |
| 17134 | (name "python-inflection") |
| 17135 | (version "0.3.1") |
| 17136 | (source |
| 17137 | (origin (method url-fetch) |
| 17138 | (uri (pypi-uri "inflection" version)) |
| 17139 | (sha256 |
| 17140 | (base32 |
| 17141 | "1jhnxgnw8y3mbzjssixh6qkc7a3afc4fygajhqrqalnilyvpzshq")))) |
| 17142 | (build-system python-build-system) |
| 17143 | (native-inputs |
| 17144 | (list python-pytest)) |
| 17145 | (home-page "https://github.com/jpvanhal/inflection") |
| 17146 | (synopsis "Python string transformation library") |
| 17147 | (description |
| 17148 | "Inflection is a string transformation library. It singularizes |
| 17149 | and pluralizes English words, and transforms strings from CamelCase to |
| 17150 | underscored string.") |
| 17151 | (license license:expat))) |
| 17152 | |
| 17153 | (define-public python-pylev |
| 17154 | (package |
| 17155 | (name "python-pylev") |
| 17156 | (version "1.3.0") |
| 17157 | (source (origin |
| 17158 | (method url-fetch) |
| 17159 | (uri (pypi-uri "pylev" version)) |
| 17160 | (sha256 |
| 17161 | (base32 |
| 17162 | "1hz1x9blsbxya1y9nnhnwwdnqmakxi9mc0jkwj0rn6b1h44i0f86")))) |
| 17163 | (build-system python-build-system) |
| 17164 | (home-page "https://github.com/toastdriven/pylev") |
| 17165 | (synopsis "Levenshtein distance implementation in Python") |
| 17166 | (description "Pure Python Levenshtein implementation, based off the |
| 17167 | Wikipedia code samples at |
| 17168 | @url{http://en.wikipedia.org/wiki/Levenshtein_distance}.") |
| 17169 | (license license:bsd-3))) |
| 17170 | |
| 17171 | (define-public python-cleo |
| 17172 | (package |
| 17173 | (name "python-cleo") |
| 17174 | (version "0.8.1") |
| 17175 | (source (origin |
| 17176 | (method url-fetch) |
| 17177 | (uri (pypi-uri "cleo" version)) |
| 17178 | (sha256 |
| 17179 | (base32 |
| 17180 | "17q6wi3q280kxmxzb2iwnnqih2xbljn18v0bjx2ip18p079j43ix")))) |
| 17181 | (build-system python-build-system) |
| 17182 | (native-inputs |
| 17183 | (list ;; For testing |
| 17184 | python-mock python-pytest-mock python-pytest)) |
| 17185 | (propagated-inputs |
| 17186 | (list python-backpack python-clikit python-pastel python-pylev)) |
| 17187 | (home-page "https://github.com/sdispater/cleo") |
| 17188 | (synopsis "Command-line arguments library for Python") |
| 17189 | (description |
| 17190 | "Cleo allows you to create command-line commands with signature in |
| 17191 | docstring and colored output.") |
| 17192 | (license license:expat))) |
| 17193 | |
| 17194 | (define-public python-tomlkit |
| 17195 | (package |
| 17196 | (name "python-tomlkit") |
| 17197 | (version "0.7.0") |
| 17198 | (source |
| 17199 | (origin |
| 17200 | (method url-fetch) |
| 17201 | (uri (pypi-uri "tomlkit" version)) |
| 17202 | (sha256 |
| 17203 | (base32 "062n694sfv24ylda6nh8228y2q9hrvy554kqx84y7czsjfbg4mxc")))) |
| 17204 | (build-system python-build-system) |
| 17205 | (native-inputs |
| 17206 | (list python-pytest python-pyyaml)) |
| 17207 | (home-page "https://github.com/sdispater/tomlkit") |
| 17208 | (synopsis "Style-preserving TOML library") |
| 17209 | (description |
| 17210 | "TOML Kit is a 1.0.0rc1-compliant TOML library. It includes a parser that |
| 17211 | preserves all comments, indentations, whitespace and internal element ordering, |
| 17212 | and makes them accessible and editable via an intuitive API. It can also |
| 17213 | create new TOML documents from scratch using the provided helpers. Part of the |
| 17214 | implementation has been adapted, improved, and fixed from Molten.") |
| 17215 | (license license:expat))) |
| 17216 | |
| 17217 | (define-public python-shellingham |
| 17218 | (package |
| 17219 | (name "python-shellingham") |
| 17220 | (version "1.4.0") |
| 17221 | (source |
| 17222 | (origin |
| 17223 | (method url-fetch) |
| 17224 | (uri (pypi-uri "shellingham" version)) |
| 17225 | (sha256 |
| 17226 | (base32 "07hpndvcv9mf9hp54b4apzpwzmzfzl8ryaacsfdq4139im2w4ma8")))) |
| 17227 | (build-system python-build-system) |
| 17228 | (home-page "https://github.com/sarugaku/shellingham") |
| 17229 | (synopsis "Tool to detect surrounding shell") |
| 17230 | (description |
| 17231 | "Shellingham detects what shell the current Python executable is |
| 17232 | running in.") |
| 17233 | (license license:isc))) |
| 17234 | |
| 17235 | (define-public python-memcached |
| 17236 | (package |
| 17237 | (name "python-memcached") |
| 17238 | (version "1.59") |
| 17239 | (source |
| 17240 | (origin |
| 17241 | (method url-fetch) |
| 17242 | (uri (pypi-uri "python-memcached" version)) |
| 17243 | (sha256 |
| 17244 | (base32 |
| 17245 | "0kvyapavbirk2x3n1jx4yb9nyigrj1s3x15nm3qhpvhkpqvqdqm2")) |
| 17246 | (patches (search-patches "python-memcached-syntax-warnings.patch")))) |
| 17247 | (build-system python-build-system) |
| 17248 | (propagated-inputs (list python-six)) |
| 17249 | (home-page |
| 17250 | "https://github.com/linsomniac/python-memcached") |
| 17251 | (synopsis "Pure python memcached client") |
| 17252 | (description |
| 17253 | "This software is a pure Python interface to the memcached memory cache |
| 17254 | daemon. It is the client side software which allows storing values in one or |
| 17255 | more, possibly remote, memcached servers.") |
| 17256 | (license license:psfl))) |
| 17257 | |
| 17258 | (define-public python-mergedeep |
| 17259 | (package |
| 17260 | (name "python-mergedeep") |
| 17261 | (version "1.3.4") |
| 17262 | (source |
| 17263 | (origin |
| 17264 | (method git-fetch) |
| 17265 | (uri (git-reference |
| 17266 | (url "https://github.com/clarketm/mergedeep") |
| 17267 | (commit (string-append "v" version)))) |
| 17268 | (file-name (git-file-name name version)) |
| 17269 | (sha256 |
| 17270 | (base32 |
| 17271 | "1msvvdzk33sxzgyvs4fs8dlsrsi7fjj038z83s0yw5h8m8d78469")))) |
| 17272 | (build-system python-build-system) |
| 17273 | (native-inputs (list python-pytest)) |
| 17274 | (home-page "https://github.com/clarketm/mergedeep") |
| 17275 | (synopsis "Deep merge function for Python") |
| 17276 | (description "This package provides a deep merge function for Python, |
| 17277 | useful to combine multiple data objects as one.") |
| 17278 | (license license:expat))) |
| 17279 | |
| 17280 | (define-public python-clikit |
| 17281 | (package |
| 17282 | (name "python-clikit") |
| 17283 | (version "0.6.2") |
| 17284 | (source |
| 17285 | (origin |
| 17286 | (method url-fetch) |
| 17287 | (uri (pypi-uri "clikit" version)) |
| 17288 | (sha256 |
| 17289 | (base32 |
| 17290 | "0ngdkmb73gkp5y00q7r9k1cdlfn0wyzws2wrqlshc4hlkbdyabj4")))) |
| 17291 | (build-system python-build-system) |
| 17292 | (arguments '(#:tests? #f)) ; no test in the PyPI tarball |
| 17293 | (propagated-inputs |
| 17294 | (list python-crashtest python-pastel python-pylev)) |
| 17295 | (home-page "https://github.com/sdispater/clikit") |
| 17296 | (synopsis "Group of utilities to build command line interfaces") |
| 17297 | (description |
| 17298 | "CliKit is a group of utilities to build testable command line |
| 17299 | interfaces.") |
| 17300 | (license license:expat))) |
| 17301 | |
| 17302 | (define-public python-msgpack-python |
| 17303 | (package |
| 17304 | (name "python-msgpack-python") |
| 17305 | (version "0.5.6") |
| 17306 | (source |
| 17307 | (origin |
| 17308 | (method url-fetch) |
| 17309 | (uri (pypi-uri "msgpack-python" version)) |
| 17310 | (sha256 |
| 17311 | (base32 |
| 17312 | "16wh8qgybmfh4pjp8vfv78mdlkxfmcasg78lzlnm6nslsfkci31p")))) |
| 17313 | (build-system python-build-system) |
| 17314 | (home-page "https://msgpack.org/") |
| 17315 | (synopsis "Package to deserialize messages in MessagePack binary format") |
| 17316 | (description |
| 17317 | "MessagePack is an efficient binary serialization format. It lets you |
| 17318 | exchange data among multiple languages like JSON. But it's faster and |
| 17319 | smaller. Small integers are encoded into a single byte, and typical short |
| 17320 | strings require only one extra byte in addition to the strings themselves.") |
| 17321 | (license license:asl2.0))) |
| 17322 | |
| 17323 | (define-public python-cattrs |
| 17324 | (package |
| 17325 | (name "python-cattrs") |
| 17326 | (version "22.1.0") |
| 17327 | (source (origin |
| 17328 | (method git-fetch) ;for tests |
| 17329 | (uri (git-reference |
| 17330 | (url "https://github.com/python-attrs/cattrs") |
| 17331 | (commit (string-append "v" version)))) |
| 17332 | (file-name (git-file-name name version)) |
| 17333 | (sha256 |
| 17334 | (base32 |
| 17335 | "1n0h25gj6zd02kqyl040xpdvg4hpy1j92716sz0rg019xjqqijqb")))) |
| 17336 | (build-system pyproject-build-system) |
| 17337 | (arguments |
| 17338 | (list |
| 17339 | #:phases |
| 17340 | #~(modify-phases %standard-phases |
| 17341 | (add-after 'unpack 'adjust-for-older-attrs |
| 17342 | ;; Our older attrs package is using the 'attr' rather than 'attrs' |
| 17343 | ;; namespace. |
| 17344 | ;; TODO: Remove after python-attrs is updated to >= 21.4.0. |
| 17345 | (lambda _ |
| 17346 | (substitute* (find-files "." "\\.py$") |
| 17347 | (("from attrs\\b") |
| 17348 | "from attr")))) |
| 17349 | (replace 'check |
| 17350 | (lambda* (#:key tests? #:allow-other-keys) |
| 17351 | (when tests? |
| 17352 | ;; Do not use the 'pytest' binary as it hard-codes an older |
| 17353 | ;; python-hypothesis version near the beginning of its |
| 17354 | ;; GUIX_PYTHONPATH. |
| 17355 | (invoke "python" "-m" "pytest" "-vv" "-c" "/dev/null" "tests" |
| 17356 | "-n" (number->string (parallel-job-count)) |
| 17357 | ;; This test requires orjson, which needs the maturin |
| 17358 | ;; build system and new Rust dependencies. |
| 17359 | "--ignore" "tests/test_preconf.py"))))))) |
| 17360 | (native-inputs |
| 17361 | (list python-hypothesis-next |
| 17362 | python-immutables |
| 17363 | python-msgpack |
| 17364 | python-poetry-core |
| 17365 | python-pymongo ;for the bson module |
| 17366 | python-pytest |
| 17367 | python-pytest-xdist)) |
| 17368 | (propagated-inputs |
| 17369 | (list python-attrs |
| 17370 | python-exceptiongroup |
| 17371 | python-typing-extensions)) |
| 17372 | (home-page "https://github.com/python-attrs/cattrs") |
| 17373 | (synopsis "Python library for structuring and unstructuring data") |
| 17374 | (description "@code{cattrs} is an Python library for structuring and |
| 17375 | unstructuring data. @code{cattrs} works best with @code{attrs} classes, |
| 17376 | @code{dataclasses} and the usual Python collections, but other kinds of |
| 17377 | classes can also be supported by manually registering converters.") |
| 17378 | (license license:expat))) |
| 17379 | |
| 17380 | (define-public python-cachy |
| 17381 | (package |
| 17382 | (name "python-cachy") |
| 17383 | (version "0.3.0") |
| 17384 | (source |
| 17385 | (origin |
| 17386 | (method url-fetch) |
| 17387 | (uri (pypi-uri "cachy" version)) |
| 17388 | (sha256 |
| 17389 | (base32 |
| 17390 | "1cb9naly8ampzlky7h74n5wj628l7jkpsh0c0jz0namlrvs82r8q")))) |
| 17391 | (build-system python-build-system) |
| 17392 | (arguments |
| 17393 | '(#:phases |
| 17394 | (modify-phases %standard-phases |
| 17395 | (replace 'check |
| 17396 | (lambda _ (invoke "pifpaf" "run" "memcached" "--port" "11211" "--" |
| 17397 | "pytest")))))) |
| 17398 | (native-inputs |
| 17399 | (list memcached python-fakeredis python-flexmock python-pifpaf |
| 17400 | python-pytest)) |
| 17401 | (propagated-inputs |
| 17402 | (list python-memcached python-msgpack-python python-redis)) |
| 17403 | (home-page "https://github.com/sdispater/cachy") |
| 17404 | (synopsis "Simple yet effective caching library") |
| 17405 | (description |
| 17406 | "Cachy provides a simple yet effective caching library. A simple but |
| 17407 | powerful API: thread-safety; decorator syntax; support for memcached, redis, |
| 17408 | database, file, dict stores. Cachy supports python versions 2.7+ and 3.2+.") |
| 17409 | (license license:expat))) |
| 17410 | |
| 17411 | (define-public poetry |
| 17412 | (package |
| 17413 | (name "poetry") |
| 17414 | (version "1.1.12") |
| 17415 | (source |
| 17416 | (origin |
| 17417 | (method url-fetch) |
| 17418 | (uri (pypi-uri "poetry" version)) |
| 17419 | (sha256 |
| 17420 | (base32 |
| 17421 | "0rr54mvcfcv9cv6vw2122y28xvd2pwqpv2x8c8j5ayz3gwsy4rjw")))) |
| 17422 | (build-system python-build-system) |
| 17423 | (arguments |
| 17424 | `(#:tests? #f ;PyPI does not have tests |
| 17425 | #:phases |
| 17426 | (modify-phases %standard-phases |
| 17427 | (add-before 'build 'patch-setup-py |
| 17428 | (lambda _ |
| 17429 | (substitute* "setup.py" |
| 17430 | ;; Relax some of the requirements. |
| 17431 | (("(keyring>=21.2.0),<22.0.0" _ keyring) keyring) |
| 17432 | (("(packaging>=20.4),<21.0" _ packaging) packaging))))))) |
| 17433 | (propagated-inputs |
| 17434 | (list python-cachecontrol |
| 17435 | python-cachy |
| 17436 | python-cleo |
| 17437 | python-crashtest |
| 17438 | python-entrypoints |
| 17439 | python-html5lib |
| 17440 | python-keyring |
| 17441 | ; Use of deprecated version of msgpack reported upstream: |
| 17442 | ; https://github.com/python-poetry/poetry/issues/3607 |
| 17443 | python-msgpack-transitional |
| 17444 | python-packaging |
| 17445 | python-pexpect |
| 17446 | python-pip |
| 17447 | python-pkginfo |
| 17448 | python-poetry-core |
| 17449 | python-requests |
| 17450 | python-requests-toolbelt |
| 17451 | python-shellingham |
| 17452 | python-tomlkit |
| 17453 | python-virtualenv)) |
| 17454 | (home-page "https://python-poetry.org") |
| 17455 | (synopsis "Python dependency management and packaging made easy") |
| 17456 | (description "Poetry is a tool for dependency management and packaging |
| 17457 | in Python. It allows you to declare the libraries your project depends on and |
| 17458 | it will manage (install/update) them for you.") |
| 17459 | (license license:expat))) |
| 17460 | |
| 17461 | (define-public python-lark-parser |
| 17462 | (package |
| 17463 | (name "python-lark-parser") |
| 17464 | (version "0.9.0") |
| 17465 | (source (origin |
| 17466 | (method url-fetch) |
| 17467 | (uri (pypi-uri "lark-parser" version)) |
| 17468 | (sha256 |
| 17469 | (base32 |
| 17470 | "1kd61asrb3h9spgsj4bslfbgp8q4271sw3hblk6f2vbbblv8jxcy")))) |
| 17471 | (build-system python-build-system) |
| 17472 | (home-page "https://github.com/lark-parser/lark") |
| 17473 | (synopsis "Multi-language parser for Python") |
| 17474 | (description |
| 17475 | "Lark is a parser built with a focus on ergonomics, performance and |
| 17476 | resilience. Lark can parse all context-free languages. That means it is |
| 17477 | capable of parsing almost any programming language out there, and to |
| 17478 | some degree most natural languages too.") |
| 17479 | (license license:expat))) |
| 17480 | |
| 17481 | (define-public python-libcst |
| 17482 | (package |
| 17483 | (name "python-libcst") |
| 17484 | (version "0.3.8") |
| 17485 | (source (origin |
| 17486 | (method url-fetch) |
| 17487 | (uri (pypi-uri "libcst" version)) |
| 17488 | (sha256 |
| 17489 | (base32 |
| 17490 | "05zsc61gsd2pyb6wiyh58zczndxi6rm4d2jl94rpf5cv1fzw6ks8")))) |
| 17491 | (build-system python-build-system) |
| 17492 | (arguments |
| 17493 | `(#:phases |
| 17494 | (modify-phases %standard-phases |
| 17495 | (add-after 'unpack 'remove-failing-tests |
| 17496 | (lambda _ |
| 17497 | ;; Reported upstream: <https://github.com/Instagram/LibCST/issues/346>. |
| 17498 | (delete-file "libcst/tests/test_fuzz.py") |
| 17499 | ;; Reported upstream: <https://github.com/Instagram/LibCST/issues/347>. |
| 17500 | (delete-file "libcst/tests/test_pyre_integration.py") |
| 17501 | (delete-file "libcst/codemod/tests/test_codemod_cli.py") |
| 17502 | (delete-file "libcst/metadata/tests/test_full_repo_manager.py") |
| 17503 | (delete-file "libcst/metadata/tests/test_type_inference_provider.py"))) |
| 17504 | (add-before 'check 'generate-test-data |
| 17505 | (lambda _ |
| 17506 | (invoke "python" "-m" "libcst.codegen.generate" "visitors") |
| 17507 | (invoke "python" "-m" "libcst.codegen.generate" "return_types"))) |
| 17508 | (replace 'check |
| 17509 | (lambda* (#:key tests? #:allow-other-keys) |
| 17510 | (when tests? |
| 17511 | (invoke "python" "-m" "unittest"))))))) |
| 17512 | (native-inputs |
| 17513 | (list python-black python-isort)) |
| 17514 | (propagated-inputs |
| 17515 | (list python-typing-extensions python-typing-inspect python-pyyaml)) |
| 17516 | (home-page "https://github.com/Instagram/LibCST") |
| 17517 | (synopsis "Concrete Syntax Tree (CST) parser and serializer library for Python") |
| 17518 | (description |
| 17519 | "LibCST parses Python source code as a CST tree that keeps all |
| 17520 | formatting details (comments, whitespaces, parentheses, etc). It's useful |
| 17521 | for building automated refactoring (codemod) applications and linters. |
| 17522 | LibCST creates a compromise between an Abstract Syntax Tree (AST) and |
| 17523 | a traditional Concrete Syntax Tree (CST). By carefully reorganizing and |
| 17524 | naming node types and fields, LibCST creates a lossless CST that looks and |
| 17525 | feels like an AST.") |
| 17526 | (license (list license:expat |
| 17527 | ;; Some files unde libcst/_parser/ are under Python Software |
| 17528 | ;; Foundation license (see LICENSE file for details) |
| 17529 | license:psfl |
| 17530 | ;; libcst/_add_slots.py |
| 17531 | license:asl2.0)))) |
| 17532 | |
| 17533 | (define-public python-libcst-minimal |
| 17534 | (hidden-package |
| 17535 | (package |
| 17536 | (inherit python-libcst) |
| 17537 | (name "python-libcst-minimal") |
| 17538 | (arguments '(#:tests? #f)) |
| 17539 | (native-inputs '())))) |
| 17540 | |
| 17541 | (define-public python-typing-inspect |
| 17542 | (package |
| 17543 | (name "python-typing-inspect") |
| 17544 | (version "0.6.0") |
| 17545 | (source (origin |
| 17546 | (method url-fetch) |
| 17547 | (uri (pypi-uri "typing_inspect" version)) |
| 17548 | (sha256 |
| 17549 | (base32 |
| 17550 | "1dzs9a1pr23dhbvmnvms2jv7l7jk26023g5ysf0zvnq8b791s6wg")) |
| 17551 | (patches (search-patches "python-typing-inspect-fix.patch")))) |
| 17552 | (build-system python-build-system) |
| 17553 | (propagated-inputs |
| 17554 | (list python-mypy-extensions python-typing-extensions)) |
| 17555 | (home-page "https://github.com/ilevkivskyi/typing_inspect") |
| 17556 | (synopsis "API for inspection of types in the Python @code{typing} module") |
| 17557 | (description |
| 17558 | "The @code{typing_inspect} module defines experimental API for runtime |
| 17559 | inspection of types defined in the Python standard typing module.") |
| 17560 | (license license:expat))) |
| 17561 | |
| 17562 | (define-public python-lazy-object-proxy |
| 17563 | (package |
| 17564 | (name "python-lazy-object-proxy") |
| 17565 | (version "1.5.1") |
| 17566 | (source (origin |
| 17567 | (method url-fetch) |
| 17568 | (uri (pypi-uri "lazy-object-proxy" version)) |
| 17569 | (sha256 |
| 17570 | (base32 |
| 17571 | "0hwh29m9wa582ramj30p4pysckdrmki1z1b8iaaxk6mpfx2kc8wp")))) |
| 17572 | (native-inputs |
| 17573 | (list python-setuptools-scm)) |
| 17574 | (build-system python-build-system) |
| 17575 | (home-page "https://github.com/ionelmc/python-lazy-object-proxy") |
| 17576 | (synopsis "Lazy object proxy for python") |
| 17577 | (description |
| 17578 | "Lazy object proxy is an object that wraps a callable but defers the call |
| 17579 | until the object is actually required, and caches the result of said call.") |
| 17580 | (license license:bsd-2))) |
| 17581 | |
| 17582 | (define-public python-dnspython |
| 17583 | (package |
| 17584 | (name "python-dnspython") |
| 17585 | (version "2.1.0") |
| 17586 | (source (origin |
| 17587 | (method url-fetch) |
| 17588 | (uri (pypi-uri "dnspython" version ".zip")) |
| 17589 | (sha256 |
| 17590 | (base32 |
| 17591 | "1m0xvyby8baaxp6pfm0fgq8d2pq5dd8qm8bzfbrs009jaw5pza74")))) |
| 17592 | (build-system python-build-system) |
| 17593 | (arguments |
| 17594 | `(#:tests? #f ; XXX: requires internet access |
| 17595 | #:phases |
| 17596 | (modify-phases %standard-phases |
| 17597 | (add-after 'unpack 'patch-getprotobyname-calls |
| 17598 | ;; These calls are problematic in the build environment as there is |
| 17599 | ;; no /etc/protocols. This breaks the sanity-check phase of any |
| 17600 | ;; package depnding on this one. |
| 17601 | (lambda _ |
| 17602 | (substitute* "dns/rdtypes/IN/WKS.py" |
| 17603 | (("socket.getprotobyname\\('tcp'\\)") |
| 17604 | "6") |
| 17605 | (("socket.getprotobyname\\('udp'\\)") |
| 17606 | "17"))))))) |
| 17607 | (native-inputs (list unzip)) |
| 17608 | (home-page "https://www.dnspython.org") |
| 17609 | (synopsis "DNS toolkit for Python") |
| 17610 | (description |
| 17611 | "dnspython is a DNS toolkit for Python. It supports almost all record |
| 17612 | types. It can be used for queries, zone transfers, and dynamic updates. |
| 17613 | It supports TSIG authenticated messages and EDNS0.") |
| 17614 | (license license:expat))) |
| 17615 | |
| 17616 | (define-public python-dnspython-1.16 |
| 17617 | (package |
| 17618 | (inherit python-dnspython) |
| 17619 | (version "1.16.0") |
| 17620 | (source (origin |
| 17621 | (method url-fetch) |
| 17622 | (uri (string-append "http://www.dnspython.org/kits/" |
| 17623 | version "/dnspython-" version ".tar.gz")) |
| 17624 | (sha256 |
| 17625 | (base32 |
| 17626 | "1yaw7irazy42n0kdhlk7wyg8ki34rxcnc5xbc1wfwy245b0wbxab")))) |
| 17627 | (native-inputs '()))) |
| 17628 | |
| 17629 | (define-public python-py3dns |
| 17630 | (package |
| 17631 | (name "python-py3dns") |
| 17632 | (version "3.2.1") |
| 17633 | (source |
| 17634 | (origin |
| 17635 | (method url-fetch) |
| 17636 | (uri (pypi-uri "py3dns" version)) |
| 17637 | (sha256 |
| 17638 | (base32 |
| 17639 | "1r25f0ys5p37bhld7m7n4gb0lrysaym3w318w2f8bncq7r3d81qz")))) |
| 17640 | (build-system python-build-system) |
| 17641 | ;; This package wants to read /etc/resolv.conf. We can't patch it without |
| 17642 | ;; removing functionality so we copy from Nix and "just don't build it". |
| 17643 | (arguments |
| 17644 | `(#:phases |
| 17645 | (modify-phases %standard-phases |
| 17646 | (add-after 'unpack 'patch-source |
| 17647 | (lambda _ |
| 17648 | (substitute* "setup.py" |
| 17649 | (("import DNS") "") |
| 17650 | (("DNS.__version__") (string-append "\"" ,version "\""))))) |
| 17651 | ;; For the same reason, drop the sanity check because the library |
| 17652 | ;; fails to load without /etc/resolv.conf. |
| 17653 | (delete 'sanity-check)) |
| 17654 | #:tests? #f)) ; Also skip the tests. |
| 17655 | (home-page "https://launchpad.net/py3dns") |
| 17656 | (synopsis "Python 3 DNS library") |
| 17657 | (description "This Python 3 module provides a DNS API for looking up DNS |
| 17658 | entries from within Python 3 modules and applications. This module is a |
| 17659 | simple, lightweight implementation.") |
| 17660 | (license license:psfl))) |
| 17661 | |
| 17662 | (define-public python-email-validator |
| 17663 | (package |
| 17664 | (name "python-email-validator") |
| 17665 | (version "1.0.2") |
| 17666 | (source |
| 17667 | (origin (method url-fetch) |
| 17668 | (uri (pypi-uri "email_validator" version)) |
| 17669 | (sha256 |
| 17670 | (base32 |
| 17671 | "1ja9149l9ck5n45a72h3is7v476hjny5ybxbcamx1nw6iplsm7k6")))) |
| 17672 | (build-system python-build-system) |
| 17673 | (arguments |
| 17674 | '(#:phases |
| 17675 | (modify-phases %standard-phases |
| 17676 | (add-before 'build 'use-dnspython |
| 17677 | (lambda _ |
| 17678 | (substitute* "setup.py" |
| 17679 | (("dnspython3") "dnspython")) |
| 17680 | #t))))) |
| 17681 | (propagated-inputs |
| 17682 | (list python-dnspython python-idna)) |
| 17683 | (home-page "https://github.com/JoshData/python-email-validator") |
| 17684 | (synopsis "Email address validation library for Python") |
| 17685 | (description |
| 17686 | "This library validates email address syntax and deliverability.") |
| 17687 | (license license:cc0))) |
| 17688 | |
| 17689 | (define-public python-ukpostcodeparser |
| 17690 | (package |
| 17691 | (name "python-ukpostcodeparser") |
| 17692 | (version "1.1.2") |
| 17693 | (source (origin |
| 17694 | (method url-fetch) |
| 17695 | (uri (pypi-uri "UkPostcodeParser" version)) |
| 17696 | (sha256 |
| 17697 | (base32 |
| 17698 | "03jkf1ygbwq3akzbcjyjk1akc1hv2sfgx90306pq1nwklbpn80lk")))) |
| 17699 | (build-system python-build-system) |
| 17700 | (arguments |
| 17701 | `(#:phases |
| 17702 | (modify-phases %standard-phases |
| 17703 | (replace 'check |
| 17704 | (lambda* (#:key tests? #:allow-other-keys) |
| 17705 | (when tests? |
| 17706 | ;; Tests for lowercase postcodes fail. |
| 17707 | (invoke "pytest" "-vv" "ukpostcodeparser/test/parser.py" "-k" |
| 17708 | (string-append "not test_091 " |
| 17709 | "and not test_097 " |
| 17710 | "and not test_098 " |
| 17711 | "and not test_125 " |
| 17712 | "and not test_131")))))))) |
| 17713 | (native-inputs |
| 17714 | (list python-pytest)) |
| 17715 | (home-page "https://github.com/hamstah/ukpostcodeparser") |
| 17716 | (synopsis "UK Postcode parser for Python") |
| 17717 | (description |
| 17718 | "This library provides the @code{parse_uk_postcode} function for |
| 17719 | parsing UK postcodes.") |
| 17720 | (license license:expat))) |
| 17721 | |
| 17722 | (define-public python-faker |
| 17723 | (package |
| 17724 | (name "python-faker") |
| 17725 | (version "13.3.4") |
| 17726 | (source (origin |
| 17727 | (method url-fetch) |
| 17728 | (uri (pypi-uri "Faker" version)) |
| 17729 | (sha256 |
| 17730 | (base32 |
| 17731 | "04855dqvvi2mr739l5x3qf82rxq0a7spc8gl76k8xixmbw36328q")))) |
| 17732 | (build-system python-build-system) |
| 17733 | (arguments |
| 17734 | '(#:phases |
| 17735 | (modify-phases %standard-phases |
| 17736 | (replace 'check |
| 17737 | (lambda* (#:key tests? #:allow-other-keys) |
| 17738 | (when tests? |
| 17739 | (invoke "python" "-m" "pytest" "-v"))))))) |
| 17740 | (native-inputs |
| 17741 | (list python-freezegun |
| 17742 | python-pytest |
| 17743 | python-random2 |
| 17744 | python-ukpostcodeparser |
| 17745 | python-validators)) |
| 17746 | (propagated-inputs (list python-dateutil)) |
| 17747 | (home-page "https://github.com/joke2k/faker") |
| 17748 | (synopsis "Python package that generates fake data") |
| 17749 | (description |
| 17750 | "Faker is a Python package that generates fake data such as names, |
| 17751 | addresses, and phone numbers.") |
| 17752 | (license license:expat))) |
| 17753 | |
| 17754 | (define-public python-pyaml |
| 17755 | (package |
| 17756 | (name "python-pyaml") |
| 17757 | (version "21.10.1") |
| 17758 | (source (origin |
| 17759 | (method url-fetch) |
| 17760 | (uri (pypi-uri "pyaml" version)) |
| 17761 | (sha256 |
| 17762 | (base32 |
| 17763 | "10w3frzqir5sbpglc9bwb8w414dsivmcvji07yxy61mz2gp9ylf6")))) |
| 17764 | (build-system python-build-system) |
| 17765 | (native-inputs |
| 17766 | (list python-unidecode)) |
| 17767 | (propagated-inputs |
| 17768 | (list python-pyyaml)) |
| 17769 | (home-page "https://github.com/mk-fg/pretty-yaml") |
| 17770 | (synopsis "YAML pretty-print library for Python") |
| 17771 | (description |
| 17772 | "pyaml is a PyYAML based python module to produce pretty and readable |
| 17773 | YAML-serialized data.") |
| 17774 | (license license:wtfpl2))) |
| 17775 | |
| 17776 | (define-public python-pyyaml-env-tag |
| 17777 | (package |
| 17778 | (name "python-pyyaml-env-tag") |
| 17779 | (version "0.1") |
| 17780 | (source |
| 17781 | (origin |
| 17782 | (method url-fetch) |
| 17783 | (uri (pypi-uri "pyyaml_env_tag" version)) |
| 17784 | (sha256 |
| 17785 | (base32 "1nsva88jsmwn0cb9jnrfiz4dvs9xakkpgfii7g1xwkx1pmsjc2bh")))) |
| 17786 | (build-system python-build-system) |
| 17787 | (propagated-inputs (list python-pyyaml)) |
| 17788 | (home-page "https://github.com/waylan/pyyaml-env-tag") |
| 17789 | (synopsis "Custom YAML tag for environment variables") |
| 17790 | (description "This package provides a custom YAML tag for referencing |
| 17791 | environment variables in YAML files.") |
| 17792 | (license license:expat))) |
| 17793 | |
| 17794 | (define-public python-backpack |
| 17795 | (package |
| 17796 | (name "python-backpack") |
| 17797 | (version "0.1") |
| 17798 | (source |
| 17799 | (origin |
| 17800 | (method url-fetch) |
| 17801 | (uri (pypi-uri "backpack" version)) |
| 17802 | (sha256 |
| 17803 | (base32 |
| 17804 | "14rq1mvm0jda90lcx9gyyby9dvq4x3js2cmxvd6vl4686ixwyqh1")))) |
| 17805 | (build-system python-build-system) |
| 17806 | (native-inputs |
| 17807 | (list python-pytest python-nose python-toml)) |
| 17808 | (propagated-inputs |
| 17809 | (list python-simplejson)) |
| 17810 | (home-page "https://github.com/sdispater/backpack") |
| 17811 | (synopsis "Utilities for working with Python collections") |
| 17812 | (description "Backpack provides some useful utilities for working with |
| 17813 | collections of data.") |
| 17814 | (license license:expat))) |
| 17815 | |
| 17816 | (define-public python-prompt-toolkit |
| 17817 | (package |
| 17818 | (name "python-prompt-toolkit") |
| 17819 | (version "3.0.29") |
| 17820 | (source |
| 17821 | (origin |
| 17822 | (method url-fetch) |
| 17823 | (uri (pypi-uri "prompt_toolkit" version)) |
| 17824 | (sha256 |
| 17825 | (base32 "19vf5cahp3imdpwhgvk55g3dvqmc6ga175r4vkq79kffx1h0yr5x")))) |
| 17826 | (build-system python-build-system) |
| 17827 | (arguments |
| 17828 | `(#:phases |
| 17829 | (modify-phases %standard-phases |
| 17830 | (replace 'check |
| 17831 | (lambda* (#:key tests? #:allow-other-keys) |
| 17832 | (when tests? |
| 17833 | ;; HOME is needed for the test |
| 17834 | ;; "test_pathcompleter_can_expanduser". |
| 17835 | (setenv "HOME" "/tmp") |
| 17836 | (invoke "pytest" "-vv"))))))) |
| 17837 | (propagated-inputs |
| 17838 | (list python-wcwidth)) |
| 17839 | (native-inputs |
| 17840 | (list python-pytest)) |
| 17841 | (home-page "https://github.com/prompt-toolkit/python-prompt-toolkit") |
| 17842 | (synopsis "Library for building command line interfaces in Python") |
| 17843 | (description |
| 17844 | "Prompt-Toolkit is a library for building interactive command line |
| 17845 | interfaces in Python. It's like GNU Readline but it also features syntax |
| 17846 | highlighting while typing, out-of-the-box multi-line input editing, advanced |
| 17847 | code completion, incremental search, support for Chinese double-width |
| 17848 | characters, mouse support, and auto suggestions.") |
| 17849 | (license license:bsd-3))) |
| 17850 | |
| 17851 | (define-public python-proselint |
| 17852 | (package |
| 17853 | (name "python-proselint") |
| 17854 | (version "0.13.0") |
| 17855 | (source |
| 17856 | (origin |
| 17857 | (method url-fetch) |
| 17858 | (uri (pypi-uri "proselint" version)) |
| 17859 | (sha256 |
| 17860 | (base32 |
| 17861 | "0n1ahnq2mkgvh94g05xhc3l1fs3hh0ycskqlqivhhfdaq8ybdlkx")))) |
| 17862 | (build-system python-build-system) |
| 17863 | (arguments |
| 17864 | `(#:tests? #f |
| 17865 | #:phases |
| 17866 | (modify-phases %standard-phases |
| 17867 | (add-after 'unpack 'set-home-directory |
| 17868 | (lambda _ |
| 17869 | (setenv "HOME" "/tmp")))))) |
| 17870 | (propagated-inputs |
| 17871 | (list python-click python-future python-six)) |
| 17872 | (home-page "https://github.com/amperser/proselint") |
| 17873 | (synopsis "Linter for prose") |
| 17874 | (description "@code{python-proselint} is a linter for English prose, that |
| 17875 | scans through a file and detects issues.") |
| 17876 | (license license:bsd-3))) |
| 17877 | |
| 17878 | (define-public python-jedi |
| 17879 | (package |
| 17880 | (name "python-jedi") |
| 17881 | (version "0.18.1") |
| 17882 | (source |
| 17883 | (origin |
| 17884 | (method git-fetch) |
| 17885 | (uri (git-reference |
| 17886 | (url "https://github.com/davidhalter/jedi") |
| 17887 | (commit (string-append "v" version)) |
| 17888 | (recursive? #true))) |
| 17889 | (file-name (git-file-name name version)) |
| 17890 | (sha256 |
| 17891 | (base32 |
| 17892 | "07drmi3ai49jw5n23ibkambcgijqcw073ihypjgxfnks5lv4yqy1")) |
| 17893 | (modules '((guix build utils))) |
| 17894 | (snippet |
| 17895 | ;; Adjust comprehension syntax for Python > 3.8. |
| 17896 | ;; From <https://github.com/davidhalter/jedi/issues/1824>. |
| 17897 | '(substitute* "test/completion/lambdas.py" |
| 17898 | (("if lambda: 3") |
| 17899 | "if (lambda: 3)"))))) |
| 17900 | (build-system python-build-system) |
| 17901 | (arguments |
| 17902 | `(#:phases |
| 17903 | (modify-phases %standard-phases |
| 17904 | (add-after 'unpack 'fix-completion-test |
| 17905 | (lambda _ |
| 17906 | ;; This resolves a failure in the 'test_completion' test (see: |
| 17907 | ;; https://github.com/davidhalter/jedi/issues/1824). |
| 17908 | ;; TODO: Remove after a new release is made (currently: 0.18.1). |
| 17909 | (substitute* "test/completion/lambdas.py" |
| 17910 | (("\\[a for a in \\[1,2\\] if lambda: 3\\]\\[0\\]") |
| 17911 | "[a for a in [1,2] if (lambda: 3)][0]")))) |
| 17912 | (replace 'check |
| 17913 | (lambda* (#:key tests? #:allow-other-keys) |
| 17914 | (when tests? |
| 17915 | (setenv "HOME" "/tmp") |
| 17916 | (invoke "python" "-m" "pytest" "-vv"))))))) |
| 17917 | (native-inputs |
| 17918 | (list python-colorama python-docopt python-pytest)) |
| 17919 | (propagated-inputs |
| 17920 | (list python-parso)) |
| 17921 | (home-page "https://github.com/davidhalter/jedi") |
| 17922 | (synopsis "Autocompletion and static analysis library for Python") |
| 17923 | (description |
| 17924 | "Jedi is a static analysis tool for Python that can be used in Integrated |
| 17925 | Development Environments (@dfn{IDE}s) and text editors. It understands Python |
| 17926 | on a deeper level than many other static analysis frameworks for Python. |
| 17927 | |
| 17928 | Jedi understands docstrings and you can use Jedi autocompletion in your REPL |
| 17929 | as well.") |
| 17930 | (license license:expat))) |
| 17931 | |
| 17932 | (define-public ptpython |
| 17933 | (package |
| 17934 | (name "ptpython") |
| 17935 | (version "3.0.20") |
| 17936 | (source (origin |
| 17937 | (method url-fetch) |
| 17938 | (uri (pypi-uri "ptpython" version)) |
| 17939 | (sha256 |
| 17940 | (base32 |
| 17941 | "1mjfyr5gwrs1qbizh6nki0nv6hahmg8mhhqxi1qc6pfa4znlrzga")))) |
| 17942 | (build-system python-build-system) |
| 17943 | (arguments |
| 17944 | `(#:tests? #f)) ;there are no tests |
| 17945 | (propagated-inputs |
| 17946 | (list python-appdirs python-black python-jedi python-prompt-toolkit |
| 17947 | python-pygments)) |
| 17948 | (home-page "https://github.com/jonathanslenders/ptpython") |
| 17949 | (synopsis "Python Read-Eval-Print-Loop with nice IDE-like features") |
| 17950 | (description |
| 17951 | "ptpython is a Python read-eval-print loop with IDE-like features. |
| 17952 | It supports syntax highlighting, multiline editing, autocompletion, mouse, |
| 17953 | color schemes, bracketed paste, Vi and Emacs keybindings, Chinese characters |
| 17954 | etc.") |
| 17955 | (license license:bsd-3))) |
| 17956 | |
| 17957 | (define-public python-easyprocess |
| 17958 | (package |
| 17959 | (name "python-easyprocess") |
| 17960 | (version "0.3") |
| 17961 | (source |
| 17962 | (origin |
| 17963 | (method url-fetch) |
| 17964 | (uri (pypi-uri "EasyProcess" version)) |
| 17965 | (sha256 |
| 17966 | (base32 "115rzzr0hx4af4m6krf7dxn8851n4l8jfxahjzjc2r0zq2m8v57v")))) |
| 17967 | (build-system python-build-system) |
| 17968 | (arguments |
| 17969 | ;; Tests require pyvirtualdisplay, which requires this package. |
| 17970 | `(#:tests? #f)) |
| 17971 | (home-page "https://github.com/ponty/easyprocess") |
| 17972 | (synopsis "Python subprocess interface") |
| 17973 | (description |
| 17974 | "@code{easyprocess} is an easy to use Python subprocess interface.") |
| 17975 | (license license:bsd-3))) |
| 17976 | |
| 17977 | (define-public python-entrypoint2 |
| 17978 | (package |
| 17979 | (name "python-entrypoint2") |
| 17980 | (version "0.2.4") |
| 17981 | (source |
| 17982 | (origin |
| 17983 | (method url-fetch) |
| 17984 | (uri (pypi-uri "entrypoint2" version)) |
| 17985 | (sha256 |
| 17986 | (base32 "1qyxq54r2fbh09ab5sffbxajy8arbk6czxz5lq3ccr9qrypw6w27")))) |
| 17987 | (build-system python-build-system) |
| 17988 | (arguments |
| 17989 | `(#:test-target "pytest")) |
| 17990 | (native-inputs |
| 17991 | (list python-easyprocess python-pytest python-pytest-runner)) |
| 17992 | (home-page "https://github.com/ponty/entrypoint2") |
| 17993 | (synopsis "Command-line interface for Python modules") |
| 17994 | (description |
| 17995 | "@code{entrypoint2} is an easy to use command-line interface for Python |
| 17996 | modules based on @code{argparse}. It translates function signature and |
| 17997 | documentation to argparse configuration.") |
| 17998 | (license license:bsd-3))) |
| 17999 | |
| 18000 | (define-public python-pyvirtualdisplay |
| 18001 | (package |
| 18002 | (name "python-pyvirtualdisplay") |
| 18003 | (version "2.1") |
| 18004 | (source |
| 18005 | (origin |
| 18006 | (method url-fetch) |
| 18007 | (uri (pypi-uri "PyVirtualDisplay" version)) |
| 18008 | (sha256 |
| 18009 | (base32 "1z2fzgiw3xv3m1d9ppn53g07zhnpj05addiz56sm6ircxibnjk4x")))) |
| 18010 | (build-system python-build-system) |
| 18011 | (arguments |
| 18012 | ;; Tests fail with: |
| 18013 | ;; FileNotFoundError: [Errno 2] No such file or directory: 'Xvnc'. |
| 18014 | `(#:tests? #f)) |
| 18015 | (native-inputs |
| 18016 | (list python-entrypoint2 python-psutil python-pytest |
| 18017 | python-pytest-runner)) |
| 18018 | (propagated-inputs |
| 18019 | (list python-easyprocess python-pillow)) |
| 18020 | (home-page "https://github.com/ponty/pyvirtualdisplay") |
| 18021 | (synopsis "Python wrapper for Xvfb, Xephyr and Xvnc") |
| 18022 | (description |
| 18023 | "@code{pyvirtualdisplay} is a Python wrapper for Xvfb, Xephyr and Xvnc.") |
| 18024 | (license license:bsd-3))) |
| 18025 | |
| 18026 | (define-public python-stem |
| 18027 | (package |
| 18028 | (name "python-stem") |
| 18029 | (version "1.8.0") |
| 18030 | (source |
| 18031 | (origin |
| 18032 | (method url-fetch) |
| 18033 | (uri (pypi-uri "stem" version)) |
| 18034 | (sha256 |
| 18035 | (base32 |
| 18036 | "1hk8alc0r4m669ggngdfvryndd0fbx0w62sclcmg55af4ak8xd50")))) |
| 18037 | (build-system python-build-system) |
| 18038 | (arguments |
| 18039 | `(#:phases |
| 18040 | (modify-phases %standard-phases |
| 18041 | (add-after 'unpack 'fix-tests |
| 18042 | ;; See https://github.com/torproject/stem/issues/56 |
| 18043 | (lambda _ |
| 18044 | (substitute* "run_tests.py" |
| 18045 | (("test\\.task\\.MOCK_VERSION,") |
| 18046 | "")))) |
| 18047 | (replace 'check |
| 18048 | (lambda _ |
| 18049 | (invoke "./run_tests.py" "--unit") |
| 18050 | #t))))) |
| 18051 | (native-inputs |
| 18052 | (list python-mock python-pycodestyle python-pyflakes)) |
| 18053 | (home-page "https://stem.torproject.org/") |
| 18054 | (synopsis |
| 18055 | "Python controller library that allows applications to interact with Tor") |
| 18056 | (description |
| 18057 | "Stem is a Python controller library for Tor. With it you can use Tor's |
| 18058 | control protocol to script against the Tor process and read descriptor data |
| 18059 | relays publish about themselves.") |
| 18060 | (license license:lgpl3))) |
| 18061 | |
| 18062 | (define-public python-pyserial |
| 18063 | (package |
| 18064 | (name "python-pyserial") |
| 18065 | (version "3.5") |
| 18066 | (source |
| 18067 | (origin |
| 18068 | (method url-fetch) |
| 18069 | (uri (pypi-uri "pyserial" version)) |
| 18070 | (sha256 |
| 18071 | (base32 |
| 18072 | "1nyd4m4mnrz8scbfqn4zpq8gnbl4x42w5zz62vcgpzqd2waf0xrw")))) |
| 18073 | (build-system python-build-system) |
| 18074 | (arguments |
| 18075 | '(#:tests? #f)) ; FIXME: 3/49 tests are failing. |
| 18076 | ;; #:phases |
| 18077 | ;; (modify-phases %standard-phases |
| 18078 | ;; (replace 'check |
| 18079 | ;; (lambda _ |
| 18080 | ;; (zero? (system* "python" "test/run_all_tests.py" "loop://"))))))) |
| 18081 | (home-page |
| 18082 | "https://github.com/pyserial/pyserial") |
| 18083 | (synopsis "Python Serial Port Bindings") |
| 18084 | (description "@code{pyserial} provide serial port bindings for Python. It |
| 18085 | supports different byte sizes, stop bits, parity and flow control with RTS/CTS |
| 18086 | and/or Xon/Xoff. The port is accessed in RAW mode.") |
| 18087 | (license license:bsd-3))) |
| 18088 | |
| 18089 | (define-public python-pyserial-asyncio |
| 18090 | (package |
| 18091 | (name "python-pyserial-asyncio") |
| 18092 | (version "0.5") |
| 18093 | (source |
| 18094 | (origin |
| 18095 | (method url-fetch) |
| 18096 | (uri (pypi-uri "pyserial-asyncio" version)) |
| 18097 | (sha256 |
| 18098 | (base32 "0cwd2cjz859v6jrm3y6hikfqjyhyfj5vhfjb8vvflvl6791yah8n")))) |
| 18099 | (build-system python-build-system) |
| 18100 | (propagated-inputs (list python-pyserial)) |
| 18101 | (home-page "https://github.com/pyserial/pyserial-asyncio") |
| 18102 | (synopsis "Pyserial asynchronous I/O extension") |
| 18103 | (description "This package extends Pyserial with asynchronous I/O |
| 18104 | support.") |
| 18105 | (license license:bsd-3))) |
| 18106 | |
| 18107 | (define-public python-pymodbus |
| 18108 | (package |
| 18109 | (name "python-pymodbus") |
| 18110 | (version "2.5.3") |
| 18111 | (source |
| 18112 | (origin |
| 18113 | (method git-fetch) |
| 18114 | (uri (git-reference |
| 18115 | (url "https://github.com/riptideio/pymodbus") |
| 18116 | (commit (string-append "v" version)))) |
| 18117 | (file-name (git-file-name name version)) |
| 18118 | (sha256 |
| 18119 | (base32 |
| 18120 | "0kjjrx7xrlx0pf3y67hhr4xvqrly3xzmvf6ic5as61m6z19m7zd5")))) |
| 18121 | (build-system python-build-system) |
| 18122 | (arguments |
| 18123 | `(#:phases (modify-phases %standard-phases |
| 18124 | (add-after 'unpack 'disable-problematic-tests |
| 18125 | (lambda _ |
| 18126 | ;; The following test modules rely on Python's own |
| 18127 | ;; 'test' module, which is not distributed in the Python |
| 18128 | ;; package of Guix. |
| 18129 | (delete-file "test/test_client_async_asyncio.py") |
| 18130 | (delete-file "test/test_client_sync_diag.py") |
| 18131 | ;; The following test module requires the asynctest |
| 18132 | ;; library, abandoned without support for Python 3.9+ |
| 18133 | ;; (see: |
| 18134 | ;; https://github.com/riptideio/pymodbus/issues/681). |
| 18135 | (delete-file "test/test_server_asyncio.py"))) |
| 18136 | (replace 'check |
| 18137 | (lambda* (#:key tests? #:allow-other-keys) |
| 18138 | (when tests? |
| 18139 | (invoke "python" "-m" "pytest"))))))) |
| 18140 | (native-inputs |
| 18141 | (list python-mock |
| 18142 | python-pytest |
| 18143 | python-redis |
| 18144 | python-sqlalchemy |
| 18145 | python-tornado |
| 18146 | python-twisted)) |
| 18147 | (propagated-inputs |
| 18148 | (list python-pyserial |
| 18149 | python-six |
| 18150 | ;; For the REPL. |
| 18151 | python-aiohttp |
| 18152 | python-click |
| 18153 | python-prompt-toolkit |
| 18154 | python-pygments |
| 18155 | python-pyserial-asyncio)) |
| 18156 | (home-page "https://github.com/riptideio/pymodbus/") |
| 18157 | (synopsis "Modbus protocol stack in Python") |
| 18158 | (description "Pymodbus is a full Modbus protocol implementation using |
| 18159 | @code{asyncio}, @code{tornado} or @code{twisted} for its asynchronous |
| 18160 | communications core. It includes the following @emph{client} features: |
| 18161 | @itemize |
| 18162 | @item full read/write protocol on discrete and register |
| 18163 | @item most of the extended protocol (diagnostic/file/pipe/setting/information) |
| 18164 | @item TCP, UDP, Serial ASCII, Serial RTU, and Serial Binary |
| 18165 | @item asynchronous and synchronous versions |
| 18166 | @item payload builder/decoder utilities |
| 18167 | @item pymodbus read eval print loop (REPL). |
| 18168 | @end itemize |
| 18169 | It also includes the following @emph{server} features: |
| 18170 | @itemize |
| 18171 | @item can function as a fully implemented Modbus server |
| 18172 | @item TCP, UDP, Serial ASCII, Serial RTU, and Serial Binary |
| 18173 | @item asynchronous and synchronous versions |
| 18174 | @item full server control context (device information, counters, etc) |
| 18175 | @item a number of backing contexts (database, redis, sqlite, a slave device). |
| 18176 | @end itemize") |
| 18177 | (license license:bsd-3))) |
| 18178 | |
| 18179 | (define-public python-exodriver |
| 18180 | (package |
| 18181 | (name "python-exodriver") |
| 18182 | (version "2.6.0") |
| 18183 | (source (origin |
| 18184 | (method git-fetch) |
| 18185 | (uri (git-reference |
| 18186 | (url "https://github.com/labjack/exodriver") |
| 18187 | (commit (string-append "v" version)))) |
| 18188 | (file-name (git-file-name name version)) |
| 18189 | (sha256 |
| 18190 | (base32 |
| 18191 | "1ikjz8147p14s814yabdq821y691klnr2yg54zgsymcc97kvwp2q")))) |
| 18192 | (outputs (list "out" |
| 18193 | "doc")) ;544 KiB of examples |
| 18194 | (build-system gnu-build-system) |
| 18195 | (arguments |
| 18196 | (list |
| 18197 | #:tests? #f ;no test suite |
| 18198 | #:make-flags #~(list (string-append "CC=" #$(cc-for-target)) |
| 18199 | (string-append "PREFIX=" #$output) |
| 18200 | "RUN_LDCONFIG=0" |
| 18201 | "LINK_SO=1") |
| 18202 | #:phases |
| 18203 | #~(modify-phases %standard-phases |
| 18204 | (delete 'configure) |
| 18205 | (replace 'build |
| 18206 | (lambda* (#:key make-flags #:allow-other-keys #:rest args) |
| 18207 | (with-directory-excursion "liblabjackusb" |
| 18208 | (apply (assoc-ref %standard-phases 'build) |
| 18209 | `(,@args #:make-flags ,make-flags))))) |
| 18210 | (replace 'install |
| 18211 | (lambda* (#:key make-flags #:allow-other-keys #:rest args) |
| 18212 | (with-directory-excursion "liblabjackusb" |
| 18213 | (apply (assoc-ref %standard-phases 'install) |
| 18214 | `(,@args #:make-flags ,make-flags))) |
| 18215 | ;; Install udev rules. |
| 18216 | (install-file "90-labjack.rules" |
| 18217 | (string-append #$output "/lib/udev/rules.d")) |
| 18218 | ;; Install examples. |
| 18219 | (let ((doc (string-append #$output:doc "/share/doc/" #$name))) |
| 18220 | (mkdir-p doc) |
| 18221 | (copy-recursively "examples" |
| 18222 | (string-append doc "/examples")))))))) |
| 18223 | (inputs (list libusb)) |
| 18224 | (home-page "https://github.com/labjack/exodriver") |
| 18225 | (synopsis "USB driver for LabJack data acquisition instruments") |
| 18226 | (description "This package provides @code{liblabjackusb}, a USB library for low-level |
| 18227 | communication with the U3, U6, UE9, Digit, T4 and T7 LabJack data acquisition |
| 18228 | instruments. A udev rule is also included to allow unprivileged users to |
| 18229 | communicate with the instruments via USB.") |
| 18230 | (license license:expat))) ;see README |
| 18231 | |
| 18232 | (define-public python-labjack |
| 18233 | (package |
| 18234 | (name "python-labjack") |
| 18235 | (version "2.0.4") |
| 18236 | (source (origin |
| 18237 | (method url-fetch) |
| 18238 | (uri (pypi-uri "LabJackPython" version)) |
| 18239 | (sha256 |
| 18240 | (base32 |
| 18241 | "013bjqdi05vlbdqprr6kqi8gs4qhqc7rnyp1klw8k6fng77rpdzz")))) |
| 18242 | (build-system python-build-system) |
| 18243 | (arguments |
| 18244 | (list |
| 18245 | #:tests? #f ;no test suite |
| 18246 | #:phases |
| 18247 | #~(modify-phases %standard-phases |
| 18248 | (add-after 'unpack 'patch-liblabjackusb.so |
| 18249 | (lambda* (#:key inputs #:allow-other-keys) |
| 18250 | (substitute* (find-files "." "\\.py$") |
| 18251 | (("ctypes.CDLL\\(\"liblabjackusb.so\"") |
| 18252 | (format #f "ctypes.CDLL(~s" |
| 18253 | (search-input-file inputs |
| 18254 | "lib/liblabjackusb.so"))))))))) |
| 18255 | ;; exodriver is provided as a regular input, as only its shared object is |
| 18256 | ;; used, not its Python API. |
| 18257 | (inputs (list python-exodriver)) |
| 18258 | (home-page "https://labjack.com/support/software/examples/ud/labjackpython") |
| 18259 | (synopsis "Python library for LabJack U3, U6, UE9 and U12") |
| 18260 | (description "This Python library allows communicating with the U3, U6, |
| 18261 | UE9 and U12 LabJack data acquisition (DAQ) modules.") |
| 18262 | (license license:expat))) ;see setup.py |
| 18263 | |
| 18264 | (define-public python-kivy-garden |
| 18265 | (package |
| 18266 | (name "python-kivy-garden") |
| 18267 | (version "0.1.4") |
| 18268 | (source |
| 18269 | (origin |
| 18270 | (method url-fetch) |
| 18271 | (uri (pypi-uri "kivy-garden" version)) |
| 18272 | (sha256 |
| 18273 | (base32 "0wkcpr2zc1q5jb0bi7v2dgc0vs5h1y7j42mviyh764j2i0kz8mn2")))) |
| 18274 | (build-system python-build-system) |
| 18275 | (arguments |
| 18276 | '(#:phases (modify-phases %standard-phases |
| 18277 | (add-after 'install 'remove-bat-file |
| 18278 | (lambda* (#:key outputs #:allow-other-keys) |
| 18279 | (let ((out (assoc-ref outputs "out"))) |
| 18280 | (delete-file |
| 18281 | (string-append out "/bin/garden.bat")))))))) |
| 18282 | (propagated-inputs |
| 18283 | (list python-requests)) |
| 18284 | (home-page "https://github.com/kivy-garden/garden") |
| 18285 | (synopsis "Garden tool for Kivy flowers") |
| 18286 | (description |
| 18287 | "This package provides the @command{garden} command to install packages |
| 18288 | for Kivy, the multitouch application platform.") |
| 18289 | (license license:expat))) |
| 18290 | |
| 18291 | (define-public python-kivy |
| 18292 | (package |
| 18293 | (name "python-kivy") |
| 18294 | (version "2.1.0") |
| 18295 | (source |
| 18296 | (origin |
| 18297 | (method url-fetch) |
| 18298 | (uri (pypi-uri "Kivy" version)) |
| 18299 | (file-name (string-append name "-" version ".tar.gz")) |
| 18300 | (sha256 |
| 18301 | (base32 |
| 18302 | "1cq4djfn7h8560mvz94dydsldg2jpp5w9rby7nafgmbh7fxg65is")))) |
| 18303 | (build-system python-build-system) |
| 18304 | (arguments |
| 18305 | `(#:tests? #f ; Tests require many optional packages |
| 18306 | #:phases |
| 18307 | (modify-phases %standard-phases |
| 18308 | (add-after 'patch-generated-file-shebangs 'set-sdl-paths |
| 18309 | (lambda* (#:key inputs #:allow-other-keys) |
| 18310 | (setenv "KIVY_SDL2_PATH" |
| 18311 | (search-input-directory inputs "/include/SDL2")))) |
| 18312 | (add-before 'build 'set-home |
| 18313 | (lambda _ |
| 18314 | ;; 'kivy/__init__.py' wants to create $HOME/.kivy. |
| 18315 | (setenv "HOME" (getcwd))))))) |
| 18316 | (native-inputs |
| 18317 | (list pkg-config python-cython)) |
| 18318 | (inputs |
| 18319 | (list gstreamer |
| 18320 | mesa |
| 18321 | (sdl-union (list sdl2 sdl2-image sdl2-mixer sdl2-ttf)) |
| 18322 | python-docutils |
| 18323 | python-kivy-garden |
| 18324 | python-pygments)) |
| 18325 | (home-page "https://kivy.org") |
| 18326 | (synopsis "Multitouch application framework") |
| 18327 | (description |
| 18328 | "Kivy is a software library for rapid development of hardware-accelerated |
| 18329 | multitouch applications.") |
| 18330 | (license license:expat))) |
| 18331 | |
| 18332 | (define-public python-kivymd |
| 18333 | (package |
| 18334 | (name "python-kivymd") |
| 18335 | (version "0.104.2") |
| 18336 | (source |
| 18337 | (origin |
| 18338 | (method url-fetch) |
| 18339 | (uri (pypi-uri "kivymd" version)) |
| 18340 | (sha256 |
| 18341 | (base32 "04lwy6j0agrdwa4a6dl6qs97nx9ysmscmm8psvdzjpyj8aa1zg4p")))) |
| 18342 | (build-system python-build-system) |
| 18343 | (arguments |
| 18344 | `(#:tests? #f ;tests require network |
| 18345 | #:phases |
| 18346 | (modify-phases %standard-phases |
| 18347 | (add-before 'sanity-check 'set-home |
| 18348 | (lambda _ |
| 18349 | ;; 'kivy/__init__.py' wants to create $HOME/.kivy. |
| 18350 | (setenv "HOME" (getcwd))))))) |
| 18351 | (native-inputs (list python-docutils)) |
| 18352 | (propagated-inputs |
| 18353 | (list python-kivy python-pillow python-pygments python-kivy-garden)) |
| 18354 | (home-page "https://github.com/kivymd/KivyMD") |
| 18355 | (synopsis "Material Design compliant widgets for use with Kivy") |
| 18356 | (description |
| 18357 | "This package provides Kivy widgets that approximate Google's Material |
| 18358 | Design spec without sacrificing ease of use or application performance.") |
| 18359 | (license license:expat))) |
| 18360 | |
| 18361 | (define-public python-asynckivy |
| 18362 | (package |
| 18363 | (name "python-asynckivy") |
| 18364 | (version "0.5.3") |
| 18365 | (source |
| 18366 | (origin |
| 18367 | (method url-fetch) |
| 18368 | (uri |
| 18369 | (pypi-uri "asynckivy" version)) |
| 18370 | (sha256 |
| 18371 | (base32 "0ivjvch8yn3k1ybfp7c1nm8mhc0ymg7d04mq54lly7yjvg0jvcni")))) |
| 18372 | (build-system python-build-system) |
| 18373 | (arguments |
| 18374 | `(#:phases |
| 18375 | (modify-phases %standard-phases |
| 18376 | (add-before 'check 'set-home |
| 18377 | (lambda _ |
| 18378 | ;; 'kivy/__init__.py' wants to create $HOME/.kivy. |
| 18379 | (setenv "HOME" (getcwd))))))) |
| 18380 | (propagated-inputs (list python-kivy python-asyncgui)) |
| 18381 | (home-page "https://github.com/gottadiveintopython/asynckivy") |
| 18382 | (synopsis "Async library for Kivy") |
| 18383 | (description |
| 18384 | "This package provides async versions of Kivy functions to avoid the |
| 18385 | callback-heavy mode of interaction typical in some Kivy applications.") |
| 18386 | (license license:expat))) |
| 18387 | |
| 18388 | (define-public python-asyncgui |
| 18389 | (package |
| 18390 | (name "python-asyncgui") |
| 18391 | (version "0.5.3") |
| 18392 | (source (origin |
| 18393 | (method url-fetch) |
| 18394 | (uri (pypi-uri "asyncgui" version)) |
| 18395 | (sha256 |
| 18396 | (base32 |
| 18397 | "0614130afg2qc1qq4p82piskvvx6lpjl4nlsakbjzdyd78xywnb7")))) |
| 18398 | (build-system python-build-system) |
| 18399 | (home-page "https://github.com/gottadiveintopython/asyncgui") |
| 18400 | (synopsis "Enables async/await without an event loop") |
| 18401 | (description "This package provides support for async/await applications |
| 18402 | without requiring an event loop, useful for creative responsive GUIs.") |
| 18403 | (license license:expat))) |
| 18404 | |
| 18405 | (define-public python-binaryornot |
| 18406 | (package |
| 18407 | (name "python-binaryornot") |
| 18408 | (version "0.4.4") |
| 18409 | (source (origin |
| 18410 | (method url-fetch) |
| 18411 | (uri (pypi-uri "binaryornot" version)) |
| 18412 | (sha256 |
| 18413 | (base32 |
| 18414 | "0qc006986rb6bcbmiymwgcl1mns2jphr1j7sr7nk41nlr7gh359m")))) |
| 18415 | (build-system python-build-system) |
| 18416 | (arguments |
| 18417 | `(#:phases |
| 18418 | (modify-phases %standard-phases |
| 18419 | (add-after 'unpack 'patch-tests |
| 18420 | (lambda _ |
| 18421 | ;; TypeError: binary() got an unexpected keyword argument |
| 18422 | ;; 'average_size'. |
| 18423 | (substitute* "tests/test_check.py" |
| 18424 | (("average_size=512") "")) |
| 18425 | #t))))) |
| 18426 | (propagated-inputs |
| 18427 | (list python-chardet python-hypothesis)) |
| 18428 | (home-page "https://github.com/audreyr/binaryornot") |
| 18429 | (synopsis "Package to check if a file is binary or text") |
| 18430 | (description "Ultra-lightweight pure Python package to check if a file is |
| 18431 | binary or text.") |
| 18432 | (license license:bsd-3))) |
| 18433 | |
| 18434 | (define-public binwalk |
| 18435 | (package |
| 18436 | (name "binwalk") |
| 18437 | (version "2.3.3") |
| 18438 | (source |
| 18439 | (origin |
| 18440 | (method git-fetch) |
| 18441 | (uri (git-reference |
| 18442 | (url "https://github.com/ReFirmLabs/binwalk") |
| 18443 | (commit (string-append "v" version)))) |
| 18444 | (file-name (git-file-name name version)) |
| 18445 | (sha256 |
| 18446 | (base32 "0phqyqv34vhh80dgipiggs4n3iq2vfjk9ywx2c5d8g61vzgbd2g8")) |
| 18447 | (modules '((guix build utils))) |
| 18448 | (snippet |
| 18449 | #~(begin |
| 18450 | (for-each delete-file |
| 18451 | (list "testing/tests/input-vectors/firmware.zip" |
| 18452 | "testing/tests/test_firmware_zip.py")))))) |
| 18453 | (build-system python-build-system) |
| 18454 | (arguments |
| 18455 | `(#:phases |
| 18456 | (modify-phases %standard-phases |
| 18457 | (add-before 'check 'set-home |
| 18458 | (lambda _ |
| 18459 | (setenv "HOME" "")))))) |
| 18460 | (native-inputs |
| 18461 | (list python-coverage python-nose)) |
| 18462 | (home-page "https://github.com/ReFirmLabs/binwalk") |
| 18463 | (synopsis "Firmware analysis tool") |
| 18464 | (description "Binwalk is a tool for analyzing, reverse engineering, and |
| 18465 | extracting firmware images") |
| 18466 | (license license:expat))) |
| 18467 | |
| 18468 | (define-public python-binwalk |
| 18469 | (deprecated-package "python-binwalk" binwalk)) |
| 18470 | |
| 18471 | (define-public python-bson |
| 18472 | (package |
| 18473 | (name "python-bson") |
| 18474 | (version "0.5.10") |
| 18475 | (source |
| 18476 | (origin |
| 18477 | (method git-fetch) ;for tests |
| 18478 | (uri (git-reference |
| 18479 | (url "https://github.com/py-bson/bson") |
| 18480 | (commit version))) |
| 18481 | (file-name (git-file-name name version)) |
| 18482 | (sha256 |
| 18483 | (base32 |
| 18484 | "1vpy4rsvm3hhawvbg9rbw4j36ck8qylkhm8cjy0q6imvinkd2als")))) |
| 18485 | (build-system python-build-system) |
| 18486 | (arguments |
| 18487 | '(#:phases |
| 18488 | (modify-phases %standard-phases |
| 18489 | (replace 'check |
| 18490 | (lambda* (#:key tests? #:allow-other-keys) |
| 18491 | (when tests? |
| 18492 | (invoke "./test.py"))))))) |
| 18493 | (propagated-inputs (list python-dateutil python-six)) |
| 18494 | (home-page "https://github.com/py-bson/bson") |
| 18495 | (synopsis "BSON (Binary JSON) codec for Python") |
| 18496 | (description "@code{bson} is a Python library implementing a BSON (Binary |
| 18497 | JSON) codec.") |
| 18498 | (license license:asl2.0))) |
| 18499 | |
| 18500 | (define-public python-nltk |
| 18501 | (package |
| 18502 | (name "python-nltk") |
| 18503 | (version "3.6.2") |
| 18504 | (source (origin |
| 18505 | (method url-fetch) |
| 18506 | (uri (pypi-uri "nltk" version ".zip")) |
| 18507 | (sha256 |
| 18508 | (base32 |
| 18509 | "1sq32lwgij9h8rsksymnxxr7bqfw3vgx5ijw4azbj6k2xnmmdmap")))) |
| 18510 | (build-system python-build-system) |
| 18511 | (arguments |
| 18512 | '(;; The tests require some extra resources to be downloaded. |
| 18513 | ;; TODO Try packaging these resources. |
| 18514 | #:tests? #f)) |
| 18515 | (propagated-inputs |
| 18516 | (list python-click python-joblib python-regex python-tqdm)) |
| 18517 | (native-inputs |
| 18518 | (list unzip)) |
| 18519 | (home-page "http://nltk.org/") |
| 18520 | (synopsis "Natural Language Toolkit") |
| 18521 | (description "It provides interfaces to over 50 corpora and lexical |
| 18522 | resources such as WordNet, along with a suite of text processing libraries |
| 18523 | for classification, tokenization, stemming, tagging, parsing, and semantic |
| 18524 | reasoning, wrappers for natural language processing libraries.") |
| 18525 | (license license:asl2.0))) |
| 18526 | |
| 18527 | ;; Versions >=3.5 breaks backward-compatibility, |
| 18528 | ;; so we keep version 3.4.x around for a while. |
| 18529 | (define-public python-nltk-3.4 |
| 18530 | (package |
| 18531 | (inherit python-nltk) |
| 18532 | (version "3.4.5") |
| 18533 | (source |
| 18534 | (origin |
| 18535 | (method url-fetch) |
| 18536 | (uri (pypi-uri "nltk" version ".zip")) |
| 18537 | (sha256 |
| 18538 | (base32 "153x2clrnigs74jdgnn3qmljdjj4gprmvpdvh49i18ls4m8mbm5y")))) |
| 18539 | (propagated-inputs (list python-six)))) |
| 18540 | |
| 18541 | (define-public python-pymongo |
| 18542 | (package |
| 18543 | (name "python-pymongo") |
| 18544 | (version "4.1.1") |
| 18545 | (source (origin |
| 18546 | (method url-fetch) |
| 18547 | (uri (pypi-uri "pymongo" version)) |
| 18548 | (sha256 |
| 18549 | (base32 |
| 18550 | "1m9hc2a4kgg10xy3g5x00z4a7rrk9s0rbf5qfypwnhq0kdfg5f6p")))) |
| 18551 | (build-system python-build-system) |
| 18552 | (propagated-inputs |
| 18553 | (list python-certifi)) |
| 18554 | (home-page "https://github.com/mongodb/mongo-python-driver") |
| 18555 | (synopsis "Python driver for MongoDB") |
| 18556 | (description "Python driver for MongoDB.") |
| 18557 | (license license:asl2.0))) |
| 18558 | |
| 18559 | (define-public python-consul |
| 18560 | (package |
| 18561 | (name "python-consul") |
| 18562 | (version "0.6.1") |
| 18563 | (source |
| 18564 | (origin |
| 18565 | (method url-fetch) |
| 18566 | (uri (pypi-uri "python-consul" version)) |
| 18567 | (sha256 |
| 18568 | (base32 |
| 18569 | "0rfyxcy4cr3x848vhx876ifalxd5ghq6l5x813m49h4vq2d4jiq8")))) |
| 18570 | (build-system python-build-system) |
| 18571 | (arguments |
| 18572 | '(#:tests? #f)) ; The tests are not distributed |
| 18573 | (propagated-inputs |
| 18574 | (list python-requests python-six)) |
| 18575 | (home-page "https://github.com/cablehead/python-consul") |
| 18576 | (synopsis "Python client for Consul") |
| 18577 | (description |
| 18578 | "Python client for @url{http://www.consul.io/,Consul}, a tool for service |
| 18579 | discovery, monitoring and configuration.") |
| 18580 | (license license:expat))) |
| 18581 | |
| 18582 | (define-public python-schematics |
| 18583 | (package |
| 18584 | (name "python-schematics") |
| 18585 | (version "1.1.1") |
| 18586 | (source |
| 18587 | (origin |
| 18588 | (method git-fetch) |
| 18589 | (uri (git-reference |
| 18590 | (url "https://github.com/schematics/schematics") |
| 18591 | (commit (string-append "v" version)))) |
| 18592 | (file-name (git-file-name name version)) |
| 18593 | (sha256 |
| 18594 | (base32 "0xdqskycznqc7mfp60bhw1zq8wx7yx1dvmbq3brnm1dx3xnqa0zd")))) |
| 18595 | (build-system python-build-system) |
| 18596 | (propagated-inputs |
| 18597 | (list python-six)) |
| 18598 | (arguments |
| 18599 | ;; The tests require a bunch of not very nice packages with fixed |
| 18600 | ;; version requirements (e.g. python-coveralls). |
| 18601 | `(#:tests? #f)) |
| 18602 | (home-page "https://github.com/schematics/schematics") |
| 18603 | (synopsis "Python Data Structures for Humans") |
| 18604 | (description "Python Data Structures for Humans.") |
| 18605 | (license license:bsd-3))) |
| 18606 | |
| 18607 | (define-public python-odfpy |
| 18608 | (package |
| 18609 | (name "python-odfpy") |
| 18610 | (version "1.4.1") |
| 18611 | (source (origin |
| 18612 | (method url-fetch) |
| 18613 | (uri (pypi-uri "odfpy" version)) |
| 18614 | (sha256 |
| 18615 | (base32 |
| 18616 | "1v1qqk9p12qla85yscq2g413l3qasn6yr4ncyc934465b5p6lxnv")))) |
| 18617 | (arguments |
| 18618 | `(#:phases |
| 18619 | (modify-phases %standard-phases |
| 18620 | (replace 'check |
| 18621 | (lambda _ |
| 18622 | (invoke "pytest" "-vv")))))) |
| 18623 | (build-system python-build-system) |
| 18624 | (native-inputs |
| 18625 | (list python-pytest)) |
| 18626 | (propagated-inputs |
| 18627 | (list python-defusedxml)) |
| 18628 | (home-page "https://github.com/eea/odfpy") |
| 18629 | (synopsis "Python API and tools to manipulate OpenDocument files") |
| 18630 | (description "Collection of libraries and utility programs written in |
| 18631 | Python to manipulate OpenDocument 1.2 files.") |
| 18632 | (license |
| 18633 | ;; The software is mainly dual GPL2+ and ASL2.0, but includes a |
| 18634 | ;; number of files with other licenses. |
| 18635 | (list license:gpl2+ license:asl2.0 license:lgpl2.1+ license:cc-by-sa3.0)))) |
| 18636 | |
| 18637 | (define-public python-natsort |
| 18638 | (package |
| 18639 | (name "python-natsort") |
| 18640 | (version "7.1.1") |
| 18641 | (source (origin |
| 18642 | (method url-fetch) |
| 18643 | (uri (pypi-uri "natsort" version)) |
| 18644 | (sha256 |
| 18645 | (base32 |
| 18646 | "00y49bfsi7rrsd1s42gc2w95a6arl9ipdsx2493hr0v54fj07ih0")))) |
| 18647 | (build-system python-build-system) |
| 18648 | (arguments |
| 18649 | `(#:phases |
| 18650 | (modify-phases %standard-phases |
| 18651 | (add-after 'unpack 'remove-test-hypothesis-deadlines |
| 18652 | (lambda _ |
| 18653 | (substitute* "tests/test_utils.py" |
| 18654 | (("from hypothesis import given") |
| 18655 | "from hypothesis import given, settings") |
| 18656 | (("( +)@given" all spaces) |
| 18657 | (string-append spaces "@settings(deadline=None)\n" all))))) |
| 18658 | (replace 'check |
| 18659 | (lambda* (#:key tests? #:allow-other-keys) |
| 18660 | (when tests? |
| 18661 | (invoke "pytest" "-v"))))))) |
| 18662 | (native-inputs |
| 18663 | (list python-hypothesis python-pytest-cov python-pytest-mock |
| 18664 | python-pytest)) |
| 18665 | (propagated-inputs ; TODO: Add python-fastnumbers. |
| 18666 | (list python-pyicu)) |
| 18667 | (home-page "https://github.com/SethMMorton/natsort") |
| 18668 | (synopsis "Natural sorting for python and shell") |
| 18669 | (description |
| 18670 | "Natsort lets you apply natural sorting on lists instead of |
| 18671 | lexicographical. If you use the built-in @code{sorted} method in python on a |
| 18672 | list such as @code{[@code{a20}, @code{a9}, @code{a1}, @code{a4}, @code{a10}]}, |
| 18673 | it would be returned as @code{[@code{a1}, @code{a10}, @code{a20}, @code{a4}, |
| 18674 | @code{a9}]}. Natsort provides a function @code{natsorted} that identifies |
| 18675 | numbers and sorts them separately from strings. It can also sort version |
| 18676 | numbers, real numbers, mixed types and more, and comes with a shell command |
| 18677 | @command{natsort} that exposes this functionality in the command line.") |
| 18678 | (license license:expat))) |
| 18679 | |
| 18680 | (define-public glances |
| 18681 | (package |
| 18682 | (name "glances") |
| 18683 | (version "3.1.7") |
| 18684 | (source |
| 18685 | (origin |
| 18686 | (method url-fetch) |
| 18687 | (uri (pypi-uri "Glances" version)) |
| 18688 | (sha256 |
| 18689 | (base32 "020vb38qrb0m3sdr7xjr43cmcfxpnyg4hmb97wgxsa9zvwsjwa5x")) |
| 18690 | (modules '((guix build utils))) |
| 18691 | (snippet |
| 18692 | '(begin |
| 18693 | ;; Glances phones PyPI for weekly update checks by default. |
| 18694 | ;; Disable these. The user can re-enable them if desired. |
| 18695 | (substitute* "glances/outdated.py" |
| 18696 | (("^(.*)self\\.load_config\\(config\\)\n" line indentation) |
| 18697 | (string-append indentation |
| 18698 | "self.args.disable_check_update = True\n" |
| 18699 | line))) |
| 18700 | #t)))) |
| 18701 | (build-system python-build-system) |
| 18702 | (propagated-inputs |
| 18703 | (list python-future python-psutil)) |
| 18704 | (home-page "https://github.com/nicolargo/glances") |
| 18705 | (synopsis "Cross-platform curses-based monitoring tool") |
| 18706 | (description |
| 18707 | "Glances is a curses-based monitoring tool for a wide variety of platforms. |
| 18708 | Glances uses the PsUtil library to get information from your system. It |
| 18709 | monitors CPU, load, memory, network bandwidth, disk I/O, disk use, and more.") |
| 18710 | (license license:lgpl3+))) |
| 18711 | |
| 18712 | (define-public python-graphql-core |
| 18713 | (package |
| 18714 | (name "python-graphql-core") |
| 18715 | (version "3.1.2") |
| 18716 | (source |
| 18717 | (origin |
| 18718 | (method url-fetch) |
| 18719 | (uri (pypi-uri "graphql-core" version)) |
| 18720 | (sha256 |
| 18721 | (base32 |
| 18722 | "0fjv5w2wvgdr8gb27v241bavliipyir9fdz48rsgc3xapm644mn0")))) |
| 18723 | (build-system python-build-system) |
| 18724 | (arguments |
| 18725 | `(#:tests? #f ; Tests require the unpackaged pytest-benchmark. |
| 18726 | #:phases |
| 18727 | (modify-phases %standard-phases |
| 18728 | (add-after 'unpack 'patch-hardcoded-version |
| 18729 | (lambda _ (substitute* |
| 18730 | "setup.py" |
| 18731 | (("'gevent==1.1rc1'") "'gevent'")) |
| 18732 | #t))))) |
| 18733 | (native-inputs |
| 18734 | (list python-gevent python-mock python-pytest-mock)) |
| 18735 | (propagated-inputs |
| 18736 | (list python-promise python-six)) |
| 18737 | (home-page "https://github.com/graphql-python/graphql-core") |
| 18738 | (synopsis "GraphQL implementation for Python") |
| 18739 | (description |
| 18740 | "GraphQL implementation for Python. GraphQL is a data query language and |
| 18741 | runtime designed and used to request and deliver data to mobile and web apps. |
| 18742 | This library is a port of @url{https://github.com/graphql/graphql-js,graphql-js} |
| 18743 | to Python.") |
| 18744 | (license license:expat))) |
| 18745 | |
| 18746 | (define-public python-graphql-relay |
| 18747 | (package |
| 18748 | (name "python-graphql-relay") |
| 18749 | (version "3.1.0") |
| 18750 | (source |
| 18751 | (origin |
| 18752 | (method url-fetch) |
| 18753 | (uri (pypi-uri "graphql-relay" version)) |
| 18754 | (sha256 |
| 18755 | (base32 |
| 18756 | "1d70vwam9gjhx7fqzsa03x7lc6ivcqki5r9pk8m7rslmb7pagmbh")))) |
| 18757 | (build-system python-build-system) |
| 18758 | (arguments |
| 18759 | '(#:phases |
| 18760 | (modify-phases %standard-phases |
| 18761 | (replace 'check |
| 18762 | (lambda* (#:key tests? #:allow-other-keys) |
| 18763 | (when tests? |
| 18764 | (invoke "pytest" "tests"))))))) |
| 18765 | (native-inputs |
| 18766 | (list |
| 18767 | python-pytest |
| 18768 | python-pytest-asyncio)) |
| 18769 | (propagated-inputs |
| 18770 | (list python-graphql-core)) |
| 18771 | (home-page "https://github.com/graphql-python/graphql-relay-py") |
| 18772 | (synopsis "Relay implementation for Python") |
| 18773 | (description |
| 18774 | "This is a library to allow the easy creation of Relay-compliant servers |
| 18775 | using the GraphQL Python reference implementation of a GraphQL server. It |
| 18776 | should be noted that the code is a exact port of the original |
| 18777 | @url{https://github.com/graphql/graphql-relay-js,graphql-relay js implementation} |
| 18778 | from Facebook.") |
| 18779 | (license license:expat))) |
| 18780 | |
| 18781 | (define-public python-graphene |
| 18782 | (package |
| 18783 | (name "python-graphene") |
| 18784 | (version "3.0") |
| 18785 | (source |
| 18786 | (origin |
| 18787 | (method url-fetch) |
| 18788 | (uri (pypi-uri "graphene" version)) |
| 18789 | (sha256 |
| 18790 | (base32 |
| 18791 | "08m1n2ydk48c18cvl8474v3pwwacjl1vgq61m9qs00122mp0cj5g")))) |
| 18792 | (build-system python-build-system) |
| 18793 | (propagated-inputs |
| 18794 | (list python-graphql-core python-graphql-relay python-aniso8601 |
| 18795 | python-promise python-six)) |
| 18796 | (arguments |
| 18797 | `(#:tests? #f)) ; no tests/ in the PyPI tarball |
| 18798 | (home-page "https://graphene-python.org/") |
| 18799 | (synopsis "GraphQL Framework for Python") |
| 18800 | (description |
| 18801 | "Graphene is a Python library for building GraphQL schemas/types. |
| 18802 | A GraphQL schema describes your data model, and provides a GraphQL server |
| 18803 | with an associated set of resolve methods that know how to fetch data.") |
| 18804 | (license license:expat))) |
| 18805 | |
| 18806 | (define-public python-random2 |
| 18807 | (package |
| 18808 | (name "python-random2") |
| 18809 | (version "1.0.1") |
| 18810 | (source (origin |
| 18811 | (method url-fetch) |
| 18812 | (uri (pypi-uri "random2" version ".zip")) |
| 18813 | (sha256 |
| 18814 | (base32 |
| 18815 | "01y0s4747plsx8fdnxy0nz83dp69naddz58m81r9h0s1qfm31b9l")) |
| 18816 | (patches |
| 18817 | (search-patches "python-random2-getrandbits-test.patch")))) |
| 18818 | (build-system python-build-system) |
| 18819 | (native-inputs (list unzip)) |
| 18820 | (home-page "http://pypi.python.org/pypi/random2") |
| 18821 | (synopsis "Python 3 version of the Python 2 @code{random} module") |
| 18822 | (description |
| 18823 | "This package provides a Python 3 ported version of Python 2.7’s |
| 18824 | @code{random} module. It has also been back-ported to work in Python 2.6. |
| 18825 | |
| 18826 | In Python 3, the implementation of @code{randrange()} was changed, so that |
| 18827 | even with the same seed you get different sequences in Python 2 and 3. |
| 18828 | |
| 18829 | This package closes that gap, allowing stable random number generation |
| 18830 | between the different Python versions.") |
| 18831 | (license license:psfl))) |
| 18832 | |
| 18833 | (define-public python-snowballstemmer |
| 18834 | (package |
| 18835 | (name "python-snowballstemmer") |
| 18836 | (version "2.0.0") |
| 18837 | (source (origin |
| 18838 | (method url-fetch) |
| 18839 | (uri (pypi-uri "snowballstemmer" version)) |
| 18840 | (sha256 |
| 18841 | (base32 |
| 18842 | "0ligk61idlz8kkgd5hpip5whm172riwglb6xydii7h62yhysqfyz")))) |
| 18843 | (build-system python-build-system) |
| 18844 | (arguments |
| 18845 | `(;; No tests exist |
| 18846 | #:tests? #f)) |
| 18847 | (home-page "https://github.com/shibukawa/snowball_py") |
| 18848 | (synopsis "Snowball stemming library collection for Python") |
| 18849 | (description "This package provides 16 word stemmer algorithms generated |
| 18850 | from Snowball algorithms. It includes the 15 original ones plus the Poerter |
| 18851 | English stemmer.") |
| 18852 | (license license:bsd-3))) |
| 18853 | |
| 18854 | (define-public python-setproctitle |
| 18855 | (package |
| 18856 | (name "python-setproctitle") |
| 18857 | (version "1.3.2") |
| 18858 | (source |
| 18859 | (origin |
| 18860 | (method url-fetch) |
| 18861 | (uri (pypi-uri "setproctitle" version)) |
| 18862 | (sha256 |
| 18863 | (base32 |
| 18864 | "1zbp6kyzfbrmbh9j3idai0mnpa28zn5db3k5l07jc3c3gj89gyxr")))) |
| 18865 | (build-system python-build-system) |
| 18866 | (arguments |
| 18867 | '(#:phases |
| 18868 | (modify-phases %standard-phases |
| 18869 | (replace 'check |
| 18870 | (lambda* (#:key tests? #:allow-other-keys) |
| 18871 | (setenv "PYTHON" (or (which "python3") (which "python"))) |
| 18872 | (setenv "PYCONFIG" (if (which "python3-config") |
| 18873 | "python3-config --embed" |
| 18874 | "python-config")) |
| 18875 | (substitute* "tests/conftest.py" |
| 18876 | (("cc") "gcc")) |
| 18877 | (when tests? |
| 18878 | (invoke "pytest" "tests/"))))))) |
| 18879 | (native-inputs |
| 18880 | (list procps python-pytest)) ; required for tests |
| 18881 | (home-page "https://github.com/dvarrazzo/py-setproctitle") |
| 18882 | (synopsis |
| 18883 | "Setproctitle implementation for Python to customize the process title") |
| 18884 | (description "The library allows a process to change its title (as displayed |
| 18885 | by system tools such as @code{ps} and @code{top}). |
| 18886 | |
| 18887 | Changing the title is mostly useful in multi-process systems, for example when a |
| 18888 | master process is forked: changing the children's title allows identifying the |
| 18889 | task each process is busy with. The technique is used by PostgreSQL and the |
| 18890 | OpenSSH Server for example.") |
| 18891 | (license license:bsd-3))) |
| 18892 | |
| 18893 | (define-public python-validictory |
| 18894 | (package |
| 18895 | (name "python-validictory") |
| 18896 | (version "1.0.1") |
| 18897 | (source |
| 18898 | (origin |
| 18899 | (method url-fetch) |
| 18900 | (uri (pypi-uri "validictory" version)) |
| 18901 | (sha256 |
| 18902 | (base32 |
| 18903 | "1zf1g9sw47xzp5f80bd94pb42j9yqv82lcrgcvdwr6nkaphfi37q")))) |
| 18904 | (build-system python-build-system) |
| 18905 | (arguments |
| 18906 | '(#:phases |
| 18907 | (modify-phases %standard-phases |
| 18908 | (add-after 'unpack 'bootstrap |
| 18909 | ;; Move the tests out of the package directory to avoid |
| 18910 | ;; packaging them. |
| 18911 | (lambda* _ |
| 18912 | (rename-file "validictory/tests" "tests") |
| 18913 | (delete-file "tests/__init__.py"))) |
| 18914 | (replace 'check |
| 18915 | (lambda _ |
| 18916 | (invoke "py.test" "-vv" )))))) |
| 18917 | (native-inputs |
| 18918 | (list python-pytest)) |
| 18919 | (home-page |
| 18920 | "https://github.com/jamesturk/validictory") |
| 18921 | (synopsis "General purpose Python data validator") |
| 18922 | (description "It allows validation of arbitrary Python data structures. |
| 18923 | |
| 18924 | The schema format is based on the JSON Schema |
| 18925 | proposal (http://json-schema.org), so combined with json the library is also |
| 18926 | useful as a validator for JSON data.") |
| 18927 | (license license:expat))) |
| 18928 | |
| 18929 | (define-public python-pyelftools |
| 18930 | (package |
| 18931 | (name "python-pyelftools") |
| 18932 | (version "0.28") |
| 18933 | (home-page "https://github.com/eliben/pyelftools") |
| 18934 | (source |
| 18935 | (origin |
| 18936 | (method git-fetch) |
| 18937 | (uri (git-reference (url home-page) |
| 18938 | (commit (string-append "v" version)))) |
| 18939 | (file-name (git-file-name name version)) |
| 18940 | (sha256 |
| 18941 | (base32 "1z4fx39c9rds0bd4d2fjjq7n05b1nfxl36pmy523x8knm38l4gpr")) |
| 18942 | (snippet |
| 18943 | ;; Delete bundled readelf executable. |
| 18944 | '(delete-file "test/external_tools/readelf")))) |
| 18945 | (build-system python-build-system) |
| 18946 | (arguments |
| 18947 | '(#:phases (modify-phases %standard-phases |
| 18948 | (replace 'check |
| 18949 | (lambda* (#:key tests? #:allow-other-keys) |
| 18950 | (when tests? |
| 18951 | ;; Taken from tox.ini. |
| 18952 | (invoke "python" "test/run_all_unittests.py") |
| 18953 | (invoke "python" "test/run_examples_test.py") |
| 18954 | (invoke "python" "test/run_readelf_tests.py"))))))) |
| 18955 | (synopsis |
| 18956 | "Analyze binary and library file information") |
| 18957 | (description "This Python library provides interfaces for parsing and |
| 18958 | analyzing two binary and library file formats ; the Executable and Linking |
| 18959 | Format (ELF), and debugging information in the Debugging With Attributed |
| 18960 | Record Format (DWARF).") |
| 18961 | (license license:public-domain))) |
| 18962 | |
| 18963 | (define-public python-pefile |
| 18964 | (package |
| 18965 | (name "python-pefile") |
| 18966 | (version "2022.5.30") |
| 18967 | (source (origin |
| 18968 | (method git-fetch) |
| 18969 | (uri (git-reference |
| 18970 | (url "https://github.com/erocarrera/pefile") |
| 18971 | (commit (string-append "v" version)))) |
| 18972 | (file-name (git-file-name name version)) |
| 18973 | (sha256 |
| 18974 | (base32 |
| 18975 | "1qj90a0s2gd5hn2zggypqc1077inid5dcl1fp5973b04kf2b9z8a")))) |
| 18976 | (build-system python-build-system) |
| 18977 | (propagated-inputs (list python-future)) |
| 18978 | (home-page "https://github.com/erocarrera/pefile") |
| 18979 | (synopsis "Portable Executable (PE) file parser") |
| 18980 | (description "This python library provides interfaces for parsing and |
| 18981 | working with Portable Executable (PE) files. It makes to most information |
| 18982 | from the header, as well as section details and data available.") |
| 18983 | (license license:expat))) |
| 18984 | |
| 18985 | (define-public python-pyev |
| 18986 | (package |
| 18987 | (name "python-pyev") |
| 18988 | (version "0.9.0") |
| 18989 | (source |
| 18990 | (origin |
| 18991 | (method url-fetch) |
| 18992 | (uri (pypi-uri "pyev" version)) |
| 18993 | (sha256 |
| 18994 | (base32 |
| 18995 | "0rf603lc0s6zpa1nb25vhd8g4y337wg2wyz56i0agsdh7jchl0sx")))) |
| 18996 | (build-system python-build-system) |
| 18997 | (arguments |
| 18998 | `(#:tests? #f ; no test suite |
| 18999 | #:phases |
| 19000 | (modify-phases %standard-phases |
| 19001 | (add-after 'unpack 'patch |
| 19002 | (lambda* (#:key inputs #:allow-other-keys) |
| 19003 | (let ((libev (search-input-file inputs "/lib/libev.so.4"))) |
| 19004 | (substitute* "setup.py" |
| 19005 | (("libev_dll_name = find_library\\(\\\"ev\\\"\\)") |
| 19006 | (string-append "libev_dll_name = \"" libev "\""))))))))) |
| 19007 | (inputs |
| 19008 | (list libev)) |
| 19009 | (home-page "https://github.com/gabrielfalcao/pyev") |
| 19010 | (synopsis "Python libev interface") |
| 19011 | (description "Pyev provides a Python interface to libev.") |
| 19012 | (license license:gpl3))) |
| 19013 | |
| 19014 | (define-public python-imagesize |
| 19015 | (package |
| 19016 | (name "python-imagesize") |
| 19017 | (version "1.2.0") |
| 19018 | (source |
| 19019 | (origin |
| 19020 | (method url-fetch) |
| 19021 | (uri (pypi-uri "imagesize" version)) |
| 19022 | (sha256 |
| 19023 | (base32 |
| 19024 | "1cd24x0vqbd6c8ym1n21qc0aj54mfb7rzdqglmwk9xxixajbbxmi")))) |
| 19025 | (build-system python-build-system) |
| 19026 | (home-page "https://github.com/shibukawa/imagesize_py") |
| 19027 | (synopsis "Gets image size of files in various formats in Python") |
| 19028 | (description |
| 19029 | "This package allows determination of image size from |
| 19030 | PNG, JPEG, JPEG2000 and GIF files in pure Python.") |
| 19031 | (license license:expat))) |
| 19032 | |
| 19033 | (define-public python-termstyle |
| 19034 | (package |
| 19035 | (name "python-termstyle") |
| 19036 | (version "0.1.11") |
| 19037 | (source |
| 19038 | (origin |
| 19039 | (method url-fetch) |
| 19040 | (uri (pypi-uri "termstyle" version)) |
| 19041 | (sha256 |
| 19042 | (base32 |
| 19043 | "17wzkkcqy5zc0g68xlad3kcv66iw14d2pwqc0h9420gak0vbhx7g")))) |
| 19044 | (build-system python-build-system) |
| 19045 | (arguments |
| 19046 | '(#:phases |
| 19047 | (modify-phases %standard-phases |
| 19048 | (replace 'check |
| 19049 | (lambda _ |
| 19050 | (invoke "python" "test3.py")))))) |
| 19051 | (home-page "https://github.com/gfxmonk/termstyle") |
| 19052 | (synopsis "Console text coloring for Python") |
| 19053 | (description "This package provides console text coloring for Python.") |
| 19054 | (license license:bsd-3))) |
| 19055 | |
| 19056 | (define-public python-argcomplete |
| 19057 | (package |
| 19058 | (name "python-argcomplete") |
| 19059 | (version "1.11.1") |
| 19060 | (source |
| 19061 | (origin |
| 19062 | (method url-fetch) |
| 19063 | (uri (pypi-uri "argcomplete" version)) |
| 19064 | (sha256 |
| 19065 | (base32 |
| 19066 | "0h1przxffrhqvi46k40pzjsvdrq4zc3sl1pc96kkigqppq0vdrss")) |
| 19067 | (patches (search-patches "python-argcomplete-1.11.1-fish31.patch")))) |
| 19068 | (build-system python-build-system) |
| 19069 | (native-inputs |
| 19070 | (list python-coverage |
| 19071 | python-flake8 |
| 19072 | python-pexpect |
| 19073 | python-wheel |
| 19074 | tcsh |
| 19075 | fish |
| 19076 | bash)) ;full Bash for 'test_file_completion' |
| 19077 | (home-page "https://github.com/kislyuk/argcomplete") |
| 19078 | (synopsis "Shell tab completion for Python argparse") |
| 19079 | (description "argcomplete provides extensible command line tab completion |
| 19080 | of arguments and options for Python scripts using @code{argparse}. It's |
| 19081 | particularly useful for programs with many options or sub-parsers that can |
| 19082 | dynamically suggest completions ; for example, when browsing resources over the |
| 19083 | network.") |
| 19084 | (license license:asl2.0))) |
| 19085 | |
| 19086 | (define-public python-csscompressor |
| 19087 | (package |
| 19088 | (name "python-csscompressor") |
| 19089 | (version "0.9.5") |
| 19090 | (source |
| 19091 | (origin |
| 19092 | (method url-fetch) |
| 19093 | (uri (pypi-uri "csscompressor" version)) |
| 19094 | (sha256 |
| 19095 | (base32 |
| 19096 | "018ssffvlpnc1salmnpyl52c11glzzwj4k9f757hl4pkpjnjp8mg")))) |
| 19097 | (build-system python-build-system) |
| 19098 | (arguments |
| 19099 | '(#:phases |
| 19100 | (modify-phases %standard-phases |
| 19101 | (replace 'check |
| 19102 | (lambda _ |
| 19103 | (invoke "py.test")))))) |
| 19104 | (native-inputs |
| 19105 | (list python-pytest)) |
| 19106 | (home-page "https://github.com/sprymix/csscompressor") |
| 19107 | (synopsis "Python port of YUI CSS Compressor") |
| 19108 | (description |
| 19109 | "This package provides a python port of YUI CSS Compressor.") |
| 19110 | (license license:bsd-3))) |
| 19111 | |
| 19112 | (define-public python-rcssmin |
| 19113 | (package |
| 19114 | (name "python-rcssmin") |
| 19115 | (version "1.0.6") |
| 19116 | (source |
| 19117 | (origin |
| 19118 | (method url-fetch) |
| 19119 | (uri (pypi-uri "rcssmin" version)) |
| 19120 | (sha256 |
| 19121 | (base32 |
| 19122 | "0w42l4dhxghcz7pj3q7hkxp015mvb8z2cq9sfxbl31npsfavd1ya")))) |
| 19123 | (build-system python-build-system) |
| 19124 | (arguments |
| 19125 | '(#:phases |
| 19126 | (modify-phases %standard-phases |
| 19127 | (replace 'check |
| 19128 | (lambda _ |
| 19129 | (invoke "python" "run_tests.py" "tests")))))) |
| 19130 | (home-page "http://opensource.perlig.de/rcssmin/") |
| 19131 | (synopsis "CSS Minifier") |
| 19132 | (description "The minifier is based on the semantics of the YUI compressor, |
| 19133 | which itself is based on the rule list by Isaac Schlueter.") |
| 19134 | (license license:asl2.0))) |
| 19135 | |
| 19136 | (define-public python-rjsmin |
| 19137 | (package |
| 19138 | (name "python-rjsmin") |
| 19139 | (version "1.1.0") |
| 19140 | (source |
| 19141 | (origin |
| 19142 | (method url-fetch) |
| 19143 | (uri (pypi-uri "rjsmin" version)) |
| 19144 | (sha256 |
| 19145 | (base32 |
| 19146 | "0cmc72rlkvzz8fl89bc83czkx0pcvhzj7yn7m29r8pgnf5fcfpdi")) |
| 19147 | (modules '((guix build utils))) |
| 19148 | (snippet |
| 19149 | '(begin |
| 19150 | (for-each delete-file (find-files "bench" "\\.js$")) |
| 19151 | #t)))) |
| 19152 | (build-system python-build-system) |
| 19153 | (arguments |
| 19154 | '(#:tests? #f ; Not all test files included. |
| 19155 | #:phases |
| 19156 | (modify-phases %standard-phases |
| 19157 | (replace 'check |
| 19158 | (lambda* (#:key inputs outputs tests? #:allow-other-keys) |
| 19159 | (add-installed-pythonpath inputs outputs) |
| 19160 | (if tests? |
| 19161 | (invoke "py.test" "-vv" "tests") |
| 19162 | #t)))))) |
| 19163 | (native-inputs |
| 19164 | (list python-pytest)) |
| 19165 | (home-page "http://opensource.perlig.de/rjsmin/") |
| 19166 | (synopsis "Javascript Minifier") |
| 19167 | (description "@code{rJSmin} is a javascript minifier written in Python. The |
| 19168 | minifier is based on the semantics of jsmin.c by Douglas Crockford. The module |
| 19169 | is a re-implementation aiming for speed, so it can be used at runtime (rather |
| 19170 | than during a preprocessing step).") |
| 19171 | (license license:asl2.0))) |
| 19172 | |
| 19173 | (define-public python-xopen |
| 19174 | (package |
| 19175 | (name "python-xopen") |
| 19176 | (version "0.8.2") |
| 19177 | (source |
| 19178 | (origin |
| 19179 | (method url-fetch) |
| 19180 | (uri (pypi-uri "xopen" version)) |
| 19181 | (sha256 |
| 19182 | (base32 |
| 19183 | "1xrlcnd6fri3w97zzzp6vyk4l21yq1lc8r4wksi06hgpkbh4jdq0")))) |
| 19184 | (build-system python-build-system) |
| 19185 | (propagated-inputs |
| 19186 | (list python-setuptools-scm)) |
| 19187 | (home-page "https://github.com/marcelm/xopen/") |
| 19188 | (synopsis "Open compressed files transparently") |
| 19189 | (description "This module provides an @code{xopen} function that works like |
| 19190 | Python's built-in @code{open} function, but can also deal with compressed files. |
| 19191 | Supported compression formats are gzip, bzip2 and, xz, and are automatically |
| 19192 | recognized by their file extensions. The focus is on being as efficient as |
| 19193 | possible on all supported Python versions.") |
| 19194 | (license license:expat))) |
| 19195 | |
| 19196 | (define-public python-cheetah |
| 19197 | (package |
| 19198 | (name "python-cheetah") |
| 19199 | (version "3.2.4") |
| 19200 | (source |
| 19201 | (origin |
| 19202 | (method url-fetch) |
| 19203 | (uri (pypi-uri "Cheetah3" version)) |
| 19204 | (sha256 |
| 19205 | (base32 |
| 19206 | "0ar5dqjnqaw0c17mymd6xgd81jn9br9fblawr0x438v1571bkaya")))) |
| 19207 | (build-system python-build-system) |
| 19208 | (arguments |
| 19209 | `(#:phases (modify-phases %standard-phases |
| 19210 | (add-after 'unpack 'use-absolute-python |
| 19211 | (lambda _ |
| 19212 | (substitute* "Cheetah/CheetahWrapper.py" |
| 19213 | (("#!/usr/bin/env python") |
| 19214 | (string-append "#!" (which "python")))))) |
| 19215 | (add-after 'unpack 'fix-tests |
| 19216 | (lambda _ |
| 19217 | (substitute* "Cheetah/Tests/ImportHooks.py" |
| 19218 | (("os.path.dirname\\(__file__\\)") |
| 19219 | (string-append "'" (getcwd) "/Cheetah/Tests'"))))) |
| 19220 | (replace 'check |
| 19221 | (lambda _ |
| 19222 | (setenv "TMPDIR" "/tmp") |
| 19223 | (substitute* "Cheetah/Tests/Test.py" |
| 19224 | (("unittest.TextTestRunner\\(\\)") |
| 19225 | "unittest.TextTestRunner(verbosity=2)")) |
| 19226 | |
| 19227 | (invoke "python" "Cheetah/Tests/Test.py")))))) |
| 19228 | (propagated-inputs |
| 19229 | (list python-markdown)) ;optional |
| 19230 | (home-page "https://cheetahtemplate.org/") |
| 19231 | (synopsis "Template engine") |
| 19232 | (description "Cheetah is a text-based template engine and Python code |
| 19233 | generator. |
| 19234 | |
| 19235 | Cheetah can be used as a standalone templating utility or referenced as |
| 19236 | a library from other Python applications. It has many potential uses, |
| 19237 | but web developers looking for a viable alternative to ASP, JSP, PHP and |
| 19238 | PSP are expected to be its principle user group. |
| 19239 | |
| 19240 | Features: |
| 19241 | @enumerate |
| 19242 | @item Generates HTML, SGML, XML, SQL, Postscript, form email, LaTeX, or any other |
| 19243 | text-based format. |
| 19244 | @item Cleanly separates content, graphic design, and program code. |
| 19245 | @item Blends the power and flexibility of Python with a simple template language |
| 19246 | that non-programmers can understand. |
| 19247 | @item Gives template writers full access to any Python data structure, module, |
| 19248 | function, object, or method in their templates. |
| 19249 | @item Makes code reuse easy by providing an object-orientated interface to |
| 19250 | templates that is accessible from Python code or other Cheetah templates. |
| 19251 | One template can subclass another and selectively reimplement sections of it. |
| 19252 | @item Provides a simple, yet powerful, caching mechanism that can dramatically |
| 19253 | improve the performance of a dynamic website. |
| 19254 | @item Compiles templates into optimized, yet readable, Python code. |
| 19255 | @end enumerate") |
| 19256 | (license (license:x11-style "file://LICENSE")))) |
| 19257 | |
| 19258 | (define-public python-dulwich |
| 19259 | (package |
| 19260 | (name "python-dulwich") |
| 19261 | (version "0.20.30") |
| 19262 | (source |
| 19263 | (origin |
| 19264 | (method url-fetch) |
| 19265 | (uri (list (string-append "https://www.dulwich.io/releases/" |
| 19266 | "dulwich-" version ".tar.gz") |
| 19267 | (pypi-uri "dulwich" version))) |
| 19268 | (sha256 |
| 19269 | (base32 |
| 19270 | "0hafaff30bmkj30b8pwpwsy3fz5h6c1pn98ihqcvl5zndflr1h22")))) |
| 19271 | (build-system python-build-system) |
| 19272 | (arguments |
| 19273 | '(#:phases |
| 19274 | (modify-phases %standard-phases |
| 19275 | (add-before 'check 'fix-tests |
| 19276 | (lambda* (#:key inputs #:allow-other-keys) |
| 19277 | (substitute* '("dulwich/tests/test_repository.py" |
| 19278 | "dulwich/tests/test_porcelain.py" |
| 19279 | "dulwich/tests/test_hooks.py") |
| 19280 | (("/bin/sh") (search-input-file inputs "/bin/sh"))) |
| 19281 | (setenv "TEST_RUNNER" "unittest") |
| 19282 | (setenv "PYTHONHASHSEED" "random")))))) |
| 19283 | (propagated-inputs |
| 19284 | (list python-fastimport python-urllib3)) |
| 19285 | (native-inputs |
| 19286 | (list python-mock python-geventhttpclient python-gpg |
| 19287 | git gnupg)) |
| 19288 | (home-page "https://www.dulwich.io/") |
| 19289 | (synopsis "Git implementation in Python") |
| 19290 | (description "Dulwich is an implementation of the Git file formats and |
| 19291 | protocols written in pure Python.") |
| 19292 | ;; Can be used with either license. |
| 19293 | (license (list license:asl2.0 license:gpl2+)))) |
| 19294 | |
| 19295 | (define-public python-pbkdf2 |
| 19296 | (package |
| 19297 | (name "python-pbkdf2") |
| 19298 | (version "1.3") |
| 19299 | (source |
| 19300 | (origin |
| 19301 | (method url-fetch) |
| 19302 | (uri (pypi-uri "pbkdf2" version)) |
| 19303 | (sha256 |
| 19304 | (base32 |
| 19305 | "0yb99rl2mbsaamj571s1mf6vgniqh23v98k4632150hjkwv9fqxc")))) |
| 19306 | (build-system python-build-system) |
| 19307 | (arguments |
| 19308 | '(#:phases |
| 19309 | (modify-phases %standard-phases |
| 19310 | (replace 'check |
| 19311 | (lambda _ |
| 19312 | (invoke "python" "test/test_pbkdf2.py")))))) |
| 19313 | (home-page "https://www.dlitz.net/software/python-pbkdf2/") |
| 19314 | (synopsis "Password-based key derivation") |
| 19315 | (description "This module implements the password-based key derivation |
| 19316 | function, PBKDF2, specified in RSA PKCS#5 v2.0. |
| 19317 | |
| 19318 | PKCS#5 v2.0 Password-Based Key Derivation is a key derivation function which |
| 19319 | is part of the RSA Public Key Cryptography Standards series. The provided |
| 19320 | implementation takes a password or a passphrase and a salt value (and |
| 19321 | optionally a iteration count, a digest module, and a MAC module) and provides |
| 19322 | a file-like object from which an arbitrarily-sized key can be read.") |
| 19323 | (license license:expat))) |
| 19324 | |
| 19325 | (define-public python-qrcode |
| 19326 | (package |
| 19327 | (name "python-qrcode") |
| 19328 | (version "7.3.1") |
| 19329 | (source |
| 19330 | (origin |
| 19331 | (method url-fetch) |
| 19332 | (uri (pypi-uri "qrcode" version)) |
| 19333 | (sha256 |
| 19334 | (base32 "0y35jlwfvkgn9341lzshyaqgpp61vysjh107vhdd96ya83r6ynip")))) |
| 19335 | (build-system python-build-system) |
| 19336 | (arguments |
| 19337 | ;; FIXME: Tests require packaging 'pymaging'. |
| 19338 | '(#:tests? #f)) |
| 19339 | (propagated-inputs |
| 19340 | (list python-lxml ; for SVG output |
| 19341 | python-pillow)) ; for PNG output |
| 19342 | (home-page "https://github.com/lincolnloop/python-qrcode") |
| 19343 | (synopsis "QR Code image generator") |
| 19344 | (description "This package provides a pure Python QR Code generator |
| 19345 | module. It uses the Python Imaging Library (PIL) to allow for the generation |
| 19346 | of QR Codes. |
| 19347 | |
| 19348 | In addition this package provides a command line tool to generate QR codes and |
| 19349 | either write these QR codes to a file or do the output as ascii art at the |
| 19350 | console.") |
| 19351 | (license license:bsd-3))) |
| 19352 | |
| 19353 | (define-public python-rst2ansi |
| 19354 | (package |
| 19355 | (name "python-rst2ansi") |
| 19356 | (version "0.1.5") |
| 19357 | (source |
| 19358 | (origin |
| 19359 | (method url-fetch) |
| 19360 | (uri (pypi-uri "rst2ansi" version)) |
| 19361 | (sha256 |
| 19362 | (base32 |
| 19363 | "0vzy6gd60l79ff750scl0sz48r1laalkl6md6dwzah4dcadgn5qv")))) |
| 19364 | (build-system python-build-system) |
| 19365 | (propagated-inputs |
| 19366 | (list python-docutils)) |
| 19367 | (home-page "https://github.com/Snaipe/python-rst-to-ansi") |
| 19368 | (synopsis "Convert RST to ANSI-decorated console output") |
| 19369 | (description |
| 19370 | "Python module dedicated to rendering RST (reStructuredText) documents |
| 19371 | to ansi-escaped strings suitable for display in a terminal.") |
| 19372 | (license license:expat))) |
| 19373 | |
| 19374 | (define-public python-ansi2html |
| 19375 | (package |
| 19376 | (name "python-ansi2html") |
| 19377 | (version "1.2.0") |
| 19378 | (source |
| 19379 | (origin |
| 19380 | (method url-fetch) |
| 19381 | (uri (pypi-uri "ansi2html" version)) |
| 19382 | (sha256 |
| 19383 | (base32 |
| 19384 | "1wa00zffprb78w1mqq90dk47czz1knanys2a40zbw2vyapd5lp9y")))) |
| 19385 | (build-system python-build-system) |
| 19386 | (native-inputs |
| 19387 | (list python-mock python-nose)) |
| 19388 | (propagated-inputs |
| 19389 | (list python-six)) |
| 19390 | (home-page "https://github.com/ralphbean/ansi2html") |
| 19391 | (synopsis "Convert ANSI-decorated console output to HTML") |
| 19392 | (description |
| 19393 | "@command{ansi2html} is a Python library and command line utility for |
| 19394 | converting text with ANSI color codes to HTML or LaTeX.") |
| 19395 | (license license:gpl3+))) |
| 19396 | |
| 19397 | (define-public python-easy-ansi |
| 19398 | (package |
| 19399 | (name "python-easy-ansi") |
| 19400 | (version "0.3") |
| 19401 | (source |
| 19402 | (origin |
| 19403 | (method git-fetch) |
| 19404 | (uri (git-reference |
| 19405 | (url "https://gitlab.com/joeysbytes/easy-ansi") |
| 19406 | (commit (string-append "v" version)))) |
| 19407 | (file-name (git-file-name name version)) |
| 19408 | (sha256 |
| 19409 | (base32 "0albh55ynzs98qy9pln4qaxw5qhhh3lk09jy9bx19gycrp1c3lc3")))) |
| 19410 | (build-system python-build-system) |
| 19411 | (home-page "https://gitlab.com/joeysbytes/easy-ansi") |
| 19412 | (synopsis "Terminal framework API") |
| 19413 | (description |
| 19414 | "Easy ANSI is a terminal framework API to give you an easy way to use |
| 19415 | colors, cursor control movements, and line/box drawing. It is not meant as a |
| 19416 | replacement to more full-featured frameworks (such as curses or urwid), but as |
| 19417 | a tool to quickly create nice-looking screens in your terminal window. You |
| 19418 | can even create animations with the cursor controls.") |
| 19419 | (license license:expat))) |
| 19420 | |
| 19421 | (define-public python-ddt |
| 19422 | (package |
| 19423 | (name "python-ddt") |
| 19424 | (version "1.4.2") |
| 19425 | (source |
| 19426 | (origin |
| 19427 | (method url-fetch) |
| 19428 | (uri (pypi-uri "ddt" version)) |
| 19429 | (sha256 |
| 19430 | (base32 |
| 19431 | "0y2k756qjz1rhpivi60hy29b4bf0bh3wck39i1mn6pkil9k779k4")))) |
| 19432 | (build-system python-build-system) |
| 19433 | (native-inputs |
| 19434 | (list python-pytest)) |
| 19435 | (propagated-inputs |
| 19436 | (list python-pyyaml)) |
| 19437 | (home-page "https://github.com/datadriventests/ddt") |
| 19438 | (synopsis "Data-Driven Tests") |
| 19439 | (description |
| 19440 | "Data-Driven Tests (@dfn{DDT}) allow you to multiply one test case by |
| 19441 | running it with different test data, and make it appear as multiple test |
| 19442 | cases.") |
| 19443 | (license license:expat))) |
| 19444 | |
| 19445 | (define-public python-pycountry |
| 19446 | (package |
| 19447 | (name "python-pycountry") |
| 19448 | (version "22.3.5") |
| 19449 | (source |
| 19450 | (origin |
| 19451 | (method url-fetch) |
| 19452 | (uri (pypi-uri "pycountry" version)) |
| 19453 | (sha256 |
| 19454 | (base32 |
| 19455 | "0ihnkh86zz01vi46gcwgq6h71jrpj7hq71zi13c98n2qdhj3l5mj")))) |
| 19456 | (build-system python-build-system) |
| 19457 | (home-page "https://bitbucket.org/flyingcircus/pycountry") |
| 19458 | (synopsis "ISO databases for languages, countries, currencies, etc.") |
| 19459 | (description |
| 19460 | "@code{pycountry} provides the ISO databases for the standards: |
| 19461 | @enumerate |
| 19462 | @item 639-3 (Languages) |
| 19463 | @item 3166 (Countries) |
| 19464 | @item 3166-3 (Deleted Countries) |
| 19465 | @item 3166-2 (Subdivisions of countries) |
| 19466 | @item 4217 (Currencies) |
| 19467 | @item 15924 (Scripts) |
| 19468 | @end enumerate |
| 19469 | It includes a copy from Debian’s pkg-isocodes and makes the data accessible |
| 19470 | through a Python API.") |
| 19471 | (license license:lgpl2.1+))) |
| 19472 | |
| 19473 | (define-public [email protected] |
| 19474 | (package |
| 19475 | (inherit python-pycountry) |
| 19476 | (name "python-pycountry") |
| 19477 | (version "20.7.3") |
| 19478 | (source |
| 19479 | (origin |
| 19480 | (method url-fetch) |
| 19481 | (uri (pypi-uri "pycountry" version)) |
| 19482 | (sha256 |
| 19483 | (base32 "0hnbabsmqimx5hqh0jbd2f64i8fhzhhbrvid57048hs5sd9ll241")))))) |
| 19484 | |
| 19485 | (define-public python-pycosat |
| 19486 | (package |
| 19487 | (name "python-pycosat") |
| 19488 | (version "0.6.3") |
| 19489 | (source |
| 19490 | (origin |
| 19491 | (method url-fetch) |
| 19492 | (uri (pypi-uri "pycosat" version ".zip")) |
| 19493 | (sha256 |
| 19494 | (base32 |
| 19495 | "1vg0f2fwcybpdqv92z0hwdl603n2safh3fqvjjxkksd78r4qg6ac")))) |
| 19496 | ;; TODO: Unundle picosat. http://fmv.jku.at/picosat/ |
| 19497 | (build-system python-build-system) |
| 19498 | (native-inputs |
| 19499 | (list unzip)) |
| 19500 | (home-page "https://github.com/ContinuumIO/pycosat") |
| 19501 | (synopsis "Bindings to picosat (a SAT solver)") |
| 19502 | (description |
| 19503 | "This package provides efficient Python bindings to @code{picosat} on |
| 19504 | the C level. When importing pycosat, the @code{picosat} solver becomes part |
| 19505 | of the Python process itself. @code{picosat} is a @dfn{Boolean Satisfiability |
| 19506 | Problem} (SAT) solver.") |
| 19507 | (license license:expat))) |
| 19508 | |
| 19509 | (define-public python-pypeg2 |
| 19510 | (package |
| 19511 | (name "python-pypeg2") |
| 19512 | (version "2.15.2") |
| 19513 | (source |
| 19514 | (origin |
| 19515 | (method url-fetch) |
| 19516 | (uri (pypi-uri "pyPEG2" version)) |
| 19517 | (sha256 |
| 19518 | (base32 |
| 19519 | "0v8ziaam2r637v94ra4dbjw6jzxz99gs5x4i585kgag1v204yb9b")))) |
| 19520 | (build-system python-build-system) |
| 19521 | (propagated-inputs (list python-lxml)) |
| 19522 | (arguments |
| 19523 | ;;https://bitbucket.org/fdik/pypeg/issues/36/test-failures-on-py35 |
| 19524 | '(#:tests? #f)) |
| 19525 | (home-page "https://fdik.org/pyPEG/") |
| 19526 | (synopsis "Parsing Expression Grammars in Python") |
| 19527 | (description "PyPEG is an intrinsic parser interpreter framework for |
| 19528 | Python. It is based on Parsing Expression Grammars, PEG. With pyPEG you can |
| 19529 | parse many formal languages.") |
| 19530 | (license license:gpl2))) |
| 19531 | |
| 19532 | (define-public python-incremental |
| 19533 | (package |
| 19534 | (name "python-incremental") |
| 19535 | (version "17.5.0") |
| 19536 | (source |
| 19537 | (origin |
| 19538 | (method url-fetch) |
| 19539 | (uri (pypi-uri "incremental" version)) |
| 19540 | (sha256 |
| 19541 | (base32 |
| 19542 | "1cylxdz1cnkm5g3pklna3h2n0i0rks95ir1pnpxfnvpkmab1cxbv")))) |
| 19543 | (build-system python-build-system) |
| 19544 | (home-page "https://github.com/hawkowl/incremental") |
| 19545 | (synopsis "Library for versioning Python projects") |
| 19546 | (description "Incremental is a small library that versions your Python |
| 19547 | projects.") |
| 19548 | (license license:expat))) |
| 19549 | |
| 19550 | (define-public python-invoke |
| 19551 | (package |
| 19552 | (name "python-invoke") |
| 19553 | (home-page "https://www.pyinvoke.org/") |
| 19554 | (version "1.6.0") |
| 19555 | (source (origin |
| 19556 | (method url-fetch) |
| 19557 | (uri (pypi-uri "invoke" version)) |
| 19558 | (sha256 |
| 19559 | (base32 |
| 19560 | "1lsql9daabfr31c7syva5myc5bka45k57ygs9fliv63qrwp1wk9p")))) |
| 19561 | (build-system python-build-system) |
| 19562 | (arguments |
| 19563 | ;; XXX: Requires many dependencies that are not yet in Guix. |
| 19564 | `(#:tests? #f |
| 19565 | #:phases |
| 19566 | (modify-phases %standard-phases |
| 19567 | (add-after 'unpack 'delete-python2-code |
| 19568 | (lambda _ |
| 19569 | (delete-file-recursively "invoke/vendor/yaml2"))) |
| 19570 | (add-after 'unpack 'fix-bash-path |
| 19571 | (lambda* (#:key inputs #:allow-other-keys) |
| 19572 | (let ((bash (assoc-ref inputs "bash"))) |
| 19573 | (substitute* "invoke/config.py" |
| 19574 | (("shell = \"/bin/bash\"") |
| 19575 | (string-append "shell = \"" bash "/bin/bash\""))))))))) |
| 19576 | (inputs |
| 19577 | `(("bash" ,bash-minimal))) |
| 19578 | (synopsis "Pythonic task execution") |
| 19579 | (description |
| 19580 | "Invoke is a Python task execution tool and library, drawing inspiration |
| 19581 | from various sources to arrive at a powerful and clean feature set. It is |
| 19582 | evolved from the Fabric project, but focuses on local and abstract concerns |
| 19583 | instead of servers and network commands.") |
| 19584 | (license license:bsd-3))) |
| 19585 | |
| 19586 | (define-public python-automat |
| 19587 | (package |
| 19588 | (name "python-automat") |
| 19589 | (version "20.2.0") |
| 19590 | (source (origin |
| 19591 | (method url-fetch) |
| 19592 | (uri (pypi-uri "Automat" version)) |
| 19593 | (sha256 |
| 19594 | (base32 |
| 19595 | "0cyzrcqiibwdsp4y0djkllnzab8m5faa4s0d1kpi23k1fhy80ybr")))) |
| 19596 | (build-system python-build-system) |
| 19597 | ;; We disable the tests because they require python-twisted, while |
| 19598 | ;; python-twisted depends on python-automat. Twisted is optional, but the |
| 19599 | ;; tests fail if it is not available. Also see |
| 19600 | ;; <https://github.com/glyph/automat/issues/71>. |
| 19601 | (arguments |
| 19602 | `(#:tests? #f |
| 19603 | #:phases |
| 19604 | (modify-phases %standard-phases |
| 19605 | ;; Remove script, because it depends on python-twisted. |
| 19606 | (add-after 'unpack 'remove-entrypoint |
| 19607 | (lambda _ |
| 19608 | (substitute* "setup.py" |
| 19609 | (("\"automat-visualize = automat._visualize:tool\"") ""))))))) |
| 19610 | (native-inputs |
| 19611 | (list python-m2r python-setuptools-scm python-graphviz)) |
| 19612 | (propagated-inputs |
| 19613 | (list python-six python-attrs)) |
| 19614 | (home-page "https://github.com/glyph/Automat") |
| 19615 | (synopsis "Self-service finite-state machines") |
| 19616 | (description "Automat is a library for concise, idiomatic Python |
| 19617 | expression of finite-state automata (particularly deterministic finite-state |
| 19618 | transducers).") |
| 19619 | (license license:expat))) |
| 19620 | |
| 19621 | (define-public python-m2r |
| 19622 | (package |
| 19623 | (name "python-m2r") |
| 19624 | (version "0.2.1") |
| 19625 | (source (origin |
| 19626 | (method url-fetch) |
| 19627 | (uri (pypi-uri "m2r" version)) |
| 19628 | (sha256 |
| 19629 | (base32 |
| 19630 | "16gdm8i06jjmlpvckpfmlkr4693dh0vs192vgsqn84fsdkbbm45z")) |
| 19631 | (modules '((guix build utils))) |
| 19632 | (snippet |
| 19633 | ;; Adjust test regex for Python 3.10 compatibility. |
| 19634 | ;; Taken from upstream pull request: |
| 19635 | ;; https://github.com/miyakogi/m2r/pull/62 |
| 19636 | '(substitute* "tests/test_cli.py" |
| 19637 | (("self.assertIn\\('optional arguments:', message\\)") |
| 19638 | "self.assertRegex(message, r'option(s|al arguments):')"))))) |
| 19639 | (build-system python-build-system) |
| 19640 | (propagated-inputs |
| 19641 | (list python-docutils python-mistune)) |
| 19642 | (native-inputs |
| 19643 | (list python-pygments python-mock)) |
| 19644 | (home-page "https://github.com/miyakogi/m2r") |
| 19645 | (synopsis "Markdown to reStructuredText converter") |
| 19646 | (description "M2R converts a markdown file including reST markups to valid |
| 19647 | reST format.") |
| 19648 | (license license:expat))) |
| 19649 | |
| 19650 | (define-public python-constantly |
| 19651 | (package |
| 19652 | (name "python-constantly") |
| 19653 | (version "15.1.0") |
| 19654 | (source (origin |
| 19655 | (method url-fetch) |
| 19656 | (uri (pypi-uri "constantly" version)) |
| 19657 | (sha256 |
| 19658 | (base32 |
| 19659 | "0dgwdla5kfpqz83hfril716inm41hgn9skxskvi77605jbmp4qsq")))) |
| 19660 | (build-system python-build-system) |
| 19661 | (home-page "https://github.com/twisted/constantly") |
| 19662 | (synopsis "Symbolic constants in Python") |
| 19663 | (description "Constantly is a Python library that provides symbolic |
| 19664 | constant support. It includes collections and constants with text, numeric, |
| 19665 | and bit flag values.") |
| 19666 | (license license:expat))) |
| 19667 | |
| 19668 | (define-public python-attrdict |
| 19669 | (package |
| 19670 | (name "python-attrdict") |
| 19671 | (version "2.0.1") |
| 19672 | (source (origin |
| 19673 | (method url-fetch) |
| 19674 | (uri (pypi-uri "attrdict" version)) |
| 19675 | (sha256 |
| 19676 | (base32 |
| 19677 | "0w3vsz64j9npxfgh83hghsh161wwkrx1fxqi1533js2wnnc0dj9m")))) |
| 19678 | (build-system python-build-system) |
| 19679 | ;; The package is no longer maintained and tests need some work. |
| 19680 | (arguments '(#:tests? #f)) |
| 19681 | (propagated-inputs (list python-six)) |
| 19682 | (home-page "https://github.com/bcj/AttrDict") |
| 19683 | (synopsis "Attribute-style access dictionaries") |
| 19684 | (description |
| 19685 | "This package provides mapping objects whose elements can be accessed |
| 19686 | both as keys and as attributes.") |
| 19687 | (license license:expat))) |
| 19688 | |
| 19689 | (define-public python-attrs |
| 19690 | (package |
| 19691 | (name "python-attrs") |
| 19692 | (version "21.2.0") |
| 19693 | (source (origin |
| 19694 | (method url-fetch) |
| 19695 | (uri (pypi-uri "attrs" version)) |
| 19696 | (sha256 |
| 19697 | (base32 |
| 19698 | "1yzmwi5d197p0qhl7rl4xi9q1w8mk9i3zn6hrl22knbcrb1slspg")))) |
| 19699 | (build-system python-build-system) |
| 19700 | (arguments |
| 19701 | `(#:phases (modify-phases %standard-phases |
| 19702 | (add-after 'unpack 'remove-test-hypothesis-deadlines |
| 19703 | (lambda _ |
| 19704 | (substitute* "tests/test_make.py" |
| 19705 | (("assume, given") "assume, given, settings") |
| 19706 | (("( +)@given" all spaces) |
| 19707 | (string-append spaces "@settings(deadline=None)\n" all))))) |
| 19708 | (replace 'check |
| 19709 | (lambda* (#:key tests? #:allow-other-keys) |
| 19710 | (when tests? |
| 19711 | (invoke "pytest"))))))) |
| 19712 | (native-inputs |
| 19713 | (list python-coverage python-hypothesis python-pympler python-pytest |
| 19714 | python-six)) |
| 19715 | (home-page "https://github.com/python-attrs/attrs/") |
| 19716 | (synopsis "Attributes without boilerplate") |
| 19717 | (description "@code{attrs} is a Python package with class decorators that |
| 19718 | ease the chores of implementing the most common attribute-related object |
| 19719 | protocols.") |
| 19720 | (license license:expat))) |
| 19721 | |
| 19722 | (define-public python-attrs-bootstrap |
| 19723 | (package |
| 19724 | (inherit python-attrs) |
| 19725 | (name "python-attrs-bootstrap") |
| 19726 | (native-inputs `()) |
| 19727 | (arguments `(#:tests? #f)))) |
| 19728 | |
| 19729 | (define-public python-cliapp |
| 19730 | (package |
| 19731 | (name "python-cliapp") |
| 19732 | (version "1.20180812.1") |
| 19733 | (source |
| 19734 | (origin |
| 19735 | (method url-fetch) |
| 19736 | (uri (string-append |
| 19737 | "http://git.liw.fi/cgi-bin/cgit/cgit.cgi/cliapp/snapshot/cliapp-" |
| 19738 | version ".tar.gz")) |
| 19739 | (sha256 |
| 19740 | (base32 |
| 19741 | "1c1jlblbns8qhiaqjpg4xi6lip8xwfc5w643p43rg543havaj45x")))) |
| 19742 | (build-system python-build-system) |
| 19743 | (arguments |
| 19744 | `(;; XXX: The tests only do style and coverage checks, which |
| 19745 | ;; fails due to deprecation warnings, etc. |
| 19746 | #:tests? #f)) |
| 19747 | (native-inputs |
| 19748 | (list python-coverage-test-runner python-pep8)) |
| 19749 | (propagated-inputs |
| 19750 | (list python-pyaml)) |
| 19751 | (home-page "https://liw.fi/cliapp/") |
| 19752 | (synopsis "Python framework for command line programs") |
| 19753 | (description "@code{cliapp} is a Python framework for command line |
| 19754 | programs. It contains the typical stuff such programs need to do, such |
| 19755 | as parsing the command line for options, and iterating over input files.") |
| 19756 | (license license:gpl2+))) |
| 19757 | |
| 19758 | (define-public python-ttystatus |
| 19759 | (package |
| 19760 | (name "python-ttystatus") |
| 19761 | (version "0.38") |
| 19762 | (source |
| 19763 | (origin |
| 19764 | (method git-fetch) |
| 19765 | (uri (git-reference |
| 19766 | (url "http://git.liw.fi/ttystatus") |
| 19767 | ;; There are no tags after ttystatus-0.36. |
| 19768 | (commit "e9fc573326c5d1348f5fe56263b4f7a8c32f58c9"))) |
| 19769 | (sha256 |
| 19770 | (base32 "0v49q839nrwdm19c83wfmj6n2kw80xslwq9k0n5509r2h7wzjiqj")) |
| 19771 | (file-name (git-file-name name version)))) |
| 19772 | (build-system python-build-system) |
| 19773 | (native-inputs |
| 19774 | (list python-coverage-test-runner python-pep8)) |
| 19775 | (arguments |
| 19776 | `(#:phases |
| 19777 | (modify-phases %standard-phases |
| 19778 | ;; check phase needs to be run before the build phase. If not, |
| 19779 | ;; coverage-test-runner looks for tests for the built source files, |
| 19780 | ;; and fails. |
| 19781 | (delete 'check) |
| 19782 | (add-before 'build 'check |
| 19783 | (lambda _ (invoke "make" "check")))))) |
| 19784 | (home-page "https://liw.fi/ttystatus/") |
| 19785 | (synopsis "Python library for progress reporting and |
| 19786 | status updates on terminals") |
| 19787 | (description "@code{ttystatus} is a Python library for showing progress |
| 19788 | reporting and status updates on terminals, for command line programs. |
| 19789 | Output is automatically adapted to the width of the terminal: truncated |
| 19790 | if it does not fit, and resized if the terminal size changes.") |
| 19791 | (license license:gpl3+))) |
| 19792 | |
| 19793 | (define-public python-astroid |
| 19794 | (package |
| 19795 | (name "python-astroid") |
| 19796 | (version "2.9.0") |
| 19797 | (source |
| 19798 | (origin |
| 19799 | (method git-fetch) |
| 19800 | (uri (git-reference |
| 19801 | (url "https://github.com/PyCQA/astroid") |
| 19802 | (commit (string-append "v" version)))) |
| 19803 | (file-name (git-file-name name version)) |
| 19804 | (sha256 |
| 19805 | (base32 "19iiys4233cicpm48fd7lrkm31kk47qiv44wvk952rqbcn4rd2dh")))) |
| 19806 | (build-system python-build-system) |
| 19807 | (propagated-inputs |
| 19808 | (list python-lazy-object-proxy python-typing-extensions python-wrapt)) |
| 19809 | (native-inputs |
| 19810 | (list python-pytest python-pytest-runner)) |
| 19811 | (home-page "https://github.com/PyCQA/astroid") |
| 19812 | (synopsis "Python source code base representation") |
| 19813 | (description "@code{python-astroid} provides a common base representation |
| 19814 | of Python source code for projects such as pychecker, pyreverse, pylint, etc. |
| 19815 | It provides a compatible representation which comes from the _ast module. It |
| 19816 | rebuilds the tree generated by the builtin _ast module by recursively walking |
| 19817 | down the AST and building an extended ast. The new node classes have |
| 19818 | additional methods and attributes for different usages. They include some |
| 19819 | support for static inference and local name scopes. Furthermore, astroid |
| 19820 | builds partial trees by inspecting living objects.") |
| 19821 | (license license:lgpl2.1+))) |
| 19822 | |
| 19823 | (define-public python-isbnlib |
| 19824 | (package |
| 19825 | (name "python-isbnlib") |
| 19826 | (version "3.10.4") |
| 19827 | (source |
| 19828 | (origin |
| 19829 | (method url-fetch) |
| 19830 | (uri (pypi-uri "isbnlib" version)) |
| 19831 | (sha256 |
| 19832 | (base32 |
| 19833 | "0iin0x2xqwyphyyzd0mzrq5v5xm7b6dlbb294k4dywra5qvbrgzm")))) |
| 19834 | (build-system python-build-system) |
| 19835 | (arguments '(#:tests? #f)) ; No test |
| 19836 | (home-page "https://github.com/xlcnd/isbnlib") |
| 19837 | (synopsis "Python library to work with ISBN strings") |
| 19838 | (description "@code{python-isbnlib} is a (pure) python library that provides |
| 19839 | several useful methods and functions to validate, clean, transform, hyphenate and |
| 19840 | get metadata for ISBN strings. Its origin was as the core of isbntools. This short |
| 19841 | version, is suitable to be include as a dependency in other projects.") |
| 19842 | (license license:lgpl3+))) |
| 19843 | |
| 19844 | (define-public python-isort |
| 19845 | (package |
| 19846 | (name "python-isort") |
| 19847 | (version "5.10.1") |
| 19848 | (source |
| 19849 | (origin |
| 19850 | (method git-fetch) |
| 19851 | (uri (git-reference |
| 19852 | ;; Tests pass only from the Github sources |
| 19853 | (url "https://github.com/timothycrosley/isort") |
| 19854 | (commit version))) |
| 19855 | (file-name (git-file-name name version)) |
| 19856 | (modules '((guix build utils))) |
| 19857 | (snippet '(for-each delete-file (find-files "." "\\.whl$"))) |
| 19858 | (sha256 |
| 19859 | (base32 |
| 19860 | "09spgl2k9xrprr5gbpfc91a8p7mx7a0c64ydgc91b3jhrmnd9jg1")))) |
| 19861 | (build-system python-build-system) |
| 19862 | (arguments |
| 19863 | `(#:phases |
| 19864 | (modify-phases %standard-phases |
| 19865 | (add-after 'unpack 'loosen-requirements |
| 19866 | (lambda _ |
| 19867 | ;; Permit newer versions of black. |
| 19868 | (substitute* "example_isort_formatting_plugin/pyproject.toml" |
| 19869 | (("\\^20\\.08b1") |
| 19870 | ">= 20.08b1")))) |
| 19871 | ;; A foretaste of what our future python-build-system will need to |
| 19872 | ;; do. |
| 19873 | (replace 'build |
| 19874 | (lambda _ |
| 19875 | (invoke "python" "-m" "build" "--wheel" "--no-isolation" "."))) |
| 19876 | (replace 'install |
| 19877 | (lambda* (#:key outputs #:allow-other-keys) |
| 19878 | (let ((out (assoc-ref outputs "out")) |
| 19879 | (whl (car (find-files "dist" "\\.whl$")))) |
| 19880 | (invoke "pip" "--no-cache-dir" "--no-input" |
| 19881 | "install" "--no-deps" "--prefix" out whl)))) |
| 19882 | (add-after 'install 'install-example-plugins |
| 19883 | (lambda* (#:key outputs #:allow-other-keys) |
| 19884 | (let ((out (assoc-ref outputs "out"))) |
| 19885 | ;; Patch to use the core poetry API. |
| 19886 | (substitute* '("example_isort_formatting_plugin/pyproject.toml" |
| 19887 | "example_isort_sorting_plugin/pyproject.toml" |
| 19888 | "example_shared_isort_profile/pyproject.toml") |
| 19889 | (("poetry>=0.12") |
| 19890 | "poetry-core>=1.0.0") |
| 19891 | (("poetry.masonry.api") |
| 19892 | "poetry.core.masonry.api")) |
| 19893 | ;; Build the example plugins. |
| 19894 | (for-each (lambda (source-directory) |
| 19895 | (invoke "python" "-m" "build" "--wheel" |
| 19896 | "--no-isolation" "--outdir=dist" |
| 19897 | source-directory)) |
| 19898 | '("example_isort_formatting_plugin" |
| 19899 | "example_isort_sorting_plugin" |
| 19900 | "example_shared_isort_profile")) |
| 19901 | ;; Install them to temporary storage, for the test. |
| 19902 | (setenv "HOME" (getcwd)) |
| 19903 | (let ((example-whls (find-files "dist" "^example.*\\.whl$"))) |
| 19904 | (apply invoke "pip" "--no-cache-dir" "--no-input" |
| 19905 | "install" "--user" "--no-deps" example-whls))))) |
| 19906 | (replace 'check |
| 19907 | (lambda* (#:key tests? inputs outputs #:allow-other-keys) |
| 19908 | (when tests? |
| 19909 | (let ((bin (string-append (assoc-ref outputs "out") "/bin"))) |
| 19910 | (setenv "PATH" (string-append (getenv "PATH") ":" bin))) |
| 19911 | (add-installed-pythonpath inputs outputs) |
| 19912 | (invoke "pytest" "-vv" "tests/unit/" |
| 19913 | "-k" "not test_gitignore" ;requires git |
| 19914 | "--ignore=tests/unit/test_deprecated_finders.py"))))))) |
| 19915 | (native-inputs |
| 19916 | (list python-black |
| 19917 | python-colorama |
| 19918 | python-hypothesmith |
| 19919 | python-libcst-minimal |
| 19920 | python-natsort |
| 19921 | python-poetry-core |
| 19922 | python-pylama |
| 19923 | python-pypa-build |
| 19924 | python-pytest-mock |
| 19925 | python-pytest)) |
| 19926 | (home-page "https://github.com/PyCQA/isort") |
| 19927 | (synopsis "Python utility/library to sort python imports") |
| 19928 | (description "@code{python-isort} is a python utility/library to sort |
| 19929 | imports alphabetically, and automatically separated into sections. It |
| 19930 | provides a command line utility, a python library and plugins for various |
| 19931 | editors.") |
| 19932 | (license license:expat))) |
| 19933 | |
| 19934 | (define-public python-configparser |
| 19935 | (package |
| 19936 | (name "python-configparser") |
| 19937 | (version "4.0.2") |
| 19938 | (source |
| 19939 | (origin |
| 19940 | (method url-fetch) |
| 19941 | (uri (pypi-uri "configparser" version)) |
| 19942 | (sha256 |
| 19943 | (base32 |
| 19944 | "1priacxym85yjcf68hh38w55nqswaxp71ryjyfdk222kg9l85ln7")))) |
| 19945 | (native-inputs |
| 19946 | (list python-setuptools-scm)) |
| 19947 | (build-system python-build-system) |
| 19948 | (home-page "https://github.com/jaraco/configparser/") |
| 19949 | (synopsis "Backport of configparser from python 3.5") |
| 19950 | (description "@code{python-configparser} is a backport of |
| 19951 | @code{configparser} from Python 3.5 so that it can be used directly |
| 19952 | in other versions.") |
| 19953 | (license license:expat))) |
| 19954 | |
| 19955 | (define-public python-iniconfig |
| 19956 | (package |
| 19957 | (name "python-iniconfig") |
| 19958 | (version "1.1.1") |
| 19959 | (source |
| 19960 | (origin |
| 19961 | (method url-fetch) |
| 19962 | (uri (pypi-uri "iniconfig" version)) |
| 19963 | (sha256 |
| 19964 | (base32 |
| 19965 | "0ckzngs3scaa1mcfmsi1w40a1l8cxxnncscrxzjjwjyisx8z0fmw")))) |
| 19966 | (build-system python-build-system) |
| 19967 | (home-page "https://github.com/RonnyPfannschmidt/iniconfig") |
| 19968 | (synopsis "Simple INI-file parser") |
| 19969 | (description "The @code{iniconfig} package provides a small and simple |
| 19970 | INI-file parser module having a unique set of features ; @code{iniconfig} |
| 19971 | @itemize |
| 19972 | @item maintains the order of sections and entries ; |
| 19973 | @item supports multi-line values with or without line-continuations ; |
| 19974 | @item supports \"#\" comments everywhere ; |
| 19975 | @item raises errors with proper line-numbers ; |
| 19976 | @item raises an error when two sections have the same name. |
| 19977 | @end itemize") |
| 19978 | (license license:expat))) |
| 19979 | |
| 19980 | (define-public python-mamba |
| 19981 | (package |
| 19982 | (name "python-mamba") |
| 19983 | (version "0.11.2") |
| 19984 | (source (origin |
| 19985 | (method url-fetch) |
| 19986 | (uri (pypi-uri "mamba" version)) |
| 19987 | (sha256 |
| 19988 | (base32 |
| 19989 | "15m4dpnpv9m60pdaygvwgi43fwqaivs3qxfxhspwrp47sbgwdkvm")))) |
| 19990 | (build-system python-build-system) |
| 19991 | (arguments `(#:tests? #f)) ; No test |
| 19992 | (propagated-inputs |
| 19993 | (list python-clint python-coverage)) |
| 19994 | (home-page "https://nestorsalceda.com/mamba/") |
| 19995 | (synopsis "Test runner for Python") |
| 19996 | (description |
| 19997 | "Mamba is a Behaviour-Driven Development tool for Python developers. |
| 19998 | Is heavily influenced from RSpec, Mocha, Jasmine or Ginkgo.") |
| 19999 | (license license:expat))) |
| 20000 | |
| 20001 | (define-public python-mando |
| 20002 | (package |
| 20003 | (name "python-mando") |
| 20004 | (version "0.7.1") |
| 20005 | (source (origin |
| 20006 | (method url-fetch) |
| 20007 | (uri (pypi-uri "mando" version)) |
| 20008 | (sha256 |
| 20009 | (base32 |
| 20010 | "001mikga36i811pbc95rb45m2kzivkx4xb0fn3pzl4xnnjcskfhq")))) |
| 20011 | (build-system python-build-system) |
| 20012 | (arguments |
| 20013 | (list #:phases |
| 20014 | #~(modify-phases %standard-phases |
| 20015 | (replace 'check |
| 20016 | (lambda* (#:key tests? #:allow-other-keys) |
| 20017 | (when tests? |
| 20018 | (invoke "pytest" "-vv"))))))) |
| 20019 | (propagated-inputs |
| 20020 | (list python-rst2ansi python-six)) |
| 20021 | (native-inputs |
| 20022 | (list python-pytest)) |
| 20023 | (home-page "https://mando.readthedocs.org/") |
| 20024 | (synopsis |
| 20025 | "Wrapper around argparse, allowing creation of complete CLI applications") |
| 20026 | (description |
| 20027 | "This package is a wrapper around argparse, allowing you to write complete CLI |
| 20028 | applications in seconds while maintaining all the flexibility.") |
| 20029 | (license license:expat))) |
| 20030 | |
| 20031 | (define-public python-mwclient |
| 20032 | (package |
| 20033 | (name "python-mwclient") |
| 20034 | (version "0.10.1") |
| 20035 | (source |
| 20036 | (origin |
| 20037 | (method git-fetch) |
| 20038 | ;; The PyPI version wouldn't contain tests. |
| 20039 | (uri (git-reference |
| 20040 | (url "https://github.com/mwclient/mwclient") |
| 20041 | (commit (string-append "v" version)))) |
| 20042 | (file-name (git-file-name name version)) |
| 20043 | (sha256 |
| 20044 | (base32 "120snnsh9n5svfwkyj1w9jrxf99jnqm0jk282yypd3lpyca1l9hj")))) |
| 20045 | (build-system python-build-system) |
| 20046 | (propagated-inputs |
| 20047 | (list python-requests-oauthlib python-six)) |
| 20048 | (native-inputs |
| 20049 | (list python-mock python-pytest python-pytest-cov |
| 20050 | python-pytest-runner python-responses)) |
| 20051 | (home-page "https://github.com/btongminh/mwclient") |
| 20052 | (synopsis "MediaWiki API client") |
| 20053 | (description "This package provides a MediaWiki API client.") |
| 20054 | (license license:expat))) |
| 20055 | |
| 20056 | (define-public python-kneed |
| 20057 | (package |
| 20058 | (name "python-kneed") |
| 20059 | (version "0.7.0") |
| 20060 | (source |
| 20061 | (origin |
| 20062 | (method url-fetch) |
| 20063 | (uri (pypi-uri "kneed" version)) |
| 20064 | (sha256 |
| 20065 | (base32 "0vkwi0pr7nfkp3c46hnmx0275yx68v96v10rmspv0wis33x6f39l")))) |
| 20066 | (build-system python-build-system) |
| 20067 | (propagated-inputs |
| 20068 | (list python-matplotlib python-numpy python-scipy)) |
| 20069 | (home-page "https://github.com/arvkevi/kneed") |
| 20070 | (synopsis "Knee-point detection in Python") |
| 20071 | (description "This package implements the kneedle algorithm. Given a set |
| 20072 | of x and y values, kneed will return the knee point of the function. The knee |
| 20073 | point is the point of maximum curvature.") |
| 20074 | (license license:bsd-3))) |
| 20075 | |
| 20076 | (define-public python-utils |
| 20077 | (package |
| 20078 | (name "python-utils") |
| 20079 | (version "2.4.0") |
| 20080 | (source (origin |
| 20081 | (method url-fetch) |
| 20082 | (uri (pypi-uri "python-utils" version)) |
| 20083 | (sha256 |
| 20084 | (base32 |
| 20085 | "12c0glzkm81ljgf6pwh0d4rmdm1r7vvgg3ifzp8yp9cfyngw07zj")))) |
| 20086 | (build-system python-build-system) |
| 20087 | (arguments |
| 20088 | `(#:phases |
| 20089 | (modify-phases %standard-phases |
| 20090 | (replace 'check |
| 20091 | (lambda* (#:key inputs outputs #:allow-other-keys) |
| 20092 | (add-installed-pythonpath inputs outputs) |
| 20093 | (delete-file "pytest.ini") |
| 20094 | (invoke "pytest" "-vv")))))) |
| 20095 | (native-inputs |
| 20096 | `(("pytest-runner" ,python-pytest-runner) |
| 20097 | ("pytest" ,python-pytest) |
| 20098 | ("six" ,python-six))) |
| 20099 | (home-page "https://github.com/WoLpH/python-utils") |
| 20100 | (synopsis "Convenient utilities not included with the standard Python install") |
| 20101 | (description |
| 20102 | "Python Utils is a collection of small Python functions and classes which |
| 20103 | make common patterns shorter and easier.") |
| 20104 | (license license:bsd-2))) |
| 20105 | |
| 20106 | (define-public python-diff-match-patch |
| 20107 | (package |
| 20108 | (name "python-diff-match-patch") |
| 20109 | (version "20121119") |
| 20110 | (source |
| 20111 | (origin |
| 20112 | (method url-fetch) |
| 20113 | (uri (pypi-uri "diff-match-patch" version)) |
| 20114 | (sha256 |
| 20115 | (base32 |
| 20116 | "0k1f3v8nbidcmmrk65m7h8v41jqi37653za9fcs96y7jzc8mdflx")))) |
| 20117 | (build-system python-build-system) |
| 20118 | (home-page "https://code.google.com/p/google-diff-match-patch") |
| 20119 | (synopsis "Synchronize plain text") |
| 20120 | (description "Diff Match and Patch libraries offer robust algorithms to |
| 20121 | perform the operations required for synchronizing plain text.") |
| 20122 | (license license:asl2.0))) |
| 20123 | |
| 20124 | (define-public python-icdiff |
| 20125 | (package |
| 20126 | (name "python-icdiff") |
| 20127 | (version "2.0.5") |
| 20128 | (source (origin |
| 20129 | (method git-fetch) |
| 20130 | (uri (git-reference |
| 20131 | (url "https://github.com/jeffkaufman/icdiff") |
| 20132 | (commit (string-append "release-" version)))) |
| 20133 | (file-name (git-file-name name version)) |
| 20134 | (sha256 |
| 20135 | (base32 |
| 20136 | "14gr9j2h7sfw47pwfzspm4zinywhqmzm4a0qz5c2k9wbixz120a4")))) |
| 20137 | (build-system python-build-system) |
| 20138 | (home-page "https://www.jefftk.com/icdiff") |
| 20139 | (synopsis "Improved colored diff") |
| 20140 | (description "This package provides colored diff functions that highlight |
| 20141 | parts of the lines that were modified.") |
| 20142 | (license license:psfl))) |
| 20143 | |
| 20144 | (define-public python-dirsync |
| 20145 | (package |
| 20146 | (name "python-dirsync") |
| 20147 | (version "2.2.5") |
| 20148 | (source |
| 20149 | (origin |
| 20150 | (method url-fetch) |
| 20151 | (uri (pypi-uri "dirsync" version)) |
| 20152 | (sha256 |
| 20153 | (base32 |
| 20154 | "1gm82jddm1lkazdi8lfsl1b3vi1z0252ng60mzjym8irnv94qfhy")))) |
| 20155 | (build-system python-build-system) |
| 20156 | (propagated-inputs |
| 20157 | (list python-six)) |
| 20158 | (home-page "https://github.com/tkhyn/dirsync") |
| 20159 | (synopsis "Advanced directory tree synchronisation tool") |
| 20160 | (description "Advanced directory tree synchronisation tool.") |
| 20161 | (license license:expat))) |
| 20162 | |
| 20163 | (define-public python-levenshtein |
| 20164 | (package |
| 20165 | (name "python-levenshtein") |
| 20166 | (version "0.12.2") |
| 20167 | (source |
| 20168 | (origin |
| 20169 | (method url-fetch) |
| 20170 | (uri (pypi-uri "python-Levenshtein" version)) |
| 20171 | (sha256 |
| 20172 | (base32 |
| 20173 | "1xj60gymwx1jl2ra9razx2wk8nb9cv1i7l8d14qsp8a8s7xra8yw")))) |
| 20174 | (build-system python-build-system) |
| 20175 | (home-page "https://github.com/ztane/python-Levenshtein") |
| 20176 | (synopsis "Fast computation of Levenshtein distance and string similarity") |
| 20177 | (description |
| 20178 | "The Levenshtein Python C extension module contains functions for fast computation of |
| 20179 | @enumerate |
| 20180 | @item Levenshtein (edit) distance, and edit operations |
| 20181 | @item string similarity |
| 20182 | @item approximate median strings, and generally string averaging |
| 20183 | @item string sequence and set similarity |
| 20184 | @end enumerate |
| 20185 | It supports both normal and Unicode strings.") |
| 20186 | (license license:gpl2+))) |
| 20187 | |
| 20188 | (define-public python-scandir |
| 20189 | (package |
| 20190 | (name "python-scandir") |
| 20191 | (version "1.10.0") |
| 20192 | (source |
| 20193 | (origin |
| 20194 | (method url-fetch) |
| 20195 | (uri (pypi-uri "scandir" version)) |
| 20196 | (sha256 |
| 20197 | (base32 "1bkqwmf056pkchf05ywbnf659wqlp6lljcdb0y88wr9f0vv32ijd")))) |
| 20198 | (build-system python-build-system) |
| 20199 | (arguments |
| 20200 | `(#:phases (modify-phases %standard-phases |
| 20201 | (replace 'check |
| 20202 | (lambda _ |
| 20203 | (invoke "python" "test/run_tests.py")))))) |
| 20204 | (home-page "https://github.com/benhoyt/scandir") |
| 20205 | (synopsis "Directory iteration function") |
| 20206 | (description |
| 20207 | "Directory iteration function like os.listdir(), except that instead of |
| 20208 | returning a list of bare filenames, it yields DirEntry objects that include |
| 20209 | file type and stat information along with the name. Using scandir() increases |
| 20210 | the speed of os.walk() by 2-20 times (depending on the platform and file |
| 20211 | system) by avoiding unnecessary calls to os.stat() in most cases. |
| 20212 | |
| 20213 | This package is part of the Python standard library since version 3.5.") |
| 20214 | (license license:bsd-3))) |
| 20215 | |
| 20216 | (define-public python-factory-boy |
| 20217 | (package |
| 20218 | (name "python-factory-boy") |
| 20219 | (version "3.2.1") |
| 20220 | (source |
| 20221 | (origin |
| 20222 | (method url-fetch) |
| 20223 | (uri (pypi-uri "factory_boy" version)) |
| 20224 | (sha256 |
| 20225 | (base32 "0pm5lbvnwm0kg5i6z611rg907yw1gy551f2advmpaz041ixjg3d9")))) |
| 20226 | (build-system python-build-system) |
| 20227 | (arguments |
| 20228 | ;; Tests are not included in the tarball. |
| 20229 | `(#:tests? #f)) |
| 20230 | (propagated-inputs (list python-faker)) |
| 20231 | (home-page "https://github.com/benhoyt/scandir") |
| 20232 | (synopsis "Versatile test fixtures replacement") |
| 20233 | (description "Factory_boy is a fixtures replacement based on thoughtbot’s |
| 20234 | factory_girl. As a fixtures replacement tool, it aims to replace static, hard |
| 20235 | to maintain fixtures with easy-to-use factories for complex object. Instead |
| 20236 | of building an exhaustive test setup with every possible combination of corner |
| 20237 | cases, factory_boy allows you to use objects customized for the current test, |
| 20238 | while only declaring the test-specific fields.") |
| 20239 | (license license:expat))) |
| 20240 | |
| 20241 | (define-public python-translate-toolkit |
| 20242 | (package |
| 20243 | (name "python-translate-toolkit") |
| 20244 | (version "3.6.2") |
| 20245 | (source |
| 20246 | (origin |
| 20247 | (method url-fetch) |
| 20248 | (uri (pypi-uri "translate-toolkit" version ".tar.gz")) |
| 20249 | (sha256 |
| 20250 | (base32 "0m4cpsp7x7h5m5agg4ybscf7y86wla46q2lvxpi2myplb6qlgcli")))) |
| 20251 | (build-system python-build-system) |
| 20252 | (native-inputs |
| 20253 | (list python-pytest python-sphinx)) |
| 20254 | (propagated-inputs |
| 20255 | (list python-babel |
| 20256 | python-beautifulsoup4 |
| 20257 | python-chardet |
| 20258 | python-diff-match-patch |
| 20259 | python-levenshtein |
| 20260 | python-lxml |
| 20261 | python-six |
| 20262 | python-vobject |
| 20263 | python-pyyaml)) |
| 20264 | (arguments |
| 20265 | ;; TODO: tests are not run, because they end with |
| 20266 | ;; TypeError: parse() missing 2 required positional arguments: 'tree' and |
| 20267 | ;; 'parse_funcs' |
| 20268 | ;; during test setup. |
| 20269 | (list #:tests? #f |
| 20270 | #:phases |
| 20271 | #~(modify-phases %standard-phases |
| 20272 | ;; translate-toolkit has many optional dependencies (see |
| 20273 | ;; optional.txt), which the sanity check does not understand. |
| 20274 | (delete 'sanity-check)))) |
| 20275 | (home-page "https://toolkit.translatehouse.org") |
| 20276 | (synopsis "Tools and API for translation and localization engineering") |
| 20277 | (description |
| 20278 | "Tools and API for translation and localization engineering. It contains |
| 20279 | several utilities, as well as an API for building localization tools.") |
| 20280 | (license license:gpl2+))) |
| 20281 | |
| 20282 | |
| 20283 | (define-public python-packaging |
| 20284 | (package/inherit python-packaging-bootstrap |
| 20285 | (name "python-packaging") |
| 20286 | (arguments |
| 20287 | `(#:phases (modify-phases %standard-phases |
| 20288 | (replace 'check |
| 20289 | (lambda* (#:key tests? #:allow-other-keys) |
| 20290 | (if tests? |
| 20291 | (invoke "pytest" "-vv") |
| 20292 | (format #t "test suite not run~%"))))))) |
| 20293 | (native-inputs |
| 20294 | `(("python-pretend" ,python-pretend) |
| 20295 | ("python-pytest" ,python-pytest))) |
| 20296 | (propagated-inputs |
| 20297 | `(("python-pyparsing" ,python-pyparsing) |
| 20298 | ("python-six" ,python-six))) |
| 20299 | (home-page "https://github.com/pypa/packaging") |
| 20300 | (synopsis "Core utilities for Python packages") |
| 20301 | (description "Packaging is a Python module for dealing with Python packages. |
| 20302 | It offers an interface for working with package versions, names, and dependency |
| 20303 | information.") |
| 20304 | ;; From 'LICENSE': This software is made available under the terms of |
| 20305 | ;; *either* of the licenses found in LICENSE.APACHE or LICENSE.BSD. |
| 20306 | ;; Contributions to this software is made under the terms of *both* these |
| 20307 | ;; licenses. |
| 20308 | (license (list license:asl2.0 license:bsd-2)))) |
| 20309 | |
| 20310 | (define-public python-relatorio |
| 20311 | (package |
| 20312 | (name "python-relatorio") |
| 20313 | (version "0.10.0") |
| 20314 | (source |
| 20315 | (origin |
| 20316 | (method url-fetch) |
| 20317 | (uri (pypi-uri "relatorio" version)) |
| 20318 | (sha256 |
| 20319 | (base32 |
| 20320 | "09nhrz80dfm60nssbvjgz4czzy4yzfa8gxczcdlzbgcnnvm914vb")))) |
| 20321 | (build-system python-build-system) |
| 20322 | (propagated-inputs |
| 20323 | (list python-lxml python-genshi)) |
| 20324 | (native-inputs |
| 20325 | (list python-magic)) |
| 20326 | (home-page "https://relatorio.tryton.org/") |
| 20327 | (synopsis "Templating library able to output ODT and PDF files") |
| 20328 | (description "Relatorio is a templating library which provides a way to |
| 20329 | easily output ODT, ODS, PNG, SVG and several other kinds of files. Support |
| 20330 | for more filetypes can be easily added by creating plugins for them.") |
| 20331 | (license license:gpl3+))) |
| 20332 | |
| 20333 | (define-public python-radon |
| 20334 | (package |
| 20335 | (name "python-radon") |
| 20336 | (version "5.1.0") |
| 20337 | (source |
| 20338 | (origin |
| 20339 | (method url-fetch) |
| 20340 | (uri (pypi-uri "radon" version)) |
| 20341 | (sha256 |
| 20342 | (base32 |
| 20343 | "1vmf56zsf3paa1jadjcjghiv2kxwiismyayq42ggnqpqwm98f7fb")))) |
| 20344 | (build-system python-build-system) |
| 20345 | (arguments |
| 20346 | `(#:phases (modify-phases %standard-phases |
| 20347 | (add-after 'unpack 'relax-requirements |
| 20348 | (lambda _ |
| 20349 | (substitute* "setup.py" |
| 20350 | ((".*'future'.*") |
| 20351 | "") |
| 20352 | (("mando>=0\\.6,<0\\.7") |
| 20353 | "mando>=0.6") |
| 20354 | (("colorama==0.4.1") |
| 20355 | "colorama>=0.4.1")))) |
| 20356 | (replace 'check |
| 20357 | (lambda _ |
| 20358 | (invoke "python" "radon/tests/run.py")))))) |
| 20359 | (propagated-inputs (list python-colorama python-mando)) |
| 20360 | (native-inputs (list python-pytest python-pytest-mock)) |
| 20361 | (home-page "https://radon.readthedocs.org/") |
| 20362 | (synopsis "Code Metrics in Python") |
| 20363 | (description "Radon is a Python tool which computes various code metrics. |
| 20364 | Supported metrics are: |
| 20365 | @itemize @bullet |
| 20366 | @item raw metrics: SLOC, comment lines, blank lines, &c. |
| 20367 | @item Cyclomatic Complexity (i.e., McCabe’s Complexity) |
| 20368 | @item Halstead metrics (all of them) |
| 20369 | @item the Maintainability Index (a Visual Studio metric) |
| 20370 | @end itemize") |
| 20371 | (license license:expat))) |
| 20372 | |
| 20373 | (define-public python-sure |
| 20374 | (package |
| 20375 | (name "python-sure") |
| 20376 | (version "1.4.11") |
| 20377 | (source |
| 20378 | (origin |
| 20379 | (method url-fetch) |
| 20380 | (uri (pypi-uri "sure" version)) |
| 20381 | (sha256 |
| 20382 | (base32 |
| 20383 | "1and0drq8w9iplsic22n2h7hkpyq03a1mbqk4sgcdqhqzdqm539w")))) |
| 20384 | (build-system python-build-system) |
| 20385 | (propagated-inputs |
| 20386 | (list python-mock python-six)) |
| 20387 | (native-inputs |
| 20388 | (list python-nose)) |
| 20389 | (home-page "https://github.com/gabrielfalcao/sure") |
| 20390 | (synopsis "Automated testing library in python for python") |
| 20391 | (description |
| 20392 | "Sure is a python library that leverages a DSL for writing assertions. |
| 20393 | Sure is heavily inspired by @code{RSpec Expectations} and @code{should.js}.") |
| 20394 | (license license:gpl3+))) |
| 20395 | |
| 20396 | (define-public python-misaka |
| 20397 | (package |
| 20398 | (name "python-misaka") |
| 20399 | (version "2.1.1") |
| 20400 | (source |
| 20401 | (origin |
| 20402 | (method url-fetch) |
| 20403 | (uri (pypi-uri "misaka" version)) |
| 20404 | (sha256 |
| 20405 | (base32 |
| 20406 | "1mzc29wwyhyardclj1vg2xsfdibg2lzb7f1azjcxi580ama55wv2")))) |
| 20407 | (build-system python-build-system) |
| 20408 | (arguments |
| 20409 | `(;; Line 37 of setup.py calls self.run_command('develop') |
| 20410 | ;; in the 'check' phase. This command seems to be trying |
| 20411 | ;; to write to |
| 20412 | ;; /gnu/store/...-python-<version>/lib/python<version>/site-packages/ |
| 20413 | ;; for which it does not have the permission to write. |
| 20414 | #:tests? #f)) |
| 20415 | (propagated-inputs |
| 20416 | (list python-cffi)) |
| 20417 | (home-page "https://github.com/FSX/misaka") |
| 20418 | (synopsis "Python binding for Hoedown") |
| 20419 | (description |
| 20420 | "@code{Misaka} is a CFFI-based binding for @code{Hoedown}, a fast markdown processing |
| 20421 | library written in C. It features a fast HTML renderer and functionality to make custom |
| 20422 | renderers (e.g. man pages or LaTeX).") |
| 20423 | (license license:expat))) |
| 20424 | |
| 20425 | (define-public python-jsonpointer |
| 20426 | (package |
| 20427 | (name "python-jsonpointer") |
| 20428 | (version "1.10") |
| 20429 | (source |
| 20430 | (origin |
| 20431 | (method url-fetch) |
| 20432 | (uri (pypi-uri "jsonpointer" version)) |
| 20433 | (sha256 |
| 20434 | (base32 |
| 20435 | "1cg0gvgqjysydv6p45v4jywg1jb3v48c7m3cbpi57zgf6nndr9cz")))) |
| 20436 | (build-system python-build-system) |
| 20437 | (home-page "https://github.com/stefankoegl/python-json-pointer") |
| 20438 | (synopsis "Identify specific nodes in a JSON document") |
| 20439 | (description "@code{jsonpointer} allows you to access specific nodes |
| 20440 | by path in a JSON document (see RFC 6901).") |
| 20441 | (license license:bsd-3))) |
| 20442 | |
| 20443 | (define-public python-jsonpatch |
| 20444 | (package |
| 20445 | (name "python-jsonpatch") |
| 20446 | (version "1.16") |
| 20447 | (source |
| 20448 | (origin |
| 20449 | (method git-fetch) |
| 20450 | ;; pypi version lacks tests.js |
| 20451 | (uri (git-reference |
| 20452 | (url "https://github.com/stefankoegl/python-json-patch") |
| 20453 | (commit (string-append "v" version)))) |
| 20454 | (file-name (git-file-name name version)) |
| 20455 | (sha256 |
| 20456 | (base32 |
| 20457 | "0k9pff06lxama3nhsc7cdxbp83422bdy8ifs52i6xkas8hpyzfzr")))) |
| 20458 | (build-system python-build-system) |
| 20459 | (propagated-inputs |
| 20460 | (list python-jsonpointer)) |
| 20461 | (home-page "https://github.com/stefankoegl/python-json-patch") |
| 20462 | (synopsis "Applying JSON Patches in Python 2.6+ and 3.x") |
| 20463 | (description "@code{jsonpatch} is a library and program that allows |
| 20464 | applying JSON Patches according to RFC 6902.") |
| 20465 | (license license:bsd-3))) |
| 20466 | |
| 20467 | (define-public python-jsonpatch-0.4 |
| 20468 | (package (inherit python-jsonpatch) |
| 20469 | (name "python-jsonpatch") |
| 20470 | (version "0.4") |
| 20471 | (source |
| 20472 | (origin |
| 20473 | (method git-fetch) |
| 20474 | (uri (git-reference |
| 20475 | (url "https://github.com/stefankoegl/python-json-patch") |
| 20476 | (commit (string-append "v" version)))) |
| 20477 | (file-name (git-file-name name version)) |
| 20478 | (sha256 |
| 20479 | (base32 |
| 20480 | "1fq02y57kinyknxjcav0slcb0k9mwdffqw2hnlhdkpj7palh2mwk")))))) |
| 20481 | |
| 20482 | (define-public python-rfc3986 |
| 20483 | (package |
| 20484 | (name "python-rfc3986") |
| 20485 | (version "1.4.0") |
| 20486 | (source (origin |
| 20487 | (method url-fetch) |
| 20488 | (uri (pypi-uri "rfc3986" version)) |
| 20489 | (sha256 |
| 20490 | (base32 |
| 20491 | "17dvx15m3r49bmif5zlli8kzjd6bys6psixzbp14sd5367d9h8qi")))) |
| 20492 | (build-system python-build-system) |
| 20493 | (arguments |
| 20494 | `(#:phases |
| 20495 | (modify-phases %standard-phases |
| 20496 | (replace 'check |
| 20497 | (lambda _ |
| 20498 | (invoke "pytest" "-v")))))) |
| 20499 | (native-inputs |
| 20500 | (list python-pytest)) |
| 20501 | (home-page "https://rfc3986.readthedocs.io/") |
| 20502 | (synopsis "Parse and validate URI references") |
| 20503 | (description |
| 20504 | "@code{rfc3986} is a Python implementation of RFC@tie{}3986 including |
| 20505 | validation and authority parsing. This module also supports RFC@tie{}6874 |
| 20506 | which adds support for zone identifiers to IPv6 addresses.") |
| 20507 | (license license:asl2.0))) |
| 20508 | |
| 20509 | (define-public python-rfc3987 |
| 20510 | (package |
| 20511 | (name "python-rfc3987") |
| 20512 | (version "1.3.7") |
| 20513 | (source |
| 20514 | (origin |
| 20515 | (method url-fetch) |
| 20516 | (uri (pypi-uri "rfc3987" version)) |
| 20517 | (sha256 |
| 20518 | (base32 |
| 20519 | "192pclzs2y0yaywqkrlvd0x73740q310kvqvm6jldhi619mq59wi")))) |
| 20520 | (build-system python-build-system) |
| 20521 | (home-page "https://pypi.org/project/rfc3987/") |
| 20522 | (synopsis "Parsing and validation of URIs (RFC 3986) and IRIs (RFC 3987)") |
| 20523 | (description "@code{rfc3987} provides routines for parsing and |
| 20524 | validation of URIs (see RFC 3986) and IRIs (see RFC 3987).") |
| 20525 | (license license:gpl3+))) |
| 20526 | |
| 20527 | ;; The latest commit contains fixes for building with both python3 and python2. |
| 20528 | (define-public python-rfc6555 |
| 20529 | (let ((commit "1a181b432312731f6742a5eb558dae4761d32361") |
| 20530 | (revision "1")) |
| 20531 | (package |
| 20532 | (name "python-rfc6555") |
| 20533 | (version (git-version "0.0.0" revision commit)) |
| 20534 | (source (origin |
| 20535 | (method git-fetch) |
| 20536 | (uri (git-reference |
| 20537 | (url "https://github.com/sethmlarson/rfc6555") |
| 20538 | (commit commit))) |
| 20539 | (file-name (git-file-name name version)) |
| 20540 | (sha256 |
| 20541 | (base32 |
| 20542 | "1bxl17j9vs69cshcqnlwamr03hnykxqnwz3mdgi6x3s2k4q18npp")))) |
| 20543 | (build-system python-build-system) |
| 20544 | (arguments |
| 20545 | '(#:phases |
| 20546 | (modify-phases %standard-phases |
| 20547 | (replace 'check |
| 20548 | (lambda* (#:key tests? #:allow-other-keys) |
| 20549 | (if tests? |
| 20550 | ;; Other tests require network access. |
| 20551 | (invoke "pytest" "tests/test_ipv6.py") |
| 20552 | #t)))))) |
| 20553 | (native-inputs |
| 20554 | (list python-pytest)) |
| 20555 | (home-page "https://pypi.org/project/rfc6555/") |
| 20556 | (synopsis "Python implementation of RFC 6555") |
| 20557 | (description |
| 20558 | "Python implementation of the Happy Eyeballs Algorithm described in RFC |
| 20559 | 6555. Provided with a single file and dead-simple API to allow easy vendoring |
| 20560 | and integration into other projects.") |
| 20561 | (license license:asl2.0)))) |
| 20562 | |
| 20563 | (define-public python-bagit |
| 20564 | (package |
| 20565 | (name "python-bagit") |
| 20566 | (version "1.7.0") |
| 20567 | (source |
| 20568 | (origin |
| 20569 | (method url-fetch) |
| 20570 | (uri (pypi-uri "bagit" version)) |
| 20571 | (sha256 |
| 20572 | (base32 |
| 20573 | "1m6y04qmig0b5hzb35lnaw3d2yfydb7alyr1579yblvgs3da6j7j")))) |
| 20574 | (build-system python-build-system) |
| 20575 | (native-inputs |
| 20576 | (list python-setuptools-scm python-coverage python-mock)) |
| 20577 | (home-page "https://libraryofcongress.github.io/bagit-python/") |
| 20578 | (synopsis "Create and validate BagIt packages") |
| 20579 | (description "Bagit is a Python library and command line utility for working |
| 20580 | with BagIt style packages. BagIt is a minimalist packaging format for digital |
| 20581 | preservation.") |
| 20582 | (license license:cc0))) |
| 20583 | |
| 20584 | (define-public python-prov |
| 20585 | (package |
| 20586 | (name "python-prov") |
| 20587 | (version "2.0.0") |
| 20588 | (source |
| 20589 | (origin |
| 20590 | (method url-fetch) |
| 20591 | (uri (pypi-uri "prov" version)) |
| 20592 | (sha256 |
| 20593 | (base32 |
| 20594 | "1vi2fj31vygfcqrkimdmk52q2ldw08g9fn4v4zlgdfgcjlhqyhxn")))) |
| 20595 | (build-system python-build-system) |
| 20596 | (propagated-inputs |
| 20597 | (list python-dateutil python-lxml python-networkx python-rdflib-5)) |
| 20598 | (native-inputs |
| 20599 | (list graphviz python-pydot)) |
| 20600 | (home-page "https://github.com/trungdong/prov") |
| 20601 | (synopsis |
| 20602 | "W3C Provenance Data Model supporting PROV-JSON, PROV-XML and PROV-O (RDF)") |
| 20603 | (description |
| 20604 | "This package provides a library for W3C Provenance Data Model supporting |
| 20605 | PROV-O (RDF), PROV-XML, PROV-JSON import/export.") |
| 20606 | (license license:expat))) |
| 20607 | |
| 20608 | (define-public python-arcp |
| 20609 | (package |
| 20610 | (name "python-arcp") |
| 20611 | (version "0.2.1") |
| 20612 | (source |
| 20613 | (origin |
| 20614 | (method url-fetch) |
| 20615 | (uri (pypi-uri "arcp" version)) |
| 20616 | (sha256 |
| 20617 | (base32 |
| 20618 | "1p8mfyjssa6pbn5dp6pyzv9yy6kwm2rz5jn2kjbq5vy9f9wsq5sw")))) |
| 20619 | (build-system python-build-system) |
| 20620 | (native-inputs |
| 20621 | (list python-pytest)) |
| 20622 | (home-page "http://arcp.readthedocs.io/") |
| 20623 | (synopsis |
| 20624 | "Archive and Package URI parser and generator") |
| 20625 | (description |
| 20626 | "@acronym{arcp, Archive and Package} provides functions for creating |
| 20627 | @code{arcp_} URIs, which can be used for identifying or parsing hypermedia files |
| 20628 | packaged in an archive or package, like a ZIP file. arcp URIs can be used to |
| 20629 | consume or reference hypermedia resources bundled inside a file archive or an |
| 20630 | application package, as well as to resolve URIs for archive resources within a |
| 20631 | programmatic framework. This URI scheme provides mechanisms to generate a |
| 20632 | unique base URI to represent the root of the archive, so that relative URI |
| 20633 | references in a bundled resource can be resolved within the archive without |
| 20634 | having to extract the archive content on the local file system. An arcp URI can |
| 20635 | be used for purposes of isolation (e.g. when consuming multiple archives), |
| 20636 | security constraints (avoiding \"climb out\" from the archive), or for |
| 20637 | externally identiyfing sub-resources referenced by hypermedia formats.") |
| 20638 | (license license:asl2.0))) |
| 20639 | |
| 20640 | (define-public python-shellescape |
| 20641 | (package |
| 20642 | (name "python-shellescape") |
| 20643 | (version "3.8.1") |
| 20644 | (source |
| 20645 | (origin |
| 20646 | (method git-fetch) |
| 20647 | (uri (git-reference |
| 20648 | (url "https://github.com/chrissimpkins/shellescape") |
| 20649 | (commit (string-append "v" version)))) |
| 20650 | (file-name (git-file-name name version)) |
| 20651 | (sha256 |
| 20652 | (base32 |
| 20653 | "0wzccxk139qx1lb2g70f5b2yh9zq15nr2mgvqdbfabg5zm0vf1qw")))) |
| 20654 | (build-system python-build-system) |
| 20655 | (arguments |
| 20656 | '(#:phases |
| 20657 | (modify-phases %standard-phases |
| 20658 | (replace 'check |
| 20659 | (lambda* (#:key tests? inputs outputs #:allow-other-keys) |
| 20660 | (when tests? |
| 20661 | (add-installed-pythonpath inputs outputs) |
| 20662 | (invoke "python" "tests/test_shellescape.py")) |
| 20663 | #t))))) |
| 20664 | (native-inputs |
| 20665 | (list python-pytest)) |
| 20666 | (home-page "https://github.com/chrissimpkins/shellescape") |
| 20667 | (synopsis |
| 20668 | "Shell escape a string to safely use it as a token in a shell command") |
| 20669 | (description |
| 20670 | "The shellescape Python module defines the @code{shellescape.quote()} |
| 20671 | function that returns a shell-escaped version of a Python string. This is a |
| 20672 | backport of the @code{shlex.quote()} function from Python 3.8 that makes it |
| 20673 | accessible to users of Python 3 versions < 3.3 and all Python 2.x versions.") |
| 20674 | (license license:expat))) |
| 20675 | |
| 20676 | (define-public python-validators |
| 20677 | (package |
| 20678 | (name "python-validators") |
| 20679 | (version "0.18.2") |
| 20680 | (source (origin |
| 20681 | (method url-fetch) |
| 20682 | (uri (pypi-uri "validators" version)) |
| 20683 | (sha256 |
| 20684 | (base32 |
| 20685 | "19lypf7hm7p203ay3v8zmckc5rv6889zkfdm16nki1972f99mk9p")))) |
| 20686 | (build-system python-build-system) |
| 20687 | (arguments |
| 20688 | '(#:phases (modify-phases %standard-phases |
| 20689 | (replace 'check |
| 20690 | (lambda _ |
| 20691 | (invoke "pytest" "-vv")))))) |
| 20692 | (propagated-inputs |
| 20693 | (list python-decorator python-six)) |
| 20694 | (native-inputs |
| 20695 | (list python-flake8 python-isort python-pytest)) |
| 20696 | (home-page "https://github.com/kvesteri/validators") |
| 20697 | (synopsis "Data validation library") |
| 20698 | (description |
| 20699 | "This package contains validators for different things such as email |
| 20700 | addresses, IP addresses, URLs, hashes and more. It has been designed to |
| 20701 | be easy to use and not require defining a schema or form just to validate |
| 20702 | some input.") |
| 20703 | (license license:expat))) |
| 20704 | |
| 20705 | (define-public python-validate-email |
| 20706 | (package |
| 20707 | (name "python-validate-email") |
| 20708 | (version "1.3") |
| 20709 | (source |
| 20710 | (origin |
| 20711 | (method url-fetch) |
| 20712 | (uri (pypi-uri "validate_email" version)) |
| 20713 | (sha256 |
| 20714 | (base32 |
| 20715 | "1bxffaf5yz2cph8ki55vdvdypbwkvn2xr1firlcy62vqbzf1jivq")))) |
| 20716 | (build-system python-build-system) |
| 20717 | (home-page "https://github.com/syrusakbary/validate_email") |
| 20718 | (synopsis "Verifies if an email address is valid and really exists") |
| 20719 | (description "@code{validate_email} can be used to verify if an email |
| 20720 | address is valid and really exists.") |
| 20721 | (license license:lgpl3+))) |
| 20722 | |
| 20723 | (define-public python-flex |
| 20724 | (package |
| 20725 | (name "python-flex") |
| 20726 | (version "6.10.0") |
| 20727 | (source |
| 20728 | (origin |
| 20729 | (method url-fetch) |
| 20730 | (uri (pypi-uri "flex" version)) |
| 20731 | (sha256 |
| 20732 | (base32 |
| 20733 | "00pamnwla3khk8nyla7y28dq9jnh69swd7f4jfsl7sn1izs8n8zk")))) |
| 20734 | (build-system python-build-system) |
| 20735 | (propagated-inputs |
| 20736 | (list python-click |
| 20737 | python-iso8601 |
| 20738 | python-jsonpointer |
| 20739 | python-pyyaml |
| 20740 | python-requests |
| 20741 | python-rfc3987 |
| 20742 | python-six |
| 20743 | python-validate-email)) |
| 20744 | (home-page "https://github.com/pipermerriam/flex") |
| 20745 | (synopsis "Validates Swagger schemata") |
| 20746 | (description "@code{flex} can be used to validate Swagger schemata.") |
| 20747 | (license license:bsd-3))) |
| 20748 | |
| 20749 | (define-public python-marshmallow |
| 20750 | (package |
| 20751 | (name "python-marshmallow") |
| 20752 | (version "3.9.1") |
| 20753 | (source |
| 20754 | (origin |
| 20755 | (method url-fetch) |
| 20756 | (uri (pypi-uri "marshmallow" version)) |
| 20757 | (sha256 |
| 20758 | (base32 |
| 20759 | "0kizhh3mnhpa08wfnsv1gagy22bpxzxszgbiylkhpz1d8qvwrykk")))) |
| 20760 | (build-system python-build-system) |
| 20761 | (propagated-inputs |
| 20762 | (list python-dateutil python-simplejson)) |
| 20763 | (native-inputs |
| 20764 | (list python-pytest python-pytz)) |
| 20765 | (home-page "https://github.com/marshmallow-code/marshmallow") |
| 20766 | (synopsis "Convert complex datatypes to and from native |
| 20767 | Python datatypes") |
| 20768 | (description "@code{marshmallow} provides a library for converting |
| 20769 | complex datatypes to and from native Python datatypes.") |
| 20770 | (license license:expat))) |
| 20771 | |
| 20772 | (define-public python-marshmallow-jsonapi |
| 20773 | (package |
| 20774 | (name "python-marshmallow-jsonapi") |
| 20775 | (version "0.24.0") |
| 20776 | (source |
| 20777 | (origin |
| 20778 | (method url-fetch) |
| 20779 | (uri (pypi-uri "marshmallow-jsonapi" version)) |
| 20780 | (sha256 |
| 20781 | (base32 "1d9pxcgmln4gls99vwj1h24qv0lz7fb2jqmqrsiv1pid1snc125x")))) |
| 20782 | (build-system python-build-system) |
| 20783 | (propagated-inputs |
| 20784 | (list python-marshmallow)) |
| 20785 | (native-inputs |
| 20786 | (list python-faker |
| 20787 | python-flake8 |
| 20788 | python-flake8-bugbear |
| 20789 | python-flask |
| 20790 | python-mock |
| 20791 | python-pre-commit |
| 20792 | python-pytest |
| 20793 | python-tox)) |
| 20794 | (home-page "https://github.com/marshmallow-code/marshmallow-jsonapi") |
| 20795 | (synopsis "JSON:API 1.0 formatting with Marshmallow") |
| 20796 | (description |
| 20797 | "The marshmallow-jsonapi package provides a simple way to produce |
| 20798 | @uref{https://jsonapi.org, JSON:API}-compliant data in any Python Web framework. |
| 20799 | It includes optional utilities to integrate with Flask.") |
| 20800 | (license license:expat))) |
| 20801 | |
| 20802 | (define-public python-apispec |
| 20803 | (package |
| 20804 | (name "python-apispec") |
| 20805 | (version "4.0.0") |
| 20806 | (source |
| 20807 | (origin |
| 20808 | (method url-fetch) |
| 20809 | (uri (pypi-uri "apispec" version)) |
| 20810 | (sha256 |
| 20811 | (base32 |
| 20812 | "12n4w5zkn4drcn8izq68vmixmqvz6abviqkdn4ip0kaax3jjh3in")))) |
| 20813 | (build-system python-build-system) |
| 20814 | (arguments |
| 20815 | '(#:phases (modify-phases %standard-phases |
| 20816 | (replace 'check |
| 20817 | (lambda _ |
| 20818 | (invoke "pytest" "-vv" |
| 20819 | ;; Disable validation tests since they require |
| 20820 | ;; the optional 'prance' library which is not |
| 20821 | ;; yet in Guix. |
| 20822 | "-k" "not openapi_tools_validate")))))) |
| 20823 | (propagated-inputs |
| 20824 | (list python-pyyaml)) |
| 20825 | (native-inputs |
| 20826 | (list python-pytest python-marshmallow)) |
| 20827 | (home-page "https://github.com/marshmallow-code/apispec") |
| 20828 | (synopsis "Swagger/OpenAPI specification generator") |
| 20829 | (description "@code{python-apispec} is a pluggable API specification |
| 20830 | generator. It currently supports the OpenAPI specification, formerly known |
| 20831 | as Swagger.") |
| 20832 | (license license:expat))) |
| 20833 | |
| 20834 | (define-public python-flasgger |
| 20835 | (package |
| 20836 | (name "python-flasgger") |
| 20837 | (version "0.6.3") |
| 20838 | (source |
| 20839 | (origin |
| 20840 | (method git-fetch) |
| 20841 | (uri (git-reference |
| 20842 | (url "https://github.com/rochacbruno/flasgger") |
| 20843 | (commit version))) |
| 20844 | (file-name (git-file-name name version)) |
| 20845 | (sha256 |
| 20846 | (base32 "0yydxsyjnc0clbrjqb1n7587l6cdqvwdagwxk5hkx01qwdfbkvpn")))) |
| 20847 | (build-system python-build-system) |
| 20848 | (arguments |
| 20849 | `(#:phases |
| 20850 | (modify-phases %standard-phases |
| 20851 | (replace 'check |
| 20852 | (lambda* (#:key inputs outputs #:allow-other-keys) |
| 20853 | (substitute* "Makefile" |
| 20854 | (("flake8 flasgger --ignore=F403") |
| 20855 | "flake8 flasgger --ignore=E731,F403")) |
| 20856 | (invoke "py.test")))))) |
| 20857 | (propagated-inputs |
| 20858 | (list python-flask python-pyyaml python-jsonschema python-mistune |
| 20859 | python-six)) |
| 20860 | (native-inputs |
| 20861 | (list python-decorator |
| 20862 | python-flake8 |
| 20863 | python-flask-restful |
| 20864 | python-flex |
| 20865 | python-pytest |
| 20866 | python-pytest-cov |
| 20867 | python-marshmallow |
| 20868 | python-apispec)) |
| 20869 | (home-page "https://github.com/rochacbruno/flasgger/") |
| 20870 | (synopsis "Extract Swagger specs from your Flask project") |
| 20871 | (description "@code{python-flasgger} allows extracting Swagger specs |
| 20872 | from your Flask project. It is a fork of Flask-Swagger.") |
| 20873 | (license license:expat))) |
| 20874 | |
| 20875 | (define-public python-swagger-spec-validator |
| 20876 | (package |
| 20877 | (name "python-swagger-spec-validator") |
| 20878 | (version "2.4.3") |
| 20879 | (source |
| 20880 | (origin |
| 20881 | (method url-fetch) |
| 20882 | (uri (pypi-uri "swagger-spec-validator" version)) |
| 20883 | (sha256 |
| 20884 | (base32 |
| 20885 | "11g627icrsqwazsncwi0sdvprcj6hwaayw5xk3xsj8d97bmrzqjp")))) |
| 20886 | (build-system python-build-system) |
| 20887 | (propagated-inputs |
| 20888 | (list python-jsonschema python-pyyaml python-six)) |
| 20889 | (home-page |
| 20890 | "https://github.com/Yelp/swagger_spec_validator") |
| 20891 | (synopsis "Validation of Swagger specifications") |
| 20892 | (description "@code{swagger_spec_validator} provides a library for |
| 20893 | validating Swagger API specifications.") |
| 20894 | (license license:asl2.0))) |
| 20895 | |
| 20896 | (define-public python-apache-libcloud |
| 20897 | (package |
| 20898 | (name "python-apache-libcloud") |
| 20899 | (version "3.1.0") |
| 20900 | (source |
| 20901 | (origin |
| 20902 | (method url-fetch) |
| 20903 | (uri (pypi-uri "apache-libcloud" version)) |
| 20904 | (sha256 |
| 20905 | (base32 |
| 20906 | "1b28j265kvibgxrgxx0gwfm6cmv252c8ph1j2vb0cpms8ph5if5v")))) |
| 20907 | (build-system python-build-system) |
| 20908 | (arguments |
| 20909 | '(#:phases |
| 20910 | (modify-phases %standard-phases |
| 20911 | (add-after 'unpack 'patch-ssh |
| 20912 | (lambda* (#:key inputs #:allow-other-keys) |
| 20913 | (substitute* "libcloud/compute/ssh.py" |
| 20914 | (("'ssh'") |
| 20915 | (string-append "'" (search-input-file inputs "/bin/ssh") |
| 20916 | "'"))))) |
| 20917 | (add-after 'unpack 'patch-tests |
| 20918 | (lambda _ |
| 20919 | (substitute* "libcloud/test/compute/test_ssh_client.py" |
| 20920 | (("^class ShellOutSSHClientTests") |
| 20921 | "@unittest.skip(\"Guix container doesn't have ssh service\") |
| 20922 | class ShellOutSSHClientTests")))) |
| 20923 | (add-before 'check 'copy-secret |
| 20924 | (lambda _ |
| 20925 | (copy-file "libcloud/test/secrets.py-dist" |
| 20926 | "libcloud/test/secrets.py")))))) |
| 20927 | (inputs |
| 20928 | (list openssh)) |
| 20929 | (propagated-inputs |
| 20930 | (list python-paramiko python-requests)) |
| 20931 | (native-inputs |
| 20932 | (list python-lockfile python-mock python-pytest python-pytest-runner |
| 20933 | python-requests-mock)) |
| 20934 | (home-page "https://libcloud.apache.org/") |
| 20935 | (synopsis "Unified Cloud API") |
| 20936 | (description "@code{libcloud} is a Python library for interacting with |
| 20937 | many of the popular cloud service providers using a unified API.") |
| 20938 | (license license:asl2.0))) |
| 20939 | |
| 20940 | (define-public python-smmap |
| 20941 | (package |
| 20942 | (name "python-smmap") |
| 20943 | (version "3.0.1") |
| 20944 | (source |
| 20945 | (origin |
| 20946 | (method url-fetch) |
| 20947 | (uri (pypi-uri "smmap" version)) |
| 20948 | (sha256 |
| 20949 | (base32 "0ijlnv60y8f41py1wnn5n1a1i81cxd9dfpdhr0k3cgkrcbz8850p")))) |
| 20950 | (build-system python-build-system) |
| 20951 | (native-inputs |
| 20952 | (list python-nosexcover)) |
| 20953 | (home-page "https://github.com/Byron/smmap") |
| 20954 | (synopsis "Python sliding window memory map manager") |
| 20955 | (description "@code{smmap} is a pure Python implementation of a sliding |
| 20956 | window memory map manager.") |
| 20957 | (license license:bsd-3))) |
| 20958 | |
| 20959 | (define-public python-regex |
| 20960 | (package |
| 20961 | (name "python-regex") |
| 20962 | (version "2022.1.18") |
| 20963 | (source (origin |
| 20964 | (method url-fetch) |
| 20965 | (uri (pypi-uri "regex" version)) |
| 20966 | (sha256 |
| 20967 | (base32 |
| 20968 | "05ir92d0cmv8wkafn3r05j5q47l6shg7cpdblp2a8m407b02vwwp")))) |
| 20969 | (build-system python-build-system) |
| 20970 | (arguments |
| 20971 | '(#:phases |
| 20972 | (modify-phases %standard-phases |
| 20973 | (replace 'check |
| 20974 | (lambda* (#:key inputs outputs #:allow-other-keys) |
| 20975 | (add-installed-pythonpath inputs outputs) |
| 20976 | (invoke "python" "-c" |
| 20977 | "from regex.test_regex import test_main ; test_main()")))))) |
| 20978 | (home-page "https://bitbucket.org/mrabarnett/mrab-regex") |
| 20979 | (synopsis "Alternative regular expression module") |
| 20980 | (description "This regular expression implementation is backwards- |
| 20981 | compatible with the standard @code{re} module, but offers additional |
| 20982 | functionality like full case-folding for case-insensitive matches in Unicode.") |
| 20983 | (license license:psfl))) |
| 20984 | |
| 20985 | (define-public python-pyopengl |
| 20986 | (package |
| 20987 | (name "python-pyopengl") |
| 20988 | (version "3.1.5") |
| 20989 | (source |
| 20990 | (origin |
| 20991 | (method url-fetch) |
| 20992 | (uri (pypi-uri "PyOpenGL" version)) |
| 20993 | (sha256 |
| 20994 | (base32 |
| 20995 | "091lp9bpqi8yf1nmyg19xmvw611lrzq2q94cl1k5gnlh0c6vl1s1")))) |
| 20996 | (build-system python-build-system) |
| 20997 | (inputs |
| 20998 | (list mesa freeglut glu)) |
| 20999 | (arguments |
| 21000 | `(#:tests? #f ; Tests fail: AttributeError: 'GLXPlatform' object has no |
| 21001 | ;attribute 'OSMesa' |
| 21002 | #:phases |
| 21003 | (modify-phases %standard-phases |
| 21004 | (add-before 'build 'fix-paths |
| 21005 | (lambda* (#:key inputs outputs #:allow-other-keys) |
| 21006 | (substitute* '("OpenGL/platform/ctypesloader.py") |
| 21007 | (("filenames_to_try = \\[\\]") "filenames_to_try = [name]")) |
| 21008 | (substitute* '("OpenGL/platform/glx.py" "tests/check_glut_load.py") |
| 21009 | (("'GL'") |
| 21010 | (string-append "'" (assoc-ref inputs "mesa") "/lib/libGL.so'")) |
| 21011 | (("'GLU'") |
| 21012 | (string-append "'" (assoc-ref inputs "glu") "/lib/libGLU.so'")) |
| 21013 | (("'glut',") |
| 21014 | (string-append "'" (assoc-ref inputs "freeglut") "/lib/libglut.so',")) |
| 21015 | (("'GLESv1_CM'") |
| 21016 | (string-append "'" (assoc-ref inputs "mesa") "/lib/libGLESv1_CM.so'")) |
| 21017 | (("'GLESv2'") |
| 21018 | (string-append "'" (assoc-ref inputs "mesa") "/lib/libGLESv2.so'"))) |
| 21019 | ;; Not providing libgle. It seems to be very old. |
| 21020 | #t))))) |
| 21021 | (home-page "http://pyopengl.sourceforge.net") |
| 21022 | (synopsis "Standard OpenGL bindings for Python") |
| 21023 | (description |
| 21024 | "PyOpenGL is the most common cross platform Python binding to OpenGL and |
| 21025 | related APIs. The binding is created using the standard @code{ctypes} |
| 21026 | library.") |
| 21027 | (license license:bsd-3))) |
| 21028 | |
| 21029 | (define-public python-pyopengl-accelerate |
| 21030 | (package |
| 21031 | (inherit python-pyopengl) |
| 21032 | (name "python-pyopengl-accelerate") |
| 21033 | (version "3.1.5") |
| 21034 | (source |
| 21035 | (origin |
| 21036 | (method url-fetch) |
| 21037 | (uri (pypi-uri "PyOpenGL-accelerate" version)) |
| 21038 | (sha256 |
| 21039 | (base32 |
| 21040 | "01iggy5jwxv7lxnj51zbmlbhag9wcb7dvrbwgi97i90n0a5m3r8j")))) |
| 21041 | (inputs |
| 21042 | (list mesa python-numpy)) ; for cython module |
| 21043 | ; numpy_formathandler, thus not propagated |
| 21044 | (arguments |
| 21045 | `(#:tests? #f |
| 21046 | #:phases |
| 21047 | (modify-phases %standard-phases |
| 21048 | (delete 'fix-paths)))) |
| 21049 | (synopsis "Acceleration code for PyOpenGL") |
| 21050 | (description |
| 21051 | "This is the Cython-coded accelerator module for PyOpenGL."))) |
| 21052 | |
| 21053 | (define-public python-rencode |
| 21054 | (package |
| 21055 | (name "python-rencode") |
| 21056 | (version "1.0.5") |
| 21057 | (source |
| 21058 | (origin |
| 21059 | (method url-fetch) |
| 21060 | (uri (pypi-uri "rencode" version)) |
| 21061 | (sha256 |
| 21062 | (base32 |
| 21063 | "0mzwdq1is7kyyr32i5k4iz6g5xxdvmiyc132jnc60p9m6lnwjrpv")))) |
| 21064 | (build-system python-build-system) |
| 21065 | (arguments |
| 21066 | `(#:phases |
| 21067 | (modify-phases %standard-phases |
| 21068 | (add-before 'check 'delete-bogus-test |
| 21069 | ;; This test requires /home/aresch/Downloads, which is not provided by |
| 21070 | ;; the build environment. |
| 21071 | (lambda _ |
| 21072 | (delete-file "rencode/t.py") |
| 21073 | #t))))) |
| 21074 | (native-inputs (list pkg-config python-cython)) |
| 21075 | (home-page "https://github.com/aresch/rencode") |
| 21076 | (synopsis "Serialization of heterogeneous data structures") |
| 21077 | (description |
| 21078 | "The @code{rencode} module is a data structure serialization library, |
| 21079 | similar to @code{bencode} from the BitTorrent project. For complex, |
| 21080 | heterogeneous data structures with many small elements, r-encoding stake up |
| 21081 | significantly less space than b-encodings. This version of rencode is a |
| 21082 | complete rewrite in Cython to attempt to increase the performance over the |
| 21083 | pure Python module.") |
| 21084 | (license license:bsd-3))) |
| 21085 | |
| 21086 | (define-public python-pysocks |
| 21087 | (package |
| 21088 | (name "python-pysocks") |
| 21089 | (version "1.7.1") |
| 21090 | (source |
| 21091 | (origin |
| 21092 | (method url-fetch) |
| 21093 | (uri (pypi-uri "PySocks" version)) |
| 21094 | (sha256 |
| 21095 | (base32 |
| 21096 | "184sg65mbmih6ljblfsxcmq5js5l7dj3gpn618w9q5dy3rbh921z")))) |
| 21097 | (build-system python-build-system) |
| 21098 | (arguments `(#:tests? #f)) |
| 21099 | (home-page "https://github.com/Anorov/PySocks") |
| 21100 | (synopsis "SOCKS client module") |
| 21101 | (description "@code{pysocks} is an updated and semi-actively maintained |
| 21102 | version of @code{SocksiPy} with bug fixes and extra features.") |
| 21103 | (license license:bsd-3))) |
| 21104 | |
| 21105 | (define-public python-pydiff |
| 21106 | (package |
| 21107 | (name "python-pydiff") |
| 21108 | (version "0.2") |
| 21109 | (source |
| 21110 | (origin |
| 21111 | (method url-fetch) |
| 21112 | (uri (pypi-uri "pydiff" version)) |
| 21113 | (sha256 |
| 21114 | (base32 |
| 21115 | "1als83h9w0gab24ipyna6khm390qmpnpkc5jksmdbs2xc8hp2z44")))) |
| 21116 | (build-system python-build-system) |
| 21117 | (home-page "https://github.com/myint/pydiff") |
| 21118 | (synopsis "Library to diff two Python files at the bytecode level") |
| 21119 | (description |
| 21120 | "@code{pydiff} makes it easy to look for actual code changes while |
| 21121 | ignoring formatting changes.") |
| 21122 | (license license:expat))) |
| 21123 | |
| 21124 | (define-public python-pydub |
| 21125 | (package |
| 21126 | (name "python-pydub") |
| 21127 | (version "0.25.1") |
| 21128 | (source |
| 21129 | (origin |
| 21130 | (method url-fetch) |
| 21131 | (uri (pypi-uri "pydub" version)) |
| 21132 | (sha256 |
| 21133 | (base32 |
| 21134 | "03ykn2kp6qglsrzqi5h79z5cp3kl9mknasv0d6jv5jj9k77362lq")))) |
| 21135 | (build-system python-build-system) |
| 21136 | (arguments |
| 21137 | `(#:phases |
| 21138 | (modify-phases %standard-phases |
| 21139 | (add-after 'unpack 'fix-ffmpeg-path |
| 21140 | (lambda* (#:key inputs #:allow-other-keys) |
| 21141 | (let ((ffmpeg (assoc-ref inputs "ffmpeg"))) |
| 21142 | (substitute* '("pydub/utils.py") |
| 21143 | (("return \"ffmpeg\"") |
| 21144 | (string-append "return \"" ffmpeg "/bin/ffmpeg\"")) |
| 21145 | (("return \"ffplay\"") |
| 21146 | (string-append "return \"" ffmpeg "/bin/ffplay\"")) |
| 21147 | (("return \"ffprobe\"") |
| 21148 | (string-append "return \"" ffmpeg "/bin/ffprobe\"")) |
| 21149 | (("warn\\(\"Couldn't find ff") "# warn\\(\"Couldn't find ff")) |
| 21150 | #t)))))) |
| 21151 | (home-page "https://pydub.com") |
| 21152 | (inputs |
| 21153 | (list ffmpeg)) |
| 21154 | (propagated-inputs |
| 21155 | (list python-scipy)) |
| 21156 | (synopsis "Manipulate audio with a high level interface in Python") |
| 21157 | (description |
| 21158 | "@code{pydub} makes it easy to manipulate audio in Python. It relies on |
| 21159 | @code{ffmpeg} to open various audio formats.") |
| 21160 | (license license:expat))) ; MIT license |
| 21161 | |
| 21162 | (define-public python-tqdm |
| 21163 | (package |
| 21164 | (name "python-tqdm") |
| 21165 | (version "4.64.1") |
| 21166 | (source |
| 21167 | (origin |
| 21168 | (method url-fetch) |
| 21169 | (uri (pypi-uri "tqdm" version)) |
| 21170 | (sha256 |
| 21171 | (base32 |
| 21172 | "1r7i9kswpnrx4ppfvzz6discb04j1rqkqxdwa2sc2la900m6hksz")))) |
| 21173 | (build-system python-build-system) |
| 21174 | (arguments |
| 21175 | '(#:phases (modify-phases %standard-phases |
| 21176 | (replace 'check |
| 21177 | (lambda _ |
| 21178 | (invoke "pytest" "-vv" |
| 21179 | "-o" "asyncio_mode=auto" |
| 21180 | "-k" "not perf")))))) |
| 21181 | (native-inputs |
| 21182 | (list python-pytest python-pytest-asyncio python-pytest-timeout |
| 21183 | python-setuptools-scm python-toml)) |
| 21184 | (home-page "https://github.com/tqdm/tqdm") |
| 21185 | (synopsis "Fast, extensible progress meter") |
| 21186 | (description |
| 21187 | "Make loops show a progress bar on the console by just wrapping any |
| 21188 | iterable with @code{|tqdm(iterable)|}. Offers many options to define |
| 21189 | design and layout.") |
| 21190 | (license (list license:mpl2.0 license:expat)))) |
| 21191 | |
| 21192 | (define-public python-pkginfo |
| 21193 | (package |
| 21194 | (name "python-pkginfo") |
| 21195 | (version "1.8.3") |
| 21196 | (source |
| 21197 | (origin |
| 21198 | (method url-fetch) |
| 21199 | (uri (pypi-uri "pkginfo" version)) |
| 21200 | (sha256 |
| 21201 | (base32 "0z46w559hrl79gf7navgzimj21ma821wka27jh58fvyqilqs8kd8")))) |
| 21202 | (build-system python-build-system) |
| 21203 | (native-inputs |
| 21204 | (list python-wheel)) |
| 21205 | (home-page "https://code.launchpad.net/~tseaver/pkginfo/trunk") |
| 21206 | (synopsis "Query metadatdata from sdists, bdists, and installed packages") |
| 21207 | (description |
| 21208 | "API to query the distutils metadata written in @file{PKG-INFO} inside a |
| 21209 | source distriubtion (an sdist) or a binary distribution (e.g., created by |
| 21210 | running bdist_egg). It can also query the EGG-INFO directory of an installed |
| 21211 | distribution, and the *.egg-info stored in a \"development checkout\" (e.g, |
| 21212 | created by running @code{python setup.py develop}).") |
| 21213 | (license license:expat))) |
| 21214 | |
| 21215 | (define-public python-twine |
| 21216 | (package |
| 21217 | (name "python-twine") |
| 21218 | (version "1.15.0") |
| 21219 | (source |
| 21220 | (origin |
| 21221 | (method url-fetch) |
| 21222 | (uri (pypi-uri "twine" version)) |
| 21223 | (sha256 |
| 21224 | (base32 "11rpd653zcgzkq3sgwkzs3mpxl3r5rij59745ni84ikv8smjmlm3")))) |
| 21225 | (build-system python-build-system) |
| 21226 | (propagated-inputs |
| 21227 | (list python-tqdm |
| 21228 | python-packaging |
| 21229 | python-pkginfo |
| 21230 | python-readme-renderer |
| 21231 | python-requests |
| 21232 | python-requests-toolbelt)) |
| 21233 | (home-page "https://github.com/pypa/twine") |
| 21234 | (synopsis "Collection of utilities for interacting with PyPI") |
| 21235 | (description |
| 21236 | "@code{twine} currently supports registering projects and uploading |
| 21237 | distributions. It authenticates the user over HTTPS, allows them to pre-sign |
| 21238 | their files and supports any packaging format (including wheels).") |
| 21239 | (license license:asl2.0))) |
| 21240 | |
| 21241 | (define-public python-linecache2 |
| 21242 | (package |
| 21243 | (name "python-linecache2") |
| 21244 | (version "1.0.0") |
| 21245 | (source |
| 21246 | (origin |
| 21247 | (method url-fetch) |
| 21248 | (uri (pypi-uri "linecache2" version)) |
| 21249 | (sha256 |
| 21250 | (base32 |
| 21251 | "0z79g3ds5wk2lvnqw0y2jpakjf32h95bd9zmnvp7dnqhf57gy9jb")))) |
| 21252 | (build-system python-build-system) |
| 21253 | (arguments |
| 21254 | `(;; The tests depend on unittest2, and our version is a bit too old. |
| 21255 | #:tests? #f)) |
| 21256 | (native-inputs |
| 21257 | `(("python-pbr" ,python-pbr-minimal))) |
| 21258 | (home-page |
| 21259 | "https://github.com/testing-cabal/linecache2") |
| 21260 | (synopsis "Backports of the linecache module") |
| 21261 | (description |
| 21262 | "The linecache module allows one to get any line from any file, while |
| 21263 | attempting to optimize internally, using a cache, the common case where many |
| 21264 | lines are read from a single file.") |
| 21265 | (license license:psfl))) |
| 21266 | |
| 21267 | (define-public python-traceback2 |
| 21268 | (package |
| 21269 | (name "python-traceback2") |
| 21270 | (version "1.4.0") |
| 21271 | (source |
| 21272 | (origin |
| 21273 | (method url-fetch) |
| 21274 | (uri (pypi-uri "traceback2" version)) |
| 21275 | (sha256 |
| 21276 | (base32 |
| 21277 | "0c1h3jas1jp1fdbn9z2mrgn3jj0hw1x3yhnkxp7jw34q15xcdb05")))) |
| 21278 | (build-system python-build-system) |
| 21279 | (arguments |
| 21280 | `(;; python-traceback2 and python-unittest2 depend on one another. |
| 21281 | #:tests? #f)) |
| 21282 | (native-inputs |
| 21283 | `(("python-pbr" ,python-pbr-minimal))) |
| 21284 | (propagated-inputs |
| 21285 | (list python-linecache2 python-six)) |
| 21286 | (home-page |
| 21287 | "https://github.com/testing-cabal/traceback2") |
| 21288 | (synopsis "Backports of the traceback module") |
| 21289 | (description |
| 21290 | "This module provides a standard interface to extract, format and print |
| 21291 | stack traces of Python programs. It exactly mimics the behavior of the Python |
| 21292 | interpreter when it prints a stack trace.") |
| 21293 | (license license:psfl))) |
| 21294 | |
| 21295 | (define-public python-ratelimiter |
| 21296 | (package |
| 21297 | (name "python-ratelimiter") |
| 21298 | (version "1.2.0") |
| 21299 | (source |
| 21300 | (origin |
| 21301 | (method url-fetch) |
| 21302 | (uri (pypi-uri "ratelimiter" version)) |
| 21303 | (sha256 |
| 21304 | (base32 |
| 21305 | "1dhz85mj5bqd2mij84ncs6pz32hgidr79hay4aqfmzaa4rbb497p")))) |
| 21306 | (build-system python-build-system) |
| 21307 | (arguments |
| 21308 | '(#:tests? #f)) ; There are no tests in the pypi archive. |
| 21309 | (home-page "https://github.com/RazerM/ratelimiter") |
| 21310 | (synopsis "Simple rate limiting object") |
| 21311 | (description |
| 21312 | "The @code{ratelimiter} module ensures that an operation will not be |
| 21313 | executed more than a given number of times during a given period.") |
| 21314 | (license license:asl2.0))) |
| 21315 | |
| 21316 | (define-public python-jsonrpclib-pelix |
| 21317 | (package |
| 21318 | (name "python-jsonrpclib-pelix") |
| 21319 | (version "0.3.2") |
| 21320 | (source |
| 21321 | (origin |
| 21322 | (method url-fetch) |
| 21323 | (uri (pypi-uri "jsonrpclib-pelix" version)) |
| 21324 | (sha256 |
| 21325 | (base32 |
| 21326 | "0f83z5zi7w32vprhk1dyc94ir1bh4hdd57bjdbwkq9ykng8qilhl")))) |
| 21327 | (build-system python-build-system) |
| 21328 | (arguments |
| 21329 | `(#:tests? #f)) ; no tests in PyPI tarball |
| 21330 | (home-page "https://github.com/tcalmant/jsonrpclib/") |
| 21331 | (synopsis "JSON-RPC 2.0 client library for Python") |
| 21332 | (description |
| 21333 | "This library implements the JSON-RPC v2.0 |
| 21334 | specification (backwards-compatible) as a client library for Python. This |
| 21335 | version is a fork of jsonrpclib by Josh Marshall, usable with Pelix remote |
| 21336 | services.") |
| 21337 | (license license:asl2.0))) |
| 21338 | |
| 21339 | (define-public python-setuptools-scm-git-archive |
| 21340 | (package |
| 21341 | (name "python-setuptools-scm-git-archive") |
| 21342 | (version "1.0") |
| 21343 | (source |
| 21344 | (origin |
| 21345 | (method url-fetch) |
| 21346 | (uri (pypi-uri "setuptools_scm_git_archive" version)) |
| 21347 | (sha256 |
| 21348 | (base32 |
| 21349 | "1nii1sz5jq75ilf18bjnr11l9rz1lvdmyk66bxl7q90qan85yhjj")))) |
| 21350 | (build-system python-build-system) |
| 21351 | (arguments |
| 21352 | '(#:phases (modify-phases %standard-phases |
| 21353 | (add-after 'unpack 'dont-install-defunct-egginfo |
| 21354 | (lambda _ |
| 21355 | ;; When a ".git" directory is missing, the setup.py |
| 21356 | ;; script invokes setuptools.setup twice, once with |
| 21357 | ;; "0" as the version. Prevent that. |
| 21358 | (substitute* "setup.py" |
| 21359 | (("if not isdir\\('\\.git'\\):") |
| 21360 | "if False:"))))))) |
| 21361 | (native-inputs |
| 21362 | (list python-pytest)) |
| 21363 | (propagated-inputs |
| 21364 | (list python-setuptools-scm)) |
| 21365 | (home-page "https://github.com/Changaco/setuptools_scm_git_archive/") |
| 21366 | (synopsis "Setuptools_scm plugin for git archives") |
| 21367 | (description |
| 21368 | "The setuptools_scm_git_archive package is a plugin to |
| 21369 | setuptools_scm, which supports obtaining versions from git archives that |
| 21370 | belong to tagged versions.") |
| 21371 | (license license:expat))) |
| 21372 | |
| 21373 | (define-public python-setuptools-git |
| 21374 | (package |
| 21375 | (name "python-setuptools-git") |
| 21376 | (version "1.2") |
| 21377 | (source |
| 21378 | (origin |
| 21379 | (method url-fetch) |
| 21380 | (uri (pypi-uri "setuptools-git" version)) |
| 21381 | (sha256 |
| 21382 | (base32 |
| 21383 | "0i84qjwp5m0l9qagdjww2frdh63r37km1c48mrvbmaqsl1ni6r7z")))) |
| 21384 | (build-system python-build-system) |
| 21385 | (arguments |
| 21386 | `(#:phases |
| 21387 | (modify-phases %standard-phases |
| 21388 | ;; This is needed for tests. |
| 21389 | (add-after 'unpack 'configure-git |
| 21390 | (lambda _ |
| 21391 | (setenv "HOME" "/tmp") |
| 21392 | (invoke "git" "config" "--global" "user.email" "guix") |
| 21393 | (invoke "git" "config" "--global" "user.name" "guix") |
| 21394 | #t))))) |
| 21395 | (native-inputs |
| 21396 | `(("git" ,git-minimal))) |
| 21397 | (home-page "https://github.com/msabramo/setuptools-git") |
| 21398 | (synopsis "Setuptools revision control system plugin for Git") |
| 21399 | (description |
| 21400 | "This package provides a plugin for Setuptools for revision control with |
| 21401 | Git.") |
| 21402 | (license license:bsd-3))) |
| 21403 | |
| 21404 | (define-public python-setuptools-rust |
| 21405 | (package |
| 21406 | (name "python-setuptools-rust") |
| 21407 | (version "1.1.2") |
| 21408 | (source |
| 21409 | (origin |
| 21410 | (method url-fetch) |
| 21411 | (uri (pypi-uri "setuptools-rust" version)) |
| 21412 | (sha256 |
| 21413 | (base32 "1lb57qx1azklgzmalflq960agvwci4bwddw0zvlc9zy00fsvkbd0")))) |
| 21414 | (build-system python-build-system) |
| 21415 | (arguments '(#:tests? #f)) ;no tests |
| 21416 | (native-inputs |
| 21417 | (list python-setuptools-scm)) |
| 21418 | (propagated-inputs |
| 21419 | (list python-semantic-version python-typing-extensions)) |
| 21420 | (home-page "https://github.com/PyO3/setuptools-rust") |
| 21421 | (synopsis "Setuptools plugin for Rust extensions") |
| 21422 | (description |
| 21423 | "@code{setuptools-rust} is a plugin for @code{setuptools} to build |
| 21424 | Rust Python extensions implemented with @code{PyO3} or @code{rust-cpython}.") |
| 21425 | (license license:expat))) |
| 21426 | |
| 21427 | (define-public python-pyclipper |
| 21428 | (package |
| 21429 | (name "python-pyclipper") |
| 21430 | (version "1.3.0.post3") |
| 21431 | (source |
| 21432 | (origin |
| 21433 | (method url-fetch) |
| 21434 | (uri (pypi-uri "pyclipper" version)) |
| 21435 | (sha256 |
| 21436 | (base32 "0vqzbmq2di1jaj6230m5i1ld0mg6wdb1c6r6i5zli54varavr7v3")) |
| 21437 | (modules '((guix build utils))) |
| 21438 | (snippet |
| 21439 | '(begin |
| 21440 | ;; This file is generated by Cython. |
| 21441 | (delete-file "src/pyclipper/_pyclipper.cpp") #t)))) |
| 21442 | (build-system python-build-system) |
| 21443 | (arguments |
| 21444 | `(#:phases |
| 21445 | (modify-phases %standard-phases |
| 21446 | (add-before 'build 'cythonize-sources |
| 21447 | (lambda _ |
| 21448 | (with-directory-excursion "src/pyclipper" |
| 21449 | (invoke "cython" "--cplus" "_pyclipper.pyx"))))))) |
| 21450 | (native-inputs |
| 21451 | (list python-cython python-setuptools-scm |
| 21452 | python-pytest python-pytest-runner)) |
| 21453 | (home-page "https://github.com/greginvm/pyclipper") |
| 21454 | (synopsis "Wrapper for Angus Johnson's Clipper library") |
| 21455 | (description |
| 21456 | "Pyclipper is a Cython wrapper for the C++ translation of the |
| 21457 | Angus Johnson's polygon clipping Clipper library (ver. 6.4.2).") |
| 21458 | (license license:expat))) |
| 21459 | |
| 21460 | (define-public python-tempdir |
| 21461 | (package |
| 21462 | (name "python-tempdir") |
| 21463 | (version "0.7.1") |
| 21464 | (source |
| 21465 | (origin |
| 21466 | (method url-fetch) |
| 21467 | (uri (pypi-uri "tempdir" version)) |
| 21468 | (sha256 |
| 21469 | (base32 |
| 21470 | "13msyyxqbicr111a294x7fsqbkl6a31fyrqflx3q7k547gnq15k8")))) |
| 21471 | (build-system python-build-system) |
| 21472 | (home-page "https://pypi.org/project/tempdir/") |
| 21473 | (arguments |
| 21474 | ;; the package has no tests |
| 21475 | '(#:tests? #f)) |
| 21476 | (synopsis "Python library for managing temporary directories") |
| 21477 | (description |
| 21478 | "This library manages temporary directories that are automatically |
| 21479 | deleted with all their contents when they are no longer needed. It is |
| 21480 | particularly convenient for use in tests.") |
| 21481 | (license license:expat))) |
| 21482 | |
| 21483 | (define-public python-tempora |
| 21484 | (package |
| 21485 | (name "python-tempora") |
| 21486 | (version "5.0.1") |
| 21487 | (source |
| 21488 | (origin |
| 21489 | (method url-fetch) |
| 21490 | (uri (pypi-uri "tempora" version)) |
| 21491 | (sha256 |
| 21492 | (base32 "09wirlk5vmxlhl9rnxp7g5qz2nsd6b0gnzk5fczbz0s8lsbz386b")))) |
| 21493 | (build-system pyproject-build-system) |
| 21494 | (arguments |
| 21495 | ;; Do not test the myproject.toml build as it tries to pull |
| 21496 | ;; dependencies from the Internet. |
| 21497 | (list #:test-flags #~'("-k" "not project"))) |
| 21498 | (native-inputs |
| 21499 | (list python-freezegun |
| 21500 | python-pytest |
| 21501 | python-pytest-black |
| 21502 | python-pytest-checkdocs |
| 21503 | python-pytest-cov |
| 21504 | python-pytest-enabler |
| 21505 | python-pytest-flake8 |
| 21506 | python-pytest-freezegun |
| 21507 | python-pytest-mypy |
| 21508 | python-setuptools-scm |
| 21509 | python-types-freezegun |
| 21510 | python-types-pytz)) |
| 21511 | (propagated-inputs (list python-jaraco-functools python-pytz)) |
| 21512 | (home-page "https://github.com/jaraco/tempora") |
| 21513 | (synopsis "Python date and time objects and routines") |
| 21514 | (description "The @code{tempora} Python library contains miscellaneous |
| 21515 | date and time related utilities and constants, routines for measuring, |
| 21516 | profiling, and getting datetime-aware @acronym{UTC, Coordinated Universal |
| 21517 | Time} values as well as an event scheduler.") |
| 21518 | (license license:expat))) |
| 21519 | |
| 21520 | (define-public python-activepapers |
| 21521 | (package |
| 21522 | (name "python-activepapers") |
| 21523 | (version "0.2.2") |
| 21524 | (source |
| 21525 | (origin |
| 21526 | (method url-fetch) |
| 21527 | (uri (pypi-uri "ActivePapers.Py" version)) |
| 21528 | (sha256 |
| 21529 | (base32 |
| 21530 | "12wkhjh90ffipjzv10swndp2xv9hd7xrxvg6v0n4n3i411pj4xb8")))) |
| 21531 | (build-system python-build-system) |
| 21532 | (arguments |
| 21533 | `(#:modules ((ice-9 ftw) |
| 21534 | (srfi srfi-1) |
| 21535 | (guix build utils) |
| 21536 | (guix build python-build-system)) |
| 21537 | |
| 21538 | #:phases |
| 21539 | (modify-phases %standard-phases |
| 21540 | (add-after 'unpack 'delete-python2-code |
| 21541 | (lambda _ |
| 21542 | (for-each delete-file |
| 21543 | '("lib/activepapers/builtins2.py" |
| 21544 | "lib/activepapers/standardlib2.py" |
| 21545 | "lib/activepapers/utility2.py")))) |
| 21546 | (replace 'check |
| 21547 | (lambda _ |
| 21548 | ;; Deactivate the test cases that download files |
| 21549 | (setenv "NO_NETWORK_ACCESS" "1") |
| 21550 | ;; For some strange reason, some tests fail if nosetests runs all |
| 21551 | ;; test modules in a single execution. They pass if each test |
| 21552 | ;; module is run individually. |
| 21553 | (for-each (lambda (filename) |
| 21554 | (invoke "nosetests" |
| 21555 | (string-append "tests/" filename))) |
| 21556 | (scandir "tests" |
| 21557 | (lambda (filename) |
| 21558 | (string-suffix? ".py" filename))))))))) |
| 21559 | (native-inputs |
| 21560 | (list python-tempdir python-nose)) |
| 21561 | (propagated-inputs |
| 21562 | (list python-h5py)) |
| 21563 | (home-page "https://www.activepapers.org/") |
| 21564 | (synopsis "Executable papers for scientific computing") |
| 21565 | (description |
| 21566 | "ActivePapers is a tool for working with executable papers, which |
| 21567 | combine data, code, and documentation in single-file packages, |
| 21568 | suitable for publication as supplementary material or on repositories |
| 21569 | such as figshare or Zenodo.") |
| 21570 | (license license:bsd-3))) |
| 21571 | |
| 21572 | (define-public python-semver |
| 21573 | (package |
| 21574 | (name "python-semver") |
| 21575 | (version "2.9.0") |
| 21576 | (source |
| 21577 | (origin |
| 21578 | (method url-fetch) |
| 21579 | (uri (pypi-uri "semver" version)) |
| 21580 | (sha256 |
| 21581 | (base32 |
| 21582 | "183kg1rhzz3hqizvphkd8hlbf1zxfx8737zhfkmqzxi71jmdw7pd")))) |
| 21583 | (build-system python-build-system) |
| 21584 | (arguments |
| 21585 | `(#:phases (modify-phases %standard-phases |
| 21586 | (replace 'check |
| 21587 | (lambda _ |
| 21588 | (delete-file "setup.cfg") |
| 21589 | (invoke "py.test")))))) |
| 21590 | (native-inputs |
| 21591 | (list python-pytest)) |
| 21592 | (home-page "https://github.com/k-bx/python-semver") |
| 21593 | (synopsis "Python helper for Semantic Versioning") |
| 21594 | (description "This package provides a Python library for |
| 21595 | @url{Semantic Versioning, http://semver.org/}.") |
| 21596 | (license license:bsd-3))) |
| 21597 | |
| 21598 | (define-public python-pyro4 |
| 21599 | (package |
| 21600 | (name "python-pyro4") |
| 21601 | (version "4.77") |
| 21602 | (source |
| 21603 | (origin |
| 21604 | (method url-fetch) |
| 21605 | (uri (pypi-uri "Pyro4" version)) |
| 21606 | (sha256 |
| 21607 | (base32 "0gsjg869y4gpy265s1gj1f2qy6jn5iz8r2bwwnq78r1r5yi15zib")))) |
| 21608 | (build-system python-build-system) |
| 21609 | (arguments |
| 21610 | '(#:tests? #f)) ;FIXME: Some tests require network access. |
| 21611 | (native-inputs |
| 21612 | (list python-cloudpickle python-dill python-msgpack)) |
| 21613 | (propagated-inputs |
| 21614 | (list python-serpent)) |
| 21615 | (home-page "https://pyro4.readthedocs.io") |
| 21616 | (synopsis "Distributed object middleware for Python") |
| 21617 | (description |
| 21618 | "Pyro enables you to build applications in which objects can talk to each |
| 21619 | other over the network. You can just use normal Python method calls to call |
| 21620 | objects on other machines, also known as remote procedure calls (RPC).") |
| 21621 | (license license:expat))) |
| 21622 | |
| 21623 | (define-public python-phonenumbers |
| 21624 | (package |
| 21625 | (name "python-phonenumbers") |
| 21626 | (version "8.9.1") |
| 21627 | (source |
| 21628 | (origin |
| 21629 | (method url-fetch) |
| 21630 | (uri (pypi-uri "phonenumbers" version)) |
| 21631 | (sha256 |
| 21632 | (base32 |
| 21633 | "03fmrgb4r8x3ykmddjs9i3zhs703in8smikj3a6447blqpimwyh1")))) |
| 21634 | (build-system python-build-system) |
| 21635 | (home-page |
| 21636 | "https://github.com/daviddrysdale/python-phonenumbers") |
| 21637 | (synopsis |
| 21638 | "Python library for dealing with international phone numbers") |
| 21639 | (description |
| 21640 | "This package provides a Python port of Google's libphonenumber library.") |
| 21641 | (license license:asl2.0))) |
| 21642 | |
| 21643 | (define-public python-heapdict |
| 21644 | (package |
| 21645 | (name "python-heapdict") |
| 21646 | (version "1.0.1") |
| 21647 | (source |
| 21648 | (origin |
| 21649 | (method url-fetch) |
| 21650 | (uri (pypi-uri "HeapDict" version)) |
| 21651 | (sha256 |
| 21652 | (base32 |
| 21653 | "1dnd7v9adqd21bf4ih2wzn9a7b41m0nccb0vbxny9n037rxzb5c4")))) |
| 21654 | (build-system python-build-system) |
| 21655 | (home-page "http://stutzbachenterprises.com/") |
| 21656 | (synopsis "Heap with decrease-key and increase-key operations") |
| 21657 | (description |
| 21658 | "heapdict implements the MutableMapping ABC, meaning it works pretty much |
| 21659 | like a regular Python @code{dict}. It’s designed to be used as a priority |
| 21660 | queue.") |
| 21661 | (license license:bsd-3))) |
| 21662 | |
| 21663 | (define-public python-zict |
| 21664 | (package |
| 21665 | (name "python-zict") |
| 21666 | (version "2.0.0") |
| 21667 | (source |
| 21668 | (origin |
| 21669 | (method url-fetch) |
| 21670 | (uri (pypi-uri "zict" version)) |
| 21671 | (sha256 |
| 21672 | (base32 |
| 21673 | "05pd1hyhqvpw87rnbvl3vdyf619snpyccbswaxisdj17frwnjacf")))) |
| 21674 | (build-system python-build-system) |
| 21675 | (propagated-inputs |
| 21676 | (list python-heapdict)) |
| 21677 | (native-inputs |
| 21678 | (list python-pytest)) |
| 21679 | (home-page "https://zict.readthedocs.io/en/latest/") |
| 21680 | (synopsis "Composable mutable mapping tools") |
| 21681 | (description "This package provides abstract @code{MutableMapping} classes |
| 21682 | that consume and build on other @code{MutableMappings}. Several of these can |
| 21683 | be composed with one another to form intuitive interfaces over complex storage |
| 21684 | systems policies.") |
| 21685 | (license license:bsd-3))) |
| 21686 | |
| 21687 | (define-public python-send2trash |
| 21688 | (package |
| 21689 | (name "python-send2trash") |
| 21690 | (version "1.8.0") |
| 21691 | (source |
| 21692 | (origin (method git-fetch) |
| 21693 | ;; Source tarball on PyPI doesn't include tests. |
| 21694 | (uri (git-reference |
| 21695 | (url "https://github.com/arsenetar/send2trash") |
| 21696 | (commit version))) |
| 21697 | (file-name (git-file-name name version)) |
| 21698 | (sha256 |
| 21699 | (base32 |
| 21700 | "1k7dfypaaq4f36fbciaasv72j6wgjihw8d88axmz9c329bz8v5qx")))) |
| 21701 | (build-system python-build-system) |
| 21702 | (arguments |
| 21703 | '(#:phases |
| 21704 | (modify-phases %standard-phases |
| 21705 | (add-before 'check 'pre-check |
| 21706 | (lambda _ |
| 21707 | (setenv "HOME" "/tmp"))) |
| 21708 | (replace 'check |
| 21709 | (lambda* (#:key tests? #:allow-other-keys) |
| 21710 | (when tests? |
| 21711 | (invoke "pytest" "-vv"))))))) |
| 21712 | (native-inputs (list python-pytest)) |
| 21713 | (home-page "https://github.com/arsenetar/send2trash") |
| 21714 | (synopsis "Send files to the user's @file{~/Trash} directory") |
| 21715 | (description "This package provides a Python library to send files to the |
| 21716 | user's @file{~/Trash} directory.") |
| 21717 | (license license:bsd-3))) |
| 21718 | |
| 21719 | (define-public python-pyfavicon |
| 21720 | (package |
| 21721 | (name "python-pyfavicon") |
| 21722 | (version "0.1.1") |
| 21723 | (source |
| 21724 | (origin |
| 21725 | (method url-fetch) |
| 21726 | (uri (pypi-uri "pyfavicon" version)) |
| 21727 | (sha256 |
| 21728 | (base32 "15wfpa99hvcfsv8j0m8iprmydi2p4qkhm86qfx485244y0ia5mgx")))) |
| 21729 | (build-system python-build-system) |
| 21730 | (arguments |
| 21731 | ;; There are no tests in the PyPI tarball and the tests from the |
| 21732 | ;; repository require online data. |
| 21733 | '(#:tests? #f)) |
| 21734 | (propagated-inputs |
| 21735 | (list python-aiohttp python-beautifulsoup4 python-pillow)) |
| 21736 | (home-page "https://github.com/bilelmoussaoui/pyfavicon") |
| 21737 | (synopsis "Async favicon fetcher") |
| 21738 | (description |
| 21739 | "@code{pyfavicon} is an async favicon fetcher.") |
| 21740 | (license license:expat))) |
| 21741 | |
| 21742 | (define-public python-yamllint |
| 21743 | (package |
| 21744 | (name "python-yamllint") |
| 21745 | (version "1.26.1") |
| 21746 | (source |
| 21747 | (origin |
| 21748 | (method url-fetch) |
| 21749 | (uri (pypi-uri "yamllint" version)) |
| 21750 | (sha256 |
| 21751 | (base32 "090krlxj7az0d9yl8i20vjrqi66dfxx7y5xakjhxzsfp7qmldnc7")))) |
| 21752 | (build-system python-build-system) |
| 21753 | (propagated-inputs |
| 21754 | (list python-pathspec python-pyyaml python-setuptools)) |
| 21755 | (home-page "https://github.com/adrienverge/yamllint") |
| 21756 | (synopsis "Linter for YAML files") |
| 21757 | (description |
| 21758 | "Yamllint is a linter for YAML files. yamllint does not only check for |
| 21759 | syntax validity, but for weirdnesses like key repetition and cosmetic problems |
| 21760 | such as lines length, trailing spaces, indentation, etc.") |
| 21761 | (license license:gpl3+))) |
| 21762 | |
| 21763 | (define-public python-yapf |
| 21764 | (package |
| 21765 | (name "python-yapf") |
| 21766 | (version "0.29.0") |
| 21767 | (source |
| 21768 | (origin |
| 21769 | (method url-fetch) |
| 21770 | (uri (pypi-uri "yapf" version)) |
| 21771 | (sha256 |
| 21772 | (base32 |
| 21773 | "1pj3xzblmbssshi889b6n9hwqbjpabw6j0fimlng2sshd3226bki")))) |
| 21774 | (build-system python-build-system) |
| 21775 | (home-page "https://github.com/google/yapf") |
| 21776 | (synopsis "Formatter for Python code") |
| 21777 | (description "YAPF is a formatter for Python code. It's based off of |
| 21778 | @dfn{clang-format}, developed by Daniel Jasper. In essence, the algorithm |
| 21779 | takes the code and reformats it to the best formatting that conforms to the |
| 21780 | style guide, even if the original code didn't violate the style guide.") |
| 21781 | (license license:asl2.0))) |
| 21782 | |
| 21783 | (define-public python-yq |
| 21784 | (package |
| 21785 | (name "python-yq") |
| 21786 | (version "3.1.0") |
| 21787 | (source |
| 21788 | (origin |
| 21789 | (method url-fetch) |
| 21790 | (uri (pypi-uri "yq" version)) |
| 21791 | (sha256 |
| 21792 | (base32 |
| 21793 | "1wklgs3d9si475nffw9agq5kgk8bdicbsmlj4sx4kiw64ji4ma1h")))) |
| 21794 | (build-system python-build-system) |
| 21795 | (arguments |
| 21796 | '(#:phases |
| 21797 | (modify-phases %standard-phases |
| 21798 | (add-after 'unpack 'patch |
| 21799 | (lambda* (#:key inputs #:allow-other-keys) |
| 21800 | (substitute* "yq/__init__.py" |
| 21801 | (("Popen\\(\\[\"jq") |
| 21802 | (string-append |
| 21803 | "Popen([\"" |
| 21804 | (assoc-ref inputs "jq") |
| 21805 | "/bin/jq"))) |
| 21806 | #t))))) |
| 21807 | (inputs |
| 21808 | (list python-argcomplete python-pyyaml python-xmltodict python-toml jq)) |
| 21809 | (native-inputs |
| 21810 | (list python-coverage python-flake8 python-setuptools-scm python-wheel)) |
| 21811 | (home-page "https://github.com/kislyuk/yq") |
| 21812 | (synopsis "Command-line YAML/XML processor") |
| 21813 | (description |
| 21814 | "This package provides @command{yq} and @command{xq} for processing YAML |
| 21815 | and XML respectively. The processing is done through @command{jq}, @command{jq} |
| 21816 | filters can be used to process the data as it passes through.") |
| 21817 | (license license:asl2.0))) |
| 21818 | |
| 21819 | (define-public python-gyp |
| 21820 | (let ((commit "5e2b3ddde7cda5eb6bc09a5546a76b00e49d888f") |
| 21821 | (revision "0")) |
| 21822 | (package |
| 21823 | (name "python-gyp") |
| 21824 | ;; Google does not release versions, |
| 21825 | ;; based on second most recent commit date. |
| 21826 | (version (git-version "0.0.0" revision commit)) |
| 21827 | (source |
| 21828 | (origin |
| 21829 | ;; Google does not release tarballs, |
| 21830 | ;; git checkout is needed. |
| 21831 | (method git-fetch) |
| 21832 | (uri (git-reference |
| 21833 | (url "https://chromium.googlesource.com/external/gyp") |
| 21834 | (commit commit))) |
| 21835 | (file-name (git-file-name name version)) |
| 21836 | (sha256 |
| 21837 | (base32 |
| 21838 | "0fr7nxcrk292djmxzpcjaphnsd123k31gp8jnd91vwknhq6snmv9")))) |
| 21839 | (build-system python-build-system) |
| 21840 | (home-page "https://gyp.gsrc.io/") |
| 21841 | (synopsis "GYP is a Meta-Build system") |
| 21842 | (description |
| 21843 | "GYP builds build systems for large, cross platform applications. |
| 21844 | It can be used to generate XCode projects, Visual Studio projects, Ninja build |
| 21845 | files, and Makefiles.") |
| 21846 | (license license:bsd-3)))) |
| 21847 | |
| 21848 | (define-public python-whatever |
| 21849 | (package |
| 21850 | (name "python-whatever") |
| 21851 | (version "0.6") |
| 21852 | (source |
| 21853 | (origin |
| 21854 | (method git-fetch) |
| 21855 | (uri (git-reference |
| 21856 | (url "https://github.com/Suor/whatever") |
| 21857 | (commit version))) |
| 21858 | (file-name (git-file-name name version)) |
| 21859 | (sha256 |
| 21860 | (base32 "1q7ajgqjfivxqsqgnhp4lc4p6jxyh4zprcsdbpd6dw54inaf0av5")))) |
| 21861 | (build-system python-build-system) |
| 21862 | (arguments |
| 21863 | `(#:phases |
| 21864 | (modify-phases %standard-phases |
| 21865 | (replace 'check |
| 21866 | (lambda _ |
| 21867 | (invoke "py.test")))))) |
| 21868 | (native-inputs |
| 21869 | (list python-pytest)) |
| 21870 | (home-page "https://github.com/Suor/whatever") |
| 21871 | (synopsis "Make anonymous functions by partial application of operators") |
| 21872 | (description "@code{whatever} provides an easy way to make anonymous |
| 21873 | functions by partial application of operators.") |
| 21874 | (license license:bsd-3))) |
| 21875 | |
| 21876 | (define-public python-funcy |
| 21877 | (package |
| 21878 | (name "python-funcy") |
| 21879 | (version "1.11") |
| 21880 | (source |
| 21881 | (origin |
| 21882 | (method git-fetch) |
| 21883 | (uri (git-reference |
| 21884 | (url "https://github.com/Suor/funcy") |
| 21885 | (commit version))) |
| 21886 | (sha256 |
| 21887 | (base32 "1s98vkjnq3zq71737hn8xa15kssvmy1sfzsll3vrlv53902418mw")) |
| 21888 | (file-name (git-file-name name version)))) |
| 21889 | (build-system python-build-system) |
| 21890 | (arguments |
| 21891 | `(#:phases |
| 21892 | (modify-phases %standard-phases |
| 21893 | (replace 'check |
| 21894 | (lambda _ |
| 21895 | (invoke "py.test")))))) |
| 21896 | (native-inputs |
| 21897 | (list python-pytest python-whatever)) |
| 21898 | (home-page "https://github.com/Suor/funcy") |
| 21899 | (synopsis "Functional tools") |
| 21900 | (description "@code{funcy} is a library that provides functional tools. |
| 21901 | Examples are: |
| 21902 | @enumerate |
| 21903 | @item merge - Merges collections of the same type |
| 21904 | @item walk - Type-preserving map |
| 21905 | @item select - Selects a part of a collection |
| 21906 | @item take - Takes the first n items of a collection |
| 21907 | @item first - Takes the first item of a collection |
| 21908 | @item remove - Predicated-removes items of a collection |
| 21909 | @item concat - Concatenates two collections |
| 21910 | @item flatten - Flattens a collection with subcollections |
| 21911 | @item distinct - Returns only distinct items |
| 21912 | @item split - Predicated-splits a collection |
| 21913 | @item split_at - Splits a collection at a given item |
| 21914 | @item group_by - Groups items by group |
| 21915 | @item pairwise - Pairs off adjacent items |
| 21916 | @item partial - Partially-applies a function |
| 21917 | @item curry - Curries a function |
| 21918 | @item compose - Composes functions |
| 21919 | @item complement - Complements a predicate |
| 21920 | @item all_fn - \"all\" with predicate |
| 21921 | @end enumerate") |
| 21922 | (license license:bsd-3))) |
| 21923 | |
| 21924 | (define-public python-isoweek |
| 21925 | (package |
| 21926 | (name "python-isoweek") |
| 21927 | (version "1.3.3") |
| 21928 | (source |
| 21929 | (origin |
| 21930 | (method url-fetch) |
| 21931 | (uri (pypi-uri "isoweek" version)) |
| 21932 | (sha256 |
| 21933 | (base32 |
| 21934 | "1s7zsf0pab0l9gn6456qadnz5i5h90hafcjwnhx5mq23qjxggwvk")))) |
| 21935 | (build-system python-build-system) |
| 21936 | (home-page "https://github.com/gisle/isoweek") |
| 21937 | (synopsis "Objects representing a week") |
| 21938 | (description "The @code{isoweek} module provide the class Week that |
| 21939 | implements the week definition of ISO 8601. This standard also defines |
| 21940 | a notation for identifying weeks; yyyyWww (where the W is a literal). |
| 21941 | Week instances stringify to this form.") |
| 21942 | (license license:bsd-3))) |
| 21943 | |
| 21944 | (define-public python-pyzbar |
| 21945 | (package |
| 21946 | (name "python-pyzbar") |
| 21947 | (version "0.1.8") |
| 21948 | (source |
| 21949 | (origin |
| 21950 | ;; There's no source tarball on PyPI. |
| 21951 | (method git-fetch) |
| 21952 | (uri (git-reference |
| 21953 | (url "https://github.com/NaturalHistoryMuseum/pyzbar") |
| 21954 | (commit (string-append "v" version)))) |
| 21955 | (file-name (git-file-name name version)) |
| 21956 | (sha256 |
| 21957 | (base32 "1fqlfg5p2v9lzzzi0si2sz54lblprk6jjjhjw54b64lp58c1yhsl")))) |
| 21958 | (build-system python-build-system) |
| 21959 | (arguments |
| 21960 | `(#:phases |
| 21961 | (modify-phases %standard-phases |
| 21962 | (add-after 'unpack 'remove-failing-test |
| 21963 | (lambda _ |
| 21964 | ;; This tests if find_library was called once, but we remove |
| 21965 | ;; the call in the stage below to make the library find libzbar. |
| 21966 | (delete-file "pyzbar/tests/test_zbar_library.py") |
| 21967 | #t)) |
| 21968 | (add-before 'build 'set-library-file-name |
| 21969 | (lambda* (#:key inputs #:allow-other-keys) |
| 21970 | (let ((libzbar (assoc-ref inputs "zbar"))) |
| 21971 | (substitute* "pyzbar/zbar_library.py" |
| 21972 | (("find_library\\('zbar'\\)") |
| 21973 | (string-append "'" libzbar "/lib/libzbar.so.0'"))) |
| 21974 | #t)))))) |
| 21975 | (native-inputs |
| 21976 | (list pkg-config python-numpy python-pillow)) |
| 21977 | (inputs |
| 21978 | (list zbar)) |
| 21979 | (home-page "https://github.com/NaturalHistoryMuseum/pyzbar/") |
| 21980 | (synopsis "Read one-dimensional barcodes and QR codes") |
| 21981 | (description |
| 21982 | "Read one-dimensional barcodes and QR codes using the zbar library. |
| 21983 | |
| 21984 | Features: |
| 21985 | |
| 21986 | @itemize |
| 21987 | @item Pure python |
| 21988 | @item Works with PIL / Pillow images, OpenCV / numpy ndarrays, and raw bytes |
| 21989 | @item Decodes locations of barcodes |
| 21990 | @item No dependencies, other than the zbar library itself |
| 21991 | @end itemize") |
| 21992 | (license license:expat))) |
| 21993 | |
| 21994 | (define-public python-tokenize-rt |
| 21995 | (package |
| 21996 | (name "python-tokenize-rt") |
| 21997 | (version "2.0.1") |
| 21998 | (source |
| 21999 | (origin |
| 22000 | (method url-fetch) |
| 22001 | (uri (pypi-uri "tokenize-rt" version)) |
| 22002 | (sha256 |
| 22003 | (base32 |
| 22004 | "1yjvbz7rvrz31zjyax1cgy3xhf4wb3j18jwnj4bnl77ca4gliyiw")))) |
| 22005 | (build-system python-build-system) |
| 22006 | (home-page "https://github.com/asottile/tokenize-rt") |
| 22007 | (synopsis "Wrapper around the stdlib tokenize which roundtrips") |
| 22008 | (description |
| 22009 | "This Python library is a wrapper around @code{tokenize} from the Python |
| 22010 | standard library. It provides two additional tokens @code{ESCAPED_NL} and |
| 22011 | @code{UNIMPORTANT_WS}, and a @code{Token} data type. Use @code{src_to_tokens} |
| 22012 | and @code{tokens_to_src} to roundtrip.") |
| 22013 | (license license:expat))) |
| 22014 | |
| 22015 | (define-public python-future-fstrings |
| 22016 | (package |
| 22017 | (name "python-future-fstrings") |
| 22018 | (version "0.4.1") |
| 22019 | (source |
| 22020 | (origin |
| 22021 | (method url-fetch) |
| 22022 | (uri (pypi-uri "future_fstrings" version)) |
| 22023 | (sha256 |
| 22024 | (base32 |
| 22025 | "0ydxqz2dvns44g55p8ix2x18qkfk3aaz0m0dc70f3g6n8js35h47")))) |
| 22026 | (build-system python-build-system) |
| 22027 | (propagated-inputs |
| 22028 | (list python-tokenize-rt)) |
| 22029 | (home-page "https://github.com/asottile/future-fstrings") |
| 22030 | (synopsis "Backport of fstrings to Python < 3.6") |
| 22031 | (description |
| 22032 | "This package provides a UTF-8 compatible encoding |
| 22033 | @code{future_fstrings}, which performs source manipulation. It decodes the |
| 22034 | source bytes using the UTF-8 encoding and then rewrites Python 3.6 style |
| 22035 | @code{f} strings.") |
| 22036 | (license license:expat))) |
| 22037 | |
| 22038 | (define-public python-typed-ast |
| 22039 | (package |
| 22040 | (name "python-typed-ast") |
| 22041 | (version "1.5.1") |
| 22042 | (source |
| 22043 | (origin |
| 22044 | (method git-fetch) |
| 22045 | (uri (git-reference |
| 22046 | (url "https://github.com/python/typed_ast") |
| 22047 | (commit version))) |
| 22048 | (sha256 |
| 22049 | (base32 "1xfcs5246c8v5600aaa8zs7ii4sxb62q6r3sb2fgazyjx97wrxd9")) |
| 22050 | (file-name (git-file-name name version)))) |
| 22051 | (build-system python-build-system) |
| 22052 | (arguments |
| 22053 | `(#:phases |
| 22054 | (modify-phases %standard-phases |
| 22055 | (replace 'check |
| 22056 | (lambda _ |
| 22057 | (invoke "pytest")))))) |
| 22058 | (native-inputs (list python-pytest)) |
| 22059 | (home-page "https://github.com/python/typed_ast") |
| 22060 | (synopsis "Fork of Python @code{ast} modules with type comment support") |
| 22061 | (description "This package provides a parser similar to the standard |
| 22062 | @code{ast} library. Unlike @code{ast}, the parsers in @code{typed_ast} |
| 22063 | include PEP 484 type comments and are independent of the version of Python |
| 22064 | under which they are run. The @code{typed_ast} parsers produce the standard |
| 22065 | Python AST (plus type comments), and are both fast and correct, as they are |
| 22066 | based on the CPython 2.7 and 3.7 parsers.") |
| 22067 | ;; See the file "LICENSE" for the details. |
| 22068 | (license (list license:psfl |
| 22069 | license:asl2.0 |
| 22070 | license:expat)))) ;ast27/Parser/spark.py |
| 22071 | |
| 22072 | (define-public python-typer |
| 22073 | (package |
| 22074 | (name "python-typer") |
| 22075 | (version "0.6.1") |
| 22076 | (source |
| 22077 | (origin |
| 22078 | (method git-fetch) |
| 22079 | (uri (git-reference |
| 22080 | (url "https://github.com/tiangolo/typer") |
| 22081 | (commit version))) |
| 22082 | (file-name (git-file-name name version)) |
| 22083 | (sha256 |
| 22084 | (base32 "1knv353qhkl2imav3jfp6bgq47m8wkkqhq1dzmqg2sv8rsy7zgl7")))) |
| 22085 | (build-system python-build-system) |
| 22086 | (arguments |
| 22087 | `(#:phases |
| 22088 | ,#~(modify-phases %standard-phases |
| 22089 | ;; Unfortunately, this doesn't seem to be enough to fix these two |
| 22090 | ;; tests, but we'll patch this anyway. |
| 22091 | (add-after 'unpack 'patch-shell-reference |
| 22092 | (lambda _ |
| 22093 | (substitute* "tests/test_completion/test_completion.py" |
| 22094 | (("\"bash\"") (string-append "\"" (which "bash") "\"")) |
| 22095 | (("\"/bin/bash\"") |
| 22096 | (string-append "\"" (which "bash") "\""))))) |
| 22097 | (replace 'build |
| 22098 | (lambda _ |
| 22099 | (invoke "flit" "build"))) |
| 22100 | (replace 'install |
| 22101 | (lambda* (#:key inputs outputs #:allow-other-keys) |
| 22102 | (add-installed-pythonpath inputs outputs) |
| 22103 | (for-each |
| 22104 | (lambda (wheel) |
| 22105 | (format #true wheel) |
| 22106 | (invoke "python" "-m" "pip" "install" |
| 22107 | wheel (string-append "--prefix=" #$output))) |
| 22108 | (find-files "dist" "\\.whl$")))) |
| 22109 | (replace 'check |
| 22110 | (lambda* (#:key tests? #:allow-other-keys) |
| 22111 | (when tests? |
| 22112 | (setenv "HOME" "/tmp") ; some tests need it |
| 22113 | |
| 22114 | ;; This is for completion tests |
| 22115 | (with-output-to-file "/tmp/.bashrc" |
| 22116 | (lambda _ (display "# dummy"))) |
| 22117 | |
| 22118 | (setenv "GUIX_PYTHONPATH" |
| 22119 | (string-append (getcwd) ":" |
| 22120 | (getenv "GUIX_PYTHONPATH"))) |
| 22121 | (let ((disabled-tests (list "test_show_completion" |
| 22122 | "test_install_completion"))) |
| 22123 | (invoke "python" "-m" "pytest" "tests/" |
| 22124 | "-k" |
| 22125 | (string-append "not " |
| 22126 | (string-join disabled-tests |
| 22127 | " and not ")))))))))) |
| 22128 | (propagated-inputs |
| 22129 | (list python-click)) |
| 22130 | (native-inputs |
| 22131 | (list python-coverage python-flit python-pytest python-rich |
| 22132 | python-shellingham)) |
| 22133 | (home-page "https://github.com/tiangolo/typer") |
| 22134 | (synopsis |
| 22135 | "Typer builds CLI based on Python type hints") |
| 22136 | (description |
| 22137 | "Typer is a library for building CLI applications. It's based on |
| 22138 | Python 3.6+ type hints.") |
| 22139 | ;; MIT license |
| 22140 | (license license:expat))) |
| 22141 | |
| 22142 | (define-public python-typeguard |
| 22143 | (package |
| 22144 | (name "python-typeguard") |
| 22145 | (version "2.13.3") |
| 22146 | (source |
| 22147 | (origin |
| 22148 | (method url-fetch) |
| 22149 | (uri (pypi-uri "typeguard" version)) |
| 22150 | (sha256 |
| 22151 | (base32 "1i5qzcyw2715h1g1hvj7fxykck2bkxyshpngjr3nfcx1lf6smv80")))) |
| 22152 | (build-system python-build-system) |
| 22153 | (arguments |
| 22154 | (list |
| 22155 | #:phases |
| 22156 | #~(modify-phases %standard-phases |
| 22157 | (replace 'check |
| 22158 | (lambda* (#:key tests? #:allow-other-keys) |
| 22159 | (when tests? |
| 22160 | (invoke "pytest" "-vv" "-k" |
| 22161 | ;; XXX: These fail when installed as a library: |
| 22162 | ;; https://github.com/agronholm/typeguard/issues/176 |
| 22163 | "not usefixtures and not test_cached_module"))))))) |
| 22164 | (native-inputs |
| 22165 | (list python-mypy python-pytest python-typing-extensions)) |
| 22166 | (home-page "https://github.com/agronholm/typeguard") |
| 22167 | (synopsis "Run-time type checker for Python") |
| 22168 | (description |
| 22169 | "@code{typeguard} provides run-time type checking for functions defined |
| 22170 | with PEP 484 argument (and return) type annotations.") |
| 22171 | (license license:expat))) |
| 22172 | |
| 22173 | (define-public python-typing-extensions |
| 22174 | (package |
| 22175 | (name "python-typing-extensions") |
| 22176 | (version "4.0.1") |
| 22177 | (source (origin |
| 22178 | ;; The test script is missing from the PyPI archive. |
| 22179 | (method git-fetch) |
| 22180 | (uri (git-reference |
| 22181 | (url "https://github.com/python/typing") |
| 22182 | (commit version))) |
| 22183 | (file-name (git-file-name name version)) |
| 22184 | (sha256 |
| 22185 | (base32 |
| 22186 | "0a35fh5wk9s538x0w3dz95y0avnhd2srzyv9s1a372711n8hdl4p")))) |
| 22187 | (build-system python-build-system) |
| 22188 | (arguments |
| 22189 | (list |
| 22190 | #:tests? #f ;requires Python's test module, not available in Guix |
| 22191 | #:phases |
| 22192 | #~(modify-phases %standard-phases |
| 22193 | (add-after 'unpack 'enter-source-directory |
| 22194 | (lambda _ |
| 22195 | (chdir "typing_extensions"))) |
| 22196 | ;; XXX: PEP 517 manual build copied from python-isort. |
| 22197 | (replace 'build |
| 22198 | (lambda _ |
| 22199 | (invoke "python" "-m" "build" "--wheel" "--no-isolation" "."))) |
| 22200 | (replace 'check |
| 22201 | (lambda* (#:key tests? #:allow-other-keys) |
| 22202 | (when tests? |
| 22203 | (invoke "python" "src/test_typing_extensions.py")))) |
| 22204 | (replace 'install |
| 22205 | (lambda _ |
| 22206 | (let ((whl (car (find-files "dist" "\\.whl$")))) |
| 22207 | (invoke "pip" "--no-cache-dir" "--no-input" |
| 22208 | "install" "--no-deps" "--prefix" #$output whl))))))) |
| 22209 | (native-inputs (list python-pypa-build python-flit-core)) |
| 22210 | (home-page "https://github.com/python/typing/typing_extensions") |
| 22211 | (synopsis "Experimental type hints for Python") |
| 22212 | (description |
| 22213 | "The typing_extensions module contains additional @code{typing} hints not |
| 22214 | yet present in the of the @code{typing} standard library. |
| 22215 | Included are implementations of: |
| 22216 | @enumerate |
| 22217 | @item ClassVar |
| 22218 | @item ContextManager |
| 22219 | @item Counter |
| 22220 | @item DefaultDict |
| 22221 | @item Deque |
| 22222 | @item NewType |
| 22223 | @item NoReturn |
| 22224 | @item overload |
| 22225 | @item Protocol |
| 22226 | @item runtime |
| 22227 | @item Text |
| 22228 | @item Type |
| 22229 | @item TYPE_CHECKING |
| 22230 | @item AsyncGenerator |
| 22231 | @end enumerate\n") |
| 22232 | (license license:psfl))) |
| 22233 | |
| 22234 | (define-public python-typing-extensions-next |
| 22235 | (package |
| 22236 | (inherit python-typing-extensions) |
| 22237 | (name "python-typing-extensions") |
| 22238 | (version "4.2.0") |
| 22239 | (source (origin |
| 22240 | (method git-fetch) |
| 22241 | (uri (git-reference |
| 22242 | (url "https://github.com/python/typing") |
| 22243 | (commit version))) |
| 22244 | (file-name (git-file-name name version)) |
| 22245 | (sha256 |
| 22246 | (base32 |
| 22247 | "1bbry1rg7q5ppkgzdk4nwl7q1w8bbhajm4q68wb9dm6rf7hg1023")))))) |
| 22248 | |
| 22249 | (define-public bpython |
| 22250 | (package |
| 22251 | (name "bpython") |
| 22252 | (version "0.23") |
| 22253 | (source |
| 22254 | (origin |
| 22255 | (method url-fetch) |
| 22256 | (uri (pypi-uri "bpython" version)) |
| 22257 | (sha256 |
| 22258 | (base32 "0ah5giynavyh70yc0jqgmjaajv3xg5j2y7k9i3q8mi47r2mph04z")))) |
| 22259 | (build-system python-build-system) |
| 22260 | (arguments |
| 22261 | `(#:phases |
| 22262 | (modify-phases %standard-phases |
| 22263 | (add-after 'unpack 'remove-failing-test |
| 22264 | (lambda _ |
| 22265 | ;; Remove failing test. FIXME: make it pass |
| 22266 | (delete-file "bpython/test/test_args.py") |
| 22267 | #t)) |
| 22268 | (add-after 'wrap 'add-aliases |
| 22269 | ;; for symmetry to bpython2, add symlinks bypthon3, bpdb3, etc. |
| 22270 | (lambda* (#:key outputs #:allow-other-keys) |
| 22271 | (let ((out (assoc-ref outputs "out"))) |
| 22272 | (for-each |
| 22273 | (lambda (old new) |
| 22274 | (symlink old (string-append out "/bin/" new))) |
| 22275 | '("bpython" "bpython-curses" "bpython-urwid" "bpdb") |
| 22276 | '("bpython3" "bpython3-curses" "bpython3-urwid" "bpdb3"))) |
| 22277 | #t))))) |
| 22278 | (propagated-inputs |
| 22279 | (list python-pygments |
| 22280 | python-requests |
| 22281 | python-curtsies |
| 22282 | python-greenlet |
| 22283 | python-six |
| 22284 | python-cwcwidth |
| 22285 | python-pyxdg |
| 22286 | ;; optional dependencies |
| 22287 | python-urwid ; for bpython-urwid only |
| 22288 | python-watchdog |
| 22289 | python-jedi)) |
| 22290 | (native-inputs |
| 22291 | (list python-sphinx python-mock python-tox python-wheel)) |
| 22292 | (home-page "https://bpython-interpreter.org/") |
| 22293 | (synopsis "Fancy interface to the Python interpreter") |
| 22294 | (description "Bpython is a fancy interface to the Python |
| 22295 | interpreter. bpython's main features are |
| 22296 | |
| 22297 | @enumerate |
| 22298 | @item in-line syntax highlighting, |
| 22299 | @item readline-like autocomplete with suggestions displayed as you type, |
| 22300 | @item expected parameter list for any Python function, |
| 22301 | @item \"rewind\" function to pop the last line of code from memory and |
| 22302 | re-evaluate, |
| 22303 | @item send the code you've entered off to a pastebin, |
| 22304 | @item save the code you've entered to a file, and |
| 22305 | @item auto-indentation. |
| 22306 | @end enumerate") |
| 22307 | (license license:expat))) |
| 22308 | |
| 22309 | (define-public python-pyinotify |
| 22310 | (package |
| 22311 | (name "python-pyinotify") |
| 22312 | (version "0.9.6") |
| 22313 | (source (origin |
| 22314 | (method url-fetch) |
| 22315 | (uri (pypi-uri "pyinotify" version)) |
| 22316 | (sha256 |
| 22317 | (base32 |
| 22318 | "1x3i9wmzw33fpkis203alygfnrkcmq9w1aydcm887jh6frfqm6cw")))) |
| 22319 | (build-system python-build-system) |
| 22320 | (arguments `(#:tests? #f)) ;no tests |
| 22321 | (home-page "https://github.com/seb-m/pyinotify") |
| 22322 | (synopsis "Python library for monitoring inotify events") |
| 22323 | (description |
| 22324 | "@code{pyinotify} provides a Python interface for monitoring |
| 22325 | file system events on Linux.") |
| 22326 | (license license:expat))) |
| 22327 | |
| 22328 | |
| 22329 | (define-public python-more-itertools |
| 22330 | (package |
| 22331 | (name "python-more-itertools") |
| 22332 | (version "8.2.0") |
| 22333 | (source |
| 22334 | (origin |
| 22335 | (method url-fetch) |
| 22336 | (uri (pypi-uri "more-itertools" version)) |
| 22337 | (sha256 |
| 22338 | (base32 |
| 22339 | "01x5nwm1zxmnd06cllbdd095xxc2nd25ing1a726m2kd30rbkpdi")))) |
| 22340 | (build-system python-build-system) |
| 22341 | (home-page "https://github.com/erikrose/more-itertools") |
| 22342 | (synopsis "More routines for operating on iterables, beyond itertools") |
| 22343 | (description "Python's built-in @code{itertools} module implements a |
| 22344 | number of iterator building blocks inspired by constructs from APL, Haskell, |
| 22345 | and SML. @code{more-itertools} includes additional building blocks for |
| 22346 | working with iterables.") |
| 22347 | (license license:expat))) |
| 22348 | |
| 22349 | (define-public python-latexcodec |
| 22350 | (package |
| 22351 | (name "python-latexcodec") |
| 22352 | (version "2.0.1") |
| 22353 | (source |
| 22354 | (origin |
| 22355 | (method url-fetch) |
| 22356 | (uri (pypi-uri "latexcodec" version)) |
| 22357 | (sha256 |
| 22358 | (base32 "16pynfnn8y8xp55yp06i721fccv5dlx9ba6k5bzcwq9j6wf5b8ia")))) |
| 22359 | (build-system python-build-system) |
| 22360 | (propagated-inputs |
| 22361 | (list python-six)) |
| 22362 | (home-page "https://readthedocs.org/projects/latexcodec/") |
| 22363 | (synopsis "Work with LaTeX code in Python") |
| 22364 | (description "Lexer and codec to work with LaTeX code in Python.") |
| 22365 | (license license:expat))) |
| 22366 | |
| 22367 | (define-public python-pybtex |
| 22368 | (package |
| 22369 | (name "python-pybtex") |
| 22370 | (version "0.24.0") |
| 22371 | (source |
| 22372 | (origin |
| 22373 | (method url-fetch) |
| 22374 | (uri (pypi-uri "pybtex" version)) |
| 22375 | (sha256 |
| 22376 | (base32 "0ma7sc10hk6caq5zghbk865vrlaynz7x5z630z0facqpnqssx3l1")))) |
| 22377 | (build-system python-build-system) |
| 22378 | (native-inputs |
| 22379 | (list python-pytest)) |
| 22380 | (propagated-inputs |
| 22381 | (list python-latexcodec python-pyyaml python-six)) |
| 22382 | (arguments |
| 22383 | (list |
| 22384 | #:phases #~(modify-phases %standard-phases |
| 22385 | (replace 'check |
| 22386 | (lambda* (#:key tests? #:allow-other-keys) |
| 22387 | (when tests? |
| 22388 | (invoke "pytest"))))))) |
| 22389 | (home-page "https://pybtex.org/") |
| 22390 | (synopsis "BibTeX-compatible bibliography processor") |
| 22391 | (description "Pybtex is a BibTeX-compatible bibliography processor written |
| 22392 | in Python. You can simply type pybtex instead of bibtex.") |
| 22393 | (license license:expat))) |
| 22394 | |
| 22395 | (define-public python-onetimepass |
| 22396 | (package |
| 22397 | (name "python-onetimepass") |
| 22398 | (version "1.0.1") |
| 22399 | (source |
| 22400 | (origin |
| 22401 | (method url-fetch) |
| 22402 | (uri (pypi-uri "onetimepass" version)) |
| 22403 | (sha256 |
| 22404 | (base32 "09vagxgbq78wvq4xbikmn2hpqqsa2i96kqsmphf7dqynfv0dlsd5")))) |
| 22405 | (build-system python-build-system) |
| 22406 | (propagated-inputs (list python-six)) |
| 22407 | (home-page "https://github.com/tadeck/onetimepass/") |
| 22408 | (synopsis "One-time password library") |
| 22409 | (description "Python one-time password library for HMAC-based (HOTP) and |
| 22410 | time-based (TOTP) passwords.") |
| 22411 | (license license:expat))) |
| 22412 | |
| 22413 | (define-public python-parso |
| 22414 | (package |
| 22415 | (name "python-parso") |
| 22416 | (version "0.8.3") |
| 22417 | (source |
| 22418 | (origin |
| 22419 | (method url-fetch) |
| 22420 | (uri (pypi-uri "parso" version)) |
| 22421 | (sha256 |
| 22422 | (base32 "185gkxq92kqiw2h5zp1cmyn04055x0lix4hmi5c077xm1clvw1wc")))) |
| 22423 | (native-inputs |
| 22424 | (list python-pytest)) |
| 22425 | (build-system python-build-system) |
| 22426 | (arguments |
| 22427 | `(#:phases |
| 22428 | (modify-phases %standard-phases |
| 22429 | (replace 'check |
| 22430 | (lambda* (#:key tests? #:allow-other-keys) |
| 22431 | (when tests? |
| 22432 | (invoke "pytest" "-vv"))))))) |
| 22433 | (home-page "https://github.com/davidhalter/parso") |
| 22434 | (synopsis "Python Parser") |
| 22435 | (description "Parso is a Python parser that supports error recovery and |
| 22436 | round-trip parsing for different Python versions (in multiple Python versions). |
| 22437 | Parso is also able to list multiple syntax errors in your Python file.") |
| 22438 | (license license:expat))) |
| 22439 | |
| 22440 | (define-public python-async-generator |
| 22441 | (package |
| 22442 | (name "python-async-generator") |
| 22443 | (version "1.10") |
| 22444 | (source |
| 22445 | (origin |
| 22446 | (method url-fetch) |
| 22447 | (uri (pypi-uri "async_generator" version)) |
| 22448 | (sha256 |
| 22449 | (base32 |
| 22450 | "0i11f6z6lix8ixi3vsk6s76zvvpmgrw6zjrcwjm0m4hjdh83vfvf")))) |
| 22451 | (build-system python-build-system) |
| 22452 | (native-inputs |
| 22453 | (list python-pytest)) |
| 22454 | (home-page "https://github.com/python-trio/async_generator") |
| 22455 | (synopsis "Async generators and context managers for Python 3.5+") |
| 22456 | (description "@code{async_generator} back-ports Python 3.6's native async |
| 22457 | generators and Python 3.7's context managers into Python 3.5.") |
| 22458 | ;; Dual licensed. |
| 22459 | (license (list license:expat license:asl2.0)))) |
| 22460 | |
| 22461 | (define-public python-async-timeout |
| 22462 | (package |
| 22463 | (name "python-async-timeout") |
| 22464 | (version "4.0.2") |
| 22465 | (source |
| 22466 | (origin |
| 22467 | (method url-fetch) |
| 22468 | (uri (pypi-uri "async-timeout" version)) |
| 22469 | (sha256 |
| 22470 | (base32 |
| 22471 | "05bbjz16n1a7m1s3lmcwri2x5rc7hnh6f2hdr2lbflnv1mjf2qr1")))) |
| 22472 | (build-system python-build-system) |
| 22473 | (home-page "https://github.com/aio-libs/async-timeout") |
| 22474 | (synopsis "Timeout context manager for asyncio programs") |
| 22475 | (description "@code{async-timeout} provides a timeout timeout context |
| 22476 | manager compatible with @code{asyncio}.") |
| 22477 | (license license:asl2.0))) |
| 22478 | |
| 22479 | (define-public python-glob2 |
| 22480 | (package |
| 22481 | (name "python-glob2") |
| 22482 | (version "0.7") |
| 22483 | (source |
| 22484 | (origin |
| 22485 | (method git-fetch) |
| 22486 | (uri (git-reference |
| 22487 | (url "https://github.com/miracle2k/python-glob2") |
| 22488 | (commit (string-append "v" version)))) |
| 22489 | (file-name (git-file-name name version)) |
| 22490 | (sha256 |
| 22491 | (base32 "160nh2ay9lw2hi0rixpzb2k87r6ql56k0j2cm87lqz8xc8zbw919")))) |
| 22492 | (build-system python-build-system) |
| 22493 | (home-page "https://github.com/miracle2k/python-glob2/") |
| 22494 | (synopsis "Extended Version of the python buildin glob module") |
| 22495 | (description "This is an extended version of the Python |
| 22496 | @url{http://docs.python.org/library/glob.html, built-in glob module} which |
| 22497 | adds: |
| 22498 | |
| 22499 | @itemize |
| 22500 | @item The ability to capture the text matched by glob patterns, and return |
| 22501 | those matches alongside the file names. |
| 22502 | @item A recursive @code{**} globbing syntax, akin for example to the |
| 22503 | @code{globstar} option of Bash. |
| 22504 | @item The ability to replace the file system functions used, in order to glob |
| 22505 | on virtual file systems. |
| 22506 | @item Compatible with Python 2 and Python 3 (tested with 3.3). |
| 22507 | @end itemize |
| 22508 | |
| 22509 | Glob2 currently based on the glob code from Python 3.3.1.") |
| 22510 | (license license:bsd-2))) |
| 22511 | |
| 22512 | (define-public python-gipc |
| 22513 | (package |
| 22514 | (name "python-gipc") |
| 22515 | (version "0.6.0") |
| 22516 | (source |
| 22517 | (origin |
| 22518 | (method url-fetch) |
| 22519 | (uri (pypi-uri "gipc" version ".zip")) |
| 22520 | (sha256 |
| 22521 | (base32 |
| 22522 | "0pd9by719qh882hqs6xpby61sn1x5h98hms5p2p8yqnycrf1s0h2")))) |
| 22523 | (build-system python-build-system) |
| 22524 | (native-inputs |
| 22525 | (list unzip)) |
| 22526 | (propagated-inputs |
| 22527 | (list python-gevent)) |
| 22528 | (home-page "https://gehrcke.de/gipc/") |
| 22529 | (synopsis "Child process management in the context of gevent") |
| 22530 | (description "Usage of Python's multiprocessing package in a |
| 22531 | gevent-powered application may raise problems. With @code{gipc}, |
| 22532 | process-based child processes can safely be created anywhere within a |
| 22533 | gevent-powered application.") |
| 22534 | (license license:expat))) |
| 22535 | |
| 22536 | (define-public python-beautifultable |
| 22537 | (package |
| 22538 | (name "python-beautifultable") |
| 22539 | (version "1.0.0") |
| 22540 | (source |
| 22541 | (origin |
| 22542 | (method url-fetch) |
| 22543 | (uri (pypi-uri "beautifultable" version)) |
| 22544 | (sha256 |
| 22545 | (base32 |
| 22546 | "0wwlbifcbpzy3wfv6yzsxncarsngzizmmxbn6cy5gazlcq7h4k5x")))) |
| 22547 | (build-system python-build-system) |
| 22548 | (propagated-inputs |
| 22549 | (list python-wcwidth)) |
| 22550 | (arguments |
| 22551 | `(#:phases |
| 22552 | (modify-phases %standard-phases |
| 22553 | (add-after 'unpack 'patch-setup.py |
| 22554 | (lambda _ |
| 22555 | (substitute* "setup.py" |
| 22556 | (("setup\\(") |
| 22557 | "setup(\n test_suite=\"test\","))))))) |
| 22558 | (home-page "https://github.com/pri22296/beautifultable") |
| 22559 | (synopsis "Print ASCII tables for terminals") |
| 22560 | (description "@code{python-beautifultable} provides a class for easily |
| 22561 | printing tabular data in a visually appealing ASCII format to a terminal. |
| 22562 | |
| 22563 | Features include, but are not limited to: |
| 22564 | @itemize |
| 22565 | @item Full customization of the look and feel of the table |
| 22566 | @item Row and column accessors. |
| 22567 | @item Full support for colors using ANSI sequences or any library. |
| 22568 | @item Plenty of predefined styles and option to create custom ones. |
| 22569 | @item Support for Unicode characters. |
| 22570 | @item Supports streaming table when data is slow to retrieve. |
| 22571 | @end itemize") |
| 22572 | (license license:expat))) |
| 22573 | |
| 22574 | (define-public python-globber |
| 22575 | (package |
| 22576 | (name "python-globber") |
| 22577 | (version "0.2.1") |
| 22578 | (source |
| 22579 | (origin |
| 22580 | (method git-fetch) |
| 22581 | (uri (git-reference |
| 22582 | (url "https://github.com/asharov/globber") |
| 22583 | (commit version))) |
| 22584 | (file-name (git-file-name name version)) |
| 22585 | (sha256 |
| 22586 | (base32 |
| 22587 | "055xf7ja7zjhxis0ab5fnfsx16fsvr5fvc6mixqybanwxh8sgfjk")))) |
| 22588 | (build-system python-build-system) |
| 22589 | (home-page "https://github.com/asharov/globber") |
| 22590 | (synopsis "Library for string matching with glob patterns") |
| 22591 | (description |
| 22592 | "Globber is a Python library for matching file names against glob patterns. |
| 22593 | In contrast to other glob-matching libraries, it matches arbitrary strings and |
| 22594 | doesn't require the matched names to be existing files. In addition, it |
| 22595 | supports the globstar @code{**} operator to match an arbitrary number of |
| 22596 | path components.") |
| 22597 | (license license:asl2.0))) |
| 22598 | |
| 22599 | (define-public python-git-hammer |
| 22600 | (package |
| 22601 | (name "python-git-hammer") |
| 22602 | (version "0.3.1") |
| 22603 | (source |
| 22604 | (origin |
| 22605 | (method git-fetch) |
| 22606 | (uri (git-reference |
| 22607 | (url "https://github.com/asharov/git-hammer") |
| 22608 | (commit version))) |
| 22609 | (file-name (git-file-name name version)) |
| 22610 | (sha256 |
| 22611 | (base32 |
| 22612 | "0f9xlk86ijzpdj25hr1q4wcy8k72v3w470ngwm9mpdkfj8ng84wr")))) |
| 22613 | (build-system python-build-system) |
| 22614 | (arguments |
| 22615 | `(#:phases |
| 22616 | (modify-phases %standard-phases |
| 22617 | (add-after 'unpack 'patch-setup.py |
| 22618 | (lambda _ |
| 22619 | (substitute* "setup.py" |
| 22620 | (("setup\\(") |
| 22621 | "setup(\n test_suite=\"test\","))))))) |
| 22622 | (propagated-inputs |
| 22623 | (list python-beautifultable |
| 22624 | python-dateutil |
| 22625 | python-gitpython |
| 22626 | python-globber |
| 22627 | python-matplotlib |
| 22628 | python-sqlalchemy |
| 22629 | python-sqlalchemy-utils)) |
| 22630 | (home-page "https://github.com/asharov/git-hammer") |
| 22631 | (synopsis "Provide statistics for git repositories") |
| 22632 | (description |
| 22633 | "Git Hammer is a statistics tool for projects in git repositories. |
| 22634 | Its major feature is tracking the number of lines authored by each person for every |
| 22635 | commit, but it also includes some other useful statistics.") |
| 22636 | (license license:asl2.0))) |
| 22637 | |
| 22638 | (define-public python-fusepy |
| 22639 | (package |
| 22640 | (name "python-fusepy") |
| 22641 | (version "2.0.4") |
| 22642 | (source |
| 22643 | (origin |
| 22644 | (method url-fetch) |
| 22645 | (uri (pypi-uri "fusepy" version)) |
| 22646 | (sha256 |
| 22647 | (base32 |
| 22648 | "0v5grm4zyf58hsplwsxfbihddw95lz9w8cy3rpzbyha287swgx8h")))) |
| 22649 | (build-system python-build-system) |
| 22650 | (arguments |
| 22651 | `(#:phases |
| 22652 | (modify-phases %standard-phases |
| 22653 | (add-before 'build 'set-library-file-name |
| 22654 | (lambda* (#:key inputs #:allow-other-keys) |
| 22655 | (let ((fuse (assoc-ref inputs "fuse"))) |
| 22656 | (substitute* "fuse.py" |
| 22657 | (("find_library\\('fuse'\\)") |
| 22658 | (string-append "'" fuse "/lib/libfuse.so'"))) |
| 22659 | #t)))))) |
| 22660 | (propagated-inputs |
| 22661 | (list fuse)) |
| 22662 | (home-page "https://github.com/fusepy/fusepy") |
| 22663 | (synopsis "Simple ctypes bindings for FUSE") |
| 22664 | (description "Python module that provides a simple interface to FUSE and |
| 22665 | MacFUSE. The binding is created using the standard @code{ctypes} library.") |
| 22666 | (license license:isc))) |
| 22667 | |
| 22668 | (define-public python-fusepyng |
| 22669 | (package |
| 22670 | (name "python-fusepyng") |
| 22671 | (version "1.0.7") |
| 22672 | (source |
| 22673 | (origin |
| 22674 | (method url-fetch) |
| 22675 | (uri (pypi-uri "fusepyng" version)) |
| 22676 | (sha256 |
| 22677 | (base32 |
| 22678 | "17w9iw6m6zjbmnhs4ikd27pq4mb1nan6k4ahlwyz40463vw6wkwb")))) |
| 22679 | (build-system python-build-system) |
| 22680 | (arguments |
| 22681 | '(#:phases |
| 22682 | (modify-phases %standard-phases |
| 22683 | (add-after 'unpack 'set-libfuse-path |
| 22684 | (lambda* (#:key inputs #:allow-other-keys) |
| 22685 | (let ((fuse (assoc-ref inputs "fuse"))) |
| 22686 | (substitute* "fusepyng.py" |
| 22687 | (("os.environ.get\\('FUSE_LIBRARY_PATH'\\)") |
| 22688 | (string-append "\"" fuse "/lib/libfuse.so\"")))) |
| 22689 | #t))))) |
| 22690 | (inputs |
| 22691 | (list fuse)) |
| 22692 | (propagated-inputs |
| 22693 | (list python-paramiko)) |
| 22694 | (home-page "https://github.com/rianhunter/fusepyng") |
| 22695 | (synopsis "Simple ctypes bindings for FUSE") |
| 22696 | (description "@code{fusepyng} is a Python module that provides a simple |
| 22697 | interface to FUSE on various operating systems. It's just one file and is |
| 22698 | implemented using @code{ctypes}.") |
| 22699 | (license license:isc))) |
| 22700 | |
| 22701 | (define-public python-update-checker |
| 22702 | (package |
| 22703 | (name "python-update-checker") |
| 22704 | (version "0.18.0") |
| 22705 | (source |
| 22706 | (origin |
| 22707 | (method url-fetch) |
| 22708 | (uri (pypi-uri "update-checker" version)) |
| 22709 | (sha256 |
| 22710 | (base32 "04yb5a9mi45ax50m2m0ih6gdvkk1j7gfmy83dd58i1f59axlabba")))) |
| 22711 | (build-system python-build-system) |
| 22712 | (propagated-inputs (list python-requests)) |
| 22713 | (native-inputs (list python-black python-flake8 python-pytest)) |
| 22714 | (home-page "https://github.com/bboe/update_checker") |
| 22715 | (synopsis "Python module that will check for package updates") |
| 22716 | (description "This package provides a Python module that will check for |
| 22717 | package updates.") |
| 22718 | (license license:bsd-2))) |
| 22719 | |
| 22720 | (define-public python-userspacefs |
| 22721 | (package |
| 22722 | (name "python-userspacefs") |
| 22723 | (version "2.0.5") |
| 22724 | (source |
| 22725 | (origin |
| 22726 | (method url-fetch) |
| 22727 | (uri (pypi-uri "userspacefs" version)) |
| 22728 | (sha256 |
| 22729 | (base32 |
| 22730 | "0v0qkdwfc61s2yiq7d7amin93x5biypfmi9pfhf8yj1rdpx5yvsx")))) |
| 22731 | (build-system python-build-system) |
| 22732 | (propagated-inputs |
| 22733 | (list python-fusepyng)) |
| 22734 | (home-page "https://github.com/rianhunter/userspacefs") |
| 22735 | (synopsis "User-space file systems for Python") |
| 22736 | (description |
| 22737 | "@code{userspacefs} is a library that allows you to easily write |
| 22738 | user-space file systems in Python.") |
| 22739 | (license license:gpl3+))) |
| 22740 | |
| 22741 | (define-public python-stone |
| 22742 | (package |
| 22743 | (name "python-stone") |
| 22744 | (version "3.2.1") |
| 22745 | (source |
| 22746 | (origin |
| 22747 | (method url-fetch) |
| 22748 | (uri (pypi-uri "stone" version)) |
| 22749 | (sha256 |
| 22750 | (base32 |
| 22751 | "0xby5mpsms7b2rv8j6mvxzmzz5i9ii01brb9ylxz6kiv2i08piwv")))) |
| 22752 | (build-system python-build-system) |
| 22753 | (arguments |
| 22754 | `(#:phases |
| 22755 | (modify-phases %standard-phases |
| 22756 | (add-after 'unpack 'change-version-requirements |
| 22757 | (lambda _ |
| 22758 | ;; Match the requirement in test/requirements.txt |
| 22759 | (substitute* "setup.py" |
| 22760 | (("pytest < 5") "pytest < 7")) |
| 22761 | ;; We don't care about a coverage report. |
| 22762 | (substitute* "test/requirements.txt" |
| 22763 | (("coverage.*") "coverage\n")))) |
| 22764 | (replace 'check |
| 22765 | (lambda* (#:key tests? #:allow-other-keys) |
| 22766 | (when tests? |
| 22767 | ;; These tests don't import currectly. |
| 22768 | (delete-file "test/test_js_client.py") |
| 22769 | (delete-file "test/test_tsd_types.py") |
| 22770 | (delete-file "test/test_python_gen.py") |
| 22771 | (invoke "pytest"))))))) |
| 22772 | (propagated-inputs |
| 22773 | (list python-ply python-six)) |
| 22774 | (native-inputs |
| 22775 | (list python-coverage python-mock python-pytest python-pytest-runner)) |
| 22776 | (home-page "https://github.com/dropbox/stone") |
| 22777 | (synopsis "Official Api Spec Language for Dropbox") |
| 22778 | (description |
| 22779 | "Stone is an interface description language (IDL) for APIs.") |
| 22780 | (license license:expat))) |
| 22781 | |
| 22782 | (define-public pybind11 |
| 22783 | (package |
| 22784 | (name "pybind11") |
| 22785 | (version "2.8.1") |
| 22786 | (source (origin |
| 22787 | (method git-fetch) |
| 22788 | (uri (git-reference |
| 22789 | (url "https://github.com/pybind/pybind11") |
| 22790 | (commit (string-append "v" version)))) |
| 22791 | (sha256 |
| 22792 | (base32 |
| 22793 | "10hrkrh78sk7k0ydw1ghmp7gvpwmkby0l2s0kf2iaj9sz0vijkhs")) |
| 22794 | (file-name (git-file-name name version)))) |
| 22795 | (build-system cmake-build-system) |
| 22796 | (native-inputs |
| 22797 | `(("python" ,python-wrapper) |
| 22798 | |
| 22799 | ;; The following dependencies are used for tests. |
| 22800 | ("python-pytest" ,python-pytest) |
| 22801 | ("catch" ,catch2-1) |
| 22802 | ("eigen" ,eigen))) |
| 22803 | (arguments |
| 22804 | `(#:configure-flags |
| 22805 | (list (string-append "-DCATCH_INCLUDE_DIR=" |
| 22806 | (assoc-ref %build-inputs "catch") |
| 22807 | "/include/catch")) |
| 22808 | |
| 22809 | #:phases (modify-phases %standard-phases |
| 22810 | (add-after 'install 'install-python |
| 22811 | (lambda* (#:key outputs #:allow-other-keys) |
| 22812 | (let ((out (assoc-ref outputs "out"))) |
| 22813 | (with-directory-excursion "../source" |
| 22814 | (setenv "PYBIND11_USE_CMAKE" "yes") |
| 22815 | (invoke "python" "setup.py" "install" |
| 22816 | "--single-version-externally-managed" |
| 22817 | "--root=/" |
| 22818 | (string-append "--prefix=" out))))))) |
| 22819 | |
| 22820 | #:test-target "check")) |
| 22821 | (home-page "https://github.com/pybind/pybind11/") |
| 22822 | (synopsis "Seamless operability between C++11 and Python") |
| 22823 | (description |
| 22824 | "@code{pybind11} is a lightweight header-only library that exposes C++ |
| 22825 | types in Python and vice versa, mainly to create Python bindings of existing |
| 22826 | C++ code. Its goals and syntax are similar to the @code{Boost.Python} |
| 22827 | library: to minimize boilerplate code in traditional extension modules by |
| 22828 | inferring type information using compile-time introspection.") |
| 22829 | (license license:bsd-3))) |
| 22830 | |
| 22831 | ;; This is needed for python-vaex-core. |
| 22832 | (define-public pybind11-2.3 |
| 22833 | (package |
| 22834 | (inherit pybind11) |
| 22835 | (name "pybind11") |
| 22836 | (version "2.3.0") |
| 22837 | (source (origin |
| 22838 | (method git-fetch) |
| 22839 | (uri (git-reference |
| 22840 | (url "https://github.com/pybind/pybind11") |
| 22841 | (commit (string-append "v" version)))) |
| 22842 | (sha256 |
| 22843 | (base32 |
| 22844 | "11b6dniri8m05spfd2a19irz82shf4sdca73566bniggrf3zclnf")) |
| 22845 | (file-name (git-file-name name version)))) |
| 22846 | (arguments |
| 22847 | (substitute-keyword-arguments (package-arguments pybind11) |
| 22848 | ((#:tests? tests? #false) |
| 22849 | #false))))) |
| 22850 | |
| 22851 | (define-public python-pooch |
| 22852 | (package |
| 22853 | (name "python-pooch") |
| 22854 | (version "1.3.0") |
| 22855 | (source |
| 22856 | (origin |
| 22857 | (method url-fetch) |
| 22858 | (uri (pypi-uri "pooch" version)) |
| 22859 | (sha256 |
| 22860 | (base32 "1618adsg9r8fsv422sv35z1i723q3a1iir5v7dv2sklh4pl4im1h")))) |
| 22861 | (build-system python-build-system) |
| 22862 | (arguments |
| 22863 | `(#:tests? #f)) ;requires online data |
| 22864 | (propagated-inputs |
| 22865 | (list python-appdirs python-packaging python-requests)) |
| 22866 | (home-page "https://github.com/fatiando/pooch") |
| 22867 | (synopsis "Manage your Python library's sample data files") |
| 22868 | (description |
| 22869 | "Pooch manages your Python library's sample data files: it automatically |
| 22870 | downloads and stores them in a local directory, with support for versioning |
| 22871 | and corruption checks.") |
| 22872 | (license license:bsd-3))) |
| 22873 | |
| 22874 | (define-public python-fasteners |
| 22875 | (package |
| 22876 | (name "python-fasteners") |
| 22877 | (version "0.15") |
| 22878 | (source |
| 22879 | (origin |
| 22880 | (method url-fetch) |
| 22881 | (uri (pypi-uri "fasteners" version)) |
| 22882 | (sha256 |
| 22883 | (base32 |
| 22884 | "1vzmz1xh38b84dv0f4hlp7arwmx8wjlih6lf964bpy8dnyk6s5rs")))) |
| 22885 | (build-system python-build-system) |
| 22886 | (propagated-inputs |
| 22887 | (list python-monotonic python-six)) |
| 22888 | (native-inputs |
| 22889 | (list python-testtools)) |
| 22890 | (home-page "https://github.com/harlowja/fasteners") |
| 22891 | (synopsis "Python package that provides useful locks") |
| 22892 | (description |
| 22893 | "This package provides a Python program that provides following locks: |
| 22894 | |
| 22895 | @itemize |
| 22896 | @item Locking decorator |
| 22897 | @item Reader-writer locks |
| 22898 | @item Inter-process locks |
| 22899 | @item Generic helpers |
| 22900 | @end itemize\n") |
| 22901 | (license license:asl2.0))) |
| 22902 | |
| 22903 | (define-public python-requests-file |
| 22904 | (package |
| 22905 | (name "python-requests-file") |
| 22906 | (version "1.5.1") |
| 22907 | (source |
| 22908 | (origin |
| 22909 | (method url-fetch) |
| 22910 | (uri (pypi-uri "requests-file" version)) |
| 22911 | (sha256 |
| 22912 | (base32 "13kx4k83i9zcv20h0fnmawwwdzhcmw1z97mqib1h379qsc445mq7")))) |
| 22913 | (build-system python-build-system) |
| 22914 | (arguments |
| 22915 | `(#:phases |
| 22916 | (modify-phases %standard-phases |
| 22917 | (replace 'check |
| 22918 | (lambda* (#:key tests? #:allow-other-keys) |
| 22919 | (when tests? |
| 22920 | (invoke "python" "tests/test_requests_file.py"))))))) |
| 22921 | (propagated-inputs |
| 22922 | (list python-requests python-six)) |
| 22923 | (home-page "https://github.com/dashea/requests-file") |
| 22924 | (synopsis "File transport adapter for Requests") |
| 22925 | (description |
| 22926 | "Requests-File is a transport adapter for use with the Requests Python |
| 22927 | library to allow local file system access via @code{file://} URLs.") |
| 22928 | (license license:asl2.0))) |
| 22929 | |
| 22930 | (define-public python-identify |
| 22931 | (package |
| 22932 | (name "python-identify") |
| 22933 | (version "1.4.25") |
| 22934 | (source |
| 22935 | (origin |
| 22936 | ;; There are no tests in the PyPI tarball. |
| 22937 | (method git-fetch) |
| 22938 | (uri (git-reference |
| 22939 | (url "https://github.com/chriskuehl/identify") |
| 22940 | (commit (string-append "v" version)))) |
| 22941 | (file-name (git-file-name name version)) |
| 22942 | (sha256 |
| 22943 | (base32 "1fqgci6skckcq0x5pnxh6k2qjzn1ndsrgha1j6wwv1ld4g9bd3hz")))) |
| 22944 | (build-system python-build-system) |
| 22945 | (arguments |
| 22946 | `(#:phases |
| 22947 | (modify-phases %standard-phases |
| 22948 | ;; system-error "utime" "~A" ("No such file or directory") |
| 22949 | (delete 'ensure-no-mtimes-pre-1980) |
| 22950 | (replace 'check |
| 22951 | (lambda* (#:key tests? #:allow-other-keys) |
| 22952 | (when tests? |
| 22953 | (invoke "pytest" "-vv"))))))) |
| 22954 | (native-inputs |
| 22955 | (list python-coverage python-pytest)) |
| 22956 | (propagated-inputs |
| 22957 | (list python-editdistance)) |
| 22958 | (home-page "https://github.com/chriskuehl/identify") |
| 22959 | (synopsis "File identification library for Python") |
| 22960 | (description |
| 22961 | "@code{identify} is a file identification library for Python. Given |
| 22962 | a file (or some information about a file), return a set of standardized tags |
| 22963 | identifying what the file is.") |
| 22964 | (license license:expat))) |
| 22965 | |
| 22966 | (define-public python-tldextract |
| 22967 | (package |
| 22968 | (name "python-tldextract") |
| 22969 | (version "3.3.0") |
| 22970 | (source |
| 22971 | (origin |
| 22972 | (method url-fetch) |
| 22973 | (uri (pypi-uri "tldextract" version)) |
| 22974 | (sha256 |
| 22975 | (base32 |
| 22976 | "1wac4yvcpgqjvls770mfx165amvy7gr00nnd2w24bqqwyamj9kdd")))) |
| 22977 | (build-system python-build-system) |
| 22978 | (native-inputs |
| 22979 | (list python-pytest python-responses python-setuptools-scm)) |
| 22980 | (propagated-inputs |
| 22981 | (list python-filelock python-idna python-requests python-requests-file)) |
| 22982 | (home-page |
| 22983 | "https://github.com/john-kurkowski/tldextract") |
| 22984 | (synopsis |
| 22985 | "Separate the TLD from the registered domain and subdomains of a URL") |
| 22986 | (description |
| 22987 | "TLDExtract accurately separates the TLD from the registered domain and |
| 22988 | subdomains of a URL, using the Public Suffix List. By default, this includes |
| 22989 | the public ICANN TLDs and their exceptions. It can optionally support the |
| 22990 | Public Suffix List's private domains as well.") |
| 22991 | (license license:bsd-3))) |
| 22992 | |
| 22993 | (define-public python-tldr |
| 22994 | (package |
| 22995 | (name "python-tldr") |
| 22996 | (version "3.1.0") |
| 22997 | (source |
| 22998 | (origin |
| 22999 | ;; There's no test in PyPI. |
| 23000 | (method git-fetch) |
| 23001 | (uri (git-reference |
| 23002 | (url "https://github.com/tldr-pages/tldr-python-client") |
| 23003 | (commit version))) |
| 23004 | (file-name (git-file-name name version)) |
| 23005 | (sha256 |
| 23006 | (base32 "1hxmprqg8c4cvs19n7f80f3y7jj74i8sc2dmq2gdjmsdrb54bbzc")))) |
| 23007 | (build-system python-build-system) |
| 23008 | (arguments |
| 23009 | (list #:phases |
| 23010 | #~(modify-phases %standard-phases |
| 23011 | (add-after 'build 'build-doc |
| 23012 | (lambda _ |
| 23013 | (invoke "make" "-C" "docs"))) |
| 23014 | (replace 'check |
| 23015 | (lambda* (#:key tests? #:allow-other-keys) |
| 23016 | (when tests? |
| 23017 | ;; This test fails. It tries to open a network socket. |
| 23018 | (invoke "pytest" "-vv" "-k" "not test_error_message"))))))) |
| 23019 | (native-inputs |
| 23020 | (list python-pytest python-pytest-runner python-sphinx-argparse)) |
| 23021 | (inputs |
| 23022 | (list python-argcomplete python-colorama python-termcolor python-shtab)) |
| 23023 | (home-page "https://github.com/tldr-pages/tldr-python-client") |
| 23024 | (synopsis "Python command-line client for tldr pages") |
| 23025 | (description "This package provides the @code{tldr} command allowing users |
| 23026 | to view @code{tldr} pages from a shell. The @code{tldr} pages are a community |
| 23027 | effort to simplify the man pages with practical examples.") |
| 23028 | (license license:expat))) ; MIT license |
| 23029 | |
| 23030 | (define-public python-nodeenv |
| 23031 | (package |
| 23032 | (name "python-nodeenv") |
| 23033 | (version "1.4.0") |
| 23034 | (source |
| 23035 | (origin |
| 23036 | ;; There's no tarball in PyPI. |
| 23037 | (method git-fetch) |
| 23038 | (uri (git-reference |
| 23039 | (url "https://github.com/ekalinin/nodeenv") |
| 23040 | (commit version))) |
| 23041 | (file-name (git-file-name name version)) |
| 23042 | (sha256 |
| 23043 | (base32 "0y443icx0w7jlzmxmmcm4q8dqfiwgafbb9cp8jpm68mbqxbz40a7")))) |
| 23044 | (build-system python-build-system) |
| 23045 | (arguments |
| 23046 | `(#:phases |
| 23047 | (modify-phases %standard-phases |
| 23048 | (replace 'check |
| 23049 | (lambda _ |
| 23050 | ;; This test fails. It tries to open a network socket. |
| 23051 | (invoke "pytest" "-vv" "-k" "not test_smoke")))))) |
| 23052 | (native-inputs |
| 23053 | (list python-coverage python-mock python-pytest)) |
| 23054 | (home-page "https://ekalinin.github.io/nodeenv/") |
| 23055 | (synopsis "Create isolated node.js environments") |
| 23056 | (description |
| 23057 | "Nodeenv (node.js virtual environment) is a tool to create isolated |
| 23058 | node.js environments. It creates an environment that has its own installation |
| 23059 | directories, that doesn't share libraries with other node.js virtual |
| 23060 | environments.") |
| 23061 | (license license:bsd-3))) |
| 23062 | |
| 23063 | (define-public python-pynamecheap |
| 23064 | (package |
| 23065 | (name "python-pynamecheap") |
| 23066 | (version "0.0.3") |
| 23067 | (source |
| 23068 | (origin |
| 23069 | (method url-fetch) |
| 23070 | (uri (pypi-uri "PyNamecheap" version)) |
| 23071 | (sha256 |
| 23072 | (base32 |
| 23073 | "0wkbwz208j8nfrsmzmclvxg22ymknn0mlz76wbdza9k2bx2zja6l")))) |
| 23074 | (build-system python-build-system) |
| 23075 | (propagated-inputs |
| 23076 | (list python-requests)) |
| 23077 | (home-page |
| 23078 | "https://github.com/Bemmu/PyNamecheap") |
| 23079 | (synopsis |
| 23080 | "Namecheap API client in Python") |
| 23081 | (description |
| 23082 | "PyNamecheap is a Namecheap API client in Python.") |
| 23083 | (license license:expat))) |
| 23084 | |
| 23085 | (define-public python-dns-lexicon |
| 23086 | (package |
| 23087 | (name "python-dns-lexicon") |
| 23088 | (version "2.4.0") |
| 23089 | (source |
| 23090 | (origin |
| 23091 | (method url-fetch) |
| 23092 | (uri (pypi-uri "dns-lexicon" version)) |
| 23093 | (sha256 |
| 23094 | (base32 |
| 23095 | "0jdn3ns71bsybr7njgsqr9xlxsqh7zh6phn4ld0liazqdn2l5f6m")))) |
| 23096 | (build-system python-build-system) |
| 23097 | (arguments |
| 23098 | `(#:tests? #f)) ;requires internet access |
| 23099 | (propagated-inputs |
| 23100 | (list python-future python-pynamecheap python-requests |
| 23101 | python-tldextract python-urllib3)) |
| 23102 | (home-page "https://github.com/AnalogJ/lexicon") |
| 23103 | (synopsis |
| 23104 | "Manipulate DNS records on various DNS providers") |
| 23105 | (description |
| 23106 | "Lexicon provides a way to manipulate DNS records on multiple DNS |
| 23107 | providers in a standardized way. It has a CLI but it can also be used as a |
| 23108 | Python library. It was designed to be used in automation, specifically with |
| 23109 | Let's Encrypt.") |
| 23110 | (license license:expat))) |
| 23111 | |
| 23112 | (define-public python-cfgv |
| 23113 | (package |
| 23114 | (name "python-cfgv") |
| 23115 | (version "3.3.1") |
| 23116 | (source |
| 23117 | (origin |
| 23118 | ;; There are no tests in the PyPI tarball. |
| 23119 | (method git-fetch) |
| 23120 | (uri (git-reference |
| 23121 | (url "https://github.com/asottile/cfgv") |
| 23122 | (commit (string-append "v" version)))) |
| 23123 | (file-name (git-file-name name version)) |
| 23124 | (sha256 |
| 23125 | (base32 "1pci97cmn3v45sfch9s3lshidrl0309ls9byidic0l8drkwnkwcj")))) |
| 23126 | (build-system python-build-system) |
| 23127 | (arguments |
| 23128 | `(#:phases |
| 23129 | (modify-phases %standard-phases |
| 23130 | (replace 'check |
| 23131 | (lambda* (#:key tests? #:allow-other-keys) |
| 23132 | (when tests? |
| 23133 | (invoke "pytest" "-vv"))))))) |
| 23134 | (native-inputs |
| 23135 | (list python-pytest)) |
| 23136 | (home-page "https://github.com/asottile/cfgv") |
| 23137 | (synopsis "Configuration validation library") |
| 23138 | (description |
| 23139 | "This library helps to validate configuration files and produce human |
| 23140 | readable error messages.") |
| 23141 | (license license:expat))) |
| 23142 | |
| 23143 | (define-public python-commandlines |
| 23144 | (package |
| 23145 | (name "python-commandlines") |
| 23146 | (version "0.4.1") |
| 23147 | (source |
| 23148 | (origin |
| 23149 | (method url-fetch) |
| 23150 | (uri (pypi-uri "commandlines" version)) |
| 23151 | (sha256 |
| 23152 | (base32 |
| 23153 | "0r7xcr0knv02p4mswa2bng61nn8nbhhrs6kvdnb9bb3hhjvm1dl6")))) |
| 23154 | (build-system python-build-system) |
| 23155 | (home-page "https://github.com/chrissimpkins/commandlines") |
| 23156 | (synopsis "Command line argument to object parsing library") |
| 23157 | (description |
| 23158 | "@code{Commandlines} is a Python library for command line application |
| 23159 | development that supports command line argument parsing, command string |
| 23160 | validation testing and application logic.") |
| 23161 | (license license:expat))) |
| 23162 | |
| 23163 | ;; Make sure to upgrade python-llvmlite in (gnu packages llvm) together with |
| 23164 | ;; python-numba. They have a very unflexible relationship. |
| 23165 | (define-public python-numba |
| 23166 | (package |
| 23167 | (name "python-numba") |
| 23168 | (version "0.55.1") |
| 23169 | (source |
| 23170 | (origin |
| 23171 | (method url-fetch) |
| 23172 | (uri (pypi-uri "numba" version)) |
| 23173 | (sha256 |
| 23174 | (base32 |
| 23175 | "18rf8i32m1045zxglvicpgldvzmqdxqvs3dhjd7wilb64sd0ds83")))) |
| 23176 | (build-system python-build-system) |
| 23177 | (arguments |
| 23178 | `(#:phases |
| 23179 | (modify-phases %standard-phases |
| 23180 | (add-after 'unpack 'disable-proprietary-features |
| 23181 | (lambda _ |
| 23182 | (setenv "NUMBA_DISABLE_HSA" "1") |
| 23183 | (setenv "NUMBA_DISABLE_CUDA" "1"))) |
| 23184 | (add-after 'unpack 'disable-failing-tests |
| 23185 | (lambda _ |
| 23186 | ;; This one test fails because a deprecation warning is printed. |
| 23187 | (substitute* "numba/tests/test_import.py" |
| 23188 | (("def test_no_accidental_warnings") |
| 23189 | "def disabled_test_no_accidental_warnings")))) |
| 23190 | (replace 'check |
| 23191 | (lambda* (#:key tests? inputs outputs #:allow-other-keys) |
| 23192 | (when tests? |
| 23193 | (add-installed-pythonpath inputs outputs) |
| 23194 | ;; Something is wrong with the PYTHONPATH when running the |
| 23195 | ;; tests from the build directory, as it complains about not being |
| 23196 | ;; able to import certain modules. |
| 23197 | (with-directory-excursion "/tmp" |
| 23198 | (setenv "HOME" (getcwd)) |
| 23199 | (invoke "python3" "-m" "numba.runtests" "-v" "-m")))))))) |
| 23200 | (propagated-inputs |
| 23201 | (list python-llvmlite python-numpy python-singledispatch)) |
| 23202 | (native-inputs ;for tests |
| 23203 | (list python-jinja2 python-pygments)) |
| 23204 | (home-page "https://numba.pydata.org") |
| 23205 | (synopsis "Compile Python code using LLVM") |
| 23206 | (description "Numba gives you the power to speed up your applications with |
| 23207 | high performance functions written directly in Python. With a few |
| 23208 | annotations, array-oriented and math-heavy Python code can be just-in-time |
| 23209 | compiled to native machine instructions, similar in performance to C, C++ and |
| 23210 | Fortran, without having to switch languages or Python interpreters. |
| 23211 | |
| 23212 | Numba works by generating optimized machine code using the LLVM compiler |
| 23213 | infrastructure at import time, runtime, or statically (using the included pycc |
| 23214 | tool).") |
| 23215 | (license license:bsd-3))) |
| 23216 | |
| 23217 | (define-public python-numcodecs |
| 23218 | (package |
| 23219 | (name "python-numcodecs") |
| 23220 | (version "0.6.4") |
| 23221 | (source |
| 23222 | (origin |
| 23223 | (method url-fetch) |
| 23224 | (uri (pypi-uri "numcodecs" version)) |
| 23225 | (sha256 |
| 23226 | (base32 |
| 23227 | "0kbfr8pl3x9glsypbq8hzim003f16ml1b1cvgrh4w1sdvgal6j7g")) |
| 23228 | (modules '((guix build utils))) |
| 23229 | (snippet |
| 23230 | '(begin |
| 23231 | (delete-file-recursively "c-blosc") |
| 23232 | (for-each delete-file '("numcodecs/blosc.c" |
| 23233 | "numcodecs/compat_ext.c" |
| 23234 | "numcodecs/lz4.c" |
| 23235 | "numcodecs/vlen.c" |
| 23236 | "numcodecs/zstd.c")))))) |
| 23237 | (build-system python-build-system) |
| 23238 | (arguments |
| 23239 | `(#:tests? #false ; TODO: unclear why numcodecs.* are not found |
| 23240 | #:phases |
| 23241 | (modify-phases %standard-phases |
| 23242 | (add-after 'unpack 'disable-avx2 |
| 23243 | (lambda _ |
| 23244 | (setenv "DISABLE_NUMCODECS_AVX2" "1"))) |
| 23245 | (add-after 'unpack 'unbundle |
| 23246 | (lambda _ |
| 23247 | (substitute* "setup.py" |
| 23248 | (("sources=sources \\+ blosc_sources,") |
| 23249 | "sources=sources,") |
| 23250 | (("extra_compile_args=extra_compile_args") |
| 23251 | "extra_compile_args=list(base_compile_args)") |
| 23252 | (("'numcodecs.zstd',") |
| 23253 | "'numcodecs.zstd', libraries=['zstd'], ") |
| 23254 | (("'numcodecs.lz4',") |
| 23255 | "'numcodecs.lz4', libraries=['lz4'], ") |
| 23256 | (("'numcodecs.blosc',") |
| 23257 | "'numcodecs.blosc', libraries=['blosc'], ")))) |
| 23258 | (replace 'check |
| 23259 | (lambda* (#:key tests? inputs outputs #:allow-other-keys) |
| 23260 | (when tests? |
| 23261 | (add-installed-pythonpath inputs outputs) |
| 23262 | (invoke "pytest" "-vv"))))))) |
| 23263 | (inputs |
| 23264 | (list c-blosc lz4 zlib |
| 23265 | `(,zstd "lib"))) |
| 23266 | (propagated-inputs |
| 23267 | (list python-numpy python-msgpack)) |
| 23268 | (native-inputs |
| 23269 | (list python-cython python-pytest python-setuptools-scm)) |
| 23270 | (home-page "https://github.com/zarr-developers/numcodecs") |
| 23271 | (synopsis "Buffer compression and transformation codecs") |
| 23272 | (description |
| 23273 | "This Python package provides buffer compression and transformation |
| 23274 | codecs for use in data storage and communication applications.") |
| 23275 | (license license:expat))) |
| 23276 | |
| 23277 | (define-public python-asciitree |
| 23278 | (package |
| 23279 | (name "python-asciitree") |
| 23280 | (version "0.3.3") |
| 23281 | (source |
| 23282 | (origin |
| 23283 | (method url-fetch) |
| 23284 | (uri (pypi-uri "asciitree" version)) |
| 23285 | (sha256 |
| 23286 | (base32 |
| 23287 | "0vhgri2m2xlnibhz4xwn4hpbc7xacisxjqrk6k5kyppq96vbk92a")))) |
| 23288 | (build-system python-build-system) |
| 23289 | (home-page "https://github.com/mbr/asciitree") |
| 23290 | (synopsis "Draws ASCII trees") |
| 23291 | (description "This package draws tree structures using characters.") |
| 23292 | (license license:expat))) |
| 23293 | |
| 23294 | (define-public python-zarr |
| 23295 | (package |
| 23296 | (name "python-zarr") |
| 23297 | (version "2.4.0") |
| 23298 | (source |
| 23299 | (origin |
| 23300 | (method url-fetch) |
| 23301 | (uri (pypi-uri "zarr" version)) |
| 23302 | (sha256 |
| 23303 | (base32 |
| 23304 | "026n3sjzjv2gmwx6y72b8ij0hk42bc8zdbvfj5gdqzd4i6wj3ajk")))) |
| 23305 | (build-system python-build-system) |
| 23306 | (arguments |
| 23307 | `(#:phases |
| 23308 | (modify-phases %standard-phases |
| 23309 | (add-after 'unpack 'disable-service-tests |
| 23310 | (lambda _ |
| 23311 | (setenv "ZARR_TEST_ABS" "0") |
| 23312 | (setenv "ZARR_TEST_MONGO" "0") |
| 23313 | (setenv "ZARR_TEST_REDIS" "0") |
| 23314 | #t)) |
| 23315 | (replace 'check |
| 23316 | (lambda _ |
| 23317 | (invoke "pytest" "-vv" "-k" "not lmdb") |
| 23318 | #t))))) |
| 23319 | (propagated-inputs |
| 23320 | (list python-asciitree python-fasteners python-numcodecs |
| 23321 | python-numpy)) |
| 23322 | (native-inputs |
| 23323 | (list python-pytest python-setuptools-scm)) |
| 23324 | (home-page "https://github.com/zarr-developers/zarr-python") |
| 23325 | (synopsis "Chunked, compressed, N-dimensional arrays for Python") |
| 23326 | (description |
| 23327 | "This package provides an implementation of chunked, compressed, |
| 23328 | N-dimensional arrays for Python.") |
| 23329 | (license license:expat))) |
| 23330 | |
| 23331 | (define-public python-anndata |
| 23332 | (package |
| 23333 | (name "python-anndata") |
| 23334 | (version "0.8.0") |
| 23335 | (source |
| 23336 | (origin |
| 23337 | ;; The tarball from PyPi doesn't include tests. |
| 23338 | (method git-fetch) |
| 23339 | (uri (git-reference |
| 23340 | (url "https://github.com/theislab/anndata") |
| 23341 | (commit version))) |
| 23342 | (file-name (git-file-name name version)) |
| 23343 | (sha256 |
| 23344 | (base32 |
| 23345 | "0v7npqrg1rdm8jzw22a45c0mqrmsv05r3k88i3lhzi0pzzxca1i1")))) |
| 23346 | (build-system python-build-system) |
| 23347 | (arguments |
| 23348 | `(#:phases |
| 23349 | (modify-phases %standard-phases |
| 23350 | (delete 'check) |
| 23351 | (replace 'build |
| 23352 | (lambda _ |
| 23353 | (setenv "SETUPTOOLS_SCM_PRETEND_VERSION" ,version) |
| 23354 | (substitute* "anndata/_metadata.py" |
| 23355 | (("__version__ =.*") |
| 23356 | (string-append "__version__ = \"" ,version "\"\n"))) |
| 23357 | ;; ZIP does not support timestamps before 1980. |
| 23358 | (setenv "SOURCE_DATE_EPOCH" "315532800") |
| 23359 | (invoke "flit" "build"))) |
| 23360 | (replace 'install |
| 23361 | (lambda* (#:key inputs outputs #:allow-other-keys) |
| 23362 | (add-installed-pythonpath inputs outputs) |
| 23363 | (let ((out (assoc-ref outputs "out"))) |
| 23364 | (for-each (lambda (wheel) |
| 23365 | (format #true wheel) |
| 23366 | (invoke "python" "-m" "pip" "install" |
| 23367 | wheel (string-append "--prefix=" out))) |
| 23368 | (find-files "dist" "\\.whl$")))))))) |
| 23369 | (propagated-inputs |
| 23370 | (list python-h5py |
| 23371 | python-importlib-metadata |
| 23372 | python-natsort |
| 23373 | python-numcodecs |
| 23374 | python-packaging |
| 23375 | python-pandas |
| 23376 | python-scipy |
| 23377 | python-zarr)) |
| 23378 | (native-inputs |
| 23379 | (list python-joblib python-pytest python-toml python-flit |
| 23380 | python-setuptools-scm)) |
| 23381 | (home-page "https://github.com/theislab/anndata") |
| 23382 | (synopsis "Annotated data for data analysis pipelines") |
| 23383 | (description "Anndata is a package for simple (functional) high-level APIs |
| 23384 | for data analysis pipelines. In this context, it provides an efficient, |
| 23385 | scalable way of keeping track of data together with learned annotations and |
| 23386 | reduces the code overhead typically encountered when using a mostly |
| 23387 | object-oriented library such as @code{scikit-learn}.") |
| 23388 | (license license:bsd-3))) |
| 23389 | |
| 23390 | (define-public python-dill |
| 23391 | (package |
| 23392 | (name "python-dill") |
| 23393 | (version "0.3.5.1") |
| 23394 | (source |
| 23395 | (origin |
| 23396 | (method url-fetch) |
| 23397 | (uri (pypi-uri "dill" version)) |
| 23398 | (sha256 |
| 23399 | (base32 "11lc40x37cx2i8qqbc5qklifm65dyjl6prrqsycybvpixzrl2pnp")))) |
| 23400 | (build-system python-build-system) |
| 23401 | (arguments |
| 23402 | `(#:phases |
| 23403 | (modify-phases %standard-phases |
| 23404 | (replace 'check |
| 23405 | (lambda _ |
| 23406 | (with-directory-excursion "/tmp" |
| 23407 | (invoke "nosetests" "-v")) |
| 23408 | #t))))) |
| 23409 | (native-inputs |
| 23410 | (list python-nose)) |
| 23411 | (home-page "https://pypi.org/project/dill/") |
| 23412 | (synopsis "Serialize all of Python") |
| 23413 | (description "Dill extends Python's @code{pickle} module for serializing |
| 23414 | and de-serializing Python objects to the majority of the built-in Python |
| 23415 | types. Dill provides the user the same interface as the @code{pickle} module, |
| 23416 | and also includes some additional features. In addition to pickling Python |
| 23417 | objects, @code{dill} provides the ability to save the state of an interpreter |
| 23418 | session in a single command. Hence, it would be feasible to save a |
| 23419 | interpreter session, close the interpreter, ship the pickled file to another |
| 23420 | computer, open a new interpreter, unpickle the session and thus continue from |
| 23421 | the saved state of the original interpreter session.") |
| 23422 | (license license:bsd-3))) |
| 23423 | |
| 23424 | (define-public python-multiprocess |
| 23425 | (package |
| 23426 | (name "python-multiprocess") |
| 23427 | (version "0.70.9") |
| 23428 | (source |
| 23429 | (origin |
| 23430 | (method url-fetch) |
| 23431 | (uri (pypi-uri "multiprocess" version)) |
| 23432 | (sha256 |
| 23433 | (base32 |
| 23434 | "1r882nvd44xqwbrclwqx5rhs80l6809rcvpc7pkpgnij06cvvmcz")))) |
| 23435 | (build-system python-build-system) |
| 23436 | (arguments |
| 23437 | `(#:phases |
| 23438 | (modify-phases %standard-phases |
| 23439 | (add-after 'unpack 'disable-broken-tests |
| 23440 | (lambda _ |
| 23441 | ;; This test is broken as there is no keyboard interrupt. |
| 23442 | (substitute* "py3.7/multiprocess/tests/__init__.py" |
| 23443 | (("^(.*)def test_wait_result" |
| 23444 | line indent) |
| 23445 | (string-append indent |
| 23446 | "@unittest.skip(\"Disabled by Guix\")\n" |
| 23447 | line))) |
| 23448 | #t)) |
| 23449 | ;; Tests must be run after installation. |
| 23450 | (delete 'check) |
| 23451 | (add-after 'install 'check |
| 23452 | (lambda* (#:key inputs outputs #:allow-other-keys) |
| 23453 | (add-installed-pythonpath inputs outputs) |
| 23454 | (invoke "python" "-m" "multiprocess.tests") |
| 23455 | #t))))) |
| 23456 | (propagated-inputs |
| 23457 | (list python-dill)) |
| 23458 | (home-page "https://pypi.org/project/multiprocess/") |
| 23459 | (synopsis "Multiprocessing and multithreading in Python") |
| 23460 | (description |
| 23461 | "This package is a fork of the multiprocessing Python package, a package |
| 23462 | which supports the spawning of processes using the API of the standard |
| 23463 | library's @code{threading} module.") |
| 23464 | (license license:bsd-3))) |
| 23465 | |
| 23466 | (define-public python-multiprocessing-on-dill |
| 23467 | (package |
| 23468 | (name "python-multiprocessing-on-dill") |
| 23469 | (version "3.5.0a4") |
| 23470 | (source (origin |
| 23471 | (method url-fetch) |
| 23472 | (uri (pypi-uri "multiprocessing_on_dill" version)) |
| 23473 | (sha256 |
| 23474 | (base32 |
| 23475 | "1rs5a3hx1fcpfsxxkl5kx6g06c82wqjqgdqyny5l1ggl1wq0rmfn")))) |
| 23476 | (build-system python-build-system) |
| 23477 | (arguments |
| 23478 | (list |
| 23479 | #:phases |
| 23480 | #~(modify-phases %standard-phases |
| 23481 | (replace 'check |
| 23482 | (lambda* (#:key tests? #:allow-other-keys) |
| 23483 | (when tests? |
| 23484 | (invoke "pytest" "-vv"))))))) |
| 23485 | (propagated-inputs (list python-dill)) |
| 23486 | (native-inputs (list python-check-manifest python-pytest python-wheel)) |
| 23487 | (home-page "https://github.com/sixty-north/multiprocessing_on_dill") |
| 23488 | (synopsis "Multiprocessing using dill instead of pickle") |
| 23489 | (description |
| 23490 | "This package provides a friendly fork of multiprocessing which uses dill |
| 23491 | instead of pickle.") |
| 23492 | (license license:psfl))) |
| 23493 | |
| 23494 | (define-public python-toolrack |
| 23495 | (package |
| 23496 | (name "python-toolrack") |
| 23497 | (version "3.0.1") |
| 23498 | (source |
| 23499 | (origin |
| 23500 | (method git-fetch) |
| 23501 | (uri (git-reference |
| 23502 | (url "https://github.com/albertodonato/toolrack") |
| 23503 | (commit (string-append "v" version)))) |
| 23504 | (file-name (git-file-name name version)) |
| 23505 | (sha256 |
| 23506 | (base32 |
| 23507 | "0ych11b7nchnkhqgf7dgivbvn2lzafjsi7nhb1an5zjjyns39gpx")))) |
| 23508 | (build-system python-build-system) |
| 23509 | (arguments |
| 23510 | (list |
| 23511 | #:phases |
| 23512 | #~(modify-phases %standard-phases |
| 23513 | (add-after 'unpack 'patch-/bin/sh |
| 23514 | (lambda _ |
| 23515 | (substitute* "toolrack/aio/tests/test_process.py" |
| 23516 | (("/bin/sh") |
| 23517 | (which "sh"))))) |
| 23518 | (replace 'check |
| 23519 | (lambda* (#:key tests? #:allow-other-keys) |
| 23520 | (when tests? |
| 23521 | (invoke "pytest" "-vv" "--pyargs" "toolrack" |
| 23522 | "-k" |
| 23523 | (string-append |
| 23524 | ;; These tests fail for unknown reason comparing the |
| 23525 | ;; expected output of shell scripts. |
| 23526 | "not test_parse_stderr " |
| 23527 | "and not test_parse_no_ending_newline " |
| 23528 | "and not test_parse_stdout")))))))) |
| 23529 | (native-inputs (list python-pytest python-pytest-asyncio |
| 23530 | python-pytest-mock)) |
| 23531 | (home-page "https://github.com/albertodonato/toolrack") |
| 23532 | (synopsis "Collection of Python utility functions and classes") |
| 23533 | (description "This package provides a collection of miscellaneous utility |
| 23534 | functions and classes.") |
| 23535 | (license license:lgpl3+))) |
| 23536 | |
| 23537 | (define-public python-toolz |
| 23538 | (package |
| 23539 | (name "python-toolz") |
| 23540 | (version "0.11.2") |
| 23541 | (source |
| 23542 | (origin |
| 23543 | (method url-fetch) |
| 23544 | (uri (pypi-uri "toolz" version)) |
| 23545 | (sha256 |
| 23546 | (base32 |
| 23547 | "0cxwlh8dz8gq0l0bzchjnqqwhdp261nfd958ppqm518k2mg2scbb")))) |
| 23548 | (build-system python-build-system) |
| 23549 | (arguments |
| 23550 | `(#:phases |
| 23551 | (modify-phases %standard-phases |
| 23552 | (replace 'check |
| 23553 | (lambda* (#:key inputs outputs tests? #:allow-other-keys) |
| 23554 | (when tests? |
| 23555 | (add-installed-pythonpath inputs outputs) |
| 23556 | (invoke "python" "-m" "pytest" "--doctest-modules" |
| 23557 | "--pyargs" "toolz"))))))) |
| 23558 | (native-inputs |
| 23559 | (list python-pytest)) |
| 23560 | (home-page "https://github.com/pytoolz/toolz/") |
| 23561 | (synopsis "List processing tools and functional utilities") |
| 23562 | (description |
| 23563 | "This package provides a set of utility functions for iterators, |
| 23564 | functions, and dictionaries.") |
| 23565 | (license license:bsd-3))) |
| 23566 | |
| 23567 | (define-public python-cytoolz |
| 23568 | (package |
| 23569 | (name "python-cytoolz") |
| 23570 | (version "0.11.2") |
| 23571 | (source |
| 23572 | (origin |
| 23573 | (method url-fetch) |
| 23574 | (uri (pypi-uri "cytoolz" version)) |
| 23575 | (sha256 |
| 23576 | (base32 |
| 23577 | "1d12mgaippxxhn24w2hj0my3aqkx80fks5g4wzfdsvl0acqnc8za")) |
| 23578 | (modules '((guix build utils))) |
| 23579 | (snippet |
| 23580 | '(for-each delete-file (find-files "cytoolz" "\\.c$"))))) |
| 23581 | (build-system python-build-system) |
| 23582 | ;; FIXME: tests fail with "module 'cytoolz.curried' has no attribute |
| 23583 | ;; 'exceptions'" |
| 23584 | (arguments '(#:tests? #f)) |
| 23585 | (propagated-inputs |
| 23586 | (list python-toolz)) |
| 23587 | (native-inputs |
| 23588 | (list python-cython)) |
| 23589 | (home-page "https://github.com/pytoolz/cytoolz") |
| 23590 | (synopsis "High performance functional utilities") |
| 23591 | (description |
| 23592 | "The cytoolz package implements the same API as provided by toolz. The |
| 23593 | main differences are that @code{cytoolz} is faster and cytoolz offers a C API |
| 23594 | that is accessible to other projects developed in Cython.") |
| 23595 | (license license:bsd-3))) |
| 23596 | |
| 23597 | (define-public python-sortedcollections |
| 23598 | (package |
| 23599 | (name "python-sortedcollections") |
| 23600 | (version "2.1.0") |
| 23601 | (source |
| 23602 | (origin |
| 23603 | (method url-fetch) |
| 23604 | (uri (pypi-uri "sortedcollections" version)) |
| 23605 | (sha256 |
| 23606 | (base32 |
| 23607 | "1kfabpnjyjm5ml2zspry9jy3xq49aybchgaa4ahic2jqdjfn1sfq")))) |
| 23608 | (build-system python-build-system) |
| 23609 | (propagated-inputs |
| 23610 | (list python-sortedcontainers)) |
| 23611 | (arguments '(#:tests? #f)) ; Tests not included in release tarball. |
| 23612 | (home-page "http://www.grantjenks.com/docs/sortedcollections/") |
| 23613 | (synopsis "Python Sorted Collections") |
| 23614 | (description "Sorted Collections is a Python sorted collections library.") |
| 23615 | (license license:asl2.0))) |
| 23616 | |
| 23617 | (define-public python-sortedcontainers |
| 23618 | (package |
| 23619 | (name "python-sortedcontainers") |
| 23620 | (version "2.1.0") |
| 23621 | (source |
| 23622 | (origin |
| 23623 | (method url-fetch) |
| 23624 | (uri (pypi-uri "sortedcontainers" version)) |
| 23625 | (sha256 |
| 23626 | (base32 |
| 23627 | "0fm0w5id2yhqld95hg2m636vjgkz377rvgdfqaxc25vbylr9lklp")))) |
| 23628 | (build-system python-build-system) |
| 23629 | (arguments |
| 23630 | ;; FIXME: Tests require many extra dependencies, and would introduce |
| 23631 | ;; a circular dependency on hypothesis, which uses this package. |
| 23632 | '(#:tests? #f)) |
| 23633 | (propagated-inputs |
| 23634 | `(("python-appdirs" ,python-appdirs) |
| 23635 | ("python-distlib" ,python-distlib) |
| 23636 | ("python-filelock" ,python-filelock) |
| 23637 | ("python-six" ,python-six-bootstrap))) |
| 23638 | (home-page "http://www.grantjenks.com/docs/sortedcontainers/") |
| 23639 | (synopsis "Sorted List, Sorted Dict, Sorted Set") |
| 23640 | (description |
| 23641 | "This package provides a sorted collections library, written in |
| 23642 | pure-Python.") |
| 23643 | (license license:asl2.0))) |
| 23644 | |
| 23645 | (define python-cloudpickle-testpkg |
| 23646 | (package |
| 23647 | (name "python-cloudpickle-testpkg") |
| 23648 | (version "1.6.0") |
| 23649 | (source |
| 23650 | (origin |
| 23651 | ;; Archive on pypi does not include test infrastructure. |
| 23652 | (method git-fetch) |
| 23653 | (uri (git-reference |
| 23654 | (url "https://github.com/cloudpipe/cloudpickle") |
| 23655 | (commit (string-append "v" version)))) |
| 23656 | (file-name (git-file-name name version)) |
| 23657 | (sha256 |
| 23658 | (base32 |
| 23659 | "1584d21d4rcpryn8yfz0pjnjprk4zm367m0razdcz8cjbsh0dxp6")))) |
| 23660 | (build-system python-build-system) |
| 23661 | (arguments |
| 23662 | '(#:phases |
| 23663 | (modify-phases %standard-phases |
| 23664 | (add-after 'unpack 'chdir |
| 23665 | (lambda _ (chdir "tests/cloudpickle_testpkg")))))) |
| 23666 | (home-page "https://github.com/cloudpipe/cloudpickle") |
| 23667 | (synopsis "Extended pickling support for Python objects") |
| 23668 | (description |
| 23669 | "Cloudpickle makes it possible to serialize Python constructs not |
| 23670 | supported by the default pickle module from the Python standard library. It |
| 23671 | is especially useful for cluster computing where Python expressions are |
| 23672 | shipped over the network to execute on remote hosts, possibly close to the |
| 23673 | data.") |
| 23674 | (license license:bsd-3))) |
| 23675 | |
| 23676 | (define-public python-cloudpickle |
| 23677 | (package |
| 23678 | (inherit python-cloudpickle-testpkg) |
| 23679 | (name "python-cloudpickle") |
| 23680 | (build-system python-build-system) |
| 23681 | (arguments |
| 23682 | '(#:phases |
| 23683 | (modify-phases %standard-phases |
| 23684 | (replace 'check |
| 23685 | (lambda* (#:key tests? #:allow-other-keys) |
| 23686 | (if tests? |
| 23687 | (invoke "pytest" "-s" "-vv") |
| 23688 | (format #t "test suite not run~%"))))))) |
| 23689 | (native-inputs |
| 23690 | (list ;; For tests. |
| 23691 | python-cloudpickle-testpkg python-psutil python-pytest |
| 23692 | python-tornado-6)) |
| 23693 | (home-page "https://github.com/cloudpipe/cloudpickle") |
| 23694 | (synopsis "Extended pickling support for Python objects") |
| 23695 | (description |
| 23696 | "Cloudpickle makes it possible to serialize Python constructs not |
| 23697 | supported by the default pickle module from the Python standard library. It |
| 23698 | is especially useful for cluster computing where Python expressions are |
| 23699 | shipped over the network to execute on remote hosts, possibly close to the |
| 23700 | data.") |
| 23701 | (license license:bsd-3))) |
| 23702 | |
| 23703 | (define-public python-locket |
| 23704 | (package |
| 23705 | (name "python-locket") |
| 23706 | (version "1.0.0") |
| 23707 | (source |
| 23708 | (origin |
| 23709 | (method url-fetch) |
| 23710 | (uri (pypi-uri "locket" version)) |
| 23711 | (sha256 |
| 23712 | (base32 |
| 23713 | "0cm6290zm3ba62n2x2piy3s8d41hrmffda2nw18ggfwb582lq3aw")))) |
| 23714 | (build-system python-build-system) |
| 23715 | (home-page "https://github.com/mwilliamson/locket.py") |
| 23716 | (synopsis "File-based locks for Python") |
| 23717 | (description |
| 23718 | "Locket implements a lock that can be used by multiple processes provided |
| 23719 | they use the same path.") |
| 23720 | (license license:bsd-2))) |
| 23721 | |
| 23722 | (define-public python-blosc |
| 23723 | (package |
| 23724 | (name "python-blosc") |
| 23725 | (version "1.5.1") |
| 23726 | (source |
| 23727 | (origin |
| 23728 | (method url-fetch) |
| 23729 | (uri (pypi-uri "blosc" version)) |
| 23730 | (sha256 |
| 23731 | (base32 |
| 23732 | "1cm91c6r431yla2mbs4895bgiianjf30dfz14vvv99dslygd65jw")))) |
| 23733 | (build-system python-build-system) |
| 23734 | ;; FIXME: all tests pass, but then this error is printed: |
| 23735 | ;; TypeError: calling <function run at 0x7ffff2568d90> returned None, not a test |
| 23736 | (arguments '(#:tests? #f)) |
| 23737 | (propagated-inputs |
| 23738 | (list python-numpy)) |
| 23739 | (home-page "https://github.com/blosc/python-blosc") |
| 23740 | (synopsis "Python wrapper for the Blosc data compressor library") |
| 23741 | (description "Blosc is a high performance compressor optimized for binary |
| 23742 | data. It has been designed to transmit data to the processor cache faster |
| 23743 | than the traditional, non-compressed, direct memory fetch approach via a |
| 23744 | @code{memcpy()} system call. |
| 23745 | |
| 23746 | Blosc works well for compressing numerical arrays that contains data with |
| 23747 | relatively low entropy, like sparse data, time series, grids with |
| 23748 | regular-spaced values, etc. |
| 23749 | |
| 23750 | This Python package wraps the Blosc library.") |
| 23751 | (license license:bsd-3))) |
| 23752 | |
| 23753 | (define-public python-partd |
| 23754 | (package |
| 23755 | (name "python-partd") |
| 23756 | (version "1.2.0") |
| 23757 | (source |
| 23758 | (origin |
| 23759 | (method url-fetch) |
| 23760 | (uri (pypi-uri "partd" version)) |
| 23761 | (sha256 |
| 23762 | (base32 |
| 23763 | "1sy3vdfyyx3bc5590zb7gwpsmimqz8m992x9hsydq8nmhixqjrxa")))) |
| 23764 | (build-system python-build-system) |
| 23765 | (propagated-inputs |
| 23766 | (list python-blosc |
| 23767 | python-locket |
| 23768 | python-numpy |
| 23769 | python-pandas |
| 23770 | python-pyzmq |
| 23771 | python-toolz)) |
| 23772 | (home-page "https://github.com/dask/partd/") |
| 23773 | (synopsis "Appendable key-value storage") |
| 23774 | (description "Partd stores key-value pairs. Values are raw bytes. We |
| 23775 | append on old values. Partd excels at shuffling operations.") |
| 23776 | (license license:bsd-3))) |
| 23777 | |
| 23778 | (define-public python-fsspec |
| 23779 | (package |
| 23780 | (name "python-fsspec") |
| 23781 | (version "2022.5.0") |
| 23782 | (source |
| 23783 | (origin |
| 23784 | (method url-fetch) |
| 23785 | (uri (pypi-uri "fsspec" version)) |
| 23786 | (sha256 |
| 23787 | (base32 |
| 23788 | "1d43qiz8g395042a52yswz6j7q41gvrv3k53wvxn1rs4bk3mjm3s")))) |
| 23789 | (build-system python-build-system) |
| 23790 | (arguments '(#:tests? #f)) ; there are none |
| 23791 | (home-page "https://github.com/intake/filesystem_spec") |
| 23792 | (synopsis "File-system specification") |
| 23793 | (description "The purpose of this package is to produce a template or |
| 23794 | specification for a file-system interface, that specific implementations |
| 23795 | should follow, so that applications making use of them can rely on a common |
| 23796 | behavior and not have to worry about the specific internal implementation |
| 23797 | decisions with any given backend.") |
| 23798 | (license license:bsd-3))) |
| 23799 | |
| 23800 | ;; Note: Remember to update python-distributed when updating dask. |
| 23801 | (define-public python-dask |
| 23802 | (package |
| 23803 | (name "python-dask") |
| 23804 | (version "2022.05.2") |
| 23805 | (source |
| 23806 | (origin |
| 23807 | (method git-fetch) |
| 23808 | (uri (git-reference |
| 23809 | (url "https://github.com/dask/dask/") |
| 23810 | (commit "8db1597c9745543df3129399bead5fbc95a54571"))) |
| 23811 | (file-name (git-file-name name version)) |
| 23812 | (sha256 |
| 23813 | (base32 "1xfk3wml972z502w5ii5mn03ls3rg5p4hqgl0hkicgpmzlyz9kph")) |
| 23814 | (snippet |
| 23815 | ;; Delete generated copy of python-versioneer. We recreate it below. |
| 23816 | '(delete-file "versioneer.py")))) |
| 23817 | (build-system python-build-system) |
| 23818 | (arguments |
| 23819 | `(#:phases |
| 23820 | (modify-phases %standard-phases |
| 23821 | (add-after 'unpack 'versioneer |
| 23822 | (lambda _ |
| 23823 | (invoke "versioneer" "install"))) |
| 23824 | (replace 'check |
| 23825 | (lambda* (#:key tests? #:allow-other-keys) |
| 23826 | (when tests? (invoke "pytest" "-vv"))))))) |
| 23827 | (propagated-inputs |
| 23828 | (list python-cloudpickle |
| 23829 | python-fsspec |
| 23830 | python-numpy |
| 23831 | python-packaging |
| 23832 | python-pandas |
| 23833 | python-partd |
| 23834 | python-toolz |
| 23835 | python-pyyaml)) |
| 23836 | (native-inputs |
| 23837 | (list python-pytest python-pytest-runner python-pytest-rerunfailures |
| 23838 | python-versioneer)) |
| 23839 | (home-page "https://github.com/dask/dask/") |
| 23840 | (synopsis "Parallel computing with task scheduling") |
| 23841 | (description |
| 23842 | "Dask is a flexible parallel computing library for analytics. It |
| 23843 | consists of two components: dynamic task scheduling optimized for computation, |
| 23844 | and large data collections like parallel arrays, dataframes, and lists that |
| 23845 | extend common interfaces like NumPy, Pandas, or Python iterators to |
| 23846 | larger-than-memory or distributed environments. These parallel collections |
| 23847 | run on top of the dynamic task schedulers.") |
| 23848 | (license license:bsd-3))) |
| 23849 | |
| 23850 | (define-public python-ilinkedlist |
| 23851 | (package |
| 23852 | (name "python-ilinkedlist") |
| 23853 | (version "0.4.0") |
| 23854 | (source |
| 23855 | (origin |
| 23856 | (method url-fetch) |
| 23857 | (uri (pypi-uri "ilinkedlist" version)) |
| 23858 | (sha256 |
| 23859 | (base32 |
| 23860 | "0nrw4sr3afldrp7073hvc0rgdz282s0l819jdmj1i6nn05v33h0l")))) |
| 23861 | (build-system python-build-system) |
| 23862 | (native-inputs (list python-pytest)) |
| 23863 | (inputs (list python)) |
| 23864 | (home-page "https://github.com/luther9/ilinkedlist-py") |
| 23865 | (synopsis "Immutable linked list library") |
| 23866 | (description |
| 23867 | "This is a implementation of immutable linked lists for Python. It |
| 23868 | contains @code{nil} (the empty linked list) and a @code{Pair} class for nodes. |
| 23869 | Since a linked list is treated as immutable, it is hashable, and its length |
| 23870 | can be retrieved in constant time. Some of the terminology is inspired by |
| 23871 | LISP. It is possible to create an improper list by creating a @code{Pair} |
| 23872 | with a non-list @code{cdr}.") |
| 23873 | (license license:gpl3+))) |
| 23874 | |
| 23875 | (define-public python-readlike |
| 23876 | (package |
| 23877 | (name "python-readlike") |
| 23878 | (version "0.1.3") |
| 23879 | (source |
| 23880 | (origin |
| 23881 | (method url-fetch) |
| 23882 | (uri (pypi-uri "readlike" version)) |
| 23883 | (sha256 |
| 23884 | (base32 "027w8fvi50ksl57q0a7kb5zvmq8jxaawnviib1jdqw0p3igvm1j4")))) |
| 23885 | (build-system python-build-system) |
| 23886 | (home-page "https://github.com/jangler/readlike") |
| 23887 | (synopsis "GNU Readline-like line editing module") |
| 23888 | (description |
| 23889 | "This Python module provides line editing functions similar to the default |
| 23890 | Emacs-style ones of GNU Readline. Unlike the Python standard library's |
| 23891 | @code{readline} package, this one allows access to those capabilities in settings |
| 23892 | outside of a standard command-line interface. It is especially well-suited to |
| 23893 | interfacing with Urwid, due to a shared syntax for describing key inputs. |
| 23894 | |
| 23895 | Currently, all stateless Readline commands are implemented. Yanking and history |
| 23896 | are not supported.") |
| 23897 | (license license:expat))) |
| 23898 | |
| 23899 | (define-public python-reparser |
| 23900 | (package |
| 23901 | (name "python-reparser") |
| 23902 | (version "1.4.3") |
| 23903 | (source |
| 23904 | (origin |
| 23905 | (method url-fetch) |
| 23906 | (uri (pypi-uri "ReParser" version)) |
| 23907 | (sha256 |
| 23908 | (base32 "0nniqb69xr0fv7ydlmrr877wyyjb61nlayka7xr08vlxl9caz776")))) |
| 23909 | (build-system python-build-system) |
| 23910 | (home-page "https://github.com/xmikos/reparser") |
| 23911 | (synopsis "Simple lexer/parser for inline markup based on regular expressions") |
| 23912 | (description |
| 23913 | "This Python library provides a simple lexer/parser for inline markup based |
| 23914 | on regular expressions.") |
| 23915 | (license license:expat))) |
| 23916 | |
| 23917 | (define-public python-retrying |
| 23918 | (package |
| 23919 | (name "python-retrying") |
| 23920 | (version "1.3.3") |
| 23921 | (source |
| 23922 | (origin |
| 23923 | (method git-fetch) |
| 23924 | (uri (git-reference |
| 23925 | (url "https://github.com/rholder/retrying") |
| 23926 | (commit (string-append "v" version)))) |
| 23927 | (file-name (git-file-name name version)) |
| 23928 | (sha256 |
| 23929 | (base32 |
| 23930 | "1kqipkbdaw5s1xg0gi29awm03vp1x8dz24pjidgxagvkvrjpzhi7")))) |
| 23931 | (build-system python-build-system) |
| 23932 | (propagated-inputs |
| 23933 | (list python-six)) |
| 23934 | (home-page "https://github.com/rholder/retrying") |
| 23935 | (synopsis "Library for adding retry behavior") |
| 23936 | (description "Retrying is a general-purpose retrying library to simplify |
| 23937 | the task of adding retry behavior to just about anything. |
| 23938 | |
| 23939 | Features: |
| 23940 | |
| 23941 | @itemize |
| 23942 | @item Generic Decorator API. |
| 23943 | @item Specify stop condition (i.e. limit by number of attempts). |
| 23944 | @item Specify wait condition (i.e. exponential backoff sleeping between attempts). |
| 23945 | @item Customize retrying on Exceptions. |
| 23946 | @item Customize retrying on expected returned result. |
| 23947 | @end itemize") |
| 23948 | (license license:asl2.0))) |
| 23949 | |
| 23950 | (define-public python-pre-commit |
| 23951 | (package |
| 23952 | (name "python-pre-commit") |
| 23953 | (version "2.10.0") |
| 23954 | (source |
| 23955 | (origin |
| 23956 | (method url-fetch) |
| 23957 | (uri (pypi-uri "pre_commit" version)) |
| 23958 | (sha256 |
| 23959 | (base32 "1ycf6wpxrhxhdzz0vpryhbdxlwik5khgcvp3hxwvfr447a6k84zl")))) |
| 23960 | (build-system python-build-system) |
| 23961 | (arguments |
| 23962 | ;; Tests fail with "AttributeError: module 'pre_commit.resources' has no |
| 23963 | ;; attribute 'empty_template_setup'". |
| 23964 | `(#:tests? #false)) |
| 23965 | (propagated-inputs |
| 23966 | (list python-cfgv |
| 23967 | python-identify |
| 23968 | python-importlib-metadata |
| 23969 | python-nodeenv |
| 23970 | python-pyyaml |
| 23971 | python-toml |
| 23972 | python-virtualenv)) |
| 23973 | (home-page "https://github.com/pre-commit/pre-commit") |
| 23974 | (synopsis "Framework for managing multi-language pre-commit hooks") |
| 23975 | (description |
| 23976 | "This package provides a framework for managing and maintaining |
| 23977 | multi-language pre-commit hooks.") |
| 23978 | (license license:expat))) |
| 23979 | |
| 23980 | (define-public python-precis-i18n |
| 23981 | (package |
| 23982 | (name "python-precis-i18n") |
| 23983 | (version "1.0.3") |
| 23984 | (source |
| 23985 | (origin |
| 23986 | (method url-fetch) |
| 23987 | (uri (pypi-uri "precis_i18n" version)) |
| 23988 | (sha256 |
| 23989 | (base32 |
| 23990 | "1qfb78zpx565vqkg0xhx75pna9sc35m370vpcz82982c8ix3ypyz")))) |
| 23991 | (build-system python-build-system) |
| 23992 | (home-page "https://github.com/byllyfish/precis_i18n") |
| 23993 | (synopsis "Implementation of the PRECIS framework") |
| 23994 | (description |
| 23995 | "This module implements the PRECIS Framework as described in RFC 8264, |
| 23996 | RFC 8265 and RFC 8266.") |
| 23997 | (license license:expat))) |
| 23998 | |
| 23999 | (define-public python-absl-py |
| 24000 | (package |
| 24001 | (name "python-absl-py") |
| 24002 | (version "0.6.1") |
| 24003 | (source |
| 24004 | (origin |
| 24005 | (method url-fetch) |
| 24006 | (uri (pypi-uri "absl-py" version)) |
| 24007 | (sha256 |
| 24008 | (base32 |
| 24009 | "1mp9lk0b2qa37b7y6ak4lvf6ifw2ylyy6bkf9ik77md3j4xrwlc7")))) |
| 24010 | (build-system python-build-system) |
| 24011 | (propagated-inputs |
| 24012 | (list python-six)) |
| 24013 | (home-page "https://github.com/abseil/abseil-py") |
| 24014 | (synopsis "Abseil Python common libraries") |
| 24015 | (description |
| 24016 | "This package provides the Abseil Python Common Libraries, a collection |
| 24017 | of Python libraries for building Python applications.") |
| 24018 | (license license:asl2.0))) |
| 24019 | |
| 24020 | (define-public python-astor |
| 24021 | (package |
| 24022 | (name "python-astor") |
| 24023 | (version "0.8.1") |
| 24024 | (source |
| 24025 | (origin |
| 24026 | (method url-fetch) |
| 24027 | (uri (pypi-uri "astor" version)) |
| 24028 | (sha256 |
| 24029 | (base32 |
| 24030 | "0ppscdzzvxpznclkmhhj53iz314x3pfv4yc7c6gwxqgljgdgyvka")))) |
| 24031 | (build-system python-build-system) |
| 24032 | ;; FIXME: There are two errors and two test failures. |
| 24033 | (arguments `(#:tests? #f)) |
| 24034 | (home-page "https://github.com/berkerpeksag/astor") |
| 24035 | (synopsis "Read and write Python ASTs") |
| 24036 | (description "Astor is designed to allow easy manipulation of Python |
| 24037 | source via the Abstract Syntax Tree.") |
| 24038 | (license license:bsd-3))) |
| 24039 | |
| 24040 | (define-public python-astunparse |
| 24041 | (package |
| 24042 | (name "python-astunparse") |
| 24043 | (version "1.6.3") |
| 24044 | (source |
| 24045 | (origin |
| 24046 | (method url-fetch) |
| 24047 | (uri (pypi-uri "astunparse" version)) |
| 24048 | (sha256 |
| 24049 | (base32 "0wh8jjvwafxc7rvbyb13cdwndkicm7cry1bd8p1q9l7has23mnas")))) |
| 24050 | (build-system python-build-system) |
| 24051 | (arguments '(#:tests? #f)) ; there are none |
| 24052 | (propagated-inputs |
| 24053 | (list python-six python-wheel)) |
| 24054 | (home-page "https://github.com/simonpercivall/astunparse") |
| 24055 | (synopsis "AST unparser for Python") |
| 24056 | (description "This package provides an AST unparser for Python. It is a |
| 24057 | factored out version of @code{unparse} found in the Python source |
| 24058 | distribution.") |
| 24059 | (license license:bsd-3))) |
| 24060 | |
| 24061 | (define-public python-gast |
| 24062 | (package |
| 24063 | (name "python-gast") |
| 24064 | (version "0.5.3") |
| 24065 | (source |
| 24066 | (origin |
| 24067 | (method url-fetch) |
| 24068 | (uri (pypi-uri "gast" version)) |
| 24069 | (sha256 |
| 24070 | (base32 "1sidaczriw54pfkj3523y9j9q2harrczc1qqgnfaylz641ca5gng")))) |
| 24071 | (build-system python-build-system) |
| 24072 | (arguments |
| 24073 | '(#:phases (modify-phases %standard-phases |
| 24074 | (replace 'check |
| 24075 | (lambda* (#:key tests? #:allow-other-keys) |
| 24076 | (when tests? |
| 24077 | (invoke "pytest" "-vv"))))))) |
| 24078 | (native-inputs |
| 24079 | (list python-pytest)) |
| 24080 | (propagated-inputs |
| 24081 | (list python-astunparse)) |
| 24082 | (home-page "https://github.com/serge-sans-paille/gast/") |
| 24083 | (synopsis "Generic Python AST that abstracts the underlying Python version") |
| 24084 | (description |
| 24085 | "GAST provides a compatibility layer between the AST of various Python |
| 24086 | versions, as produced by @code{ast.parse} from the standard @code{ast} |
| 24087 | module.") |
| 24088 | (license license:bsd-3))) |
| 24089 | |
| 24090 | (define-public python-wikidata |
| 24091 | (package |
| 24092 | (name "python-wikidata") |
| 24093 | (version "0.6.1") |
| 24094 | (source |
| 24095 | (origin |
| 24096 | (method url-fetch) |
| 24097 | (uri (pypi-uri "Wikidata" version)) |
| 24098 | (sha256 |
| 24099 | (base32 |
| 24100 | "08nlnydddfp1jj0cdmshvld1irzngbp3dij928wqsg9ziklm6mw9")))) |
| 24101 | (build-system python-build-system) |
| 24102 | (propagated-inputs |
| 24103 | (list python-babel)) |
| 24104 | (home-page "https://github.com/dahlia/wikidata") |
| 24105 | (synopsis "Wikidata client library") |
| 24106 | (description |
| 24107 | "This package provides a Python interface to |
| 24108 | @url{https://www.wikidata.org/, Wikidata}.") |
| 24109 | (properties '((upstream-name . "Wikidata"))) |
| 24110 | (license license:gpl3+))) |
| 24111 | |
| 24112 | (define-public python-doctest-ignore-unicode |
| 24113 | (package |
| 24114 | (name "python-doctest-ignore-unicode") |
| 24115 | (version "0.1.2") |
| 24116 | (source |
| 24117 | (origin |
| 24118 | (method url-fetch) |
| 24119 | (uri (pypi-uri "doctest-ignore-unicode" version)) |
| 24120 | (sha256 |
| 24121 | (base32 |
| 24122 | "1m9aa4qnyj21lbq4sbvmv1vcz7zksss4rz37ddf2hxv4hk8b547w")))) |
| 24123 | (build-system python-build-system) |
| 24124 | (native-inputs |
| 24125 | (list python-nose)) |
| 24126 | (home-page "https://github.com/gnublade/doctest-ignore-unicode") |
| 24127 | (synopsis "Ignore Unicode literal prefixes in doctests") |
| 24128 | (description |
| 24129 | "This package adds support for a flag to ignore Unicode literal prefixes |
| 24130 | in doctests.") |
| 24131 | (license license:asl2.0))) |
| 24132 | |
| 24133 | (define-public python-attr |
| 24134 | (package |
| 24135 | (name "python-attr") |
| 24136 | (version "0.3.1") |
| 24137 | (source |
| 24138 | (origin |
| 24139 | (method url-fetch) |
| 24140 | (uri (pypi-uri "attr" version)) |
| 24141 | (sha256 |
| 24142 | (base32 |
| 24143 | "0pbpskvxp5hzdvcaf766ljwpckshir8sf7z6jqji6zyib20594ch")))) |
| 24144 | (build-system python-build-system) |
| 24145 | (home-page "https://github.com/denis-ryzhkov/attr") |
| 24146 | (synopsis "Decorator for attributes of target function or class") |
| 24147 | (description "Simple decorator to set attributes of target function or |
| 24148 | class in a @acronym{DRY, Don't Repeat Yourself} way.") |
| 24149 | (license license:expat))) |
| 24150 | |
| 24151 | (define-public python-construct |
| 24152 | (package |
| 24153 | (name "python-construct") |
| 24154 | (version "2.10.56") |
| 24155 | (source |
| 24156 | (origin |
| 24157 | (method url-fetch) |
| 24158 | (uri (pypi-uri "construct" version)) |
| 24159 | (sha256 |
| 24160 | (base32 |
| 24161 | "0q86jjzsvy835h3c8pjj4619vbp7ihfg8njmyw86ym4qrpni7flp")))) |
| 24162 | (build-system python-build-system) |
| 24163 | (arguments |
| 24164 | `(#:tests? #f)) ; No tests exist. |
| 24165 | (propagated-inputs |
| 24166 | (list python-extras python-arrow python-numpy python-ruamel.yaml)) |
| 24167 | (home-page "https://construct.readthedocs.io") |
| 24168 | (synopsis "Declarative and symmetrical parser and builder for binary data") |
| 24169 | (description |
| 24170 | "This package provides both simple, atomic constructs (such as |
| 24171 | integers of various sizes), as well as composite ones which allow you |
| 24172 | form hierarchical and sequential structures of increasing complexity. |
| 24173 | It features bit and byte granularity, easy debugging and testing, an |
| 24174 | easy-to-extend subclass system, and lots of primitive constructs to |
| 24175 | make your work easier.") |
| 24176 | (license license:expat))) |
| 24177 | |
| 24178 | (define-public python-outcome |
| 24179 | (package |
| 24180 | (name "python-outcome") |
| 24181 | (version "1.0.1") |
| 24182 | (source |
| 24183 | (origin |
| 24184 | (method url-fetch) |
| 24185 | (uri (pypi-uri "outcome" version)) |
| 24186 | (sha256 |
| 24187 | (base32 "0vxn04vspmlkkyijjkjnsc46f93ki8g62hr7ag10zpd7ic324y7w")))) |
| 24188 | (build-system python-build-system) |
| 24189 | (arguments |
| 24190 | `(#:phases |
| 24191 | (modify-phases %standard-phases |
| 24192 | (replace 'check |
| 24193 | (lambda* (#:key inputs outputs #:allow-other-keys) |
| 24194 | (add-installed-pythonpath inputs outputs) |
| 24195 | (invoke "pytest" "-vv")))))) |
| 24196 | (native-inputs |
| 24197 | (list python-pytest python-pytest-cov python-pytest-asyncio)) |
| 24198 | (propagated-inputs |
| 24199 | (list python-async-generator python-attrs)) |
| 24200 | (home-page "https://github.com/python-trio/outcome") |
| 24201 | (synopsis "Capture the outcome of Python function calls") |
| 24202 | (description |
| 24203 | "Capture the outcome of Python function calls. Extracted from the Trio |
| 24204 | project.") |
| 24205 | ;; Either license applies. |
| 24206 | (license (list license:expat license:asl2.0)))) |
| 24207 | |
| 24208 | (define-public python-trio |
| 24209 | (package |
| 24210 | (name "python-trio") |
| 24211 | (version "0.20.0") |
| 24212 | (source |
| 24213 | (origin |
| 24214 | (method url-fetch) |
| 24215 | (uri (pypi-uri "trio" version)) |
| 24216 | (sha256 |
| 24217 | (base32 "0w30cwmdwfa8zq2agqv3h62jzwwsk7ms8f683ag8f3jx279m42k7")))) |
| 24218 | (build-system python-build-system) |
| 24219 | (arguments |
| 24220 | `(#:phases |
| 24221 | (modify-phases %standard-phases |
| 24222 | (add-after 'unpack 'patch-sleep |
| 24223 | (lambda _ |
| 24224 | (substitute* "trio/tests/test_subprocess.py" |
| 24225 | (("/bin/sleep") |
| 24226 | (which "sleep"))))) |
| 24227 | (add-before 'check 'change-home |
| 24228 | (lambda _ |
| 24229 | ;; Tests require a writable home. |
| 24230 | (setenv "HOME" "/tmp"))) |
| 24231 | (replace 'check |
| 24232 | (lambda* (#:key tests? #:allow-other-keys) |
| 24233 | (when tests? |
| 24234 | (invoke "pytest" "-vv" |
| 24235 | "-n" (number->string (parallel-job-count)) |
| 24236 | "-k" |
| 24237 | (string-append |
| 24238 | ;; This test times out. |
| 24239 | "not test_ki_protection_works" |
| 24240 | ;; Assertion errors. |
| 24241 | " and not test_guest_mode_ki" |
| 24242 | " and not test_run_in_trio_thread_ki" |
| 24243 | " and not test_simple_cancel_scope_usage_doesnt_create_cyclic_garbage" |
| 24244 | " and not test_nursery_cancel_doesnt_create_cyclic_garbage" |
| 24245 | " and not test_cancel_scope_exit_doesnt_create_cyclic_garbage" |
| 24246 | " and not test_locals_destroyed_promptly_on_cancel" |
| 24247 | " and not test_ipython_exc_handler" |
| 24248 | " and not test_for_leaking_fds" |
| 24249 | ;; These try to raise KeyboardInterrupt which does not work |
| 24250 | ;; in the build environment. |
| 24251 | " and not test_ki_self" |
| 24252 | " and not test_ki_wakes_us_up" |
| 24253 | ;; Failure in name resolution. |
| 24254 | " and not test_getnameinfo" |
| 24255 | " and not test_SocketType_resolve" |
| 24256 | ;; OSError: protocol not found. |
| 24257 | " and not test_getprotobyname" |
| 24258 | ;; EOFError: Ran out of input. |
| 24259 | " and not test_static_tool_sees_all_symbols")))))))) |
| 24260 | (native-inputs |
| 24261 | (list python-astor |
| 24262 | python-ipython |
| 24263 | python-jedi |
| 24264 | python-pylint |
| 24265 | python-pyopenssl |
| 24266 | python-pytest |
| 24267 | python-pytest-xdist |
| 24268 | python-pytest-cov |
| 24269 | python-trustme)) |
| 24270 | (propagated-inputs |
| 24271 | (list python-async-generator |
| 24272 | python-attrs |
| 24273 | python-idna |
| 24274 | python-outcome |
| 24275 | python-sniffio |
| 24276 | python-sortedcontainers)) |
| 24277 | (home-page "https://github.com/python-trio/trio") |
| 24278 | (synopsis "Friendly Python library for async concurrency and I/O") |
| 24279 | (description |
| 24280 | "Trio strives to be a production-quality, async/await-native I/O library |
| 24281 | for Python. Like all async libraries, its main purpose is to help you write |
| 24282 | programs that do multiple things at the same time with parallelized I/O.") |
| 24283 | ;; Either license applies. |
| 24284 | (license (list license:expat license:asl2.0)))) |
| 24285 | |
| 24286 | (define-public python-trio-typing |
| 24287 | (package |
| 24288 | (name "python-trio-typing") |
| 24289 | (version "0.5.0") |
| 24290 | (source |
| 24291 | (origin |
| 24292 | (method url-fetch) |
| 24293 | (uri (pypi-uri "trio-typing" version)) |
| 24294 | (sha256 |
| 24295 | (base32 "1yvlj4vf3wyvp16dw6vyfm4i2idm8lvdc3fvjhi6mhm62zv7s07j")))) |
| 24296 | (build-system python-build-system) |
| 24297 | (arguments |
| 24298 | `(#:phases |
| 24299 | (modify-phases %standard-phases |
| 24300 | (replace 'check |
| 24301 | (lambda _ |
| 24302 | (invoke "pytest" "-vv")))))) |
| 24303 | (native-inputs |
| 24304 | (list python-attrs python-pytest)) |
| 24305 | (propagated-inputs |
| 24306 | (list python-mypy python-mypy-extensions python-trio |
| 24307 | python-typing-extensions)) |
| 24308 | (home-page "https://github.com/python-trio/trio-typing") |
| 24309 | (synopsis "Static type checking support for Trio and related projects") |
| 24310 | (description |
| 24311 | "This package provides: |
| 24312 | |
| 24313 | @itemize |
| 24314 | @item PEP 561 typing stubs packages for the Trio project packages: |
| 24315 | |
| 24316 | @itemize |
| 24317 | @item trio (@code{trio-stubs}) |
| 24318 | @item outcome (@code{outcome-stubs}) |
| 24319 | @item async_generator (@code{async_generator-stubs}) |
| 24320 | @end itemize |
| 24321 | |
| 24322 | @item A package @code{trio_typing} containing types that Trio programs often |
| 24323 | want to refer to (@code{AsyncGenerator[Y, S]} and @code{TaskStatus[T])} and |
| 24324 | a mypy plugin that smooths over some limitations in the basic type hints. |
| 24325 | @end itemize") |
| 24326 | ;; Either license applies. |
| 24327 | (license (list license:expat license:asl2.0)))) |
| 24328 | |
| 24329 | (define-public python-trio-websocket |
| 24330 | (package |
| 24331 | (name "python-trio-websocket") |
| 24332 | (version "0.9.2") |
| 24333 | (source |
| 24334 | (origin |
| 24335 | (method git-fetch) ;no tests in pypi archive |
| 24336 | (uri (git-reference |
| 24337 | (url "https://github.com/HyperionGray/trio-websocket") |
| 24338 | (commit version))) |
| 24339 | (file-name (git-file-name name version)) |
| 24340 | (sha256 |
| 24341 | (base32 "1yk2ak991kbl30xg8ldpggack1lwkizd7s5cpr28ir34z8iyjnpi")))) |
| 24342 | (build-system python-build-system) |
| 24343 | (arguments |
| 24344 | `(#:phases |
| 24345 | (modify-phases %standard-phases |
| 24346 | (replace 'check |
| 24347 | (lambda* (#:key tests? #:allow-other-keys) |
| 24348 | (when tests? (invoke "pytest" "-vv"))))))) |
| 24349 | (native-inputs (list python-pytest python-pytest-trio python-trustme)) |
| 24350 | (propagated-inputs (list python-async-generator python-trio python-wsproto)) |
| 24351 | (home-page "https://github.com/HyperionGray/trio-websocket") |
| 24352 | (synopsis "WebSocket library for Trio") |
| 24353 | (description "This library implements both server and client aspects of |
| 24354 | the @url{https://tools.ietf.org/html/rfc6455, the WebSocket protocol}, |
| 24355 | striving for safety, correctness, and ergonomics. It is based on the |
| 24356 | @url{https://wsproto.readthedocs.io/en/latest/, wsproto project}, which is a |
| 24357 | @url{https://sans-io.readthedocs.io/, Sans-IO} state machine that implements |
| 24358 | the majority of the WebSocket protocol, including framing, codecs, and events. |
| 24359 | This library handles I/O using @url{https://trio.readthedocs.io/en/latest/, |
| 24360 | the Trio framework}.") |
| 24361 | (license license:expat))) |
| 24362 | |
| 24363 | (define-public python-humanize |
| 24364 | (package |
| 24365 | (name "python-humanize") |
| 24366 | (version "0.5.1") |
| 24367 | (source |
| 24368 | (origin |
| 24369 | (method url-fetch) |
| 24370 | (uri (pypi-uri "humanize" version)) |
| 24371 | (sha256 |
| 24372 | (base32 |
| 24373 | "06dvhm3k8lf2rayn1gxbd46y0fy1db26m3h9vrq7rb1ib08mfgx4")))) |
| 24374 | (arguments |
| 24375 | '(#:tests? #f)) ; tests not in pypi archive |
| 24376 | (build-system python-build-system) |
| 24377 | (home-page "https://github.com/jmoiron/humanize") |
| 24378 | (synopsis "Print numerical information in a human-readable form") |
| 24379 | (description "This package provides a Python module that displays numbers |
| 24380 | and dates in \"human readable\" forms. For example, it would display |
| 24381 | \"12345591313\" as \"12.3 billion\".") |
| 24382 | (license license:expat))) |
| 24383 | |
| 24384 | (define-public python-txaio |
| 24385 | (package |
| 24386 | (name "python-txaio") |
| 24387 | (version "18.8.1") |
| 24388 | (source |
| 24389 | (origin |
| 24390 | (method url-fetch) |
| 24391 | (uri (pypi-uri "txaio" version)) |
| 24392 | (sha256 |
| 24393 | (base32 |
| 24394 | "1zmpdph6zddgrnkkcykh6qk5s46l7s5mzfqrh82m4b5iffn61qv7")))) |
| 24395 | (build-system python-build-system) |
| 24396 | (propagated-inputs |
| 24397 | (list python-twisted python-six)) |
| 24398 | (home-page "https://github.com/crossbario/txaio") |
| 24399 | (synopsis "Compatibility layer between Python asyncio and Twisted") |
| 24400 | (description "Txaio provides a compatibility layer between the Python |
| 24401 | @code{asyncio} module and @code{Twisted}.") |
| 24402 | (license license:expat))) |
| 24403 | |
| 24404 | (define-public python-toolshed |
| 24405 | (package |
| 24406 | (name "python-toolshed") |
| 24407 | (version "0.4.6") |
| 24408 | (source |
| 24409 | (origin |
| 24410 | (method url-fetch) |
| 24411 | (uri (pypi-uri "toolshed" version)) |
| 24412 | (sha256 |
| 24413 | (base32 |
| 24414 | "14zvz51gzf9i1i3d1sj363ba4rksl6lcf4lz1arl8hpqgcbir8r3")))) |
| 24415 | (build-system python-build-system) |
| 24416 | (native-inputs |
| 24417 | (list python-nose)) |
| 24418 | (home-page "https://github.com/brentp/toolshed/") |
| 24419 | (synopsis "Collection of modules and functions for working with data") |
| 24420 | (description "This is a collection of well-tested, simple modules and |
| 24421 | functions that aim to reduce boilerplate when working with data.") |
| 24422 | (license license:bsd-2))) |
| 24423 | |
| 24424 | (define-public python-annoy |
| 24425 | (package |
| 24426 | (name "python-annoy") |
| 24427 | (version "1.15.1") |
| 24428 | (source |
| 24429 | (origin |
| 24430 | (method url-fetch) |
| 24431 | (uri (pypi-uri "annoy" version)) |
| 24432 | (sha256 |
| 24433 | (base32 |
| 24434 | "1rxn6snn0r32r07g45hdjhh8aa1xzx6fjrm8g62d8vzp46z7rzrp")))) |
| 24435 | (build-system python-build-system) |
| 24436 | (native-inputs |
| 24437 | (list python-nose)) |
| 24438 | (home-page "https://github.com/spotify/annoy/") |
| 24439 | (synopsis "Approximate nearest neighbors library") |
| 24440 | (description |
| 24441 | "Annoy is a C++ library with Python bindings to search for points in |
| 24442 | space that are close to a given query point. It also creates large read-only |
| 24443 | file-based data structures that are @code{mmap}ped into memory so that many |
| 24444 | processes may share the same data.") |
| 24445 | (license license:asl2.0))) |
| 24446 | |
| 24447 | (define-public python-croniter |
| 24448 | (package |
| 24449 | (name "python-croniter") |
| 24450 | (version "1.3.4") |
| 24451 | (source (origin |
| 24452 | (method url-fetch) |
| 24453 | (uri (pypi-uri "croniter" version)) |
| 24454 | (sha256 |
| 24455 | (base32 |
| 24456 | "1whbm26m9kpn0klgr9dqiqpp83ki9nhpxifaq9afcjw32rckcs9i")))) |
| 24457 | (build-system python-build-system) |
| 24458 | (propagated-inputs (list python-dateutil)) |
| 24459 | (home-page "https://github.com/kiorky/croniter") |
| 24460 | (synopsis "Iterate datetime objects with cron-like syntax") |
| 24461 | (description |
| 24462 | "@code{croniter} provides iteration for datetime object with cron-like |
| 24463 | format.") |
| 24464 | (license license:expat))) |
| 24465 | |
| 24466 | (define-public python-crontab |
| 24467 | (package |
| 24468 | (name "python-crontab") |
| 24469 | (version "2.5.1") |
| 24470 | (source |
| 24471 | (origin |
| 24472 | (method url-fetch) |
| 24473 | (uri (pypi-uri name version)) |
| 24474 | (sha256 |
| 24475 | (base32 "0cccrqc10r8781ba81x8r2frs3pl2m4hkm599k5358ak0xr7xgjb")))) |
| 24476 | (build-system python-build-system) |
| 24477 | (arguments |
| 24478 | ;; Comptability tests fail so they are disabled. |
| 24479 | `(#:tests? #f)) |
| 24480 | (inputs |
| 24481 | (list python-dateutil)) |
| 24482 | (home-page "https://gitlab.com/doctormo/python-crontab/") |
| 24483 | (synopsis "Module for reading and writing crontab files") |
| 24484 | (description "This Python module can read, write crontab files, and |
| 24485 | access the system cron automatically and simply using a direct API.") |
| 24486 | (license license:lgpl3+))) |
| 24487 | |
| 24488 | (define-public python-pylzma |
| 24489 | (package |
| 24490 | (name "python-pylzma") |
| 24491 | (version "0.5.0") |
| 24492 | (source |
| 24493 | (origin |
| 24494 | (method url-fetch) |
| 24495 | (uri (pypi-uri "pylzma" version)) |
| 24496 | (sha256 |
| 24497 | (base32 |
| 24498 | "074anvhyjgsv2iby2ql1ixfvjgmhnvcwjbdz8gk70xzkzcm1fx5q")))) |
| 24499 | (build-system python-build-system) |
| 24500 | (home-page "https://www.joachim-bauch.de/projects/pylzma/") |
| 24501 | (synopsis "Python bindings for the LZMA library by Igor Pavlov") |
| 24502 | (description "This package provides Python bindings for the LZMA library |
| 24503 | by Igor Pavlov.") |
| 24504 | (license license:lgpl2.1+))) |
| 24505 | |
| 24506 | (define-public python-ifaddr |
| 24507 | (package |
| 24508 | (name "python-ifaddr") |
| 24509 | (version "0.1.7") |
| 24510 | (source |
| 24511 | (origin |
| 24512 | (method url-fetch) |
| 24513 | (uri (pypi-uri "ifaddr" version)) |
| 24514 | (sha256 |
| 24515 | (base32 |
| 24516 | "150sxdlicwrphmhnv03ykxplyd2jdrxz0mikgnivavgilrn8m7hz")))) |
| 24517 | (build-system python-build-system) |
| 24518 | (arguments |
| 24519 | `(#:phases |
| 24520 | (modify-phases %standard-phases |
| 24521 | (replace 'check |
| 24522 | (lambda _ (invoke "nosetests")))))) |
| 24523 | (native-inputs |
| 24524 | (list python-nose)) |
| 24525 | (home-page "https://github.com/pydron/ifaddr") |
| 24526 | (synopsis "Network interface and IP address enumeration library") |
| 24527 | (description "This package provides a network interface and IP address |
| 24528 | enumeration library in Python.") |
| 24529 | (license license:expat))) |
| 24530 | |
| 24531 | (define-public python-zeroconf |
| 24532 | (package |
| 24533 | (name "python-zeroconf") |
| 24534 | (version "0.38.1") |
| 24535 | (source |
| 24536 | (origin |
| 24537 | (method git-fetch) ; no tests in PyPI release |
| 24538 | (uri (git-reference |
| 24539 | (url "https://github.com/jstasiak/python-zeroconf") |
| 24540 | (commit version))) |
| 24541 | (file-name (git-file-name name version)) |
| 24542 | (sha256 |
| 24543 | (base32 "1p1a0ywlg5sq0ilcphmz9h4kayscz0q1lyfk57j7mwxyx4gl9cpi")))) |
| 24544 | (build-system python-build-system) |
| 24545 | (arguments |
| 24546 | `(#:phases |
| 24547 | (modify-phases %standard-phases |
| 24548 | (replace 'check |
| 24549 | (lambda* (#:key inputs outputs tests? #:allow-other-keys) |
| 24550 | (when tests? |
| 24551 | (add-installed-pythonpath inputs outputs) |
| 24552 | (invoke "python" "-m" "pytest" "-k" |
| 24553 | (string-append |
| 24554 | ;; Networking isn't available for these tests. |
| 24555 | "not test_integration_with_listener_ipv6" |
| 24556 | " and not test_launch_and_close_v4_v6" |
| 24557 | " and not test_launch_and_close_context_manager" |
| 24558 | " and not test_launch_and_close" |
| 24559 | " and not test_close_multiple_times")))))))) |
| 24560 | (native-inputs |
| 24561 | (list python-pytest)) |
| 24562 | (propagated-inputs |
| 24563 | (list python-ifaddr)) |
| 24564 | (home-page "https://github.com/jstasiak/python-zeroconf") |
| 24565 | (synopsis "Pure Python mDNS service discovery") |
| 24566 | (description "Pure Python multicast DNS (mDNS) service discovery library |
| 24567 | (Bonjour/Avahi compatible).") |
| 24568 | (license license:lgpl2.1+))) |
| 24569 | |
| 24570 | (define-public python-bsddb3 |
| 24571 | (package |
| 24572 | (name "python-bsddb3") |
| 24573 | (version "6.2.9") |
| 24574 | (source |
| 24575 | (origin |
| 24576 | (method url-fetch) |
| 24577 | (uri (pypi-uri "bsddb3" version)) |
| 24578 | (sha256 |
| 24579 | (base32 "00bqdsfx8jgmfz5bgkx10nlw5bfsw11a86f91zkl53snvk45xl3h")))) |
| 24580 | (build-system python-build-system) |
| 24581 | (inputs |
| 24582 | (list bdb)) |
| 24583 | (arguments |
| 24584 | '(#:phases |
| 24585 | (modify-phases %standard-phases |
| 24586 | (add-after 'unpack 'configure-locations |
| 24587 | (lambda* (#:key inputs #:allow-other-keys) |
| 24588 | (setenv "BERKELEYDB_DIR" (assoc-ref inputs "bdb")) |
| 24589 | (setenv "YES_I_HAVE_THE_RIGHT_TO_USE_THIS_BERKELEY_DB_VERSION" "1") |
| 24590 | #t)) |
| 24591 | (replace 'check |
| 24592 | (lambda _ |
| 24593 | (invoke "python3" "test3.py" "-v")))))) |
| 24594 | (home-page "https://www.jcea.es/programacion/pybsddb.htm") |
| 24595 | (synopsis "Python bindings for Oracle Berkeley DB") |
| 24596 | (description |
| 24597 | "This module provides a nearly complete wrapping of the Oracle/Sleepycat |
| 24598 | C API for the Database Environment, Database, Cursor, Log Cursor, Sequence and |
| 24599 | Transaction objects, and each of these is exposed as a Python type in the |
| 24600 | bsddb3.db module. The database objects can use various access methods: btree, |
| 24601 | hash, recno, and queue. Complete support of Berkeley DB distributed |
| 24602 | transactions. Complete support for Berkeley DB Replication Manager. |
| 24603 | Complete support for Berkeley DB Base Replication. Support for RPC.") |
| 24604 | (license license:bsd-3))) |
| 24605 | |
| 24606 | (define-public python-dbfread |
| 24607 | (package |
| 24608 | (name "python-dbfread") |
| 24609 | (version "2.0.7") |
| 24610 | (source (origin |
| 24611 | (method url-fetch) |
| 24612 | (uri (pypi-uri "dbfread" version)) |
| 24613 | (sha256 |
| 24614 | (base32 |
| 24615 | "0gdpwdzf1fngsi6jrdyj4qdf6cr7gnnr3zp80dpkzbgz0spskj07")))) |
| 24616 | (build-system python-build-system) |
| 24617 | (native-inputs |
| 24618 | (list python-pytest)) |
| 24619 | (home-page "https://dbfread.readthedocs.io") |
| 24620 | (synopsis "Read DBF Files with Python") |
| 24621 | (description |
| 24622 | "This library reads DBF files and returns the data as native Python data |
| 24623 | types for further processing. It is primarily intended for batch jobs and |
| 24624 | one-off scripts.") |
| 24625 | (license license:expat))) |
| 24626 | |
| 24627 | (define-public python-cached-property |
| 24628 | (package |
| 24629 | (name "python-cached-property") |
| 24630 | (version "1.5.2") |
| 24631 | (source |
| 24632 | (origin |
| 24633 | (method url-fetch) |
| 24634 | (uri (pypi-uri "cached-property" version)) |
| 24635 | (sha256 |
| 24636 | (base32 |
| 24637 | "0c51i6yzg6dlq6zhk4c6nv33mg8gv05kkan36k9b5jzf71c7b9cz")))) |
| 24638 | (build-system python-build-system) |
| 24639 | (arguments |
| 24640 | `(#:phases |
| 24641 | (modify-phases %standard-phases |
| 24642 | ;; https://github.com/pydanny/cached-property/issues/131 |
| 24643 | ;; recent versions of freezegun break one test |
| 24644 | (add-after 'unpack 'disable-broken-test |
| 24645 | (lambda _ |
| 24646 | (substitute* "tests/test_cached_property.py" |
| 24647 | (("def test_threads_ttl_expiry\\(self\\)" m) |
| 24648 | (string-append "@unittest.skip(\"Disabled by Guix\")\n" |
| 24649 | " " m))) |
| 24650 | #t))))) |
| 24651 | (native-inputs |
| 24652 | (list python-freezegun)) |
| 24653 | (home-page |
| 24654 | "https://github.com/pydanny/cached-property") |
| 24655 | (synopsis |
| 24656 | "Decorator for caching properties in classes") |
| 24657 | (description |
| 24658 | "This package provides a decorator which makes caching |
| 24659 | time-or-computationally-expensive properties quick and easy and works in Python |
| 24660 | 2 or 3.") |
| 24661 | (license license:bsd-3))) |
| 24662 | |
| 24663 | (define-public python-folium |
| 24664 | (package |
| 24665 | (name "python-folium") |
| 24666 | (version "0.13.0") |
| 24667 | (source |
| 24668 | (origin |
| 24669 | ;; PyPI has a ".whl" file but not a proper source release. |
| 24670 | ;; Thus, fetch code from Git. |
| 24671 | (method git-fetch) |
| 24672 | (uri (git-reference |
| 24673 | (url "https://github.com/python-visualization/folium") |
| 24674 | (commit (string-append "v" version)))) |
| 24675 | (file-name (git-file-name name version)) |
| 24676 | (sha256 |
| 24677 | (base32 "00adpdi1890zzzg7ffp04hmx59igdcdpyqa129vnmwqh54b5a006")))) |
| 24678 | (build-system python-build-system) |
| 24679 | (propagated-inputs |
| 24680 | (list python-branca python-jinja2 python-numpy python-requests)) |
| 24681 | (native-inputs |
| 24682 | (list python-pytest)) |
| 24683 | (home-page "https://github.com/python-visualization/folium") |
| 24684 | (synopsis "Make beautiful maps with Leaflet.js & Python") |
| 24685 | (description "@code{folium} makes it easy to visualize data that’s been |
| 24686 | manipulated in Python on an interactive leaflet map. It enables both the |
| 24687 | binding of data to a map for @code{choropleth} visualizations as well as |
| 24688 | passing rich vector/raster/HTML visualizations as markers on the map. |
| 24689 | |
| 24690 | The library has a number of built-in tilesets from OpenStreetMap, Mapbox, and |
| 24691 | Stamen, and supports custom tilesets with Mapbox or Cloudmade API keys. It |
| 24692 | supports Image, Video, GeoJSON and TopoJSON overlays.") |
| 24693 | (license license:expat))) |
| 24694 | |
| 24695 | (define-public python-mercantile |
| 24696 | (package |
| 24697 | (name "python-mercantile") |
| 24698 | (version "1.2.1") |
| 24699 | (source |
| 24700 | (origin |
| 24701 | (method url-fetch) |
| 24702 | (uri (pypi-uri "mercantile" version)) |
| 24703 | (sha256 |
| 24704 | (base32 "0sxmndhzzrvss5irsgzfrk51k6jihwcb7661992mizdgbnqnsg7s")))) |
| 24705 | (build-system python-build-system) |
| 24706 | (propagated-inputs (list python-click)) |
| 24707 | (native-inputs |
| 24708 | (list python-check-manifest python-hypothesis python-pytest)) |
| 24709 | (home-page "https://github.com/mapbox/mercantile") |
| 24710 | (synopsis "Web mercator XYZ tile utilities") |
| 24711 | (description "The mercantile module provides @code{ul(xtile, ytile, zoom)} |
| 24712 | and @code{bounds(xtile, ytile, zoom)} functions that respectively return the |
| 24713 | upper left corner and bounding longitudes and latitudes for XYZ tiles, a |
| 24714 | @code{xy(lng, lat)} function that returns spherical mercator x and y |
| 24715 | coordinates, a @code{tile(lng, lat, zoom)} function that returns the tile |
| 24716 | containing a given point, and quadkey conversion functions |
| 24717 | @code{quadkey(xtile, ytile, zoom)} and @code{quadkey_to_tile(quadkey)} for |
| 24718 | translating between quadkey and tile coordinates.") |
| 24719 | (license license:bsd-3))) |
| 24720 | |
| 24721 | (define-public python-xyzservices |
| 24722 | (package |
| 24723 | (name "python-xyzservices") |
| 24724 | (version "2022.4.0") |
| 24725 | (source |
| 24726 | (origin |
| 24727 | (method url-fetch) |
| 24728 | (uri (pypi-uri "xyzservices" version)) |
| 24729 | (sha256 |
| 24730 | (base32 "1paxv4i0dws85md7csv7pf80jl3xh792mx8rxnsrk61ks3ivbsyg")))) |
| 24731 | (build-system python-build-system) |
| 24732 | (arguments |
| 24733 | '(#:phases |
| 24734 | (modify-phases %standard-phases |
| 24735 | (replace 'check |
| 24736 | (lambda* (#:key tests? #:allow-other-keys) |
| 24737 | (when tests? |
| 24738 | (invoke "pytest" "-vv"))))))) |
| 24739 | (native-inputs |
| 24740 | (list python-pytest python-mercantile python-requests)) |
| 24741 | (home-page "https://github.com/geopandas/xyzservices") |
| 24742 | (synopsis "Source of XYZ tiles providers") |
| 24743 | (description "@code{xyzservices} is a lightweight library providing a |
| 24744 | repository of available XYZ services offering raster basemap tiles. The |
| 24745 | repository is provided via Python API and as a compressed JSON file.") |
| 24746 | (license license:bsd-3))) |
| 24747 | |
| 24748 | (define-public jube |
| 24749 | (package |
| 24750 | ;; This is a command-line tool, so no "python-" prefix. |
| 24751 | (name "jube") |
| 24752 | (version "2.2.2") |
| 24753 | (source (origin |
| 24754 | (method url-fetch) |
| 24755 | (uri (string-append |
| 24756 | "http://apps.fz-juelich.de/jsc/jube/jube2/download.php?version=" |
| 24757 | version)) |
| 24758 | (sha256 |
| 24759 | (base32 |
| 24760 | "0xq4k1q63s1p6swgyp61vahlrd1fqmgbm0gm5kpj8ikwy0yc0nqk")) |
| 24761 | (file-name (string-append "jube-" version ".tar.gz")))) |
| 24762 | (build-system python-build-system) |
| 24763 | (home-page "https://apps.fz-juelich.de/jsc/jube/jube2/docu/index.html") |
| 24764 | (synopsis "Benchmarking environment") |
| 24765 | (description |
| 24766 | "JUBE helps perform and analyze benchmarks in a systematic way. For each |
| 24767 | benchmarked application, benchmark data is stored in a format that allows JUBE |
| 24768 | to deduct the desired information. This data can be parsed by automatic pre- |
| 24769 | and post-processing scripts that draw information and store it more densely |
| 24770 | for manual interpretation.") |
| 24771 | (license license:gpl3+))) |
| 24772 | |
| 24773 | (define-public python-pyroutelib3 |
| 24774 | (package |
| 24775 | (name "python-pyroutelib3") |
| 24776 | (version "1.3.post1") |
| 24777 | (source |
| 24778 | (origin |
| 24779 | (method url-fetch) |
| 24780 | (uri (pypi-uri "pyroutelib3" version)) |
| 24781 | (sha256 |
| 24782 | (base32 |
| 24783 | "1hpbydpn2alyswiajfbvhzq4c7f36vdmvxy91hgv8l1lb2g2vfrj")))) |
| 24784 | (build-system python-build-system) |
| 24785 | (propagated-inputs |
| 24786 | (list python-dateutil)) |
| 24787 | (home-page "https://github.com/MKuranowski/pyroutelib3") |
| 24788 | (synopsis "Library for simple routing on OSM data") |
| 24789 | (description "Library for simple routing on OSM data") |
| 24790 | (license license:gpl3+))) |
| 24791 | |
| 24792 | (define-public python-bibtexparser |
| 24793 | (package |
| 24794 | (name "python-bibtexparser") |
| 24795 | (version "1.1.0") |
| 24796 | (source |
| 24797 | (origin |
| 24798 | (method url-fetch) |
| 24799 | (uri (pypi-uri "bibtexparser" version)) |
| 24800 | (sha256 |
| 24801 | (base32 |
| 24802 | "0zwhfkrzf3n5847dbnfng92k7ak199l9v6x6ax3dgdidfpm6d2fz")))) |
| 24803 | (build-system python-build-system) |
| 24804 | (propagated-inputs |
| 24805 | (list python-pyparsing)) |
| 24806 | (native-inputs |
| 24807 | (list python-future)) |
| 24808 | (home-page "https://github.com/sciunto-org/python-bibtexparser") |
| 24809 | (synopsis "Python library to parse BibTeX files") |
| 24810 | (description "BibtexParser is a Python library to parse BibTeX files.") |
| 24811 | (license (list license:bsd-3 license:lgpl3)))) |
| 24812 | |
| 24813 | (define-public python-distro |
| 24814 | (package |
| 24815 | (name "python-distro") |
| 24816 | (version "1.6.0") |
| 24817 | (source |
| 24818 | (origin |
| 24819 | (method url-fetch) |
| 24820 | (uri (pypi-uri "distro" version)) |
| 24821 | (sha256 |
| 24822 | (base32 |
| 24823 | "09441261dd3c8b2gv15vhw1cryzg60lmgpkk07v6hpwwkyhfbxc3")))) |
| 24824 | (build-system python-build-system) |
| 24825 | (native-inputs |
| 24826 | (list python-pytest)) |
| 24827 | (home-page "https://github.com/nir0s/distro") |
| 24828 | (synopsis |
| 24829 | "OS platform information API") |
| 24830 | (description |
| 24831 | "@code{distro} provides information about the OS distribution it runs on, |
| 24832 | such as a reliable machine-readable ID, or version information. |
| 24833 | |
| 24834 | It is the recommended replacement for Python's original |
| 24835 | `platform.linux_distribution` function (which will be removed in Python 3.8). |
| 24836 | @code{distro} also provides a command-line interface to output the platform |
| 24837 | information in various formats.") |
| 24838 | (license license:asl2.0))) |
| 24839 | |
| 24840 | (define-public python-cairosvg |
| 24841 | (package |
| 24842 | (name "python-cairosvg") |
| 24843 | (version "2.5.0") |
| 24844 | (source |
| 24845 | (origin |
| 24846 | (method url-fetch) |
| 24847 | (uri (pypi-uri "CairoSVG" version)) |
| 24848 | (sha256 |
| 24849 | (base32 "1ylsisha2cc4w0yydxwhy7idkfw1inl9fsipxsrm7vyby080vi9z")))) |
| 24850 | (build-system python-build-system) |
| 24851 | (arguments |
| 24852 | `(#:phases |
| 24853 | (modify-phases %standard-phases |
| 24854 | (replace 'check |
| 24855 | (lambda _ (invoke "pytest")))))) |
| 24856 | (propagated-inputs |
| 24857 | (list python-cairocffi python-cssselect2 python-defusedxml |
| 24858 | python-pillow python-tinycss2)) |
| 24859 | (native-inputs |
| 24860 | (list python-pytest-flake8 python-pytest-isort python-pytest-runner)) |
| 24861 | (home-page "https://cairosvg.org/") |
| 24862 | (synopsis "SVG to PDF/PS/PNG converter based on Cairo") |
| 24863 | (description "CairoSVG is a SVG converter based on Cairo. It can export |
| 24864 | SVG files to PDF, PostScript and PNG files. The main part of CairoSVG is a |
| 24865 | SVG parser, trying to follow the SVG 1.1 recommendation from the W3C. Once |
| 24866 | parsed, the result is drawn to a Cairo surface that can be exported to |
| 24867 | qvarious formats: PDF, PostScript, PNG and even SVG.") |
| 24868 | (license license:lgpl3+))) |
| 24869 | |
| 24870 | (define-public python-pyphen |
| 24871 | (package |
| 24872 | (name "python-pyphen") |
| 24873 | (version "0.10.0") |
| 24874 | (source |
| 24875 | (origin |
| 24876 | (method url-fetch) |
| 24877 | (uri (pypi-uri "Pyphen" version)) |
| 24878 | (sha256 |
| 24879 | (base32 "0a1iwrgs4hzwzz60q4i1813kbzimhm0i4q8grh8vqkxhnkgj36vi")))) |
| 24880 | (build-system python-build-system) |
| 24881 | ;; TODO: Use the Guix system hyphenation packages hyphen-* rather than the |
| 24882 | ;; embedded set provided by upstream - like Debian does. |
| 24883 | (home-page "https://github.com/Kozea/Pyphen") |
| 24884 | (synopsis "Pure Python module to hyphenate text") |
| 24885 | (description "Pyphen is a pure Python module to hyphenate text using |
| 24886 | existing Hunspell hyphenation dictionaries.") |
| 24887 | (license (list license:gpl2 license:lgpl2.1 license:mpl1.1)))) |
| 24888 | |
| 24889 | (define-public python-intelhex |
| 24890 | (package |
| 24891 | (name "python-intelhex") |
| 24892 | (version "2.3.0") |
| 24893 | (source |
| 24894 | (origin |
| 24895 | (method url-fetch) |
| 24896 | (uri (pypi-uri "intelhex" version)) |
| 24897 | (sha256 |
| 24898 | (base32 |
| 24899 | "14q04p6qs47ab9w55232ylrdn4wm9rswz36s6x999x0rlxhp6aw9")))) |
| 24900 | (build-system python-build-system) |
| 24901 | (home-page "https://pypi.org/project/IntelHex/") |
| 24902 | (synopsis "Python library for Intel HEX files manipulations") |
| 24903 | (description "The Intel HEX file format is widely used in microprocessors |
| 24904 | and microcontrollers area (embedded systems etc.) as the de facto standard for |
| 24905 | representation of code to be programmed into microelectronic devices. This |
| 24906 | package provides an intelhex Python library to read, write, create from |
| 24907 | scratch and manipulate data from Intel HEX file format. It also includes |
| 24908 | several convenience Python scripts, including \"classic\" hex2bin and bin2hex |
| 24909 | converters and more, those based on the library itself.") |
| 24910 | (license license:bsd-3))) |
| 24911 | |
| 24912 | (define-public python-interlap |
| 24913 | (package |
| 24914 | (name "python-interlap") |
| 24915 | (version "0.2.7") |
| 24916 | (source (origin |
| 24917 | (method url-fetch) |
| 24918 | (uri (pypi-uri "interlap" version)) |
| 24919 | (sha256 |
| 24920 | (base32 |
| 24921 | "1jbfh00bkrf0i5psa6n75rlgmqp5389xixa9j29w8rxhah6g7r1i")))) |
| 24922 | (build-system python-build-system) |
| 24923 | (home-page "https://brentp.github.io/interlap") |
| 24924 | (synopsis "Fast, simple interval overlap testing") |
| 24925 | (description "InterLap does fast interval overlap testing with a simple Python data |
| 24926 | structure.") |
| 24927 | (license license:expat))) |
| 24928 | |
| 24929 | (define-public python-pykwalify |
| 24930 | (package |
| 24931 | (name "python-pykwalify") |
| 24932 | (version "1.7.0") |
| 24933 | (source |
| 24934 | (origin |
| 24935 | (method url-fetch) |
| 24936 | (uri (pypi-uri "pykwalify" version)) |
| 24937 | (sha256 |
| 24938 | (base32 |
| 24939 | "1cnfzkg1b01f825ikpw2fhjclf9c8akxjfrbd1vc22x1lg2kk2vy")))) |
| 24940 | (build-system python-build-system) |
| 24941 | (arguments '(#:tests? #f)) ;missing dependencies |
| 24942 | (propagated-inputs |
| 24943 | (list python-dateutil python-docopt python-pyyaml)) |
| 24944 | (home-page "https://github.com/grokzen/pykwalify") |
| 24945 | (synopsis |
| 24946 | "Python lib/cli for JSON/YAML schema validation") |
| 24947 | (description |
| 24948 | "This package provides a parser, schema validator, and data binding tool |
| 24949 | for YAML and JSON.") |
| 24950 | (license license:expat))) |
| 24951 | |
| 24952 | (define-public python-dbusmock |
| 24953 | (package |
| 24954 | (name "python-dbusmock") |
| 24955 | (version "0.25.0") |
| 24956 | (source |
| 24957 | (origin |
| 24958 | (method url-fetch) |
| 24959 | (uri (pypi-uri "python-dbusmock" version)) |
| 24960 | (sha256 |
| 24961 | (base32 |
| 24962 | "1nwl0gzzds2g1w1gfxfzlgrkb5hr1rrdyn619ml25c6b1rjyfk3g")))) |
| 24963 | (build-system python-build-system) |
| 24964 | (arguments |
| 24965 | `(#:imported-modules (,@%python-build-system-modules |
| 24966 | (guix build syscalls)) |
| 24967 | #:modules ((guix build python-build-system) |
| 24968 | (guix build syscalls) |
| 24969 | (guix build utils) |
| 24970 | (ice-9 match)) |
| 24971 | #:phases |
| 24972 | (modify-phases %standard-phases |
| 24973 | (add-after 'unpack 'patch-paths |
| 24974 | (lambda* (#:key inputs #:allow-other-keys) |
| 24975 | (substitute* "tests/test_code.py" |
| 24976 | (("/bin/bash") (which "bash"))) |
| 24977 | (substitute* "dbusmock/testcase.py" |
| 24978 | (("'dbus-daemon'") |
| 24979 | (string-append "'" (assoc-ref inputs "dbus") |
| 24980 | "/bin/dbus-daemon'"))))) |
| 24981 | (replace 'check |
| 24982 | (lambda* (#:key tests? #:allow-other-keys) |
| 24983 | (when tests? |
| 24984 | (match (primitive-fork) |
| 24985 | (0 ;child process |
| 24986 | (set-child-subreaper!) |
| 24987 | ;; Use tini so that signals are properly handled and |
| 24988 | ;; doubly-forked processes get reaped; otherwise, |
| 24989 | ;; python-dbusmock would waste time polling for the dbus |
| 24990 | ;; processes it spawns to be reaped, in vain. |
| 24991 | (execlp "tini" "--" "pytest" "-vv")) |
| 24992 | (pid |
| 24993 | (match (waitpid pid) |
| 24994 | ((_ . status) |
| 24995 | (unless (zero? status) |
| 24996 | (error "`pytest' exited with status" |
| 24997 | status)))))))))))) |
| 24998 | (native-inputs |
| 24999 | (list dbus python-pytest tini which)) |
| 25000 | (inputs |
| 25001 | (list dbus)) |
| 25002 | (propagated-inputs |
| 25003 | (list python-dbus python-pygobject)) |
| 25004 | (home-page "https://github.com/martinpitt/python-dbusmock") |
| 25005 | (synopsis "Python library for mock D-Bus objects") |
| 25006 | (description "python-dbusmock allows for the easy creation of mock objects on |
| 25007 | D-Bus. This is useful for writing tests for software which talks to D-Bus |
| 25008 | services such as upower, systemd, logind, gnome-session or others, and it is |
| 25009 | hard (or impossible without root privileges) to set the state of the real |
| 25010 | services to what you expect in your tests.") |
| 25011 | (license license:lgpl3+))) |
| 25012 | |
| 25013 | (define-public python-jsonplus |
| 25014 | (package |
| 25015 | (name "python-jsonplus") |
| 25016 | (version "0.8.0") |
| 25017 | (home-page "https://github.com/randomir/jsonplus") |
| 25018 | (source (origin |
| 25019 | (method url-fetch) |
| 25020 | (uri (pypi-uri "jsonplus" version)) |
| 25021 | (sha256 |
| 25022 | (base32 |
| 25023 | "05yv3dw813zwas9snz124k2hki49y268b3mx0gj9w7v1nrjmglq1")))) |
| 25024 | (build-system python-build-system) |
| 25025 | ;; XXX: No tests on PyPI, and the repository has no tags. |
| 25026 | (arguments '(#:tests? #f)) |
| 25027 | (propagated-inputs |
| 25028 | (list python-dateutil python-simplejson python-sortedcontainers)) |
| 25029 | (synopsis "Serialize Python types to/from JSON") |
| 25030 | (description |
| 25031 | "This package provides functionality to serialize arbitrary data types |
| 25032 | to and from JSON. Common data types are implemented and it is easy to |
| 25033 | register custom encoders and decoders.") |
| 25034 | (license license:expat))) |
| 25035 | |
| 25036 | (define-public python-ujson |
| 25037 | (package |
| 25038 | (name "python-ujson") |
| 25039 | (version "4.0.2") |
| 25040 | (source |
| 25041 | (origin |
| 25042 | (method url-fetch) |
| 25043 | (uri (pypi-uri "ujson" version)) |
| 25044 | (sha256 |
| 25045 | (base32 |
| 25046 | "0k9w0kypy7vlskzzp2vsjswaw8lbqdrplzkbflxki9vqwglsj5f6")) |
| 25047 | (modules '((guix build utils))) |
| 25048 | (snippet |
| 25049 | '(begin (delete-file-recursively "deps") #t)))) |
| 25050 | (build-system python-build-system) |
| 25051 | (arguments |
| 25052 | `(#:phases |
| 25053 | (modify-phases %standard-phases |
| 25054 | (add-after 'unpack 'link-to-system-double-conversion |
| 25055 | (lambda* (#:key inputs #:allow-other-keys) |
| 25056 | (let ((d-c (assoc-ref inputs "double-conversion"))) |
| 25057 | (substitute* "setup.py" |
| 25058 | (("./deps/double-conversion/double-conversion\"") |
| 25059 | (string-append d-c "/include/double-conversion\"")) |
| 25060 | (("-lstdc++" stdc) |
| 25061 | (string-append "-L" d-c "/lib\"," |
| 25062 | " \"-ldouble-conversion\"," |
| 25063 | " \"" stdc))) |
| 25064 | #t))) |
| 25065 | (replace 'check |
| 25066 | (lambda* (#:key inputs outputs #:allow-other-keys) |
| 25067 | (add-installed-pythonpath inputs outputs) |
| 25068 | (invoke "pytest")))))) |
| 25069 | (native-inputs |
| 25070 | (list double-conversion python-setuptools-scm python-pytest)) |
| 25071 | (home-page "https://github.com/ultrajson/ultrajson") |
| 25072 | (synopsis "Ultra fast JSON encoder and decoder for Python") |
| 25073 | (description |
| 25074 | "UltraJSON is an ultra fast JSON encoder and decoder written in pure C with |
| 25075 | bindings for Python 3.") |
| 25076 | (license license:bsd-3))) |
| 25077 | |
| 25078 | (define-public python-iocapture |
| 25079 | ;; The latest release is more than a year older than this commit. |
| 25080 | (let ((commit "fdc021c431d0840303908dfc3ca8769db383595c") |
| 25081 | (revision "1")) |
| 25082 | (package |
| 25083 | (name "python-iocapture") |
| 25084 | (version "0.1.2") |
| 25085 | (source |
| 25086 | (origin |
| 25087 | (method git-fetch) |
| 25088 | (uri (git-reference |
| 25089 | (url "https://github.com/oinume/iocapture") |
| 25090 | (commit commit))) |
| 25091 | (file-name (git-file-name name version)) |
| 25092 | (sha256 |
| 25093 | (base32 |
| 25094 | "1mkbhqibxvgwg0p7slr8dfraa3g2s6bsayladhax2jccwj4kcndz")))) |
| 25095 | (build-system python-build-system) |
| 25096 | (arguments |
| 25097 | `(#:phases |
| 25098 | (modify-phases %standard-phases |
| 25099 | (delete 'check) |
| 25100 | (add-after 'install 'check |
| 25101 | (lambda* (#:key inputs outputs #:allow-other-keys) |
| 25102 | (add-installed-pythonpath inputs outputs) |
| 25103 | (invoke "py.test" "-v" "tests") |
| 25104 | #t))))) |
| 25105 | (propagated-inputs |
| 25106 | (list python-flexmock python-pytest python-pytest-cov python-six)) |
| 25107 | (home-page "https://github.com/oinume/iocapture") |
| 25108 | (synopsis "Python capturing tool for stdout and stderr") |
| 25109 | (description |
| 25110 | "This package helps you to capture the standard out (stdout) and the |
| 25111 | standard error channel (stderr) in your program.") |
| 25112 | (license license:expat)))) |
| 25113 | |
| 25114 | (define-public python-anyio |
| 25115 | (package |
| 25116 | (name "python-anyio") |
| 25117 | (version "3.5.0") |
| 25118 | (source |
| 25119 | (origin |
| 25120 | (method url-fetch) |
| 25121 | (uri (pypi-uri "anyio" version)) |
| 25122 | (sha256 |
| 25123 | (base32 |
| 25124 | "19m58805wir4i2s45dd5ynwlzb7ky1218isbir53gpqzzgigzbm0")))) |
| 25125 | (build-system python-build-system) |
| 25126 | (arguments |
| 25127 | `(#:phases |
| 25128 | (modify-phases %standard-phases |
| 25129 | (replace 'check |
| 25130 | (lambda* (#:key tests? #:allow-other-keys) |
| 25131 | (when tests? |
| 25132 | (invoke |
| 25133 | "pytest" "-vv" "-p" "no:asyncio" |
| 25134 | "-m" "not network" |
| 25135 | "-k" |
| 25136 | (string-append |
| 25137 | "not test_is_block_device" |
| 25138 | |
| 25139 | ;; These fail because of network (or specifically IPv6 |
| 25140 | ;; network) access (see: |
| 25141 | ;; https://github.com/agronholm/anyio/issues/417). |
| 25142 | " and not test_accept" |
| 25143 | " and not test_accept_after_close" |
| 25144 | " and not test_close_during_receive" |
| 25145 | " and not test_close_from_other_task" |
| 25146 | " and not test_concurrent_receive" |
| 25147 | " and not test_concurrent_send" |
| 25148 | " and not test_connect_tcp_with_tls" |
| 25149 | " and not test_connect_tcp_with_tls_cert_check_fail" |
| 25150 | " and not test_connection_refused" |
| 25151 | " and not test_extra_attributes" |
| 25152 | " and not test_getaddrinfo" |
| 25153 | " and not test_getnameinfo" |
| 25154 | " and not test_happy_eyeballs" |
| 25155 | " and not test_iterate" |
| 25156 | " and not test_receive_after_close" |
| 25157 | " and not test_receive_timeout" |
| 25158 | " and not test_reuse_port" |
| 25159 | " and not test_run_process" |
| 25160 | " and not test_send_after_close" |
| 25161 | " and not test_send_after_eof" |
| 25162 | " and not test_send_after_peer_closed" |
| 25163 | " and not test_send_eof" |
| 25164 | " and not test_send_large_buffer" |
| 25165 | " and not test_send_receive" |
| 25166 | " and not test_socket_options" |
| 25167 | " and not test_unretrieved_future_exception_server_crash")))))))) |
| 25168 | (propagated-inputs |
| 25169 | (list python-contextvars |
| 25170 | python-dataclasses |
| 25171 | python-idna |
| 25172 | python-sniffio |
| 25173 | python-typing-extensions)) |
| 25174 | (native-inputs |
| 25175 | (list python-contextlib2 |
| 25176 | python-coverage |
| 25177 | python-hypothesis |
| 25178 | python-mock |
| 25179 | python-pytest |
| 25180 | python-pytest-mock |
| 25181 | python-setuptools-scm |
| 25182 | python-trio |
| 25183 | python-trustme |
| 25184 | python-uvloop)) |
| 25185 | (home-page "https://github.com/agronholm/anyio") |
| 25186 | (synopsis "Compatibility layer for multiple asynchronous event loops") |
| 25187 | (description |
| 25188 | "AnyIO is an asynchronous networking and concurrency library that works |
| 25189 | on top of either asyncio or trio. It implements trio-like structured |
| 25190 | concurrency on top of asyncio, and works in harmony with the native SC of trio |
| 25191 | itself.") |
| 25192 | (license license:expat))) |
| 25193 | |
| 25194 | (define-public python-argh |
| 25195 | ;; There are 21 commits since the latest release containing important |
| 25196 | ;; improvements. |
| 25197 | (let ((commit "dcd3253f2994400a6a58a700c118c53765bc50a4") |
| 25198 | (revision "1")) |
| 25199 | (package |
| 25200 | (name "python-argh") |
| 25201 | (version (git-version "0.26.2" revision commit)) |
| 25202 | (source |
| 25203 | (origin |
| 25204 | (method git-fetch) |
| 25205 | (uri (git-reference |
| 25206 | (url "https://github.com/neithere/argh") |
| 25207 | (commit commit))) |
| 25208 | (file-name (git-file-name name version)) |
| 25209 | (sha256 |
| 25210 | (base32 |
| 25211 | "1p5h3dnpbsjmqrvil96s71asc6i3gpinmbrabqmwnrsxprz7r3ns")))) |
| 25212 | (build-system python-build-system) |
| 25213 | (arguments |
| 25214 | '(#:phases |
| 25215 | (modify-phases %standard-phases |
| 25216 | (add-after 'unpack 'patch-tests |
| 25217 | (lambda _ |
| 25218 | ;; Fix test failures on Python 3.9.9+. |
| 25219 | ;; Taken via <https://github.com/neithere/argh/issues/148>. |
| 25220 | (substitute* "test/test_integration.py" |
| 25221 | (("assert run\\(p, '(bar|orig-name|nest bar)', exit=True\\)\ |
| 25222 | \\.startswith\\('invalid choice'\\)" _ name) |
| 25223 | (string-append "assert 'invalid choice' in \ |
| 25224 | run(p, '" name "', exit=True)"))))) |
| 25225 | (replace 'check |
| 25226 | (lambda* (#:key tests? #:allow-other-keys) |
| 25227 | (when tests? |
| 25228 | (invoke "pytest" "-vv"))))))) |
| 25229 | (propagated-inputs |
| 25230 | (list python-iocapture python-mock python-pytest python-pytest-cov |
| 25231 | python-pytest-xdist)) |
| 25232 | (home-page "https://github.com/neithere/argh/") |
| 25233 | (synopsis "Argparse wrapper with natural syntax") |
| 25234 | (description |
| 25235 | "python-argh is a small library that provides several layers of |
| 25236 | abstraction on top of @code{python-argparse}. The layers can be mixed. It is |
| 25237 | always possible to declare a command with the highest possible (and least |
| 25238 | flexible) layer and then tune the behaviour with any of the lower layers |
| 25239 | including the native API of @code{python-argparse}.") |
| 25240 | (license license:lgpl3+)))) |
| 25241 | |
| 25242 | (define-public python-ppft |
| 25243 | (package |
| 25244 | (name "python-ppft") |
| 25245 | (version "1.6.6.1") |
| 25246 | (source |
| 25247 | (origin |
| 25248 | (method url-fetch) |
| 25249 | (uri (pypi-uri "ppft" version)) |
| 25250 | (sha256 |
| 25251 | (base32 |
| 25252 | "1z1invkhszc5d2mvgr221v7cszzifcc77mz0pv3wjp6x5q2768cy")))) |
| 25253 | (build-system python-build-system) |
| 25254 | (arguments '(#:tests? #f)) ; there are none |
| 25255 | (propagated-inputs |
| 25256 | (list python-six)) |
| 25257 | (home-page "https://pypi.org/project/ppft/") |
| 25258 | (synopsis "Fork of Parallel Python") |
| 25259 | (description |
| 25260 | "This package is a fork of Parallel Python. The Parallel Python |
| 25261 | module (@code{pp}) provides an easy and efficient way to create |
| 25262 | parallel-enabled applications for @dfn{symmetric multiprocessing} (SMP) |
| 25263 | computers and clusters. It features cross-platform portability and dynamic |
| 25264 | load balancing.") |
| 25265 | (license license:bsd-3))) |
| 25266 | |
| 25267 | (define-public python-pox |
| 25268 | (package |
| 25269 | (name "python-pox") |
| 25270 | (version "0.2.7") |
| 25271 | (source |
| 25272 | (origin |
| 25273 | (method url-fetch) |
| 25274 | (uri (pypi-uri "pox" version)) |
| 25275 | (sha256 |
| 25276 | (base32 |
| 25277 | "0y17ckc2p6i6709s279sjdj4q459mpcc38ymg9zv9y6vl6jf3bq6")))) |
| 25278 | (build-system python-build-system) |
| 25279 | (arguments |
| 25280 | `(#:phases |
| 25281 | (modify-phases %standard-phases |
| 25282 | (replace 'check |
| 25283 | (lambda _ |
| 25284 | (mkdir-p "/tmp/guix") |
| 25285 | (setenv "SHELL" "bash") |
| 25286 | (setenv "USERNAME" "guix") |
| 25287 | (setenv "HOME" "/tmp/guix") ; must end on USERNAME... |
| 25288 | (invoke "py.test" "-vv") |
| 25289 | #t))))) |
| 25290 | (native-inputs |
| 25291 | (list python-pytest which)) |
| 25292 | (home-page "https://pypi.org/project/pox/") |
| 25293 | (synopsis "Python utilities for file system exploration and automated builds") |
| 25294 | (description |
| 25295 | "Pox provides a collection of utilities for navigating and manipulating |
| 25296 | file systems. This module is designed to facilitate some of the low-level |
| 25297 | operating system interactions that are useful when exploring a file system on a |
| 25298 | remote host. Pox provides Python equivalents of several shell commands such |
| 25299 | as @command{which} and @command{find}. These commands allow automated |
| 25300 | discovery of what has been installed on an operating system, and where the |
| 25301 | essential tools are located.") |
| 25302 | (license license:bsd-3))) |
| 25303 | |
| 25304 | (define-public python-pathos |
| 25305 | (package |
| 25306 | (name "python-pathos") |
| 25307 | (version "0.2.5") |
| 25308 | (source |
| 25309 | (origin |
| 25310 | (method url-fetch) |
| 25311 | (uri (pypi-uri "pathos" version)) |
| 25312 | (sha256 |
| 25313 | (base32 |
| 25314 | "0in8hxdz7k081ijn6q94gr39ycy7363sx4zysmbwyvd7snqjrbi1")))) |
| 25315 | (build-system python-build-system) |
| 25316 | (arguments |
| 25317 | '(#:phases |
| 25318 | (modify-phases %standard-phases |
| 25319 | (replace 'check |
| 25320 | (lambda _ |
| 25321 | (invoke "python" "./tests/__main__.py")))))) |
| 25322 | (propagated-inputs |
| 25323 | (list python-dill python-multiprocess python-pox python-ppft)) |
| 25324 | (native-inputs |
| 25325 | (list python-pytest)) |
| 25326 | (home-page "https://pypi.org/project/pathos/") |
| 25327 | (synopsis |
| 25328 | "Parallel graph management and execution in heterogeneous computing") |
| 25329 | (description |
| 25330 | "Python-pathos is a framework for heterogeneous computing. It provides a |
| 25331 | consistent high-level interface for configuring and launching parallel |
| 25332 | computations across heterogeneous resources. Python-pathos provides configurable |
| 25333 | launchers for parallel and distributed computing, where each launcher contains |
| 25334 | the syntactic logic to configure and launch jobs in an execution environment.") |
| 25335 | (license license:bsd-3))) |
| 25336 | |
| 25337 | (define-public python-flit |
| 25338 | (package |
| 25339 | (name "python-flit") |
| 25340 | (version "3.5.1") |
| 25341 | (source |
| 25342 | (origin |
| 25343 | (method url-fetch) |
| 25344 | (uri (pypi-uri "flit" version)) |
| 25345 | (sha256 |
| 25346 | (base32 "04152qj46sqbnlrj7ch9p7svjrrlpzbk0qr39g2yr0s4f5vp6frf")))) |
| 25347 | (build-system python-build-system) |
| 25348 | (arguments |
| 25349 | (list |
| 25350 | #:phases |
| 25351 | #~(modify-phases %standard-phases |
| 25352 | ;; XXX: PEP 517 manual build copied from python-isort. |
| 25353 | (replace 'build |
| 25354 | (lambda _ |
| 25355 | (invoke "python" "-m" "build" "--wheel" "--no-isolation" "."))) |
| 25356 | (replace 'check |
| 25357 | (lambda* (#:key tests? inputs outputs #:allow-other-keys) |
| 25358 | (when tests? |
| 25359 | (setenv "HOME" "/tmp") |
| 25360 | (setenv "FLIT_NO_NETWORK" "1")))) |
| 25361 | (replace 'install |
| 25362 | (lambda _ |
| 25363 | (let ((whl (car (find-files "dist" "\\.whl$")))) |
| 25364 | (invoke "pip" "--no-cache-dir" "--no-input" |
| 25365 | "install" "--no-deps" "--prefix" #$output whl))))))) |
| 25366 | (propagated-inputs |
| 25367 | (list python-pypa-build |
| 25368 | python-tomli-w |
| 25369 | python-flit-core |
| 25370 | python-docutils |
| 25371 | python-requests)) |
| 25372 | (native-inputs |
| 25373 | (list python-responses |
| 25374 | python-pygments-github-lexers |
| 25375 | python-pytest |
| 25376 | python-pytest-cov |
| 25377 | python-sphinx |
| 25378 | python-sphinxcontrib-github-alt |
| 25379 | python-testpath)) |
| 25380 | (home-page "https://flit.readthedocs.io/") |
| 25381 | (synopsis "Simple packaging tool for simple packages") |
| 25382 | (description "Flit is a simple way to put Python packages and modules on |
| 25383 | PyPI. Flit packages a single importable module or package at a time, using |
| 25384 | the import name as the name on PyPI. All subpackages and data files within a |
| 25385 | package are included automatically.") |
| 25386 | (license license:bsd-3))) |
| 25387 | |
| 25388 | (define-public python-pathtools |
| 25389 | (package |
| 25390 | (name "python-pathtools") |
| 25391 | (version "0.1.2") |
| 25392 | (source |
| 25393 | (origin |
| 25394 | (method url-fetch) |
| 25395 | (uri (pypi-uri "pathtools" version)) |
| 25396 | (sha256 |
| 25397 | (base32 |
| 25398 | "1h7iam33vwxk8bvslfj4qlsdprdnwf8bvzhqh3jq5frr391cadbw")))) |
| 25399 | (build-system python-build-system) |
| 25400 | (home-page |
| 25401 | "https://github.com/gorakhargosh/pathtools") |
| 25402 | (synopsis "Path utilities for Python") |
| 25403 | (description "Pattern matching and various utilities for file systems |
| 25404 | paths.") |
| 25405 | (license license:expat))) |
| 25406 | |
| 25407 | (define-public python-fastentrypoints |
| 25408 | (package |
| 25409 | (name "python-fastentrypoints") |
| 25410 | (version "0.12") |
| 25411 | (source |
| 25412 | (origin |
| 25413 | (method url-fetch) |
| 25414 | (uri (pypi-uri "fastentrypoints" version)) |
| 25415 | (sha256 |
| 25416 | (base32 |
| 25417 | "02s1j8i2dzbpbwgq2a3fiqwm3cnmhii2qzc0k42l0rdxd4a4ya7z")))) |
| 25418 | (build-system python-build-system) |
| 25419 | (home-page |
| 25420 | "https://github.com/ninjaaron/fast-entry_points") |
| 25421 | (synopsis |
| 25422 | "Makes entry_points specified in setup.py load more quickly") |
| 25423 | (description |
| 25424 | "Using entry_points in your setup.py makes scripts that start really |
| 25425 | slowly because it imports pkg_resources. This package allows such setup |
| 25426 | scripts to load entry points more quickly.") |
| 25427 | (license license:bsd-3))) |
| 25428 | |
| 25429 | (define-public python-funcparserlib |
| 25430 | (package |
| 25431 | (name "python-funcparserlib") |
| 25432 | (version "1.0.0") |
| 25433 | (source |
| 25434 | (origin |
| 25435 | ;; Source tarball on PyPi lacks tests. |
| 25436 | (method git-fetch) |
| 25437 | (uri (git-reference |
| 25438 | (url "https://github.com/vlasovskikh/funcparserlib") |
| 25439 | (commit version))) |
| 25440 | (file-name (git-file-name name version)) |
| 25441 | (sha256 |
| 25442 | (base32 "00pswdys5c4hpqpvfcy5zqv30gyjvjvagi12811jizw57hxrm1cs")))) |
| 25443 | (build-system pyproject-build-system) |
| 25444 | (arguments |
| 25445 | '(#:phases |
| 25446 | (modify-phases %standard-phases |
| 25447 | (replace 'check |
| 25448 | (lambda* (#:key tests? #:allow-other-keys) |
| 25449 | (when tests? |
| 25450 | (invoke "python" "-m" "unittest" "discover" "-v"))))))) |
| 25451 | ;; ModuleNotFoundError: No module named 'poetry' |
| 25452 | (native-inputs (list python-poetry-core)) |
| 25453 | (home-page "https://github.com/vlasovskikh/funcparserlib") |
| 25454 | (synopsis |
| 25455 | "Recursive descent parsing library based on functional combinators") |
| 25456 | (description |
| 25457 | "This package is a recursive descent parsing library for Python based on |
| 25458 | functional combinators. Parser combinators are just higher-order functions |
| 25459 | that take parsers as their arguments and return them as result values.") |
| 25460 | (license license:expat))) |
| 25461 | |
| 25462 | (define-public python-speg |
| 25463 | (package |
| 25464 | (name "python-speg") |
| 25465 | (version "0.3") |
| 25466 | (source |
| 25467 | (origin |
| 25468 | (method url-fetch) |
| 25469 | (uri (pypi-uri "speg" version ".zip")) |
| 25470 | (sha256 |
| 25471 | (base32 "0w9y4jf4787dzhy6rvhwi0mpl0r8qkqmqmyv2hpwdpv8w53yzjqh")))) |
| 25472 | (arguments |
| 25473 | `(#:tests? #f)) ;FIXME: tests fail, not sure why |
| 25474 | (native-inputs |
| 25475 | (list unzip)) |
| 25476 | (build-system python-build-system) |
| 25477 | (home-page "https://github.com/avakar/speg") |
| 25478 | (synopsis "PEG-based parser interpreter with memoization") |
| 25479 | (description "This package is a PEG-based parser and interpreter with |
| 25480 | memoization.") |
| 25481 | (license license:expat))) |
| 25482 | |
| 25483 | (define-public python-cson |
| 25484 | (package |
| 25485 | (name "python-cson") |
| 25486 | (version "0.8") |
| 25487 | (source |
| 25488 | (origin |
| 25489 | (method url-fetch) |
| 25490 | (uri (pypi-uri "cson" version)) |
| 25491 | (sha256 |
| 25492 | (base32 "00cyvigg4npbph39ghkg77xbxisa6plf75vii24igxfizik0337f")))) |
| 25493 | (build-system python-build-system) |
| 25494 | (propagated-inputs |
| 25495 | (list python-speg)) |
| 25496 | (home-page "https://github.com/avakar/pycson") |
| 25497 | (synopsis "Parser for Coffeescript Object Notation (CSON)") |
| 25498 | (description "This package is a parser for Coffeescript Object |
| 25499 | Notation (CSON).") |
| 25500 | (license license:expat))) |
| 25501 | |
| 25502 | (define-public python-aionotify |
| 25503 | (package |
| 25504 | (name "python-aionotify") |
| 25505 | (version "0.2.0") |
| 25506 | (source |
| 25507 | (origin |
| 25508 | ;; Source tarball on PyPi lacks tests |
| 25509 | (method git-fetch) |
| 25510 | (uri (git-reference |
| 25511 | (url "https://github.com/rbarrois/aionotify") |
| 25512 | (commit (string-append "v" version)))) |
| 25513 | (file-name (git-file-name name version)) |
| 25514 | (sha256 |
| 25515 | (base32 "1sk9i8czxgsbrswsf1nlb4c82vgnlzi8zrvrxdip92w2z8hqh43y")) |
| 25516 | (patches (search-patches "python-aionotify-0.2.0-py3.8.patch")))) |
| 25517 | (build-system python-build-system) |
| 25518 | (home-page "https://github.com/rbarrois/aionotify") |
| 25519 | (synopsis "Asyncio-powered inotify library") |
| 25520 | (description |
| 25521 | "@code{aionotify} is a simple, asyncio-based inotify library.") |
| 25522 | (license license:bsd-3))) |
| 25523 | |
| 25524 | (define-public python-forbiddenfruit |
| 25525 | (package |
| 25526 | (name "python-forbiddenfruit") |
| 25527 | (version "0.1.3") |
| 25528 | (source |
| 25529 | (origin |
| 25530 | ;; Source tarball on PyPi lacks Makefile that builds and runs tests |
| 25531 | (method git-fetch) |
| 25532 | (uri (git-reference |
| 25533 | (url "https://github.com/clarete/forbiddenfruit") |
| 25534 | (commit version))) |
| 25535 | (file-name (git-file-name name version)) |
| 25536 | (sha256 |
| 25537 | (base32 "1fp2xvdqpi910j9r3q68x38phpxbm700gjdi2m2j5gs91xdnyyh2")))) |
| 25538 | (build-system python-build-system) |
| 25539 | (arguments |
| 25540 | '(#:phases |
| 25541 | (modify-phases %standard-phases |
| 25542 | (replace 'check |
| 25543 | (lambda _ |
| 25544 | (invoke "make" "SKIP_DEPS=1")))))) |
| 25545 | (native-inputs |
| 25546 | (list python-nose python-coverage)) |
| 25547 | (home-page "https://github.com/clarete/forbiddenfruit") |
| 25548 | (synopsis "Patch python built-in objects") |
| 25549 | (description "This project allows Python code to extend built-in types.") |
| 25550 | (license (list license:gpl3+ license:expat)))) |
| 25551 | |
| 25552 | (define-public python-k5test |
| 25553 | (package |
| 25554 | (name "python-k5test") |
| 25555 | (version "0.9.2") |
| 25556 | (source |
| 25557 | (origin |
| 25558 | (method url-fetch) |
| 25559 | (uri (pypi-uri "k5test" version)) |
| 25560 | (sha256 |
| 25561 | (base32 |
| 25562 | "1lqp3jgfngyhaxjgj3n230hn90wsylwilh120yjf62h7b1s02mh8")))) |
| 25563 | (build-system python-build-system) |
| 25564 | (propagated-inputs |
| 25565 | (list python-six |
| 25566 | ;; `which`, `kadmin.local` binaries called inside library |
| 25567 | which mit-krb5)) |
| 25568 | (native-inputs (list mit-krb5)) |
| 25569 | (arguments |
| 25570 | '(#:phases |
| 25571 | (modify-phases %standard-phases |
| 25572 | (add-after 'unpack 'apply-upstream-fixes |
| 25573 | (lambda* _ |
| 25574 | (substitute* "k5test/realm.py" |
| 25575 | ;; Upstream commit f6b302d94dbdce37a1b81cc3faeeac4dc637b0e9. |
| 25576 | (("'kadmin_local'") "'kadmin.local'") |
| 25577 | ;; Upstream commit 3aef84515cf3d1a171c66856c898d0a5cbbd03ea. |
| 25578 | (("\\.stop_daemon") "._stop_daemon"))))))) |
| 25579 | (home-page "https://github.com/pythongssapi/k5test") |
| 25580 | (synopsis "Library for setting up self-contained Kerberos 5 environments") |
| 25581 | (description |
| 25582 | "@code{k5test} is a library for setting up self-contained Kerberos 5 |
| 25583 | environments, and running Python unit tests inside those environments. It is |
| 25584 | based on the file of the same name found alongside the MIT Kerberos 5 unit |
| 25585 | tests.") |
| 25586 | (license license:isc))) |
| 25587 | |
| 25588 | (define-public python-gssapi |
| 25589 | (package |
| 25590 | (name "python-gssapi") |
| 25591 | (version "1.6.12") |
| 25592 | (source |
| 25593 | (origin |
| 25594 | (method url-fetch) |
| 25595 | (uri (pypi-uri "gssapi" version)) |
| 25596 | (sha256 |
| 25597 | (base32 |
| 25598 | "1j2idrbrbczykzlb56q1bn0ivc9c0rjjljpk4yz86xn3gxfkpv8n")))) |
| 25599 | (build-system python-build-system) |
| 25600 | (propagated-inputs |
| 25601 | (list python-decorator python-six)) |
| 25602 | (inputs |
| 25603 | (list mit-krb5)) |
| 25604 | ;; for tests |
| 25605 | (native-inputs |
| 25606 | (list python-parameterized python-k5test python-nose)) |
| 25607 | (home-page "https://github.com/pythongssapi/python-gssapi") |
| 25608 | (synopsis "Python GSSAPI Wrapper") |
| 25609 | (description |
| 25610 | "Python-GSSAPI provides both low-level and high level wrappers around the |
| 25611 | GSSAPI C libraries. While it focuses on the Kerberos mechanism, it should |
| 25612 | also be usable with other GSSAPI mechanisms.") |
| 25613 | (license license:isc))) |
| 25614 | |
| 25615 | (define-public python-check-manifest |
| 25616 | (package |
| 25617 | (name "python-check-manifest") |
| 25618 | (version "0.48") |
| 25619 | (source |
| 25620 | (origin |
| 25621 | (method url-fetch) |
| 25622 | (uri (pypi-uri "check-manifest" version)) |
| 25623 | (sha256 |
| 25624 | (base32 |
| 25625 | "0my6ammldi8mddrbq798qxbl90qr8nlk7gzliq3v7gp7mlfmymrv")))) |
| 25626 | (build-system pyproject-build-system) |
| 25627 | (arguments |
| 25628 | '(;; This test requires setting up a venv which does not work |
| 25629 | ;; properly in the build environment. |
| 25630 | #:test-flags '("-k" "not test_build_sdist_pep517_isolated") |
| 25631 | #:phases |
| 25632 | (modify-phases %standard-phases |
| 25633 | ;; Tests use git submodule commands over the file transport, which |
| 25634 | ;; has been disabled in git, see CVE-2022-39253. Enable these |
| 25635 | ;; commands to allow checks to succeed. |
| 25636 | (add-before 'check 'allow-git-submodule-add |
| 25637 | (lambda _ |
| 25638 | (setenv "HOME" "/tmp") |
| 25639 | (invoke "git" "config" "--global" |
| 25640 | "protocol.file.allow" "always")))))) |
| 25641 | (native-inputs |
| 25642 | (list git-minimal/fixed python-pytest)) |
| 25643 | (propagated-inputs |
| 25644 | (list python-pypa-build python-setuptools python-tomli)) |
| 25645 | (home-page "https://github.com/mgedmin/check-manifest") |
| 25646 | (synopsis "Check MANIFEST.in in a Python source package for completeness") |
| 25647 | (description "Python package can include a MANIFEST.in file to help with |
| 25648 | sending package files to the Python Package Index. This package checks that |
| 25649 | file to ensure it completely and accurately describes your project.") |
| 25650 | (license license:expat))) |
| 25651 | |
| 25652 | (define-public python-android-stringslib |
| 25653 | (package |
| 25654 | (name "python-android-stringslib") |
| 25655 | (version "0.1.2") |
| 25656 | (source |
| 25657 | (origin |
| 25658 | (method git-fetch) |
| 25659 | (uri (git-reference |
| 25660 | (url "https://framagit.org/tyreunom/python-android-strings-lib") |
| 25661 | (commit (string-append "v" version)))) |
| 25662 | (file-name (git-file-name name version)) |
| 25663 | (sha256 |
| 25664 | (base32 |
| 25665 | "0gij55qzzq1h83kfpvhai1vf78kkhyvxa6l17m2nl24454lhfin4")))) |
| 25666 | (build-system python-build-system) |
| 25667 | (arguments |
| 25668 | `(#:tests? #f)) |
| 25669 | (home-page "https://framagit.org/tyreunom/python-android-strings-lib") |
| 25670 | (synopsis "Android strings.xml support") |
| 25671 | (description "Android Strings Lib provides support for android's strings.xml |
| 25672 | files. These files are used to translate strings in android apps.") |
| 25673 | (license license:expat))) |
| 25674 | |
| 25675 | (define-public python-watchdog |
| 25676 | (package |
| 25677 | (name "python-watchdog") |
| 25678 | (version "2.1.6") |
| 25679 | (source |
| 25680 | (origin |
| 25681 | (method url-fetch) |
| 25682 | (uri (pypi-uri "watchdog" version)) |
| 25683 | (sha256 |
| 25684 | (base32 "1rx2nyl0cyj0v4ja795cl3gi26577c5wg48syr3byz3ndkgpavm3")))) |
| 25685 | (build-system python-build-system) |
| 25686 | (arguments |
| 25687 | `(#:phases |
| 25688 | (modify-phases %standard-phases |
| 25689 | (replace 'check |
| 25690 | (lambda* (#:key inputs outputs tests? #:allow-other-keys) |
| 25691 | (when tests? |
| 25692 | (add-installed-pythonpath inputs outputs) |
| 25693 | (invoke "python" "-m" "pytest" "-k" |
| 25694 | ;; This test failed. |
| 25695 | "not test_kill_auto_restart"))))))) |
| 25696 | (propagated-inputs |
| 25697 | (list python-pathtools python-pyyaml)) |
| 25698 | (native-inputs |
| 25699 | (list python-pytest-cov python-pytest-timeout)) |
| 25700 | (home-page "https://github.com/gorakhargosh/watchdog") |
| 25701 | (synopsis "File system events monitoring") |
| 25702 | (description "This package provides a way to monitor file system events |
| 25703 | such as a file modification and trigger an action. This is similar to inotify, |
| 25704 | but portable.") |
| 25705 | (license license:asl2.0))) |
| 25706 | |
| 25707 | (define-public python-watchgod |
| 25708 | (package |
| 25709 | (name "python-watchgod") |
| 25710 | (version "0.7") |
| 25711 | (source |
| 25712 | (origin |
| 25713 | ;; There are no tests in the PyPI tarball. |
| 25714 | (method git-fetch) |
| 25715 | (uri (git-reference |
| 25716 | (url "https://github.com/samuelcolvin/watchgod") |
| 25717 | (commit (string-append "v" version)))) |
| 25718 | (file-name (git-file-name name version)) |
| 25719 | (sha256 |
| 25720 | (base32 "1w2xsidwp9n4giqhja0bzw7rwrh01db0kdxf2n54mv3dkx545jpq")))) |
| 25721 | (build-system python-build-system) |
| 25722 | (arguments |
| 25723 | `(#:phases |
| 25724 | (modify-phases %standard-phases |
| 25725 | (replace 'check |
| 25726 | (lambda* (#:key tests? #:allow-other-keys) |
| 25727 | (when tests? |
| 25728 | (invoke "pytest" "-vv" |
| 25729 | "-o" "asyncio_mode=auto"))))))) |
| 25730 | (native-inputs |
| 25731 | (list python-coverage |
| 25732 | python-pygments |
| 25733 | python-pytest |
| 25734 | python-pytest-asyncio |
| 25735 | python-pytest-cov |
| 25736 | python-pytest-mock |
| 25737 | python-pytest-sugar |
| 25738 | python-pytest-toolbox)) |
| 25739 | (home-page "https://github.com/samuelcolvin/watchgod") |
| 25740 | (synopsis "Simple, modern file watching and code reload in Python") |
| 25741 | (description |
| 25742 | "Simple, modern file watching and code reload in Python inspired by |
| 25743 | @code{watchdog}. Among the differences are a unified approach for each |
| 25744 | operating systems and an elegant approach to concurrency using threading.") |
| 25745 | (license license:expat))) |
| 25746 | |
| 25747 | (define-public python-wget |
| 25748 | (package |
| 25749 | (name "python-wget") |
| 25750 | (version "3.2") |
| 25751 | (source |
| 25752 | (origin |
| 25753 | (method url-fetch) |
| 25754 | (uri (pypi-uri "wget" version ".zip")) |
| 25755 | (sha256 |
| 25756 | (base32 |
| 25757 | "0qb0y7ipby42m4m7h0ipazpdyc3bn9xi46lvifcwwl5albn31rim")))) |
| 25758 | (build-system python-build-system) |
| 25759 | (native-inputs (list unzip)) |
| 25760 | (home-page "https://bitbucket.org/techtonik/python-wget/") |
| 25761 | (synopsis "Pure Python download utility") |
| 25762 | (description "The python-wget library provides an API to download files |
| 25763 | with features similar to the @command{wget} utility.") |
| 25764 | (license license:unlicense))) |
| 25765 | |
| 25766 | (define-public offlate |
| 25767 | (package |
| 25768 | (name "offlate") |
| 25769 | (version "0.6.1") |
| 25770 | (source |
| 25771 | (origin |
| 25772 | (method git-fetch) |
| 25773 | (uri (git-reference |
| 25774 | (url "https://framagit.org/tyreunom/offlate") |
| 25775 | (commit version))) |
| 25776 | (file-name (git-file-name name version)) |
| 25777 | (sha256 |
| 25778 | (base32 |
| 25779 | "1sx5cv8pamyw1m089b6x8ykaxdkx26jk9cblhbzlf0m3ckz52jik")))) |
| 25780 | (build-system python-build-system) |
| 25781 | (arguments |
| 25782 | ;; No tests |
| 25783 | `(#:tests? #f |
| 25784 | #:phases |
| 25785 | (modify-phases %standard-phases |
| 25786 | (add-before 'build 'generate-fonts |
| 25787 | (lambda _ |
| 25788 | (invoke "make" "fonts"))) |
| 25789 | (add-before 'build 'generate-translations |
| 25790 | (lambda _ |
| 25791 | (invoke "make" "update-langs")))))) |
| 25792 | (propagated-inputs |
| 25793 | (list python-android-stringslib |
| 25794 | python-dateutil |
| 25795 | python-gitlab |
| 25796 | python-lxml |
| 25797 | python-polib |
| 25798 | python-pycountry |
| 25799 | python-pyenchant |
| 25800 | python-pygit2 |
| 25801 | python-pygithub |
| 25802 | python-pyqt |
| 25803 | python-requests |
| 25804 | python-ruamel.yaml |
| 25805 | python-translate-toolkit |
| 25806 | python-translation-finder |
| 25807 | python-watchdog)) |
| 25808 | (native-inputs |
| 25809 | (list qttools-5 fontforge)) |
| 25810 | (home-page "https://framagit.org/tyreunom/offlate") |
| 25811 | (synopsis "Offline translation interface for online translation tools") |
| 25812 | (description "Offlate offers a unified interface for different translation |
| 25813 | file formats, as well as many different online translation platforms. You can |
| 25814 | use it to get work from online platforms, specialized such as the Translation |
| 25815 | Project, or not such a gitlab instance when your upstream doesn't use any |
| 25816 | dedicated platform. The tool proposes a unified interface for any format and |
| 25817 | an upload option to send your work back to the platform.") |
| 25818 | (license license:gpl3+))) |
| 25819 | |
| 25820 | (define-public python-titlecase |
| 25821 | (package |
| 25822 | (name "python-titlecase") |
| 25823 | (version "0.12.0") |
| 25824 | (source |
| 25825 | (origin |
| 25826 | (method url-fetch) |
| 25827 | (uri (pypi-uri "titlecase" version)) |
| 25828 | (sha256 |
| 25829 | (base32 |
| 25830 | "0486i99wf8ssa7sgn81fn6fv6i4rhhq6n751bc740b3hzfbpmpl4")))) |
| 25831 | (build-system python-build-system) |
| 25832 | (native-inputs |
| 25833 | (list python-nose)) |
| 25834 | (home-page "https://github.com/ppannuto/python-titlecase") |
| 25835 | (synopsis "Capitalize strings similar to book titles") |
| 25836 | (description |
| 25837 | "Python-Titlecase is a Python port of John Gruber's titlecase.pl. |
| 25838 | It capitalizes (predominantly English) strings in a way that is similar to |
| 25839 | book titles, using the New York Times Manual of Style to leave certain words |
| 25840 | lowercase.") |
| 25841 | (license license:expat))) |
| 25842 | |
| 25843 | (define-public python-pypng |
| 25844 | (package |
| 25845 | (name "python-pypng") |
| 25846 | (version "0.0.20") |
| 25847 | (source |
| 25848 | (origin |
| 25849 | (method url-fetch) |
| 25850 | (uri (pypi-uri "pypng" version)) |
| 25851 | (sha256 |
| 25852 | (base32 "02qpa22ls41vwsrzw9r9qhj1nhq05p03hb5473pay6y980s86chh")))) |
| 25853 | (build-system python-build-system) |
| 25854 | (home-page "https://github.com/drj11/pypng") |
| 25855 | (synopsis "Pure Python PNG image encoder/decoder") |
| 25856 | (description |
| 25857 | "The PyPNG module implements support for PNG images. It reads and writes |
| 25858 | PNG files with all allowable bit depths (1/2/4/8/16/24/32/48/64 bits per |
| 25859 | pixel) and colour combinations: greyscale (1/2/4/8/16 bit); RGB, RGBA, |
| 25860 | LA (greyscale with alpha) with 8/16 bits per channel; colour mapped |
| 25861 | images (1/2/4/8 bit). Adam7 interlacing is supported for reading and writing. |
| 25862 | A number of optional chunks can be specified (when writing) and |
| 25863 | understood (when reading): tRNS, bKGD, gAMA. |
| 25864 | |
| 25865 | PyPNG is not a high level toolkit for image processing (like PIL) and does not |
| 25866 | aim at being a replacement or competitor. Its strength lies in fine-grained |
| 25867 | extensive support of PNG features. It can also read and write Netpbm PAM |
| 25868 | files, with a focus on its use as an intermediate format for implementing |
| 25869 | custom PNG processing.") |
| 25870 | (license license:expat))) |
| 25871 | |
| 25872 | (define-public python-fuzzywuzzy |
| 25873 | (package |
| 25874 | (name "python-fuzzywuzzy") |
| 25875 | (version "0.18.0") |
| 25876 | (source |
| 25877 | (origin |
| 25878 | (method url-fetch) |
| 25879 | (uri (pypi-uri "fuzzywuzzy" version)) |
| 25880 | (sha256 |
| 25881 | (base32 |
| 25882 | "1s00zn75y2dkxgnbw8kl8dw4p1mc77cv78fwfa4yb0274s96w0a5")))) |
| 25883 | (build-system python-build-system) |
| 25884 | (native-inputs |
| 25885 | (list python-hypothesis python-pycodestyle python-pytest)) |
| 25886 | (propagated-inputs |
| 25887 | (list python-levenshtein)) |
| 25888 | (home-page "https://github.com/seatgeek/fuzzywuzzy") |
| 25889 | (synopsis "Fuzzy string matching in Python") |
| 25890 | (description "Approximate string matching using |
| 25891 | @emph{Levenshtein Distance} to calculate the differences between |
| 25892 | sequences.") |
| 25893 | (license license:gpl2))) |
| 25894 | |
| 25895 | (define-public python-block-tracing |
| 25896 | (package |
| 25897 | (name "python-block-tracing") |
| 25898 | (version "1.0.1") |
| 25899 | (source |
| 25900 | (origin |
| 25901 | (method url-fetch) |
| 25902 | (uri (pypi-uri "block_tracing" version)) |
| 25903 | (sha256 |
| 25904 | (base32 |
| 25905 | "0s2y729qr5rs7n506qfh8cssk8m2bi6k2y5vbrh2z3raf2d01alz")))) |
| 25906 | (build-system python-build-system) |
| 25907 | (arguments '(#:tests? #f)) ; no tests |
| 25908 | (home-page "https://github.com/rianhunter/block_tracing") |
| 25909 | (synopsis "Protect process memory") |
| 25910 | (description |
| 25911 | "@code{block_tracing} is a tiny Python library that can be used to |
| 25912 | prevent debuggers and other applications from inspecting the memory within |
| 25913 | your process.") |
| 25914 | (license license:expat))) |
| 25915 | |
| 25916 | (define-public python-gcovr |
| 25917 | (package |
| 25918 | (name "python-gcovr") |
| 25919 | (version "4.2") |
| 25920 | (source |
| 25921 | (origin |
| 25922 | (method url-fetch) |
| 25923 | (uri (pypi-uri "gcovr" version)) |
| 25924 | (sha256 |
| 25925 | (base32 |
| 25926 | "0gyady7x3v3l9fm1zan0idaggqqcm31y7g5vxk7h05p5h7f39bjs")))) |
| 25927 | (build-system python-build-system) |
| 25928 | (propagated-inputs |
| 25929 | (list python-lxml python-jinja2)) |
| 25930 | (home-page "https://gcovr.com/") |
| 25931 | (synopsis "Utility for generating code coverage results") |
| 25932 | (description |
| 25933 | "Gcovr provides a utility for managing the use of the GNU gcov |
| 25934 | utility and generating summarized code coverage results. It is inspired |
| 25935 | by the Python coverage.py package, which provides a similar utility for |
| 25936 | Python.") |
| 25937 | (license license:bsd-3))) |
| 25938 | |
| 25939 | (define-public python-owslib |
| 25940 | (package |
| 25941 | (name "python-owslib") |
| 25942 | (version "0.19.2") |
| 25943 | (source |
| 25944 | (origin |
| 25945 | (method url-fetch) |
| 25946 | (uri (pypi-uri "OWSLib" version)) |
| 25947 | (sha256 |
| 25948 | (base32 "0v8vg0naa9rywvd31cpq65ljbdclpsrx09788v4xj7lg10np8nk0")))) |
| 25949 | (build-system python-build-system) |
| 25950 | (arguments |
| 25951 | ;; TODO: package dependencies required for tests. |
| 25952 | '(#:tests? #f |
| 25953 | #:phases (modify-phases %standard-phases |
| 25954 | (delete 'sanity-check)))) |
| 25955 | (synopsis "Interface for Open Geospatial Consortium web service") |
| 25956 | (description |
| 25957 | "OWSLib is a Python package for client programming with Open Geospatial |
| 25958 | Consortium (OGC) web service (hence OWS) interface standards, and their related |
| 25959 | content models.") |
| 25960 | (home-page "https://geopython.github.io/OWSLib/") |
| 25961 | (license license:bsd-3))) |
| 25962 | |
| 25963 | (define-public python-docusign-esign |
| 25964 | (package |
| 25965 | (name "python-docusign-esign") |
| 25966 | (version "3.1.0") |
| 25967 | (source (origin |
| 25968 | (method url-fetch) |
| 25969 | (uri (pypi-uri "docusign_esign" version)) |
| 25970 | (sha256 |
| 25971 | (base32 |
| 25972 | "01f3h03vc97syjlmqyl7xa5j90pzgmwpspc5a0gra9saynnbkx37")))) |
| 25973 | (build-system python-build-system) |
| 25974 | ;; Testing requires undocumented setup changes, and so testing is disabled here. |
| 25975 | (arguments `(#:tests? #f)) |
| 25976 | (propagated-inputs |
| 25977 | (list python-certifi |
| 25978 | python-six |
| 25979 | python-dateutil |
| 25980 | python-urllib3 |
| 25981 | python-pyjwt |
| 25982 | python-cryptography |
| 25983 | python-nose)) |
| 25984 | (synopsis "DocuSign Python Client") |
| 25985 | (description "The Official DocuSign Python Client Library used to interact |
| 25986 | with the eSign REST API. Send, sign, and approve documents using this client.") |
| 25987 | (home-page "https://www.docusign.com/devcenter") |
| 25988 | (license license:expat))) |
| 25989 | |
| 25990 | (define-public python-xattr |
| 25991 | (package |
| 25992 | (name "python-xattr") |
| 25993 | (version "0.9.9") |
| 25994 | (source |
| 25995 | (origin |
| 25996 | (method url-fetch) |
| 25997 | (uri (pypi-uri "xattr" version)) |
| 25998 | (sha256 |
| 25999 | (base32 |
| 26000 | "0ipkfblyvp5hylahjkw9zss1ii9xnwjypr3b3ncv989szcg7xjq9")))) |
| 26001 | (build-system python-build-system) |
| 26002 | (propagated-inputs |
| 26003 | (list python-cffi)) |
| 26004 | (home-page "https://github.com/xattr/xattr") |
| 26005 | (synopsis |
| 26006 | "Python wrapper for extended file system attributes") |
| 26007 | (description "This package provides a Python wrapper for using extended |
| 26008 | file system attributes. Extended attributes extend the basic attributes of files |
| 26009 | and directories in the file system. They are stored as name:data pairs |
| 26010 | associated with file system objects (files, directories, symlinks, etc).") |
| 26011 | (license license:expat))) |
| 26012 | |
| 26013 | (define-public python-json-logger |
| 26014 | (package |
| 26015 | (name "python-json-logger") |
| 26016 | (version "0.1.11") |
| 26017 | (source |
| 26018 | (origin |
| 26019 | (method url-fetch) |
| 26020 | (uri (pypi-uri "python-json-logger" version)) |
| 26021 | (sha256 |
| 26022 | (base32 |
| 26023 | "10g2ya6nsvn5vxzvq2wb8q4d43i3d7756i5rxyjna6d0y9i138xp")))) |
| 26024 | (build-system python-build-system) |
| 26025 | (home-page |
| 26026 | "https://github.com/madzak/python-json-logger") |
| 26027 | (synopsis "JSON log formatter in Python") |
| 26028 | (description "This library allows standard Python logging to output log data |
| 26029 | as JSON objects. With JSON we can make our logs more readable by machines and |
| 26030 | we can stop writing custom parsers for syslog-type records.") |
| 26031 | (license license:bsd-3))) |
| 26032 | |
| 26033 | (define-public python-daiquiri |
| 26034 | (package |
| 26035 | (name "python-daiquiri") |
| 26036 | (version "2.1.1") |
| 26037 | (source |
| 26038 | (origin |
| 26039 | (method url-fetch) |
| 26040 | (uri (pypi-uri "daiquiri" version)) |
| 26041 | (sha256 |
| 26042 | (base32 |
| 26043 | "1qmank3c217ddiig3xr8ps0mqaydcp0q5a62in9a9g4zf72zjnqd")))) |
| 26044 | (build-system python-build-system) |
| 26045 | (propagated-inputs |
| 26046 | (list python-json-logger)) |
| 26047 | (native-inputs |
| 26048 | (list python-mock python-pytest python-setuptools-scm python-six)) |
| 26049 | (home-page "https://github.com/jd/daiquiri") |
| 26050 | (synopsis |
| 26051 | "Library to configure Python logging easily") |
| 26052 | (description "The daiquiri library provides an easy way to configure |
| 26053 | logging in Python. It also provides some custom formatters and handlers.") |
| 26054 | (license license:asl2.0))) |
| 26055 | |
| 26056 | (define-public python-pifpaf |
| 26057 | (package |
| 26058 | (name "python-pifpaf") |
| 26059 | (version "3.1.5") |
| 26060 | (source |
| 26061 | (origin |
| 26062 | (method url-fetch) |
| 26063 | (uri (pypi-uri "pifpaf" version)) |
| 26064 | (sha256 |
| 26065 | (base32 |
| 26066 | "19bdmxldc2m570isl7hbqgbb20si4sin7pi5fw8sv9py8dyv2s4n")))) |
| 26067 | (build-system python-build-system) |
| 26068 | (arguments |
| 26069 | '(#:phases |
| 26070 | (modify-phases %standard-phases |
| 26071 | (replace 'check |
| 26072 | (lambda _ |
| 26073 | (invoke "python" "setup.py" "testr" "--slowest" |
| 26074 | "--testr-args=until-failure")))))) |
| 26075 | (propagated-inputs |
| 26076 | (list python-click |
| 26077 | python-daiquiri |
| 26078 | python-fixtures |
| 26079 | python-jinja2 |
| 26080 | python-pbr |
| 26081 | python-psutil |
| 26082 | python-xattr)) |
| 26083 | (native-inputs |
| 26084 | (list python-mock python-os-testr python-requests |
| 26085 | python-testrepository python-testtools)) |
| 26086 | (home-page "https://github.com/jd/pifpaf") |
| 26087 | (synopsis "Tools and fixtures to manage daemons for testing in Python") |
| 26088 | (description "Pifpaf is a suite of fixtures and a command-line tool that |
| 26089 | starts and stops daemons for a quick throw-away usage. This is typically |
| 26090 | useful when needing these daemons to run integration testing. It originally |
| 26091 | evolved from its precursor @code{overtest}.") |
| 26092 | (license license:asl2.0))) |
| 26093 | |
| 26094 | (define-public python-pytest-check-links |
| 26095 | (package |
| 26096 | (name "python-pytest-check-links") |
| 26097 | (version "0.3.0") |
| 26098 | (source |
| 26099 | (origin |
| 26100 | (method url-fetch) |
| 26101 | ;; URI uses underscores |
| 26102 | (uri (pypi-uri "pytest_check_links" version)) |
| 26103 | (sha256 |
| 26104 | (base32 |
| 26105 | "12x3wmrdzm6wgk0vz02hb769h68nr49q47w5q1pj95pc89hsa34v")))) |
| 26106 | (build-system python-build-system) |
| 26107 | (propagated-inputs |
| 26108 | (list python-docutils |
| 26109 | python-html5lib |
| 26110 | python-nbconvert |
| 26111 | python-nbformat |
| 26112 | python-pytest |
| 26113 | python-six)) |
| 26114 | (native-inputs |
| 26115 | (list python-pbr-minimal)) |
| 26116 | (home-page "https://github.com/minrk/pytest-check-links") |
| 26117 | (synopsis "Check links in files") |
| 26118 | (description "This package provides a pytest plugin that checks URLs for |
| 26119 | HTML-containing files.") |
| 26120 | (license license:bsd-3))) |
| 26121 | |
| 26122 | (define-public python-json5 |
| 26123 | (package |
| 26124 | (name "python-json5") |
| 26125 | (version "0.8.5") |
| 26126 | (source |
| 26127 | (origin |
| 26128 | ;; sample.json5 is missing from PyPi source tarball |
| 26129 | (method git-fetch) |
| 26130 | (uri (git-reference |
| 26131 | (url "https://github.com/dpranke/pyjson5") |
| 26132 | (commit (string-append "v" version)))) |
| 26133 | (file-name (git-file-name name version)) |
| 26134 | (sha256 |
| 26135 | (base32 "0nyngj18jlkgvm1177lc3cj47wm4yh3dqigygvcvw7xkyryafsqn")))) |
| 26136 | (build-system python-build-system) |
| 26137 | (home-page "https://github.com/dpranke/pyjson5") |
| 26138 | (synopsis |
| 26139 | "Python implementation of the JSON5 data format") |
| 26140 | (description |
| 26141 | "JSON5 extends the JSON data interchange format to make it slightly more |
| 26142 | usable as a configuration language. This Python package implements parsing and |
| 26143 | dumping of JSON5 data structures.") |
| 26144 | (license license:asl2.0))) |
| 26145 | |
| 26146 | (define-public python-freetype-py |
| 26147 | (package |
| 26148 | (name "python-freetype-py") |
| 26149 | (version "2.3.0") |
| 26150 | (source |
| 26151 | (origin |
| 26152 | (method url-fetch) |
| 26153 | (uri (pypi-uri "freetype-py" version ".zip")) |
| 26154 | (sha256 |
| 26155 | (base32 "1l55wzy21jmdayjna29ahzxrf2fp68580978rs6kap1a4zilrdpr")))) |
| 26156 | (build-system python-build-system) |
| 26157 | (native-inputs |
| 26158 | (list python-setuptools-scm |
| 26159 | unzip)) |
| 26160 | (inputs (list freetype)) |
| 26161 | (arguments |
| 26162 | `(#:phases |
| 26163 | ;; Note: the pypi archive does not contain tests, but running the check |
| 26164 | ;; phase will at least test whether the module loads correctly. |
| 26165 | (modify-phases %standard-phases |
| 26166 | (add-before 'build 'embed-library-reference |
| 26167 | (lambda* (#:key inputs #:allow-other-keys) |
| 26168 | (substitute* "freetype/raw.py" |
| 26169 | (("^(filename = ).*" _ >) |
| 26170 | (string-append > "\"" (search-input-file inputs "/lib/libfreetype.so") |
| 26171 | "\"\n")))))))) |
| 26172 | (home-page "https://github.com/rougier/freetype-py") |
| 26173 | (synopsis "Freetype python bindings") |
| 26174 | (description "Freetype Python provides bindings for the FreeType |
| 26175 | library. Only the high-level API is bound.") |
| 26176 | (license license:bsd-3))) |
| 26177 | |
| 26178 | (define-public python-frozendict |
| 26179 | (package |
| 26180 | (name "python-frozendict") |
| 26181 | (version "2.3.4") |
| 26182 | (source |
| 26183 | (origin |
| 26184 | (method url-fetch) |
| 26185 | (uri (pypi-uri "frozendict" version)) |
| 26186 | (sha256 |
| 26187 | (base32 "0y3zn57i1q5192f7l4w2z2zsy3rrx50g563msaq954r58s1v3d0m")))) |
| 26188 | (build-system python-build-system) |
| 26189 | (home-page "https://github.com/Marco-Sulla/python-frozendict") |
| 26190 | (synopsis "Simple immutable mapping for Python") |
| 26191 | (description |
| 26192 | "@dfn{frozendict} is an immutable wrapper around dictionaries that |
| 26193 | implements the complete mapping interface. It can be used as a drop-in |
| 26194 | replacement for dictionaries where immutability is desired.") |
| 26195 | (license license:expat))) |
| 26196 | |
| 26197 | (define-public python-unpaddedbase64 |
| 26198 | (package |
| 26199 | (name "python-unpaddedbase64") |
| 26200 | (version "2.1.0") |
| 26201 | (source |
| 26202 | (origin |
| 26203 | (method url-fetch) |
| 26204 | (uri (pypi-uri "unpaddedbase64" version)) |
| 26205 | (sha256 |
| 26206 | (base32 "01ghlmw63fgslwj8j74vkpf1kqvr7a4agm6nyn89vqwx106ccwvj")))) |
| 26207 | (build-system python-build-system) |
| 26208 | (arguments |
| 26209 | `(#:phases |
| 26210 | (modify-phases %standard-phases |
| 26211 | (replace 'check |
| 26212 | (lambda* (#:key inputs tests? #:allow-other-keys) |
| 26213 | (when tests? |
| 26214 | (copy-recursively (string-append |
| 26215 | (assoc-ref inputs "tests") "/tests") |
| 26216 | "tests") |
| 26217 | (invoke "python" "-m" "pytest" "-vv"))))))) |
| 26218 | (native-inputs |
| 26219 | `(("python-pytest" ,python-pytest) |
| 26220 | ("tests" |
| 26221 | ;; The release on pypi comes without tests. We can't build from this |
| 26222 | ;; checkout, though, because installation requires an invocation of |
| 26223 | ;; poetry. |
| 26224 | ,(origin |
| 26225 | (method git-fetch) |
| 26226 | (uri (git-reference |
| 26227 | (url "https://github.com/matrix-org/python-unpaddedbase64") |
| 26228 | (commit (string-append "v" version)))) |
| 26229 | (file-name (git-file-name name version)) |
| 26230 | (sha256 |
| 26231 | (base32 |
| 26232 | "1n6har8pxv0mqb96lanzihp1xf76aa17jw3977drb1fgz947pnmz")))))) |
| 26233 | (home-page "https://github.com/matrix-org/python-unpaddedbase64") |
| 26234 | (synopsis "Encode and decode Base64 without “=” padding") |
| 26235 | (description |
| 26236 | "RFC 4648 specifies that Base64 should be padded to a multiple of 4 bytes |
| 26237 | using “=” characters. However this conveys no benefit so many protocols |
| 26238 | choose to use Base64 without the “=” padding.") |
| 26239 | (license license:asl2.0))) |
| 26240 | |
| 26241 | (define-public python-py-cpuinfo |
| 26242 | ;; This is the first commit where riscv64-linux support is available. |
| 26243 | ;; We can move back to pypi releases with the next release. |
| 26244 | (let ((commit "4d6987e5c30f2ebacb20781892c01329042cce60") |
| 26245 | (revision "1")) |
| 26246 | (package |
| 26247 | (name "python-py-cpuinfo") |
| 26248 | (version (git-version "8.0.0" revision commit)) |
| 26249 | (source |
| 26250 | (origin |
| 26251 | (method git-fetch) |
| 26252 | (uri (git-reference |
| 26253 | (url "https://github.com/workhorsy/py-cpuinfo") |
| 26254 | (commit commit))) |
| 26255 | (file-name (git-file-name name version)) |
| 26256 | (sha256 |
| 26257 | (base32 |
| 26258 | "0h5wi1bfcqqr1x3j1pa7dmkx7siprsyksbsy80fl2sdrrgpji0b0")))) |
| 26259 | (build-system python-build-system) |
| 26260 | (home-page "https://github.com/workhorsy/py-cpuinfo") |
| 26261 | (synopsis "Get CPU info with Python") |
| 26262 | (description |
| 26263 | "This Python module returns the CPU info by using the best sources of |
| 26264 | information for your operating system.") |
| 26265 | (license license:expat)))) |
| 26266 | |
| 26267 | (define-public python-canonicaljson |
| 26268 | (package |
| 26269 | (name "python-canonicaljson") |
| 26270 | (version "1.6.3") |
| 26271 | (source |
| 26272 | (origin |
| 26273 | (method url-fetch) |
| 26274 | (uri (pypi-uri "canonicaljson" version)) |
| 26275 | (sha256 |
| 26276 | (base32 "0j5lq191jkd483q6xzc16c9fahxf15lrv03mvah9ka3lq85pcnfa")))) |
| 26277 | (build-system python-build-system) |
| 26278 | (arguments |
| 26279 | (list |
| 26280 | #:phases |
| 26281 | #~(modify-phases %standard-phases |
| 26282 | (add-after 'unpack 'loosen-requirements |
| 26283 | (lambda _ |
| 26284 | ;; Permit newer versions of setuptools_scm |
| 26285 | (substitute* "pyproject.toml" |
| 26286 | ((">= 2.0.0, <3") ">= 2.0.0")))) |
| 26287 | (replace 'build |
| 26288 | (lambda _ |
| 26289 | ;; ZIP does not support timestamps before 1980. |
| 26290 | (setenv "SOURCE_DATE_EPOCH" "315532800") |
| 26291 | (invoke "python" "-m" "build" "--wheel" "--no-isolation" "."))) |
| 26292 | (replace 'check |
| 26293 | (lambda* (#:key tests? #:allow-other-keys) |
| 26294 | (when tests? |
| 26295 | (invoke "pytest")))) |
| 26296 | (replace 'install |
| 26297 | (lambda _ |
| 26298 | (let ((whl (car (find-files "dist" "\\.whl$")))) |
| 26299 | (invoke "pip" "--no-cache-dir" "--no-input" |
| 26300 | "install" "--no-deps" "--prefix" #$output whl))))))) |
| 26301 | (native-inputs |
| 26302 | (list python-pypa-build python-pytest python-setuptools python-setuptools-scm)) |
| 26303 | (propagated-inputs |
| 26304 | (list python-six python-frozendict python-simplejson)) |
| 26305 | (home-page "https://github.com/matrix-org/python-canonicaljson") |
| 26306 | (synopsis "Canonical JSON") |
| 26307 | (description |
| 26308 | "Deterministically encode JSON. |
| 26309 | |
| 26310 | @itemize |
| 26311 | @item Encodes objects and arrays as RFC 7159 JSON. |
| 26312 | @item Sorts object keys so that you get the same result each time. |
| 26313 | @item Has no insignificant whitespace to make the output as small as possible. |
| 26314 | @item Escapes only the characters that must be escaped, U+0000 to |
| 26315 | U+0019 / U+0022 / U+0056, to keep the output as small as possible. |
| 26316 | @item Uses the shortest escape sequence for each escaped character. |
| 26317 | @item Encodes the JSON as UTF-8. |
| 26318 | @item Can encode frozendict immutable dictionaries. |
| 26319 | @end itemize") |
| 26320 | (license license:asl2.0))) |
| 26321 | |
| 26322 | (define-public python-signedjson |
| 26323 | (package |
| 26324 | (name "python-signedjson") |
| 26325 | (version "1.1.1") |
| 26326 | (source |
| 26327 | (origin |
| 26328 | (method url-fetch) |
| 26329 | (uri (pypi-uri "signedjson" version)) |
| 26330 | (sha256 |
| 26331 | (base32 "0280f8zyycsmd7iy65bs438flm7m8ffs1kcxfbvhi8hbazkqc19m")))) |
| 26332 | (build-system python-build-system) |
| 26333 | (propagated-inputs |
| 26334 | (list python-canonicaljson python-importlib-metadata python-pynacl |
| 26335 | python-typing-extensions python-unpaddedbase64)) |
| 26336 | (native-inputs |
| 26337 | (list python-setuptools-scm)) |
| 26338 | (home-page "https://github.com/matrix-org/python-signedjson") |
| 26339 | (synopsis "Sign JSON objects with ED25519 signatures") |
| 26340 | (description |
| 26341 | "Sign JSON objects with ED25519 signatures. |
| 26342 | |
| 26343 | @itemize |
| 26344 | @item More than one entity can sign the same object. |
| 26345 | @item Each entity can sign the object with more than one key making it easier to |
| 26346 | rotate keys |
| 26347 | @item ED25519 can be replaced with a different algorithm. |
| 26348 | @item Unprotected data can be added to the object under the @dfn{\"unsigned\"} |
| 26349 | key. |
| 26350 | @end itemize") |
| 26351 | (license license:asl2.0))) |
| 26352 | |
| 26353 | (define-public python-daemonize |
| 26354 | (package |
| 26355 | (name "python-daemonize") |
| 26356 | (version "2.5.0") |
| 26357 | (source |
| 26358 | (origin |
| 26359 | (method url-fetch) |
| 26360 | (uri (pypi-uri "daemonize" version)) |
| 26361 | (sha256 |
| 26362 | (base32 "1hwbl3gf9fdds9sc14zgjyjisjvxidrvqc11xlbb0b6jz17nw0nx")))) |
| 26363 | (build-system python-build-system) |
| 26364 | (home-page "https://github.com/thesharp/daemonize") |
| 26365 | (synopsis "Library for writing system daemons in Python") |
| 26366 | (description "Daemonize is a library for writing system daemons in Python.") |
| 26367 | (license license:expat))) |
| 26368 | |
| 26369 | (define-public python-pymacaroons |
| 26370 | (package |
| 26371 | (name "python-pymacaroons") |
| 26372 | (version "0.13.0") |
| 26373 | (source |
| 26374 | (origin |
| 26375 | (method url-fetch) |
| 26376 | (uri (pypi-uri "pymacaroons" version)) |
| 26377 | (sha256 |
| 26378 | (base32 "1f0357a6g1h96sk6wy030xmc1p4rd80a999qvxd28v7nlm1blsqy")))) |
| 26379 | (build-system python-build-system) |
| 26380 | (propagated-inputs |
| 26381 | (list python-six python-pynacl)) |
| 26382 | (home-page "https://github.com/ecordell/pymacaroons") |
| 26383 | (synopsis "Python Macaroon Library") |
| 26384 | (description |
| 26385 | "Macaroons, like cookies, are a form of bearer credential. Unlike opaque |
| 26386 | tokens, macaroons embed caveats that define specific authorization |
| 26387 | requirements for the target service, the service that issued the root macaroon |
| 26388 | and which is capable of verifying the integrity of macaroons it receives. |
| 26389 | |
| 26390 | Macaroons allow for delegation and attenuation of authorization. They are |
| 26391 | simple and fast to verify, and decouple authorization policy from the |
| 26392 | enforcement of that policy.") |
| 26393 | (license license:expat))) |
| 26394 | |
| 26395 | (define-public python-ldap3 |
| 26396 | (package |
| 26397 | (name "python-ldap3") |
| 26398 | (version "2.7") |
| 26399 | (home-page "https://github.com/cannatag/ldap3") |
| 26400 | (source |
| 26401 | (origin |
| 26402 | (method git-fetch) |
| 26403 | (uri (git-reference (url home-page) |
| 26404 | (commit (string-append "v" version)))) |
| 26405 | (file-name (git-file-name name version)) |
| 26406 | (sha256 |
| 26407 | (base32 "0xw9fkqld21xsvdpaqir8ccc2l805xnn9gxahsnl70xzp3mwl0xv")))) |
| 26408 | (build-system python-build-system) |
| 26409 | (arguments |
| 26410 | '(#:tests? #f ;TODO: Tests need a real LDAP server to run |
| 26411 | #:phases (modify-phases %standard-phases |
| 26412 | (replace 'check |
| 26413 | (lambda* (#:key tests? #:allow-other-keys) |
| 26414 | (when tests? |
| 26415 | (invoke "nosetests" "-s" "test")) |
| 26416 | #t))))) |
| 26417 | (native-inputs |
| 26418 | (list python-nose)) |
| 26419 | (propagated-inputs |
| 26420 | (list python-gssapi python-pyasn1)) |
| 26421 | (synopsis "Python LDAP client") |
| 26422 | (description |
| 26423 | "LDAP3 is a strictly RFC 4510 conforming LDAP V3 pure Python client |
| 26424 | library.") |
| 26425 | (license license:lgpl3+))) |
| 26426 | |
| 26427 | (define-public python-boltons |
| 26428 | (package |
| 26429 | (name "python-boltons") |
| 26430 | (version "20.0.0") |
| 26431 | (source |
| 26432 | (origin |
| 26433 | (method url-fetch) |
| 26434 | (uri (pypi-uri "boltons" version)) |
| 26435 | (sha256 |
| 26436 | (base32 |
| 26437 | "0lrr40qqj3ch8xarvyzbnbjs79pz5aywklllq53l347h1b8xnkg4")))) |
| 26438 | (build-system python-build-system) |
| 26439 | (home-page "https://github.com/mahmoud/boltons") |
| 26440 | (synopsis "Extensions to the Python standard library") |
| 26441 | (description |
| 26442 | "Boltons is a set of over 230 pure-Python utilities in the same spirit |
| 26443 | as — and yet conspicuously missing from — the standard library, including: |
| 26444 | |
| 26445 | @itemize |
| 26446 | @item Atomic file saving, bolted on with fileutils |
| 26447 | @item A highly-optimized OrderedMultiDict, in dictutils |
| 26448 | @item Two types of PriorityQueue, in queueutils |
| 26449 | @item Chunked and windowed iteration, in iterutils |
| 26450 | @item Recursive data structure iteration and merging, with iterutils.remap |
| 26451 | @item Exponential backoff functionality, including jitter, through |
| 26452 | iterutils.backoff |
| 26453 | @item A full-featured TracebackInfo type, for representing stack traces, in |
| 26454 | tbutils |
| 26455 | @end itemize") |
| 26456 | (license license:bsd-3))) |
| 26457 | |
| 26458 | (define-public python-eliot |
| 26459 | (package |
| 26460 | (name "python-eliot") |
| 26461 | (version "1.13.0") |
| 26462 | (source |
| 26463 | (origin |
| 26464 | (method url-fetch) |
| 26465 | (uri (pypi-uri "eliot" version)) |
| 26466 | (sha256 |
| 26467 | (base32 "1xzzhsjrrw430dc84vamf683bwp9i0nr86xf2iav6yla615ijq2p")))) |
| 26468 | (build-system python-build-system) |
| 26469 | (arguments |
| 26470 | `(#:phases |
| 26471 | (modify-phases %standard-phases |
| 26472 | (add-after 'unpack 'remove-journald-support |
| 26473 | (lambda _ |
| 26474 | (for-each delete-file |
| 26475 | '("eliot/tests/test_journald.py" |
| 26476 | "eliot/journald.py")) |
| 26477 | #t)) |
| 26478 | (add-after 'remove-journald-support 'remove-eliot-prettyprint-tests |
| 26479 | ;; remove command-line tool's tests. TODO eliot-prettyprint should |
| 26480 | ;; be installed and these tests should pass. |
| 26481 | (lambda _ |
| 26482 | (delete-file "eliot/tests/test_prettyprint.py") |
| 26483 | #t)) |
| 26484 | (add-after 'remove-eliot-prettyprint-tests 'remove-failing-tests |
| 26485 | (lambda _ |
| 26486 | ;; These tests started to fail after updating python-pandas to |
| 26487 | ;; 1.3.3 and python-dask to 2021.9.1. |
| 26488 | (substitute* "eliot/tests/test_validation.py" |
| 26489 | (("test_omitLoggerFromActionType") |
| 26490 | "_test_omitLoggerFromActionType") |
| 26491 | (("test_logCallsDefaultLoggerWrite") |
| 26492 | "_test_logCallsDefaultLoggerWrite")) |
| 26493 | #t))))) |
| 26494 | (propagated-inputs |
| 26495 | (list python-boltons python-pyrsistent python-six |
| 26496 | python-zope-interface)) |
| 26497 | (native-inputs |
| 26498 | (list python-black |
| 26499 | python-coverage |
| 26500 | python-dask |
| 26501 | python-flake8 |
| 26502 | python-hypothesis |
| 26503 | python-pytest |
| 26504 | python-setuptools |
| 26505 | python-sphinx |
| 26506 | python-sphinx-rtd-theme |
| 26507 | python-testtools |
| 26508 | python-twine |
| 26509 | python-twisted)) |
| 26510 | (home-page "https://github.com/itamarst/eliot/") |
| 26511 | (synopsis "Eliot: the logging system that tells you why it happened") |
| 26512 | (description |
| 26513 | "@dfn{eliot} is a Python logging system that outputs causal chains of |
| 26514 | actions: actions can spawn other actions, and eventually they either succeed |
| 26515 | or fail. The resulting logs tell you the story of what your software did: what |
| 26516 | happened, and what caused it.") |
| 26517 | (license license:asl2.0))) |
| 26518 | |
| 26519 | (define-public python-pem |
| 26520 | (package |
| 26521 | (name "python-pem") |
| 26522 | (version "20.1.0") |
| 26523 | (source |
| 26524 | (origin |
| 26525 | (method url-fetch) |
| 26526 | (uri (pypi-uri "pem" version)) |
| 26527 | (sha256 |
| 26528 | (base32 |
| 26529 | "1xh88ss279fprxnzd10dczmqwjhppbyvljm33zrg2mgybwd66qr7")))) |
| 26530 | (build-system python-build-system) |
| 26531 | (native-inputs |
| 26532 | (list python-certifi |
| 26533 | python-coverage |
| 26534 | python-pretend |
| 26535 | python-pyopenssl |
| 26536 | python-pytest |
| 26537 | python-sphinx |
| 26538 | python-twisted)) |
| 26539 | (home-page "https://pem.readthedocs.io/") |
| 26540 | (synopsis "Easy PEM file parsing in Python") |
| 26541 | (description |
| 26542 | "This package provides a Python module for parsing and splitting PEM files.") |
| 26543 | (license license:expat))) |
| 26544 | |
| 26545 | (define-public python-txsni |
| 26546 | ;; We need a few commits on top of 0.1.9 for compatibility with newer |
| 26547 | ;; Python and OpenSSL. |
| 26548 | (let ((commit "5014c141a7acef63e20fcf6c36fa07f0cd754ce1") |
| 26549 | (revision "0")) |
| 26550 | (package |
| 26551 | (name "python-txsni") |
| 26552 | (version (git-version "0.1.9" revision commit)) |
| 26553 | (home-page "https://github.com/glyph/txsni") |
| 26554 | (source |
| 26555 | (origin |
| 26556 | (method git-fetch) |
| 26557 | (uri (git-reference (url home-page) (commit commit))) |
| 26558 | (file-name (git-file-name name version)) |
| 26559 | (sha256 |
| 26560 | (base32 |
| 26561 | "0imfxx4yjj1lbq0n5ad45al3wvv4qv96sivnc1r51i66mxi658z8")))) |
| 26562 | (build-system python-build-system) |
| 26563 | (propagated-inputs |
| 26564 | (list python-pyopenssl python-service-identity python-twisted)) |
| 26565 | (synopsis "Run TLS servers with Twisted") |
| 26566 | (description |
| 26567 | "This package provides an easy-to-use SNI endpoint for use |
| 26568 | with the Twisted web framework.") |
| 26569 | (license license:expat)))) |
| 26570 | |
| 26571 | (define-public python-txacme |
| 26572 | (package |
| 26573 | (name "python-txacme") |
| 26574 | (version "0.9.2") |
| 26575 | (source |
| 26576 | (origin |
| 26577 | (method url-fetch) |
| 26578 | (uri (pypi-uri "txacme" version)) |
| 26579 | (sha256 |
| 26580 | (base32 "1cplx4llq7i508w6fgwjdv9di7rsz9k9irfmzdfbiz6q6a0ykf1d")))) |
| 26581 | (build-system python-build-system) |
| 26582 | (propagated-inputs |
| 26583 | (list python-acme |
| 26584 | python-attrs |
| 26585 | python-eliot |
| 26586 | python-josepy |
| 26587 | python-pem |
| 26588 | python-treq |
| 26589 | python-twisted |
| 26590 | python-txsni)) |
| 26591 | (native-inputs |
| 26592 | (list python-fixtures |
| 26593 | python-hypothesis |
| 26594 | python-mock |
| 26595 | python-service-identity |
| 26596 | python-testrepository |
| 26597 | python-testscenarios |
| 26598 | python-testtools)) |
| 26599 | (home-page "https://github.com/twisted/txacme") |
| 26600 | (synopsis "Twisted implexmentation of the ACME protocol") |
| 26601 | (description |
| 26602 | "ACME is Automatic Certificate Management Environment, a protocol that |
| 26603 | allows clients and certificate authorities to automate verification and |
| 26604 | certificate issuance. The ACME protocol is used by the free Let's Encrypt |
| 26605 | Certificate Authority. |
| 26606 | |
| 26607 | txacme is an implementation of the protocol for Twisted, the event-driven |
| 26608 | networking engine for Python.") |
| 26609 | (license license:expat))) |
| 26610 | |
| 26611 | (define-public python-pysaml2 |
| 26612 | (package |
| 26613 | (name "python-pysaml2") |
| 26614 | (version "6.5.1") |
| 26615 | (source |
| 26616 | (origin |
| 26617 | (method url-fetch) |
| 26618 | (uri (pypi-uri "pysaml2" version)) |
| 26619 | (sha256 |
| 26620 | (base32 |
| 26621 | "1xk2x0slz1f8cqv7vn77qx99xfd1mshhswiwrljk9m72w2m9iivd")))) |
| 26622 | (build-system python-build-system) |
| 26623 | (propagated-inputs |
| 26624 | (list python-cryptography |
| 26625 | python-dateutil |
| 26626 | python-defusedxml |
| 26627 | python-importlib-resources |
| 26628 | python-pyopenssl |
| 26629 | python-pytz |
| 26630 | python-requests |
| 26631 | python-six |
| 26632 | python-xmlschema)) |
| 26633 | (home-page "https://idpy.org") |
| 26634 | (synopsis "Python implementation of SAML Version 2 Standard") |
| 26635 | (description |
| 26636 | "PySAML2 is a pure python implementation of SAML Version 2 Standard. |
| 26637 | It contains all necessary pieces for building a SAML2 service provider or |
| 26638 | an identity provider. The distribution contains examples of both. |
| 26639 | |
| 26640 | This package was originally written to work in a WSGI environment, but |
| 26641 | there are extensions that allow you to use it with other frameworks.") |
| 26642 | (license license:asl2.0))) |
| 26643 | |
| 26644 | (define-public python-click-plugins |
| 26645 | (package |
| 26646 | (name "python-click-plugins") |
| 26647 | (version "1.1.1") |
| 26648 | (source |
| 26649 | (origin |
| 26650 | (method url-fetch) |
| 26651 | (uri (pypi-uri "click-plugins" version)) |
| 26652 | (sha256 |
| 26653 | (base32 "0jr6bxj67vg988vkm6nz8jj98v9lg46bn49lkhak3n598jbrkas6")))) |
| 26654 | (build-system python-build-system) |
| 26655 | (native-inputs |
| 26656 | (list python-pytest)) |
| 26657 | (propagated-inputs |
| 26658 | (list python-click)) |
| 26659 | (synopsis "Extension for Click to register external CLI commands") |
| 26660 | (description "This package provides n extension module for Click to |
| 26661 | register external CLI commands via setuptools entry-points.") |
| 26662 | (home-page "https://github.com/click-contrib/click-plugins") |
| 26663 | (license license:bsd-3))) |
| 26664 | |
| 26665 | (define-public python-diceware |
| 26666 | (package |
| 26667 | (name "python-diceware") |
| 26668 | (version "0.9.6") |
| 26669 | (source |
| 26670 | (origin |
| 26671 | (method url-fetch) |
| 26672 | (uri (pypi-uri "diceware" version)) |
| 26673 | (sha256 |
| 26674 | (base32 |
| 26675 | "0klb0ysybzlh2wihvir82hgq62v0jjmlcqklwajyms7c0p529yby")))) |
| 26676 | (build-system python-build-system) |
| 26677 | (native-inputs |
| 26678 | (list python-coverage python-pytest python-pytest-runner)) |
| 26679 | (home-page "https://github.com/ulif/diceware/") |
| 26680 | (synopsis "Generates memorable passphrases") |
| 26681 | (description "This package generates passphrases by concatenating words |
| 26682 | randomly picked from wordlists. It supports several sources of |
| 26683 | randomness (including real life dice) and different wordlists (including |
| 26684 | cryptographically signed ones).") |
| 26685 | (license license:gpl3+))) |
| 26686 | |
| 26687 | (define-public python-dictdiffer |
| 26688 | (package |
| 26689 | (name "python-dictdiffer") |
| 26690 | (version "0.9.0") |
| 26691 | (source (origin |
| 26692 | (method url-fetch) |
| 26693 | (uri (pypi-uri "dictdiffer" version)) |
| 26694 | (sha256 |
| 26695 | (base32 |
| 26696 | "0y3mk74qm2q9hsm37892i1wzn8bbdrvbs4nmnvqwq4z6pxgwzfhp")))) |
| 26697 | (build-system python-build-system) |
| 26698 | (arguments |
| 26699 | ;; XXX: The PyPI tarball lacks tests and the git repository |
| 26700 | ;; fails to determine version. |
| 26701 | '(#:tests? #f)) |
| 26702 | (native-inputs |
| 26703 | (list python-pytest-runner python-setuptools-scm)) |
| 26704 | (home-page "https://github.com/inveniosoftware/dictdiffer") |
| 26705 | (synopsis "Diff and patch Python dictionary objects") |
| 26706 | (description |
| 26707 | "Dictdiffer is a Python module that helps you to diff and patch |
| 26708 | dictionaries.") |
| 26709 | (license license:expat))) |
| 26710 | |
| 26711 | (define-public python-dictpath |
| 26712 | (package |
| 26713 | (name "python-dictpath") |
| 26714 | (version "0.1.3") |
| 26715 | (source |
| 26716 | (origin |
| 26717 | (method url-fetch) |
| 26718 | (uri (pypi-uri "dictpath" version)) |
| 26719 | (sha256 |
| 26720 | (base32 "1n4hq4wbgaw59bbb16nhkgg5wk8sl4iw940vjrgx4xmifqxxw73m")))) |
| 26721 | (build-system python-build-system) |
| 26722 | (native-inputs (list python-pytest python-pytest-cov python-pytest-flake8)) |
| 26723 | (home-page "https://github.com/p1c2u/pathable") |
| 26724 | (synopsis "Object-oriented path library for Python") |
| 26725 | (description "This object-oriented dictionary path Python library enables |
| 26726 | traversing resources like paths or accessing resources on demand with separate |
| 26727 | accessor layer.") |
| 26728 | (license license:asl2.0))) |
| 26729 | |
| 26730 | (define-public pyzo |
| 26731 | (package |
| 26732 | (name "pyzo") |
| 26733 | (version "4.12.3") |
| 26734 | (source |
| 26735 | (origin |
| 26736 | (method git-fetch) |
| 26737 | (uri (git-reference |
| 26738 | (url "https://github.com/pyzo/pyzo.git") |
| 26739 | (commit (string-append "v" version)))) |
| 26740 | (file-name (git-file-name name version)) |
| 26741 | (sha256 |
| 26742 | (base32 |
| 26743 | "0v6rgp52bf9za2spxx9c1yc6wmskvlsj81iw0gipjy7y8vpypgn2")))) |
| 26744 | (build-system python-build-system) |
| 26745 | (arguments |
| 26746 | `(#:phases |
| 26747 | (modify-phases %standard-phases |
| 26748 | (add-before 'check 'fix-home-directory |
| 26749 | (lambda _ |
| 26750 | ;; Tests fail with "Permission denied: '/homeless-shelter'". |
| 26751 | (setenv "HOME" "/tmp")))) |
| 26752 | ;; Tests fail with "Uncaught Python exception: python: undefined |
| 26753 | ;; symbol: objc_getClass". |
| 26754 | #:tests? #f)) |
| 26755 | (propagated-inputs |
| 26756 | (list python-pyqt)) |
| 26757 | (home-page "https://pyzo.org") |
| 26758 | (synopsis |
| 26759 | "Python IDE for scientific computing") |
| 26760 | (description |
| 26761 | "Pyzo is a Python IDE focused on interactivity and introspection, |
| 26762 | which makes it very suitable for scientific computing. Its practical |
| 26763 | design is aimed at simplicity and efficiency. |
| 26764 | |
| 26765 | It consists of two main components, the editor and the shell, and uses |
| 26766 | a set of pluggable tools to help the programmer in various ways. Some |
| 26767 | example tools are source structure, project manager, interactive help, |
| 26768 | workspace...") |
| 26769 | (license license:bsd-2))) |
| 26770 | |
| 26771 | (define-public python-osc |
| 26772 | (package |
| 26773 | (name "python-osc") |
| 26774 | (version "1.7.4") |
| 26775 | (source |
| 26776 | (origin |
| 26777 | (method url-fetch) |
| 26778 | (uri (pypi-uri "python-osc" version)) |
| 26779 | (sha256 |
| 26780 | (base32 |
| 26781 | "0cnh0z5lnng7fh48nmfaqqn8j25k13gkd4rhxd3m6sjqiix9s3vn")))) |
| 26782 | (build-system python-build-system) |
| 26783 | (home-page "https://github.com/attwad/python-osc") |
| 26784 | (synopsis "Open Sound Control server and client implementations") |
| 26785 | (description |
| 26786 | "@code{python-osc} is a pure Python library with no external |
| 26787 | dependencies. It implements the @uref{http://opensoundcontrol.org/spec-1_0, |
| 26788 | Open Sound Control 1.0} specification.") |
| 26789 | (license license:unlicense))) |
| 26790 | |
| 26791 | (define-public python-voluptuous |
| 26792 | (package |
| 26793 | (name "python-voluptuous") |
| 26794 | (version "0.11.7") |
| 26795 | (source |
| 26796 | (origin |
| 26797 | (method url-fetch) |
| 26798 | (uri (pypi-uri "voluptuous" version)) |
| 26799 | (sha256 |
| 26800 | (base32 |
| 26801 | "0mplkcpb5d8wjf8vk195fys4y6a3wbibiyf708imw33lphfk9g1a")))) |
| 26802 | (build-system python-build-system) |
| 26803 | (native-inputs |
| 26804 | (list python-nose)) |
| 26805 | (home-page "https://github.com/alecthomas/voluptuous") |
| 26806 | (synopsis "Python data validation library") |
| 26807 | (description |
| 26808 | "Voluptuous is a Python data validation library. It is primarily |
| 26809 | intended for validating data coming into Python as JSON, YAML, etc.") |
| 26810 | (license license:bsd-3))) |
| 26811 | |
| 26812 | (define-public python-cmd2 |
| 26813 | (package |
| 26814 | (name "python-cmd2") |
| 26815 | (version "2.3.3") |
| 26816 | (source |
| 26817 | (origin |
| 26818 | (method url-fetch) |
| 26819 | (uri (pypi-uri "cmd2" version)) |
| 26820 | (sha256 |
| 26821 | (base32 |
| 26822 | "0h1naik558qh48gx2iyy0a0khvw5fz0in69y84mbrhsm9nq7w3bm")))) |
| 26823 | (build-system python-build-system) |
| 26824 | (arguments |
| 26825 | '(#:phases |
| 26826 | (modify-phases %standard-phases |
| 26827 | (replace 'check |
| 26828 | (lambda* (#:key tests? #:allow-other-keys) |
| 26829 | (if tests? |
| 26830 | (invoke "pytest" "-vv" "-k" |
| 26831 | ;; These tests fail because no EDITOR is in PATH. |
| 26832 | "not test_find_editor_not_specified \ |
| 26833 | and not test_transcript") |
| 26834 | (format #t "test suite not run~%"))))))) |
| 26835 | (propagated-inputs |
| 26836 | (list python-attrs python-colorama python-pyperclip python-wcwidth)) |
| 26837 | (native-inputs |
| 26838 | (list python-invoke |
| 26839 | python-mock |
| 26840 | python-pytest |
| 26841 | python-pytest-cov |
| 26842 | python-pytest-mock |
| 26843 | python-setuptools-scm)) |
| 26844 | (home-page "https://github.com/python-cmd2/cmd2") |
| 26845 | (synopsis "Tool for building interactive command line applications") |
| 26846 | (description |
| 26847 | "Cmd2 is a tool for building interactive command line applications in |
| 26848 | Python. Its goal is to make it quick and easy for developers to build |
| 26849 | feature-rich and user-friendly interactive command line applications. It |
| 26850 | provides a simple API which is an extension of Python's built-in @code{cmd} |
| 26851 | module. @code{cmd2} provides a wealth of features on top of @code{cmd} to |
| 26852 | make your life easier and eliminates much of the boilerplate code which would |
| 26853 | be necessary when using @code{cmd}.") |
| 26854 | (license license:expat))) |
| 26855 | |
| 26856 | (define-public python-pytidylib |
| 26857 | (package |
| 26858 | (name "python-pytidylib") |
| 26859 | (version "0.3.2") |
| 26860 | (source (origin |
| 26861 | (method url-fetch) |
| 26862 | (uri (pypi-uri "pytidylib" version)) |
| 26863 | (sha256 |
| 26864 | (base32 |
| 26865 | "1wqa9dv5d7swka14rnky862hc7dgk2g3dhlrz57hdn3hb7bwic92")))) |
| 26866 | (build-system python-build-system) |
| 26867 | (arguments |
| 26868 | '(#:phases |
| 26869 | (modify-phases %standard-phases |
| 26870 | (add-before 'build 'qualify-libtidy |
| 26871 | (lambda* (#:key inputs #:allow-other-keys) |
| 26872 | (let ((libtidy (search-input-file inputs "/lib/libtidy.so"))) |
| 26873 | (substitute* "tidylib/tidy.py" |
| 26874 | (("ctypes\\.util\\.find_library\\('tidy'\\)") |
| 26875 | (format #f "'~a'" libtidy))) |
| 26876 | #t)))))) |
| 26877 | (inputs (list tidy)) |
| 26878 | (home-page "https://github.com/countergram/pytidylib") |
| 26879 | (synopsis "Python wrapper for HTML Tidy library") |
| 26880 | (description |
| 26881 | "PyTidyLib is a Python package that wraps the HTML Tidy library. This |
| 26882 | allows you, from Python code, to “fix” invalid (X)HTML markup.") |
| 26883 | (license license:expat))) |
| 26884 | |
| 26885 | (define-public python-mujson |
| 26886 | (package |
| 26887 | (name "python-mujson") |
| 26888 | (version "1.4") |
| 26889 | (source |
| 26890 | (origin |
| 26891 | (method url-fetch) |
| 26892 | (uri (pypi-uri "mujson" version)) |
| 26893 | (sha256 |
| 26894 | (base32 |
| 26895 | "0wbj6r8yzsdx2b0kbldlkznr1a9nn33za2q9x3g0hbg420dwzn97")))) |
| 26896 | (build-system python-build-system) |
| 26897 | (home-page "https://github.com/mattgiles/mujson") |
| 26898 | (synopsis "Use the fastest JSON functions available at import time") |
| 26899 | (description "This package selects the fastest JSON functions available |
| 26900 | at import time.") |
| 26901 | (license license:expat))) |
| 26902 | |
| 26903 | (define-public python-bashlex |
| 26904 | (package |
| 26905 | (name "python-bashlex") |
| 26906 | (version "0.14") |
| 26907 | (source |
| 26908 | (origin |
| 26909 | (method url-fetch) |
| 26910 | (uri (pypi-uri "bashlex" version)) |
| 26911 | (sha256 |
| 26912 | (base32 |
| 26913 | "1z9g96fgsfpdwawp4sb5x6hbdhmda7kgmcrqlf9xx4bs1f8f14js")))) |
| 26914 | (build-system python-build-system) |
| 26915 | (arguments |
| 26916 | `(#:phases |
| 26917 | (modify-phases %standard-phases |
| 26918 | (add-before 'build 'pregenerate-yacc-tables |
| 26919 | (lambda _ |
| 26920 | ;; parser.py caches tables, which attempts to write to site lib |
| 26921 | ;; see https://github.com/idank/bashlex/issues/51 |
| 26922 | (invoke "python" "-c" "import bashlex")))))) |
| 26923 | (home-page |
| 26924 | "https://github.com/idank/bashlex") |
| 26925 | (synopsis "Python parser for bash") |
| 26926 | (description "@code{bashlex} is a Python port of the parser used |
| 26927 | internally by GNU bash. |
| 26928 | |
| 26929 | For the most part it's transliterated from C, the major differences are: |
| 26930 | |
| 26931 | @itemize |
| 26932 | @item it does not execute anything |
| 26933 | @item it is reentrant |
| 26934 | @item it generates a complete AST |
| 26935 | @end itemize |
| 26936 | ") |
| 26937 | (license license:gpl3+))) |
| 26938 | |
| 26939 | (define-public python-jinxed |
| 26940 | (package |
| 26941 | (name "python-jinxed") |
| 26942 | (version "1.0.0") |
| 26943 | (source |
| 26944 | (origin |
| 26945 | (method url-fetch) |
| 26946 | (uri (pypi-uri "jinxed" version)) |
| 26947 | (sha256 |
| 26948 | (base32 |
| 26949 | "1n7vl03rhjd0xhjgbjlh8x9f8yfbhamcwkgvs4jg7g5qj8f0wk89")))) |
| 26950 | (build-system python-build-system) |
| 26951 | (arguments |
| 26952 | '(#:phases |
| 26953 | (modify-phases %standard-phases |
| 26954 | (add-before 'check 'set-environment-variables |
| 26955 | (lambda* (#:key inputs #:allow-other-keys) |
| 26956 | (let ((ncurses (assoc-ref inputs "ncurses"))) |
| 26957 | (setenv "TERM" "LINUX") |
| 26958 | (setenv "TERMINFO" (string-append ncurses "/share/terminfo")) |
| 26959 | #t)))) |
| 26960 | #:tests? #f)) ; _curses.error: setupterm: could not find terminal |
| 26961 | (native-inputs |
| 26962 | (list ncurses)) |
| 26963 | (home-page "https://github.com/Rockhopper-Technologies/jinxed") |
| 26964 | (synopsis "Jinxed Terminal Library") |
| 26965 | (description |
| 26966 | "Jinxed is an implementation of a subset of the Python curses library.") |
| 26967 | (license license:mpl2.0))) |
| 26968 | |
| 26969 | (define-public python-svgutils |
| 26970 | (package |
| 26971 | (name "python-svgutils") |
| 26972 | (version "0.3.4") |
| 26973 | (source |
| 26974 | (origin |
| 26975 | (method url-fetch) |
| 26976 | (uri (pypi-uri "svgutils" version)) |
| 26977 | (sha256 |
| 26978 | (base32 |
| 26979 | "0lz0w2ajdvwd269a7ppnzawmx8px0116j0nx8xvhlihxrd28zx4y")))) |
| 26980 | (build-system python-build-system) |
| 26981 | (propagated-inputs |
| 26982 | (list python-lxml)) |
| 26983 | (home-page "https://svgutils.readthedocs.io") |
| 26984 | (synopsis "Python SVG editor") |
| 26985 | (description "This is an utility package that helps with editing and |
| 26986 | concatenating SVG files. It is especially directed at scientists preparing |
| 26987 | final figures for submission to journals. So far it supports arbitrary |
| 26988 | placement and scaling of SVG figures and adding markers, such as labels.") |
| 26989 | (license license:expat))) |
| 26990 | |
| 26991 | (define-public python-blessed |
| 26992 | (package |
| 26993 | (name "python-blessed") |
| 26994 | (version "1.17.8") |
| 26995 | (source |
| 26996 | (origin |
| 26997 | (method url-fetch) |
| 26998 | (uri (pypi-uri "blessed" version)) |
| 26999 | (sha256 |
| 27000 | (base32 |
| 27001 | "1wdj342sk22hfrg0n91x2qnqsbzbiyq9y009v3pxnvfzn9bx0wbn")) |
| 27002 | (modules '((guix build utils))) |
| 27003 | (snippet |
| 27004 | '(begin |
| 27005 | ;; Don't get hung up on Windows test failures. |
| 27006 | (delete-file "blessed/win_terminal.py") #t)))) |
| 27007 | (build-system python-build-system) |
| 27008 | (propagated-inputs |
| 27009 | (list python-jinxed python-six python-wcwidth)) |
| 27010 | (native-inputs |
| 27011 | (list python-mock python-pytest)) |
| 27012 | (home-page "https://github.com/jquast/blessed") |
| 27013 | (synopsis "Wrapper around terminal capabilities") |
| 27014 | (description |
| 27015 | "Blessed is a thin, practical wrapper around terminal styling, screen |
| 27016 | positioning, and keyboard input.") |
| 27017 | (license license:expat))) |
| 27018 | |
| 27019 | (define-public python-readme-renderer |
| 27020 | (package |
| 27021 | (name "python-readme-renderer") |
| 27022 | (version "34.0") |
| 27023 | (source |
| 27024 | (origin |
| 27025 | (method url-fetch) |
| 27026 | (uri (pypi-uri "readme_renderer" version)) |
| 27027 | (sha256 |
| 27028 | (base32 |
| 27029 | "1c75h9znffc2lh4j56yg23l5ifj5l8fbdq3kfigi8vbh45zx3d6z")))) |
| 27030 | (build-system python-build-system) |
| 27031 | (arguments |
| 27032 | '(#:phases (modify-phases %standard-phases |
| 27033 | (add-after 'unpack 'loosen-cmarkgfm-dependency |
| 27034 | (lambda _ |
| 27035 | ;; Permit newer versions of cmarkgfm. |
| 27036 | (substitute* "setup.py" |
| 27037 | (("cmarkgfm>=0\\.5\\.0,<0\\.7\\.0") |
| 27038 | "cmarkgfm>=0.5.0")))) |
| 27039 | (replace 'check |
| 27040 | (lambda* (#:key tests? #:allow-other-keys) |
| 27041 | (when tests? |
| 27042 | ;; The GFM tests fail due to slight differences in the |
| 27043 | ;; generated vs expected HTML due to using a more |
| 27044 | ;; recent bleach version (see: |
| 27045 | ;; https://github.com/pypa/readme_renderer/issues/234). |
| 27046 | (invoke "pytest" "-vv" "-k" "not GFM"))))))) |
| 27047 | (propagated-inputs |
| 27048 | (list python-bleach python-docutils python-pygments |
| 27049 | |
| 27050 | ;; Optional dependencies. |
| 27051 | python-cmarkgfm)) ;required by postorius |
| 27052 | (native-inputs |
| 27053 | (list python-mock python-pytest)) |
| 27054 | (home-page "https://github.com/pypa/readme_renderer") |
| 27055 | (synopsis "Render README files in Warehouse") |
| 27056 | (description |
| 27057 | "Readme Renderer is a library that will safely render arbitrary README |
| 27058 | files into HTML. It is designed to be used in Warehouse to render the |
| 27059 | @code{long_description} for packages. It can handle Markdown, reStructuredText, |
| 27060 | and plain text.") |
| 27061 | (license license:asl2.0))) |
| 27062 | |
| 27063 | (define-public python-lazr-delegates |
| 27064 | (package |
| 27065 | (name "python-lazr-delegates") |
| 27066 | (version "2.0.4") |
| 27067 | (source |
| 27068 | (origin |
| 27069 | (method url-fetch) |
| 27070 | (uri (pypi-uri "lazr.delegates" version)) |
| 27071 | (sha256 |
| 27072 | (base32 |
| 27073 | "1rdnl85j9ayp8n85l0ciip621j9dcziz5qnmv2m7krgwgcn31vfx")))) |
| 27074 | (build-system python-build-system) |
| 27075 | (arguments |
| 27076 | '(#:phases |
| 27077 | (modify-phases %standard-phases |
| 27078 | (replace 'check |
| 27079 | (lambda* (#:key tests? #:allow-other-keys) |
| 27080 | (when tests? (invoke "nosetests"))))))) |
| 27081 | (native-inputs |
| 27082 | (list python-nose)) |
| 27083 | (propagated-inputs |
| 27084 | (list python-zope-interface)) |
| 27085 | (home-page "https://launchpad.net/lazr.delegates") |
| 27086 | (synopsis "Easily write objects that delegate behavior") |
| 27087 | (description |
| 27088 | "The @code{lazr.delegates} package makes it easy to write objects that |
| 27089 | delegate behavior to another object. The new object adds some property or |
| 27090 | behavior on to the other object, while still providing the underlying interface, |
| 27091 | and delegating behavior.") |
| 27092 | (license license:lgpl3))) |
| 27093 | |
| 27094 | (define-public python-lazr-config |
| 27095 | (package |
| 27096 | (name "python-lazr-config") |
| 27097 | (version "2.2.3") |
| 27098 | (source |
| 27099 | (origin |
| 27100 | (method url-fetch) |
| 27101 | (uri (pypi-uri "lazr.config" version)) |
| 27102 | (sha256 |
| 27103 | (base32 |
| 27104 | "1qdbrzl61q7cjhbnxvw9y3frcr935y7diwy15xrwcv9ynvw76jmp")))) |
| 27105 | (build-system python-build-system) |
| 27106 | (arguments |
| 27107 | '(#:phases |
| 27108 | (modify-phases %standard-phases |
| 27109 | (replace 'check |
| 27110 | (lambda _ |
| 27111 | (invoke "python" "-s" "-m" "nose" "-P" "lazr")))))) |
| 27112 | (native-inputs |
| 27113 | (list python-nose)) |
| 27114 | (propagated-inputs |
| 27115 | (list python-lazr-delegates python-zope-interface)) |
| 27116 | (home-page "https://launchpad.net/lazr.config") |
| 27117 | (synopsis "Create configuration schemas and process and validate configurations") |
| 27118 | (description |
| 27119 | "The LAZR config system is typically used to manage process configuration. |
| 27120 | Process configuration is for saying how things change when we run systems on |
| 27121 | different machines, or under different circumstances. This system uses ini-like |
| 27122 | file format of section, keys, and values. The config file supports inheritance |
| 27123 | to minimize duplication of information across files. The format supports schema |
| 27124 | validation.") |
| 27125 | (license license:lgpl3))) |
| 27126 | |
| 27127 | (define-public python-flufl-bounce |
| 27128 | (package |
| 27129 | (name "python-flufl-bounce") |
| 27130 | (version "4.0") |
| 27131 | (source |
| 27132 | (origin |
| 27133 | (method url-fetch) |
| 27134 | (uri (pypi-uri "flufl.bounce" version)) |
| 27135 | (sha256 |
| 27136 | (base32 |
| 27137 | "0c9qc2l47lyqnpwskp6vvi7m3jqh6hx42v6d35dgxh3fjzmlll15")))) |
| 27138 | (build-system python-build-system) |
| 27139 | (arguments |
| 27140 | (list #:phases |
| 27141 | #~(modify-phases %standard-phases |
| 27142 | (replace 'check |
| 27143 | (lambda* (#:key tests? inputs outputs #:allow-other-keys) |
| 27144 | (when tests? |
| 27145 | (with-directory-excursion |
| 27146 | (string-append (site-packages inputs outputs) "/flufl") |
| 27147 | (invoke "python" "-m" "nose2" "-v")))))))) |
| 27148 | (propagated-inputs |
| 27149 | (list python-atpublic python-zope-interface)) |
| 27150 | (native-inputs |
| 27151 | (list python-flufl-testing python-nose2)) |
| 27152 | (home-page "https://fluflbounce.readthedocs.io/en/latest/") |
| 27153 | (synopsis "Email bounce detectors") |
| 27154 | (description "The @code{flufl.bounce} library provides a set of heuristics |
| 27155 | and an API for detecting the original bouncing email addresses from a bounce |
| 27156 | message. Many formats found in the wild are supported, as are VERP and |
| 27157 | RFC 3464.") |
| 27158 | (license (list license:asl2.0 |
| 27159 | license:lgpl3)))) ; only for setup_headers.py |
| 27160 | |
| 27161 | (define-public python-flufl-i18n |
| 27162 | (package |
| 27163 | (name "python-flufl-i18n") |
| 27164 | (version "3.0") |
| 27165 | (source |
| 27166 | (origin |
| 27167 | (method url-fetch) |
| 27168 | (uri (pypi-uri "flufl.i18n" version)) |
| 27169 | (sha256 |
| 27170 | (base32 |
| 27171 | "1flwpn1xhgc957zj3zxw92dhdjh0lsy0hdvzq32dzqpsajfsvq1r")))) |
| 27172 | (build-system python-build-system) |
| 27173 | (propagated-inputs |
| 27174 | (list python-atpublic)) |
| 27175 | (home-page "https://flufli18n.readthedocs.io") |
| 27176 | (synopsis "API for Python internationalization") |
| 27177 | (description |
| 27178 | "This package provides a high-level, convenient API for managing |
| 27179 | internationalization/translation contexts in Python applications. There is a |
| 27180 | simple API for single-context applications, such as command line scripts which |
| 27181 | only need to translate into one language during the entire course of their |
| 27182 | execution. There is a more flexible, but still convenient API for multi-context |
| 27183 | applications, such as servers, which may need to switch language contexts for |
| 27184 | different tasks.") |
| 27185 | (license license:asl2.0))) |
| 27186 | |
| 27187 | (define-public python-flufl-lock |
| 27188 | (package |
| 27189 | (name "python-flufl-lock") |
| 27190 | (version "4.0") |
| 27191 | (source |
| 27192 | (origin |
| 27193 | (method url-fetch) |
| 27194 | (uri (pypi-uri "flufl.lock" version)) |
| 27195 | (sha256 |
| 27196 | (base32 |
| 27197 | "055941zyma3wfx25jhm8wcsghpv3jc3iwi1gdrdjhzcnfhn62lxq")))) |
| 27198 | (build-system python-build-system) |
| 27199 | (propagated-inputs |
| 27200 | (list python-atpublic python-psutil)) |
| 27201 | (home-page "https://flufllock.readthedocs.io") |
| 27202 | (synopsis "NFS-safe file locking with timeouts for POSIX systems") |
| 27203 | (description |
| 27204 | "The @dfn{flufl.lock} package provides NFS-safe file locking with |
| 27205 | timeouts for POSIX systems. It is similar to the @code{O_EXCL} option of the |
| 27206 | @code{open} system call but uses a lockfile. Lock objects support lock-breaking |
| 27207 | and have a maximum lifetime built-in.") |
| 27208 | (license (list license:asl2.0 |
| 27209 | license:lgpl3)))) ; only for setup_helpers.py |
| 27210 | |
| 27211 | (define-public python-flufl-testing |
| 27212 | (package |
| 27213 | (name "python-flufl-testing") |
| 27214 | (version "0.8") |
| 27215 | (source |
| 27216 | (origin |
| 27217 | (method url-fetch) |
| 27218 | (uri (pypi-uri "flufl.testing" version)) |
| 27219 | (sha256 |
| 27220 | (base32 |
| 27221 | "1nkm95mhcfhl4x5jgs6y97ikszaxsfh07nyawsih6cxxm6l62641")))) |
| 27222 | (build-system python-build-system) |
| 27223 | (arguments '(#:tests? #f)) ;no tests |
| 27224 | (home-page "https://gitlab.com/warsaw/flufl.testing") |
| 27225 | (synopsis "Collection of test tool plugins") |
| 27226 | (description |
| 27227 | "This package contains a small collection of test tool plugins for |
| 27228 | @code{nose2} and @code{flake8}.") |
| 27229 | (license license:asl2.0))) |
| 27230 | |
| 27231 | (define-public python-devtools |
| 27232 | (package |
| 27233 | (name "python-devtools") |
| 27234 | (version "0.6") |
| 27235 | (source |
| 27236 | (origin |
| 27237 | (method git-fetch) |
| 27238 | (uri (git-reference |
| 27239 | (url "https://github.com/samuelcolvin/python-devtools") |
| 27240 | (commit (string-append "v" version)))) |
| 27241 | (file-name (git-file-name name version)) |
| 27242 | (sha256 |
| 27243 | (base32 "15zczdcm90wl54c68f1qjb05nkd5bjsc9xjl3lk4frs7k7wkmrvp")))) |
| 27244 | (build-system python-build-system) |
| 27245 | (native-inputs |
| 27246 | (list python-pytest python-pytest-mock)) |
| 27247 | (propagated-inputs |
| 27248 | (list python-pygments)) |
| 27249 | (arguments |
| 27250 | `(#:phases (modify-phases %standard-phases |
| 27251 | (replace 'check |
| 27252 | (lambda _ |
| 27253 | (invoke "pytest") |
| 27254 | #t))))) |
| 27255 | (home-page "https://github.com/samuelcolvin/python-devtools") |
| 27256 | (synopsis "Debug command and development tools") |
| 27257 | (description |
| 27258 | "This package provides a debug print command and other development tools. |
| 27259 | It adds a simple and readable way to print stuff during development.") |
| 27260 | (license license:expat))) |
| 27261 | |
| 27262 | (define-public python-dateparser |
| 27263 | (package |
| 27264 | (name "python-dateparser") |
| 27265 | (version "1.1.3") |
| 27266 | (source |
| 27267 | (origin |
| 27268 | (method url-fetch) |
| 27269 | (uri (pypi-uri "dateparser" version)) |
| 27270 | (sha256 |
| 27271 | (base32 |
| 27272 | "19fbgq1zrwx10kljmdbs3p0y2m2xsgww20pqzw4kv6161zipsymf")))) |
| 27273 | (build-system pyproject-build-system) |
| 27274 | (propagated-inputs |
| 27275 | (list python-dateutil python-pytz python-regex python-ruamel.yaml |
| 27276 | python-tzlocal)) |
| 27277 | (native-inputs |
| 27278 | (list python-flake8 python-pytest python-parameterized tzdata-for-tests)) |
| 27279 | (arguments |
| 27280 | `(#:phases |
| 27281 | (modify-phases %standard-phases |
| 27282 | (add-before 'check 'set-check-environment |
| 27283 | (lambda* (#:key inputs #:allow-other-keys) |
| 27284 | (setenv "TZ" "UTC") |
| 27285 | (setenv "TZDIR" |
| 27286 | (search-input-directory inputs |
| 27287 | "share/zoneinfo")))) |
| 27288 | (add-before 'check 'delete-failing-tests |
| 27289 | (lambda _ |
| 27290 | (with-directory-excursion "tests" |
| 27291 | (for-each delete-file |
| 27292 | '("test_dateparser_data_integrity.py" |
| 27293 | "test_hijri.py" |
| 27294 | "test_jalali.py" |
| 27295 | "test_language_detect.py")))))))) |
| 27296 | (home-page "https://github.com/scrapinghub/dateparser") |
| 27297 | (synopsis |
| 27298 | "Date parsing library designed to parse dates from HTML pages") |
| 27299 | (description |
| 27300 | "@code{python-dateparser} provides modules to easily parse localized |
| 27301 | dates in almost any string formats commonly found on web pages.") |
| 27302 | (license license:bsd-3))) |
| 27303 | |
| 27304 | (define-public python-dparse |
| 27305 | (package |
| 27306 | (name "python-dparse") |
| 27307 | (version "0.5.1") |
| 27308 | (source |
| 27309 | (origin |
| 27310 | (method url-fetch) |
| 27311 | (uri (pypi-uri "dparse" version)) |
| 27312 | (sha256 |
| 27313 | (base32 |
| 27314 | "0rzkg3nymsbwdjc0ms2bsajkda02jipwyp3xk97qj71f21lz3dd1")))) |
| 27315 | (build-system python-build-system) |
| 27316 | (native-inputs |
| 27317 | (list python-pytest)) |
| 27318 | (propagated-inputs |
| 27319 | (list python-packaging python-pyyaml python-toml)) |
| 27320 | (home-page "https://github.com/pyupio/dparse") |
| 27321 | (synopsis "Parser for Python dependency files") |
| 27322 | (description "This package provides a parser for Python dependency files.") |
| 27323 | (license license:expat))) |
| 27324 | |
| 27325 | (define-public python-dpath |
| 27326 | (package |
| 27327 | (name "python-dpath") |
| 27328 | (version "2.0.1") |
| 27329 | (source |
| 27330 | (origin |
| 27331 | (method url-fetch) |
| 27332 | (uri (pypi-uri "dpath" version)) |
| 27333 | (sha256 |
| 27334 | (base32 |
| 27335 | "1ymi9ssk7i0mx3mviplf4csfvzibdd6wyj4qzj6s487n9xgnp85y")))) |
| 27336 | (build-system python-build-system) |
| 27337 | (native-inputs |
| 27338 | (list python-hypothesis python-mock python-nose)) |
| 27339 | (arguments |
| 27340 | '(#:phases |
| 27341 | (modify-phases %standard-phases |
| 27342 | (replace 'check |
| 27343 | (lambda* (#:key inputs outputs #:allow-other-keys) |
| 27344 | (add-installed-pythonpath inputs outputs) |
| 27345 | ;; This invokation is taken from tox.ini. |
| 27346 | (invoke "nosetests" "-d" "-v" "tests/")))))) |
| 27347 | (home-page "https://github.com/akesterson/dpath-python") |
| 27348 | (synopsis "File-system-like pathing and searching for dictionaries") |
| 27349 | (description |
| 27350 | "@code{python-dpath} is a library for accessing and searching |
| 27351 | dictionaries via /slashed/paths ala xpath. |
| 27352 | |
| 27353 | Basically it lets you glob over a dictionary as if it were a file system. It |
| 27354 | allows you to specify globs (ala the bash eglob syntax, through some advanced |
| 27355 | fnmatch.fnmatch magic) to access dictionary elements, and provides some |
| 27356 | facility for filtering those results.") |
| 27357 | (license license:expat))) |
| 27358 | |
| 27359 | (define-public python-safety |
| 27360 | (package |
| 27361 | (name "python-safety") |
| 27362 | (version "1.9.0") |
| 27363 | (source |
| 27364 | (origin |
| 27365 | (method url-fetch) |
| 27366 | (uri (pypi-uri "safety" version)) |
| 27367 | (sha256 |
| 27368 | (base32 |
| 27369 | "1j801xsxfzavjbzhhc934awvnk1b7jc0qsw3jp3ys0241mlj1gr3")))) |
| 27370 | (build-system python-build-system) |
| 27371 | (arguments |
| 27372 | `(#:phases |
| 27373 | (modify-phases %standard-phases |
| 27374 | (add-after 'unpack 'disable-tests |
| 27375 | (lambda _ |
| 27376 | (substitute* "tests/test_safety.py" |
| 27377 | ;; requires network |
| 27378 | (("def test_check_live") "def _test_check_live")) |
| 27379 | #t))))) |
| 27380 | (propagated-inputs |
| 27381 | (list python-click python-dparse python-packaging python-requests)) |
| 27382 | (home-page "https://github.com/pyupio/safety") |
| 27383 | (synopsis "Check installed dependencies for known vulnerabilities") |
| 27384 | (description "Safety checks installed dependencies for known vulnerabilities. |
| 27385 | By default it uses the open Python vulnerability database Safety DB.") |
| 27386 | (license license:expat))) |
| 27387 | |
| 27388 | (define-public python-pypandoc |
| 27389 | (package |
| 27390 | (name "python-pypandoc") |
| 27391 | (version "1.6.4") |
| 27392 | (source |
| 27393 | (origin |
| 27394 | (method url-fetch) |
| 27395 | (uri (pypi-uri "pypandoc" version)) |
| 27396 | (sha256 |
| 27397 | (base32 |
| 27398 | "149basv4pvzg9zm74cjz68x8s2n5fykyj7prgysb0qfmja73r83f")))) |
| 27399 | (build-system python-build-system) |
| 27400 | (inputs |
| 27401 | (list pandoc)) |
| 27402 | (propagated-inputs |
| 27403 | `(("wheel" ,python-wheel))) |
| 27404 | (native-inputs |
| 27405 | `(("texlive" ,(texlive-updmap.cfg (list texlive-amsfonts |
| 27406 | texlive-fonts-ec |
| 27407 | texlive-generic-iftex |
| 27408 | texlive-hyperref |
| 27409 | texlive-oberdiek |
| 27410 | texlive-lm |
| 27411 | texlive-xcolor))))) |
| 27412 | (arguments |
| 27413 | `(#:phases |
| 27414 | (modify-phases %standard-phases |
| 27415 | (add-before 'check 'disable-tests |
| 27416 | (lambda _ |
| 27417 | ;; Disable test requiring network access |
| 27418 | (substitute* "tests.py" |
| 27419 | (("test_basic_conversion_from_http_url") |
| 27420 | "skip_test_basic_conversion_from_http_url")) |
| 27421 | #t))))) |
| 27422 | (home-page "https://github.com/bebraw/pypandoc") |
| 27423 | (synopsis "Python wrapper for pandoc") |
| 27424 | (description "pypandoc is a thin Python wrapper around pandoc |
| 27425 | and pandoc-citeproc.") |
| 27426 | (license license:expat))) |
| 27427 | |
| 27428 | (define-public python-rnc2rng |
| 27429 | (package |
| 27430 | (name "python-rnc2rng") |
| 27431 | (version "2.6.6") |
| 27432 | (source |
| 27433 | (origin |
| 27434 | (method url-fetch) |
| 27435 | (uri (pypi-uri "rnc2rng" version)) |
| 27436 | (sha256 |
| 27437 | (base32 |
| 27438 | "1wbqvz2bhq2f5kqi7q2q3m9y5vs9rj970zhnjh502pvvhmbx20as")))) |
| 27439 | (build-system python-build-system) |
| 27440 | (propagated-inputs |
| 27441 | (list python-rply)) |
| 27442 | (arguments |
| 27443 | `(#:phases (modify-phases %standard-phases |
| 27444 | (replace 'check |
| 27445 | (lambda _ |
| 27446 | (invoke "python" "test.py")))))) |
| 27447 | (home-page "https://github.com/djc/rnc2rng") |
| 27448 | (synopsis "Convert RELAX NG Compact to regular syntax") |
| 27449 | (description |
| 27450 | "This package provides the @command{rnc2rng} command-line tool as well as |
| 27451 | a Python library to convert RELAX NG schemata in Compact syntax (rnc) to |
| 27452 | equivalent schemata in the XML-based default RELAX NG syntax.") |
| 27453 | (license license:expat))) |
| 27454 | |
| 27455 | (define-public python-telethon |
| 27456 | (package |
| 27457 | (name "python-telethon") |
| 27458 | (version "1.17.5") |
| 27459 | (source |
| 27460 | (origin |
| 27461 | (method git-fetch) |
| 27462 | (uri (git-reference |
| 27463 | (url "https://github.com/LonamiWebs/Telethon") |
| 27464 | (commit (string-append "v" version)))) |
| 27465 | (file-name (git-file-name name version)) |
| 27466 | (sha256 |
| 27467 | (base32 "0l9fhdrq576vllgi9aam45xzw5xi6jhgdv5zz8i4ygssdp7cm8jl")))) |
| 27468 | (build-system python-build-system) |
| 27469 | (arguments |
| 27470 | '(#:phases |
| 27471 | (modify-phases %standard-phases |
| 27472 | (replace 'check |
| 27473 | (lambda* (#:key tests? #:allow-other-keys) |
| 27474 | (when tests? |
| 27475 | (invoke "py.test" "-v")) |
| 27476 | #t))))) |
| 27477 | (propagated-inputs |
| 27478 | (list python-rsa python-pyaes)) |
| 27479 | (native-inputs |
| 27480 | (list python-pytest python-pytest-asyncio python-pytest-trio)) |
| 27481 | (home-page "https://docs.telethon.dev") |
| 27482 | (synopsis "Full-featured Telegram client library for Python 3") |
| 27483 | (description "This library is designed to make it easy to write Python |
| 27484 | programs that can interact with Telegram.") |
| 27485 | (license license:expat))) |
| 27486 | |
| 27487 | (define-public python-citeproc-py |
| 27488 | (package |
| 27489 | (name "python-citeproc-py") |
| 27490 | (version "0.5.1") |
| 27491 | (source |
| 27492 | (origin |
| 27493 | (method url-fetch) |
| 27494 | (uri (pypi-uri "citeproc-py" version)) |
| 27495 | (sha256 |
| 27496 | (base32 |
| 27497 | "00aaff50jy4j0nakdzq9258z1gzrac9baarli2ymgspj88jg5968")))) |
| 27498 | (build-system python-build-system) |
| 27499 | (propagated-inputs |
| 27500 | (list python-lxml python-rnc2rng)) |
| 27501 | (home-page |
| 27502 | "https://github.com/brechtm/citeproc-py") |
| 27503 | (synopsis "Citations and bibliography formatter") |
| 27504 | (description |
| 27505 | "Citeproc-py is a CSL processor for Python. It aims to implement the |
| 27506 | CSL 1.0.1 specification. citeproc-py can output styled citations and |
| 27507 | bibliographies in a number of different output formats. Currently supported |
| 27508 | are plain text, reStructuredText and HTML.") |
| 27509 | (license license:bsd-2))) |
| 27510 | |
| 27511 | (define-public python-inform |
| 27512 | (package |
| 27513 | (name "python-inform") |
| 27514 | (version "1.23.0") |
| 27515 | (source |
| 27516 | (origin |
| 27517 | (method url-fetch) |
| 27518 | (uri (pypi-uri "inform" version)) |
| 27519 | (sha256 |
| 27520 | (base32 |
| 27521 | "0dvc5klbnbryrvspp45nmlg02g40j7xspcz7lqsm0c0dj0z29zdz")))) |
| 27522 | (build-system python-build-system) |
| 27523 | (arguments |
| 27524 | `(#:tests? #f)) ; PyPI tarball lacks tests |
| 27525 | (native-inputs |
| 27526 | (list python-hypothesis python-pytest-cov python-pytest-runner)) |
| 27527 | (propagated-inputs |
| 27528 | (list python-arrow python-six)) |
| 27529 | (home-page "https://inform.readthedocs.io") |
| 27530 | (synopsis "Print & logging utilities for communicating with user") |
| 27531 | (description |
| 27532 | "Inform is designed to display messages from programs that are typically run from |
| 27533 | a console. It provides a collection of ‘print’ functions that allow you to simply and |
| 27534 | cleanly print different types of messages.") |
| 27535 | (license license:gpl3+))) |
| 27536 | |
| 27537 | (define-public python-nestedtext |
| 27538 | (package |
| 27539 | (name "python-nestedtext") |
| 27540 | (version "1.0.0") |
| 27541 | (source |
| 27542 | (origin |
| 27543 | (method url-fetch) |
| 27544 | (uri (pypi-uri "nestedtext" version)) |
| 27545 | (sha256 |
| 27546 | (base32 |
| 27547 | "0xjx863n7yd1xmkwhy48lhmqrmlzgbx3civhk386hvrzyq4sx148")))) |
| 27548 | (build-system python-build-system) |
| 27549 | (arguments |
| 27550 | `(#:tests? #f)) ; PyPI tarball lacks tests |
| 27551 | (propagated-inputs |
| 27552 | (list python-inform)) |
| 27553 | (home-page "https://nestedtext.org") |
| 27554 | (synopsis "Human readable and writable data interchange format") |
| 27555 | (description |
| 27556 | "NestedText is a file format for holding data that is to be entered, edited, or |
| 27557 | viewed by people. It allows data to be organized into a nested collection of |
| 27558 | dictionaries, lists, and strings. In this way it is similar to JSON and YAML, but |
| 27559 | without the complexity and risk of YAML and without the syntactic clutter of JSON. |
| 27560 | NestedText is both simple and natural. Only a small number of concepts and rules must |
| 27561 | be kept in mind when creating it. It is easily created, modified, or viewed with |
| 27562 | a text editor and easily understood and used by both programmers and non-programmers.") |
| 27563 | (license license:expat))) ; MIT license |
| 27564 | |
| 27565 | (define-public python-nest-asyncio |
| 27566 | (package |
| 27567 | (name "python-nest-asyncio") |
| 27568 | (version "1.5.5") |
| 27569 | (source |
| 27570 | (origin |
| 27571 | (method url-fetch) |
| 27572 | (uri (pypi-uri "nest_asyncio" version)) |
| 27573 | (sha256 |
| 27574 | (base32 |
| 27575 | "0rbdw7lry66yj13hh4w63yzflnapdal1ffl237k8nsa2v4f2jhp4")))) |
| 27576 | (build-system python-build-system) |
| 27577 | (home-page "https://github.com/erdewit/nest_asyncio") |
| 27578 | (synopsis "Patch asyncio to allow nested event loops") |
| 27579 | (description |
| 27580 | "By design @code{asyncio} does not allow its event loop to be nested. |
| 27581 | This presents a practical problem: when in an environment where the event loop |
| 27582 | is already running it's impossible to run tasks and wait for the result. This |
| 27583 | module patches @code{asyncio} to allow nested use of @code{asyncio.run} and |
| 27584 | @code{loop.run_until_complete}.") |
| 27585 | (license license:bsd-3))) |
| 27586 | |
| 27587 | (define-public python-simpervisor |
| 27588 | (package |
| 27589 | (name "python-simpervisor") |
| 27590 | (version "0.4") |
| 27591 | (source |
| 27592 | (origin |
| 27593 | ;; Tests not included in release. |
| 27594 | (method git-fetch) |
| 27595 | (uri (git-reference |
| 27596 | (url "https://github.com/yuvipanda/simpervisor") |
| 27597 | (commit (string-append "v" version)))) |
| 27598 | (file-name (git-file-name name version)) |
| 27599 | (sha256 |
| 27600 | (base32 "1brsisx7saf4ic0dih1n5y7rbdbwn1ywv9pl32bch3061r46prvv")))) |
| 27601 | (build-system python-build-system) |
| 27602 | (arguments |
| 27603 | `(#:tests? #f ; Test suite can't find aiohttp. |
| 27604 | #:phases |
| 27605 | (modify-phases %standard-phases |
| 27606 | (replace 'check |
| 27607 | (lambda* (#:key inputs outputs tests? #:allow-other-keys) |
| 27608 | (when tests? |
| 27609 | (add-installed-pythonpath inputs outputs) |
| 27610 | (invoke "pytest" "--maxfail" "3" "--verbose")) |
| 27611 | #t))))) |
| 27612 | (native-inputs |
| 27613 | (list python-aiohttp python-pytest python-pytest-asyncio)) |
| 27614 | (home-page "https://github.com/yuvipanda/simpervisor") |
| 27615 | (synopsis "Simple async process supervisor") |
| 27616 | (description |
| 27617 | "This package provides a simple async process supervisor in Python.") |
| 27618 | (license license:bsd-3))) |
| 27619 | |
| 27620 | (define-public python-parallel |
| 27621 | (package |
| 27622 | (name "python-parallel") |
| 27623 | (version "1.6.4.4") |
| 27624 | (source |
| 27625 | (origin |
| 27626 | (method url-fetch) |
| 27627 | (uri (string-append |
| 27628 | "https://www.parallelpython.com/downloads/pp/pp-" |
| 27629 | version ".zip")) |
| 27630 | (sha256 |
| 27631 | (base32 |
| 27632 | "1mzk4yabxj6r149fswhis18hd8dnag5sj8i4wb06450zq3pi8dh7")))) |
| 27633 | (native-inputs |
| 27634 | (list unzip)) |
| 27635 | (propagated-inputs |
| 27636 | (list python-six)) |
| 27637 | (build-system python-build-system) |
| 27638 | (arguments '(#:tests? #f)) ; No test suite. |
| 27639 | (home-page "https://www.parallelpython.com") |
| 27640 | (synopsis "Parallel and distributed programming for Python") |
| 27641 | (description "Parallel Python module (PP) provides an easy and efficient |
| 27642 | way to create parallel-enabled applications for SMP computers and clusters. |
| 27643 | PP module features cross-platform portability and dynamic load balancing. |
| 27644 | Thus applications written with PP will parallelize efficiently even on |
| 27645 | heterogeneous and multi-platform clusters (including clusters running other |
| 27646 | applications with variable CPU loads).") |
| 27647 | (license license:bsd-3))) |
| 27648 | |
| 27649 | (define-public python-djvulibre |
| 27650 | (package |
| 27651 | (name "python-djvulibre") |
| 27652 | (version "0.8.6") |
| 27653 | (source |
| 27654 | (origin |
| 27655 | (method url-fetch) |
| 27656 | (uri (pypi-uri "python-djvulibre" version)) |
| 27657 | (sha256 |
| 27658 | (base32 "089smpq29ll0z37lnq26r2f72d31i33xm9fw9pc6hlcsm6nbjbiv")))) |
| 27659 | (build-system python-build-system) |
| 27660 | (native-inputs |
| 27661 | (list ghostscript pkg-config python-nose)) |
| 27662 | (inputs |
| 27663 | (list djvulibre python-cython)) |
| 27664 | (arguments |
| 27665 | `(#:phases |
| 27666 | (modify-phases %standard-phases |
| 27667 | (add-after 'unpack 'fix-tests |
| 27668 | (lambda _ |
| 27669 | ;; Unit tests try to load the 'dllpath.py' and fail, because it |
| 27670 | ;; doesn't make sense on GNU/Linux. |
| 27671 | (delete-file "djvu/dllpath.py") |
| 27672 | #t))))) |
| 27673 | (synopsis "Python bindings for DjVuLibre") |
| 27674 | (description "This is a set of Python bindings for the DjVuLibre library.") |
| 27675 | (home-page "https://jwilk.net/software/python-djvulibre") |
| 27676 | (license license:gpl2))) |
| 27677 | |
| 27678 | (define-public python-version |
| 27679 | ;; No version tags available in the git repo; just using bare commit instead. |
| 27680 | (let ((commit "5232eea250ab72cc5cb72b0b75efb35d2192b906") |
| 27681 | (revision "1")) |
| 27682 | (package |
| 27683 | (name "python-version") |
| 27684 | (version (git-version "0.0.2" revision commit)) |
| 27685 | (source (origin |
| 27686 | (method git-fetch) |
| 27687 | (uri (git-reference |
| 27688 | (url "https://gitlab.com/halfak/python_version") |
| 27689 | (commit commit))) |
| 27690 | (file-name (git-file-name name version)) |
| 27691 | (sha256 |
| 27692 | (base32 |
| 27693 | "0w210559ypdynlj9yn40m9awzkaknwrf682i99hswl7h66sdgh0h")))) |
| 27694 | (build-system python-build-system) |
| 27695 | (home-page "https://gitlab.com/halfak/python_version") |
| 27696 | (synopsis "Python version checking utility") |
| 27697 | (description |
| 27698 | "This package provides a simple utility for checking the python version.") |
| 27699 | (license license:expat)))) |
| 27700 | |
| 27701 | (define-public python-versioneer |
| 27702 | (package |
| 27703 | (name "python-versioneer") |
| 27704 | (version "0.21") |
| 27705 | (source |
| 27706 | (origin |
| 27707 | (method url-fetch) |
| 27708 | (uri (pypi-uri "versioneer" version)) |
| 27709 | (sha256 |
| 27710 | (base32 |
| 27711 | "084fglxafbzvf1vbkzfajvs9qwnvjwwn8pxql9nrlpyipv5xpwk4")) |
| 27712 | (patches (search-patches "python-versioneer-guix-support.patch")))) |
| 27713 | (build-system python-build-system) |
| 27714 | (home-page |
| 27715 | "https://github.com/python-versioneer/python-versioneer") |
| 27716 | (synopsis |
| 27717 | "Version-string management for VCS-controlled trees") |
| 27718 | (description |
| 27719 | "@code{versioneer} is a tool for managing a recorded version number in |
| 27720 | distutils-based python projects. The goal is to remove the tedious and |
| 27721 | error-prone \"update the embedded version string\" step from your release |
| 27722 | process.") |
| 27723 | (license license:public-domain))) |
| 27724 | |
| 27725 | (define-public python-gamera |
| 27726 | (package |
| 27727 | (name "python-gamera") |
| 27728 | (version "4.0.0") |
| 27729 | (source |
| 27730 | (origin |
| 27731 | (method url-fetch) |
| 27732 | (uri (string-append "https://gamera.informatik.hsnr.de/download/" |
| 27733 | "gamera-" version ".tar.gz")) |
| 27734 | (sha256 |
| 27735 | (base32 "0fhlwbvpm3k54n4aa1y6qd348jqrb54ak9p0ic16drx7f07dsq05")) |
| 27736 | (modules '((guix build utils))) |
| 27737 | (snippet |
| 27738 | '(begin |
| 27739 | ;; Remove bundled libraries. |
| 27740 | (for-each delete-file-recursively |
| 27741 | '("src/libpng-1.2.5" |
| 27742 | "src/libtiff" |
| 27743 | "src/zlib-1.2.8")))))) |
| 27744 | (build-system python-build-system) |
| 27745 | (arguments |
| 27746 | `(#:phases |
| 27747 | (modify-phases %standard-phases |
| 27748 | (add-after 'unpack 'disable-wx-support |
| 27749 | (lambda _ |
| 27750 | (substitute* "setup.py" |
| 27751 | (("no_wx = False") |
| 27752 | "no_wx = True")))) |
| 27753 | (replace 'check |
| 27754 | (lambda* (#:key tests? #:allow-other-keys) |
| 27755 | (when tests? |
| 27756 | ;; Some tests require a writable HOME directory and test |
| 27757 | ;; directory. |
| 27758 | (setenv "HOME" "/tmp") |
| 27759 | (mkdir "tests/tmp") ;the code assumes this directory exists |
| 27760 | ;; (for-each make-file-writable (find-files "tests")) |
| 27761 | (with-directory-excursion "tests" |
| 27762 | (invoke "pytest" "-vv" |
| 27763 | ;; This test causes gamera/gendoc.py to be loaded, |
| 27764 | ;; which fails due to the missing docutils, pygments |
| 27765 | ;; and silvercity (very old, unpackaged) libraries. |
| 27766 | "--ignore" "test_plugins.py" |
| 27767 | ;; This test triggers a segfault (see: |
| 27768 | ;; https://github.com/hsnr-gamera/gamera-4/issues/47). |
| 27769 | "--ignore" "test_rle.py")))))))) |
| 27770 | (native-inputs (list python-pytest)) |
| 27771 | (inputs (list libpng libtiff zlib)) |
| 27772 | (synopsis "Framework for building document analysis applications") |
| 27773 | (description |
| 27774 | "Gamera is a toolkit for building document image recognition systems.") |
| 27775 | (home-page "https://gamera.informatik.hsnr.de/") |
| 27776 | (license license:gpl2+))) |
| 27777 | |
| 27778 | (define-public python-contextvars |
| 27779 | (package |
| 27780 | (name "python-contextvars") |
| 27781 | (version "2.4") |
| 27782 | (source |
| 27783 | (origin |
| 27784 | (method url-fetch) |
| 27785 | (uri (pypi-uri "contextvars" version)) |
| 27786 | (sha256 |
| 27787 | (base32 |
| 27788 | "17n3w8c20kgkgc6khaafdhhlcdj4bzman4paxqsl7harma59137k")))) |
| 27789 | (build-system python-build-system) |
| 27790 | (propagated-inputs |
| 27791 | (list python-immutables)) |
| 27792 | (home-page |
| 27793 | "https://github.com/MagicStack/contextvars") |
| 27794 | (synopsis "PEP 567 Backport") |
| 27795 | (description "This package implements a backport of Python 3.7 |
| 27796 | @code{contextvars} module (see PEP 567) for Python 3.6.") |
| 27797 | (license license:asl2.0))) |
| 27798 | |
| 27799 | (define-public python-aiofiles |
| 27800 | (package |
| 27801 | (name "python-aiofiles") |
| 27802 | (version "0.6.0") |
| 27803 | (source |
| 27804 | (origin |
| 27805 | (method url-fetch) |
| 27806 | (uri (pypi-uri "aiofiles" version)) |
| 27807 | (sha256 |
| 27808 | (base32 |
| 27809 | "14m01kjxm2j7zyljjj6xlhlgygcsriymbx730gc5jp9xglaina70")))) |
| 27810 | (build-system python-build-system) |
| 27811 | (home-page "https://github.com/Tinche/aiofiles") |
| 27812 | (synopsis "File support for @code{asyncio}") |
| 27813 | (description "@code{python-aiofiles} is a library for handling local |
| 27814 | disk files in asyncio applications.") |
| 27815 | (license license:asl2.0))) |
| 27816 | |
| 27817 | (define-public python-pyre-extensions |
| 27818 | (package |
| 27819 | (name "python-pyre-extensions") |
| 27820 | (version "0.0.18") |
| 27821 | (source |
| 27822 | (origin |
| 27823 | (method url-fetch) |
| 27824 | (uri (pypi-uri "pyre-extensions" version)) |
| 27825 | (sha256 |
| 27826 | (base32 |
| 27827 | "0c5cbbqrfyjwakdh3kbwxis6mbrbwky1z1fqslgszgpcj4g43q30")))) |
| 27828 | (build-system python-build-system) |
| 27829 | (propagated-inputs |
| 27830 | (list python-typing-extensions python-typing-inspect)) |
| 27831 | (home-page "https://pyre-check.org") |
| 27832 | (synopsis |
| 27833 | "Type system extensions for use with @code{python-pyre}") |
| 27834 | (description |
| 27835 | "@code{python-pyre-extensions} defines extensions to the standard |
| 27836 | @code{typing} module that are supported by the Pyre typechecker.") |
| 27837 | (license license:expat))) |
| 27838 | |
| 27839 | (define-public python-dataclasses |
| 27840 | (package |
| 27841 | (name "python-dataclasses") |
| 27842 | (version "0.8") |
| 27843 | (source |
| 27844 | (origin |
| 27845 | (method url-fetch) |
| 27846 | (uri (pypi-uri "dataclasses" version)) |
| 27847 | (sha256 |
| 27848 | (base32 |
| 27849 | "15sc12nrc7gxwb30vfa6frzdnpmbap9ibi1fr1yrbkra6izhcyc4")))) |
| 27850 | (build-system python-build-system) |
| 27851 | (home-page |
| 27852 | "https://github.com/ericvsmith/dataclasses") |
| 27853 | (synopsis |
| 27854 | "Backport of the @code{dataclasses} module for Python 3.6") |
| 27855 | (description |
| 27856 | "This is an implementation of PEP 557, Data Classes. It is a |
| 27857 | backport of the @code{dataclasses} module for Python 3.6.") |
| 27858 | (license license:asl2.0))) |
| 27859 | |
| 27860 | (define-public python-pywatchman |
| 27861 | (package |
| 27862 | (name "python-pywatchman") |
| 27863 | (version "1.4.1") |
| 27864 | (source |
| 27865 | (origin |
| 27866 | (method url-fetch) |
| 27867 | (uri (pypi-uri "pywatchman" version)) |
| 27868 | (sha256 |
| 27869 | (base32 |
| 27870 | "1yf2gm20wc3djpb5larxii3l55xxby0il2ns3q0v1byyfnr7w16h")))) |
| 27871 | (build-system python-build-system) |
| 27872 | (arguments |
| 27873 | `(#:tests? #f)) ;there are none |
| 27874 | (home-page |
| 27875 | "https://facebook.github.io/watchman/") |
| 27876 | (synopsis "Watchman client for python") |
| 27877 | (description "@code{python-pywatchman} is a library to connect and |
| 27878 | query Watchman to discover file changes.") |
| 27879 | (license license:bsd-3))) |
| 27880 | |
| 27881 | (define-public python-roundrobin |
| 27882 | (package |
| 27883 | (name "python-roundrobin") |
| 27884 | (version "0.0.2") |
| 27885 | (source (origin |
| 27886 | (method url-fetch) |
| 27887 | (uri (pypi-uri "roundrobin" version)) |
| 27888 | (sha256 |
| 27889 | (base32 "1akwhvfyi0120zg2xkhfc6jwfkirz5x90yyvw06bndhaaxwcnc5c")))) |
| 27890 | (build-system python-build-system) |
| 27891 | (arguments '(#:tests? #f)) ;no tests on PyPI and no tags in repo |
| 27892 | (home-page "https://github.com/linnik/roundrobin") |
| 27893 | (synopsis "Collection of roundrobin utilities") |
| 27894 | (description |
| 27895 | "This package provides a collection of utilities for round-robin |
| 27896 | distribution in Python.") |
| 27897 | (license license:expat))) |
| 27898 | |
| 27899 | (define-public python-helpdev |
| 27900 | (package |
| 27901 | (name "python-helpdev") |
| 27902 | (version "0.7.1") |
| 27903 | (source |
| 27904 | (origin |
| 27905 | (method url-fetch) |
| 27906 | (uri (pypi-uri "helpdev" version)) |
| 27907 | (sha256 |
| 27908 | (base32 |
| 27909 | "0gfvj28i82va7c264jl2p4cdsl3lpf9fpb9cyjnis55crfdafqmv")))) |
| 27910 | (build-system python-build-system) |
| 27911 | (arguments |
| 27912 | `(#:phases |
| 27913 | (modify-phases %standard-phases |
| 27914 | (replace 'check |
| 27915 | (lambda* (#:key inputs outputs tests? #:allow-other-keys) |
| 27916 | (when tests? |
| 27917 | (add-installed-pythonpath inputs outputs) |
| 27918 | (invoke "pytest" "tests")) |
| 27919 | #t))))) |
| 27920 | (propagated-inputs |
| 27921 | (list python-importlib-metadata)) |
| 27922 | (native-inputs |
| 27923 | (list python-pytest)) |
| 27924 | (home-page "https://gitlab.com/dpizetta/helpdev") |
| 27925 | (synopsis |
| 27926 | "Extract information about the Python environment easily") |
| 27927 | (description |
| 27928 | "Helpdev is a library to easily extract information about the Python |
| 27929 | environment.") |
| 27930 | (license license:expat))) |
| 27931 | |
| 27932 | (define-public python-logutils |
| 27933 | (package |
| 27934 | (name "python-logutils") |
| 27935 | (version "0.3.5") |
| 27936 | (source |
| 27937 | (origin |
| 27938 | (method url-fetch) |
| 27939 | (uri (pypi-uri "logutils" version)) |
| 27940 | (sha256 |
| 27941 | (base32 |
| 27942 | "10lsi5wv5ysnvf9ya4ncbix6mmipnv5067sf2cglc2f2sljql1dw")))) |
| 27943 | (build-system python-build-system) |
| 27944 | (home-page "https://bitbucket.org/vinay.sajip/logutils/") |
| 27945 | (synopsis "Logging utilities") |
| 27946 | (description "This package provides a set of handlers for the Python |
| 27947 | standard library logging package. Some of these handlers are out-of-scope |
| 27948 | for the standard library, and so they are packaged here. Others are updated |
| 27949 | versions which have appeared in recent Python releases, but are usable with |
| 27950 | older versions of Python and so are packaged here.") |
| 27951 | (license license:bsd-3))) |
| 27952 | |
| 27953 | (define-public python-helper |
| 27954 | (package |
| 27955 | (name "python-helper") |
| 27956 | (version "2.5.0") |
| 27957 | (source (origin |
| 27958 | (method url-fetch) |
| 27959 | (uri (pypi-uri "helper" version)) |
| 27960 | (sha256 |
| 27961 | (base32 |
| 27962 | "1d2j64wgbggzv5rhvil10zndp2w78wa5np5w0psj122ws9qr9wsa")))) |
| 27963 | (build-system python-build-system) |
| 27964 | (native-inputs |
| 27965 | (list python-mock)) |
| 27966 | (propagated-inputs |
| 27967 | (list python-logutils python-pyyaml)) |
| 27968 | (home-page "https://github.com/gmr/helper") |
| 27969 | (synopsis "Library for writing configurable applications and daemons") |
| 27970 | (description |
| 27971 | "This package provides procedures for quickly writing configurable |
| 27972 | applications and daemons.") |
| 27973 | (license license:bsd-3))) |
| 27974 | |
| 27975 | (define-public python-qtsass |
| 27976 | (package |
| 27977 | (name "python-qtsass") |
| 27978 | (version "0.3.0") |
| 27979 | (source |
| 27980 | (origin |
| 27981 | ;; There are no tests in the PyPI tarball. |
| 27982 | (method git-fetch) |
| 27983 | (uri (git-reference |
| 27984 | (url "https://github.com/spyder-ide/qtsass/") |
| 27985 | (commit (string-append "v" version)))) |
| 27986 | (file-name (git-file-name name version)) |
| 27987 | (sha256 |
| 27988 | (base32 "09s04aa14d8jqbh71clrb5y7vcmkxlp94mwmvzrkxahry3bk03cb")))) |
| 27989 | (build-system python-build-system) |
| 27990 | (arguments |
| 27991 | `(#:test-target "pytest" |
| 27992 | #:phases |
| 27993 | (modify-phases %standard-phases |
| 27994 | ;; Tests need to read and write files. |
| 27995 | (add-before 'check 'make-git-checkout-writable |
| 27996 | (lambda _ |
| 27997 | (for-each make-file-writable (find-files ".")) |
| 27998 | #t))))) |
| 27999 | (native-inputs |
| 28000 | (list python-pytest python-pytest-cov python-pytest-runner)) |
| 28001 | (propagated-inputs |
| 28002 | (list python-libsass)) |
| 28003 | (home-page "https://github.com/spyder-ide/qtsass") |
| 28004 | (synopsis "Compile SCSS files to valid Qt stylesheets") |
| 28005 | (description |
| 28006 | "Besides being used in web development, CSS is also the way to stylize |
| 28007 | Qt-based desktop applications. However, Qt's CSS has a few variations that |
| 28008 | prevent the direct use of SASS compiler. |
| 28009 | |
| 28010 | The purpose of this tool is to fill the gap between SASS and Qt-CSS by |
| 28011 | handling those variations.") |
| 28012 | (license license:expat))) |
| 28013 | |
| 28014 | (define-public python-qdarkstyle |
| 28015 | (package |
| 28016 | (name "python-qdarkstyle") |
| 28017 | (version "2.8.1") |
| 28018 | (source |
| 28019 | (origin |
| 28020 | (method url-fetch) |
| 28021 | (uri (pypi-uri "QDarkStyle" version)) |
| 28022 | (sha256 |
| 28023 | (base32 |
| 28024 | "0883vzg35fzpyl1aiijzpfcdfvpq5vi325w0m7xkx7nxplh02fym")))) |
| 28025 | (build-system python-build-system) |
| 28026 | (arguments |
| 28027 | `(;; Fails unable to detect valid Qt bindings even when |
| 28028 | ;; added as native-inputs. |
| 28029 | #:tests? #f)) |
| 28030 | (propagated-inputs |
| 28031 | (list python-helpdev python-qtpy)) |
| 28032 | (home-page |
| 28033 | "https://github.com/ColinDuquesnoy/QDarkStyleSheet") |
| 28034 | (synopsis |
| 28035 | "Complete dark stylesheet for Python and Qt applications") |
| 28036 | (description "QDarkStyle is the most complete dark stylesheet for Python and |
| 28037 | Qt applications.") |
| 28038 | (license license:expat))) |
| 28039 | |
| 28040 | (define-public python-bitstring |
| 28041 | (package |
| 28042 | (name "python-bitstring") |
| 28043 | (version "3.1.7") |
| 28044 | (source |
| 28045 | (origin |
| 28046 | (method url-fetch) |
| 28047 | (uri (pypi-uri "bitstring" version)) |
| 28048 | (sha256 |
| 28049 | (base32 |
| 28050 | "0jl6192dwrlm5ybkbh7ywmyaymrc3cmz9y07nm7qdli9n9rfpwzx")))) |
| 28051 | (build-system python-build-system) |
| 28052 | (arguments |
| 28053 | `(#:phases |
| 28054 | (modify-phases %standard-phases |
| 28055 | (replace 'check |
| 28056 | (lambda* (#:key tests? inputs outputs #:allow-other-keys) |
| 28057 | (when tests? |
| 28058 | (add-installed-pythonpath inputs outputs) |
| 28059 | (with-directory-excursion "test" |
| 28060 | (invoke "pytest"))) |
| 28061 | #t))))) |
| 28062 | (native-inputs |
| 28063 | (list python-pytest)) |
| 28064 | (home-page "https://github.com/scott-griffiths/bitstring") |
| 28065 | (synopsis |
| 28066 | "Simple construction, analysis and modification of binary data") |
| 28067 | (description |
| 28068 | "Bitstring is a library for simple construction, analysis and modification |
| 28069 | of binary data.") |
| 28070 | (license license:expat))) |
| 28071 | |
| 28072 | (define-public python-confuse |
| 28073 | (package |
| 28074 | (name "python-confuse") |
| 28075 | (version "1.5.0") |
| 28076 | (source |
| 28077 | (origin |
| 28078 | (method url-fetch) |
| 28079 | (uri (pypi-uri "confuse" version)) |
| 28080 | (sha256 |
| 28081 | (base32 |
| 28082 | "0bh2kyj8wd7h9gg4nsvrbykl5ly0f70f0wi3fbm204b1f0fcmywj")))) |
| 28083 | (build-system python-build-system) |
| 28084 | (propagated-inputs |
| 28085 | (list python-pyyaml)) |
| 28086 | (home-page "https://github.com/beetbox/confuse") |
| 28087 | (synopsis "Painless YAML configuration") |
| 28088 | (description "Confuse is a configuration library for Python that uses |
| 28089 | YAML. It takes care of defaults, overrides, type checking, command-line |
| 28090 | integration, human-readable errors, and standard OS-specific locations.") |
| 28091 | (license license:expat))) |
| 28092 | |
| 28093 | (define-public python-reflink |
| 28094 | (package |
| 28095 | (name "python-reflink") |
| 28096 | (version "0.2.1") |
| 28097 | (source |
| 28098 | (origin |
| 28099 | (method url-fetch) |
| 28100 | (uri (pypi-uri "reflink" version)) |
| 28101 | (sha256 |
| 28102 | (base32 |
| 28103 | "0fkf3sd958g9hvr3jwlhnhqqzrwxljrc3grsf3yknh94vf13a9f9")))) |
| 28104 | (build-system python-build-system) |
| 28105 | (arguments |
| 28106 | `(#:tests? #false)) ; almost all tests want to run mkfs.btrfs |
| 28107 | (propagated-inputs |
| 28108 | (list python-cffi)) |
| 28109 | (native-inputs |
| 28110 | (list python-pytest python-pytest-runner)) |
| 28111 | (home-page "https://gitlab.com/rubdos/pyreflink") |
| 28112 | (synopsis "Python wrapper around reflink system call") |
| 28113 | (description |
| 28114 | "Python reflink wraps around platform specific @code{reflink} |
| 28115 | implementations.") |
| 28116 | (license license:expat))) |
| 28117 | |
| 28118 | (define-public python-retry |
| 28119 | (package |
| 28120 | (name "python-retry") |
| 28121 | (version "0.9.2") |
| 28122 | (source (origin |
| 28123 | (method url-fetch) |
| 28124 | (uri (pypi-uri "retry" version)) |
| 28125 | (sha256 |
| 28126 | (base32 "197v6qrh6858bhzzrjgk2zdqrybppymb1lsvdxnm1i39kfwsigzq")))) |
| 28127 | (build-system python-build-system) |
| 28128 | (arguments |
| 28129 | (list #:phases |
| 28130 | #~(modify-phases %standard-phases |
| 28131 | (replace 'check |
| 28132 | (lambda* (#:key tests? #:allow-other-keys) |
| 28133 | (when tests? (invoke "pytest" "-vv"))))))) |
| 28134 | (native-inputs (list python-pbr python-pytest)) |
| 28135 | (propagated-inputs (list python-decorator python-py)) |
| 28136 | (home-page "https://github.com/invl/retry") |
| 28137 | (synopsis "Retry decorator") |
| 28138 | (description |
| 28139 | "@code{retry} is an easy to use retry decorator for Python. It can be |
| 28140 | used to retry a function a given number of times.") |
| 28141 | (license license:asl2.0))) |
| 28142 | |
| 28143 | (define-public python-pivy |
| 28144 | (package |
| 28145 | (name "python-pivy") |
| 28146 | (version "0.6.5") |
| 28147 | (source |
| 28148 | (origin |
| 28149 | (method git-fetch) |
| 28150 | (uri (git-reference |
| 28151 | (url "https://github.com/coin3d/pivy") |
| 28152 | (commit version))) |
| 28153 | (file-name (git-file-name name version)) |
| 28154 | (sha256 |
| 28155 | (base32 "0vids7sxk8w5vr73xdnf8xdci71a7syl6cd35aiisppbqyyfmykx")))) |
| 28156 | (build-system python-build-system) |
| 28157 | (arguments |
| 28158 | `(;; The test suite fails due to an import cycle between 'pivy' and '_coin' |
| 28159 | #:tests? #f |
| 28160 | #:phases |
| 28161 | (modify-phases %standard-phases |
| 28162 | (add-after 'unpack 'patch-cmake-include-dirs |
| 28163 | (lambda _ |
| 28164 | ;; Patch buildsystem to respect Coin3D include directory |
| 28165 | (substitute* "CMakeLists.txt" |
| 28166 | (("\\$\\{SoQt_INCLUDE_DIRS}") |
| 28167 | "${Coin_INCLUDE_DIR};${SoQt_INCLUDE_DIRS}")) |
| 28168 | #t))))) |
| 28169 | (native-inputs |
| 28170 | (list cmake swig)) |
| 28171 | (inputs |
| 28172 | (list python-wrapper |
| 28173 | qtbase-5 |
| 28174 | libxi |
| 28175 | libice |
| 28176 | soqt |
| 28177 | glew |
| 28178 | coin3D)) |
| 28179 | (home-page "https://github.com/coin3d/pivy") |
| 28180 | (synopsis "Python bindings to Coin3D") |
| 28181 | (description |
| 28182 | "Pivy provides python bindings for Coin, a 3D graphics library with an |
| 28183 | Application Programming Interface based on the Open Inventor 2.1 API.") |
| 28184 | (license license:isc))) |
| 28185 | |
| 28186 | (define-public python-crayons |
| 28187 | (package |
| 28188 | (name "python-crayons") |
| 28189 | (version "0.4.0") |
| 28190 | (source |
| 28191 | (origin |
| 28192 | (method url-fetch) |
| 28193 | (uri (pypi-uri "crayons" version)) |
| 28194 | (sha256 |
| 28195 | (base32 |
| 28196 | "0gw106k4b6y8mw7pp52awxyplj2bwvwk315k4sywzwh0g1abfcxx")))) |
| 28197 | (build-system python-build-system) |
| 28198 | (propagated-inputs |
| 28199 | (list python-colorama)) |
| 28200 | (home-page "https://github.com/MasterOdin/crayons") |
| 28201 | (synopsis "TextUI colors for Python") |
| 28202 | (description "This package gives you colored strings for the terminal. |
| 28203 | Crayons automatically wraps a given string in the foreground color and |
| 28204 | restores the original state after the string is printed.") |
| 28205 | (license license:expat))) |
| 28206 | |
| 28207 | (define-public python-sane |
| 28208 | (package |
| 28209 | (name "python-sane") |
| 28210 | (version "2.9.1") |
| 28211 | (source |
| 28212 | (origin |
| 28213 | (method url-fetch) |
| 28214 | (uri (pypi-uri name version)) |
| 28215 | (sha256 |
| 28216 | (base32 |
| 28217 | "1pi597z94n2mkd821ln52fq0g727n2jxfskf280ip3kf7jw8w294")))) |
| 28218 | (build-system python-build-system) |
| 28219 | (native-inputs |
| 28220 | (list python-pytest)) |
| 28221 | (inputs |
| 28222 | (list sane-backends)) |
| 28223 | (home-page "https://github.com/python-pillow/Sane") |
| 28224 | (synopsis "Python interface to the SANE scanner") |
| 28225 | (description "This package provides Python interface to the SANE scanner |
| 28226 | and frame grabber interface.") |
| 28227 | (license (license:non-copyleft |
| 28228 | ;; Yet another variant of the X/MIT license. |
| 28229 | "https://github.com/python-pillow/Sane/blob/master/COPYING")))) |
| 28230 | |
| 28231 | (define-public python-scikit-build |
| 28232 | (package |
| 28233 | (name "python-scikit-build") |
| 28234 | (version "0.14.0") |
| 28235 | (source |
| 28236 | (origin |
| 28237 | (method url-fetch) |
| 28238 | (uri (pypi-uri "scikit-build" version)) |
| 28239 | (sha256 |
| 28240 | (base32 "1wx1m9vnxnnz59lyaisgyxldp313kciyd4af8lf112vb8vbjy9yk")))) |
| 28241 | (build-system pyproject-build-system) |
| 28242 | (arguments |
| 28243 | (list |
| 28244 | #:phases |
| 28245 | #~(modify-phases %standard-phases |
| 28246 | (add-after 'unpack 'patch-cmake-executable |
| 28247 | (lambda* (#:key inputs #:allow-other-keys) |
| 28248 | (substitute* "skbuild/constants.py" |
| 28249 | (("^(CMAKE_DEFAULT_EXECUTABLE = ).*" _ head) |
| 28250 | (format #f "~a ~s~%" head |
| 28251 | (search-input-file inputs "bin/cmake")))))) |
| 28252 | (replace 'check |
| 28253 | (lambda* (#:key tests? #:allow-other-keys) |
| 28254 | (when tests? |
| 28255 | ;; These tests attempt to pull dependencies from the Internet. |
| 28256 | (delete-file "tests/test_distribution.py") |
| 28257 | (delete-file "tests/test_pep518.py") |
| 28258 | (invoke "pytest" "-vv" |
| 28259 | "-n" (number->string (parallel-job-count)) |
| 28260 | "-k" (string-append |
| 28261 | ;; These tests attempt to write to read-only |
| 28262 | ;; Python install directory. |
| 28263 | "not test_install_command " |
| 28264 | "and not test_test_command " |
| 28265 | "and not test_hello_develop " |
| 28266 | ;; These sdist-related tests fail for unknown |
| 28267 | ;; reasons (see: |
| 28268 | ;; https://github.com/scikit-build/scikit-build/issues/689). |
| 28269 | "and not test_hello_sdist_with_base " |
| 28270 | "and not test_manifest_in_sdist " |
| 28271 | "and not test_hello_sdist " |
| 28272 | "and not test_sdist_with_symlinks " |
| 28273 | ;; These are not parallel safe and fail |
| 28274 | ;; nondeterministically (see: |
| 28275 | ;; https://github.com/scikit-build/scikit-build/issues/711). |
| 28276 | "and not test_generator_cleanup " |
| 28277 | "and not test_generator_selection ")))))))) |
| 28278 | (native-inputs |
| 28279 | (list cmake-minimal |
| 28280 | gfortran |
| 28281 | git-minimal |
| 28282 | ninja |
| 28283 | python-coverage |
| 28284 | python-cython |
| 28285 | python-mock |
| 28286 | python-packaging |
| 28287 | python-path |
| 28288 | python-pytest |
| 28289 | python-pytest-cov |
| 28290 | python-pytest-mock |
| 28291 | python-pytest-virtualenv |
| 28292 | python-pytest-xdist |
| 28293 | python-requests |
| 28294 | python-setuptools-scm)) |
| 28295 | (propagated-inputs |
| 28296 | (list python-distro python-packaging python-wheel)) |
| 28297 | (home-page "https://github.com/scikit-build/scikit-build") |
| 28298 | (synopsis "Build system generator for Python C/C++/Fortran/Cython extensions") |
| 28299 | (description "Scikit-build is an improved build system generator for |
| 28300 | CPython C/C++/Fortran/Cython extensions. It has support for additional |
| 28301 | compilers, build systems, cross compilation, and locating dependencies and |
| 28302 | determining their build requirements. The scikit-build package is |
| 28303 | fundamentally just glue between the @code{setuptools} Python module and |
| 28304 | CMake.") |
| 28305 | (license license:expat))) |
| 28306 | |
| 28307 | (define-public python-screenkey |
| 28308 | (package |
| 28309 | (name "python-screenkey") |
| 28310 | (version "1.4") |
| 28311 | (source |
| 28312 | (origin |
| 28313 | (method git-fetch) |
| 28314 | (uri (git-reference |
| 28315 | (url "https://gitlab.com/screenkey/screenkey") |
| 28316 | (commit (string-append "v" version)))) |
| 28317 | (file-name (git-file-name name version)) |
| 28318 | (sha256 |
| 28319 | (base32 |
| 28320 | "1rfngmkh01g5192pi04r1fm7vsz6hg9k3qd313sn9rl9xkjgp11l")))) |
| 28321 | (build-system python-build-system) |
| 28322 | (arguments |
| 28323 | `(#:phases |
| 28324 | (modify-phases %standard-phases |
| 28325 | (add-after 'unpack 'fix-dlopen-paths |
| 28326 | (lambda* (#:key inputs outputs #:allow-other-keys) |
| 28327 | (let* ((x11 (assoc-ref inputs "libx11")) |
| 28328 | (xtst (assoc-ref inputs "libxtst"))) |
| 28329 | (substitute* "Screenkey/xlib.py" |
| 28330 | (("libX11.so.6") |
| 28331 | (string-append x11 "/lib/libX11.so.6"))) |
| 28332 | (substitute* "Screenkey/xlib.py" |
| 28333 | (("libXtst.so.6") |
| 28334 | (string-append xtst "/lib/libXtst.so.6"))) |
| 28335 | #t))) |
| 28336 | (add-after 'install 'wrap-screenkey |
| 28337 | (lambda* (#:key outputs #:allow-other-keys) |
| 28338 | (wrap-program |
| 28339 | (string-append (assoc-ref outputs "out") "/bin/screenkey") |
| 28340 | `("GUIX_PYTHONPATH" ":" prefix (,(getenv "GUIX_PYTHONPATH"))) |
| 28341 | `("GI_TYPELIB_PATH" |
| 28342 | ":" prefix (,(getenv "GI_TYPELIB_PATH"))))))))) |
| 28343 | (inputs |
| 28344 | (list python-distutils-extra |
| 28345 | python-tokenize-rt |
| 28346 | libx11 |
| 28347 | libxtst |
| 28348 | gtk+ |
| 28349 | python-pygobject |
| 28350 | python-pycairo |
| 28351 | python-setuptools-git |
| 28352 | python-babel)) |
| 28353 | (home-page "https://www.thregr.org/~wavexx/software/screenkey/") |
| 28354 | (synopsis |
| 28355 | "Screencast tool to display pressed keys") |
| 28356 | (description |
| 28357 | "Screenkey is a screencast tool to display your keys inspired by |
| 28358 | Screenflick.") |
| 28359 | (license license:gpl3+))) |
| 28360 | |
| 28361 | (define-public python-jinja2-cli |
| 28362 | (package |
| 28363 | (name "python-jinja2-cli") |
| 28364 | (version "0.7.0") |
| 28365 | (source |
| 28366 | (origin |
| 28367 | (method url-fetch) |
| 28368 | (uri (pypi-uri "jinja2-cli" version)) |
| 28369 | (sha256 |
| 28370 | (base32 |
| 28371 | "0vikx7v6fbvww6kfrv0k5a24jyv3ak7nindg60906pdd1m9qvkcw")))) |
| 28372 | (build-system python-build-system) |
| 28373 | (propagated-inputs |
| 28374 | (list python-jinja2)) |
| 28375 | (native-inputs |
| 28376 | (list python-flake8 python-jinja2 python-pytest)) |
| 28377 | (home-page "https://github.com/mattrobenolt/jinja2-cli") |
| 28378 | (synopsis "Command-line interface to Jinja2") |
| 28379 | (description |
| 28380 | "This package provides a command-line interface (CLI) to the Jinja2 |
| 28381 | template engine.") |
| 28382 | (license license:bsd-3))) |
| 28383 | |
| 28384 | (define-public python-readability |
| 28385 | (package |
| 28386 | (name "python-readability") |
| 28387 | (version "0.3.1") |
| 28388 | (source |
| 28389 | (origin |
| 28390 | (method url-fetch) |
| 28391 | (uri (pypi-uri "readability" version)) |
| 28392 | (sha256 |
| 28393 | (base32 |
| 28394 | "1b8gq3g2zwvx0aivvdg56cc0bn7xw6f2v6psmxdx9aiipkw0s0zr")))) |
| 28395 | (build-system python-build-system) |
| 28396 | (home-page |
| 28397 | "https://github.com/andreasvc/readability/") |
| 28398 | (synopsis |
| 28399 | "Measure the readability of a given text using surface |
| 28400 | characteristics") |
| 28401 | (description |
| 28402 | "This package provides a Python library that is an implementation of |
| 28403 | traditional readability measures based on simple surface |
| 28404 | characteristics. These measures are basically linear regressions based on the |
| 28405 | number of words, syllables, and sentences.") |
| 28406 | (license license:asl2.0))) |
| 28407 | |
| 28408 | (define-public python-readability-lxml |
| 28409 | (package |
| 28410 | (name "python-readability-lxml") |
| 28411 | (version "0.8.1") |
| 28412 | (source (origin |
| 28413 | (method git-fetch) |
| 28414 | (uri (git-reference |
| 28415 | (url "https://github.com/buriy/python-readability") |
| 28416 | (commit (string-append "v" version)))) |
| 28417 | (file-name (git-file-name name version)) |
| 28418 | (sha256 |
| 28419 | (base32 |
| 28420 | "13nfy2v0pbbf62jn9qwgi489gg97hbb22q6w3f78mnvjxd2m19rh")) |
| 28421 | (snippet |
| 28422 | #~(begin (delete-file "readability/compat/two.py"))))) |
| 28423 | (build-system python-build-system) |
| 28424 | (arguments |
| 28425 | (list |
| 28426 | #:phases |
| 28427 | #~(modify-phases %standard-phases |
| 28428 | (replace 'check |
| 28429 | (lambda* (#:key tests? #:allow-other-keys) |
| 28430 | (when tests? |
| 28431 | (invoke "python" "-m" "pytest" "-v" "tests/"))))))) |
| 28432 | (propagated-inputs (list python-chardet python-cssselect python-lxml)) |
| 28433 | (native-inputs (list python-timeout-decorator python-pytest)) |
| 28434 | (home-page "http://github.com/buriy/python-readability") |
| 28435 | (synopsis "HTML to text parser") |
| 28436 | (description |
| 28437 | "This package provides classes and function that strip gratuitous markup |
| 28438 | from web pages to make them easier to read.") |
| 28439 | (license license:asl2.0))) |
| 28440 | |
| 28441 | (define-public python-listparser |
| 28442 | (package |
| 28443 | (name "python-listparser") |
| 28444 | (version "0.18") |
| 28445 | (source |
| 28446 | (origin |
| 28447 | (method url-fetch) |
| 28448 | (uri (pypi-uri "listparser" version)) |
| 28449 | (sha256 |
| 28450 | (base32 |
| 28451 | "0hdqs1mmayw1r8yla43hgb4d9y3zqs5483vgf8j9ygczkd2wrq2b")))) |
| 28452 | (build-system python-build-system) |
| 28453 | (home-page |
| 28454 | "https://github.com/kurtmckee/listparser") |
| 28455 | (synopsis |
| 28456 | "Parse subscription lists in Python") |
| 28457 | (description |
| 28458 | "This package provides a Python library that can parse OPML, FOAF, and |
| 28459 | iGoogle subscription lists.") |
| 28460 | (license license:expat))) |
| 28461 | |
| 28462 | (define-public python-smartypants |
| 28463 | (package |
| 28464 | (name "python-smartypants") |
| 28465 | (version "2.0.1") |
| 28466 | (source |
| 28467 | (origin |
| 28468 | ;; There's no source tarball for 2.0.1 on PyPI. |
| 28469 | (method git-fetch) |
| 28470 | (uri (git-reference |
| 28471 | (url "https://github.com/leohemsted/smartypants.py") |
| 28472 | (commit (string-append "v" version)))) |
| 28473 | (file-name (git-file-name name version)) |
| 28474 | (sha256 |
| 28475 | (base32 "00p1gnb9pzb3svdq3c5b9b332gsp50wrqqa39gj00m133zadanjp")))) |
| 28476 | (build-system python-build-system) |
| 28477 | (arguments |
| 28478 | '(#:phases |
| 28479 | (modify-phases %standard-phases |
| 28480 | (replace 'check |
| 28481 | ;; Its `setup.py test` doesn't report failure with exit status, so |
| 28482 | ;; we use `nose` instead. |
| 28483 | (lambda _ |
| 28484 | (invoke "nosetests" "-v" "--exclude=^load_tests$")))))) |
| 28485 | (native-inputs |
| 28486 | ;; For tests. |
| 28487 | (list python-docutils python-nose python-pygments)) |
| 28488 | (home-page "https://github.com/leohemsted/smartypants.py") |
| 28489 | (synopsis "Translate punctuation characters into smart quotes") |
| 28490 | (description |
| 28491 | "@command{smartpants} can perform the following transformations: |
| 28492 | @enumerate |
| 28493 | @item Straight quotes ( \" and ' ) into \"curly\" quote HTML entities |
| 28494 | @item Backticks-style quotes (``like this'') into \"curly\" quote HTML |
| 28495 | entities |
| 28496 | @item Dashes (-- and ---) into en- and em-dash entities |
| 28497 | @item Three consecutive dots (... or . . .) into an ellipsis entity |
| 28498 | @end enumerate") |
| 28499 | (license license:bsd-3))) |
| 28500 | |
| 28501 | (define-public python-typogrify |
| 28502 | (package |
| 28503 | (name "python-typogrify") |
| 28504 | (version "2.0.7") |
| 28505 | (source (origin |
| 28506 | (method url-fetch) |
| 28507 | (uri (pypi-uri "typogrify" version)) |
| 28508 | (sha256 |
| 28509 | (base32 |
| 28510 | "0f6b2gnnxjbx1fbmkcscc6qjr4hi78kwm1wx4b766ha3va66dr4b")))) |
| 28511 | (build-system python-build-system) |
| 28512 | (arguments |
| 28513 | '(#:phases |
| 28514 | (modify-phases %standard-phases |
| 28515 | (replace 'check |
| 28516 | (lambda _ |
| 28517 | (invoke "nosetests" "-v")))))) |
| 28518 | (propagated-inputs |
| 28519 | (list python-smartypants)) |
| 28520 | (native-inputs |
| 28521 | ;; For tests. |
| 28522 | (list python-nose)) |
| 28523 | (home-page "https://github.com/mintchaos/typogrify") |
| 28524 | (synopsis "Filters to transform text into typographically-improved HTML") |
| 28525 | (description |
| 28526 | "@code{typogrify} provides a set of custom filters that automatically |
| 28527 | apply various transformations to plain text in order to yield |
| 28528 | typographically-improved HTML. While often used in conjunction with Jinja and |
| 28529 | Django template systems, the filters can be used in any environment.") |
| 28530 | (license license:bsd-3))) |
| 28531 | |
| 28532 | (define-public python-ld |
| 28533 | (package |
| 28534 | (name "python-ld") |
| 28535 | (version "0.5.0") |
| 28536 | (source |
| 28537 | (origin |
| 28538 | (method url-fetch) |
| 28539 | (uri (pypi-uri "ld" version)) |
| 28540 | (sha256 |
| 28541 | (base32 |
| 28542 | "1k4ydp5rgkv4985v459kcl06i1igjm1ywvh2vkbi9ck1zyyri1z5")))) |
| 28543 | (build-system python-build-system) |
| 28544 | (propagated-inputs |
| 28545 | (list python-six)) |
| 28546 | (home-page "https://github.com/nir0s/ld") |
| 28547 | (synopsis "OS platform information API") |
| 28548 | (description |
| 28549 | "The ld package provides information about the GNU/Linux distribution it |
| 28550 | runs on, such as a reliable machine-readable ID, or version information.") |
| 28551 | (license license:asl2.0))) |
| 28552 | |
| 28553 | (define-public python-quicktions |
| 28554 | (package |
| 28555 | (name "python-quicktions") |
| 28556 | (version "1.11") |
| 28557 | (source |
| 28558 | (origin |
| 28559 | (method url-fetch) |
| 28560 | (uri (pypi-uri "quicktions" version)) |
| 28561 | (sha256 |
| 28562 | (base32 |
| 28563 | "1px21a6x527i1bsr2p6bbf3jziqpvd1vjkvvzh13gsy4iip0yvzn")) |
| 28564 | (modules '((guix build utils))) |
| 28565 | (snippet |
| 28566 | '(begin |
| 28567 | ;; This file is generated by Cython. |
| 28568 | (delete-file "src/quicktions.c") #t)))) |
| 28569 | (build-system python-build-system) |
| 28570 | (arguments |
| 28571 | `(#:phases |
| 28572 | (modify-phases %standard-phases |
| 28573 | (add-before 'build 'cythonize-sources |
| 28574 | (lambda _ |
| 28575 | (with-directory-excursion "src" |
| 28576 | (invoke "cython" "quicktions.pyx")))) |
| 28577 | (replace 'check |
| 28578 | (lambda* (#:key tests? inputs outputs #:allow-other-keys) |
| 28579 | (when tests? |
| 28580 | (add-installed-pythonpath inputs outputs) |
| 28581 | (invoke "pytest")) |
| 28582 | #t))))) |
| 28583 | (native-inputs |
| 28584 | (list python-cython python-pytest)) |
| 28585 | (home-page "https://github.com/scoder/quicktions") |
| 28586 | (synopsis "Fast fractions data type for rational numbers") |
| 28587 | (description |
| 28588 | "This package provides fast fractions data type for rational numbers. It |
| 28589 | is the cythonized version of @code{fractions.Fraction}.") |
| 28590 | (license license:psfl))) |
| 28591 | |
| 28592 | (define-public python-pathvalidate |
| 28593 | (package |
| 28594 | (name "python-pathvalidate") |
| 28595 | (version "2.4.1") |
| 28596 | (source |
| 28597 | (origin |
| 28598 | (method url-fetch) |
| 28599 | (uri (pypi-uri "pathvalidate" version)) |
| 28600 | (sha256 |
| 28601 | (base32 "0s14ycjgb44lxr2wg8lrq3b7kybmmrbf7yqz47xrqgn2gr6dk6rw")))) |
| 28602 | (build-system python-build-system) |
| 28603 | (arguments |
| 28604 | '(#:tests? #f)) |
| 28605 | ;; Tests disabled because of circular dependencies. |
| 28606 | ;; pathvalidate tests depend on pytest-md-report, which |
| 28607 | ;; depends on pathvalidate. |
| 28608 | (native-inputs |
| 28609 | (list python-allpairspy python-click python-faker python-pytest)) |
| 28610 | (home-page "https://github.com/thombashi/pathvalidate") |
| 28611 | (synopsis "Sanitize strings representing paths") |
| 28612 | (description |
| 28613 | "@code{pathvalidate} is a Python library to sanitize/validate strings |
| 28614 | representing paths or filenames.") |
| 28615 | (license license:expat))) |
| 28616 | |
| 28617 | (define-public python-escapism |
| 28618 | (package |
| 28619 | (name "python-escapism") |
| 28620 | (version "1.0.1") |
| 28621 | (source |
| 28622 | (origin |
| 28623 | (method url-fetch) |
| 28624 | (uri (pypi-uri "escapism" version)) |
| 28625 | (sha256 |
| 28626 | (base32 |
| 28627 | "1v74243wifcwhj5zkdiispxc9kb1xvnfzilg8bq308pjnkgnn9bk")))) |
| 28628 | (build-system python-build-system) |
| 28629 | (home-page "https://github.com/minrk/escapism") |
| 28630 | (synopsis "Simple, generic library for escaping strings") |
| 28631 | (description |
| 28632 | "This Python library provides a programming interface to, given a set of |
| 28633 | safe characters and an escape character, escape safe strings and unescape the |
| 28634 | result.") |
| 28635 | (license license:expat))) |
| 28636 | |
| 28637 | (define-public python-recommonmark |
| 28638 | (package |
| 28639 | (name "python-recommonmark") |
| 28640 | (version "0.7.1") |
| 28641 | (source |
| 28642 | (origin |
| 28643 | (method url-fetch) |
| 28644 | (uri (pypi-uri "recommonmark" version)) |
| 28645 | (sha256 |
| 28646 | (base32 |
| 28647 | "0rvdd2ikdr0yg6cx6594fdzn53cmdc0g0i6qsbcdq8i2kxjdpd5x")))) |
| 28648 | (build-system python-build-system) |
| 28649 | (propagated-inputs |
| 28650 | (list python-commonmark python-docutils python-sphinx)) |
| 28651 | (arguments |
| 28652 | '(#:phases (modify-phases %standard-phases |
| 28653 | (add-after 'unpack 'delete-test-sphinx |
| 28654 | (lambda* (#:key outputs #:allow-other-keys) |
| 28655 | (let* ((out (assoc-ref outputs "out"))) |
| 28656 | (delete-file "tests/test_sphinx.py"))))))) |
| 28657 | (home-page "https://github.com/readthedocs/recommonmark") |
| 28658 | (synopsis "Docutils-compatibility bridge to CommonMark") |
| 28659 | (description |
| 28660 | "This package provides a docutils-compatibility bridge to CommonMark that |
| 28661 | lets you write CommonMark inside of Docutils & Sphinx projects.") |
| 28662 | (license license:expat))) |
| 28663 | |
| 28664 | (define-public python-pyhull |
| 28665 | (package |
| 28666 | (name "python-pyhull") |
| 28667 | (version "2015.2.1") |
| 28668 | (source |
| 28669 | (origin |
| 28670 | (method url-fetch) |
| 28671 | (uri (pypi-uri "pyhull" version)) |
| 28672 | (sha256 |
| 28673 | (base32 |
| 28674 | "091sph52c4yk1jlm5w8xidxpzbia9r7s42bnb23q4m4b56ihmzyj")))) |
| 28675 | (build-system python-build-system) |
| 28676 | (propagated-inputs |
| 28677 | (list python-numpy)) |
| 28678 | (home-page "https://github.com/materialsvirtuallab/pyhull") |
| 28679 | (synopsis "Python wrapper to Qhull") |
| 28680 | (description |
| 28681 | "This package provides a Python wrapper to @uref{http://www.qhull.org/, |
| 28682 | Qhull} for the computation of the convex hull, Delaunay triangulation, and |
| 28683 | Voronoi diagram.") |
| 28684 | (license license:expat))) |
| 28685 | |
| 28686 | (define-public python-opcodes |
| 28687 | ;; There are no tags in this repo, but 'opcodes/__init__.py' specifies a |
| 28688 | ;; version number, which is what we use here. |
| 28689 | (let ((commit "0f7c7d63f5e13ce5a89d9acc3934f1b6e247ec1f")) |
| 28690 | (package |
| 28691 | (name "python-opcodes") |
| 28692 | (version "0.3.14") ;from 'opcodes/__init__.py' |
| 28693 | (home-page "https://github.com/Maratyszcza/Opcodes") |
| 28694 | (source (origin |
| 28695 | (method git-fetch) |
| 28696 | (uri (git-reference (url home-page) (commit commit))) |
| 28697 | (file-name (git-file-name name version)) |
| 28698 | (sha256 |
| 28699 | (base32 |
| 28700 | "1fvxkr83gfl9f0ikd2wl2lzazzya2qz1hk4yn2a0pq742brbwpys")))) |
| 28701 | (build-system python-build-system) |
| 28702 | (synopsis "Database of processor instructions and opcodes") |
| 28703 | (description |
| 28704 | "This project documents instruction sets in a format convenient for |
| 28705 | tools development. An instruction set is represented by three files: |
| 28706 | |
| 28707 | @itemize |
| 28708 | @item an XML file that describes instructions; |
| 28709 | @item an XSD file that describes the structure of the XML file; |
| 28710 | @item a Python module that reads the XML file and represents it as a set of |
| 28711 | Python objects; |
| 28712 | @end itemize |
| 28713 | |
| 28714 | It currently provides descriptions for most user-mode x86, x86_64, and k1om |
| 28715 | instructions up to AVX-512 and SHA (including 3dnow!+, XOP, FMA3, FMA4, TBM |
| 28716 | and BMI2).") |
| 28717 | (license license:bsd-2)))) |
| 28718 | |
| 28719 | (define-public python-peachpy |
| 28720 | ;; There is no tag in this repo. |
| 28721 | (let ((commit "913d74c35a6b1d330e90bfc055208ce5b06b35a0") |
| 28722 | (version "0.2.0") ;from 'peachpy/__init__.py' |
| 28723 | (revision "2")) |
| 28724 | (package |
| 28725 | (name "python-peachpy") |
| 28726 | (version (git-version version revision commit)) |
| 28727 | (home-page "https://github.com/Maratyszcza/PeachPy") |
| 28728 | (source (origin |
| 28729 | (method git-fetch) |
| 28730 | (uri (git-reference (url home-page) (commit commit))) |
| 28731 | (file-name (git-file-name name version)) |
| 28732 | (sha256 |
| 28733 | (base32 |
| 28734 | "1wnqxspxsacw4556q0b9fbw11nhrkgn6gs8g43jdnpa35f3z9kb6")) |
| 28735 | (patches (search-patches "python-peachpy-determinism.patch")))) |
| 28736 | (build-system python-build-system) |
| 28737 | (arguments |
| 28738 | '(#:phases (modify-phases %standard-phases |
| 28739 | (replace 'check |
| 28740 | (lambda* (#:key tests? #:allow-other-keys) |
| 28741 | (when tests? |
| 28742 | (invoke "nosetests"))))))) |
| 28743 | (native-inputs |
| 28744 | (list python-nose python-rednose python-setuptools)) |
| 28745 | (propagated-inputs |
| 28746 | (list python-six python-opcodes)) |
| 28747 | (synopsis "Efficient assembly code generation in Python") |
| 28748 | (description |
| 28749 | "PeachPy is a Python framework for writing high-performance assembly kernels. |
| 28750 | PeachPy aims to simplify writing optimized assembly kernels while preserving |
| 28751 | all optimization opportunities of traditional assembly. |
| 28752 | |
| 28753 | PeachPy can generate ELF, MS-COFF, Mach-O object files, and assembly listings |
| 28754 | for the Go language tool chain; it adapts to different calling conventions and |
| 28755 | application binary interfaces (ABIs); it takes care of register allocation; it |
| 28756 | supports x86_64 instructions up to AVX-512 and SHA.") |
| 28757 | (license license:bsd-2)))) |
| 28758 | |
| 28759 | (define-public python-sgmllib3k |
| 28760 | (let ((commit "799964676f35349ca2dd04503e34c2b3ad522c0d") |
| 28761 | (revision "1")) |
| 28762 | (package |
| 28763 | (name "python-sgmllib3k") |
| 28764 | (version |
| 28765 | (git-version "1.0.0" revision commit)) |
| 28766 | (source |
| 28767 | (origin |
| 28768 | (method git-fetch) |
| 28769 | (uri (git-reference |
| 28770 | (url "https://github.com/hsoft/sgmllib") |
| 28771 | (commit commit))) |
| 28772 | (file-name (git-file-name name version)) |
| 28773 | (sha256 |
| 28774 | (base32 |
| 28775 | "0bzf6pv85dzfxfysm6zbj8m40hp0xzr9h8qlk4hp3nmy88rznqvr")))) |
| 28776 | (build-system python-build-system) |
| 28777 | (home-page "https://github.com/hsoft/sgmllib") |
| 28778 | (synopsis "Python 3 port of sgmllib") |
| 28779 | (description "This package provides an unmaintained port of sgmllib to |
| 28780 | Python 3. It is used to parse text files formatted in @acronym{SGML,Standard |
| 28781 | Generalized Mark-up Language}.") |
| 28782 | (license license:bsd-3)))) |
| 28783 | |
| 28784 | (define-public python-cwcwidth |
| 28785 | (package |
| 28786 | (name "python-cwcwidth") |
| 28787 | (version "0.1.4") |
| 28788 | (source |
| 28789 | (origin |
| 28790 | (method url-fetch) |
| 28791 | (uri (pypi-uri "cwcwidth" version)) |
| 28792 | (sha256 |
| 28793 | (base32 |
| 28794 | "1azrphpkcyggg38xvkfb9dpc4xmmm90p02kf8dkqd4d6j5w96aj8")))) |
| 28795 | (build-system python-build-system) |
| 28796 | (native-inputs |
| 28797 | (list python-cython python-pytest python-setuptools-scm python-toml |
| 28798 | python-wheel)) |
| 28799 | (home-page |
| 28800 | "https://github.com/sebastinas/cwcwidth") |
| 28801 | (synopsis "Python bindings for wc(s)width") |
| 28802 | (description "This package provides bindings for wcwidth and wcswidth |
| 28803 | functions defined in POSIX.1-2001 and POSIX.1-2008.") |
| 28804 | (license license:expat))) |
| 28805 | |
| 28806 | (define-public python-pyan3 |
| 28807 | (package |
| 28808 | (name "python-pyan3") |
| 28809 | (version "1.2.0") |
| 28810 | (source |
| 28811 | (origin |
| 28812 | ;; Source tarball on PyPI lacks tests. |
| 28813 | (method git-fetch) |
| 28814 | (uri (git-reference |
| 28815 | (url "https://github.com/Technologicat/pyan") |
| 28816 | (commit (string-append "v" version)))) |
| 28817 | (file-name (git-file-name name version)) |
| 28818 | (sha256 |
| 28819 | (base32 |
| 28820 | "1367x25rcy2y8f0x9c2dbxl2qgdln3arr7ddyzybz2c28g6jrv5z")) |
| 28821 | (patches (search-patches "python-pyan3-fix-positional-arguments.patch" |
| 28822 | "python-pyan3-fix-absolute-path-bug.patch")))) |
| 28823 | (build-system python-build-system) |
| 28824 | (arguments |
| 28825 | `(#:phases |
| 28826 | (modify-phases %standard-phases |
| 28827 | (replace 'check |
| 28828 | (lambda* (#:key tests? #:allow-other-keys) |
| 28829 | (when tests? |
| 28830 | ;; Extend PYTHONPATH so the built package will be found. |
| 28831 | (setenv "GUIX_PYTHONPATH" |
| 28832 | (string-append (getcwd) ":" (getenv "GUIX_PYTHONPATH"))) |
| 28833 | (invoke "pytest"))))))) |
| 28834 | (native-inputs |
| 28835 | (list python-pytest python-pytest-cov python-wheel)) |
| 28836 | (propagated-inputs |
| 28837 | (list python-jinja2)) |
| 28838 | (home-page "https://github.com/Technologicat/pyan") |
| 28839 | (synopsis "Offline call graph generator for Python 3") |
| 28840 | (description "Pyan takes one or more Python source files, performs |
| 28841 | a (rather superficial) static analysis, and constructs a directed graph of the |
| 28842 | objects in the combined source, and how they define or use each other. The |
| 28843 | graph can be output for rendering by GraphViz or yEd.") |
| 28844 | (license license:gpl2))) |
| 28845 | |
| 28846 | (define-public python-multipledispatch |
| 28847 | (package |
| 28848 | (name "python-multipledispatch") |
| 28849 | (version "0.6.0") |
| 28850 | (source |
| 28851 | (origin |
| 28852 | (method url-fetch) |
| 28853 | (uri (pypi-uri "multipledispatch" version)) |
| 28854 | (sha256 |
| 28855 | (base32 |
| 28856 | "1slblghfjg9fdi9zpd7gmrkvfbv20nrdgnrymcnbky8bzm8i9ax7")))) |
| 28857 | (build-system python-build-system) |
| 28858 | (propagated-inputs (list python-six)) |
| 28859 | (home-page "https://github.com/mrocklin/multipledispatch/") |
| 28860 | (synopsis "Multiple dispatch for Python based on pattern matching") |
| 28861 | (description "This library provides an efficient mechanism for overloading |
| 28862 | function implementations based on the types of the arguments.") |
| 28863 | (license license:bsd-3))) |
| 28864 | |
| 28865 | (define-public python-logical-unification |
| 28866 | (package |
| 28867 | (name "python-logical-unification") |
| 28868 | (version "0.4.3") |
| 28869 | (source |
| 28870 | (origin |
| 28871 | (method url-fetch) |
| 28872 | (uri (pypi-uri "logical-unification" version)) |
| 28873 | (sha256 |
| 28874 | (base32 |
| 28875 | "0j57953hi7kg2rl0163vzjzsvzdyjimnklhx6idf5vaqqf1d3p1j")))) |
| 28876 | (build-system python-build-system) |
| 28877 | (propagated-inputs |
| 28878 | (list python-multipledispatch python-toolz)) |
| 28879 | (home-page "https://github.com/pythological/unification/") |
| 28880 | (synopsis "Logical unification in Python for solving symbolic expressions") |
| 28881 | (description "This library provides algorithms and data types for solving |
| 28882 | symbolic expressions in pure Python using the technique of logical unification.") |
| 28883 | (license license:bsd-3))) |
| 28884 | |
| 28885 | (define-public python-cons |
| 28886 | (package |
| 28887 | (name "python-cons") |
| 28888 | (version "0.4.2") |
| 28889 | (source |
| 28890 | (origin |
| 28891 | (method url-fetch) |
| 28892 | (uri (pypi-uri "cons" version)) |
| 28893 | (sha256 |
| 28894 | (base32 |
| 28895 | "0w9giq196wps7mbm47c4shdzs5yvwvqajqzkim2p92i51sm5qgvm")))) |
| 28896 | (build-system python-build-system) |
| 28897 | (native-inputs |
| 28898 | (list python-pytest-6 python-toml)) |
| 28899 | (propagated-inputs |
| 28900 | (list python-logical-unification)) |
| 28901 | (home-page "https://github.com/pythological/python-cons") |
| 28902 | (synopsis "Cons cell data structures and related algorithms for Python") |
| 28903 | (description |
| 28904 | "This library implements algorithms and data structures for Lisp-style |
| 28905 | cons cells in Python.") |
| 28906 | (license license:lgpl3+))) |
| 28907 | |
| 28908 | (define-public python-etuples |
| 28909 | (package |
| 28910 | (name "python-etuples") |
| 28911 | (version "0.3.3") |
| 28912 | (source |
| 28913 | (origin |
| 28914 | (method url-fetch) |
| 28915 | (uri (pypi-uri "etuples" version)) |
| 28916 | (sha256 |
| 28917 | (base32 |
| 28918 | "0jhfyp177v37rl0i7wqfx7q6s5qkz027hl283d1x8d0vm3w0zqc8")))) |
| 28919 | (build-system python-build-system) |
| 28920 | (propagated-inputs |
| 28921 | (list python-cons python-multipledispatch)) |
| 28922 | (home-page "https://github.com/pythological/etuples") |
| 28923 | (synopsis "S-expressions in Python") |
| 28924 | (description |
| 28925 | "This library implements eval'able S-expression in Python using tuple-like objects.") |
| 28926 | (license license:asl2.0))) |
| 28927 | |
| 28928 | (define-public python-minikanren |
| 28929 | (package |
| 28930 | (name "python-minikanren") |
| 28931 | (version "1.0.1") |
| 28932 | (source |
| 28933 | (origin |
| 28934 | (method git-fetch) |
| 28935 | (uri (git-reference |
| 28936 | (url "https://github.com/pythological/kanren") |
| 28937 | (commit (string-append "v" version)))) |
| 28938 | (file-name (git-file-name name version)) |
| 28939 | (sha256 |
| 28940 | (base32 "0g7wfj5hxalwz7k1301nsjqhjpzsif1bj6wjm2x2kavlm2ypv9jc")))) |
| 28941 | (build-system python-build-system) |
| 28942 | (arguments |
| 28943 | '(#:phases (modify-phases %standard-phases |
| 28944 | (replace 'check |
| 28945 | (lambda* (#:key tests? #:allow-other-keys) |
| 28946 | (when tests? |
| 28947 | (invoke "python" "-m" "pytest" "-v" "tests/" "kanren/")) |
| 28948 | #t))))) |
| 28949 | (native-inputs |
| 28950 | (list python-coveralls |
| 28951 | python-pydocstyle |
| 28952 | python-pytest |
| 28953 | python-pytest-cov |
| 28954 | python-pylint |
| 28955 | python-black |
| 28956 | python-sympy |
| 28957 | python-versioneer |
| 28958 | python-coverage |
| 28959 | python-pre-commit)) |
| 28960 | (propagated-inputs |
| 28961 | (list python-toolz python-cons python-multipledispatch |
| 28962 | python-etuples python-logical-unification)) |
| 28963 | (home-page "https://github.com/pythological/kanren") |
| 28964 | (synopsis "Relational logic programming in pure Python") |
| 28965 | (description |
| 28966 | "The minikanren library provides an algorithmic core for computer algebra |
| 28967 | systems in Python.") |
| 28968 | (license license:bsd-3))) |
| 28969 | |
| 28970 | (define-public python-dotenv |
| 28971 | (package |
| 28972 | (name "python-dotenv") |
| 28973 | (version "0.20.0") |
| 28974 | (source |
| 28975 | (origin |
| 28976 | (method url-fetch) |
| 28977 | (uri (pypi-uri "python-dotenv" version)) |
| 28978 | (sha256 |
| 28979 | (base32 "13s9imfd0k4d7b1qy5wfqzw5vyj6rhmcrccsdz1l4g39b55b1qxp")))) |
| 28980 | (build-system python-build-system) |
| 28981 | (arguments |
| 28982 | `(#:phases |
| 28983 | (modify-phases %standard-phases |
| 28984 | (replace 'check |
| 28985 | (lambda* (#:key tests? inputs outputs #:allow-other-keys) |
| 28986 | (when tests? |
| 28987 | (add-installed-pythonpath inputs outputs) |
| 28988 | (setenv "PATH" (string-append (getenv "PATH") ":" |
| 28989 | (assoc-ref outputs "out") "/bin")) |
| 28990 | ;; Skip the ipython tests. |
| 28991 | (delete-file "tests/test_ipython.py") |
| 28992 | (invoke "python" "-m" "pytest"))))))) |
| 28993 | (propagated-inputs |
| 28994 | (list python-click)) |
| 28995 | (native-inputs |
| 28996 | (list python-mock python-pytest python-sh)) |
| 28997 | (home-page "https://saurabh-kumar.com/python-dotenv/") |
| 28998 | (synopsis "Setup environment variables according to .env files") |
| 28999 | (description |
| 29000 | "This package provides the @code{python-dotenv} Python module to read |
| 29001 | key-value pairs from a @code{.env} file and set them as environment variables.") |
| 29002 | (license license:bsd-3))) |
| 29003 | |
| 29004 | (define-public python-dotenv-0.13.0 |
| 29005 | (package (inherit python-dotenv) |
| 29006 | (name "python-dotenv") |
| 29007 | (version "0.13.0") |
| 29008 | (source |
| 29009 | (origin |
| 29010 | (method url-fetch) |
| 29011 | (uri (pypi-uri "python-dotenv" version)) |
| 29012 | (sha256 |
| 29013 | (base32 |
| 29014 | "0x5dagmfn31phrbxlwacw3s4w5vibv8fxqc62nqcdvdhjsy0k69v")))))) |
| 29015 | |
| 29016 | (define-public date2name |
| 29017 | (let ((commit "6c8f37277e8ec82aa50f90b8921422be30c4e798") |
| 29018 | (revision "1")) |
| 29019 | (package |
| 29020 | (name "date2name") |
| 29021 | (version (git-version "0.0" revision commit)) |
| 29022 | (source |
| 29023 | (origin |
| 29024 | (method git-fetch) |
| 29025 | (uri (git-reference |
| 29026 | (url "https://github.com/novoid/date2name") |
| 29027 | (commit commit))) |
| 29028 | (file-name (git-file-name name version)) |
| 29029 | (sha256 |
| 29030 | (base32 |
| 29031 | "1vq96b7n16d932nyfhnzwdwxff0zrqanidmwr4cxj2p67ad9y3w7")))) |
| 29032 | (build-system python-build-system) |
| 29033 | (arguments |
| 29034 | `(#:tests? #f ; no tests |
| 29035 | #:phases |
| 29036 | (modify-phases %standard-phases |
| 29037 | (delete 'build) |
| 29038 | (replace 'install |
| 29039 | (lambda* (#:key outputs #:allow-other-keys) |
| 29040 | (let* ((bindir (string-append (assoc-ref outputs "out") "/bin")) |
| 29041 | (binary (string-append bindir "/date2name"))) |
| 29042 | (mkdir-p bindir) |
| 29043 | (copy-file "date2name/__init__.py" binary) |
| 29044 | (chmod binary #o555))))))) |
| 29045 | (synopsis "Handling time-stamps and date-stamps in file names") |
| 29046 | (description "By default, date2name gets the modification time of matching |
| 29047 | files and directories and adds a datestamp in standard ISO 8601+ format |
| 29048 | YYYY-MM-DD at the beginning of the file or directory name.") |
| 29049 | (home-page "https://github.com/novoid/date2name") |
| 29050 | (license license:gpl3+)))) |
| 29051 | |
| 29052 | (define-public python-braintree |
| 29053 | (package |
| 29054 | (name "python-braintree") |
| 29055 | (version "4.12.0") |
| 29056 | (source |
| 29057 | (origin |
| 29058 | (method url-fetch) |
| 29059 | (uri (pypi-uri "braintree" version)) |
| 29060 | (sha256 |
| 29061 | (base32 "19kli85q18p80nsn8fm4ql6axpr7bllfqg5chv2ywhr8zr8bssll")))) |
| 29062 | (build-system python-build-system) |
| 29063 | (propagated-inputs |
| 29064 | (list python-requests)) |
| 29065 | (home-page |
| 29066 | "https://developers.braintreepayments.com/python/sdk/server/overview") |
| 29067 | (synopsis "Braintree Python Library") |
| 29068 | (description "The Braintree Python SDK provides integration access to the |
| 29069 | Braintree Gateway. Braintree is a US-based payments service provider.") |
| 29070 | (license license:expat))) |
| 29071 | |
| 29072 | (define-public python-markuppy |
| 29073 | (package |
| 29074 | (name "python-markuppy") |
| 29075 | (version "1.14") |
| 29076 | (source |
| 29077 | (origin |
| 29078 | (method url-fetch) |
| 29079 | (uri (pypi-uri "MarkupPy" version)) |
| 29080 | (sha256 |
| 29081 | (base32 "0pqdmpxbr8iq22b4css2gz5z6s01ddpzyj25x27kgbs2lp0f5phs")))) |
| 29082 | (build-system python-build-system) |
| 29083 | (home-page "https://github.com/tylerbakke/MarkupPy") |
| 29084 | (synopsis "Pythonic HTML/XML generator") |
| 29085 | (description "This Python module attempts to make it easier to generate |
| 29086 | HTML/XML from a Python program in an intuitive, lightweight, customizable and |
| 29087 | pythonic way.") |
| 29088 | (license license:expat))) |
| 29089 | |
| 29090 | (define-public python-tablib |
| 29091 | (package |
| 29092 | (name "python-tablib") |
| 29093 | (version "3.0.0") |
| 29094 | (source |
| 29095 | (origin |
| 29096 | (method url-fetch) |
| 29097 | (uri (pypi-uri "tablib" version)) |
| 29098 | (sha256 |
| 29099 | (base32 "03f1z6jq6rf67gwhbm9ma4rydm8h447a5nh5lcs5l8jg8l4aqg7q")))) |
| 29100 | (build-system python-build-system) |
| 29101 | (arguments |
| 29102 | '(#:phases |
| 29103 | (modify-phases %standard-phases |
| 29104 | (replace 'check |
| 29105 | (lambda* (#:key tests? #:allow-other-keys) |
| 29106 | (when tests? |
| 29107 | (setenv "GUIX_PYTHONPATH" |
| 29108 | (string-append (getcwd) "/build/lib:" |
| 29109 | (getenv "GUIX_PYTHONPATH"))) |
| 29110 | (invoke "pytest"))))))) |
| 29111 | (native-inputs |
| 29112 | (list python-pandas ;; required for test-suite |
| 29113 | python-pytest python-pytest-cov python-setuptools-scm)) |
| 29114 | (propagated-inputs |
| 29115 | (list python-markuppy |
| 29116 | python-odfpy |
| 29117 | python-openpyxl |
| 29118 | python-pyyaml |
| 29119 | python-tabulate |
| 29120 | python-xlrd |
| 29121 | python-xlwt)) |
| 29122 | (home-page "https://tablib.readthedocs.io") |
| 29123 | (synopsis "Format agnostic tabular data library") |
| 29124 | (description "@code{tablib} is a format-agnostic tabular dataset library, |
| 29125 | written in Python. Supported output formats are Excel (Sets + Books), |
| 29126 | JSON (Sets + Books), YAML (Sets + Books), HTML (Sets), Jira (Sets), |
| 29127 | TSV (Sets), ODS (Sets), CSV (Sets), and DBF (Sets). |
| 29128 | |
| 29129 | @code{tablib} also supports Pandas DataFrames (Sets). Anyhow, since pandas is |
| 29130 | quite huge, this Guix package doesn't depend on pandas. In case, just also |
| 29131 | install @code{python-pandas}.") |
| 29132 | (license license:expat))) |
| 29133 | |
| 29134 | (define-public python-csb43 |
| 29135 | (package |
| 29136 | (name "python-csb43") |
| 29137 | (version "0.9.1") |
| 29138 | (source |
| 29139 | (origin |
| 29140 | (method url-fetch) |
| 29141 | (uri (pypi-uri "csb43" version)) |
| 29142 | (sha256 |
| 29143 | (base32 "0r0csl9npncnkfafg3rg6xr38d1qr0sxvq7wn7mg9bq41hvvh1si")))) |
| 29144 | (build-system python-build-system) |
| 29145 | (native-inputs |
| 29146 | (list python-lxml)) |
| 29147 | (propagated-inputs |
| 29148 | (list python-pycountry python-pyyaml python-tablib)) |
| 29149 | (home-page "https://bitbucket.org/wmj/csb43") |
| 29150 | (synopsis "Tools for converting from the Spanish banks' format CSB norm |
| 29151 | 43 (CSB43)") |
| 29152 | (description "This package provides tools to convert files in the format |
| 29153 | used by multiple Spanish banks (standard 43 of the Spanish Banking Council |
| 29154 | [CSB43] / Spanish Banking Association [AEB43]) to other formats. |
| 29155 | |
| 29156 | Supported output formats are: OFX, HomeBank CSV, HTML, JSON, ODS (OpenDocument |
| 29157 | spreadsheet), CSV, TSV, XLS, XLSX (Microsoft Excel spreadsheet), and YAML.") |
| 29158 | (license license:lgpl3))) |
| 29159 | |
| 29160 | (define-public python-febelfin-coda |
| 29161 | (package |
| 29162 | (name "python-febelfin-coda") |
| 29163 | (version "0.2.0") |
| 29164 | (source |
| 29165 | (origin |
| 29166 | (method url-fetch) |
| 29167 | (uri (pypi-uri "febelfin-coda" version)) |
| 29168 | (sha256 |
| 29169 | (base32 "1isnf87gxlvfbmackv7b2c978vmnj7ij0v4svhyjl8pbb9hwjsvm")))) |
| 29170 | (build-system python-build-system) |
| 29171 | (home-page "https://coda.b2ck.com/") |
| 29172 | (synopsis "Module to parse Belgian CODA files") |
| 29173 | (description "This package provides a module to parse Coded statement of |
| 29174 | account (CODA) files as defined be the Belgian Febelfin bank standard.") |
| 29175 | (license license:bsd-3))) |
| 29176 | |
| 29177 | (define-public python-ofxparse |
| 29178 | (package |
| 29179 | (name "python-ofxparse") |
| 29180 | (version "0.21") |
| 29181 | (source |
| 29182 | (origin |
| 29183 | (method url-fetch) |
| 29184 | (uri (pypi-uri "ofxparse" version)) |
| 29185 | (sha256 |
| 29186 | (base32 "19y4sp5l9jqiqzzlbqdfiab42qx7d84n4xm4s7jfq397666vcyh5")))) |
| 29187 | (build-system python-build-system) |
| 29188 | (arguments |
| 29189 | '(#:phases |
| 29190 | (modify-phases %standard-phases |
| 29191 | (replace 'check |
| 29192 | (lambda* (#:key tests? #:allow-other-keys) |
| 29193 | (when tests? |
| 29194 | (invoke "nosetests" "-v"))))))) |
| 29195 | (native-inputs |
| 29196 | (list python-nose)) |
| 29197 | (propagated-inputs |
| 29198 | (list python-beautifulsoup4 python-lxml python-six)) |
| 29199 | (home-page "http://sites.google.com/site/ofxparse") |
| 29200 | (synopsis "Tools for working with the OFX (Open Financial Exchange) file |
| 29201 | format") |
| 29202 | (description "@code{ofxparse} is a parser for Open Financial |
| 29203 | Exchange (.ofx) format files. OFX files are available from almost any online |
| 29204 | banking site, so they work well if you want to pull together your finances |
| 29205 | from multiple sources. Online trading accounts also often provide account |
| 29206 | statements in OFX files.") |
| 29207 | (license license:expat))) |
| 29208 | |
| 29209 | (define-public python-rfc3339-validator |
| 29210 | (package |
| 29211 | (name "python-rfc3339-validator") |
| 29212 | (version "0.1.4") |
| 29213 | (source |
| 29214 | (origin |
| 29215 | (method url-fetch) |
| 29216 | (uri (pypi-uri "rfc3339_validator" version)) |
| 29217 | (sha256 |
| 29218 | (base32 "0srg0b89aikzinw72s433994k5gv5lfyarq1adhas11kz6yjm2hk")))) |
| 29219 | (build-system python-build-system) |
| 29220 | (native-inputs (list python-hypothesis |
| 29221 | python-pytest |
| 29222 | python-pytest-runner |
| 29223 | python-strict-rfc3339)) |
| 29224 | (propagated-inputs (list python-six)) |
| 29225 | (home-page "https://github.com/naimetti/rfc3339-validator") |
| 29226 | (synopsis "Python RFC3339 validator") |
| 29227 | (description "This package provides a pure Python RFC3339 validator.") |
| 29228 | (license license:expat))) |
| 29229 | |
| 29230 | (define-public python-strict-rfc3339 |
| 29231 | (package |
| 29232 | (name "python-strict-rfc3339") |
| 29233 | (version "0.7") |
| 29234 | (source |
| 29235 | (origin |
| 29236 | (method git-fetch) ;no tests in pypi release |
| 29237 | (uri (git-reference |
| 29238 | (url "https://github.com/danielrichman/strict-rfc3339") |
| 29239 | (commit (string-append "version-" version)))) |
| 29240 | (file-name (git-file-name name version)) |
| 29241 | (sha256 |
| 29242 | (base32 |
| 29243 | "0b12bh9v9gwkm89kxbidxw2z81lg8fx1v5fzgs313v1wgx6qb09p")))) |
| 29244 | (build-system python-build-system) |
| 29245 | (arguments |
| 29246 | (list |
| 29247 | #:phases |
| 29248 | #~(modify-phases %standard-phases |
| 29249 | (replace 'check |
| 29250 | (lambda* (#:key tests? #:allow-other-keys) |
| 29251 | (when tests? |
| 29252 | (invoke "pytest" "-vv" |
| 29253 | ;; The timestamp to local offset tests fail due to |
| 29254 | ;; missing timezone data (see: |
| 29255 | ;; https://github.com/danielrichman/strict-rfc3339/issues/9). |
| 29256 | "-k" "not LocalOffset"))))))) |
| 29257 | (native-inputs (list python-pytest)) |
| 29258 | (home-page "https://github.com/danielrichman/strict-rfc3339") |
| 29259 | (synopsis "RFC3339 procedures library") |
| 29260 | (description "The @code{strict_rfc3339} Python module provides strict, |
| 29261 | simple, lightweight RFC3339 procedures. It enables or aims to: |
| 29262 | @itemize |
| 29263 | @item Convert UNIX timestamps to and from RFC3339. |
| 29264 | @item Produce RFC3339 strings with a UTC offset (Z) or with the offset that |
| 29265 | the C time module reports is the local timezone offset. |
| 29266 | @item Be simple with minimal dependencies/libraries. |
| 29267 | @item Avoid timezones as much as possible. |
| 29268 | @item Be very strict and follow RFC3339. |
| 29269 | @end itemize") |
| 29270 | (license license:gpl3+))) |
| 29271 | |
| 29272 | (define-public python-stripe |
| 29273 | (package |
| 29274 | (name "python-stripe") |
| 29275 | (version "2.60.0") |
| 29276 | (source |
| 29277 | (origin |
| 29278 | (method url-fetch) |
| 29279 | (uri (pypi-uri "stripe" version)) |
| 29280 | (sha256 |
| 29281 | (base32 "0258lzh4qikhinfggnlfh5aklcvg7lrvl8giqrh0yf0l61wvfrl9")))) |
| 29282 | (build-system python-build-system) |
| 29283 | (arguments |
| 29284 | '(#:tests? #f)) ;; tests require network |
| 29285 | (propagated-inputs |
| 29286 | (list python-requests)) |
| 29287 | (home-page "https://github.com/stripe/stripe-python") |
| 29288 | (synopsis "Python bindings for the Stripe financial services' API") |
| 29289 | (description "This package provides access to the Stripe financial |
| 29290 | services' API. It includes a pre-defined set of classes for API resources |
| 29291 | that initialize themselves dynamically from API responses which makes it |
| 29292 | compatible with a wide range of versions of the Stripe API.") |
| 29293 | (license license:expat))) |
| 29294 | |
| 29295 | (define-public python-platformdirs |
| 29296 | (package |
| 29297 | (name "python-platformdirs") |
| 29298 | (version "2.4.1") |
| 29299 | (source |
| 29300 | (origin |
| 29301 | (method url-fetch) |
| 29302 | (uri (pypi-uri "platformdirs" version)) |
| 29303 | (sha256 |
| 29304 | (base32 "1njz0h4iky8iglrb85cd07hpa3lp1a2dfr934dj65hxwzvfk61j4")))) |
| 29305 | (build-system python-build-system) |
| 29306 | (arguments |
| 29307 | '(#:phases (modify-phases %standard-phases |
| 29308 | (replace 'check |
| 29309 | (lambda* (#:key tests? #:allow-other-keys) |
| 29310 | (when tests? |
| 29311 | (invoke "pytest" "-vv"))))))) |
| 29312 | (native-inputs |
| 29313 | (list python-appdirs python-pytest python-pytest-mock |
| 29314 | python-setuptools-scm)) |
| 29315 | (home-page "https://github.com/platformdirs/platformdirs") |
| 29316 | (synopsis "Determine the appropriate platform-specific directories") |
| 29317 | (description "When writing applications, finding the right location to |
| 29318 | store user data and configuration varies per platform. Even for |
| 29319 | single-platform apps, there may by plenty of nuances in figuring out the right |
| 29320 | location. This small Python module determines the appropriate |
| 29321 | platform-specific directories, e.g. the ``user data dir''.") |
| 29322 | (license license:expat))) |
| 29323 | |
| 29324 | (define-public python-json2html |
| 29325 | (package |
| 29326 | (name "python-json2html") |
| 29327 | (version "1.3.0") |
| 29328 | (source |
| 29329 | ;; There are no tests in the PyPI tarball. |
| 29330 | (origin |
| 29331 | (method git-fetch) |
| 29332 | (uri (git-reference |
| 29333 | (url "https://github.com/softvar/json2html") |
| 29334 | (commit (string-append "v" version)))) |
| 29335 | (file-name (git-file-name name version)) |
| 29336 | (sha256 |
| 29337 | (base32 "1ncypljnl5y8lsxy6ibcqy412kx3mzxl4ajg67568hvq98kv1sb3")))) |
| 29338 | (build-system python-build-system) |
| 29339 | (arguments |
| 29340 | '(#:phases |
| 29341 | (modify-phases %standard-phases |
| 29342 | (replace 'check |
| 29343 | (lambda* (#:key tests? inputs outputs #:allow-other-keys) |
| 29344 | (when tests? |
| 29345 | (add-installed-pythonpath inputs outputs) |
| 29346 | (invoke "python" "test/run_tests.py"))))))) |
| 29347 | (home-page "https://github.com/softvar/json2html") |
| 29348 | (synopsis "Convert JSON to HTML table") |
| 29349 | (description "@code{python-json2html} is a python module to convert JSON |
| 29350 | into a human readable HTML table representation.") |
| 29351 | (license license:expat))) |
| 29352 | |
| 29353 | (define-public python-face |
| 29354 | (package |
| 29355 | (name "python-face") |
| 29356 | (version "20.1.1") |
| 29357 | (source |
| 29358 | (origin |
| 29359 | (method url-fetch) |
| 29360 | (uri (pypi-uri "face" version)) |
| 29361 | (sha256 |
| 29362 | (base32 "0gpd9f0rmbv3rd2szi2na37l29fabkwazikjrxc6wca1lddwlnbx")))) |
| 29363 | (build-system python-build-system) |
| 29364 | (arguments |
| 29365 | '(#:phases |
| 29366 | (modify-phases %standard-phases |
| 29367 | (replace 'check |
| 29368 | (lambda* (#:key tests? inputs outputs #:allow-other-keys) |
| 29369 | (when tests? |
| 29370 | ;; Make installed package available for running the tests. |
| 29371 | (add-installed-pythonpath inputs outputs) |
| 29372 | (invoke "pytest" "-v"))))))) |
| 29373 | (native-inputs |
| 29374 | (list python-pytest)) |
| 29375 | (propagated-inputs |
| 29376 | (list python-boltons)) |
| 29377 | (home-page "https://github.com/mahmoud/face") |
| 29378 | (synopsis "CLI parsing and dispatching microframework") |
| 29379 | (description "@code{python-face} is a Pythonic microframework for building |
| 29380 | command-line applications. |
| 29381 | |
| 29382 | @itemize |
| 29383 | @item First-class subcommand support |
| 29384 | @item Powerful middleware architecture |
| 29385 | @item Separate parser layer |
| 29386 | @item Built-in flagfile support |
| 29387 | @item Handy testing utilities |
| 29388 | @item Themeable help display |
| 29389 | @end itemize") |
| 29390 | (license license:bsd-3))) |
| 29391 | |
| 29392 | (define-public python-glom |
| 29393 | (package |
| 29394 | (name "python-glom") |
| 29395 | (version "20.11.0") |
| 29396 | (source |
| 29397 | (origin |
| 29398 | (method url-fetch) |
| 29399 | (uri (pypi-uri "glom" version)) |
| 29400 | (sha256 |
| 29401 | (base32 "04pba09vdr3qjvqvy14g60fscdsi35chbbyqpczdp76cpir101al")))) |
| 29402 | (build-system python-build-system) |
| 29403 | (arguments |
| 29404 | '(#:phases |
| 29405 | (modify-phases %standard-phases |
| 29406 | (replace 'check |
| 29407 | (lambda* (#:key tests? inputs outputs #:allow-other-keys) |
| 29408 | (when tests? |
| 29409 | ;; Make installed executable available for running the tests. |
| 29410 | (setenv "PATH" |
| 29411 | (string-append (assoc-ref outputs "out") "/bin" |
| 29412 | ":" (getenv "PATH"))) |
| 29413 | (invoke "pytest" "-v"))))))) |
| 29414 | (native-inputs |
| 29415 | (list python-pytest python-pyyaml)) |
| 29416 | (propagated-inputs |
| 29417 | (list python-attrs python-boltons python-face)) |
| 29418 | (home-page "https://github.com/mahmoud/glom") |
| 29419 | (synopsis "Declaratively restructure data") |
| 29420 | (description "Real applications have real data, and real data |
| 29421 | nests---objects inside of objects inside of lists of objects. glom is a new |
| 29422 | and powerful way to handle real-world data, featuring: |
| 29423 | |
| 29424 | @itemize |
| 29425 | @item Path-based access to nested data structures |
| 29426 | @item Readable, meaningful error messages |
| 29427 | @item Declarative data transformation, using lightweight, Pythonic specifications |
| 29428 | @item Built-in data exploration and debugging features |
| 29429 | @end itemize") |
| 29430 | (license license:bsd-3))) |
| 29431 | |
| 29432 | (define-public python-box |
| 29433 | (package |
| 29434 | (name "python-box") |
| 29435 | (version "5.3.0") |
| 29436 | (source |
| 29437 | (origin |
| 29438 | (method url-fetch) |
| 29439 | (uri (pypi-uri "python-box" version)) |
| 29440 | (sha256 |
| 29441 | (base32 |
| 29442 | "0jhrdif57khx2hsw1q6a9x42knwcvq8ijgqyq1jmll6y6ifyzm2f")))) |
| 29443 | (build-system python-build-system) |
| 29444 | (propagated-inputs |
| 29445 | (list python-msgpack python-ruamel.yaml python-toml)) |
| 29446 | (home-page "https://github.com/cdgriffith/Box") |
| 29447 | (synopsis "Advanced Python dictionaries with dot notation access") |
| 29448 | (description |
| 29449 | "This package provides the @code{python-box} Python module. |
| 29450 | It implements advanced Python dictionaries with dot notation access.") |
| 29451 | (license license:expat))) |
| 29452 | |
| 29453 | (define-public python-fields |
| 29454 | (package |
| 29455 | (name "python-fields") |
| 29456 | (version "5.0.0") |
| 29457 | (source |
| 29458 | (origin |
| 29459 | (method url-fetch) |
| 29460 | (uri (pypi-uri "fields" version)) |
| 29461 | (sha256 |
| 29462 | (base32 "09sppvhhkhkv9zc9g994m53z15v92csxwcf42ggkaknlv01smm1i")))) |
| 29463 | (build-system python-build-system) |
| 29464 | (home-page "https://python-fields.readthedocs.io/") |
| 29465 | (synopsis "Python container class boilerplate killer") |
| 29466 | (description "Avoid repetetive boilerplate code in Python classes.") |
| 29467 | (license license:bsd-3))) |
| 29468 | |
| 29469 | (define-public python-aspectlib |
| 29470 | (package |
| 29471 | (name "python-aspectlib") |
| 29472 | (version "1.5.2") |
| 29473 | (source |
| 29474 | (origin |
| 29475 | (method url-fetch) |
| 29476 | (uri (pypi-uri "aspectlib" version)) |
| 29477 | (sha256 |
| 29478 | (base32 "1am4ycf292zbmgz791z393v63w7qrynf8q5p9db2wwf2qj1fqxfj")))) |
| 29479 | (build-system python-build-system) |
| 29480 | (propagated-inputs (list python-fields)) |
| 29481 | (home-page "https://github.com/ionelmc/python-aspectlib") |
| 29482 | (synopsis |
| 29483 | "Python monkey-patching and decorators") |
| 29484 | (description |
| 29485 | "This package provides an aspect-oriented programming, monkey-patch |
| 29486 | and decorators library. It is useful when changing behavior in existing |
| 29487 | code is desired. It includes tools for debugging and testing: |
| 29488 | simple mock/record and a complete capture/replay framework.") |
| 29489 | (license license:bsd-2))) |
| 29490 | |
| 29491 | (define-public python-ijson |
| 29492 | (package |
| 29493 | (name "python-ijson") |
| 29494 | (version "3.1.4") |
| 29495 | (source |
| 29496 | (origin |
| 29497 | (method url-fetch) |
| 29498 | (uri (pypi-uri "ijson" version)) |
| 29499 | (sha256 |
| 29500 | (base32 "1sp463ywj4jv5cp6hsv2qwiima30d09xsabxb2dyq5b17jp0640x")))) |
| 29501 | (arguments |
| 29502 | `(#:phases |
| 29503 | (modify-phases %standard-phases |
| 29504 | ;; the tests run by the default setup.py require yajl 1.x, |
| 29505 | ;; but we have 2.x. yajl 1.x support is going to be removed |
| 29506 | ;; anyway, so use pytest to avoid running the yajl1-related |
| 29507 | ;; tests. See: https://github.com/ICRAR/ijson/issues/55 |
| 29508 | (replace 'check |
| 29509 | (lambda* (#:key tests? #:allow-other-keys) |
| 29510 | (when tests? |
| 29511 | (invoke "pytest" "-vv"))))))) |
| 29512 | (inputs |
| 29513 | ;; libyajl is optional, but compiling with it makes faster |
| 29514 | ;; backends available to ijson: |
| 29515 | (list libyajl)) |
| 29516 | (native-inputs |
| 29517 | (list python-pytest)) |
| 29518 | (build-system python-build-system) |
| 29519 | (home-page "https://github.com/ICRAR/ijson") |
| 29520 | (synopsis "Iterative JSON parser with Python iterator interfaces") |
| 29521 | (description |
| 29522 | "Ijson is an iterative JSON parser with standard Python iterator |
| 29523 | interfaces.") |
| 29524 | (license license:bsd-3))) |
| 29525 | |
| 29526 | (define-public python-ordered-set |
| 29527 | (package |
| 29528 | (name "python-ordered-set") |
| 29529 | (version "4.1.0") |
| 29530 | (source |
| 29531 | (origin |
| 29532 | (method url-fetch) |
| 29533 | (uri (pypi-uri "ordered-set" version)) |
| 29534 | (sha256 |
| 29535 | (base32 "1a34fg3r3480nfm6652kyqql3lwixf8jirzdja9camvnr128wjk9")))) |
| 29536 | (build-system python-build-system) |
| 29537 | (arguments |
| 29538 | (list #:phases |
| 29539 | #~(modify-phases %standard-phases |
| 29540 | (replace 'check |
| 29541 | (lambda* (#:key tests? #:allow-other-keys) |
| 29542 | (when tests? |
| 29543 | (invoke "pytest" "-vv"))))))) |
| 29544 | (native-inputs (list python-cython python-pytest)) |
| 29545 | (home-page "https://github.com/simonpercivall/orderedset") |
| 29546 | (synopsis "Ordered Set implementation in Cython") |
| 29547 | (description "This library provides an @code{OrderedSet} data type that |
| 29548 | works like a regular set, but remembers insertion order. It supports the full |
| 29549 | Python @code{set} interface.") |
| 29550 | (license license:asl2.0))) |
| 29551 | |
| 29552 | (define-public python-orgparse |
| 29553 | (package |
| 29554 | (name "python-orgparse") |
| 29555 | (version "0.3.0") |
| 29556 | (source |
| 29557 | (origin |
| 29558 | (method url-fetch) |
| 29559 | (uri (pypi-uri "orgparse" version)) |
| 29560 | (sha256 |
| 29561 | (base32 "14iv4pg3rma9560plg0w943x04mr2cmrssda43y2d1x9acrd2n71")))) |
| 29562 | (build-system python-build-system) |
| 29563 | (arguments |
| 29564 | `(#:phases |
| 29565 | (modify-phases %standard-phases |
| 29566 | (replace 'check |
| 29567 | (lambda* (#:key tests? #:allow-other-keys) |
| 29568 | (when tests? |
| 29569 | (invoke "pytest" "-vv" "orgparse/tests"))))))) |
| 29570 | (native-inputs |
| 29571 | (list python-pytest python-setuptools-scm)) |
| 29572 | (home-page "https://github.com/karlicoss/orgparse") |
| 29573 | (synopsis "Emacs Org mode parser in Python") |
| 29574 | (description |
| 29575 | "This package is a Python module for reading Emacs Org mode files.") |
| 29576 | (license license:bsd-3))) |
| 29577 | |
| 29578 | (define-public dynaconf |
| 29579 | (package |
| 29580 | (name "dynaconf") |
| 29581 | (version "3.1.7") |
| 29582 | (source |
| 29583 | (origin |
| 29584 | (method git-fetch) |
| 29585 | (uri |
| 29586 | (git-reference |
| 29587 | (url "https://github.com/rochacbruno/dynaconf") |
| 29588 | (commit version))) |
| 29589 | (file-name (git-file-name name version)) |
| 29590 | (sha256 |
| 29591 | (base32 |
| 29592 | "0pjyjsdzairpn5vq8nzddhxwxmr18grn272nj31wcy2ipwdl3c3h")) |
| 29593 | (patches (search-patches "dynaconf-unvendor-deps.patch")) |
| 29594 | (modules '((guix build utils))) |
| 29595 | (snippet '(begin |
| 29596 | ;; Remove vendored dependencies |
| 29597 | (let ((unvendor '("click" "dotenv" "ruamel" "toml"))) |
| 29598 | (with-directory-excursion "dynaconf/vendor" |
| 29599 | (for-each delete-file-recursively unvendor)) |
| 29600 | (with-directory-excursion "dynaconf/vendor_src" |
| 29601 | (for-each delete-file-recursively unvendor))))))) |
| 29602 | (build-system python-build-system) |
| 29603 | (arguments |
| 29604 | `(#:phases |
| 29605 | (modify-phases %standard-phases |
| 29606 | (add-after 'unpack 'patch-for-click-8 |
| 29607 | (lambda _ |
| 29608 | (substitute* "dynaconf/cli.py" |
| 29609 | (("click.get_os_args\\()") ;deprecated from Click 8.1+ |
| 29610 | "sys.argv[1:]")))) |
| 29611 | (replace 'check |
| 29612 | (lambda* (#:key tests? outputs #:allow-other-keys) |
| 29613 | (when tests? |
| 29614 | ;; These tests depend on hvac and a live Vault process. |
| 29615 | (delete-file "tests/test_vault.py") |
| 29616 | (invoke "make" "test_only"))))))) |
| 29617 | (propagated-inputs |
| 29618 | (list python-click python-configobj python-dotenv-0.13.0 |
| 29619 | python-ruamel.yaml python-toml)) |
| 29620 | (native-inputs |
| 29621 | (list python-django python-flask python-pytest python-pytest-cov |
| 29622 | python-pytest-mock)) |
| 29623 | (home-page "https://www.dynaconf.com/") |
| 29624 | (synopsis "The dynamic configurator for your Python project") |
| 29625 | (description |
| 29626 | "This package provides @code{dynaconf} the dynamic configurator manager for |
| 29627 | your Python project. It provides features such as: |
| 29628 | |
| 29629 | @itemize |
| 29630 | @item Inspired by the @url{https://12factor.net/config, 12-factor application guide}; |
| 29631 | @item Settings management (default values, validation, parsing, templating); |
| 29632 | @item Protection of sensitive information (passwords/tokens); |
| 29633 | @item Multiple file formats @code{toml|yaml|json|ini|py} and also customizable |
| 29634 | loaders; |
| 29635 | @item Full support for environment variables to override existing settings |
| 29636 | (dotenv support included); |
| 29637 | @item Optional layered system for multiple environments @code{[default, |
| 29638 | development, testing, production]}; |
| 29639 | @item Built-in support for Hashicorp Vault and Redis as settings and secrets storage; |
| 29640 | @item Built-in extensions for Django and Flask web frameworks; |
| 29641 | @item CLI for common operations such as @code{init, list, write, validate, export}. |
| 29642 | @end itemize") |
| 29643 | (license license:expat))) |
| 29644 | |
| 29645 | (define-public python-pudb |
| 29646 | (package |
| 29647 | (name "python-pudb") |
| 29648 | (version "2022.1.3") |
| 29649 | (source (origin |
| 29650 | (method url-fetch) |
| 29651 | (uri (pypi-uri "pudb" version)) |
| 29652 | (sha256 |
| 29653 | (base32 |
| 29654 | "0jk61qgacvwy6zkz1f55jawax4ggb1aawy6w3wnfkzqrkvd3ms2q")))) |
| 29655 | (build-system python-build-system) |
| 29656 | (arguments |
| 29657 | `(#:phases (modify-phases %standard-phases |
| 29658 | (add-before 'check 'fix-read-only-home |
| 29659 | (lambda _ |
| 29660 | (setenv "HOME" "/tmp"))) |
| 29661 | (replace 'check |
| 29662 | (lambda* (#:key tests? #:allow-other-keys) |
| 29663 | (when tests? |
| 29664 | (invoke "pytest" "-vv"))))))) |
| 29665 | (native-inputs (list python-pytest python-pytest-mock python-numpy)) |
| 29666 | (propagated-inputs (list python-jedi python-pygments python-urwid |
| 29667 | python-urwid-readline)) |
| 29668 | (home-page "https://documen.tician.de/pudb/") |
| 29669 | (synopsis "Console-based Python debugger") |
| 29670 | (description |
| 29671 | "@command{pudb} is a full-screen, console-based Python debugger providing |
| 29672 | all the niceties of modern GUI-based debuggers in a more lightweight and |
| 29673 | keyboard-friendly package.") |
| 29674 | (license license:expat))) |
| 29675 | |
| 29676 | (define-public pudb |
| 29677 | (deprecated-package "pudb" python-pudb)) |
| 29678 | |
| 29679 | (define-public python-iwlib |
| 29680 | (package |
| 29681 | (name "python-iwlib") |
| 29682 | (version "1.7.0") |
| 29683 | (source |
| 29684 | (origin |
| 29685 | (method url-fetch) |
| 29686 | (uri (pypi-uri "iwlib" version)) |
| 29687 | (sha256 |
| 29688 | (base32 "18bd35wn7zclalpqbry42pf7bjrdggxkkw58mc0k1vkhg9czc1d8")))) |
| 29689 | (build-system python-build-system) |
| 29690 | (inputs |
| 29691 | (list wireless-tools)) |
| 29692 | (propagated-inputs (list python-cffi)) |
| 29693 | (home-page "https://github.com/nhoad/python-iwlib") |
| 29694 | (synopsis "Python module to interface with iwlib") |
| 29695 | (description |
| 29696 | "This package provides a Python interface to iw wireless tools.") |
| 29697 | (license license:gpl2))) |
| 29698 | |
| 29699 | (define-public python-pdoc3 |
| 29700 | (package |
| 29701 | (name "python-pdoc3") |
| 29702 | (version "0.10.0") |
| 29703 | (source |
| 29704 | (origin |
| 29705 | (method url-fetch) |
| 29706 | (uri (pypi-uri "pdoc3" version)) |
| 29707 | (sha256 |
| 29708 | (base32 "1dz4hw10ngidzg9cjvflc8nlrwrjbb3ijhmaw4w6f039p6yff8jz")) |
| 29709 | (patches |
| 29710 | (search-patches "python-pdoc3-tests.patch")))) |
| 29711 | (build-system python-build-system) |
| 29712 | (native-inputs |
| 29713 | (list python-setuptools-git python-setuptools-scm)) |
| 29714 | (propagated-inputs (list python-mako python-markdown)) |
| 29715 | (home-page "https://pdoc3.github.io/pdoc/") |
| 29716 | (synopsis "Auto-generate API documentation for Python projects") |
| 29717 | (description |
| 29718 | "This package auto-generates API documentation from Python projects |
| 29719 | already existing modules and objects docstrings.") |
| 29720 | (license license:agpl3+))) |
| 29721 | |
| 29722 | (define-public python-piexif |
| 29723 | (package |
| 29724 | (name "python-piexif") |
| 29725 | (version "1.1.3") |
| 29726 | (source |
| 29727 | (origin |
| 29728 | (method url-fetch) |
| 29729 | (uri (pypi-uri "piexif" version ".zip")) |
| 29730 | (sha256 |
| 29731 | (base32 "06sz58q4mrw472p8fbnq7wsj8zpi5js5r8phm2hiwfmz0v33bjw3")) |
| 29732 | (patches |
| 29733 | (search-patches "python-piexif-fix-tests-with-pillow-7.2.patch")))) |
| 29734 | (build-system python-build-system) |
| 29735 | (native-inputs |
| 29736 | (list unzip python-pillow)) |
| 29737 | (home-page "https://github.com/hMatoba/Piexif") |
| 29738 | (synopsis "Simplify exif manipulations with Python") |
| 29739 | (description "Piexif simplifies interacting with EXIF data in |
| 29740 | Python. It includes the tools necessary for extracting, creating, |
| 29741 | manipulating, converting and writing EXIF data to JPEG, WebP and TIFF files.") |
| 29742 | (license license:expat))) |
| 29743 | |
| 29744 | (define-public python-pyrss2gen |
| 29745 | (package |
| 29746 | (name "python-pyrss2gen") |
| 29747 | (version "1.1") |
| 29748 | (source |
| 29749 | (origin |
| 29750 | (method url-fetch) |
| 29751 | (uri (pypi-uri "PyRSS2Gen" version)) |
| 29752 | (sha256 |
| 29753 | (base32 "1rvf5jw9hknqz02rp1vg8abgb1lpa0bc65l7ylmlillqx7bswq3r")))) |
| 29754 | (build-system python-build-system) |
| 29755 | (home-page "http://dalkescientific.com/Python/PyRSS2Gen.html") |
| 29756 | (synopsis "Generate RSS 2.0 feeds using a Python data structure") |
| 29757 | (description "PyRSS2Gen is the interface to generate RSS 2.0 feeds. |
| 29758 | PyRSS2Gen builds the feed up by using a XML generator.") |
| 29759 | (license license:bsd-3))) |
| 29760 | |
| 29761 | (define-public python-yapsy |
| 29762 | (package |
| 29763 | (name "python-yapsy") |
| 29764 | (version "1.12.2") |
| 29765 | (source |
| 29766 | (origin |
| 29767 | (method url-fetch) |
| 29768 | (uri (pypi-uri "Yapsy" version)) |
| 29769 | (sha256 |
| 29770 | (base32 "12rznbnswfw0w7qfbvmmffr9r317gl1rqg36nijwzsklkjgks4fq")))) |
| 29771 | (build-system python-build-system) |
| 29772 | (home-page "http://yapsy.sourceforge.net") |
| 29773 | (synopsis "Simple plugin system for Python applications") |
| 29774 | (description "Yapsy, or Yet Another Plugin SYstem, is a small library |
| 29775 | implementing the core mechanisms needed to build a plugin system into a wider |
| 29776 | application. |
| 29777 | |
| 29778 | The main purpose is to depend only on Python's standard libraries and to |
| 29779 | implement only the basic functionalities needed to detect, load and keep track |
| 29780 | of several plugins.") |
| 29781 | (license license:bsd-3))) |
| 29782 | |
| 29783 | (define-public python-doit |
| 29784 | (package |
| 29785 | (name "python-doit") |
| 29786 | (version "0.34.0") |
| 29787 | (source |
| 29788 | (origin |
| 29789 | (method url-fetch) |
| 29790 | (uri (pypi-uri "doit" version)) |
| 29791 | (sha256 |
| 29792 | (base32 "0bf0m9n0hyjvjpv051zd26725j8jr23gyvc37v3kkadwbh8dxwcf")))) |
| 29793 | (build-system python-build-system) |
| 29794 | (propagated-inputs |
| 29795 | (list python-cloudpickle python-pyinotify)) |
| 29796 | (native-inputs |
| 29797 | (list python-pytest)) |
| 29798 | (home-page "https://pydoit.org") |
| 29799 | (synopsis "Automation tool to execute any kind of task in a build-tools |
| 29800 | fashion") |
| 29801 | (description "doit is an automation tool that brings the power of |
| 29802 | build-tools to execute any kind of task. |
| 29803 | |
| 29804 | A task describes some computation to be done (actions), and contains some |
| 29805 | extra meta-data. The actions can be external programs or Python functions. A |
| 29806 | single task may define more than one action.doit uses the task’s meta-data |
| 29807 | to: |
| 29808 | |
| 29809 | @itemize |
| 29810 | @item cache task results |
| 29811 | @item correct execution order |
| 29812 | @item parallel execution |
| 29813 | @item powerful dependency system |
| 29814 | @end itemize") |
| 29815 | (license license:expat))) |
| 29816 | |
| 29817 | (define-public python-phpserialize |
| 29818 | (package |
| 29819 | (name "python-phpserialize") |
| 29820 | (version "1.3") |
| 29821 | (source |
| 29822 | (origin |
| 29823 | (method url-fetch) |
| 29824 | (uri (pypi-uri "phpserialize" version)) |
| 29825 | (sha256 |
| 29826 | (base32 "19qgkb9z4zjbjxlpwh2w6pxkz2j3iymnydi69jl0jg905lqjsrxz")))) |
| 29827 | (build-system python-build-system) |
| 29828 | (arguments |
| 29829 | (list |
| 29830 | ;; tests missing in pypi archive, anhow they are quite simple and not worth any hassle |
| 29831 | #:tests? #f)) |
| 29832 | (home-page "http://github.com/mitsuhiko/phpserialize") |
| 29833 | (synopsis "Python port of the serialize and unserialize functions of PHP") |
| 29834 | (description |
| 29835 | "This package provides a port of the serialize and unserialize functions of PHP for Python") |
| 29836 | (license license:bsd-3))) |
| 29837 | |
| 29838 | (define-public nikola |
| 29839 | (package |
| 29840 | (name "nikola") |
| 29841 | (version "8.2.2") |
| 29842 | (source |
| 29843 | (origin |
| 29844 | (method url-fetch) |
| 29845 | (uri (pypi-uri "Nikola" version)) |
| 29846 | (sha256 |
| 29847 | (base32 "1h96y4sfypp2fbqxa8xrqch5f7r3srm2ly222k9w2n143h2spx4m")))) |
| 29848 | (build-system python-build-system) |
| 29849 | (propagated-inputs |
| 29850 | (list python-babel |
| 29851 | python-blinker |
| 29852 | python-dateutil |
| 29853 | python-docutils |
| 29854 | python-doit |
| 29855 | python-jinja2 ;; for themes |
| 29856 | python-lxml |
| 29857 | python-mako |
| 29858 | python-markdown |
| 29859 | python-natsort |
| 29860 | python-notebook ;; for ipynb |
| 29861 | python-phpserialize ;; for wordpress import |
| 29862 | python-piexif |
| 29863 | python-pillow |
| 29864 | python-pygments |
| 29865 | python-pyrss2gen |
| 29866 | python-requests |
| 29867 | python-ruamel.yaml ;; for YAML metadata |
| 29868 | python-unidecode |
| 29869 | python-yapsy)) |
| 29870 | (native-inputs |
| 29871 | (list python-coverage |
| 29872 | python-flake8 |
| 29873 | python-freezegun |
| 29874 | python-pytest |
| 29875 | python-pytest-cov)) |
| 29876 | (arguments |
| 29877 | (list |
| 29878 | #:phases |
| 29879 | #~(modify-phases %standard-phases |
| 29880 | (replace 'check |
| 29881 | (lambda* (#:key tests? #:allow-other-keys) |
| 29882 | (when tests? |
| 29883 | (invoke "pytest" "tests" "--no-cov" |
| 29884 | "-k" "not test_compiling_markdown[hilite]"))))))) |
| 29885 | (home-page "https://getnikola.com/") |
| 29886 | (synopsis "Modular, fast and simple static website and blog generator") |
| 29887 | (description "Nikola generates static websites and blogs. Out of the box, |
| 29888 | it supports reStructuredText, Markdown, IPython (Jupyter) Notebooks and HTML, |
| 29889 | and has plugins for many other formats.") |
| 29890 | (license license:expat))) |
| 29891 | |
| 29892 | (define-public nbss-upload |
| 29893 | (package |
| 29894 | (name "nbss-upload") |
| 29895 | (version "0.1") |
| 29896 | (source |
| 29897 | (origin |
| 29898 | (method url-fetch) |
| 29899 | (uri (pypi-uri "nbss-upload" version)) |
| 29900 | (sha256 |
| 29901 | (base32 "0jhyfm7w2ssknmh9789fmpnf79xr7sxbdcjwak6hfha6qparvk38")))) |
| 29902 | (build-system python-build-system) |
| 29903 | (propagated-inputs |
| 29904 | (list python-requests)) |
| 29905 | (arguments |
| 29906 | `(#:tests? #f)) ;no tests |
| 29907 | (home-page "https://github.com/notebook-sharing-space/nbss-upload") |
| 29908 | (synopsis "Upload notebooks to a notebooksharing.space instance") |
| 29909 | (description |
| 29910 | "Upload notebooks as @code{.ipynb}, @code{.rmd}, and @code{.html} to a |
| 29911 | notebooksharing.space instance.") |
| 29912 | (license license:bsd-3))) |
| 29913 | |
| 29914 | (define-public python-reedsolo |
| 29915 | (package |
| 29916 | (name "python-reedsolo") |
| 29917 | (version "1.5.4") |
| 29918 | (source |
| 29919 | (origin |
| 29920 | (method url-fetch) |
| 29921 | (uri (pypi-uri "reedsolo" version)) |
| 29922 | (sha256 |
| 29923 | (base32 "09q15ji9iac3nmmxrcdvz8ynldvvqanqy3hs6q3cp327hgf5rcmq")))) |
| 29924 | (build-system python-build-system) |
| 29925 | (home-page "https://github.com/tomerfiliba/reedsolomon") |
| 29926 | (synopsis "Pure-Python Reed Solomon encoder/decoder") |
| 29927 | (description "A pure-python universal errors-and-erasures Reed-Solomon |
| 29928 | Codec, based on the tutorial at Wikiversity. This is a burst-type |
| 29929 | implementation, so that it supports any Galois field higher than 2^3, |
| 29930 | but not binary streams.") |
| 29931 | (license license:public-domain))) |
| 29932 | |
| 29933 | (define-public python-esprima |
| 29934 | (package |
| 29935 | (name "python-esprima") |
| 29936 | (version "4.0.1") |
| 29937 | (source |
| 29938 | (origin |
| 29939 | (method url-fetch) |
| 29940 | (uri (pypi-uri "esprima" version)) |
| 29941 | (sha256 |
| 29942 | (base32 "1vi32g991lxcxzmncfiszh8m9bwkh4887szskkdi0a9wdn3imnq8")))) |
| 29943 | (build-system python-build-system) |
| 29944 | (home-page "https://github.com/Kronuz/esprima-python") |
| 29945 | (synopsis |
| 29946 | "ECMAScript parsing infrastructure for analysis in Python") |
| 29947 | (description |
| 29948 | "This package provides ECMAScript parsing infrastructure for |
| 29949 | multipurpose analysis in Python.") |
| 29950 | (license license:bsd-3))) |
| 29951 | |
| 29952 | (define-public python-types-dataclasses |
| 29953 | (package |
| 29954 | (name "python-types-dataclasses") |
| 29955 | (version "0.6.1") |
| 29956 | (source (origin |
| 29957 | (method url-fetch) |
| 29958 | (uri (pypi-uri "types-dataclasses" version)) |
| 29959 | (sha256 |
| 29960 | (base32 |
| 29961 | "1mq6qd365m8ml889zl5dxj9kncjv71iq1d1fvgj59y0ixlpm6s35")))) |
| 29962 | (build-system python-build-system) |
| 29963 | (home-page "https://github.com/python/typeshed") |
| 29964 | (synopsis "Typing stubs for dataclasses") |
| 29965 | (description |
| 29966 | "This package provides a collection of library stubs for Python, with |
| 29967 | static types.") |
| 29968 | (license license:asl2.0))) |
| 29969 | |
| 29970 | (define-public python-types-docutils |
| 29971 | (package |
| 29972 | (name "python-types-docutils") |
| 29973 | (version "0.18.2") |
| 29974 | (source |
| 29975 | (origin |
| 29976 | (method url-fetch) |
| 29977 | (uri (pypi-uri "types-docutils" version)) |
| 29978 | (sha256 |
| 29979 | (base32 "14ypv0x6fk1pjw0bvvr1lkb2g6dvq2pwvbd5b5pzjl6182fhmaim")))) |
| 29980 | (build-system python-build-system) |
| 29981 | (home-page "https://github.com/python/typeshed") |
| 29982 | (synopsis "Typing stubs for docutils") |
| 29983 | (description "This package provides a collection of library stubs for |
| 29984 | Python, with static types.") |
| 29985 | (license license:asl2.0))) |
| 29986 | |
| 29987 | (define-public python-psycopg2-binary |
| 29988 | (package |
| 29989 | (name "python-psycopg2-binary") |
| 29990 | (version "2.9.3") |
| 29991 | (source (origin |
| 29992 | (method url-fetch) |
| 29993 | (uri (pypi-uri "psycopg2-binary" version)) |
| 29994 | (sha256 |
| 29995 | (base32 |
| 29996 | "0kpaxg3lg5wg5ww5kxmzi2z2d7arsx13ci915d8a2pf17lqza7bn")))) |
| 29997 | (build-system python-build-system) |
| 29998 | (inputs (list postgresql)) |
| 29999 | (arguments |
| 30000 | ;; Tests are disable because they need a live instance of PostgreSQL. |
| 30001 | '(#:tests? #f)) |
| 30002 | (home-page "https://psycopg.org/") |
| 30003 | (synopsis "PostgreSQL database adapter for Python") |
| 30004 | (description |
| 30005 | "Psycopg is a PostgreSQL database adapter for the Python programming |
| 30006 | language. Its main features are the complete implementation of the Python DB |
| 30007 | API 2.0 specification and the thread safety (several threads can share the |
| 30008 | same connection). It was designed for heavily multi-threaded applications |
| 30009 | that create and destroy lots of cursors and make a large number of concurrent |
| 30010 | @code{INSERT}s or @code{UPDATE}s. |
| 30011 | |
| 30012 | Psycopg 2 is mostly implemented in C as a libpq wrapper, resulting in |
| 30013 | being both efficient and secure. It features client-side and |
| 30014 | server-side cursors, asynchronous communication and notifications, |
| 30015 | @code{COPY TO}/@code{COPY FROM} support. Many Python types are supported |
| 30016 | out-of-the-box and adapted to matching PostgreSQL data types; |
| 30017 | adaptation can be extended and customized thanks to a flexible objects |
| 30018 | adaptation system. |
| 30019 | |
| 30020 | Psycopg 2 is both Unicode and Python 3 friendly.") |
| 30021 | (license license:lgpl3+))) |
| 30022 | |
| 30023 | (define-public python-pyfuse3 |
| 30024 | (package |
| 30025 | (name "python-pyfuse3") |
| 30026 | (version "3.2.1") |
| 30027 | (source |
| 30028 | (origin |
| 30029 | (method url-fetch) |
| 30030 | (uri (pypi-uri "pyfuse3" version)) |
| 30031 | (sha256 |
| 30032 | (base32 "0cvybynv9igssfa4l13q09gb6m7afmwk34wsbq8jk14sqpd4dl92")))) |
| 30033 | (build-system python-build-system) |
| 30034 | (native-inputs (list pkg-config)) |
| 30035 | (inputs (list fuse-3)) |
| 30036 | (propagated-inputs (list python-pytest-trio)) |
| 30037 | (home-page "https://github.com/libfuse/pyfuse3") |
| 30038 | (synopsis "Python bindings FUSE 3") |
| 30039 | (description "This package provides Python 3 bindings for libfuse 3 with |
| 30040 | async I/O support.") |
| 30041 | (license license:gpl2+))) |
| 30042 | |
| 30043 | (define-public python-ansicolors |
| 30044 | (package |
| 30045 | (name "python-ansicolors") |
| 30046 | (version "1.1.8") |
| 30047 | (source |
| 30048 | (origin |
| 30049 | (method url-fetch) |
| 30050 | (uri (pypi-uri "ansicolors" version ".zip")) |
| 30051 | (sha256 |
| 30052 | (base32 "1q3jqglkq4z0f6nkkn8bswcwqg012i2grrc27kabr8286dg4zycr")))) |
| 30053 | (build-system python-build-system) |
| 30054 | (native-inputs |
| 30055 | (list python-tox |
| 30056 | python-pytest-cov |
| 30057 | unzip)) |
| 30058 | (home-page "https://github.com/jonathaneunice/colors/") |
| 30059 | (synopsis "ANSI colors for Python") |
| 30060 | (description |
| 30061 | "This package adds ANSI colors and decorations to your strings.") |
| 30062 | (license license:isc))) |
| 30063 | |
| 30064 | (define-public python-types-freezegun |
| 30065 | (package |
| 30066 | (name "python-types-freezegun") |
| 30067 | (version "1.1.8") |
| 30068 | (source |
| 30069 | (origin |
| 30070 | (method url-fetch) |
| 30071 | (uri (pypi-uri "types-freezegun" version)) |
| 30072 | (sha256 |
| 30073 | (base32 "08g926s8343zwq140zcfwly3qfgmahm7lp0vgb3ics549b2hifzl")))) |
| 30074 | (build-system python-build-system) |
| 30075 | (home-page "https://github.com/python/typeshed") |
| 30076 | (synopsis "Typing stubs for @code{freezegun}") |
| 30077 | (description "This package contains typing stubs for for @code{freezegun}, a |
| 30078 | very small subset the Python stubs contained in the complete @code{typeshed} |
| 30079 | collection.") |
| 30080 | (license license:asl2.0))) |
| 30081 | |
| 30082 | (define-public python-types-protobuf |
| 30083 | (package |
| 30084 | (name "python-types-protobuf") |
| 30085 | (version "3.20.1") |
| 30086 | (source (origin |
| 30087 | (method url-fetch) |
| 30088 | (uri (pypi-uri "types-protobuf" version)) |
| 30089 | (sha256 |
| 30090 | (base32 |
| 30091 | "000f8n6d4ilihiaf590k73rx3327jh8ima5q5dpxlwz3frj45qrn")))) |
| 30092 | (build-system python-build-system) |
| 30093 | (home-page "https://github.com/python/typeshed") |
| 30094 | (synopsis "Typing stubs for @code{protobuf}") |
| 30095 | (description "This package contains typing stubs for @code{protobuf}, a |
| 30096 | very small subset the Python stubs contained in the complete @code{typeshed} |
| 30097 | collection.") |
| 30098 | (license license:asl2.0))) |
| 30099 | |
| 30100 | (define-public python-types-pytz |
| 30101 | (package |
| 30102 | (name "python-types-pytz") |
| 30103 | (version "2021.3.6") |
| 30104 | (source |
| 30105 | (origin |
| 30106 | (method url-fetch) |
| 30107 | (uri (pypi-uri "types-pytz" version)) |
| 30108 | (sha256 |
| 30109 | (base32 "14yr5hg2ww8s4a0mz2bkd549fv8qgm538fnzxvqv92ld1pcpym3l")))) |
| 30110 | (build-system python-build-system) |
| 30111 | (home-page "https://github.com/python/typeshed") |
| 30112 | (synopsis "Typing stubs for pytz") |
| 30113 | (description "This package contains typing stubs for @code{pytz}, a very |
| 30114 | small subset the Python stubs contained in the complete @code{typeshed} |
| 30115 | collection.") |
| 30116 | (license license:asl2.0))) |
| 30117 | |
| 30118 | (define-public python-types-toml |
| 30119 | (package |
| 30120 | (name "python-types-toml") |
| 30121 | (version "0.10.5") |
| 30122 | (source |
| 30123 | (origin |
| 30124 | (method url-fetch) |
| 30125 | (uri (pypi-uri "types-toml" version)) |
| 30126 | (sha256 |
| 30127 | (base32 "10400bd3yv6rjfnq8galskkbpqz1sfx9sfgr5qwvw04270x4cjgr")))) |
| 30128 | (build-system python-build-system) |
| 30129 | (home-page "https://github.com/python/typeshed") |
| 30130 | (synopsis "Typing stubs for TOML") |
| 30131 | (description "This package contains typing stubs for TOML, a very small |
| 30132 | subset the Python stubs contained in the complete @code{typeshed} |
| 30133 | collection.") |
| 30134 | (license license:asl2.0))) |
| 30135 | |
| 30136 | (define-public python-types-ujson |
| 30137 | (package |
| 30138 | (name "python-types-ujson") |
| 30139 | (version "4.2.1") |
| 30140 | (source (origin |
| 30141 | (method url-fetch) |
| 30142 | (uri (pypi-uri "types-ujson" version)) |
| 30143 | (sha256 |
| 30144 | (base32 |
| 30145 | "0k9n9hsq4k2zaakdwbkcsvi7m8d3mv2y9yl6f171y58ld4qpcxcy")))) |
| 30146 | (build-system python-build-system) |
| 30147 | (home-page "https://github.com/python/typeshed") |
| 30148 | (synopsis "Typing stubs for ujson") |
| 30149 | (description |
| 30150 | "This is a PEP 561 type stub package for the ujson package. It can be |
| 30151 | used by type-checking tools like mypy, PyCharm, pytype etc. to check code that |
| 30152 | uses ujson.") |
| 30153 | (license license:asl2.0))) |
| 30154 | |
| 30155 | (define-public python-stltools |
| 30156 | (package |
| 30157 | (name "python-stltools") |
| 30158 | (version "2022.01.20") |
| 30159 | (source (origin |
| 30160 | (method git-fetch) |
| 30161 | (uri (git-reference |
| 30162 | (url "https://github.com/rsmith-nl/stltools") |
| 30163 | (commit version))) |
| 30164 | (file-name (git-file-name name version)) |
| 30165 | (sha256 |
| 30166 | (base32 |
| 30167 | "1k6dhszza4lpy46qffaqx5zr70ikfqqysbacy7zabnrvz09fd4rs")))) |
| 30168 | (build-system python-build-system) |
| 30169 | (arguments |
| 30170 | `(#:use-setuptools? #f |
| 30171 | #:phases |
| 30172 | (modify-phases %standard-phases |
| 30173 | (delete 'build) |
| 30174 | (replace 'install |
| 30175 | (lambda* (#:key inputs outputs #:allow-other-keys) |
| 30176 | (let ((moddir (string-append (site-packages inputs outputs) "/stltools")) |
| 30177 | (bindir (string-append (assoc-ref outputs "out") "/bin"))) |
| 30178 | (copy-recursively "stltools" moddir) |
| 30179 | (mkdir-p bindir) |
| 30180 | (for-each |
| 30181 | (lambda (script) |
| 30182 | (let ((source (string-append script ".py")) |
| 30183 | (target (string-append bindir "/" script))) |
| 30184 | (copy-file source target) |
| 30185 | (chmod target #o555))) |
| 30186 | '("stl2pov" "stl2ps" "stl2pdf" "stlinfo"))))) |
| 30187 | (replace 'check |
| 30188 | (lambda* (#:key tests? #:allow-other-keys) |
| 30189 | (when tests? |
| 30190 | (invoke "py.test" "-v"))))))) |
| 30191 | (propagated-inputs (list python-pycairo)) |
| 30192 | (native-inputs (list python-pytest)) |
| 30193 | (home-page "https://github.com/rsmith-nl/stltools") |
| 30194 | (synopsis "Python modules and scripts for handling STL files") |
| 30195 | (description "This package consists of Python modules and scripts for |
| 30196 | manipulating stereolithography (STL) files. It can convert STL files into |
| 30197 | POV-ray meshes, PDF and PostScript. The Python modules allow for reading and |
| 30198 | writing STL files. It supports both the text and binary forms of STL.") |
| 30199 | (license license:expat))) |
| 30200 | |
| 30201 | (define-public python-multipart |
| 30202 | (package |
| 30203 | (name "python-multipart") |
| 30204 | (version "0.0.5") |
| 30205 | (source (origin |
| 30206 | (method url-fetch) |
| 30207 | (uri (pypi-uri "python-multipart" version)) |
| 30208 | (sha256 |
| 30209 | (base32 |
| 30210 | "0hzshd665rl1bkwvaj9va4j3gs8nmb478fbvligx20663xhmzfzp")))) |
| 30211 | (build-system python-build-system) |
| 30212 | (propagated-inputs (list python-six)) |
| 30213 | (native-inputs (list python-pyyaml python-mock python-pytest-cov)) |
| 30214 | (arguments |
| 30215 | `(#:phases (modify-phases %standard-phases |
| 30216 | ;; There is a bug in the test_suit specification. |
| 30217 | (add-after 'unpack 'patch-test-suite |
| 30218 | (lambda _ |
| 30219 | ;; Make compatible with PyYAML 6. |
| 30220 | (substitute* "multipart/tests/test_multipart.py" |
| 30221 | (("yaml.load") |
| 30222 | "yaml.safe_load")) |
| 30223 | (substitute* "setup.py" |
| 30224 | (("test_suite = 'multipart.tests.suite'") |
| 30225 | "test_suite = 'multipart.tests.test_multipart.suite'")) |
| 30226 | ;; Needed by PyYAML 6.0. |
| 30227 | (substitute* "multipart/tests/test_multipart.py" |
| 30228 | (("yaml_data = yaml.load\\(f\\)") |
| 30229 | "yaml_data = yaml.load(f, Loader=yaml.SafeLoader)"))))))) |
| 30230 | (home-page "https://github.com/andrew-d/python-multipart") |
| 30231 | (synopsis "Streaming multipart parser for Python") |
| 30232 | (description |
| 30233 | "This package provides a streaming multipart parser for Python.") |
| 30234 | (license license:asl2.0))) |
| 30235 | |
| 30236 | (define-public python-aiopg |
| 30237 | (package |
| 30238 | (name "python-aiopg") |
| 30239 | (version "1.3.3") |
| 30240 | (source (origin |
| 30241 | (method url-fetch) |
| 30242 | (uri (pypi-uri "aiopg" version)) |
| 30243 | (sha256 |
| 30244 | (base32 |
| 30245 | "1mwmypsfzh8adjbyvf7kqv9h3k1kf5ykhi1g3ahw4wqdxaj6nz2l")))) |
| 30246 | (build-system python-build-system) |
| 30247 | (native-inputs (list python-sqlalchemy)) |
| 30248 | (propagated-inputs (list python-async-timeout python-psycopg2-binary)) |
| 30249 | (home-page "https://aiopg.readthedocs.io") |
| 30250 | (synopsis "Postgres integration with asyncio") |
| 30251 | (description |
| 30252 | "aiopg is a library for accessing a PostgreSQL |
| 30253 | database from the asyncio (PEP-3156/tulip) framework. It wraps |
| 30254 | asynchronous features of the Psycopg database driver.") |
| 30255 | (license license:bsd-3))) |
| 30256 | |
| 30257 | (define-public python-verspec |
| 30258 | (package |
| 30259 | (name "python-verspec") |
| 30260 | (version "0.1.0") |
| 30261 | (source (origin |
| 30262 | (method url-fetch) |
| 30263 | (uri (pypi-uri "verspec" version)) |
| 30264 | (sha256 |
| 30265 | (base32 |
| 30266 | "07n06wv85fm4vl1ird2mja0823js3x322wgs9gdnq1djjyk4ql64")))) |
| 30267 | (build-system python-build-system) |
| 30268 | (native-inputs (list python-coverage python-flake8 python-mypy |
| 30269 | python-pretend python-pytest)) |
| 30270 | (arguments |
| 30271 | `(#:phases (modify-phases %standard-phases |
| 30272 | (replace 'check |
| 30273 | (lambda* (#:key tests? inputs outputs #:allow-other-keys) |
| 30274 | (when tests? |
| 30275 | (add-installed-pythonpath inputs outputs) |
| 30276 | (invoke "touch" "test/__init__.py") |
| 30277 | (invoke "pytest"))))))) |
| 30278 | (home-page "https://github.com/jimporter/verspec") |
| 30279 | (synopsis "Flexible version handling for Python") |
| 30280 | (description |
| 30281 | "This Python library handles software versions and specifiers. It is |
| 30282 | adapted from the @code{packaging} package.") |
| 30283 | (license (list license:bsd-2 license:asl2.0)))) |
| 30284 | |
| 30285 | (define-public python-shtab |
| 30286 | (package |
| 30287 | (name "python-shtab") |
| 30288 | (version "1.5.3") |
| 30289 | (source |
| 30290 | (origin |
| 30291 | (method url-fetch) |
| 30292 | (uri (pypi-uri "shtab" version)) |
| 30293 | (sha256 |
| 30294 | (base32 "127mymfm7r0hddk2vknqq34fj6dirj6ip990i3g4isx0lsd7pnsc")))) |
| 30295 | (build-system python-build-system) |
| 30296 | (native-inputs |
| 30297 | (list bash |
| 30298 | python-pytest |
| 30299 | python-pytest-cov |
| 30300 | python-pytest-timeout |
| 30301 | python-setuptools-scm |
| 30302 | python-wheel)) |
| 30303 | (arguments |
| 30304 | `(#:phases |
| 30305 | (modify-phases %standard-phases |
| 30306 | (replace |
| 30307 | 'check |
| 30308 | (lambda* (#:key tests? inputs outputs #:allow-other-keys) |
| 30309 | (when tests? |
| 30310 | (add-installed-pythonpath inputs outputs) |
| 30311 | (invoke "pytest"))))))) |
| 30312 | (home-page "https://github.com/iterative/shtab") |
| 30313 | (synopsis "Automagic shell tab completion for Python CLI applications") |
| 30314 | (description |
| 30315 | "This package automatically generates shell tab completion scripts for |
| 30316 | Python CLI apps.") |
| 30317 | (license license:asl2.0))) |
| 30318 | |
| 30319 | (define-public python-style |
| 30320 | (package |
| 30321 | (name "python-style") |
| 30322 | (version "1.1.6") |
| 30323 | (source |
| 30324 | (origin |
| 30325 | (method url-fetch) |
| 30326 | (uri (pypi-uri "style" version)) |
| 30327 | (sha256 |
| 30328 | (base32 "1dcfb578v9mrwh92rgms87gql0gp4vgj6l9hpgyfg0wbd3rh3bfh")))) |
| 30329 | (build-system python-build-system) |
| 30330 | (home-page "https://github.com/lmittmann/style") |
| 30331 | (synopsis "Terminal string styling") |
| 30332 | (description |
| 30333 | "@code{python-style} is a simple terminal string styling package. Its API is |
| 30334 | a port of the chalk package for javascript.") |
| 30335 | (license license:expat))) |
| 30336 | |
| 30337 | (define-public python-sre-yield |
| 30338 | (package |
| 30339 | (name "python-sre-yield") |
| 30340 | (version "1.2") |
| 30341 | (source |
| 30342 | (origin |
| 30343 | (method url-fetch) |
| 30344 | (uri (pypi-uri "sre_yield" version)) |
| 30345 | (sha256 |
| 30346 | (base32 |
| 30347 | "12kv3mvdr22g2v9wfr5aabh1f58s817dbh8mrlfzxzxs7hm1lkz9")))) |
| 30348 | (build-system python-build-system) |
| 30349 | (native-inputs (list python-nose)) |
| 30350 | (home-page "https://github.com/google/sre_yield") |
| 30351 | (synopsis "Expands a regular expression to its possible matches") |
| 30352 | (description |
| 30353 | "The goal of sre_yield is to efficiently generate all values that can |
| 30354 | match a given regular expression, or count possible matches efficiently. It |
| 30355 | uses the parsed regular expression, so you get a much more accurate result |
| 30356 | than trying to just split strings.") |
| 30357 | (license license:asl2.0))) |
| 30358 | |
| 30359 | (define-public python-pyperf |
| 30360 | (package |
| 30361 | (name "python-pyperf") |
| 30362 | (version "2.3.1") |
| 30363 | (source |
| 30364 | (origin |
| 30365 | (method url-fetch) |
| 30366 | (uri (pypi-uri "pyperf" version)) |
| 30367 | (sha256 |
| 30368 | (base32 "189qf9wdbig0fk4n3bavx8acgdbay5lllfvw48jvbfaafb7y5hja")))) |
| 30369 | (build-system python-build-system) |
| 30370 | (arguments |
| 30371 | '(#:phases |
| 30372 | (modify-phases %standard-phases |
| 30373 | (add-after 'unpack 'fix-tests |
| 30374 | (lambda _ |
| 30375 | ;; Some of these tests fail with: |
| 30376 | ;; |
| 30377 | ;; ModuleNotFoundError: No module named 'pyperf' |
| 30378 | ;; |
| 30379 | ;; even when calling ‘add-installed-pythonpath’ in the ‘check’ |
| 30380 | ;; phase. |
| 30381 | (delete-file "pyperf/tests/test_examples.py"))) |
| 30382 | (replace 'check |
| 30383 | (lambda* (#:key tests? #:allow-other-keys) |
| 30384 | (when tests? |
| 30385 | ;; From tox.ini's ‘testenv.commands’. |
| 30386 | (invoke "python" "-bb" "-Wd" |
| 30387 | "-m" "unittest" "discover" |
| 30388 | "-s" "pyperf/tests/" "-v"))))))) |
| 30389 | (native-inputs |
| 30390 | (list python-psutil)) |
| 30391 | (home-page "https://github.com/psf/pyperf") |
| 30392 | (synopsis "Toolkit for running Python benchmarks") |
| 30393 | (description "The Python @code{pyperf} module is a toolkit for writing, |
| 30394 | running and analyzing benchmarks. It features a simple API that can: |
| 30395 | |
| 30396 | @itemize |
| 30397 | @item automatically calibrate a benchmark for a time budget; |
| 30398 | @item spawn multiple worker processes; |
| 30399 | @item compute the mean and standard deviation; |
| 30400 | @item detect if a benchmark result seems unstable; |
| 30401 | @item store benchmark results in JSON format; |
| 30402 | @item support multiple units: seconds, bytes and integer. |
| 30403 | @end itemize") |
| 30404 | (license license:expat))) |
| 30405 | |
| 30406 | (define-public python-pydispatcher |
| 30407 | (package |
| 30408 | (name "python-pydispatcher") |
| 30409 | (version "2.0.5") |
| 30410 | (source |
| 30411 | (origin |
| 30412 | (method url-fetch) |
| 30413 | (uri (pypi-uri "PyDispatcher" version)) |
| 30414 | (sha256 |
| 30415 | (base32 "1bswbmhlbqdxlgbxlb6xrlm4k253sg8nvpl1whgsys8p3fg0cw2m")))) |
| 30416 | (build-system python-build-system) |
| 30417 | (arguments |
| 30418 | `(#:phases |
| 30419 | (modify-phases %standard-phases |
| 30420 | (replace 'check |
| 30421 | (lambda* (#:key tests? #:allow-other-keys) |
| 30422 | (when tests? |
| 30423 | (invoke "pytest"))))))) |
| 30424 | (native-inputs (list python-pytest)) |
| 30425 | (home-page "http://pydispatcher.sourceforge.net") |
| 30426 | (synopsis "Multi-producer-multi-consumer signal dispatching mechanism") |
| 30427 | (description "PyDispatcher is an enhanced version of Patrick K. O’Brien’s |
| 30428 | original @code{dispatcher.py} module. It provides the Python programmer with |
| 30429 | a robust mechanism for event routing within various application contexts. |
| 30430 | |
| 30431 | Included in the package are the robustapply and saferef modules, which |
| 30432 | provide the ability to selectively apply arguments to callable objects |
| 30433 | and to reference instance methods using weak-references.") |
| 30434 | (license license:bsd-3))) |
| 30435 | |
| 30436 | (define-public python-queuelib |
| 30437 | (package |
| 30438 | (name "python-queuelib") |
| 30439 | (version "1.6.2") |
| 30440 | (source |
| 30441 | (origin |
| 30442 | (method url-fetch) |
| 30443 | (uri (pypi-uri "queuelib" version)) |
| 30444 | (sha256 |
| 30445 | (base32 "1lpwq8wx3025i14y5h0hbald2ypbarf081pql6cqcak4y9kp482b")))) |
| 30446 | (build-system python-build-system) |
| 30447 | (native-inputs (list python-pytest)) |
| 30448 | (home-page "https://github.com/scrapy/queuelib") |
| 30449 | (synopsis |
| 30450 | "Collection of persistent (disk-based) and non-persistent (memory-based) queues") |
| 30451 | (description "Queuelib is a Python library that implements object |
| 30452 | collections which are stored in memory or persisted to disk, provide a |
| 30453 | simple API, and run fast. |
| 30454 | |
| 30455 | Queuelib provides collections for queues (FIFO), stacks (LIFO), queues |
| 30456 | sorted by priority and queues that are emptied in a round-robin |
| 30457 | fashion.") |
| 30458 | (license license:bsd-3))) |
| 30459 | |
| 30460 | (define-public python-posix-ipc |
| 30461 | (package |
| 30462 | (name "python-posix-ipc") |
| 30463 | (version "1.0.5") |
| 30464 | (source |
| 30465 | (origin |
| 30466 | ;; The source distributed on PyPI is prebuild. |
| 30467 | (method git-fetch) |
| 30468 | (uri (git-reference |
| 30469 | (url "https://github.com/osvenskan/posix_ipc") |
| 30470 | (commit (string-append "rel" version)))) |
| 30471 | (file-name (git-file-name name version)) |
| 30472 | (sha256 |
| 30473 | (base32 "17y4d0pmvp199c5hbs602ailhlh9f9zv89kmpbd8jhyl6rgaxsvs")))) |
| 30474 | (build-system python-build-system) |
| 30475 | (arguments |
| 30476 | (list #:phases |
| 30477 | #~(modify-phases %standard-phases |
| 30478 | (add-after 'unpack 'patch-cc-path |
| 30479 | (lambda _ |
| 30480 | (substitute* "prober.py" |
| 30481 | (("cmd = .cc") |
| 30482 | (string-append "cmd = \"" #$(cc-for-target))))))))) |
| 30483 | (home-page "http://semanchuk.com/philip/posix_ipc/") |
| 30484 | (synopsis "POSIX IPC primitives for Python") |
| 30485 | (description |
| 30486 | "This package provides POSIX IPC primitives - semaphores, shared memory and |
| 30487 | message queues for Python.") |
| 30488 | (license license:bsd-3))) ; BSD like Copyright (c) 2018, Philip Semanchuk |
| 30489 | |
| 30490 | (define-public python-itemadapter |
| 30491 | (package |
| 30492 | (name "python-itemadapter") |
| 30493 | (version "0.5.0") |
| 30494 | (source |
| 30495 | (origin |
| 30496 | (method url-fetch) |
| 30497 | (uri (pypi-uri "itemadapter" version)) |
| 30498 | (sha256 |
| 30499 | (base32 "083wp3h2brh8x19jbdr8rz3biqwp3jlqd0rfzcyrjyhssffsgdh5")))) |
| 30500 | (build-system python-build-system) |
| 30501 | (home-page "https://github.com/scrapy/itemadapter") |
| 30502 | (synopsis "Common interface for data container classes") |
| 30503 | (description "The ItemAdapter class is a wrapper for data container |
| 30504 | objects, providing a common interface to handle objects of different |
| 30505 | types in an uniform manner, regardless of their underlying implementation. |
| 30506 | |
| 30507 | Currently supported types are: |
| 30508 | @itemize |
| 30509 | @item scrapy.item.Item |
| 30510 | @item dict |
| 30511 | @item dataclass-based classes |
| 30512 | @item attrs-based classes |
| 30513 | @item pydantic-based classes |
| 30514 | @end itemize |
| 30515 | |
| 30516 | Additionally, interaction with arbitrary types is supported by |
| 30517 | implementing a pre-defined interface.") |
| 30518 | (license license:bsd-3))) |
| 30519 | |
| 30520 | (define-public python-itemloaders |
| 30521 | (package |
| 30522 | (name "python-itemloaders") |
| 30523 | (version "1.0.4") |
| 30524 | (source |
| 30525 | (origin |
| 30526 | (method url-fetch) |
| 30527 | (uri (pypi-uri "itemloaders" version)) |
| 30528 | (sha256 |
| 30529 | (base32 "15hc78h90qhwass1bga1c3xar2dd6j8sxg61zg6jvh74lf6csxqj")))) |
| 30530 | (build-system python-build-system) |
| 30531 | (propagated-inputs |
| 30532 | (list python-itemadapter python-jmespath python-parsel python-w3lib)) |
| 30533 | (home-page "https://github.com/scrapy/itemloaders") |
| 30534 | (synopsis "Base library for scrapy's ItemLoader") |
| 30535 | (description "Itemloaders is a library that helps you collect data |
| 30536 | from HTML and XML sources. It comes in handy to extract data from web |
| 30537 | pages, as it supports data extraction using CSS and XPath Selectors. |
| 30538 | |
| 30539 | It’s specially useful when you need to standardize the data from many |
| 30540 | sources. For example, it allows you to have all your casting and |
| 30541 | parsing rules in a single place.") |
| 30542 | (license license:bsd-3))) |
| 30543 | |
| 30544 | (define-public python-hypy-utils |
| 30545 | (package |
| 30546 | (name "python-hypy-utils") |
| 30547 | (version "1.0.6") |
| 30548 | (source (origin |
| 30549 | (method url-fetch) |
| 30550 | (uri (pypi-uri "hypy_utils" version)) |
| 30551 | (sha256 |
| 30552 | (base32 |
| 30553 | "05csk0x8ivavq88x457cq5hwjcdirfbkzj7bbg5qgnpnf2dxxhiw")))) |
| 30554 | (build-system python-build-system) |
| 30555 | (home-page "https://github.com/hykilpikonna/HyPyUtils") |
| 30556 | (synopsis "Python utility functions for HyDEV") |
| 30557 | (description "This module provides Python utility functions for modifying |
| 30558 | and setting the color of terminal output, via HyDEV.") |
| 30559 | (license license:expat))) |
| 30560 | |
| 30561 | (define-public python-mike |
| 30562 | (package |
| 30563 | (name "python-mike") |
| 30564 | (version "1.1.2") |
| 30565 | (source (origin |
| 30566 | (method url-fetch) |
| 30567 | (uri (pypi-uri "mike" version)) |
| 30568 | (sha256 |
| 30569 | (base32 |
| 30570 | "0yxp816x7s948xsd0fifvq9shg01xdxlifd9rzf5y2rd9iwz3hsn")))) |
| 30571 | (build-system python-build-system) |
| 30572 | (native-inputs |
| 30573 | (list python-coverage python-flake8 python-shtab)) |
| 30574 | (propagated-inputs |
| 30575 | (list python-jinja2 python-mkdocs python-pyyaml python-verspec)) |
| 30576 | (home-page "https://github.com/jimporter/mike") |
| 30577 | (synopsis "Manage multiple versions of MkDocs-powered documentation") |
| 30578 | (description |
| 30579 | "This package provides a Python utility to easily deploy multiple |
| 30580 | versions of MkDocs-powered docs to a Git branch. It is suitable for deploying |
| 30581 | to Github via gh-pages.") |
| 30582 | (license license:bsd-3))) |
| 30583 | |
| 30584 | (define-public python-arpeggio |
| 30585 | (package |
| 30586 | (name "python-arpeggio") |
| 30587 | (version "2.0.0") |
| 30588 | (source (origin |
| 30589 | (method url-fetch) |
| 30590 | (uri (pypi-uri "Arpeggio" version)) |
| 30591 | (sha256 |
| 30592 | (base32 |
| 30593 | "0ggdsck1wpladd5bh9drhkmm86bblgk2wagrhn3sdf4v04wkic6n")))) |
| 30594 | (build-system python-build-system) |
| 30595 | (native-inputs (list python-coverage |
| 30596 | python-coveralls |
| 30597 | python-flake8 |
| 30598 | python-mike |
| 30599 | python-mkdocs |
| 30600 | python-pytest |
| 30601 | python-pytest-runner |
| 30602 | python-twine |
| 30603 | python-wheel)) |
| 30604 | (home-page "https://github.com/textX/Arpeggio") |
| 30605 | (synopsis "Packrat parser interpreter for Python") |
| 30606 | (description |
| 30607 | "This Python library provides a recursive descent parser with backtracking |
| 30608 | and memoization (a.k.a. packrat parser). Arpeggio grammars are based on PEG |
| 30609 | formalism. Arpeggio's main use is a foundation for a toolchain for DSL |
| 30610 | development but it can be used for all sorts of general purpose parsing.") |
| 30611 | (license license:expat))) |
| 30612 | |
| 30613 | (define-public python-flatten-json |
| 30614 | (package |
| 30615 | (name "python-flatten-json") |
| 30616 | (version "0.1.13") |
| 30617 | (source |
| 30618 | (origin |
| 30619 | (method url-fetch) |
| 30620 | (uri (pypi-uri "flatten_json" version)) |
| 30621 | (sha256 |
| 30622 | (base32 "007m28gfs7pmz2rqqjxpial6skzw26hrfi8vrdy9agi9x0rj6dgf")))) |
| 30623 | (build-system python-build-system) |
| 30624 | (propagated-inputs (list python-six)) |
| 30625 | (home-page "https://github.com/amirziai/flatten") |
| 30626 | (synopsis "Flatten JSON objects") |
| 30627 | (description |
| 30628 | "The @code{flatten_json} Python library flattens the hierarchy in your |
| 30629 | object, which can be useful if you want to force your objects into a table.") |
| 30630 | (license license:expat))) |
| 30631 | |
| 30632 | (define-public python-deepmerge |
| 30633 | (package |
| 30634 | (name "python-deepmerge") |
| 30635 | (version "1.0.1") |
| 30636 | (source |
| 30637 | (origin |
| 30638 | (method url-fetch) |
| 30639 | (uri (pypi-uri "deepmerge" version)) |
| 30640 | (sha256 |
| 30641 | (base32 "06hagzg8ccmjzqvszdxb52jgx5il8a1jdz41n4dpkyyjsfg7fi2b")))) |
| 30642 | (build-system pyproject-build-system) |
| 30643 | (arguments |
| 30644 | (list |
| 30645 | #:phases |
| 30646 | #~(modify-phases %standard-phases |
| 30647 | (add-before 'build 'set-version |
| 30648 | (lambda _ |
| 30649 | (setenv "SETUPTOOLS_SCM_PRETEND_VERSION" #$version)))))) |
| 30650 | (native-inputs |
| 30651 | (list python-setuptools-scm |
| 30652 | python-pytest)) |
| 30653 | (home-page "https://deepmerge.readthedocs.io/en/latest/") |
| 30654 | (synopsis "Merge nested data structures") |
| 30655 | (description |
| 30656 | "The @code{deep-merge} Python library provides a toolset to deeply merge |
| 30657 | nested data structures in Python like lists and dictionaries.") |
| 30658 | (license license:expat))) |
| 30659 | |
| 30660 | (define-public python-murmurhash3 |
| 30661 | (package |
| 30662 | (name "python-murmurhash3") |
| 30663 | (version "2.3.5") |
| 30664 | (source (origin |
| 30665 | (method url-fetch) |
| 30666 | (uri (pypi-uri "murmurhash3" version)) |
| 30667 | (sha256 |
| 30668 | (base32 |
| 30669 | "1gdzys1212dx70byz07ipknbw1awbqskh6aznlkm85js8b8qfczm")))) |
| 30670 | (build-system python-build-system) |
| 30671 | (native-inputs (list python-cython python-pytest)) |
| 30672 | (inputs (list python)) |
| 30673 | (arguments |
| 30674 | (list #:modules |
| 30675 | '((ice-9 ftw) (ice-9 match) |
| 30676 | (guix build utils) |
| 30677 | (guix build python-build-system)) |
| 30678 | #:phases |
| 30679 | #~(modify-phases %standard-phases |
| 30680 | (add-after 'unpack 'set-source-file-times-to-1980 |
| 30681 | (lambda _ |
| 30682 | (let ((circa-1980 (* 10 366 24 60 60))) |
| 30683 | (ftw "." |
| 30684 | (lambda (file stat flag) |
| 30685 | (utime file circa-1980 circa-1980) #t)))))))) |
| 30686 | (home-page "https://github.com/veegee/mmh3") |
| 30687 | (synopsis "Python wrapper for MurmurHash (MurmurHash3)") |
| 30688 | (description |
| 30689 | "@code{murmurhash3} is a Python library for MurmurHash (MurmurHash3), a set |
| 30690 | of fast and robust hash functions. This library is a Python extension module |
| 30691 | written in C.") |
| 30692 | (license license:public-domain))) |
| 30693 | |
| 30694 | (define-public python-murmurhash |
| 30695 | (package |
| 30696 | (name "python-murmurhash") |
| 30697 | (version "1.0.7") |
| 30698 | (source (origin |
| 30699 | (method url-fetch) |
| 30700 | (uri (pypi-uri "murmurhash" version)) |
| 30701 | (sha256 |
| 30702 | (base32 |
| 30703 | "0vwkn98c703nvsigl2nz99rax2pafkx3djjfkgc49jiipmp3j2k3")))) |
| 30704 | (build-system python-build-system) |
| 30705 | (native-inputs (list python-cython python-pytest)) |
| 30706 | (inputs (list python python-murmurhash3)) |
| 30707 | (arguments |
| 30708 | (list #:modules |
| 30709 | '((ice-9 ftw) (ice-9 match) |
| 30710 | (guix build utils) |
| 30711 | (guix build python-build-system)) |
| 30712 | #:phases |
| 30713 | #~(modify-phases %standard-phases |
| 30714 | (add-after 'unpack 'set-source-file-times-to-1980 |
| 30715 | (lambda _ |
| 30716 | (let ((circa-1980 (* 10 366 24 60 60))) |
| 30717 | (ftw "." |
| 30718 | (lambda (file stat flag) |
| 30719 | (utime file circa-1980 circa-1980) #t)))))))) |
| 30720 | (home-page "https://github.com/explosion/murmurhash") |
| 30721 | (synopsis "Cython bindings for MurmurHash2") |
| 30722 | (description "This package provides Cython bindings for MurmurHash2.") |
| 30723 | (license license:expat))) |
| 30724 | |
| 30725 | ;; Scooby requires for its test suite a ‘pyvips’ package that is missing its |
| 30726 | ;; VIPS dependency. |
| 30727 | (define python-pyvips-for-python-scooby |
| 30728 | (package |
| 30729 | (inherit python-pyvips) |
| 30730 | (name "python-pyvips-for-python-scooby") |
| 30731 | (arguments |
| 30732 | (substitute-keyword-arguments (package-arguments python-pyvips) |
| 30733 | ((#:phases phases) |
| 30734 | #~(modify-phases #$phases |
| 30735 | (delete 'fix-paths) |
| 30736 | ;; The checks won't succeed without VIPS. |
| 30737 | (delete 'check) |
| 30738 | (delete 'sanity-check))))) |
| 30739 | (inputs |
| 30740 | (modify-inputs (package-inputs python-pyvips) |
| 30741 | (delete "vips"))) |
| 30742 | (synopsis "pyvips for Scooby's test suite"))) |
| 30743 | |
| 30744 | (define-public python-scooby |
| 30745 | (package |
| 30746 | (name "python-scooby") |
| 30747 | (version "0.5.12") |
| 30748 | (source |
| 30749 | ;; The PyPI tarball does not contain the tests. |
| 30750 | (origin |
| 30751 | (method git-fetch) |
| 30752 | (uri (git-reference |
| 30753 | (url "https://github.com/banesullivan/scooby") |
| 30754 | (commit (string-append "v" version)))) |
| 30755 | (file-name (git-file-name name version)) |
| 30756 | (sha256 |
| 30757 | (base32 "1gkpmz8wl3jg8ylf1na35308sznw2g9wx33zqlyq5i2gpy2ml9mw")))) |
| 30758 | (build-system python-build-system) |
| 30759 | (native-inputs |
| 30760 | (list python-beautifulsoup4 |
| 30761 | python-numpy |
| 30762 | python-pytest |
| 30763 | python-pytest-cov |
| 30764 | python-pyvips-for-python-scooby |
| 30765 | python-scipy)) |
| 30766 | (propagated-inputs |
| 30767 | (list python-psutil)) |
| 30768 | (arguments |
| 30769 | '(#:phases |
| 30770 | (modify-phases %standard-phases |
| 30771 | (add-after 'unpack 'fix-tests |
| 30772 | (lambda _ |
| 30773 | (substitute* "tests/test_scooby.py" |
| 30774 | ;; The test suite uses the no-version PyPI package |
| 30775 | ;; (https://pypi.org/project/no-version/), |
| 30776 | ;; but it doesn't seem worth packaging in Guix just for this. |
| 30777 | (("scooby\\.report\\.VERSION_NOT_FOUND") |
| 30778 | "scooby.report.MODULE_NOT_FOUND") |
| 30779 | (("^ +import no_version # noqa.*") "")))) |
| 30780 | (replace 'check |
| 30781 | (lambda* (#:key tests? #:allow-other-keys) |
| 30782 | (when tests? |
| 30783 | (invoke "pytest"))))))) |
| 30784 | (home-page "https://github.com/banesullivan/scooby") |
| 30785 | (synopsis "Report hardware information and Python package versions") |
| 30786 | (description |
| 30787 | "The Scooby package reports the following information about the currently |
| 30788 | running system: |
| 30789 | |
| 30790 | @itemize |
| 30791 | @item operating system name; |
| 30792 | @item hardware information including machine type (e.g., @samp{i386}, |
| 30793 | @samp{x86_64}, etc.), CPU count and total RAM; |
| 30794 | @item Python environment (e.g., Python, IPython, etc.); |
| 30795 | @item file system name; |
| 30796 | @item Python version; |
| 30797 | @item versions of specified Python packages. |
| 30798 | @end itemize |
| 30799 | |
| 30800 | It can generate reports as HTML tables or plain text lists. |
| 30801 | |
| 30802 | Scooby has no required dependencies, and only few optional dependencies.") |
| 30803 | (license license:expat))) |
| 30804 | |
| 30805 | (define-public python-cymem |
| 30806 | (package |
| 30807 | (name "python-cymem") |
| 30808 | (version "2.0.6") |
| 30809 | (source (origin |
| 30810 | (method url-fetch) |
| 30811 | (uri (pypi-uri "cymem" version)) |
| 30812 | (sha256 |
| 30813 | (base32 |
| 30814 | "0pkyy60zk9654sj991w111p1l0m8wvz36nslw96x6nb9h6sjb5qn")))) |
| 30815 | (build-system python-build-system) |
| 30816 | (native-inputs |
| 30817 | (list python-cython |
| 30818 | python-pytest)) |
| 30819 | (inputs |
| 30820 | (list python)) |
| 30821 | (arguments |
| 30822 | (list |
| 30823 | #:modules '((ice-9 ftw) |
| 30824 | (ice-9 match) |
| 30825 | (guix build utils) |
| 30826 | (guix build python-build-system)) |
| 30827 | #:phases |
| 30828 | #~(modify-phases %standard-phases |
| 30829 | (add-after 'unpack 'set-source-file-times-to-1980 |
| 30830 | ;; XXX One of the tests uses a ZIP library to pack up some of the |
| 30831 | ;; source tree, and fails with "ZIP does not support timestamps |
| 30832 | ;; before 1980". Work around this by setting the file times in the |
| 30833 | ;; source tree to sometime in early 1980. |
| 30834 | (lambda _ |
| 30835 | (let ((circa-1980 (* 10 366 24 60 60))) |
| 30836 | (ftw "." (lambda (file stat flag) |
| 30837 | (utime file circa-1980 circa-1980) |
| 30838 | #t)))))))) |
| 30839 | (home-page "https://github.com/explosion/cymem") |
| 30840 | (synopsis "Cython memory pool for RAII-style memory management") |
| 30841 | (description |
| 30842 | "Cymem provides two small memory-management helpers for Cython. They make it |
| 30843 | easy to tie memory to a Python object's life-cycle, so that the memory is freed |
| 30844 | when the object is garbage collected.") |
| 30845 | (license license:expat))) |
| 30846 | |
| 30847 | (define-public python-preshed |
| 30848 | (package |
| 30849 | (name "python-preshed") |
| 30850 | (version "3.0.6") |
| 30851 | (source (origin |
| 30852 | (method url-fetch) |
| 30853 | (uri (pypi-uri "preshed" version)) |
| 30854 | (sha256 |
| 30855 | (base32 |
| 30856 | "0akpydd23xqxx9d04drsnw9140rb3cv07r1zpzqz5wm0lf47afzv")))) |
| 30857 | (build-system python-build-system) |
| 30858 | (native-inputs (list python-cython python-cymem python-pytest)) |
| 30859 | (inputs (list python python-cymem python-murmurhash)) |
| 30860 | (arguments |
| 30861 | (list #:modules |
| 30862 | '((ice-9 ftw) (ice-9 match) |
| 30863 | (guix build utils) |
| 30864 | (guix build python-build-system)) |
| 30865 | #:phases |
| 30866 | #~(modify-phases %standard-phases |
| 30867 | (add-after 'unpack 'set-source-file-times-to-1980 |
| 30868 | (lambda _ |
| 30869 | (let ((circa-1980 (* 10 366 24 60 60))) |
| 30870 | (ftw "." |
| 30871 | (lambda (file stat flag) |
| 30872 | (utime file circa-1980 circa-1980) #t)))))))) |
| 30873 | (home-page "https://github.com/explosion/preshed") |
| 30874 | (synopsis "Cython hash tables that assume keys are pre-hashed") |
| 30875 | (description |
| 30876 | "Simple but high performance Cython hash table mapping pre-randomized keys |
| 30877 | to void* values.") |
| 30878 | (license license:expat))) |
| 30879 | |
| 30880 | (define-public python-catalogue |
| 30881 | (package |
| 30882 | (name "python-catalogue") |
| 30883 | (version "2.0.7") |
| 30884 | (source (origin |
| 30885 | (method url-fetch) |
| 30886 | (uri (pypi-uri "catalogue" version)) |
| 30887 | (sha256 |
| 30888 | (base32 |
| 30889 | "0srdxiil2xys8q1gpc1nvzhvis3a33d8a7amk2i1rlpbg6p36pak")))) |
| 30890 | (build-system python-build-system) |
| 30891 | (native-inputs (list python-pytest)) |
| 30892 | (inputs (list python python-zipp python-typing-extensions python-mypy)) |
| 30893 | (home-page "https://github.com/explosion/catalogue") |
| 30894 | (synopsis "Lightweight function registries for your library") |
| 30895 | (description |
| 30896 | "\"catalogue\" is a tiny, zero-dependencies library that |
| 30897 | makes it easy to add function (or object) registries to your code. Function |
| 30898 | registries are helpful when you have objects that need to be both easily |
| 30899 | serializable and fully customizable. Instead of passing a function into your |
| 30900 | object, you pass in an identifier name, which the object can use to lookup the |
| 30901 | function from the registry. This makes the object easy to serialize, because the |
| 30902 | name is a simple string. If you instead saved the function, you'd have to use |
| 30903 | Pickle for serialization, which has many drawbacks.") |
| 30904 | (license license:expat))) |
| 30905 | |
| 30906 | (define-public python-wasabi |
| 30907 | (package |
| 30908 | (name "python-wasabi") |
| 30909 | (version "0.9.1") |
| 30910 | (source (origin |
| 30911 | (method url-fetch) |
| 30912 | (uri (pypi-uri "wasabi" version)) |
| 30913 | (sha256 |
| 30914 | (base32 |
| 30915 | "1kwqfalq7qxs9f7xb2m055g01qpbznyzxl7sjnzjdvvhkczg39md")))) |
| 30916 | (build-system python-build-system) |
| 30917 | (native-inputs (list python-pytest)) |
| 30918 | (home-page "https://github.com/ines/wasabi") |
| 30919 | (synopsis "Console printing and formatting toolkit") |
| 30920 | (description |
| 30921 | "This package provides a lightweight console printing and formatting |
| 30922 | toolkit for Python.") |
| 30923 | (license license:expat))) |
| 30924 | |
| 30925 | (define-public python-srt |
| 30926 | (package |
| 30927 | (name "python-srt") |
| 30928 | (version "3.5.2") |
| 30929 | (source (origin |
| 30930 | (method url-fetch) |
| 30931 | (uri (pypi-uri "srt" version)) |
| 30932 | (sha256 |
| 30933 | (base32 |
| 30934 | "0l24710spxarijmv3h7iicvx0lv6m3d4xg77nd9kyv8jwifav93s")))) |
| 30935 | (build-system python-build-system) |
| 30936 | (home-page "https://github.com/cdown/srt") |
| 30937 | (synopsis "SRT parsing library") |
| 30938 | (description |
| 30939 | "This package provides a Python library for parsing, modifying, and |
| 30940 | composing subtitles in the SRT file format.") |
| 30941 | (license license:expat))) |
| 30942 | |
| 30943 | (define-public python-gatt |
| 30944 | (package |
| 30945 | (name "python-gatt") |
| 30946 | (version "0.2.7") |
| 30947 | (source (origin |
| 30948 | (method url-fetch) |
| 30949 | (uri (pypi-uri "gatt" version)) |
| 30950 | (sha256 |
| 30951 | (base32 |
| 30952 | "0fjf066jixk30fr8xwfalwfnhqpr56yv0cccyypnx2qp9bi9svb2")))) |
| 30953 | (propagated-inputs (list python-dbus python-pygobject)) |
| 30954 | (build-system python-build-system) |
| 30955 | (home-page "https://github.com/getsenic/gatt-python") |
| 30956 | (synopsis "Bluetooth GATT SDK for Python") |
| 30957 | (description "The Bluetooth @acronym{GATT, Generic ATTribute Profile} |
| 30958 | @acronym{SDK, Software Development Kit} for Python helps you implement and |
| 30959 | communicate with any Bluetooth Low Energy device that has a GATT |
| 30960 | profile. It supports: |
| 30961 | |
| 30962 | @itemize @bullet |
| 30963 | @item Discovering nearby Bluetooth Low Energy devices |
| 30964 | @item Connecting and disconnecting devices |
| 30965 | @item Implementing your custom GATT profile |
| 30966 | @item Accessing all GATT services |
| 30967 | @item Accessing all GATT characteristics |
| 30968 | @item Reading characteristic values |
| 30969 | @item Writing characteristic values |
| 30970 | @item Subscribing for characteristic value change notifications |
| 30971 | @end itemize |
| 30972 | |
| 30973 | Currently, Linux is the only platform supported by this library.") |
| 30974 | (license license:expat))) |
| 30975 | |
| 30976 | (define-public python-clrprint |
| 30977 | (package |
| 30978 | (name "python-clrprint") |
| 30979 | (version "2.0.1") |
| 30980 | (source (origin |
| 30981 | (method url-fetch) |
| 30982 | (uri (pypi-uri "clrprint" version)) |
| 30983 | (sha256 |
| 30984 | (base32 |
| 30985 | "0xfn8d1by2w7pjiji887qljk1avn4fylbnz1mj28gysm5g0zvy43")))) |
| 30986 | (build-system python-build-system) |
| 30987 | (arguments '(#:tests? #f)) ;there are no tests |
| 30988 | (propagated-inputs (list python-colorama python-termcolor)) |
| 30989 | (home-page "https://github.com/AbhijithAJ/clrprint") |
| 30990 | (synopsis "Print colorful output in the terminal") |
| 30991 | (description "@code{clrprint} is developed to print colorful output in the |
| 30992 | terminal. It has red, blue, green, yellow, purple and black/white (default) |
| 30993 | colors.") |
| 30994 | (license license:expat))) |
| 30995 | |
| 30996 | (define-public python-musical-scales |
| 30997 | (package |
| 30998 | (name "python-musical-scales") |
| 30999 | (version "1.0.1") |
| 31000 | (source (origin |
| 31001 | (method url-fetch) |
| 31002 | (uri (pypi-uri "musical-scales" version)) |
| 31003 | (sha256 |
| 31004 | (base32 |
| 31005 | "1ckn8n37i7b65h0i385ycn0w8sg9na0iabz0kmhxxc1wj0hddkw9")))) |
| 31006 | (build-system python-build-system) |
| 31007 | (native-inputs (list python-wheel)) |
| 31008 | (home-page "https://github.com/hmillerbakewell/musical-scale") |
| 31009 | (synopsis "Retrieve a scale based on a given mode and starting note") |
| 31010 | (description |
| 31011 | "Retrieve a scale based on a given mode and starting note. |
| 31012 | Information about these scales can be |
| 31013 | @url{https://en.wikipedia.org/wiki/List_of_musical_scales_and_modes, found on |
| 31014 | Wikipedia}.") |
| 31015 | (license license:expat))) |
| 31016 | |
| 31017 | (define-public python-langcodes |
| 31018 | (package |
| 31019 | (name "python-langcodes") |
| 31020 | (version "3.3.0") |
| 31021 | (source (origin |
| 31022 | (method url-fetch) |
| 31023 | (uri (pypi-uri "langcodes" version)) |
| 31024 | (sha256 |
| 31025 | (base32 |
| 31026 | "1xkyh3qdcigb18qiimbwl2669y22hhdmd89mqcd270c7lbahfkbr")))) |
| 31027 | (build-system python-build-system) |
| 31028 | (native-inputs (list python-pytest)) |
| 31029 | (home-page "https://github.com/rspeer/langcodes") |
| 31030 | (synopsis "Python library for working with language codes") |
| 31031 | (description |
| 31032 | "This package provides a Python library for working with and comparing |
| 31033 | language codes. |
| 31034 | |
| 31035 | @code{python-langcodes} implements @url{http://tools.ietf.org/html/bcp47, BCP |
| 31036 | 47}, the IETF Best Current Practices on Tags for Identifying Languages. BCP |
| 31037 | 47 is also known as RFC 5646. It subsumes ISO 639 and is backward compatible |
| 31038 | with it, and it also implements recommendations from the |
| 31039 | @url{http://cldr.unicode.org/, Unicode CLDR}. |
| 31040 | |
| 31041 | @code{python-langcodes} can also refer to a database of language properties |
| 31042 | and names, built from Unicode CLDR and the IANA subtag registry, if you |
| 31043 | install @code{python-language-data}.") |
| 31044 | (license license:expat))) |
| 31045 | |
| 31046 | (define-public python-geomet |
| 31047 | (package |
| 31048 | (name "python-geomet") |
| 31049 | (version "0.3.0") |
| 31050 | (source (origin |
| 31051 | (method url-fetch) |
| 31052 | (uri (pypi-uri "geomet" version)) |
| 31053 | (sha256 |
| 31054 | (base32 |
| 31055 | "06rfvadx5dr5xrgsc5bsmqil9c9kff6i13xl988gy0gfg0cl2lnb")))) |
| 31056 | (build-system python-build-system) |
| 31057 | (propagated-inputs (list python-click python-six)) |
| 31058 | (home-page "https://github.com/geomet/geomet") |
| 31059 | (synopsis "Convert GeoJSON to WKT/WKB (Well-Known Text/Binary) or |
| 31060 | GeoPackage Binary") |
| 31061 | (description "This package provides utilities and functions for converting |
| 31062 | GeoJSON to WKT/WKB (Well-Known Text/Binary) or GeoPackage Binary, and vice |
| 31063 | versa. Extended WKB/WKT are also supported.") |
| 31064 | (license license:asl2.0))) |
| 31065 | |
| 31066 | (define-public python-bsdiff4 |
| 31067 | (package |
| 31068 | (name "python-bsdiff4") |
| 31069 | (version "1.2.2") |
| 31070 | (home-page "https://github.com/ilanschnell/bsdiff4") |
| 31071 | (source (origin |
| 31072 | (method git-fetch) |
| 31073 | (uri (git-reference |
| 31074 | (url home-page) |
| 31075 | (commit version))) |
| 31076 | (file-name (git-file-name name version)) |
| 31077 | (sha256 |
| 31078 | (base32 |
| 31079 | "1fa0vkmbr0a9xifq7i5gfcf7ifn739i1fdij8awynm299fsqvvhx")))) |
| 31080 | (build-system python-build-system) |
| 31081 | (synopsis "Binary diff and patch using the BSDIFF4 format") |
| 31082 | (description "This package provides a Python library for the @code{bsdiff} |
| 31083 | binary diff utility. It also provides two command-line tools, @code{bsdiff4} |
| 31084 | and @code{bspatch4}.") |
| 31085 | (license license:bsd-2))) |
| 31086 | |
| 31087 | (define-public python-mpv |
| 31088 | (package |
| 31089 | (name "python-mpv") |
| 31090 | (version "1.0.1") |
| 31091 | (source |
| 31092 | (origin |
| 31093 | ;; python-mpv from pypi does not include the tests directory. |
| 31094 | (method git-fetch) |
| 31095 | (uri (git-reference |
| 31096 | (url "https://github.com/jaseg/python-mpv") |
| 31097 | (commit (string-append "v" version)))) |
| 31098 | (file-name (git-file-name name version)) |
| 31099 | (sha256 |
| 31100 | (base32 |
| 31101 | "10w6j3n62ap45sf6q487kz8z6g58sha37i14fa2hhng794z7a8jh")) |
| 31102 | (modules '((guix build utils))) |
| 31103 | (snippet |
| 31104 | #~(begin |
| 31105 | ;; One of the tests never completes, so neutering it using |
| 31106 | ;; early return allows other test to run without issue. |
| 31107 | (substitute* "tests/test_mpv.py" |
| 31108 | ;; Note the typo in "prooperty" - this was fixed later in |
| 31109 | ;; upstream but has no effect on whether the tests hangs or not. |
| 31110 | (("test_wait_for_prooperty_event_overflow.*" line) |
| 31111 | ;; The long whitespace between \n and return is to match the |
| 31112 | ;; identation level, which is significant in python. |
| 31113 | (string-append line "\n return\n"))))))) |
| 31114 | (build-system python-build-system) |
| 31115 | (arguments |
| 31116 | (list #:phases |
| 31117 | #~(modify-phases %standard-phases |
| 31118 | (add-before 'build 'patch-reference-to-mpv |
| 31119 | (lambda* (#:key inputs #:allow-other-keys) |
| 31120 | ;; Without an absolute path it is not able find and |
| 31121 | ;; load the libmpv library. |
| 31122 | (substitute* "mpv.py" |
| 31123 | (("sofile = .*") |
| 31124 | (string-append "sofile = \"" |
| 31125 | (search-input-file inputs "/lib/libmpv.so") |
| 31126 | "\"\n"))))) |
| 31127 | (add-before 'check 'prepare-for-tests |
| 31128 | (lambda _ |
| 31129 | ;; Fontconfig throws errors when it has no cache dir to use. |
| 31130 | (setenv "XDG_CACHE_HOME" (getcwd)) |
| 31131 | ;; Some tests fail without a writable and readable HOME. |
| 31132 | (setenv "HOME" (getcwd))))))) |
| 31133 | (native-inputs |
| 31134 | (list python-xvfbwrapper)) ; needed for tests only |
| 31135 | (inputs (list mpv)) |
| 31136 | (propagated-inputs (list python-pillow)) ; for raw screenshots |
| 31137 | (home-page "https://github.com/jaseg/python-mpv") |
| 31138 | (synopsis "Python interface to the mpv media player") |
| 31139 | (description |
| 31140 | "python-mpv is a ctypes-based python interface to the mpv media player. |
| 31141 | It gives you more or less full control of all features of the player, just |
| 31142 | as the lua interface does.") |
| 31143 | ;; From the project's README: |
| 31144 | ;; python-mpv inherits the underlying libmpv's license, which can be either |
| 31145 | ;; GPLv2 or later (default) or LGPLv2.1 or later. For details, see the mpv |
| 31146 | ;; copyright page. |
| 31147 | (license license:gpl2+))) |
| 31148 | |
| 31149 | (define-public python-biblib |
| 31150 | (let ((upstream-version "0.1.0") |
| 31151 | (commit "ab0e857b9198fe425ec9b02fcc293b5d9fd0c406") |
| 31152 | (revision "1")) |
| 31153 | (package |
| 31154 | (name "python-biblib") |
| 31155 | (version (git-version upstream-version revision commit)) |
| 31156 | (source |
| 31157 | (origin |
| 31158 | (method git-fetch) |
| 31159 | (uri (git-reference |
| 31160 | (url "https://github.com/aclements/biblib") |
| 31161 | (commit commit))) |
| 31162 | (sha256 |
| 31163 | (base32 "1ym1gwxys9gl5a7fjs6xh5z9w50pnq4z3rs6fx7kpv78hlrbjlip")) |
| 31164 | (file-name (git-file-name name version)))) |
| 31165 | (build-system python-build-system) |
| 31166 | (home-page "https://github.com/aclements/biblib") |
| 31167 | (synopsis "BibTeX parsing and transformation library") |
| 31168 | (description |
| 31169 | "Biblib provides a simple, standalone Python 3 package for parsing |
| 31170 | BibTeX bibliographic databases, as well as algorithms for manipulating BibTeX |
| 31171 | entries in BibTeX-y ways. Biblib's parser is derived directly from the WEB |
| 31172 | source code for BibTeX and hence (barring bugs in translation) should be fully |
| 31173 | compatible with BibTeX's own parser.") |
| 31174 | ;; N.B. It seems the parser was translated from WEB by hand: this |
| 31175 | ;; package does not contain any generated files. |
| 31176 | (license license:expat)))) |
| 31177 | |
| 31178 | (define-public python-i3ipc |
| 31179 | (package |
| 31180 | (name "python-i3ipc") |
| 31181 | (version "2.2.1") |
| 31182 | (source (origin |
| 31183 | (method git-fetch) |
| 31184 | (uri (git-reference |
| 31185 | (url "https://github.com/altdesktop/i3ipc-python") |
| 31186 | (commit (string-append "v" version)))) |
| 31187 | (file-name (git-file-name name version)) |
| 31188 | (sha256 |
| 31189 | (base32 |
| 31190 | "13bzs9dcv27czpnnbgz7a037lm8h991c8gk0qzzk5mq5yak24715")))) |
| 31191 | (build-system python-build-system) |
| 31192 | (arguments (list #:tests? #f)) ;FIXME: some tests are unable to run |
| 31193 | (propagated-inputs (list python-xlib)) |
| 31194 | (home-page "https://github.com/altdesktop/i3ipc-python") |
| 31195 | (synopsis "Python library for controlling i3 and Sway") |
| 31196 | (description |
| 31197 | "This package provides a Python library for controlling the i3 and Sway |
| 31198 | window managers.") |
| 31199 | (license license:bsd-3))) |
| 31200 | |
| 31201 | (define-public i3-autotiling |
| 31202 | (package |
| 31203 | (name "i3-autotiling") |
| 31204 | (version "1.8") |
| 31205 | (source (origin |
| 31206 | (method git-fetch) |
| 31207 | (uri (git-reference |
| 31208 | (url "https://github.com/nwg-piotr/autotiling") |
| 31209 | (commit (string-append "v" version)))) |
| 31210 | (file-name (git-file-name name version)) |
| 31211 | (sha256 |
| 31212 | (base32 |
| 31213 | "1nsm0gd45ys4ghlzrvjrf0lvcyhvpx58lz8gg325a762wn5a4a72")))) |
| 31214 | (build-system python-build-system) |
| 31215 | (arguments (list #:tests? #f)) ;no tests |
| 31216 | (native-inputs (list python-wheel)) |
| 31217 | (propagated-inputs (list python-i3ipc)) |
| 31218 | (home-page "https://github.com/nwg-piotr/autotiling") |
| 31219 | (synopsis "Automatically tile windows in i3 and Sway") |
| 31220 | (description |
| 31221 | "Script for Sway and i3 to automatically switch the horizontal/vertical |
| 31222 | window split orientation.") |
| 31223 | (license license:gpl3))) |
| 31224 | |
| 31225 | (define-public python-cyclic |
| 31226 | (package |
| 31227 | (name "python-cyclic") |
| 31228 | (version "1.0.0") |
| 31229 | (source (origin |
| 31230 | ;; Use git, as there are some test files missing from the PyPI |
| 31231 | ;; release, see https://github.com/neurobin/cyclic/issues/1 |
| 31232 | (method git-fetch) |
| 31233 | (uri (git-reference |
| 31234 | (url "https://github.com/neurobin/cyclic") |
| 31235 | ;; Release is not tagged on github, see |
| 31236 | ;; https://github.com/neurobin/cyclic/issues/2 |
| 31237 | (commit "bf616c47ea49a43500ea55a1e6f4890323be0679"))) |
| 31238 | (file-name (git-file-name name version)) |
| 31239 | (sha256 |
| 31240 | (base32 |
| 31241 | "0r8zzjdv70fpxssxps62rlgpii8fr9gh8gykdygqn6mkdnfjwgjc")))) |
| 31242 | (build-system python-build-system) |
| 31243 | (home-page "https://github.com/neurobin/cyclic") |
| 31244 | (synopsis "Handle cyclic relations") |
| 31245 | (description "This package handles cyclic relations compared by value.") |
| 31246 | (license license:bsd-3))) |
| 31247 | |
| 31248 | (define-public python-rcslice |
| 31249 | (package |
| 31250 | (name "python-rcslice") |
| 31251 | (version "1.1.0") |
| 31252 | (source (origin |
| 31253 | ;; Use git, as there are some test files missing from the PyPI |
| 31254 | ;; release, see https://github.com/neurobin/rcslice/issues/1 |
| 31255 | (method git-fetch) |
| 31256 | (uri (git-reference |
| 31257 | (url "https://github.com/neurobin/rcslice") |
| 31258 | ;; Releases are not tagged on github, see |
| 31259 | ;; https://github.com/neurobin/rcslice/issues/2 |
| 31260 | (commit "1e1ef42cd262db76b67ded430630d5b499790f42"))) |
| 31261 | (file-name (git-file-name name version)) |
| 31262 | (sha256 |
| 31263 | (base32 |
| 31264 | "1lmhcgghh60kvdlx0cin1phhgfy9jivc6l0mb4ibnpa1x1md0zvv")))) |
| 31265 | (build-system python-build-system) |
| 31266 | (home-page "https://github.com/neurobin/rcslice") |
| 31267 | (synopsis "Slice a list of sliceables") |
| 31268 | (description "This package provides Python module to slice a list of |
| 31269 | sliceables (1 indexed, both start and end index are inclusive). Helps to |
| 31270 | slice file content line by line or column by column or a combination of |
| 31271 | both.") |
| 31272 | (license license:bsd-3))) |
| 31273 | |
| 31274 | (define-public python-types-orjson |
| 31275 | (package |
| 31276 | (name "python-types-orjson") |
| 31277 | (version "3.6.2") |
| 31278 | (source (origin |
| 31279 | (method url-fetch) |
| 31280 | (uri (pypi-uri "types-orjson" version)) |
| 31281 | (sha256 |
| 31282 | (base32 |
| 31283 | "0f66lf2qrl9d4vad42db3dmnzv89h4rr05r5zxx5qcl6kb3zr6ng")))) |
| 31284 | (build-system python-build-system) |
| 31285 | (home-page "https://github.com/python/typeshed") |
| 31286 | (synopsis "Typing stubs for orjson") |
| 31287 | (description "This is a PEP 561 type stub package for the @code{orjson} |
| 31288 | package. It can be used by type-checking tools like mypy, PyCharm, pytype |
| 31289 | etc. to check code that uses @code{orjson}.") |
| 31290 | (license license:asl2.0))) |
| 31291 | |
| 31292 | (define-public python-nanoid |
| 31293 | ;; There are no tests on PyPi. |
| 31294 | (let ((commit "061f9a598f310b0e2e91b9ed6ce725a22770da64") |
| 31295 | (revision "0")) |
| 31296 | (package |
| 31297 | (name "python-nanoid") |
| 31298 | (version "2.0.0") |
| 31299 | (source |
| 31300 | (origin |
| 31301 | (method git-fetch) |
| 31302 | (uri |
| 31303 | (git-reference |
| 31304 | (url "https://github.com/puyuan/py-nanoid") |
| 31305 | (commit commit))) |
| 31306 | (file-name (git-file-name name commit)) |
| 31307 | (sha256 |
| 31308 | (base32 "0y1bcw0h27g8rkqq7cp33ywn0i0lp0q3rjixzkh4191y1dp9yf8s")))) |
| 31309 | (build-system python-build-system) |
| 31310 | (native-inputs (list python-pytest)) |
| 31311 | (arguments |
| 31312 | '(#:phases |
| 31313 | (modify-phases %standard-phases |
| 31314 | (replace 'check |
| 31315 | (lambda* (#:key tests? inputs outputs #:allow-other-keys) |
| 31316 | (when tests? |
| 31317 | (invoke "pytest"))))))) |
| 31318 | (home-page "https://github.com/puyuan/py-nanoid") |
| 31319 | (synopsis "Unique string ID generator") |
| 31320 | (description |
| 31321 | "This package provides a tiny, secure, URL-friendly, unique string ID |
| 31322 | generator for Python.") |
| 31323 | (license license:expat)))) |
| 31324 | |
| 31325 | (define-public python-misskey |
| 31326 | (package |
| 31327 | (name "python-misskey") |
| 31328 | (version "4.1.0") |
| 31329 | (source (origin |
| 31330 | (method git-fetch) |
| 31331 | (uri (git-reference |
| 31332 | (url "https://github.com/YuzuRyo61/Misskey.py") |
| 31333 | (commit (string-append "v" version)))) |
| 31334 | (file-name (git-file-name name version)) |
| 31335 | (sha256 |
| 31336 | (base32 |
| 31337 | "0rma8pdsjsy00cg76q6q4qki4xpldykmz1m6dl3w2bjjxfhlbaz5")))) |
| 31338 | (build-system python-build-system) |
| 31339 | (arguments (list #:tests? #f)) ;needs network |
| 31340 | (propagated-inputs (list python-requests)) |
| 31341 | (home-page "https://misskeypy.readthedocs.io") |
| 31342 | (synopsis "Python bindings for Misskey's API") |
| 31343 | (description |
| 31344 | "This package provides access to Misskey's API. Misskey is a SNS |
| 31345 | platform using the ActivityPub protocol.") |
| 31346 | (license license:expat))) |
| 31347 | |
| 31348 | (define-public python-lief |
| 31349 | (package |
| 31350 | (name "python-lief") |
| 31351 | (version "0.12.3") |
| 31352 | (source (origin |
| 31353 | (method git-fetch) |
| 31354 | (uri (git-reference |
| 31355 | (url "https://github.com/lief-project/LIEF") |
| 31356 | (commit version))) |
| 31357 | (file-name (git-file-name name version)) |
| 31358 | (sha256 |
| 31359 | (base32 |
| 31360 | "11i6hqmcjh56y554kqhl61698n9v66j2qk1c1g63mv2w07h2z661")))) |
| 31361 | (build-system python-build-system) |
| 31362 | (native-inputs (list cmake)) |
| 31363 | (arguments |
| 31364 | (list |
| 31365 | #:tests? #f ;needs network |
| 31366 | #:phases #~(modify-phases %standard-phases |
| 31367 | (replace 'build |
| 31368 | (lambda _ |
| 31369 | (invoke |
| 31370 | "python" "setup.py" "--sdk" "build" |
| 31371 | (string-append |
| 31372 | "-j" (number->string (parallel-job-count))))))))) |
| 31373 | (home-page "https://github.com/lief-project/LIEF") |
| 31374 | (synopsis "Library to instrument executable formats") |
| 31375 | (description |
| 31376 | "@code{python-lief} is a cross platform library which can parse, modify |
| 31377 | and abstract ELF, PE and MachO formats.") |
| 31378 | (license license:asl2.0))) |
| 31379 | |
| 31380 | (define-public python-eris |
| 31381 | (package |
| 31382 | (name "python-eris") |
| 31383 | (version "0.0.2") |
| 31384 | (source (origin |
| 31385 | (method url-fetch) |
| 31386 | (uri (pypi-uri "eris" version)) |
| 31387 | (sha256 |
| 31388 | (base32 |
| 31389 | "16wbmahmfzdzrsjbn8jzi79vhghrzvvlcgnym20q0v3p3i4x47pq")))) |
| 31390 | (build-system python-build-system) |
| 31391 | (propagated-inputs (list python-pycryptodome)) |
| 31392 | (home-page "https://codeberg.org/eris/python-eris") |
| 31393 | (synopsis "Python implementation of ERIS") |
| 31394 | (description |
| 31395 | "Python implementation of the @acronym{ERIS, Encoding for Robust Immutable |
| 31396 | Storage}.") |
| 31397 | (license license:lgpl3+))) |
| 31398 | |
| 31399 | (define-public shrinkwrap |
| 31400 | (package |
| 31401 | (name "shrinkwrap") |
| 31402 | (version "0.1.0") |
| 31403 | (source (origin |
| 31404 | (method git-fetch) |
| 31405 | (uri (git-reference |
| 31406 | (url "https://github.com/fzakaria/shrinkwrap") |
| 31407 | (commit (string-append "v" version)))) |
| 31408 | (file-name (git-file-name name version)) |
| 31409 | (modules '((guix build utils))) |
| 31410 | (snippet '(substitute* "pyproject.toml" |
| 31411 | (("lief = \"0\\.12\\.0\"") "lief = \"*\""))) |
| 31412 | (sha256 |
| 31413 | (base32 |
| 31414 | "1f3qrygj16y767q2c7pn9j6m95ggcmj9s5cx9v92ygygly4mr3jp")))) |
| 31415 | (build-system python-build-system) |
| 31416 | (arguments |
| 31417 | (list |
| 31418 | #:phases |
| 31419 | #~(modify-phases %standard-phases |
| 31420 | (replace 'check |
| 31421 | (lambda* (#:key tests? #:allow-other-keys) |
| 31422 | (when tests? |
| 31423 | (invoke "pytest" "-v" "tests")))) |
| 31424 | ;; XXX: PEP 517 manual build copied from python-isort. |
| 31425 | (replace 'build |
| 31426 | (lambda _ |
| 31427 | (invoke "python" "-m" "build" "--wheel" "--no-isolation" "."))) |
| 31428 | (replace 'install |
| 31429 | (lambda _ |
| 31430 | (let ((whl (car (find-files "dist" "\\.whl$")))) |
| 31431 | (invoke "pip" "--no-cache-dir" "--no-input" |
| 31432 | "install" "--no-deps" "--prefix" #$output whl))))))) |
| 31433 | (native-inputs |
| 31434 | (list python-click |
| 31435 | python-poetry-core |
| 31436 | python-pypa-build |
| 31437 | python-pytest)) |
| 31438 | (inputs (list python-lief python-sh)) |
| 31439 | (home-page "https://github.com/fzakaria/shrinkwrap") |
| 31440 | (synopsis "Emboss needed dependencies on the top level executable") |
| 31441 | (description |
| 31442 | "@code{shrinkwrap} is a tool which will discover all transitive dynamic |
| 31443 | shared objects, and lift them up to the executable referenced by absolute |
| 31444 | path.") |
| 31445 | (license license:expat))) |
| 31446 | |
| 31447 | (define-public python-pymonad |
| 31448 | (package |
| 31449 | (name "python-pymonad") |
| 31450 | (version "2.4.0") |
| 31451 | ;; The tests are incomplete in the PyPI archive. |
| 31452 | (source (origin |
| 31453 | (method git-fetch) |
| 31454 | (uri (git-reference |
| 31455 | (url "https://github.com/jasondelaat/pymonad") |
| 31456 | (commit (string-append "v" version)))) |
| 31457 | (file-name (git-file-name name version)) |
| 31458 | (sha256 |
| 31459 | (base32 |
| 31460 | "0ci1mpydldiyg9qv6d19ljhfh7wxlrl2k4mlvqd9bm7dqvpdjsx7")))) |
| 31461 | (build-system python-build-system) |
| 31462 | (arguments |
| 31463 | `(#:phases |
| 31464 | (modify-phases %standard-phases |
| 31465 | (replace 'check |
| 31466 | (lambda* (#:key tests? #:allow-other-keys) |
| 31467 | (when tests? |
| 31468 | (invoke "./run_tests.sh"))))))) |
| 31469 | (home-page "https://github.com/jasondelaat/pymonad") |
| 31470 | (synopsis "Monadic style functional programming for Python") |
| 31471 | (description "@code{python-pymonad} implements data structures typically |
| 31472 | available in purely functional or functional first programming languages such |
| 31473 | as Haskell and F#. Included are |
| 31474 | |
| 31475 | @itemize |
| 31476 | @item Monad and Monoid data types with several common monads such as Maybe and |
| 31477 | State |
| 31478 | @item Useful tools such as the @code{@@curry} decorator for defining curried |
| 31479 | functions |
| 31480 | @item Type annotations to help ensure correct usage |
| 31481 | @end itemize") |
| 31482 | (license license:bsd-3))) |
| 31483 | |
| 31484 | ;;; |
| 31485 | ;;; Avoid adding new packages to the end of this file. To reduce the chances |
| 31486 | ;;; of a merge conflict, place them above by existing packages with similar |
| 31487 | ;;; functionality or similar names. |
| 31488 | ;;; |