| 1 | ;;; GNU Guix --- Functional package management for GNU |
| 2 | ;;; Copyright © 2013 Nikita Karetnikov <[email protected]> |
| 3 | ;;; Copyright © 2013-2023 Ludovic Courtès <[email protected]> |
| 4 | ;;; Copyright © 2013, 2014, 2015, 2016, 2019, 2023 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-2023 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-2023 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–2018, 2021–2023 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-2023 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, 2023 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, 2023 Jack Hill <[email protected]> |
| 62 | ;;; Copyright © 2019-2023, Guillaume Le Vaillant <[email protected]> |
| 63 | ;;; Copyright © 2019, 2020 Alex Griffin <[email protected]> |
| 64 | ;;; Copyright © 2019, 2020, 2021, 2022, 2023 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-2023 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, 2023 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-2023 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, 2023 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, 2022, 2023 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, 2023 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 | ;;; Copyright © 2022 Nicolas Graves <[email protected]> |
| 135 | ;;; Copyright © 2023 Gabriel Wicki <[email protected]> |
| 136 | ;;; Copyright © 2023 Amade Nemes <[email protected]> |
| 137 | ;;; Copyright © 2023 Bruno Victal <[email protected]> |
| 138 | ;;; Copyright © 2023 Kaelyn Takata <[email protected]> |
| 139 | ;;; Copyright © 2023 Dominik Delgado Steuter <[email protected]> |
| 140 | ;;; Copyright © 2023 Ivan Vilata-i-Balaguer <[email protected]> |
| 141 | ;;; Copyright © 2023 Ontje Lünsdorf <[email protected]> |
| 142 | ;;; Copyright © 2023 Parnikkapore <[email protected]> |
| 143 | ;;; Copyright © 2023 Foundation Devices, Inc. <[email protected]> |
| 144 | ;;; |
| 145 | ;;; This file is part of GNU Guix. |
| 146 | ;;; |
| 147 | ;;; GNU Guix is free software; you can redistribute it and/or modify it |
| 148 | ;;; under the terms of the GNU General Public License as published by |
| 149 | ;;; the Free Software Foundation; either version 3 of the License, or (at |
| 150 | ;;; your option) any later version. |
| 151 | ;;; |
| 152 | ;;; GNU Guix is distributed in the hope that it will be useful, but |
| 153 | ;;; WITHOUT ANY WARRANTY; without even the implied warranty of |
| 154 | ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 155 | ;;; GNU General Public License for more details. |
| 156 | ;;; |
| 157 | ;;; You should have received a copy of the GNU General Public License |
| 158 | ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. |
| 159 | |
| 160 | (define-module (gnu packages python-xyz) |
| 161 | #:use-module ((guix licenses) #:prefix license:) |
| 162 | #:use-module (gnu packages) |
| 163 | #:use-module (gnu packages adns) |
| 164 | #:use-module (gnu packages aidc) |
| 165 | #:use-module (gnu packages algebra) |
| 166 | #:use-module (gnu packages astronomy) |
| 167 | #:use-module (gnu packages attr) |
| 168 | #:use-module (gnu packages backup) |
| 169 | #:use-module (gnu packages base) |
| 170 | #:use-module (gnu packages bash) |
| 171 | #:use-module (gnu packages bdw-gc) |
| 172 | #:use-module (gnu packages check) |
| 173 | #:use-module (gnu packages cmake) |
| 174 | #:use-module (gnu packages compression) |
| 175 | #:use-module (gnu packages cpp) |
| 176 | #:use-module (gnu packages crates-io) |
| 177 | #:use-module (gnu packages crypto) |
| 178 | #:use-module (gnu packages databases) |
| 179 | #:use-module (gnu packages dbm) |
| 180 | #:use-module (gnu packages digest) |
| 181 | #:use-module (gnu packages django) |
| 182 | #:use-module (gnu packages djvu) |
| 183 | #:use-module (gnu packages docker) |
| 184 | #:use-module (gnu packages documentation) |
| 185 | #:use-module (gnu packages enchant) |
| 186 | #:use-module (gnu packages file) |
| 187 | #:use-module (gnu packages fonts) |
| 188 | #:use-module (gnu packages fontutils) |
| 189 | #:use-module (gnu packages freedesktop) |
| 190 | #:use-module (gnu packages gcc) |
| 191 | #:use-module (gnu packages gdb) |
| 192 | #:use-module (gnu packages geo) |
| 193 | #:use-module (gnu packages ghostscript) |
| 194 | #:use-module (gnu packages gl) |
| 195 | #:use-module (gnu packages glib) |
| 196 | #:use-module (gnu packages gnome) |
| 197 | #:use-module (gnu packages gnupg) |
| 198 | #:use-module (gnu packages graphics) |
| 199 | #:use-module (gnu packages graphviz) |
| 200 | #:use-module (gnu packages gsasl) |
| 201 | #:use-module (gnu packages gstreamer) |
| 202 | #:use-module (gnu packages gtk) |
| 203 | #:use-module (gnu packages haskell-xyz) |
| 204 | #:use-module (gnu packages icu4c) |
| 205 | #:use-module (gnu packages image) |
| 206 | #:use-module (gnu packages image-processing) |
| 207 | #:use-module (gnu packages imagemagick) |
| 208 | #:use-module (gnu packages inkscape) |
| 209 | #:use-module (gnu packages java) |
| 210 | #:use-module (gnu packages jupyter) |
| 211 | #:use-module (gnu packages kerberos) |
| 212 | #:use-module (gnu packages libevent) |
| 213 | #:use-module (gnu packages libffi) |
| 214 | #:use-module (gnu packages libidn) |
| 215 | #:use-module (gnu packages libusb) |
| 216 | #:use-module (gnu packages linux) |
| 217 | #:use-module (gnu packages llvm) |
| 218 | #:use-module (gnu packages machine-learning) |
| 219 | #:use-module (gnu packages man) |
| 220 | #:use-module (gnu packages markup) |
| 221 | #:use-module (gnu packages maths) |
| 222 | #:use-module (gnu packages monitoring) |
| 223 | #:use-module (gnu packages multiprecision) |
| 224 | #:use-module (gnu packages ncurses) |
| 225 | #:use-module (gnu packages networking) |
| 226 | #:use-module (gnu packages ninja) |
| 227 | #:use-module (gnu packages node) |
| 228 | #:use-module (gnu packages openstack) |
| 229 | #:use-module (gnu packages pcre) |
| 230 | #:use-module (gnu packages pdf) |
| 231 | #:use-module (gnu packages perl) |
| 232 | #:use-module (gnu packages photo) |
| 233 | #:use-module (gnu packages pkg-config) |
| 234 | #:use-module (gnu packages protobuf) |
| 235 | #:use-module (gnu packages python) |
| 236 | #:use-module (gnu packages python-build) |
| 237 | #:use-module (gnu packages python-check) |
| 238 | #:use-module (gnu packages python-compression) |
| 239 | #:use-module (gnu packages python-crypto) |
| 240 | #:use-module (gnu packages python-science) |
| 241 | #:use-module (gnu packages python-web) |
| 242 | #:use-module (gnu packages qt) |
| 243 | #:use-module (gnu packages rdf) |
| 244 | #:use-module (gnu packages readline) |
| 245 | #:use-module (gnu packages regex) |
| 246 | #:use-module (gnu packages scanner) |
| 247 | #:use-module (gnu packages sdl) |
| 248 | #:use-module (gnu packages search) |
| 249 | #:use-module (gnu packages serialization) |
| 250 | #:use-module (gnu packages shells) |
| 251 | #:use-module (gnu packages sphinx) |
| 252 | #:use-module (gnu packages ssh) |
| 253 | #:use-module (gnu packages swig) |
| 254 | #:use-module (gnu packages tcl) |
| 255 | #:use-module (gnu packages terminals) |
| 256 | #:use-module (gnu packages tex) |
| 257 | #:use-module (gnu packages texinfo) |
| 258 | #:use-module (gnu packages textutils) |
| 259 | #:use-module (gnu packages time) |
| 260 | #:use-module (gnu packages tls) |
| 261 | #:use-module (gnu packages version-control) |
| 262 | #:use-module (gnu packages video) |
| 263 | #:use-module (gnu packages web) |
| 264 | #:use-module (gnu packages wxwidgets) |
| 265 | #:use-module (gnu packages xml) |
| 266 | #:use-module (gnu packages xdisorg) |
| 267 | #:use-module (gnu packages xorg) |
| 268 | #:use-module (guix packages) |
| 269 | #:use-module (guix build-system cargo) |
| 270 | #:use-module (guix build-system cmake) |
| 271 | #:use-module (guix build-system gnu) |
| 272 | #:use-module (guix build-system pyproject) |
| 273 | #:use-module (guix build-system python) |
| 274 | #:use-module (guix download) |
| 275 | #:use-module (guix hg-download) |
| 276 | #:use-module (guix git-download) |
| 277 | #:use-module (guix gexp) |
| 278 | #:use-module (guix utils) |
| 279 | #:use-module (srfi srfi-1) |
| 280 | #:use-module (srfi srfi-26)) |
| 281 | |
| 282 | (define-public python-xmldiff |
| 283 | (package |
| 284 | (name "python-xmldiff") |
| 285 | (version "2.4") |
| 286 | (source |
| 287 | (origin |
| 288 | (method url-fetch) |
| 289 | (uri (pypi-uri "xmldiff" version)) |
| 290 | (sha256 |
| 291 | (base32 "0qygxi3z1jwb0471k7bh5gcqf7wqm4xhrkmwhf36gjgjw46a5gh5")))) |
| 292 | (build-system python-build-system) |
| 293 | (propagated-inputs (list python-lxml python-six)) |
| 294 | (home-page "https://github.com/Shoobx/xmldiff") |
| 295 | (synopsis "Creates diffs of XML files") |
| 296 | (description "This Python tool figures out the differences between two |
| 297 | similar XML files, in the same way the @command{diff} utility does it.") |
| 298 | (license license:expat))) |
| 299 | |
| 300 | (define-public python-janus |
| 301 | (package |
| 302 | (name "python-janus") |
| 303 | (version "1.0.0") |
| 304 | (source |
| 305 | (origin |
| 306 | (method url-fetch) |
| 307 | (uri (pypi-uri "janus" version)) |
| 308 | (sha256 |
| 309 | (base32 "04hnrdcf03g1s0x3sr72sh9gnszz6kyfsl9dg8a4n0zvvhn6z5yz")))) |
| 310 | (build-system pyproject-build-system) |
| 311 | (native-inputs |
| 312 | (list python-pytest python-pytest-cov python-pytest-asyncio)) |
| 313 | (propagated-inputs (list python-typing-extensions)) |
| 314 | (home-page "https://github.com/aio-libs/janus/") |
| 315 | (synopsis |
| 316 | "Sync-async queue to interoperate between asyncio tasks and classic threads") |
| 317 | (description |
| 318 | "Mixed sync-async queue, supposed to be used for communicating between |
| 319 | classic synchronous (threaded) code and asynchronous (in terms of |
| 320 | @url{https://docs.python.org/3/library/asyncio.html,asyncio}) one. Like |
| 321 | @url{https://en.wikipedia.org/wiki/Janus,Janus god} the queue object from the |
| 322 | library has two faces: synchronous and asynchronous interface. Synchronous is |
| 323 | fully compatible with |
| 324 | @url{https://docs.python.org/3/library/queue.html,standard queue}, |
| 325 | asynchronous one follows |
| 326 | @url{https://docs.python.org/3/library/asyncio-queue.html,asyncio queue |
| 327 | design}.") |
| 328 | (license license:asl2.0))) |
| 329 | |
| 330 | (define-public python-jupytext |
| 331 | (package |
| 332 | (name "python-jupytext") |
| 333 | (version "1.14.4") |
| 334 | (source |
| 335 | (origin |
| 336 | (method git-fetch) |
| 337 | (uri (git-reference |
| 338 | (url "https://github.com/mwouts/jupytext") |
| 339 | (commit (string-append "v" version)))) |
| 340 | (file-name (git-file-name name version)) |
| 341 | (sha256 |
| 342 | (base32 "19d443vx597zzxna09qpync9iic3mris80bwm3kd8xaxaq0zq9w4")))) |
| 343 | (build-system python-build-system) |
| 344 | (arguments |
| 345 | (list |
| 346 | #:phases |
| 347 | #~(modify-phases %standard-phases |
| 348 | (replace 'check |
| 349 | (lambda* (#:key tests? #:allow-other-keys) |
| 350 | ;; some tests fail when HOME=/homeless-shelter. |
| 351 | (setenv "HOME" "/tmp") |
| 352 | ;; OSError: [Errno 18] Invalid cross-device link |
| 353 | (setenv "TMPDIR" "/tmp") |
| 354 | (when tests? |
| 355 | (let ((disabled-tests |
| 356 | (list "test_create_header_with_set_formats" |
| 357 | "test_pre_commit_hook" |
| 358 | "test_sync_with_pre_commit_hook"))) |
| 359 | (invoke "pytest" "-vv" "-k" |
| 360 | (string-append "not " |
| 361 | (string-join disabled-tests |
| 362 | " and not ")))))))))) |
| 363 | (native-inputs |
| 364 | (list git-minimal |
| 365 | pre-commit |
| 366 | python-autopep8 |
| 367 | python-black |
| 368 | python-flake8 |
| 369 | python-gitpython |
| 370 | python-isort |
| 371 | python-ipython-genutils |
| 372 | python-jupyter-server |
| 373 | python-pytest |
| 374 | python-pyaml)) |
| 375 | (propagated-inputs |
| 376 | (list python-markdown-it-py |
| 377 | python-mdit-py-plugins |
| 378 | python-nbformat)) |
| 379 | (home-page "https://github.com/mwouts/jupytext") |
| 380 | (synopsis |
| 381 | "Jupyter notebooks as Markdown documents, Julia, Python or R scripts") |
| 382 | (description |
| 383 | "Jupytext is a plugin for Jupyter that can save Jupyter notebooks as |
| 384 | either Markdown files or scripts in many languages. Common use cases for |
| 385 | Jupytext are: |
| 386 | |
| 387 | @itemize |
| 388 | @item version control on Jupyter Notebooks |
| 389 | @item editing, merging or refactoring notebooks in your favorite text editor |
| 390 | @item applying Q&A checks on notebooks. |
| 391 | @end itemize |
| 392 | ") |
| 393 | (license license:expat))) |
| 394 | |
| 395 | (define-public python-logzero |
| 396 | (package |
| 397 | (name "python-logzero") |
| 398 | (version "1.7.0") |
| 399 | (source |
| 400 | (origin |
| 401 | (method url-fetch) |
| 402 | (uri (pypi-uri "logzero" version)) |
| 403 | (sha256 |
| 404 | (base32 "10nh186vk6hpnpfycym44gja4fja0jyzw7q8dwimfd1rmv9xswvz")))) |
| 405 | (build-system python-build-system) |
| 406 | (native-inputs |
| 407 | (list python-pytest python-pytest-runner)) |
| 408 | (arguments |
| 409 | `(#:phases |
| 410 | (modify-phases %standard-phases |
| 411 | (replace 'check |
| 412 | (lambda* (#:key tests? inputs outputs #:allow-other-keys) |
| 413 | (when tests? |
| 414 | (add-installed-pythonpath inputs outputs) |
| 415 | (invoke "pytest"))))))) |
| 416 | (home-page "https://github.com/metachris/logzero") |
| 417 | (synopsis "Robust and effective logging for Python") |
| 418 | (description |
| 419 | "@code{logzero} provides a fully configured Python logger object for |
| 420 | easy logging and rotating to a console or a file.") |
| 421 | (license license:expat))) |
| 422 | |
| 423 | (define-public python-logbook |
| 424 | (package |
| 425 | (name "python-logbook") |
| 426 | (version "1.5.3") |
| 427 | (source |
| 428 | (origin |
| 429 | (method url-fetch) |
| 430 | (uri (pypi-uri "Logbook" version)) |
| 431 | (sha256 |
| 432 | (base32 "1s1gyfw621vid7qqvhddq6c3z2895ci4lq3g0r1swvpml2nm9x36")))) |
| 433 | (build-system python-build-system) |
| 434 | (arguments |
| 435 | `(#:phases |
| 436 | (modify-phases %standard-phases |
| 437 | (add-before 'build 'cythonize-sources |
| 438 | (lambda _ |
| 439 | (with-directory-excursion "logbook" |
| 440 | (invoke "cython" "_speedups.pyx")))) |
| 441 | (replace 'check |
| 442 | (lambda* (#:key tests? #:allow-other-keys) |
| 443 | (when tests? |
| 444 | ;; Check cython build also |
| 445 | (setenv "CYBUILD" "True") |
| 446 | (invoke "pytest" "--cov=logbook" "-r" "s" "tests"))))))) |
| 447 | (native-inputs |
| 448 | (list python-cython python-mock python-pytest python-pytest-cov |
| 449 | python-brotli)) |
| 450 | (home-page "https://github.com/getlogbook/logbook") |
| 451 | (synopsis "Logbook is a logging replacement for Python") |
| 452 | (description |
| 453 | "Logbook is a logging system for Python that replaces the standard |
| 454 | library’s logging module. It was designed with both complex and simple |
| 455 | applications in mind and the idea to make logging fun.") |
| 456 | (license license:bsd-3))) |
| 457 | |
| 458 | (define-public python-ubelt |
| 459 | (package |
| 460 | (name "python-ubelt") |
| 461 | (version "1.0.1") |
| 462 | (source |
| 463 | (origin |
| 464 | (method git-fetch) |
| 465 | (uri (git-reference |
| 466 | (url "https://github.com/Erotemic/ubelt") |
| 467 | (commit (string-append "v" version)))) |
| 468 | (file-name (git-file-name name version)) |
| 469 | (sha256 |
| 470 | (base32 |
| 471 | "0hac9nqqvqfbca2s4g0mp1fnj0ah60bg9fb8234ibna3jww8qs33")))) |
| 472 | (build-system python-build-system) |
| 473 | (arguments |
| 474 | (list #:phases |
| 475 | #~(modify-phases %standard-phases |
| 476 | (replace 'check |
| 477 | (lambda* (#:key tests? #:allow-other-keys) |
| 478 | (when tests? |
| 479 | (setenv "HOME" "/tmp") ;else the test suite hangs |
| 480 | (invoke "pytest" "-vv" "-k" |
| 481 | (string-append |
| 482 | ;; The builder user home doesn't match HOME, |
| 483 | ;; which causes this test to fail. |
| 484 | "not userhome " |
| 485 | ;; This one pointlessly tries |
| 486 | ;; locating various binaries on |
| 487 | ;; the path. |
| 488 | "and not find_exe")))))))) |
| 489 | (propagated-inputs (list python-ordered-set)) |
| 490 | (native-inputs |
| 491 | (list python-pytest |
| 492 | python-requests |
| 493 | python-xdoctest)) |
| 494 | (home-page "https://github.com/Erotemic/ubelt") |
| 495 | (synopsis "Python library for hashing, caching, timing and more") |
| 496 | (description "Ubelt is a small library of simple functions that extend the |
| 497 | Python standard library. It includes an @acronym{API, Application Programming |
| 498 | Interface} to simplify common problems such as caching, timing, computing |
| 499 | progress, among other things.") |
| 500 | (license license:asl2.0))) |
| 501 | |
| 502 | (define-public python-ueberzug |
| 503 | (package |
| 504 | (name "python-ueberzug") |
| 505 | (version "18.1.9") |
| 506 | (source |
| 507 | (origin |
| 508 | (method url-fetch) |
| 509 | (uri (pypi-uri "ueberzug" version)) |
| 510 | (sha256 |
| 511 | (base32 |
| 512 | "1hxd45dnwa9yv908acarr98n2drmar66wzq9z2qd3irj24srzr3w")))) |
| 513 | (build-system python-build-system) |
| 514 | (inputs |
| 515 | (list libx11 libxext)) |
| 516 | (propagated-inputs |
| 517 | (list python-attrs python-docopt python-pillow python-xlib)) |
| 518 | (home-page "https://github.com/seebye/ueberzug") |
| 519 | (synopsis "Command line util to display images in combination with X11") |
| 520 | (description "Überzug is a command line util which draws images on |
| 521 | terminals by using child windows. The advantages of using Überzug are: |
| 522 | @itemize |
| 523 | @item No race conditions as a new window is created to display images. |
| 524 | @item Expose events will be processed, so images will be redrawn on switch |
| 525 | workspaces. |
| 526 | @item Tmux support (excluding multi pane windows). |
| 527 | @item Terminals without the WINDOWID environment variable are supported. |
| 528 | @item Chars are used as position - and size unit. |
| 529 | @item No memory leak (/ unlimited cache). |
| 530 | @end itemize") |
| 531 | (license license:gpl3+))) |
| 532 | |
| 533 | (define-public python-fire |
| 534 | (package |
| 535 | (name "python-fire") |
| 536 | (version "0.5.0") |
| 537 | (source |
| 538 | (origin |
| 539 | (method url-fetch) |
| 540 | (uri (pypi-uri "fire" version)) |
| 541 | (sha256 |
| 542 | (base32 |
| 543 | "1imc9ais15dz3gmphawql86l9av5dykbp4hz0883k5n8k2gd9c56")))) |
| 544 | (build-system python-build-system) |
| 545 | (arguments |
| 546 | '(#:phases |
| 547 | (modify-phases %standard-phases |
| 548 | (replace 'check |
| 549 | (lambda* (#:key tests? #:allow-other-keys) |
| 550 | (when tests? |
| 551 | (invoke "pytest"))))))) |
| 552 | (propagated-inputs |
| 553 | (list python-six python-termcolor)) |
| 554 | (native-inputs |
| 555 | (list python-mock python-pytest)) |
| 556 | (synopsis "Library for automatically generating command line interfaces") |
| 557 | (description |
| 558 | "Fire is a library for automatically generating command line interfaces |
| 559 | from absolutely any Python object. The following are the advantages: |
| 560 | @itemize |
| 561 | @item A simple way to create a CLI in Python. |
| 562 | @item A helpful tool for developing and debugging Python code. |
| 563 | @item Helps with exploring existing code or turning other people's code into a |
| 564 | command line interface. |
| 565 | @item Makes transitioning between Bash and Python easier. |
| 566 | @item Makes using a Python REPL easier by setting up the REPL with the modules |
| 567 | and variables you'll need already imported and created. |
| 568 | @end itemize") |
| 569 | (home-page "https://github.com/google/python-fire") |
| 570 | (license license:asl2.0))) |
| 571 | |
| 572 | (define-public python-fit-nbinom |
| 573 | (package |
| 574 | (name "python-fit-nbinom") |
| 575 | (version "1.1") |
| 576 | (source (origin |
| 577 | (method url-fetch) |
| 578 | (uri (pypi-uri "fit_nbinom" version)) |
| 579 | (sha256 |
| 580 | (base32 |
| 581 | "12v8l5i35vjbpvh5i4lw29ys6vpr3z7pysyrx33hxaq09zr015mx")))) |
| 582 | (build-system pyproject-build-system) |
| 583 | (propagated-inputs (list python-numpy python-scipy)) |
| 584 | (home-page "https://github.com/joachimwolff/fit_nbinom") |
| 585 | (synopsis "Negative binomial maximum likelihood estimator") |
| 586 | (description "This package provides an implementation in Python using |
| 587 | scipy and numpy of negative binomial maximum likelihood estimation.") |
| 588 | (license license:gpl3+))) |
| 589 | |
| 590 | (define-public python-docrep |
| 591 | (package |
| 592 | (name "python-docrep") |
| 593 | (version "0.3.2") |
| 594 | (source (origin |
| 595 | (method url-fetch) |
| 596 | (uri (pypi-uri "docrep" version)) |
| 597 | (sha256 |
| 598 | (base32 |
| 599 | "0523jrzjj29kxpdllmfhrfj9kysi9mphp2m7ippjkn5b07i1g2pd")))) |
| 600 | (build-system pyproject-build-system) |
| 601 | (propagated-inputs (list python-six)) |
| 602 | (native-inputs (list python-pytest python-pytest-runner)) |
| 603 | (home-page "https://github.com/Chilipp/docrep") |
| 604 | (synopsis "Python package for docstring repetition") |
| 605 | (description "Docrep is the documentation repetition module. This module |
| 606 | targets developers that develop complex and nested Python APIs and helps them |
| 607 | to create a well-documented piece of software.") |
| 608 | (license license:asl2.0))) |
| 609 | |
| 610 | (define-public python-dotmap |
| 611 | (package |
| 612 | (name "python-dotmap") |
| 613 | (version "1.3.30") |
| 614 | (source (origin |
| 615 | (method url-fetch) |
| 616 | (uri (pypi-uri "dotmap" version)) |
| 617 | (sha256 |
| 618 | (base32 |
| 619 | "0s5kb2v7jd0narz6m6jcicak3h5pw290wz21cdsv8pq77y9sf8aq")))) |
| 620 | (build-system python-build-system) |
| 621 | (home-page "https://github.com/drgrib/dotmap") |
| 622 | (synopsis "Ordered, dynamically-expandable dot-access dictionary") |
| 623 | (description |
| 624 | "DotMap is a dot-access dictionary subclass that has dynamic |
| 625 | hierarchy creation, can be initialized with keys, can be initialized from a |
| 626 | dictionary, can be convert to a dictionary, and is ordered by insertion.") |
| 627 | (license license:expat))) |
| 628 | |
| 629 | (define-public python-dotty-dict |
| 630 | (package |
| 631 | (name "python-dotty-dict") |
| 632 | (version "1.3.1") |
| 633 | (source (origin |
| 634 | (method url-fetch) |
| 635 | (uri (pypi-uri "dotty_dict" version)) |
| 636 | (sha256 |
| 637 | (base32 |
| 638 | "058sah2nyg44xq5wxywlzc3abzcv9fifnlvsflwma9mfp01nw0ab")))) |
| 639 | (build-system pyproject-build-system) |
| 640 | (native-inputs (list python-poetry-core)) |
| 641 | (home-page "https://github.com/pawelzny/dotty_dict") |
| 642 | (synopsis "Python library for accessing dictionaries using a dot syntax") |
| 643 | (description "This package provides a library that wraps the traditional |
| 644 | Python dictionaries and provides a syntax to access nested dictionaries values |
| 645 | using a dot syntax, for example: @code{dictionary['deeply.nested.key']}.") |
| 646 | (license license:expat))) |
| 647 | |
| 648 | (define-public python-twodict |
| 649 | (package |
| 650 | (name "python-twodict") |
| 651 | (version "1.2") |
| 652 | (source |
| 653 | (origin |
| 654 | (method url-fetch) |
| 655 | (uri (pypi-uri "twodict" version)) |
| 656 | (sha256 |
| 657 | (base32 "0ifv7dv18jn2lg0a3l6zdlvmmlda2ivixfjbsda58a2ay6kxznr0")))) |
| 658 | (build-system python-build-system) |
| 659 | (home-page "https://github.com/MrS0m30n3/twodict") |
| 660 | (synopsis "Two way ordered dictionary for Python") |
| 661 | (description "TwoDict is a custom dictionary in which you can get the |
| 662 | key:value relationship but you can also get the value:key relationship. It also |
| 663 | remembers the order in which the items were inserted and supports almost all the |
| 664 | features of the Python's built-in dict.") |
| 665 | (license license:unlicense))) |
| 666 | |
| 667 | (define-public python-adjusttext |
| 668 | (package |
| 669 | (name "python-adjusttext") |
| 670 | (version "0.8") |
| 671 | (source (origin |
| 672 | (method url-fetch) |
| 673 | (uri (pypi-uri "adjustText" version)) |
| 674 | (sha256 |
| 675 | (base32 |
| 676 | "05zf0xn7ab40dan213fwbp1z4rybih8dphf9mzb2ddmbafxq41mv")))) |
| 677 | (build-system pyproject-build-system) |
| 678 | (propagated-inputs (list python-matplotlib python-numpy)) |
| 679 | (home-page "https://github.com/Phlya/adjustText") |
| 680 | (synopsis "Adjust text position in matplotlib plots to minimize overlaps") |
| 681 | (description |
| 682 | "Often when we want to label multiple points on a graph the text will |
| 683 | start heavily overlapping with both other labels and data points. This can be |
| 684 | a major problem requiring manual solution. However this can be largely |
| 685 | automatized by smart placing of the labels (difficult) or iterative adjustment |
| 686 | of their positions to minimize overlaps (relatively easy). This library |
| 687 | implements the latter option to help with matplotlib graphs.") |
| 688 | (license license:expat))) |
| 689 | |
| 690 | (define-public python-affine |
| 691 | (package |
| 692 | (name "python-affine") |
| 693 | (version "2.4.0") |
| 694 | (source (origin |
| 695 | (method url-fetch) |
| 696 | (uri (pypi-uri "affine" version)) |
| 697 | (sha256 |
| 698 | (base32 |
| 699 | "1shyvajayyzbkp9dihb4mz835jnkp0kqqbyjfqci6v43da6q2kd2")))) |
| 700 | (build-system pyproject-build-system) |
| 701 | (propagated-inputs (list python-coveralls python-flake8 python-pydocstyle |
| 702 | python-pytest python-pytest-cov)) |
| 703 | (native-inputs (list python-flit-core)) |
| 704 | (home-page "https://github.com/rasterio/affine") |
| 705 | (synopsis "Matrices describing affine transformation of the plane") |
| 706 | (description "This is a package for matrices describing the affine |
| 707 | transformation of the plane.") |
| 708 | (license license:bsd-3))) |
| 709 | |
| 710 | (define-public python-argopt |
| 711 | (package |
| 712 | (name "python-argopt") |
| 713 | (version "0.7.0") |
| 714 | (source (origin |
| 715 | (method url-fetch) |
| 716 | (uri (pypi-uri "argopt" version)) |
| 717 | (sha256 |
| 718 | (base32 |
| 719 | "0ybs7kkp0cpl8zn1lvf7481xhssg1bbhh5la2cjzdm5yibashyxa")))) |
| 720 | (build-system python-build-system) |
| 721 | (native-inputs |
| 722 | (list python-coverage python-nose python-setuptools ; Won't build without this. |
| 723 | python-setuptools-scm)) |
| 724 | (propagated-inputs |
| 725 | (list python-toml python-flake8)) |
| 726 | (home-page "https://github.com/casperdcl/argopt") |
| 727 | (synopsis "Generate a command-line interface from a docstring") |
| 728 | (description "This package provides tools to define a command line interface |
| 729 | from a docstring rather than the other way around.") |
| 730 | (license license:mpl2.0))) |
| 731 | |
| 732 | (define-public python-cachetools |
| 733 | (package |
| 734 | (name "python-cachetools") |
| 735 | (version "4.2.2") |
| 736 | (source (origin |
| 737 | (method url-fetch) |
| 738 | (uri (pypi-uri "cachetools" version)) |
| 739 | (sha256 |
| 740 | (base32 |
| 741 | "1zqc098gk6y614lxwqd9z2gm8lldgvrpid133pnlm4m048gfvdb1")))) |
| 742 | (build-system python-build-system) |
| 743 | (home-page "https://github.com/tkem/cachetools/") |
| 744 | (synopsis "Extensible memoizing collections and decorators") |
| 745 | (description "This module provides various memoizing collections and |
| 746 | decorators, including variants of the Python standard library's |
| 747 | @code{lru_cache} function decorator.") |
| 748 | (license license:expat))) |
| 749 | |
| 750 | (define-public python-cobib |
| 751 | (package |
| 752 | (name "python-cobib") |
| 753 | (version "3.5.2") |
| 754 | (source (origin |
| 755 | (method url-fetch) |
| 756 | (uri (pypi-uri "cobib" version)) |
| 757 | (file-name (string-append name "-" version ".tar.gz")) |
| 758 | (sha256 |
| 759 | (base32 |
| 760 | "16nbrbvascbf6cb7yvn9q793dy8zx703pqrmk3mswib9a19mnx3n")))) |
| 761 | (build-system python-build-system) |
| 762 | (propagated-inputs |
| 763 | (list python-beautifulsoup4 |
| 764 | python-bibtexparser |
| 765 | python-pylatexenc |
| 766 | python-requests |
| 767 | python-requests-oauthlib |
| 768 | python-ruamel.yaml)) |
| 769 | (native-inputs |
| 770 | (list python-future |
| 771 | python-pyte |
| 772 | python-pytest)) |
| 773 | (home-page "https://gitlab.com/mrossinek/cobib") |
| 774 | (synopsis "Terminal-based bibliography management tool") |
| 775 | (description |
| 776 | "@command{cobib} is a command-line based bibliography management tool. |
| 777 | It uses a plain-text database, a location-independent library, and features |
| 778 | git integration, command-line support, and a curses-based TUI.") |
| 779 | (license license:expat))) |
| 780 | |
| 781 | (define-public python-colored |
| 782 | (package |
| 783 | (name "python-colored") |
| 784 | (version "1.4.4") |
| 785 | (source (origin |
| 786 | (method git-fetch) |
| 787 | (uri (git-reference |
| 788 | (url "https://gitlab.com/dslackw/colored") |
| 789 | (commit version))) |
| 790 | (file-name (git-file-name name version)) |
| 791 | (sha256 |
| 792 | (base32 |
| 793 | "196ins0m7f90xz5dw764dlx060ziqbcydqzzq40b4ir5858baf3r")))) |
| 794 | (build-system pyproject-build-system) |
| 795 | (arguments (list #:tests? #false)) ;the tests are not run automatically |
| 796 | (home-page "https://gitlab.com/dslackw/colored") |
| 797 | (synopsis "Simple library for color and formatting to terminal") |
| 798 | (description "This is a very simple Python library for color and |
| 799 | formatting in the terminal. It comes with a collection of color codes and |
| 800 | names for 256 color terminal setups.") |
| 801 | (license license:expat))) |
| 802 | |
| 803 | (define-public python-colorful |
| 804 | (package |
| 805 | (name "python-colorful") |
| 806 | (version "0.5.4") |
| 807 | (source |
| 808 | (origin |
| 809 | (method git-fetch) ; no tests data in PyPi package |
| 810 | (uri (git-reference |
| 811 | (url "https://github.com/timofurrer/colorful") |
| 812 | (commit (string-append "v" version)))) |
| 813 | (file-name (git-file-name name version)) |
| 814 | (sha256 |
| 815 | (base32 "1fcz5v8b318a3dsdha4c874jsf3wmcw3f25bv2csixclyzacli98")))) |
| 816 | (build-system pyproject-build-system) |
| 817 | (native-inputs |
| 818 | (list python-coverage python-flake8 python-pytest)) |
| 819 | (propagated-inputs |
| 820 | (list python-colorama)) |
| 821 | (home-page "http://github.com/timofurrer/colorful") |
| 822 | (synopsis "Terminal string styling") |
| 823 | (description "Colorful provides an array of text styles, that can be used |
| 824 | as functions or string constants to form colored terminal output.") |
| 825 | (license license:expat))) |
| 826 | |
| 827 | (define-public python-yaspin |
| 828 | (package |
| 829 | (name "python-yaspin") |
| 830 | (version "1.5.0") |
| 831 | (source |
| 832 | (origin |
| 833 | (method url-fetch) |
| 834 | (uri |
| 835 | (pypi-uri "yaspin" version)) |
| 836 | (sha256 |
| 837 | (base32 "1iirah0kydrdp505qnjj6gi54avcr7z0hbkfx9vmh8myr30rpz6q")))) |
| 838 | (build-system python-build-system) |
| 839 | (native-inputs |
| 840 | (list python-pytest)) |
| 841 | (home-page "https://github.com/pavdmyt/yaspin") |
| 842 | (synopsis "Yet Another Terminal Spinner") |
| 843 | (description "Yaspin provides a terminal spinner to indicate the progress |
| 844 | during long operations.") |
| 845 | (license license:expat))) |
| 846 | |
| 847 | (define-public python-lunr |
| 848 | (package |
| 849 | (name "python-lunr") |
| 850 | (version "0.6.0") |
| 851 | (source |
| 852 | (origin |
| 853 | (method url-fetch) |
| 854 | (uri |
| 855 | (pypi-uri "lunr" version)) |
| 856 | (sha256 |
| 857 | (base32 "106akalywfmnypzkdrhgz4n4740a8xayspybsw59kq06vz8i2qrc")))) |
| 858 | (build-system python-build-system) |
| 859 | (native-inputs |
| 860 | (list python-mock python-pytest)) |
| 861 | (propagated-inputs |
| 862 | (list python-nltk-3.4)) |
| 863 | (home-page |
| 864 | "https://github.com/yeraydiazdiaz/lunr.py") |
| 865 | (synopsis "Full-text search library") |
| 866 | (description "This package provides python library for full-text search. |
| 867 | It indexes documents and provides a search interface for retrieving documents |
| 868 | that best match text queries.") |
| 869 | (license license:expat))) |
| 870 | |
| 871 | (define-public python-mdit-py-plugins |
| 872 | (package |
| 873 | (name "python-mdit-py-plugins") |
| 874 | (version "0.3.1") |
| 875 | (source (origin |
| 876 | (method git-fetch) ;for tests |
| 877 | (uri (git-reference |
| 878 | (url "https://github.com/executablebooks/mdit-py-plugins") |
| 879 | (commit (string-append "v" version)))) |
| 880 | (file-name (git-file-name name version)) |
| 881 | (sha256 |
| 882 | (base32 |
| 883 | "00ybbfb6dzn9q5qnvnm8bmhd84s215ik7pcdb4r35zhwiv2ikizz")))) |
| 884 | (build-system pyproject-build-system) |
| 885 | (propagated-inputs |
| 886 | (list python-markdown-it-py |
| 887 | python-attrs)) |
| 888 | (native-inputs |
| 889 | (list python-coverage |
| 890 | python-flit-core |
| 891 | python-pytest |
| 892 | python-pytest-cov |
| 893 | python-pytest-regressions)) |
| 894 | (home-page "https://github.com/executablebooks/mdit-py-plugins") |
| 895 | (synopsis "Collection of plugins for markdown-it-py") |
| 896 | (description "This package contains a collection of plugins for |
| 897 | @code{markdown-it-py} like: |
| 898 | @enumerate |
| 899 | @item amsmath, |
| 900 | @item attrs, |
| 901 | @item container, |
| 902 | @item definition list, |
| 903 | @item dollarmath, |
| 904 | @item field list, |
| 905 | @item footnote, |
| 906 | @item textmath, and |
| 907 | @item wordcount. |
| 908 | @end enumerate") |
| 909 | (license license:expat))) |
| 910 | |
| 911 | (define-public python-mdurl |
| 912 | (package |
| 913 | (name "python-mdurl") |
| 914 | (version "0.1.2") |
| 915 | (source |
| 916 | (origin |
| 917 | (method git-fetch) ; no tests data in PyPi package |
| 918 | (uri (git-reference |
| 919 | (url "https://github.com/executablebooks/mdurl") |
| 920 | (commit version))) |
| 921 | (file-name (git-file-name name version)) |
| 922 | (sha256 |
| 923 | (base32 "0csc777q42jzv4zgdzxmwp8xqlb92ws1jvj09m2smh4klw67q5f3")))) |
| 924 | (build-system pyproject-build-system) |
| 925 | (native-inputs (list python-flit python-pytest)) |
| 926 | (home-page "https://github.com/executablebooks/mdurl") |
| 927 | (synopsis "Markdown URL utilities") |
| 928 | (description |
| 929 | "This package implements a Python port of the JavaScript @code{mdurl}.") |
| 930 | (license license:expat))) |
| 931 | |
| 932 | (define-public python-mrkd |
| 933 | (package |
| 934 | (name "python-mrkd") |
| 935 | (version "0.2.0") |
| 936 | (source |
| 937 | (origin |
| 938 | (method url-fetch) |
| 939 | (uri (pypi-uri "mrkd" version)) |
| 940 | (sha256 |
| 941 | (base32 "1bvaqbna1ihb4y2mv9pmvqcq3r9j6lwbbii99dani8lxx4dqqvs5")))) |
| 942 | (build-system python-build-system) |
| 943 | (propagated-inputs |
| 944 | (list python-jinja2 python-mistune python-pygments)) |
| 945 | (home-page "https://pypi.org/project/mrkd/") |
| 946 | (synopsis "Python Markdown implementation") |
| 947 | (description |
| 948 | "@code{mrkd} writes man pages using Markdown, and convert them to Roff or |
| 949 | HTML") |
| 950 | (license license:bsd-3))) |
| 951 | |
| 952 | (define-public python-mkdocs |
| 953 | (package |
| 954 | (name "python-mkdocs") |
| 955 | (version "1.3.0") |
| 956 | (source |
| 957 | (origin |
| 958 | ;; The tests suite appears to be incomplete in the PyPI archive. |
| 959 | (method git-fetch) |
| 960 | (uri (git-reference |
| 961 | (url "https://github.com/mkdocs/mkdocs") |
| 962 | (commit version))) |
| 963 | (file-name (git-file-name name version)) |
| 964 | (sha256 |
| 965 | (base32 |
| 966 | "1n5rdllrxvhnxmdrddf55p3s86dakx0rq2gg6bj6pr6jg2pn932b")))) |
| 967 | (build-system python-build-system) |
| 968 | (arguments |
| 969 | `(#:phases |
| 970 | (modify-phases %standard-phases |
| 971 | ;; Requirements refer to a specific version of dependencies, |
| 972 | ;; which are too old. So we patch to refer to any later version. |
| 973 | (add-after 'unpack 'patch-requirements |
| 974 | (lambda _ |
| 975 | (substitute* "setup.py" |
| 976 | (("==") ">=")))) |
| 977 | (replace 'check |
| 978 | (lambda* (#:key tests? #:allow-other-keys) |
| 979 | (when tests? |
| 980 | (invoke "python" "-m" "unittest" |
| 981 | "discover" "-p" "*tests.py" "mkdocs" |
| 982 | "--top-level-directory" "."))))))) |
| 983 | (propagated-inputs |
| 984 | (list python-babel |
| 985 | python-click |
| 986 | python-ghp-import |
| 987 | python-importlib-metadata |
| 988 | python-jinja2 |
| 989 | python-markdown |
| 990 | python-markupsafe |
| 991 | python-mdx-gh-links |
| 992 | python-mergedeep |
| 993 | python-packaging |
| 994 | python-pyyaml |
| 995 | python-pyyaml-env-tag |
| 996 | python-watchdog)) |
| 997 | (home-page "https://www.mkdocs.org") |
| 998 | (synopsis "Project documentation with Markdown") |
| 999 | (description "MkDocs is a static site generator geared towards building |
| 1000 | project documentation. Documentation source files are written in Markdown, and |
| 1001 | configured with a single YAML configuration file.") |
| 1002 | (license license:bsd-3))) |
| 1003 | |
| 1004 | (define-public python-mkdocs-markdownextradata-plugin |
| 1005 | (package |
| 1006 | (name "python-mkdocs-markdownextradata-plugin") |
| 1007 | (version "0.2.5") |
| 1008 | (source (origin |
| 1009 | ;; Use git, as there are some test files missing from the PyPI release, |
| 1010 | ;; see https://github.com/rosscdh/mkdocs-markdownextradata-plugin/issues/41. |
| 1011 | (method git-fetch) |
| 1012 | (uri (git-reference |
| 1013 | (url "https://github.com/rosscdh/mkdocs-markdownextradata-plugin") |
| 1014 | (commit version))) |
| 1015 | (file-name (git-file-name name version)) |
| 1016 | (sha256 |
| 1017 | (base32 |
| 1018 | "1a3868s9m7pzyfncpjbjsa9vw5nihssl2v47pxj7h6qa67kvlk3g")))) |
| 1019 | (build-system python-build-system) |
| 1020 | (native-inputs (list python-pytest)) |
| 1021 | (propagated-inputs (list python-mkdocs python-pyyaml)) |
| 1022 | (home-page "https://github.com/rosscdh/mkdocs-markdownextradata-plugin/") |
| 1023 | (synopsis "Inject mkdocs.yml extra variables into the MkDocs markdown |
| 1024 | template") |
| 1025 | (description |
| 1026 | "This package provides a MkDocs plugin that injects the mkdocs.yml extra |
| 1027 | variables into the markdown template") |
| 1028 | (license license:expat))) |
| 1029 | |
| 1030 | (define-public python-mysql-connector-python |
| 1031 | (package |
| 1032 | (name "python-mysql-connector-python") |
| 1033 | (version "8.0.33") |
| 1034 | ;; The archive on PyPi does not contain a build system |
| 1035 | (source (origin |
| 1036 | (method url-fetch) |
| 1037 | (uri (string-append "https://cdn.mysql.com/Downloads/" |
| 1038 | "Connector-Python/mysql-connector-python-" |
| 1039 | version "-src.tar.gz")) |
| 1040 | (sha256 |
| 1041 | (base32 |
| 1042 | "00j9xgd43yzx5yiijnlmpaqpa58m5lscjglsgzg48dibhr69br0l")))) |
| 1043 | (build-system python-build-system) |
| 1044 | (arguments |
| 1045 | (list |
| 1046 | #:configure-flags |
| 1047 | #~(list (string-append "--with-mysql-capi=" |
| 1048 | #$(this-package-input "mysql")) |
| 1049 | (string-append "--with-protobuf-include-dir=" |
| 1050 | #$(this-package-input "protobuf") |
| 1051 | "/include/google/protobuf") |
| 1052 | (string-append "--with-protobuf-lib-dir=" |
| 1053 | #$(this-package-input "protobuf") |
| 1054 | "/lib") |
| 1055 | (string-append "--with-protoc=" |
| 1056 | #$(this-package-input "protobuf") |
| 1057 | "/bin/protoc")) |
| 1058 | #:phases |
| 1059 | #~(modify-phases %standard-phases |
| 1060 | (add-after 'unpack 'compatibility |
| 1061 | (lambda _ |
| 1062 | (substitute* "src/mysql_capi.c" |
| 1063 | (("res = mysql_options\\(&self->session, MYSQL_OPT_LOAD_DATA_LOCAL_DIR.*") |
| 1064 | "res = 0;") |
| 1065 | (("mysql_options\\(&self->session, MYSQL_OPT_LOAD_DATA_LOCAL_DIR.*") |
| 1066 | "") |
| 1067 | (("mysql_options\\(&self->session, MYSQL_OPT_TLS_CIPHERSUITES.*") |
| 1068 | "") |
| 1069 | ;; The C API does not have mysql_bind_param, so we produce an |
| 1070 | ;; error here. |
| 1071 | (("status = mysql_bind_param.*") "status = 1;")) |
| 1072 | ;; See https://github.com/protocolbuffers/protobuf/issues/9943 |
| 1073 | (substitute* "src/mysqlxpb/mysqlxpb.cc" |
| 1074 | (("google::protobuf::string") "std::string")))) |
| 1075 | (replace 'check |
| 1076 | (lambda* (#:key tests? #:allow-other-keys) |
| 1077 | (when tests? |
| 1078 | ;; Some of these tests might be failing due to the build |
| 1079 | ;; container's restrictions, others are due to the version |
| 1080 | ;; mismatch. |
| 1081 | (substitute* "tests/cext/test_cext_api.py" |
| 1082 | (("def test_change_user") "def _do_not_test_change_user") |
| 1083 | (("def test_get_character_set_info") |
| 1084 | "def _do_not_test_get_character_set_info")) |
| 1085 | (substitute* "tests/test_bugs.py" |
| 1086 | (("def test_change_user") "def _do_not_test_change_user") |
| 1087 | (("def test_lost_connection") "def _do_not_test_lost_connection") |
| 1088 | (("def test_kill_query") "def _do_not_test_kill_query")) |
| 1089 | (substitute* "tests/test_connection.py" |
| 1090 | (("def test_allow_local_infile_in_path") |
| 1091 | "def _do_not_test_allow_local_infile_in_path")) |
| 1092 | (substitute* "tests/test_constants.py" |
| 1093 | (("def test_deprecated") |
| 1094 | "def _do_not_test_deprecated")) |
| 1095 | (mkdir-p "/tmp/datadir") |
| 1096 | (invoke "python3" "unittests.py" |
| 1097 | "--verbosity=3" |
| 1098 | (string-append "--with-mysql=" #$(this-package-input "mysql")) |
| 1099 | "--keep" |
| 1100 | "--mysql-topdir=/tmp/datadir" |
| 1101 | "--unix-socket=/tmp/datadir"))))))) |
| 1102 | (propagated-inputs (list python-protobuf)) |
| 1103 | (inputs (list mysql protobuf-3.20 openssl-1.1 zlib)) |
| 1104 | (home-page "https://dev.mysql.com/doc/connector-python/en/index.html") |
| 1105 | (synopsis "MySQL driver written in Python") |
| 1106 | (description "MySQL Connector/Python enables Python programs to access |
| 1107 | MySQL databases, using an API that is compliant with the Python Database API |
| 1108 | Specification v2.0 (PEP 249).") |
| 1109 | (license license:gpl2))) |
| 1110 | |
| 1111 | (define-public python-pdoc |
| 1112 | (package |
| 1113 | (name "python-pdoc") |
| 1114 | (version "13.0.1") |
| 1115 | (source (origin |
| 1116 | (method git-fetch) |
| 1117 | (uri (git-reference |
| 1118 | (url "https://github.com/mitmproxy/pdoc") |
| 1119 | (commit (string-append "v" version)))) |
| 1120 | (file-name (git-file-name name version)) |
| 1121 | (sha256 |
| 1122 | (base32 |
| 1123 | "0gxkw607nrd67ck4w8jri9vfrm5g60qvp8b134m8zkiphbxjnx0l")))) |
| 1124 | (build-system pyproject-build-system) |
| 1125 | (native-inputs (list python-pytest python-jinja2 python-pygments)) |
| 1126 | (arguments |
| 1127 | (list |
| 1128 | ;; Some tests fail, presumably because of slight version mismatches of |
| 1129 | ;; the dependencies. |
| 1130 | #:test-flags |
| 1131 | '(list "-k" (string-append "not test_var_with_raising_repr and " |
| 1132 | "not test_smoke[mock] and " |
| 1133 | "not test_snapshots[html")))) |
| 1134 | (home-page "https://pdoc.dev/") |
| 1135 | (synopsis "API documentation for Python projects") |
| 1136 | (description "pdoc auto-generates API documentation that follows your |
| 1137 | project's Python module hierarchy. It requires no configuration, has |
| 1138 | first-class support for type annotations, cross-links between identifiers, |
| 1139 | comes with an integrated live-reloading web server, uses customizable HTML |
| 1140 | templates, understands numpydoc and Google-style docstrings.") |
| 1141 | (license license:unlicense))) |
| 1142 | |
| 1143 | (define-public python-py4j |
| 1144 | (package |
| 1145 | (name "python-py4j") |
| 1146 | (version "0.10.9.7") |
| 1147 | (source (origin |
| 1148 | (method url-fetch) |
| 1149 | (uri (pypi-uri "py4j" version)) |
| 1150 | (sha256 |
| 1151 | (base32 |
| 1152 | "1fwdx92cdaiviradksfyygg05g1fpc3x2lf65bv5rnispcam6vhb")))) |
| 1153 | (build-system python-build-system) |
| 1154 | (home-page "https://www.py4j.org/") |
| 1155 | (synopsis "Dynamically access arbitrary Java objects from Python") |
| 1156 | (description |
| 1157 | "This package enables Python programs to dynamically access arbitrary |
| 1158 | Java objects.") |
| 1159 | (license license:bsd-3))) |
| 1160 | |
| 1161 | (define-public python-pymdown-extensions |
| 1162 | (package |
| 1163 | (name "python-pymdown-extensions") |
| 1164 | (version "8.1.1") |
| 1165 | (source |
| 1166 | (origin |
| 1167 | (method url-fetch) |
| 1168 | (uri |
| 1169 | (pypi-uri "pymdown-extensions" version)) |
| 1170 | (sha256 |
| 1171 | (base32 "0d8pdndrl1kj105lq7r6kw2dnhcvll6h2qs07w71mcpi7gx728v3")))) |
| 1172 | (build-system python-build-system) |
| 1173 | ;; FIXME: "AssertionError: False is not true" |
| 1174 | (arguments |
| 1175 | `(#:tests? #f)) |
| 1176 | (propagated-inputs |
| 1177 | (list python-markdown)) |
| 1178 | (home-page "https://github.com/facelessuser/pymdown-extensions") |
| 1179 | (synopsis "Extension pack for Python Markdown") |
| 1180 | (description "PyMdown Extensions is a collection of extensions for Python |
| 1181 | Markdown. All extensions are found under the module namespace of pymdownx.") |
| 1182 | (license license:expat))) |
| 1183 | |
| 1184 | (define-public python-pint |
| 1185 | (package |
| 1186 | (name "python-pint") |
| 1187 | (version "0.20.1") |
| 1188 | (source (origin |
| 1189 | (method url-fetch) |
| 1190 | (uri (pypi-uri "Pint" version)) |
| 1191 | (sha256 |
| 1192 | (base32 |
| 1193 | "0rv0cbala7ibjbaf6kkcn0mdhqdbajnvlcw0f15gwzfwg10g0z1q")))) |
| 1194 | (build-system pyproject-build-system) |
| 1195 | (arguments |
| 1196 | ;; This single test tries to write to $HOME/.cache/pint. |
| 1197 | (list #:test-flags #~'("-k" "not test_auto"))) |
| 1198 | (native-inputs |
| 1199 | (list python-dask |
| 1200 | python-distributed |
| 1201 | python-importlib-metadata |
| 1202 | python-pytest ;for pytest-subtests |
| 1203 | python-pytest-cov |
| 1204 | python-pytest-mpl |
| 1205 | python-pytest-subtests |
| 1206 | python-setuptools-scm |
| 1207 | python-sparse |
| 1208 | python-xarray)) |
| 1209 | (home-page "https://github.com/hgrecco/pint") |
| 1210 | (synopsis "Physical quantities module") |
| 1211 | (description |
| 1212 | "Pint is a Python package to define, operate and manipulate physical |
| 1213 | quantities: the product of a numerical value and a unit of measurement. It |
| 1214 | allows arithmetic operations between them and conversions from and to |
| 1215 | different units.") |
| 1216 | (license license:bsd-3))) |
| 1217 | |
| 1218 | (define-public python-plotext |
| 1219 | (package |
| 1220 | (name "python-plotext") |
| 1221 | (version "5.2.8") |
| 1222 | (source (origin |
| 1223 | (method url-fetch) |
| 1224 | (uri (pypi-uri "plotext" version)) |
| 1225 | (sha256 |
| 1226 | (base32 |
| 1227 | "1gpy1z2i4vq1mcrhysxahz4339pbl9rzk58rf5m5gf5ym9xji6ii")))) |
| 1228 | (build-system pyproject-build-system) |
| 1229 | (arguments (list #:tests? #false)) ;there are none |
| 1230 | (home-page "https://github.com/piccolomo/plotext") |
| 1231 | (synopsis "Plots in the terminal") |
| 1232 | (description "Plotext lets you plot directly to the terminal.") |
| 1233 | (license license:expat))) |
| 1234 | |
| 1235 | (define-public python-plotille |
| 1236 | (package |
| 1237 | (name "python-plotille") |
| 1238 | (version "4.0.2") |
| 1239 | (source (origin |
| 1240 | (method url-fetch) |
| 1241 | (uri (pypi-uri "plotille" version)) |
| 1242 | (sha256 |
| 1243 | (base32 |
| 1244 | "0fvsk6glxfphhqy405h05rj3v95jd1byl5hv2fyd5l31wln23shj")))) |
| 1245 | (build-system python-build-system) |
| 1246 | (native-inputs (list python-six)) |
| 1247 | (home-page "https://github.com/tammoippen/plotille") |
| 1248 | (synopsis "Plot in the terminal using braille dots") |
| 1249 | (description |
| 1250 | "Plotille provides a figure class and graphing functions to create plots, |
| 1251 | scatter plots, histograms and heatmaps in the terminal using braille dots.") |
| 1252 | (license license:expat))) |
| 1253 | |
| 1254 | (define-public python-mdx-gh-links |
| 1255 | (package |
| 1256 | (name "python-mdx-gh-links") |
| 1257 | (version "0.2") |
| 1258 | (source |
| 1259 | (origin |
| 1260 | (method url-fetch) |
| 1261 | (uri (pypi-uri "mdx_gh_links" version)) |
| 1262 | (sha256 |
| 1263 | (base32 "167k1jbp3jifxbnlpi6wy0z1skam7gqv2sixb5bhggb2vypqvysr")))) |
| 1264 | (build-system python-build-system) |
| 1265 | (arguments (list #:tests? #f)) ;tests connect github |
| 1266 | (propagated-inputs (list python-markdown)) |
| 1267 | (home-page "https://github.com/Python-Markdown/github-links/") |
| 1268 | (synopsis "Python-Markdown extension adding support for shorthand links") |
| 1269 | (description "This package is an extension to Python-Markdown which adds |
| 1270 | support for shorthand links to GitHub users, repositories, issues and |
| 1271 | commits.") |
| 1272 | (license license:bsd-3))) |
| 1273 | |
| 1274 | (define-public python-mkdocs-material |
| 1275 | (package |
| 1276 | (name "python-mkdocs-material") |
| 1277 | (version "7.1.3") |
| 1278 | (source |
| 1279 | (origin |
| 1280 | (method url-fetch) |
| 1281 | (uri |
| 1282 | (pypi-uri "mkdocs-material" version)) |
| 1283 | (sha256 |
| 1284 | (base32 "0ci9xiasq9nfn09v11m7p49vzazdbgslw7rpzjd6y3hsmn9vljz3")))) |
| 1285 | (build-system python-build-system) |
| 1286 | (arguments |
| 1287 | `(#:phases |
| 1288 | (modify-phases %standard-phases |
| 1289 | ;; Requirement mkdocs-material-extensions |
| 1290 | ;; in-turn requires mkdocs-material. This causes |
| 1291 | ;; circular dependency, so we remove this requirement. |
| 1292 | (add-after 'unpack 'patch-requirements |
| 1293 | (lambda _ |
| 1294 | (substitute* "requirements.txt" |
| 1295 | (("mkdocs-material-extensions.*$") ""))))))) |
| 1296 | (propagated-inputs |
| 1297 | (list python-markdown python-mkdocs python-pygments |
| 1298 | python-pymdown-extensions)) |
| 1299 | (home-page "https://squidfunk.github.io/mkdocs-material/") |
| 1300 | (synopsis "Material Design theme for MkDocs") |
| 1301 | (description "This package provides a theme plugin for the static site |
| 1302 | generator MkDocs.") |
| 1303 | (license license:expat))) |
| 1304 | |
| 1305 | (define-public python-skranger |
| 1306 | (package |
| 1307 | (name "python-skranger") |
| 1308 | (version "0.8.0") |
| 1309 | (source (origin |
| 1310 | (method git-fetch) |
| 1311 | (uri (git-reference |
| 1312 | (url "https://github.com/crflynn/skranger") |
| 1313 | (commit version) |
| 1314 | (recursive? #true))) |
| 1315 | (file-name (git-file-name name version)) |
| 1316 | (sha256 |
| 1317 | (base32 |
| 1318 | "0njy4xbc98l295k92nyk93njv1348vd1il5pdyrnk8nnzc2anzf0")))) |
| 1319 | (build-system pyproject-build-system) |
| 1320 | (arguments |
| 1321 | (list |
| 1322 | #:modules '((guix build pyproject-build-system) |
| 1323 | (guix build utils) |
| 1324 | (ice-9 match)) |
| 1325 | #:test-flags |
| 1326 | ;; "from sklearn.datasets import load_boston" fails because it has been |
| 1327 | ;; removed from scikit-learn since version 1.2. |
| 1328 | '(list "--ignore=tests/conftest.py" |
| 1329 | "--ignore=tests/test_tools.py" |
| 1330 | "--ignore=tests/tree/test_regressor.py" |
| 1331 | "--ignore=tests/ensemble/test_regressor.py") |
| 1332 | #:phases |
| 1333 | #~(modify-phases %standard-phases |
| 1334 | (add-after 'unpack 'fix-tests |
| 1335 | (lambda _ |
| 1336 | (substitute* "tests/conftest.py" |
| 1337 | (("from sklearn.datasets import load_boston") "") |
| 1338 | (("^_boston_X.*") "_boston_X, _boston_Y = (True, True)\n")))) |
| 1339 | (add-before 'check 'build-extensions |
| 1340 | (lambda _ |
| 1341 | ;; Cython extensions have to be built before running the tests. |
| 1342 | (invoke "python" "buildpre.py") |
| 1343 | (invoke "python" "build.py" "build_ext" "--inplace") |
| 1344 | (let ((site (string-append #$output "/lib/python" |
| 1345 | #$(version-major+minor |
| 1346 | (package-version python)) |
| 1347 | "/site-packages/skranger")) |
| 1348 | (lib (match (find-files "build" "\\.so") |
| 1349 | ((the-lib) the-lib) |
| 1350 | (_ (error "could not find .so"))))) |
| 1351 | (mkdir-p site) |
| 1352 | (install-file lib site))))))) |
| 1353 | (propagated-inputs (list python-scikit-learn)) |
| 1354 | (native-inputs |
| 1355 | (list python-cython |
| 1356 | python-matplotlib |
| 1357 | python-pandas |
| 1358 | python-poetry-core |
| 1359 | python-pytest)) |
| 1360 | (home-page "https://github.com/crflynn/skranger") |
| 1361 | (synopsis "Python bindings for C++ ranger random forests") |
| 1362 | (description "This package provides scikit-learn compatible Python |
| 1363 | bindings to the C++ random forest implementation, ranger, using Cython.") |
| 1364 | (license license:gpl3+))) |
| 1365 | |
| 1366 | (define-public python-slixmpp |
| 1367 | (package |
| 1368 | (name "python-slixmpp") |
| 1369 | (version "1.8.3") |
| 1370 | (source |
| 1371 | (origin |
| 1372 | (method git-fetch) |
| 1373 | (uri |
| 1374 | (git-reference |
| 1375 | (url "https://lab.louiz.org/poezio/slixmpp.git") |
| 1376 | (commit |
| 1377 | (string-append "slix-" version)))) |
| 1378 | (file-name |
| 1379 | (git-file-name name version)) |
| 1380 | (sha256 |
| 1381 | (base32 "0cvr037qhf0fpby5dci6ckqngaly1mnjs2zpndwgmvr3dyvrd8l8")))) |
| 1382 | (build-system python-build-system) |
| 1383 | (arguments |
| 1384 | `(#:phases |
| 1385 | (modify-phases %standard-phases |
| 1386 | (add-after 'unpack 'patch |
| 1387 | (lambda _ |
| 1388 | (substitute* "setup.py" |
| 1389 | (("'CC', 'cc'") |
| 1390 | "'CC', 'gcc'")) |
| 1391 | #t))))) |
| 1392 | (native-inputs |
| 1393 | `(("cython" ,python-cython) |
| 1394 | ("gnupg" ,gnupg) |
| 1395 | ("pkg-config" ,pkg-config))) |
| 1396 | (propagated-inputs |
| 1397 | (list python-aiodns |
| 1398 | python-aiohttp |
| 1399 | python-cryptography |
| 1400 | python-defusedxml |
| 1401 | python-emoji |
| 1402 | python-pyasn1 |
| 1403 | python-pyasn1-modules)) |
| 1404 | (inputs |
| 1405 | (list libidn python)) ; We are building a Python extension. |
| 1406 | (synopsis "XMPP library without threads") |
| 1407 | (description "Slixmpp is a XMPP library for Python 3.7+. It is a fork of |
| 1408 | SleekXMPP. Its goal is to only rewrite the core of the library (the low level |
| 1409 | socket handling, the timers, the events dispatching) in order to remove all |
| 1410 | threads.") |
| 1411 | (home-page "https://lab.louiz.org/poezio/slixmpp") |
| 1412 | (license license:expat))) |
| 1413 | |
| 1414 | (define-public python-tenacity |
| 1415 | (package |
| 1416 | (name "python-tenacity") |
| 1417 | (version "8.0.1") |
| 1418 | (source (origin |
| 1419 | (method url-fetch) |
| 1420 | (uri (pypi-uri "tenacity" version)) |
| 1421 | (sha256 |
| 1422 | (base32 |
| 1423 | "0bwkvjpjfyi9dgszzad9aww2vc00w3bczjnbifi92cp7wch2l923")))) |
| 1424 | (build-system pyproject-build-system) |
| 1425 | (native-inputs |
| 1426 | (list python-setuptools-scm python-tornado-6 python-typeguard |
| 1427 | python-pytest)) |
| 1428 | (home-page "https://github.com/jd/tenacity") |
| 1429 | (synopsis "Retrying library for python") |
| 1430 | (description "Tenacity is a general-purpose python library to simplify the |
| 1431 | task of adding retry behavior to just about anything.") |
| 1432 | (license license:asl2.0))) |
| 1433 | |
| 1434 | (define-public python-pytelegrambotapi |
| 1435 | (package |
| 1436 | (name "python-pytelegrambotapi") |
| 1437 | (version "3.7.4") |
| 1438 | (source |
| 1439 | (origin |
| 1440 | (method git-fetch) |
| 1441 | (uri (git-reference |
| 1442 | (url "https://github.com/eternnoir/pyTelegramBotAPI") |
| 1443 | (commit version))) |
| 1444 | (file-name (git-file-name name version)) |
| 1445 | (sha256 |
| 1446 | (base32 "0r7g5zs0fk3g2dxvbpl0pi730x7r2kalrhn30fs0pvc15a59fmxz")))) |
| 1447 | (build-system python-build-system) |
| 1448 | (arguments |
| 1449 | `(#:phases |
| 1450 | (modify-phases %standard-phases |
| 1451 | (replace 'check |
| 1452 | (lambda* (#:key tests? #:allow-other-keys) |
| 1453 | (when tests? |
| 1454 | (with-directory-excursion "tests" |
| 1455 | (invoke "py.test"))) |
| 1456 | #t))))) |
| 1457 | (propagated-inputs |
| 1458 | (list python-requests)) |
| 1459 | (native-inputs |
| 1460 | (list python-pytest)) |
| 1461 | (home-page "https://github.com/eternnoir/pyTelegramBotAPI") |
| 1462 | (synopsis "Python Telegram bot api") |
| 1463 | (description "This package provides a simple, but extensible Python |
| 1464 | implementation for the Telegram Bot API.") |
| 1465 | (license license:gpl2))) |
| 1466 | |
| 1467 | (define-public python-colorlog |
| 1468 | (package |
| 1469 | (name "python-colorlog") |
| 1470 | (version "6.6.0") |
| 1471 | (source |
| 1472 | (origin |
| 1473 | (method url-fetch) |
| 1474 | (uri (pypi-uri "colorlog" version)) |
| 1475 | (sha256 |
| 1476 | (base32 "1s7x0v872h8aks8xp01wmv6hzisxqjrh1svbbcycir0980h76krl")))) |
| 1477 | (build-system python-build-system) |
| 1478 | (arguments |
| 1479 | `(#:phases |
| 1480 | (modify-phases %standard-phases |
| 1481 | (replace 'check |
| 1482 | (lambda* (#:key inputs outputs tests? #:allow-other-keys) |
| 1483 | (when tests? |
| 1484 | (add-installed-pythonpath inputs outputs) |
| 1485 | (invoke "python" "-m" "pytest"))))))) |
| 1486 | (native-inputs |
| 1487 | (list python-pytest)) |
| 1488 | (home-page "https://github.com/borntyping/python-colorlog") |
| 1489 | (synopsis "Log formatting with colors for python") |
| 1490 | (description "The @code{colorlog.ColoredFormatter} is a formatter for use |
| 1491 | with Python's logging module that outputs records using terminal colors.") |
| 1492 | (license license:expat))) |
| 1493 | |
| 1494 | (define-public python-pyprind |
| 1495 | (package |
| 1496 | (name "python-pyprind") |
| 1497 | (version "2.11.3") |
| 1498 | (source (origin |
| 1499 | (method url-fetch) |
| 1500 | (uri (pypi-uri "PyPrind" version)) |
| 1501 | (sha256 |
| 1502 | (base32 |
| 1503 | "1gscnlvj37m421ch3akm3kddxqkrgbg5zrpwy2ky1j59w6vclzg3")))) |
| 1504 | (build-system python-build-system) |
| 1505 | (propagated-inputs |
| 1506 | (list python-psutil)) |
| 1507 | (home-page "https://github.com/rasbt/pyprind") |
| 1508 | (synopsis "Python Progress Bar and Percent Indicator Utility") |
| 1509 | (description "The PyPrind (Python Progress Indicator) module provides a |
| 1510 | progress bar and a percentage indicator object that let you track the progress |
| 1511 | of a loop structure or other iterative computation.") |
| 1512 | (license license:bsd-3))) |
| 1513 | |
| 1514 | (define-public python-glymur |
| 1515 | (package |
| 1516 | (name "python-glymur") |
| 1517 | (version "0.12.0") |
| 1518 | (source |
| 1519 | (origin |
| 1520 | (method git-fetch) ; no tests data in PyPi package |
| 1521 | (uri (git-reference |
| 1522 | (url "https://github.com/quintusdias/glymur") |
| 1523 | (commit (string-append "v" version)))) |
| 1524 | (file-name (git-file-name name version)) |
| 1525 | (sha256 |
| 1526 | (base32 "03nny8k42yxdyw7sjv43szmg23x3rqplbaf7m0a0lpvwla1dl78i")))) |
| 1527 | (build-system pyproject-build-system) |
| 1528 | (arguments |
| 1529 | (list |
| 1530 | #:phases |
| 1531 | #~(modify-phases %standard-phases |
| 1532 | (add-after 'unpack 'patch-library-locations |
| 1533 | (lambda* (#:key inputs #:allow-other-keys) |
| 1534 | ;; XXX: It's a workaround for Python inability to find the |
| 1535 | ;; .so libraries with ctypes.util.find_library() |
| 1536 | (substitute* '("glymur/config.py") |
| 1537 | (("path = find_library\\(libname\\)") |
| 1538 | (string-append |
| 1539 | "if libname == \"openjp2\":\n" |
| 1540 | " path = \"" |
| 1541 | (search-input-file inputs "/lib/libopenjp2.so") "\"\n" |
| 1542 | " elif libname == \"tiff\":\n" |
| 1543 | " path = \"" |
| 1544 | (search-input-file inputs "/lib/libtiff.so") "\"\n" |
| 1545 | " elif libname == \"c\":\n" |
| 1546 | " path = \"" |
| 1547 | (search-input-file inputs "/lib/libc.so.6") "\"\n"))))) |
| 1548 | (add-before 'check 'disable-failing-tests |
| 1549 | (lambda _ |
| 1550 | ;; Failing test due to inability of |
| 1551 | ;; ctypes.util.find_library() to determine library path, |
| 1552 | ;; which is patched above. |
| 1553 | (delete-file "tests/test_config.py")))))) |
| 1554 | (native-inputs |
| 1555 | (list python-pytest)) |
| 1556 | (inputs |
| 1557 | (list openjpeg ; glymur/lib/openjp2.py |
| 1558 | libtiff)) ; glymur/lib/tiff.py |
| 1559 | (propagated-inputs |
| 1560 | (list python-lxml |
| 1561 | python-numpy |
| 1562 | python-packaging)) |
| 1563 | (home-page "https://github.com/quintusdias/glymur") |
| 1564 | (synopsis "Python interface to OpenJPEG and LibTIFF") |
| 1565 | (description |
| 1566 | "This package provides Python interface to the OpenJPEG library which |
| 1567 | allows one to read and write JPEG 2000 files") |
| 1568 | (license license:expat))) |
| 1569 | |
| 1570 | (define-public python-gphoto2 |
| 1571 | (package |
| 1572 | (name "python-gphoto2") |
| 1573 | (version "2.2.1") |
| 1574 | (source (origin |
| 1575 | (method url-fetch) |
| 1576 | (uri (pypi-uri "gphoto2" version)) |
| 1577 | (sha256 |
| 1578 | (base32 |
| 1579 | "118zm25c8mlajfl0pzssnwz4b8lamj9dgymla9rn4nla7l244a0r")))) |
| 1580 | (build-system python-build-system) |
| 1581 | (native-inputs |
| 1582 | (list pkg-config)) |
| 1583 | (inputs |
| 1584 | (list libgphoto2)) |
| 1585 | (home-page "https://github.com/jim-easterbrook/python-gphoto2") |
| 1586 | (synopsis "Python interface to libgphoto2") |
| 1587 | (description "@code{python-gphoto2} is a comprehensive Python interface |
| 1588 | (or binding) to @code{libgphoto2}. It is built using @code{SWIG} to |
| 1589 | automatically generate the interface code.") |
| 1590 | (license license:gpl3+))) |
| 1591 | |
| 1592 | (define-public python-colour |
| 1593 | (package |
| 1594 | (name "python-colour") |
| 1595 | (version "0.1.5") |
| 1596 | (source (origin |
| 1597 | (method url-fetch) |
| 1598 | (uri (pypi-uri "colour" version)) |
| 1599 | (sha256 |
| 1600 | (base32 |
| 1601 | "1visbisfini5j14bdzgs95yssw6sm4pfzyq1n3lfvbyjxw7i485g")))) |
| 1602 | (build-system python-build-system) |
| 1603 | (native-inputs |
| 1604 | (list python-d2to1)) |
| 1605 | (home-page "https://github.com/vaab/colour") |
| 1606 | (synopsis "Convert and manipulate various color representations") |
| 1607 | (description "Pythonic way to manipulate color representations (HSL, RVB, |
| 1608 | web, X11, ...).") |
| 1609 | (license license:expat))) |
| 1610 | |
| 1611 | (define-public python-d2to1 |
| 1612 | (package |
| 1613 | (name "python-d2to1") |
| 1614 | (version "0.2.12.post1") |
| 1615 | (source (origin |
| 1616 | (method url-fetch) |
| 1617 | (uri (pypi-uri "d2to1" version)) |
| 1618 | (sha256 |
| 1619 | (base32 |
| 1620 | "09fq7pq1z8d006xh5z75rm2lk61v6yn2xhy53z4gsgibhqb2vvs9")))) |
| 1621 | (build-system python-build-system) |
| 1622 | (native-inputs |
| 1623 | (list python-nose)) |
| 1624 | (home-page "https://github.com/embray/d2to1") |
| 1625 | (synopsis "Allows for distutils2-like setup.cfg files as package metadata |
| 1626 | in python") |
| 1627 | (description "The python package d2to1 (the d is for distutils) allows |
| 1628 | using distutils2-like setup.cfg files for a package's metadata with a |
| 1629 | distribute/setuptools setup.py script.") |
| 1630 | (license license:bsd-2))) |
| 1631 | |
| 1632 | (define-public python-rawkit |
| 1633 | (package |
| 1634 | (name "python-rawkit") |
| 1635 | (version "0.6.0") |
| 1636 | (source (origin |
| 1637 | (method url-fetch) |
| 1638 | (uri (pypi-uri "rawkit" version)) |
| 1639 | (sha256 |
| 1640 | (base32 |
| 1641 | "0vrhrpr70i61y5q5ysk341x1539ff1q1k82g59zq69lv16s0f76s")))) |
| 1642 | (build-system python-build-system) |
| 1643 | (native-inputs |
| 1644 | (list python-pytest python-mock)) |
| 1645 | (inputs |
| 1646 | (list libraw)) |
| 1647 | (home-page "https://rawkit.readthedocs.io") |
| 1648 | (synopsis "Ctypes-based LibRaw binding for Python") |
| 1649 | (description "The rawkit package provides two modules: rawkit and libraw. |
| 1650 | The rawkit module provides a high-level Pythonic interface for developing raw |
| 1651 | photos, while the libraw module provides a CTypes based interface for |
| 1652 | interacting with the low-level LibRaw C APIs.") |
| 1653 | (license license:expat))) |
| 1654 | |
| 1655 | (define-public python-easygui |
| 1656 | (package |
| 1657 | (name "python-easygui") |
| 1658 | (version "0.98.1") |
| 1659 | (source (origin |
| 1660 | (method url-fetch) |
| 1661 | (uri (pypi-uri "easygui" version)) |
| 1662 | (sha256 |
| 1663 | (base32 |
| 1664 | "1zmvmwgxyzvm83818skhn8b4wrci4kmnixaax8q3ia5cn7xrmj6v")))) |
| 1665 | (build-system python-build-system) |
| 1666 | (propagated-inputs |
| 1667 | (list `(,python "tk"))) |
| 1668 | (home-page "https://github.com/robertlugg/easygui") |
| 1669 | (synopsis "GUI programming module for Python") |
| 1670 | (description "EasyGUI is a module for very simple, very easy GUI |
| 1671 | programming in Python. EasyGUI is different from other GUI generators in that |
| 1672 | EasyGUI is NOT event-driven. Instead, all GUI interactions are invoked by |
| 1673 | simple function calls.") |
| 1674 | (license license:bsd-3))) |
| 1675 | |
| 1676 | (define-public python-pymd4c |
| 1677 | (package |
| 1678 | (name "python-pymd4c") |
| 1679 | (version "0.4.6.0b1") |
| 1680 | (source |
| 1681 | (origin |
| 1682 | (method url-fetch) |
| 1683 | (uri (pypi-uri "pymd4c" version)) |
| 1684 | (sha256 |
| 1685 | (base32 "07s3arn85ri92im6x3ipljdmrxmpik7irs06i6lm17j1x6j9841d")))) |
| 1686 | (build-system python-build-system) |
| 1687 | (inputs |
| 1688 | (list md4c)) |
| 1689 | (native-inputs |
| 1690 | (list python-flake8 python-pkgconfig pkg-config)) |
| 1691 | (home-page "https://github.com/dominickpastore/pymd4c") |
| 1692 | (synopsis "Python bindings for MD4C") |
| 1693 | (description |
| 1694 | "PyMD4C provides Python bindings for MD4c, a C Markdown parser, compliant |
| 1695 | to CommonMark.") |
| 1696 | (license license:expat))) |
| 1697 | |
| 1698 | (define-public python-pymediainfo |
| 1699 | (package |
| 1700 | (name "python-pymediainfo") |
| 1701 | (version "4.1") |
| 1702 | (source |
| 1703 | (origin |
| 1704 | (method url-fetch) |
| 1705 | (uri (pypi-uri "pymediainfo" version)) |
| 1706 | (sha256 |
| 1707 | (base32 |
| 1708 | "0mhpxs7vlqx8w75z93dy7nnvx89kwfdjkla03l19an15rlyqyspd")))) |
| 1709 | (build-system python-build-system) |
| 1710 | (native-inputs |
| 1711 | (list python-setuptools-scm python-pytest)) |
| 1712 | (inputs |
| 1713 | (list libmediainfo)) |
| 1714 | (arguments |
| 1715 | `(#:phases |
| 1716 | (modify-phases %standard-phases |
| 1717 | (add-after 'unpack 'patch-libmediainfo |
| 1718 | (lambda _ |
| 1719 | (substitute* "pymediainfo/__init__.py" |
| 1720 | (("libmediainfo.so.0") |
| 1721 | (search-input-file %build-inputs |
| 1722 | "/lib/libmediainfo.so.0"))))) |
| 1723 | (replace 'check |
| 1724 | (lambda* (#:key tests? inputs outputs #:allow-other-keys) |
| 1725 | (when tests? |
| 1726 | (add-installed-pythonpath inputs outputs) |
| 1727 | ;; Skip the only failing test "test_parse_url" because it tries |
| 1728 | ;; to access the internet. |
| 1729 | (invoke "pytest" "-vv" "-k" "not test_parse_url"))))))) |
| 1730 | (home-page |
| 1731 | "https://github.com/sbraz/pymediainfo") |
| 1732 | (synopsis |
| 1733 | "Python wrapper for the mediainfo library") |
| 1734 | (description |
| 1735 | "This package provides a Python wrapper for the mediainfo library to |
| 1736 | access the technical and tag data for video and audio files.") |
| 1737 | (license license:expat))) |
| 1738 | |
| 1739 | (define-public python-psutil |
| 1740 | (package |
| 1741 | (name "python-psutil") |
| 1742 | (version "5.9.2") |
| 1743 | (source |
| 1744 | (origin |
| 1745 | (method url-fetch) |
| 1746 | (uri (pypi-uri "psutil" version)) |
| 1747 | (sha256 |
| 1748 | (base32 "0p1bf6ndcssqh0ic828ggwhzhm67mzj3ffq6043v0fvc1fhn3f7y")))) |
| 1749 | (build-system python-build-system) |
| 1750 | (arguments |
| 1751 | ;; FIXME: some tests do not return and time out. Some tests fail because |
| 1752 | ;; some processes survive kill(). |
| 1753 | '(#:tests? #f)) |
| 1754 | (home-page "https://github.com/giampaolo/psutil") |
| 1755 | (synopsis "Library for retrieving information on running processes") |
| 1756 | (description |
| 1757 | "@code{psutil} (Python system and process utilities) is a library for |
| 1758 | retrieving information on running processes and system utilization (CPU, |
| 1759 | memory, disks, network) in Python. It is useful mainly for system monitoring, |
| 1760 | profiling and limiting process resources and management of running processes. |
| 1761 | It implements many functionalities offered by command line tools such as: ps, |
| 1762 | top, lsof, netstat, ifconfig, who, df, kill, free, nice, ionice, iostat, |
| 1763 | iotop, uptime, pidof, tty, taskset, pmap.") |
| 1764 | (license license:bsd-3))) |
| 1765 | |
| 1766 | (define-public python-scapy |
| 1767 | (package |
| 1768 | (name "python-scapy") |
| 1769 | (version "2.5.0") |
| 1770 | (source (origin |
| 1771 | (method url-fetch) |
| 1772 | (uri (pypi-uri "scapy" version)) |
| 1773 | (sha256 |
| 1774 | (base32 |
| 1775 | "1hpbbmpcn4dwj3z7i7sz4cnbpkaf57p7mvl3p84x9n2gflmhq9jv")))) |
| 1776 | (arguments |
| 1777 | '(#:tests? #f)) ; There is a test directory, but apparently no |
| 1778 | ; automatic testing framework. |
| 1779 | ;; The package has more optional dependencies such as ipython and |
| 1780 | ;; matplotlib. If functionality is missing, these should be added. |
| 1781 | ;; See |
| 1782 | ;; https://scapy.readthedocs.io/en/latest/installation.html#optional-dependencies |
| 1783 | (build-system python-build-system) |
| 1784 | (home-page "https://scapy.net") |
| 1785 | (synopsis "Python network packet crafting library") |
| 1786 | (description |
| 1787 | "Scapy is a Python library and executable for interactively |
| 1788 | manipulating network packets. It can forge or decode packets of a number |
| 1789 | of protocols, send them on the wire, capture them, store or read them |
| 1790 | using pcap files, match requests and replies, and so on. |
| 1791 | It can handle tasks such as scanning, tracerouting, probing, unit tests, |
| 1792 | attacks or network discovery.") |
| 1793 | (license license:gpl2))) |
| 1794 | |
| 1795 | (define-public python-rasterio |
| 1796 | (package |
| 1797 | (name "python-rasterio") |
| 1798 | (version "1.3.7") |
| 1799 | (source (origin |
| 1800 | (method url-fetch) |
| 1801 | (uri (pypi-uri "rasterio" version)) |
| 1802 | (sha256 |
| 1803 | (base32 |
| 1804 | "012341c1rlcdr9rkg97lbhxrwzn4sr2xah4zjfnqy2r1227wpzdb")))) |
| 1805 | (properties |
| 1806 | '((updater-ignored-native-inputs . ("gdal" "python-cython")))) |
| 1807 | (build-system pyproject-build-system) |
| 1808 | (arguments |
| 1809 | (list |
| 1810 | #:tests? #false ;test data not present |
| 1811 | #:phases |
| 1812 | '(modify-phases %standard-phases |
| 1813 | (add-before 'check 'build-extensions |
| 1814 | (lambda _ |
| 1815 | ;; Cython extensions have to be built before running the tests. |
| 1816 | (invoke "python" "setup.py" "build_ext" "--inplace")))))) |
| 1817 | (propagated-inputs (list python-affine |
| 1818 | python-attrs |
| 1819 | python-certifi |
| 1820 | python-click |
| 1821 | python-click-plugins |
| 1822 | python-cligj |
| 1823 | python-numpy |
| 1824 | python-setuptools |
| 1825 | python-snuggs)) |
| 1826 | (native-inputs (list gdal |
| 1827 | python-boto3 |
| 1828 | python-cython |
| 1829 | python-hypothesis |
| 1830 | python-packaging |
| 1831 | python-pytest |
| 1832 | python-pytest-cov |
| 1833 | python-shapely)) |
| 1834 | (home-page "https://github.com/rasterio/rasterio") |
| 1835 | (synopsis "Fast and direct raster I/O for use with Numpy and SciPy") |
| 1836 | (description "This package implements fast and direct raster I/O for use |
| 1837 | with Numpy and SciPy.") |
| 1838 | (license license:bsd-3))) |
| 1839 | |
| 1840 | (define-public python-shapely |
| 1841 | (package |
| 1842 | (name "python-shapely") |
| 1843 | (version "2.0.1") |
| 1844 | (source |
| 1845 | (origin |
| 1846 | (method url-fetch) |
| 1847 | (uri (pypi-uri "shapely" version)) |
| 1848 | (sha256 |
| 1849 | (base32 "14v88k0y7qhp8n5clip6w96pkdzrfqa2hsjkhpy9gkifwyiv39k6")))) |
| 1850 | (build-system pyproject-build-system) |
| 1851 | (arguments |
| 1852 | (list |
| 1853 | #:phases |
| 1854 | '(modify-phases %standard-phases |
| 1855 | (add-before 'check 'build-extensions |
| 1856 | (lambda _ |
| 1857 | ;; Cython extensions have to be built before running the tests. |
| 1858 | (invoke "python" "setup.py" "build_ext" "--inplace")))))) |
| 1859 | (native-inputs |
| 1860 | (list python-cython python-matplotlib python-pytest |
| 1861 | python-pytest-cov)) |
| 1862 | (inputs |
| 1863 | (list geos)) |
| 1864 | (propagated-inputs |
| 1865 | (list python-numpy)) |
| 1866 | (home-page "https://github.com/Toblerity/Shapely") |
| 1867 | (synopsis "Library for the manipulation and analysis of geometric objects") |
| 1868 | (description "Shapely is a Python package for manipulation and analysis of |
| 1869 | planar geometric objects. It is based on the @code{GEOS} library.") |
| 1870 | (license license:bsd-3))) |
| 1871 | |
| 1872 | (define-public python-shortuuid |
| 1873 | (package |
| 1874 | (name "python-shortuuid") |
| 1875 | (version "0.5.0") |
| 1876 | (source |
| 1877 | (origin |
| 1878 | (method url-fetch) |
| 1879 | (uri (pypi-uri "shortuuid" version)) |
| 1880 | (sha256 |
| 1881 | (base32 |
| 1882 | "1f8i4zwj5vmpzbz6b17bljy4399gx5aq7vsyw63sz2qgyjcd73yh")))) |
| 1883 | (build-system python-build-system) |
| 1884 | (native-inputs |
| 1885 | (list python-pep8)) |
| 1886 | (home-page "https://github.com/skorokithakis/shortuuid") |
| 1887 | (synopsis "Generator library for concise, unambiguous and URL-safe UUIDs") |
| 1888 | (description |
| 1889 | "@code{shortuuid} is a Python library for generating concise, unambiguous |
| 1890 | and URL-safe UUIDs. UUIDs are generated using the built-in Python @code{uuid} |
| 1891 | module and then similar looking characters are removed.") |
| 1892 | (license license:bsd-3))) |
| 1893 | |
| 1894 | (define-public python-logwrap |
| 1895 | (package |
| 1896 | (name "python-logwrap") |
| 1897 | (version "8.2.0.post0") |
| 1898 | (source |
| 1899 | (origin |
| 1900 | (method url-fetch) |
| 1901 | (uri (pypi-uri "logwrap" version)) |
| 1902 | (sha256 |
| 1903 | (base32 |
| 1904 | "1dv7gny3rfci5cal2ipr6d0pcz3yhka7af96dfsd3ir1mxy8p1j9")))) |
| 1905 | (build-system python-build-system) |
| 1906 | (arguments |
| 1907 | `(#:tests? #f ; Tests not included in pypi release. |
| 1908 | #:phases |
| 1909 | (modify-phases %standard-phases |
| 1910 | (replace 'check |
| 1911 | (lambda* (#:key tests? #:allow-other-keys) |
| 1912 | (when tests? |
| 1913 | (invoke "pytest")) |
| 1914 | #t))))) |
| 1915 | (native-inputs |
| 1916 | (list python-cython python-pytest python-setuptools-scm python-toml |
| 1917 | python-wheel)) |
| 1918 | (home-page "https://github.com/python-useful-helpers/logwrap") |
| 1919 | (synopsis "Decorator for logging function arguments") |
| 1920 | (description "This package provides a decorator to log function arguments |
| 1921 | and function call return values in a human-readable way.") |
| 1922 | (license license:asl2.0))) |
| 1923 | |
| 1924 | (define-public python-clyent |
| 1925 | (package |
| 1926 | (name "python-clyent") |
| 1927 | (version "1.2.1") |
| 1928 | (source |
| 1929 | (origin |
| 1930 | (method url-fetch) |
| 1931 | (uri (pypi-uri "clyent" version)) |
| 1932 | (sha256 |
| 1933 | (base32 |
| 1934 | "1r9987qmy1pz3hq54160bapqsywpq14waw4w9x3ly8hmq7kpgfbj")))) |
| 1935 | (build-system python-build-system) |
| 1936 | (native-inputs |
| 1937 | (list python-mock)) |
| 1938 | (home-page "https://github.com/Anaconda-Platform/clyent") |
| 1939 | (synopsis "Command line client library") |
| 1940 | (description "Clyent is a Python command line utility library. It is used |
| 1941 | by @code{binstar}, @code{binstar-build}, and @code{chalmers}.") |
| 1942 | (license license:bsd-3))) |
| 1943 | |
| 1944 | (define-public python-babel |
| 1945 | (package |
| 1946 | (name "python-babel") |
| 1947 | (version "2.10.3") |
| 1948 | (source |
| 1949 | (origin |
| 1950 | (method url-fetch) |
| 1951 | (uri (pypi-uri "Babel" version)) |
| 1952 | (sha256 |
| 1953 | (base32 |
| 1954 | "0l9cvfmsz0hlvcinxaf6xf2f02ldgw3xq9i1fc7lk5zf24vma53n")))) |
| 1955 | (build-system python-build-system) |
| 1956 | (native-inputs |
| 1957 | (list python-freezegun python-pytest tzdata-for-tests)) |
| 1958 | (propagated-inputs |
| 1959 | (list python-pytz)) |
| 1960 | (arguments |
| 1961 | `(#:phases (modify-phases %standard-phases |
| 1962 | (replace 'check |
| 1963 | (lambda _ |
| 1964 | (invoke "pytest" "-vv")))))) |
| 1965 | (home-page "https://babel.pocoo.org/") |
| 1966 | (synopsis |
| 1967 | "Tools for internationalizing Python applications") |
| 1968 | (description |
| 1969 | "Babel is composed of two major parts: |
| 1970 | - tools to build and work with gettext message catalogs |
| 1971 | - a Python interface to the CLDR (Common Locale Data Repository), providing |
| 1972 | access to various locale display names, localized number and date formatting, |
| 1973 | etc.") |
| 1974 | (license license:bsd-3))) |
| 1975 | |
| 1976 | (define-public python-bidict |
| 1977 | (package |
| 1978 | (name "python-bidict") |
| 1979 | (version "0.21.2") |
| 1980 | (source |
| 1981 | (origin |
| 1982 | (method url-fetch) |
| 1983 | (uri (pypi-uri "bidict" version)) |
| 1984 | (sha256 |
| 1985 | (base32 |
| 1986 | "02dy0b1k7qlhn7ajyzkrvxhyhjj0hzcq6ws3zjml9hkdz5znz92g")))) |
| 1987 | (build-system python-build-system) |
| 1988 | (native-inputs |
| 1989 | (list python-coverage |
| 1990 | python-hypothesis |
| 1991 | python-py |
| 1992 | python-pytest |
| 1993 | python-pytest-benchmark |
| 1994 | python-pytest-cov |
| 1995 | python-setuptools-scm |
| 1996 | python-sortedcollections |
| 1997 | python-sortedcontainers |
| 1998 | python-sphinx |
| 1999 | python-sphinx-autodoc-typehints |
| 2000 | python-tox)) |
| 2001 | (arguments |
| 2002 | `(#:phases (modify-phases %standard-phases |
| 2003 | (add-after 'unpack 'relax-reqs |
| 2004 | (lambda _ |
| 2005 | (substitute* "setup.py" |
| 2006 | (("sortedcollections < 2") "sortedcollections")) |
| 2007 | #t)) |
| 2008 | (replace 'check |
| 2009 | (lambda _ (invoke "./run_tests.py")))))) |
| 2010 | (home-page "https://bidict.readthedocs.io") |
| 2011 | (synopsis "Bidirectional mapping library") |
| 2012 | (description "The @code{bidict} library provides several data structures |
| 2013 | for working with bidirectional mappings in Python.") |
| 2014 | (license license:mpl2.0))) |
| 2015 | |
| 2016 | (define-public python-bip39 |
| 2017 | (package |
| 2018 | (name "python-bip39") |
| 2019 | (version "0.0.2") |
| 2020 | (source |
| 2021 | (origin |
| 2022 | (method url-fetch) |
| 2023 | (uri (pypi-uri "bip39" version)) |
| 2024 | (sha256 |
| 2025 | (base32 "18m7d3gi7vj2zi0bl1z7m0nhcj6i8j9vj4vil276siagnpkv64ry")))) |
| 2026 | (build-system python-build-system) |
| 2027 | (native-inputs (list python-pytest)) |
| 2028 | (home-page "https://github.com/de-centralized-systems/python-bip39/") |
| 2029 | (synopsis "Self-contained and simple BIP39 implementation in Python") |
| 2030 | (description |
| 2031 | "This package provides a self-contained and simple BIP39 |
| 2032 | implementation written in Python. It includes a @code{bip39.py} executable. |
| 2033 | |
| 2034 | BIP39 is a standardized mapping between binary data (the @emph{entropy}), |
| 2035 | and a list of words that are easier to remember for humans (the |
| 2036 | @emph{mnemonic}).") |
| 2037 | (license license:expat))) |
| 2038 | |
| 2039 | (define-public python-bitarray |
| 2040 | (package |
| 2041 | (name "python-bitarray") |
| 2042 | (version "2.6.1") |
| 2043 | (source (origin |
| 2044 | (method url-fetch) |
| 2045 | (uri (pypi-uri "bitarray" version)) |
| 2046 | (sha256 |
| 2047 | (base32 |
| 2048 | "0c4jli872nzix81n1xirnrghlq2fdsxb570d9rnfvxi1694sah44")))) |
| 2049 | (build-system python-build-system) |
| 2050 | (arguments |
| 2051 | (list #:phases |
| 2052 | #~(modify-phases %standard-phases |
| 2053 | (replace 'check |
| 2054 | (lambda* (#:key tests? #:allow-other-keys) |
| 2055 | (when tests? |
| 2056 | ;; Step out of the source directory to avoid interference. |
| 2057 | (with-directory-excursion "/tmp" |
| 2058 | (invoke "python" "-c" |
| 2059 | "import bitarray; bitarray.test()")))))))) |
| 2060 | (home-page "https://github.com/ilanschnell/bitarray") |
| 2061 | (synopsis "Efficient arrays of booleans") |
| 2062 | (description "This package provides an object type which efficiently |
| 2063 | represents an array of booleans. Bitarrays are sequence types and behave very |
| 2064 | much like usual lists. Eight bits are represented by one byte in a contiguous |
| 2065 | block of memory. The user can select between two representations: |
| 2066 | little-endian and big-endian. All of the functionality is implemented in C. |
| 2067 | Methods for accessing the machine representation are provided. This can be |
| 2068 | useful when bit level access to binary files is required, such as portable |
| 2069 | bitmap image files. Also, when dealing with compressed data which uses |
| 2070 | variable bit length encoding, you may find this module useful.") |
| 2071 | (license license:psfl))) |
| 2072 | |
| 2073 | (define-public python-boolean.py |
| 2074 | (package |
| 2075 | (name "python-boolean.py") |
| 2076 | (version "4.0") |
| 2077 | (source |
| 2078 | (origin |
| 2079 | ;; There's no source tarball on PyPI. |
| 2080 | (method git-fetch) |
| 2081 | (uri (git-reference |
| 2082 | (url "https://github.com/bastikr/boolean.py") |
| 2083 | (commit (string-append "v" version)))) |
| 2084 | (file-name (git-file-name name version)) |
| 2085 | (sha256 |
| 2086 | (base32 "1s4mrgqf1phwvda81dpnlkdadcbjgpl8mjvmc1yjlrp1c368v9lb")))) |
| 2087 | (build-system python-build-system) |
| 2088 | (home-page "https://github.com/bastikr/boolean.py") |
| 2089 | (synopsis "Boolean algebra in one Python module") |
| 2090 | (description |
| 2091 | "This is a small Python library that implements boolean algebra. |
| 2092 | It defines two base elements, @code{TRUE} and @code{FALSE}, and a |
| 2093 | @code{Symbol} class that can take on one of these two values. Calculations |
| 2094 | are done only in terms of @code{AND}, @code{OR}, and @code{NOT}---other |
| 2095 | compositions like @code{XOR} and @code{NAND} are emulated on top of them. |
| 2096 | Expressions are constructed from parsed strings or directly in Python.") |
| 2097 | (license license:bsd-2))) |
| 2098 | |
| 2099 | (define-public python-hdf4 |
| 2100 | (package |
| 2101 | (name "python-hdf4") |
| 2102 | (version "0.9") |
| 2103 | (source |
| 2104 | (origin |
| 2105 | (method url-fetch) |
| 2106 | (uri (pypi-uri name version)) |
| 2107 | (sha256 |
| 2108 | (base32 |
| 2109 | "1hjiyrxvxk9817qyqky3nar4y3fs4z8wxz0n884zzb5wi6skrjks")))) |
| 2110 | (build-system python-build-system) |
| 2111 | (native-inputs `(("nose" ,python-nose))) |
| 2112 | (propagated-inputs `(("numpy" ,python-numpy))) |
| 2113 | (inputs |
| 2114 | `(("hdf4" ,hdf4) |
| 2115 | ("libjpeg" ,libjpeg-turbo) |
| 2116 | ("zlib" ,zlib))) |
| 2117 | (arguments |
| 2118 | `(#:phases |
| 2119 | (modify-phases %standard-phases |
| 2120 | (replace 'check |
| 2121 | (lambda _ |
| 2122 | (invoke "./runexamples.sh") |
| 2123 | (invoke "nosetests" "-v")))))) |
| 2124 | (home-page "https://github.com/fhs/python-hdf4") |
| 2125 | (synopsis "Python interface to the NCSA HDF4 library") |
| 2126 | (description |
| 2127 | "Python-HDF4 is a python wrapper around the NCSA HDF version 4 library, |
| 2128 | which implements the SD (Scientific Dataset), VS (Vdata) and V (Vgroup) API’s. |
| 2129 | NetCDF files can also be read and modified. Python-HDF4 is a fork of |
| 2130 | @url{http://hdfeos.org/software/pyhdf.php,pyhdf}.") |
| 2131 | (license license:expat))) |
| 2132 | |
| 2133 | (define-public python-h5netcdf |
| 2134 | (package |
| 2135 | (name "python-h5netcdf") |
| 2136 | (version "1.1.0") |
| 2137 | (source |
| 2138 | (origin |
| 2139 | (method url-fetch) |
| 2140 | (uri (pypi-uri "h5netcdf" version)) |
| 2141 | (sha256 |
| 2142 | (base32 "0mmzfr6k55zqxxpb64gvdqisak8s1zb2r04yzkmp0wzd7dbknb4k")))) |
| 2143 | (build-system pyproject-build-system) |
| 2144 | (native-inputs |
| 2145 | (list python-netcdf4 |
| 2146 | python-pytest |
| 2147 | python-setuptools-scm)) |
| 2148 | (propagated-inputs |
| 2149 | (list python-h5py python-packaging)) |
| 2150 | (home-page "https://h5netcdf.org") |
| 2151 | (synopsis "Python interface for the netCDF4 file-format based on h5py") |
| 2152 | (description "This package provides a Python interface for the netCDF4 |
| 2153 | file-format that reads and writes local or remote HDF5 files directly via |
| 2154 | @url{h5py, https://www.h5py.org/} or @url{h5pyd, |
| 2155 | https://github.com/HDFGroup/h5pyd}, without relying on the Unidata netCDF |
| 2156 | library.") |
| 2157 | (license license:bsd-3))) |
| 2158 | |
| 2159 | (define-public python-h5py |
| 2160 | (package |
| 2161 | (name "python-h5py") |
| 2162 | (version "3.8.0") |
| 2163 | (source |
| 2164 | (origin |
| 2165 | (method url-fetch) |
| 2166 | (uri (pypi-uri "h5py" version)) |
| 2167 | (sha256 |
| 2168 | (base32 |
| 2169 | "0pyr6z4h2xqbp49yx2i1401gl6yqh03h771zslwcy0201hpxiskg")))) |
| 2170 | (build-system python-build-system) |
| 2171 | (arguments |
| 2172 | `(#:tests? #f ; no test target |
| 2173 | #:phases |
| 2174 | (modify-phases %standard-phases |
| 2175 | (add-after 'unpack 'fix-hdf5-paths |
| 2176 | (lambda* (#:key inputs #:allow-other-keys) |
| 2177 | (setenv "HDF5_DIR" (assoc-ref inputs "hdf5"))))))) |
| 2178 | (propagated-inputs |
| 2179 | (list python-six python-numpy)) |
| 2180 | (inputs |
| 2181 | (list hdf5-1.10)) |
| 2182 | (native-inputs |
| 2183 | (list python-cython python-pkgconfig pkg-config)) |
| 2184 | (home-page "https://www.h5py.org/") |
| 2185 | (synopsis "Read and write HDF5 files from Python") |
| 2186 | (description |
| 2187 | "The h5py package provides both a high- and low-level interface to the |
| 2188 | HDF5 library from Python. The low-level interface is intended to be a |
| 2189 | complete wrapping of the HDF5 API, while the high-level component supports |
| 2190 | access to HDF5 files, datasets and groups using established Python and NumPy |
| 2191 | concepts.") |
| 2192 | (license license:bsd-3))) |
| 2193 | |
| 2194 | (define-public python-hjson |
| 2195 | ;; Using commit from master branch as the PyPI version does not contain |
| 2196 | ;; the hjson/tests/ directory. |
| 2197 | (let ((revision "0") |
| 2198 | (commit "1687b811fcbbc54b5ac71cfbaa99f805e406fbcb")) |
| 2199 | (package |
| 2200 | (name "python-hjson") |
| 2201 | (version (git-version "3.1.0" revision commit)) |
| 2202 | (source (origin |
| 2203 | (method git-fetch) |
| 2204 | (uri (git-reference |
| 2205 | (url "https://github.com/hjson/hjson-py") |
| 2206 | (commit commit))) |
| 2207 | (file-name (git-file-name name version)) |
| 2208 | (sha256 |
| 2209 | (base32 |
| 2210 | "1qfqnhvfx5mm7bdajjnnagmvns1zxyksjzh3k5la2ag6a8bp5gki")))) |
| 2211 | (build-system pyproject-build-system) |
| 2212 | (home-page "https://github.com/hjson/hjson-py") |
| 2213 | (synopsis "Python package to parse HJSON documents") |
| 2214 | (description "This package provides a Python library and a command-line |
| 2215 | interface utility to parse @url{https://hjson.github.io/, HJSON}) documents.") |
| 2216 | (license license:expat)))) |
| 2217 | |
| 2218 | (define-public python-hnswlib |
| 2219 | (package |
| 2220 | (name "python-hnswlib") |
| 2221 | (version "0.5.2") |
| 2222 | (source |
| 2223 | (origin |
| 2224 | (method url-fetch) |
| 2225 | (uri (pypi-uri "hnswlib" version)) |
| 2226 | (sha256 |
| 2227 | (base32 "0wf1cwmxmdzfqmfhrkqdxb5spf21ylgl2bidswhzjrqhwf35c9qf")))) |
| 2228 | (build-system python-build-system) |
| 2229 | (arguments |
| 2230 | `(#:phases |
| 2231 | (modify-phases %standard-phases |
| 2232 | (add-after 'unpack 'disable-native-optimization |
| 2233 | (lambda _ |
| 2234 | (substitute* "setup.py" |
| 2235 | ((", '-march=native'") ""))))))) |
| 2236 | (propagated-inputs |
| 2237 | (list python-numpy)) |
| 2238 | (native-inputs |
| 2239 | (list pybind11)) |
| 2240 | (home-page "https://github.com/nmslib/hnswlib") |
| 2241 | (synopsis "Fast approximate nearest neighbor search") |
| 2242 | (description "Hnswlib is a header-only C++ implementation of fast |
| 2243 | approximate nearest neighbor search with Python bindings.") |
| 2244 | (license license:asl2.0))) |
| 2245 | |
| 2246 | (define-public python-pylatexenc |
| 2247 | (package |
| 2248 | (name "python-pylatexenc") |
| 2249 | (version "2.10") |
| 2250 | (source (origin |
| 2251 | (method url-fetch) |
| 2252 | (uri (pypi-uri "pylatexenc" version)) |
| 2253 | (file-name (string-append name "-" version ".tar.gz")) |
| 2254 | (sha256 |
| 2255 | (base32 |
| 2256 | "1ls09z47b5md71gkxcj7fd87ynpvv2walgp2w6z31p26xf2gvn1x")))) |
| 2257 | (build-system python-build-system) |
| 2258 | (home-page "https://github.com/phfaist/pylatexenc") |
| 2259 | (synopsis "LaTeX parser for Unicode/LaTeX conversion") |
| 2260 | (description |
| 2261 | "@code{python-pylatexenc} is a LaTeX parser providing LaTeX-to-Unicode and |
| 2262 | Unicode-to-LaTeX conversion.") |
| 2263 | (license license:expat))) |
| 2264 | |
| 2265 | (define-public python-pyls-black |
| 2266 | (package |
| 2267 | (name "python-pyls-black") |
| 2268 | (version "0.4.7") |
| 2269 | (source |
| 2270 | (origin |
| 2271 | ;; There are no tests in the PyPI tarball. |
| 2272 | (method git-fetch) |
| 2273 | (uri (git-reference |
| 2274 | (url "https://github.com/rupert/pyls-black/") |
| 2275 | (commit (string-append "v" version)))) |
| 2276 | (file-name (git-file-name name version)) |
| 2277 | (sha256 |
| 2278 | (base32 "0bkhfnlik89j3yamr20br4wm8975f20v33wabi2nyxvj10whr5dj")) |
| 2279 | ;; Patch to work with python-lsp-server. Taken from |
| 2280 | ;; <https://github.com/rupert/pyls-black/pull/37>. |
| 2281 | (modules '((guix build utils))) |
| 2282 | (snippet |
| 2283 | '(begin |
| 2284 | (substitute* "setup.cfg" |
| 2285 | (("python-language-server") |
| 2286 | "python-lsp-server")) |
| 2287 | (substitute* '("pyls_black/plugin.py" "tests/test_plugin.py") |
| 2288 | (("pyls_format_document") |
| 2289 | "pylsp_format_document") |
| 2290 | (("pyls_format_range") |
| 2291 | "pylsp_format_range") |
| 2292 | (("from pyls([ \\.])" _ char) |
| 2293 | (string-append "from pylsp" char))))))) |
| 2294 | (build-system python-build-system) |
| 2295 | (arguments |
| 2296 | `(#:test-target "pytest")) |
| 2297 | (propagated-inputs |
| 2298 | (list python-black python-lsp-server python-tomli)) |
| 2299 | (native-inputs |
| 2300 | (list python-flake8 python-isort python-mypy python-pytest |
| 2301 | python-pytest-runner)) |
| 2302 | (home-page "https://github.com/rupert/pyls-black") |
| 2303 | (synopsis "Black plugin for the Python Language Server") |
| 2304 | (description "Black plugin for the Python Language Server.") |
| 2305 | (license license:expat))) |
| 2306 | |
| 2307 | (define-public python-sh |
| 2308 | (package |
| 2309 | (name "python-sh") |
| 2310 | (version "1.14.2") |
| 2311 | (source |
| 2312 | (origin |
| 2313 | (method url-fetch) |
| 2314 | (uri (pypi-uri "sh" version)) |
| 2315 | (sha256 |
| 2316 | (base32 |
| 2317 | "03gyss1rhj4in7pgysg4q0hxp3230whinlpy1532ljs99lrx0ywx")))) |
| 2318 | (build-system python-build-system) |
| 2319 | (arguments |
| 2320 | '(#:phases |
| 2321 | (modify-phases %standard-phases |
| 2322 | (replace 'check |
| 2323 | (lambda _ |
| 2324 | ;; XXX: A Python 2 test fails when HOME=/homeless-shelter. |
| 2325 | (setenv "HOME" "/tmp") |
| 2326 | (invoke "python" "sh.py" "test")))))) |
| 2327 | (native-inputs |
| 2328 | (list python-coverage)) |
| 2329 | (home-page "https://github.com/amoffat/sh") |
| 2330 | (synopsis "Python subprocess replacement") |
| 2331 | (description "This package provides a replacement for Python's |
| 2332 | @code{subprocess} feature.") |
| 2333 | (license license:expat))) |
| 2334 | |
| 2335 | (define-public python-cftime |
| 2336 | (package |
| 2337 | (name "python-cftime") |
| 2338 | (version "1.6.2") |
| 2339 | (source |
| 2340 | (origin |
| 2341 | (method url-fetch) |
| 2342 | (uri (pypi-uri "cftime" version)) |
| 2343 | (sha256 |
| 2344 | (base32 "1lp6jrjjgl18csn4bcnphn0l16ag4aynvn7x0kins155p07w0546")))) |
| 2345 | (build-system pyproject-build-system) |
| 2346 | (propagated-inputs |
| 2347 | (list python-numpy)) |
| 2348 | (native-inputs |
| 2349 | (list python-check-manifest |
| 2350 | python-coverage |
| 2351 | python-coveralls |
| 2352 | python-cython |
| 2353 | python-pytest-cov |
| 2354 | python-sphinx |
| 2355 | python-twine |
| 2356 | python-wheel)) |
| 2357 | (home-page "https://unidata.github.io/cftime/") |
| 2358 | (synopsis "Library for time handling") |
| 2359 | (description |
| 2360 | "This package provides time-handling functionality that used to be part |
| 2361 | of the netcdf4 package before.") |
| 2362 | (license license:expat))) |
| 2363 | |
| 2364 | (define-public python-netcdf4 |
| 2365 | (package |
| 2366 | (name "python-netcdf4") |
| 2367 | (version "1.6.0") |
| 2368 | (source |
| 2369 | (origin |
| 2370 | (method url-fetch) |
| 2371 | (uri (pypi-uri "netCDF4" version)) |
| 2372 | (sha256 |
| 2373 | (base32 |
| 2374 | "0qxs8r1qmsmg760wm5q0wqlcm7hdd3k7cghryw6wvqd3v5rs7vwm")))) |
| 2375 | (build-system python-build-system) |
| 2376 | (arguments |
| 2377 | '(#:phases |
| 2378 | (modify-phases %standard-phases |
| 2379 | (add-after 'unpack 'configure-locations |
| 2380 | (lambda* (#:key inputs #:allow-other-keys) |
| 2381 | (setenv "HDF5_DIR" (assoc-ref inputs "hdf5")) |
| 2382 | #t))))) |
| 2383 | (native-inputs |
| 2384 | (list python-cython)) |
| 2385 | (propagated-inputs |
| 2386 | (list python-numpy python-cftime)) |
| 2387 | (inputs |
| 2388 | (list netcdf hdf4 hdf5)) |
| 2389 | (home-page "https://github.com/Unidata/netcdf4-python") |
| 2390 | (synopsis "Python/numpy interface to the netCDF library") |
| 2391 | (description "Netcdf4-python is a Python interface to the netCDF C |
| 2392 | library. netCDF version 4 has many features not found in earlier |
| 2393 | versions of the library and is implemented on top of HDF5. This module |
| 2394 | can read and write files in both the new netCDF 4 and the old netCDF 3 |
| 2395 | format, and can create files that are readable by HDF5 clients. The |
| 2396 | API is modelled after @code{Scientific.IO.NetCDF}, and should be familiar |
| 2397 | to users of that module.") |
| 2398 | ;; The software is mainly ISC, but includes some files covered |
| 2399 | ;; by the Expat license. |
| 2400 | (license (list license:isc license:expat)))) |
| 2401 | |
| 2402 | (define-public python-ncclient |
| 2403 | (package |
| 2404 | (name "python-ncclient") |
| 2405 | (version "0.6.12") |
| 2406 | (source |
| 2407 | (origin |
| 2408 | (method git-fetch) ;no tests in PyPI release |
| 2409 | (uri (git-reference |
| 2410 | (url "https://github.com/ncclient/ncclient") |
| 2411 | (commit (string-append "v" version)))) |
| 2412 | (file-name (git-file-name name version)) |
| 2413 | (sha256 |
| 2414 | (base32 |
| 2415 | "0cb568z5syg6hh0dv813bw7s1mjy7ga5xzxbm9naf4zz2qfdg4js")))) |
| 2416 | (build-system python-build-system) |
| 2417 | (arguments |
| 2418 | `(#:phases (modify-phases %standard-phases |
| 2419 | (replace 'check |
| 2420 | (lambda* (#:key tests? #:allow-other-keys) |
| 2421 | (when tests? |
| 2422 | (invoke "pytest"))))))) |
| 2423 | (native-inputs |
| 2424 | (list python-pytest)) |
| 2425 | (propagated-inputs |
| 2426 | (list python-lxml python-paramiko)) |
| 2427 | (home-page "https://github.com/ncclient/ncclient") |
| 2428 | (synopsis "Python library for NETCONF clients") |
| 2429 | (description "@code{ncclient} is a Python library that facilitates |
| 2430 | client-side scripting and application development around the NETCONF |
| 2431 | protocol.") |
| 2432 | (license license:asl2.0))) |
| 2433 | |
| 2434 | (define-public python-ncls |
| 2435 | (package |
| 2436 | (name "python-ncls") |
| 2437 | (version "0.0.65") |
| 2438 | (source (origin |
| 2439 | (method url-fetch) |
| 2440 | (uri (pypi-uri "ncls" version)) |
| 2441 | (sha256 |
| 2442 | (base32 |
| 2443 | "1wx06xqknd2r98w8z93f47g5dpxzn92kamhj8vkq0nj569hf7cg1")))) |
| 2444 | (build-system python-build-system) |
| 2445 | (propagated-inputs (list python-numpy)) |
| 2446 | (home-page "https://github.com/endrebak/ncls") |
| 2447 | (synopsis "Nested containment list data structure") |
| 2448 | (description |
| 2449 | "This package provides a wrapper for the nested containment list data |
| 2450 | structure. It is a static interval-tree that is fast for both construction |
| 2451 | and lookups.") |
| 2452 | (license license:bsd-3))) |
| 2453 | |
| 2454 | (define-public python-license-expression |
| 2455 | (package |
| 2456 | (name "python-license-expression") |
| 2457 | (version "30.1.0") |
| 2458 | (source |
| 2459 | (origin |
| 2460 | (method url-fetch) |
| 2461 | (uri (pypi-uri "license-expression" version)) |
| 2462 | (sha256 |
| 2463 | (base32 "0lvshl2fhwa568d3y3vmx45hdp8gk5w9yl3b2q5d66r5vqn1sfwl")))) |
| 2464 | (build-system pyproject-build-system) |
| 2465 | (native-inputs |
| 2466 | (list python-setuptools-scm python-pytest)) |
| 2467 | (propagated-inputs |
| 2468 | (list python-boolean.py)) |
| 2469 | (home-page "https://github.com/nexB/license-expression") |
| 2470 | (synopsis "Apply boolean logic to license expressions") |
| 2471 | (description |
| 2472 | "This Python module defines a tiny language to evaluate and compare |
| 2473 | license expressions using boolean logic. Logical combinations of licenses can |
| 2474 | be tested for equality, containment, and equivalence. They can be normalised |
| 2475 | and simplified. It supports SPDX license expressions as well as other naming |
| 2476 | conventions and aliases in the same expression.") |
| 2477 | (license license:gpl2+))) |
| 2478 | |
| 2479 | (define-public python-wand |
| 2480 | (package |
| 2481 | (name "python-wand") |
| 2482 | (version "0.6.11") |
| 2483 | (source |
| 2484 | (origin |
| 2485 | (method url-fetch) |
| 2486 | (uri (pypi-uri "Wand" version)) |
| 2487 | (sha256 |
| 2488 | (base32 "15d9kxyc7qvknx0kv27m2jamnmisckyf89i7wlqykwgqm46p0qdn")))) |
| 2489 | (build-system python-build-system) |
| 2490 | (arguments |
| 2491 | `(#:phases |
| 2492 | (modify-phases %standard-phases |
| 2493 | (add-after 'unpack 'find-magickwand |
| 2494 | (lambda* (#:key inputs #:allow-other-keys) |
| 2495 | (setenv "MAGICK_HOME" (assoc-ref inputs "imagemagick")) |
| 2496 | (setenv "WAND_MAGICK_LIBRARY_SUFFIX" ".Q16"))) |
| 2497 | (replace 'check |
| 2498 | (lambda* (#:key tests? #:allow-other-keys) |
| 2499 | (when tests? |
| 2500 | (invoke "pytest" "-vv"))))))) |
| 2501 | (native-inputs |
| 2502 | (list python-pytest)) |
| 2503 | (inputs |
| 2504 | (list imagemagick)) |
| 2505 | (home-page "https://docs.wand-py.org/") |
| 2506 | (synopsis "MagickWand API binding for Python") |
| 2507 | (description |
| 2508 | "Wand is a ctypes-based binding for ImageMagick's MagickWand library.") |
| 2509 | (license license:expat))) |
| 2510 | |
| 2511 | (define-public python-lockfile |
| 2512 | (package |
| 2513 | (name "python-lockfile") |
| 2514 | (version "0.12.2") |
| 2515 | (source |
| 2516 | (origin |
| 2517 | (method url-fetch) |
| 2518 | (uri (pypi-uri "lockfile" version)) |
| 2519 | (sha256 |
| 2520 | (base32 |
| 2521 | "16gpx5hm73ah5n1079ng0vy381hl802v606npkx4x8nb0gg05vba")))) |
| 2522 | (build-system python-build-system) |
| 2523 | (arguments '(#:test-target "check")) |
| 2524 | (native-inputs |
| 2525 | (list python-pbr)) |
| 2526 | (home-page "https://launchpad.net/pylockfile") |
| 2527 | (synopsis "Platform-independent file locking module") |
| 2528 | (description |
| 2529 | "The lockfile package exports a LockFile class which provides a simple |
| 2530 | API for locking files.") |
| 2531 | (license license:expat))) |
| 2532 | |
| 2533 | (define-public python-fb-re2 |
| 2534 | (package |
| 2535 | (name "python-fb-re2") |
| 2536 | (version "1.0.7") |
| 2537 | (source |
| 2538 | (origin |
| 2539 | (method git-fetch) |
| 2540 | (uri (git-reference |
| 2541 | (url "https://github.com/facebook/pyre2") |
| 2542 | (commit (string-append "v" version)))) |
| 2543 | (file-name (git-file-name name version)) |
| 2544 | (sha256 |
| 2545 | (base32 |
| 2546 | "0snprxdnh3m45r3b0az4v0l28h90ycmfbybzla6xg1qviwv9w1ak")))) |
| 2547 | (build-system python-build-system) |
| 2548 | (inputs |
| 2549 | (list re2)) |
| 2550 | (home-page "https://github.com/facebook/pyre2") |
| 2551 | (synopsis "Python wrapper for RE2") |
| 2552 | (description "This package provides a Python extension that wraps Google's |
| 2553 | RE2 regular expression library. It implements many of the features of |
| 2554 | Python's built-in @code{re} module with compatible interfaces.") |
| 2555 | (license license:bsd-3))) |
| 2556 | |
| 2557 | (define-public python-filelock |
| 2558 | (package |
| 2559 | (name "python-filelock") |
| 2560 | (version "3.0.12") |
| 2561 | (source |
| 2562 | (origin |
| 2563 | (method url-fetch) |
| 2564 | (uri (pypi-uri "filelock" version)) |
| 2565 | (sha256 |
| 2566 | (base32 |
| 2567 | "0ngzlvb5j8gqs2nxlp2b0jhzii792h66wsn694qm8kqixr225n0q")))) |
| 2568 | (build-system python-build-system) |
| 2569 | (home-page |
| 2570 | "https://github.com/benediktschmitt/py-filelock") |
| 2571 | (synopsis "Platform independent file lock") |
| 2572 | (description "@code{filelock} contains a single module implementing |
| 2573 | a platform independent file lock in Python, which provides a simple way of |
| 2574 | inter-process communication.") |
| 2575 | (license license:unlicense))) |
| 2576 | |
| 2577 | (define-public python-filelock-3.5 |
| 2578 | (package |
| 2579 | (name "python-filelock") |
| 2580 | (version "3.5.0") |
| 2581 | (source |
| 2582 | (origin |
| 2583 | (method url-fetch) |
| 2584 | (uri (pypi-uri "filelock" version)) |
| 2585 | (sha256 |
| 2586 | (base32 |
| 2587 | "058av1r760ws7z6qffsjpqa39fmdxw0s1wnyr7p50y3zclg6cyqk")))) |
| 2588 | (build-system pyproject-build-system) |
| 2589 | (native-inputs (list python-pytest python-setuptools-scm)) |
| 2590 | (home-page "https://github.com/tox-dev/py-filelock") |
| 2591 | (synopsis "Platform independent file lock") |
| 2592 | (description "@code{filelock} contains a single module implementing |
| 2593 | a platform independent file lock in Python, which provides a simple way of |
| 2594 | inter-process communication.") |
| 2595 | (license license:unlicense))) |
| 2596 | |
| 2597 | (define-public python-semantic-version |
| 2598 | (package |
| 2599 | (name "python-semantic-version") |
| 2600 | (version "2.8.5") |
| 2601 | (source |
| 2602 | (origin |
| 2603 | (method url-fetch) |
| 2604 | (uri (pypi-uri "semantic_version" version)) |
| 2605 | (sha256 |
| 2606 | (base32 |
| 2607 | "0m4avx8zdkzc7qglv5zlr54g8yna5vl098drg5396ql7aph2vjyj")))) |
| 2608 | (build-system python-build-system) |
| 2609 | (home-page "https://github.com/rbarrois/python-semanticversion") |
| 2610 | (synopsis "Semantic versioning module for Python") |
| 2611 | (description |
| 2612 | "The @code{semantic_version} class is a small library for handling |
| 2613 | @uref{https://semver.org/, semantic versioning} (@dfn{SemVer}) in Python. |
| 2614 | |
| 2615 | It can compare versions, generate a new version that represents a bump in one of |
| 2616 | the version levels, and check whether any given string is a proper semantic |
| 2617 | version identifier.") |
| 2618 | (license license:bsd-3))) |
| 2619 | |
| 2620 | (define-public python-serpent |
| 2621 | (package |
| 2622 | (name "python-serpent") |
| 2623 | (version "1.28") |
| 2624 | (source |
| 2625 | (origin |
| 2626 | (method url-fetch) |
| 2627 | (uri (pypi-uri "serpent" version)) |
| 2628 | (sha256 |
| 2629 | (base32 "1arnckykpkvv2qrp49l1k7q5mr5pisswl0rvdx98x8wsl1n361pk")))) |
| 2630 | (build-system python-build-system) |
| 2631 | (native-inputs |
| 2632 | (list python-attrs python-pytz)) |
| 2633 | (home-page "https://github.com/irmen/Serpent") |
| 2634 | (synopsis "Serializer for literal Python expressions") |
| 2635 | (description |
| 2636 | "Serpent provides @code{ast.literal_eval()}-compatible object tree |
| 2637 | serialization. It serializes an object tree into bytes (an utf-8 encoded |
| 2638 | string) that can be decoded and then passed as-is to @code{ast.literal_eval()} |
| 2639 | to rebuild the original object tree. |
| 2640 | |
| 2641 | Because only safe literals are encoded, it is safe to send serpent data to |
| 2642 | other machines, such as over the network.") |
| 2643 | (license license:expat))) |
| 2644 | |
| 2645 | (define-public python-setuptools-declarative-requirements |
| 2646 | (package |
| 2647 | (name "python-setuptools-declarative-requirements") |
| 2648 | (version "1.2.0") |
| 2649 | (source |
| 2650 | (origin |
| 2651 | (method url-fetch) |
| 2652 | (uri (pypi-uri |
| 2653 | "setuptools-declarative-requirements" |
| 2654 | version)) |
| 2655 | (sha256 |
| 2656 | (base32 |
| 2657 | "1l8zmcnp9h8sp8hsw7b81djaa1a9yig0y7i4phh5pihqz1gdn7yi")))) |
| 2658 | (build-system python-build-system) |
| 2659 | (native-inputs |
| 2660 | (list python-pytest python-setuptools-scm)) |
| 2661 | (propagated-inputs |
| 2662 | (list python-toml python-wheel)) |
| 2663 | (home-page |
| 2664 | "https://github.com/s0undt3ch/setuptools-declarative-requirements") |
| 2665 | (synopsis "File support for setuptools declarative setup.cfg") |
| 2666 | (description |
| 2667 | "This package provides file support for setuptools declarative |
| 2668 | @code{setup.cfg}.") |
| 2669 | (license license:asl2.0))) |
| 2670 | |
| 2671 | ;; The setuptools provided by Python 3.9 is too new for Tensorflow. |
| 2672 | (define-public python-setuptools-for-tensorflow |
| 2673 | (hidden-package |
| 2674 | (package |
| 2675 | (inherit python-setuptools) |
| 2676 | (version "39.1.0") |
| 2677 | (source (origin |
| 2678 | (inherit (package-source python-setuptools)) |
| 2679 | (uri (pypi-uri "setuptools" version ".zip")) |
| 2680 | (sha256 |
| 2681 | (base32 |
| 2682 | "1mzdhvfhnv4lggxa8rjl0dzqxvfx377gg5sqs57v89wrp09lwj65")))) |
| 2683 | (arguments |
| 2684 | `(#:tests? #f ; tests require vendored resources |
| 2685 | #:phases |
| 2686 | (modify-phases %standard-phases |
| 2687 | (add-after 'unpack 'compatibility-fixes |
| 2688 | (lambda _ |
| 2689 | ;; Python 3.9 no longer has HTMLParser |
| 2690 | (substitute* "setuptools/py33compat.py" |
| 2691 | (("html_parser.HTMLParser\\(\\).unescape") |
| 2692 | "html.unescape")) |
| 2693 | ;; collections classes have moved in Python 3.10 |
| 2694 | (substitute* "pkg_resources/_vendor/pyparsing.py" |
| 2695 | (("collections.MutableMapping") |
| 2696 | "collections.abc.MutableMapping") |
| 2697 | (("collections.Iterable") |
| 2698 | "collections.abc.Iterable")) |
| 2699 | ;; This needs distutils.msvc9compiler |
| 2700 | (delete-file "setuptools/tests/test_msvc.py") |
| 2701 | ;; See https://github.com/pypa/setuptools/issues/2558 |
| 2702 | (delete-file "setuptools/command/bdist_wininst.py") |
| 2703 | (substitute* "setuptools/command/install_scripts.py" |
| 2704 | (("bw_cmd =.*") "\n") |
| 2705 | (("is_wininst =.*") |
| 2706 | "is_wininst = False\n"))))))) |
| 2707 | (native-inputs |
| 2708 | (list python-pytest python-mock python-six))))) |
| 2709 | |
| 2710 | (define-public python-uniseg |
| 2711 | (package |
| 2712 | (name "python-uniseg") |
| 2713 | (version "0.7.1") |
| 2714 | (source |
| 2715 | (origin |
| 2716 | (method url-fetch) |
| 2717 | (uri (pypi-uri "uniseg" version ".zip")) |
| 2718 | (sha256 |
| 2719 | (base32 |
| 2720 | "05jsazvz6nbmh6l3v1rph5ydkqn1hzx1pyggdyvgp2qgmgrnmiz2")))) |
| 2721 | (build-system python-build-system) |
| 2722 | (arguments |
| 2723 | '(#:tests? #f)) ; The test suite requires network access. |
| 2724 | (native-inputs |
| 2725 | (list unzip)) |
| 2726 | (home-page |
| 2727 | "https://bitbucket.org/emptypage/uniseg-python") |
| 2728 | (synopsis |
| 2729 | "Python library to determine Unicode text segmentations") |
| 2730 | (description |
| 2731 | "Uniseg is a Python package used to determine Unicode text segmentations. |
| 2732 | Supported segmentations include: |
| 2733 | @enumerate |
| 2734 | @item @dfn{Code point} (any value in the Unicode codespace) |
| 2735 | @item @dfn{Grapheme cluster} (user-perceived character made of a single or |
| 2736 | multiple Unicode code points, e.g. \"G\" + acute-accent) |
| 2737 | @item Word break |
| 2738 | @item Sentence break |
| 2739 | @item Line break |
| 2740 | @end enumerate") |
| 2741 | (license license:expat))) |
| 2742 | |
| 2743 | (define-public python-humanfriendly |
| 2744 | (package |
| 2745 | (name "python-humanfriendly") |
| 2746 | (version "8.2") |
| 2747 | (source |
| 2748 | (origin |
| 2749 | (method url-fetch) |
| 2750 | (uri (pypi-uri "humanfriendly" version)) |
| 2751 | (sha256 |
| 2752 | (base32 |
| 2753 | "04ixg8b7p6xc8x8lffhi7wfl77xhszakhd0s6j0cf6a84j8yqlmz")))) |
| 2754 | (build-system python-build-system) |
| 2755 | (arguments |
| 2756 | `(;; XXX: Tests depend on coloredlogs, which in turn depends on humanfriendly. |
| 2757 | #:tests? #f)) |
| 2758 | (home-page "https://humanfriendly.readthedocs.io") |
| 2759 | (synopsis "Human-friendly input and output in Python") |
| 2760 | (description |
| 2761 | "The functions and classes in @code{humanfriendly} can be used to make |
| 2762 | text interfaces more user-friendly. It includes tools to parse and format |
| 2763 | numbers, file sizes, and timespans, timers for long-running operations, menus |
| 2764 | to allow the user to choose from a list of options, and terminal interaction |
| 2765 | helpers.") |
| 2766 | (license license:expat))) |
| 2767 | |
| 2768 | (define-public python-textparser |
| 2769 | (package |
| 2770 | (name "python-textparser") |
| 2771 | (version "0.23.0") |
| 2772 | (source |
| 2773 | (origin |
| 2774 | (method url-fetch) |
| 2775 | (uri (pypi-uri "textparser" version)) |
| 2776 | (sha256 |
| 2777 | (base32 |
| 2778 | "0w5lyhrsvzs5a9q1l3sjgxgljrvd3ybf796w93kc39wayzvd02gh")))) |
| 2779 | (build-system python-build-system) |
| 2780 | (home-page "https://github.com/eerimoq/textparser") |
| 2781 | (synopsis "Fast text parser for Python") |
| 2782 | (description "This library provides a text parser written in the Python |
| 2783 | language. It aims to be fast.") |
| 2784 | (license license:expat))) |
| 2785 | |
| 2786 | (define-public python-aenum |
| 2787 | (package |
| 2788 | (name "python-aenum") |
| 2789 | (version "3.1.12") |
| 2790 | (source |
| 2791 | (origin |
| 2792 | (method url-fetch) |
| 2793 | (uri (pypi-uri "aenum" version)) |
| 2794 | (sha256 |
| 2795 | (base32 "1w1ffkcxgnimi5w8802qk6w2qxz9k8hpvsg6yy2zi08ahs8iqlry")) |
| 2796 | (modules '((guix build utils))) |
| 2797 | (snippet |
| 2798 | ;; Delete the Python 2 specific files which won't compile |
| 2799 | ;; in Python 3. |
| 2800 | '(for-each delete-file (find-files "." "_py2.py$"))))) |
| 2801 | (build-system python-build-system) |
| 2802 | (arguments |
| 2803 | `(#:phases (modify-phases %standard-phases |
| 2804 | (replace 'check |
| 2805 | (lambda _ |
| 2806 | ;; We must run the test suite module directly, as it |
| 2807 | ;; fails to define the 'tempdir' variable in scope for |
| 2808 | ;; the tests otherwise |
| 2809 | ;; (see:https://bitbucket.org/stoneleaf/aenum/\ |
| 2810 | ;; issues/32/running-tests-with-python-setuppy-test). |
| 2811 | (invoke "python3" "aenum/test.py") |
| 2812 | ;; This one fails with "NameError: name |
| 2813 | ;; 'test_pickle_dump_load' is not defined" (see: |
| 2814 | ;; https://bitbucket.org/stoneleaf/aenum/issues/33 |
| 2815 | ;; /error-running-the-test_v3py-test-suite). |
| 2816 | ;; (invoke "python3" "aenum/test_v3.py") |
| 2817 | #t))))) |
| 2818 | (home-page "https://bitbucket.org/stoneleaf/aenum") |
| 2819 | (synopsis "Advanced enumerations, namedtuples and constants for Python") |
| 2820 | (description "The aenum library includes an @code{Enum} base class, a |
| 2821 | metaclass-based @code{NamedTuple} implementation and a @code{NamedConstant} |
| 2822 | class.") |
| 2823 | (license license:bsd-3))) |
| 2824 | |
| 2825 | (define-public python-can |
| 2826 | (package |
| 2827 | (name "python-can") |
| 2828 | (version "4.2.0") |
| 2829 | (source |
| 2830 | (origin |
| 2831 | (method url-fetch) |
| 2832 | (uri (pypi-uri "python-can" version)) |
| 2833 | (sha256 |
| 2834 | (base32 |
| 2835 | "1w5sdzxivpd3pw4pypwnjlksvfimdb93qnlddbrh5f13flhsgg8g")))) |
| 2836 | (build-system pyproject-build-system) |
| 2837 | (arguments |
| 2838 | (list |
| 2839 | #:test-flags |
| 2840 | #~(list |
| 2841 | ;; TODO: Check if it could be packed: |
| 2842 | ;; https://github.com/projectgus/python-canalystii |
| 2843 | ;; |
| 2844 | ;; Disable tests which require specific CAN drivers we have no |
| 2845 | ;; package for in Guix. |
| 2846 | "--ignore" "test/test_interface_canalystii.py" |
| 2847 | ;; These tests fail with "OSError: [Errno 19] No such device". |
| 2848 | "-k" "not BasicTestUdpMulticastBusIPv"))) |
| 2849 | (propagated-inputs |
| 2850 | (list python-msgpack python-typing-extensions python-wrapt)) |
| 2851 | (native-inputs |
| 2852 | (list ;; python-canalystii ; Not packed yet |
| 2853 | python-codecov |
| 2854 | python-coverage |
| 2855 | python-future |
| 2856 | python-hypothesis |
| 2857 | python-mock |
| 2858 | python-parameterized |
| 2859 | python-pyserial |
| 2860 | python-pytest |
| 2861 | python-pytest-cov |
| 2862 | python-pytest-runner |
| 2863 | python-pytest-timeout)) |
| 2864 | (home-page "https://github.com/hardbyte/python-can") |
| 2865 | (synopsis "Controller Area Network (CAN) interface module for Python") |
| 2866 | (description "This package defines the @code{can} module, which provides |
| 2867 | controller area network (CAN) support for Python developers; providing common |
| 2868 | abstractions to different hardware devices, and a suite of utilities for |
| 2869 | sending and receiving messages on a CAN bus.") |
| 2870 | (license license:lgpl3+))) |
| 2871 | |
| 2872 | (define-public python-canopen |
| 2873 | (package |
| 2874 | (name "python-canopen") |
| 2875 | (version "2.0.0") |
| 2876 | (source |
| 2877 | (origin |
| 2878 | (method url-fetch) |
| 2879 | (uri (pypi-uri "canopen" version)) |
| 2880 | (sha256 |
| 2881 | (base32 "1nb543wb37kj95v6bhh272lm5gkpi41q3pnsl1fxlyizm2gamj5w")))) |
| 2882 | (build-system python-build-system) |
| 2883 | (native-inputs (list python-packaging)) |
| 2884 | (propagated-inputs (list python-can)) |
| 2885 | (home-page "https://github.com/christiansandberg/canopen") |
| 2886 | (synopsis "CANopen stack implementation") |
| 2887 | (description |
| 2888 | "This package provides a Python implementation of the |
| 2889 | @uref{https://www.can-cia.org/canopen/,CANopen standard} for |
| 2890 | @acronym{CANs, controller-area networks}. The aim of the project is to |
| 2891 | support the most common parts of the CiA 301 standard in a simple |
| 2892 | Pythonic interface. It is mainly targeted for testing and automation |
| 2893 | tasks rather than a standard compliant master implementation.") |
| 2894 | (license license:expat))) |
| 2895 | |
| 2896 | (define-public python-caniusepython3 |
| 2897 | (package |
| 2898 | (name "python-caniusepython3") |
| 2899 | (version "7.2.0") |
| 2900 | (source |
| 2901 | (origin |
| 2902 | (method url-fetch) |
| 2903 | (uri (pypi-uri "caniusepython3" version)) |
| 2904 | (sha256 |
| 2905 | (base32 |
| 2906 | "0a755444ln38j8d7xb3yw0wzpd0mjrzfn6zqvsh06nw1vdaq4l28")))) |
| 2907 | (build-system python-build-system) |
| 2908 | (arguments |
| 2909 | `(#:phases (modify-phases %standard-phases |
| 2910 | (add-after 'unpack 'relax-requirements |
| 2911 | (lambda _ |
| 2912 | (substitute* "setup.py" |
| 2913 | ;; These are for compatibility with Python 2. |
| 2914 | ((".*'argparse', 'backports.functools_lru_cache',.*") |
| 2915 | "")) |
| 2916 | (substitute* "dev_requirements.txt" |
| 2917 | ((".*pylint.*") "")) ;not actually required |
| 2918 | #t)) |
| 2919 | (replace 'check |
| 2920 | (lambda _ |
| 2921 | (invoke "py.test" "-k" "not NetworkTests")))))) |
| 2922 | (propagated-inputs |
| 2923 | (list python-distlib python-packaging python-requests)) |
| 2924 | (native-inputs |
| 2925 | (list python-mock python-pytest)) |
| 2926 | (home-page "https://github.com/brettcannon/caniusepython3") |
| 2927 | (synopsis "Check for Python 3-incompatible Python libraries") |
| 2928 | (description "The @command{caniusepython3} command scans your project and |
| 2929 | reports the Python 3-incompatible libraries it found. It can also be used as |
| 2930 | a library.") |
| 2931 | (license license:asl2.0))) |
| 2932 | |
| 2933 | (define-public python-diskcache |
| 2934 | (package |
| 2935 | (name "python-diskcache") |
| 2936 | (version "4.1.0") |
| 2937 | (source |
| 2938 | (origin |
| 2939 | (method url-fetch) |
| 2940 | (uri (pypi-uri "diskcache" version)) |
| 2941 | (sha256 |
| 2942 | (base32 |
| 2943 | "1q2wz5sj16zgyy1zpq516qgbnfwsavk1pl2qks0f4r62z5cmmvmw")))) |
| 2944 | (build-system python-build-system) |
| 2945 | (arguments |
| 2946 | `(#:tests? #f)) ;test suite not included in the release |
| 2947 | (home-page "https://www.grantjenks.com/docs/diskcache/") |
| 2948 | (synopsis "Disk and file backed cache library") |
| 2949 | (description "DiskCache is a disk and file backed persistent cache.") |
| 2950 | (license license:asl2.0))) |
| 2951 | |
| 2952 | (define-public python-optparse-pretty |
| 2953 | (package |
| 2954 | (name "python-optparse-pretty") |
| 2955 | (version "0.1.1") |
| 2956 | (source |
| 2957 | (origin |
| 2958 | (method url-fetch) |
| 2959 | (uri (pypi-uri "optparse-pretty" version)) |
| 2960 | (sha256 |
| 2961 | (base32 "1920wbh2b7a8qn7zx2iiqbcdaax335l81a73x9pp8h11yzs2jdmh")))) |
| 2962 | (build-system pyproject-build-system) |
| 2963 | (arguments (list #:tests? #false)) ;There are none |
| 2964 | (home-page "https://github.com/gvalkov/optparse-pretty") |
| 2965 | (synopsis "Compact help formatter for optparse") |
| 2966 | (description |
| 2967 | "This module provides two help formatters for optparse. They provide |
| 2968 | terser and more customizable option formatting in comparison to the default |
| 2969 | help formatter.") |
| 2970 | (license license:bsd-3))) |
| 2971 | |
| 2972 | (define-public python-orjson |
| 2973 | (package |
| 2974 | (name "python-orjson") |
| 2975 | (version "3.8.8") |
| 2976 | (source (origin |
| 2977 | (method url-fetch) |
| 2978 | (uri (pypi-uri "orjson" version)) |
| 2979 | (sha256 |
| 2980 | (base32 |
| 2981 | "1nn617pzn8smjkf7j593ybq16qfnj53bla52qjwzzrms4fjxg5n0")))) |
| 2982 | (build-system cargo-build-system) |
| 2983 | (arguments |
| 2984 | (list |
| 2985 | #:imported-modules `(,@%cargo-build-system-modules |
| 2986 | ,@%pyproject-build-system-modules) |
| 2987 | #:modules '((guix build cargo-build-system) |
| 2988 | ((guix build pyproject-build-system) #:prefix py:) |
| 2989 | (guix build utils)) |
| 2990 | #:phases |
| 2991 | #~(modify-phases %standard-phases |
| 2992 | (add-after 'install 'prepare-python-module |
| 2993 | (lambda _ |
| 2994 | ;; We don't use maturin. |
| 2995 | (delete-file "pyproject.toml") |
| 2996 | (call-with-output-file "pyproject.toml" |
| 2997 | (lambda (port) |
| 2998 | (format port "\ |
| 2999 | [build-system] |
| 3000 | build-backend = 'setuptools.build_meta' |
| 3001 | requires = ['setuptools'] |
| 3002 | "))) |
| 3003 | (call-with-output-file "setup.cfg" |
| 3004 | (lambda (port) |
| 3005 | (format port "\ |
| 3006 | [metadata] |
| 3007 | name = orjson |
| 3008 | version = ~a |
| 3009 | |
| 3010 | [options] |
| 3011 | packages = find: |
| 3012 | |
| 3013 | [options.packages.find] |
| 3014 | exclude = |
| 3015 | src |
| 3016 | integration |
| 3017 | test |
| 3018 | Cargo.toml |
| 3019 | " #$version))))) |
| 3020 | (add-after 'prepare-python-module 'build-python-module |
| 3021 | (assoc-ref py:%standard-phases 'build)) |
| 3022 | (add-after 'build-python-module 'install-python-module |
| 3023 | (assoc-ref py:%standard-phases 'install)) |
| 3024 | (add-after 'install-python-module 'install-python-library |
| 3025 | (lambda _ |
| 3026 | (let ((site (string-append #$output "/lib/python" |
| 3027 | #$(version-major+minor |
| 3028 | (package-version python)) |
| 3029 | "/site-packages"))) |
| 3030 | (mkdir-p site) |
| 3031 | (copy-file "target/release/liborjson.so" |
| 3032 | (string-append site "/orjson.so")))))) |
| 3033 | #:cargo-inputs |
| 3034 | `(("rust-ahash" ,rust-ahash-0.8) |
| 3035 | ("rust-arrayvec" ,rust-arrayvec-0.7) |
| 3036 | ("rust-associative-cache" ,rust-associative-cache-1) |
| 3037 | ("rust-beef" ,rust-beef-0.5) |
| 3038 | ("rust-bytecount" ,rust-bytecount-0.6) |
| 3039 | ("rust-chrono" ,rust-chrono-0.4) |
| 3040 | ("rust-compact-str" ,rust-compact-str-0.7) |
| 3041 | ("rust-encoding-rs" ,rust-encoding-rs-0.8) |
| 3042 | ("rust-itoa" ,rust-itoa-1) |
| 3043 | ("rust-itoap" ,rust-itoap-1) |
| 3044 | ("rust-once-cell" ,rust-once-cell-1) |
| 3045 | ("rust-pyo3-ffi" ,rust-pyo3-ffi-0.18) |
| 3046 | ("rust-ryu" ,rust-ryu-1) |
| 3047 | ("rust-serde" ,rust-serde-1) |
| 3048 | ("rust-serde-json" ,rust-serde-json-1) |
| 3049 | ("rust-simdutf8" ,rust-simdutf8-0.1) |
| 3050 | ("rust-smallvec" ,rust-smallvec-1)) |
| 3051 | #:install-source? #false)) |
| 3052 | (native-inputs |
| 3053 | (list python-wrapper |
| 3054 | python-pypa-build |
| 3055 | python-wheel)) |
| 3056 | (home-page "https://github.com/ijl/orjson") |
| 3057 | (synopsis "Python JSON library supporting dataclasses, datetimes, and numpy") |
| 3058 | (description "Orjson is a fast, correct JSON library for Python. It |
| 3059 | benchmarks as the fastest Python library for JSON and is more correct than the |
| 3060 | standard @code{json} library or other third-party libraries. It serializes |
| 3061 | dataclass, datetime, numpy, and UUID instances natively.") |
| 3062 | ;; Either of these licenses |
| 3063 | (license (list license:asl2.0 license:expat)))) |
| 3064 | |
| 3065 | (define-public python-argparse-addons |
| 3066 | (package |
| 3067 | (name "python-argparse-addons") |
| 3068 | (version "0.7.0") |
| 3069 | (source |
| 3070 | (origin |
| 3071 | (method url-fetch) |
| 3072 | (uri (pypi-uri "argparse_addons" version)) |
| 3073 | (sha256 |
| 3074 | (base32 "1yx54dmnr3xggjcjk6bbdafvzp6cynrakl56wyz3jglmfvk0znpm")))) |
| 3075 | (build-system python-build-system) |
| 3076 | (home-page "https://github.com/eerimoq/argparse_addons") |
| 3077 | (synopsis "Extensions for Python's @code{argparse} library") |
| 3078 | (description "This Python library provides additional types and actions |
| 3079 | for the standard @code{argparse} library.") |
| 3080 | (license license:expat))) |
| 3081 | |
| 3082 | (define-public python-bitstruct |
| 3083 | (package |
| 3084 | (name "python-bitstruct") |
| 3085 | (version "8.14.0") |
| 3086 | (source |
| 3087 | (origin |
| 3088 | (method url-fetch) |
| 3089 | (uri (pypi-uri "bitstruct" version)) |
| 3090 | (sha256 |
| 3091 | (base32 |
| 3092 | "149c73yrqbph71bbyf925r2mbh2jdymqxc6d49lnylpiflf1j313")))) |
| 3093 | (build-system python-build-system) |
| 3094 | (home-page "https://github.com/eerimoq/bitstruct") |
| 3095 | (synopsis "Python values to and C bit field structs converter") |
| 3096 | (description "This module performs conversions between Python values and C |
| 3097 | bit field structs represented as Python byte strings. It is intended to have |
| 3098 | a similar interface as the @code{struct} module from Python, but working on |
| 3099 | bits instead of primitive data types like @code{char}, @code{int}, etc.") |
| 3100 | (license license:expat))) |
| 3101 | |
| 3102 | (define-public python-cantools |
| 3103 | (package |
| 3104 | (name "python-cantools") |
| 3105 | (version "37.0.7") |
| 3106 | (source |
| 3107 | (origin |
| 3108 | ;; We take the sources from the Git repository as the documentation is |
| 3109 | ;; not included with the PyPI archive. |
| 3110 | (method git-fetch) |
| 3111 | (uri (git-reference |
| 3112 | (url "https://github.com/eerimoq/cantools") |
| 3113 | (commit version))) |
| 3114 | (file-name (git-file-name name version)) |
| 3115 | (sha256 |
| 3116 | (base32 |
| 3117 | "1qcf1fcwif7w70qmhxw2b8kqh420igbinq60p1chzf98xcb0ansx")))) |
| 3118 | (build-system python-build-system) |
| 3119 | (arguments |
| 3120 | (list |
| 3121 | #:phases |
| 3122 | #~(modify-phases %standard-phases |
| 3123 | (add-after 'build 'build-doc |
| 3124 | (lambda _ |
| 3125 | ;; See: https://github.com/eerimoq/cantools/issues/190. |
| 3126 | (substitute* "README.rst" |
| 3127 | (("https://github.com/eerimoq/cantools/raw/master\ |
| 3128 | /docs/monitor.png") |
| 3129 | "monitor.png")) |
| 3130 | (invoke "make" "-C" "docs" "man" "info"))) |
| 3131 | (add-after 'install 'install-doc |
| 3132 | (lambda* (#:key outputs #:allow-other-keys) |
| 3133 | (let* ((info (string-append #$output "/share/info")) |
| 3134 | (man1 (string-append #$output "/share/man/man1"))) |
| 3135 | (install-file "docs/_build/texinfo/cantools.info" info) |
| 3136 | (install-file "docs/_build/man/cantools.1" man1))))))) |
| 3137 | (native-inputs (list python-sphinx texinfo)) |
| 3138 | (propagated-inputs |
| 3139 | (list python-argparse-addons |
| 3140 | python-bitstruct |
| 3141 | python-can |
| 3142 | python-crccheck |
| 3143 | python-diskcache |
| 3144 | python-matplotlib |
| 3145 | python-parameterized |
| 3146 | python-textparser)) |
| 3147 | (home-page "https://github.com/eerimoq/cantools") |
| 3148 | (synopsis "Tools for the Controller Area Network (CAN) bus protocol") |
| 3149 | (description "This package includes Controller Area Network (CAN) related |
| 3150 | tools that can be used to: |
| 3151 | @itemize |
| 3152 | @item parse DBC, KCD, SYM, ARXML 4 and CDD files |
| 3153 | @item encode and decode CAN messages |
| 3154 | @item multiplex simple and extended signals |
| 3155 | @item diagnose DID encoding and decoding |
| 3156 | @item dump the CAN decoder output |
| 3157 | @item test CAN nodes |
| 3158 | @item generate C source code |
| 3159 | @item monitor the CAN bus |
| 3160 | @end itemize") |
| 3161 | (license license:expat))) |
| 3162 | |
| 3163 | (define-public python-capturer |
| 3164 | (package |
| 3165 | (name "python-capturer") |
| 3166 | (version "2.4") |
| 3167 | (source |
| 3168 | (origin |
| 3169 | (method url-fetch) |
| 3170 | (uri (pypi-uri "capturer" version)) |
| 3171 | (sha256 |
| 3172 | (base32 |
| 3173 | "05d6ji4j8ipiq0br7bwam38qc6hd9l1djmfxlzrxx19ziyjl4089")))) |
| 3174 | (build-system python-build-system) |
| 3175 | (arguments |
| 3176 | `(#:tests? #f)) |
| 3177 | (propagated-inputs |
| 3178 | (list python-humanfriendly)) |
| 3179 | (home-page "https://capturer.readthedocs.io") |
| 3180 | (synopsis "Capture stdout and stderr streams of the current process") |
| 3181 | (description |
| 3182 | "The capturer package makes it easy to capture the stdout and stderr |
| 3183 | streams of the current process and subprocesses. Output can be relayed |
| 3184 | to the terminal in real time but is also available to the Python program |
| 3185 | for additional processing.") |
| 3186 | (license license:expat))) |
| 3187 | |
| 3188 | (define-public python-fastprogress |
| 3189 | (package |
| 3190 | (name "python-fastprogress") |
| 3191 | (version "1.0.3") |
| 3192 | (source (origin |
| 3193 | (method git-fetch) |
| 3194 | (uri (git-reference |
| 3195 | (url "https://github.com/fastai/fastprogress") |
| 3196 | (commit version))) |
| 3197 | (file-name (git-file-name name version)) |
| 3198 | (sha256 |
| 3199 | (base32 |
| 3200 | "01h8f786wgmmd3fj98wk1n5id67nsp19gs8bbgims04aciwhvj21")))) |
| 3201 | (build-system pyproject-build-system) |
| 3202 | (arguments |
| 3203 | (list #:tests? #f ;there are no tests |
| 3204 | #:phases #~(modify-phases %standard-phases |
| 3205 | ;; XXX: Fails with: "In procedure utime: No such file |
| 3206 | ;; or directory". |
| 3207 | (delete 'ensure-no-mtimes-pre-1980)))) |
| 3208 | (home-page "https://github.com/fastai/fastprogress") |
| 3209 | (synopsis "Progress bar for Jupyter Notebook and console") |
| 3210 | (description |
| 3211 | "Fastprogress is a progress bar for Jupyter Notebook and console.") |
| 3212 | (license license:asl2.0))) |
| 3213 | |
| 3214 | (define-public python-case |
| 3215 | (package |
| 3216 | (name "python-case") |
| 3217 | (version "1.5.3") |
| 3218 | (source |
| 3219 | (origin |
| 3220 | (method url-fetch) |
| 3221 | (uri (pypi-uri "case" version)) |
| 3222 | (sha256 |
| 3223 | (base32 |
| 3224 | "1cagg06vfph864s6l5jb0zqliwxh647bki8j6lf4a4qrv40jnhs8")))) |
| 3225 | (build-system python-build-system) |
| 3226 | (propagated-inputs |
| 3227 | (list python-mock python-nose python-six)) |
| 3228 | (native-inputs |
| 3229 | (list python-coverage)) |
| 3230 | (home-page "https://github.com/celery/case") |
| 3231 | (synopsis "Unittest utilities and convenience methods") |
| 3232 | (description |
| 3233 | "The @code{case} package provides utilities on top of unittest, including |
| 3234 | some helpful Python 2 compatibility convenience methods.") |
| 3235 | (license license:bsd-3))) |
| 3236 | |
| 3237 | (define-public python-verboselogs |
| 3238 | (package |
| 3239 | (name "python-verboselogs") |
| 3240 | (version "1.7") |
| 3241 | (source |
| 3242 | (origin |
| 3243 | (method url-fetch) |
| 3244 | (uri (pypi-uri "verboselogs" version)) |
| 3245 | (sha256 |
| 3246 | (base32 |
| 3247 | "09z4d1jiasn7k1hs5af2ckmnrd0i1d1m04bhfjhv7z6svzfdwgg3")))) |
| 3248 | (build-system python-build-system) |
| 3249 | (arguments |
| 3250 | `(#:phases |
| 3251 | (modify-phases %standard-phases |
| 3252 | (replace 'check |
| 3253 | (lambda _ |
| 3254 | ;; Do not run pylint plugin test, as astroid is an old |
| 3255 | ;; unsupported version. |
| 3256 | (invoke "pytest" "-v" "-k" "not test_pylint_plugin" |
| 3257 | "verboselogs/tests.py")))))) |
| 3258 | (native-inputs |
| 3259 | (list python-mock python-pytest)) |
| 3260 | (home-page "https://verboselogs.readthedocs.io") |
| 3261 | (synopsis "Verbose logging level for Python's logging module") |
| 3262 | (description |
| 3263 | "The @code{verboselogs} package extends Python's @code{logging} module to |
| 3264 | add the log levels NOTICE, SPAM, SUCCESS and VERBOSE.") |
| 3265 | (license license:expat))) |
| 3266 | |
| 3267 | (define-public python-coloredlogs |
| 3268 | (package |
| 3269 | (name "python-coloredlogs") |
| 3270 | (version "10.0") |
| 3271 | (source |
| 3272 | (origin |
| 3273 | (method url-fetch) |
| 3274 | (uri (pypi-uri "coloredlogs" version)) |
| 3275 | (sha256 |
| 3276 | (base32 |
| 3277 | "0dkw6xp0r1dwgz4s2f58npx5nxfq51wf4l6qkm5ib27slgfs4sdq")))) |
| 3278 | (build-system python-build-system) |
| 3279 | (arguments |
| 3280 | `(;Tests require some updated modules |
| 3281 | #:tests? #f)) |
| 3282 | (propagated-inputs |
| 3283 | (list python-capturer)) |
| 3284 | (home-page "https://coloredlogs.readthedocs.io") |
| 3285 | (synopsis "Colored stream handler for Python's logging module") |
| 3286 | (description |
| 3287 | "The @code{coloredlogs} package enables colored terminal output for |
| 3288 | Python's logging module. The @code{ColoredFormatter} class inherits from |
| 3289 | @code{logging.Formatter} and uses ANSI escape sequences to render your logging |
| 3290 | messages in color.") |
| 3291 | (license license:expat))) |
| 3292 | |
| 3293 | (define-public python-editorconfig |
| 3294 | (package |
| 3295 | (name "python-editorconfig") |
| 3296 | (version "0.12.2") |
| 3297 | (source |
| 3298 | (origin |
| 3299 | (method url-fetch) |
| 3300 | (uri (pypi-uri "EditorConfig" version)) |
| 3301 | (sha256 |
| 3302 | (base32 |
| 3303 | "0v55z351p9qkyp3bbspwywwn28sbcknhirngjbj779n3z52z63hv")))) |
| 3304 | (build-system python-build-system) |
| 3305 | (home-page "https://editorconfig.org/") |
| 3306 | (synopsis "EditorConfig bindings for python") |
| 3307 | (description "The EditorConfig project consists of a file format for |
| 3308 | defining coding styles and a collection of text editor plugins that enable |
| 3309 | editors to read the file format and adhere to defined styles. EditorConfig |
| 3310 | files are easily readable and they work nicely with version control systems.") |
| 3311 | ;; "fnmatch.py" and "ini.py" are licensed under psfl, the rest is bsd-2. |
| 3312 | (license (list license:bsd-2 license:psfl)))) |
| 3313 | |
| 3314 | (define-public dosage |
| 3315 | (package |
| 3316 | (name "dosage") |
| 3317 | (version "2.17") |
| 3318 | (source |
| 3319 | (origin |
| 3320 | (method url-fetch) |
| 3321 | (uri (pypi-uri "dosage" version)) |
| 3322 | (sha256 |
| 3323 | (base32 |
| 3324 | "0vmxgn9wd3j80hp4gr5iq06jrl4gryz5zgfdd2ah30d12sfcfig0")))) |
| 3325 | (build-system python-build-system) |
| 3326 | (propagated-inputs |
| 3327 | (list python-cached-property |
| 3328 | python-colorama |
| 3329 | python-imagesize |
| 3330 | python-importlib-metadata |
| 3331 | python-lxml |
| 3332 | python-requests |
| 3333 | python-six)) |
| 3334 | (native-inputs |
| 3335 | (list python-pytest-cov python-pytest-xdist python-responses |
| 3336 | python-setuptools-scm)) |
| 3337 | (home-page "https://github.com/webcomics/dosage") |
| 3338 | (synopsis "Comic strip downloader and archiver") |
| 3339 | (description "Dosage is designed to keep a local copy of specific webcomics and other |
| 3340 | picture-based content such as Picture of the Day sites. With the @command{dosage} |
| 3341 | command-line script you can get the latest strip of a webcomic, catch-up to the last strip |
| 3342 | downloaded, or download a strip for a particular date or index, if possible.") |
| 3343 | (license license:expat))) |
| 3344 | |
| 3345 | (define-public python-et-xmlfile |
| 3346 | (package |
| 3347 | (name "python-et-xmlfile") |
| 3348 | (version "1.1") |
| 3349 | (source |
| 3350 | (origin |
| 3351 | ;; Use a checkout because the PyPI archive does not contain tests. |
| 3352 | (method hg-fetch) |
| 3353 | (uri (hg-reference |
| 3354 | (url "https://foss.heptapod.net/openpyxl/et_xmlfile") |
| 3355 | (changeset version))) |
| 3356 | (file-name (string-append name "-" version "-checkout")) |
| 3357 | (sha256 |
| 3358 | (base32 "09r8rjc5bhkqrm5c4n9jrlvad8vrvbyswl9g0wrc1qc7nzh9mpw7")))) |
| 3359 | (build-system python-build-system) |
| 3360 | (arguments |
| 3361 | (list #:phases |
| 3362 | #~(modify-phases %standard-phases |
| 3363 | (replace 'check |
| 3364 | (lambda* (#:key tests? #:allow-other-keys) |
| 3365 | (when tests? |
| 3366 | (invoke "pytest" "-vv"))))))) |
| 3367 | (native-inputs |
| 3368 | (list python-pytest python-lxml)) ;used for the tests |
| 3369 | (home-page "https://bitbucket.org/openpyxl/et_xmlfile") |
| 3370 | (synopsis "Low memory implementation of @code{lxml.xmlfile}") |
| 3371 | (description "This Python library is based upon the @code{xmlfile} module |
| 3372 | from @code{lxml}. It aims to provide a low memory, compatible implementation |
| 3373 | of @code{xmlfile}.") |
| 3374 | (license license:expat))) |
| 3375 | |
| 3376 | (define-public python-omero-py |
| 3377 | (package |
| 3378 | (name "python-omero-py") |
| 3379 | (version "5.13.1") |
| 3380 | (source (origin |
| 3381 | (method git-fetch) |
| 3382 | (uri (git-reference |
| 3383 | (url "https://github.com/ome/omero-py") |
| 3384 | (commit (string-append "v" version)))) |
| 3385 | (file-name (git-file-name name version)) |
| 3386 | (sha256 |
| 3387 | (base32 |
| 3388 | "0n94v5dpmh873hjqd9k9ky85iab4xh37ibmi13rqpclv01ibvvxa")))) |
| 3389 | (build-system pyproject-build-system) |
| 3390 | (arguments |
| 3391 | (list |
| 3392 | #:test-flags |
| 3393 | '(list "-m" "not broken" "-rf" "test" "-s" |
| 3394 | ;; TestImport tries to download Java things; TestSessions |
| 3395 | ;; and TestBuildQuery require networking. |
| 3396 | "-k" "not TestImport and not TestSessions and not TestBuildQuery") |
| 3397 | #:modules '((guix build pyproject-build-system) |
| 3398 | (guix build utils) |
| 3399 | (ice-9 match) |
| 3400 | (srfi srfi-1) |
| 3401 | (srfi srfi-26)) |
| 3402 | #:phases |
| 3403 | #~(modify-phases %standard-phases |
| 3404 | (add-after 'unpack 'find-artifacts |
| 3405 | (lambda* (#:key inputs #:allow-other-keys) |
| 3406 | (let ((zip-file |
| 3407 | (match inputs |
| 3408 | (((labels . files) ...) |
| 3409 | (find (cut string-suffix? "omero-blitz-5.5.5-python.zip" <>) |
| 3410 | files))))) |
| 3411 | (setenv "ZIP_FILE" |
| 3412 | (or zip-file (error "failed to find artifact file")))))) |
| 3413 | ;; Some tests need this, such as TestTempFileManager |
| 3414 | (add-after 'build 'set-HOME |
| 3415 | (lambda _ (setenv "HOME" "/tmp"))) |
| 3416 | ;; The sanity check mistakes omero_model_TypeAnnotationI.py for a |
| 3417 | ;; module to load. |
| 3418 | (delete 'sanity-check) |
| 3419 | ;; The argument parser is picky and interprets the "-real" part as |
| 3420 | ;; the first argument. |
| 3421 | (add-after 'wrap 'rename-executable |
| 3422 | (lambda _ |
| 3423 | (with-directory-excursion (string-append #$output "/bin") |
| 3424 | (rename-file ".omero-real" ".omero") |
| 3425 | (substitute* "omero" |
| 3426 | (("bin/.omero-real") "bin/.omero")))))))) |
| 3427 | (propagated-inputs |
| 3428 | (list python-appdirs |
| 3429 | python-future |
| 3430 | python-numpy |
| 3431 | python-pillow |
| 3432 | python-pyyaml |
| 3433 | python-requests |
| 3434 | python-tables |
| 3435 | python-zeroc-ice-3.6)) |
| 3436 | (native-inputs |
| 3437 | (list python-mox3 |
| 3438 | python-pytest |
| 3439 | python-pytest-rerunfailures |
| 3440 | python-pytest-xdist |
| 3441 | unzip |
| 3442 | (origin |
| 3443 | (method url-fetch) |
| 3444 | (uri "https://artifacts.openmicroscopy.org/artifactory/\ |
| 3445 | ome.releases/org/openmicroscopy/omero-blitz/5.5.5/omero-blitz-5.5.5-python.zip") |
| 3446 | (sha256 |
| 3447 | (base32 "0wyja1zv19c1r3m31gsp555jzj3cg2v2pl00zlybpw3qd36yffwc"))))) |
| 3448 | (home-page "https://github.com/ome/omero-py") |
| 3449 | (synopsis "Python bindings to the OMERO.blitz server") |
| 3450 | (description "This package provides Python bindings to the OMERO.blitz |
| 3451 | server.") |
| 3452 | (license license:gpl2))) |
| 3453 | |
| 3454 | (define-public python-openpyxl |
| 3455 | (package |
| 3456 | (name "python-openpyxl") |
| 3457 | (version "3.0.9") |
| 3458 | (source |
| 3459 | (origin |
| 3460 | ;; We use the upstream repository, as the tests are not included in the |
| 3461 | ;; PyPI releases. |
| 3462 | (method hg-fetch) |
| 3463 | (uri (hg-reference |
| 3464 | (url "https://foss.heptapod.net/openpyxl/openpyxl") |
| 3465 | (changeset version))) |
| 3466 | (file-name (string-append name "-" version "-checkout")) |
| 3467 | (sha256 |
| 3468 | (base32 "1p8xvc2gjw6zyzbd7qdvc3x178sm00ymrbyh9539l4fpzgxh0j9c")))) |
| 3469 | (build-system python-build-system) |
| 3470 | (arguments |
| 3471 | `(#:phases (modify-phases %standard-phases |
| 3472 | (replace 'check |
| 3473 | (lambda _ |
| 3474 | (invoke "pytest")))))) |
| 3475 | (native-inputs (list python-lxml python-pillow python-pytest)) |
| 3476 | (propagated-inputs (list python-et-xmlfile python-jdcal)) |
| 3477 | (home-page "https://openpyxl.readthedocs.io") |
| 3478 | (synopsis "Python library to read/write Excel 2010 XLSX/XLSM files") |
| 3479 | (description |
| 3480 | "This Python library allows reading and writing to the Excel XLSX, XLSM, |
| 3481 | XLTX and XLTM file formats that are defined by the Office Open XML (OOXML) |
| 3482 | standard.") |
| 3483 | (license license:expat))) |
| 3484 | |
| 3485 | (define-public python-eventlet |
| 3486 | (package |
| 3487 | (name "python-eventlet") |
| 3488 | (version "0.33.0") |
| 3489 | (source |
| 3490 | (origin |
| 3491 | (method url-fetch) |
| 3492 | (uri (pypi-uri "eventlet" version)) |
| 3493 | (sha256 |
| 3494 | (base32 |
| 3495 | "07qlyhcm0f28sxdizawvdf3d50m3hnbzz5kg3fjp7chvki44y540")))) |
| 3496 | (build-system python-build-system) |
| 3497 | (propagated-inputs |
| 3498 | (list python-dnspython python-greenlet python-monotonic python-six)) |
| 3499 | (native-inputs |
| 3500 | (list python-nose)) |
| 3501 | (arguments |
| 3502 | '(#:phases |
| 3503 | (modify-phases %standard-phases |
| 3504 | (add-after 'unpack 'avoid-OSError |
| 3505 | (lambda _ |
| 3506 | ;; If eventlet tries to load greendns, an OSError is thrown when |
| 3507 | ;; getprotobyname is called. Thankfully there is an environment |
| 3508 | ;; variable to disable the greendns import, so use it: |
| 3509 | (setenv "EVENTLET_NO_GREENDNS" "yes"))) |
| 3510 | (replace 'check |
| 3511 | (lambda* (#:key tests? #:allow-other-keys) |
| 3512 | (when tests? |
| 3513 | (invoke |
| 3514 | "nosetests" |
| 3515 | "-v" "tests/" |
| 3516 | "-I" "greendns_test.py" |
| 3517 | "-I" "socket_test.py" |
| 3518 | "-e" "test_018b_http_10_keepalive_framing" |
| 3519 | ;; The following two tests fail with Python 3.10. See |
| 3520 | ;; <https://github.com/eventlet/eventlet/issues/730>. |
| 3521 | "-e" "test_patcher_existing_locks_locked" |
| 3522 | ;; And see <https://github.com/eventlet/eventlet/issues/739>. |
| 3523 | "-e" "test_017_ssl_zeroreturnerror"))))))) |
| 3524 | (home-page "https://eventlet.net") |
| 3525 | (synopsis "Concurrent networking library for Python") |
| 3526 | (description |
| 3527 | "Eventlet is a concurrent networking library for Python that |
| 3528 | allows you to change how you run your code, not how you write it. |
| 3529 | It uses @code{epoll} or @code{libevent} for highly scalable non-blocking I/O. |
| 3530 | Coroutines ensure that the developer uses a blocking style of programming |
| 3531 | that is similar to threading, but provide the benefits of non-blocking I/O. |
| 3532 | The event dispatch is implicit, which means you can easily use @code{Eventlet} |
| 3533 | from the Python interpreter, or as a small part of a larger application.") |
| 3534 | (license license:expat))) |
| 3535 | |
| 3536 | (define-public python-sinfo |
| 3537 | (package |
| 3538 | (name "python-sinfo") |
| 3539 | (version "0.3.4") |
| 3540 | (source (origin |
| 3541 | (method url-fetch) |
| 3542 | (uri (pypi-uri "sinfo" version)) |
| 3543 | (sha256 |
| 3544 | (base32 |
| 3545 | "0kdsp883mx0lfyykv0p12bvs203kdm3skb8bw5wf2pc7kb393sl1")))) |
| 3546 | (build-system python-build-system) |
| 3547 | (propagated-inputs |
| 3548 | (list python-stdlib-list)) |
| 3549 | (home-page "https://gitlab.com/joelostblom/session_info") |
| 3550 | (synopsis "Output module version information loaded in a Python session") |
| 3551 | (description "This package outputs version information for modules loaded |
| 3552 | in the current session, Python, and the OS.") |
| 3553 | (license license:bsd-3))) |
| 3554 | |
| 3555 | (define-public python-six |
| 3556 | (package/inherit python-six-bootstrap |
| 3557 | (name "python-six") |
| 3558 | (arguments |
| 3559 | `(#:phases |
| 3560 | (modify-phases %standard-phases |
| 3561 | (replace 'check |
| 3562 | (lambda _ |
| 3563 | (invoke "pytest" "-v")))))) |
| 3564 | (native-inputs |
| 3565 | `(("python-pytest" ,python-pytest-bootstrap))))) |
| 3566 | |
| 3567 | (define-public python2-six |
| 3568 | (let ((base (package-with-python2 python-six))) |
| 3569 | (package |
| 3570 | (inherit base) |
| 3571 | ;; Reduce Python 2 closure by disabling tests and removing the native |
| 3572 | ;; inputs. |
| 3573 | (arguments (substitute-keyword-arguments (package-arguments base) |
| 3574 | ((#:phases phases) |
| 3575 | `(modify-phases ,phases |
| 3576 | (delete 'check))))) |
| 3577 | (native-inputs '())))) |
| 3578 | |
| 3579 | (define-public python-schedule |
| 3580 | (package |
| 3581 | (name "python-schedule") |
| 3582 | (version "0.4.3") |
| 3583 | (source |
| 3584 | (origin |
| 3585 | (method url-fetch) |
| 3586 | (uri (pypi-uri "schedule" version)) |
| 3587 | (sha256 |
| 3588 | (base32 |
| 3589 | "0vplyjcbfrq50sphlwya749z8p2pcyi2nycw3518i0qpd9a6189i")))) |
| 3590 | (build-system python-build-system) |
| 3591 | (native-inputs |
| 3592 | (list python-pytest python-mock)) |
| 3593 | (home-page "https://github.com/dbader/schedule") |
| 3594 | (synopsis "Schedule periodic function calls in Python") |
| 3595 | (description |
| 3596 | "Schedule is an in-process scheduler for periodic jobs that uses the |
| 3597 | builder pattern for configuration. Schedule lets you run Python functions (or |
| 3598 | any other callable) periodically at pre-determined intervals using a simple, |
| 3599 | human-friendly syntax.") |
| 3600 | (license license:expat))) |
| 3601 | |
| 3602 | (define-public python-scour |
| 3603 | (package |
| 3604 | (name "python-scour") |
| 3605 | (version "0.38.2") |
| 3606 | (source |
| 3607 | (origin |
| 3608 | (method git-fetch) |
| 3609 | (uri |
| 3610 | (git-reference |
| 3611 | (url "https://github.com/scour-project/scour") |
| 3612 | (commit |
| 3613 | (string-append "v" version)))) |
| 3614 | (file-name (git-file-name name version)) |
| 3615 | (sha256 |
| 3616 | (base32 "0mmfvx4wqp8gkpv0kbih89zfs9njvmd3v4dxfqii62xddpxq0f1k")))) |
| 3617 | (propagated-inputs |
| 3618 | (list python-six)) |
| 3619 | (build-system python-build-system) |
| 3620 | (home-page "https://github.com/scour-project/scour") |
| 3621 | (synopsis "Scour is an SVG optimizer/cleaner written in Python") |
| 3622 | (description "The goal of Scour is to output a file that renders |
| 3623 | identically at a fraction of the size by removing a lot of redundant |
| 3624 | information created by most SVG editors. Optimization options are typically |
| 3625 | lossless but can be tweaked for more aggressive cleaning.") |
| 3626 | (license license:asl2.0))) |
| 3627 | |
| 3628 | (define-public python-mechanize |
| 3629 | (package |
| 3630 | (name "python-mechanize") |
| 3631 | (version "0.4.7") |
| 3632 | (source |
| 3633 | (origin |
| 3634 | (method url-fetch) |
| 3635 | (uri (pypi-uri "mechanize" version)) |
| 3636 | (sha256 |
| 3637 | (base32 |
| 3638 | "02b845y85ka5sl2cj93lll3v326d8bww07bq1q0y1643h7sshwqp")))) |
| 3639 | (build-system python-build-system) |
| 3640 | (propagated-inputs |
| 3641 | (list python-html5lib)) |
| 3642 | (home-page "https://github.com/python-mechanize/mechanize") |
| 3643 | (synopsis |
| 3644 | "Stateful programmatic web browsing in Python") |
| 3645 | (description |
| 3646 | "Mechanize implements stateful programmatic web browsing in Python, |
| 3647 | after Andy Lester’s Perl module WWW::Mechanize.") |
| 3648 | (license license:bsd-3))) |
| 3649 | |
| 3650 | (define-public python-simpleaudio |
| 3651 | (package |
| 3652 | (name "python-simpleaudio") |
| 3653 | (version "1.0.4") |
| 3654 | (source |
| 3655 | (origin |
| 3656 | (method url-fetch) |
| 3657 | (uri (pypi-uri "simpleaudio" version)) |
| 3658 | (sha256 |
| 3659 | (base32 |
| 3660 | "07glihg0fpca0gvbbvqs9q815w8xhflzdvg72yvlsm23j9j8h739")))) |
| 3661 | (build-system python-build-system) |
| 3662 | (arguments |
| 3663 | `(#:tests? #f)) |
| 3664 | (inputs |
| 3665 | (list alsa-lib)) |
| 3666 | (home-page |
| 3667 | "https://github.com/hamiltron/py-simple-audio") |
| 3668 | (synopsis "Simple, asynchronous audio playback for Python 3") |
| 3669 | (description |
| 3670 | "The @code{simplaudio} package provides cross-platform, dependency-free |
| 3671 | audio playback capability for Python 3 on OSX, Windows, and Linux.") |
| 3672 | (license license:expat))) ; MIT license |
| 3673 | |
| 3674 | (define-public python-jsonalias |
| 3675 | (package |
| 3676 | (name "python-jsonalias") |
| 3677 | (version "0.1.1") |
| 3678 | (source (origin |
| 3679 | (method url-fetch) |
| 3680 | (uri (pypi-uri "jsonalias" version)) |
| 3681 | (sha256 |
| 3682 | (base32 |
| 3683 | "0sd7c3vyvfhhpnan77ax4f0x1whjcb5iz7jhjky7kmcpaf9lvw34")))) |
| 3684 | (build-system python-build-system) |
| 3685 | (arguments (list #:tests? #f)) ; There are no tests. |
| 3686 | (home-page "https://github.com/kevinheavey/jsonalias/") |
| 3687 | (synopsis "JSON type alias for Python") |
| 3688 | (description |
| 3689 | "This package provides a microlibrary that defines a JSON type alias for |
| 3690 | Python.") |
| 3691 | (license license:expat))) |
| 3692 | |
| 3693 | (define-public python-jsonargparse |
| 3694 | (package |
| 3695 | (name "python-jsonargparse") |
| 3696 | (version "4.21.1") |
| 3697 | (source (origin |
| 3698 | (method url-fetch) |
| 3699 | (uri (pypi-uri "jsonargparse" version)) |
| 3700 | (sha256 |
| 3701 | (base32 |
| 3702 | "1k3b60x0zf86fh50y2jyby30gksqriyvvpfnf5mqq0qn7jih01y7")))) |
| 3703 | (build-system pyproject-build-system) |
| 3704 | (arguments |
| 3705 | (list |
| 3706 | #:test-flags |
| 3707 | '(list "-k" (string-append "not test_env_prefix" |
| 3708 | " and not test_basemodel" |
| 3709 | " and not test_field_default_factory" |
| 3710 | " and not test_field_description" |
| 3711 | " and not test_get_param_relative_import_from_init" |
| 3712 | ;; Strangely, the arguments are interpreted |
| 3713 | ;; as arguments to pytest. |
| 3714 | " and not test_pydantic_types")))) |
| 3715 | (propagated-inputs |
| 3716 | (list python-contextvars |
| 3717 | python-dataclasses |
| 3718 | python-docstring-parser |
| 3719 | python-pyyaml |
| 3720 | python-typeshed-client)) |
| 3721 | (native-inputs |
| 3722 | (list python-attrs |
| 3723 | python-coverage |
| 3724 | python-pre-commit |
| 3725 | python-pycodestyle |
| 3726 | python-pydantic |
| 3727 | python-pytest |
| 3728 | python-pytest-subtests |
| 3729 | python-responses |
| 3730 | python-tox |
| 3731 | python-types-requests)) |
| 3732 | (home-page "https://github.com/omni-us/jsonargparse/") |
| 3733 | (synopsis "Implement minimal boilerplate CLIs derived from type hints") |
| 3734 | (description |
| 3735 | "This package lets you implement minimal boilerplate CLIs derived from |
| 3736 | type hints and parse from command line, config files and environment |
| 3737 | variables.") |
| 3738 | (license license:expat))) |
| 3739 | |
| 3740 | (define-public python-simplejson |
| 3741 | (package |
| 3742 | (name "python-simplejson") |
| 3743 | (version "3.17.6") |
| 3744 | (source |
| 3745 | (origin |
| 3746 | (method url-fetch) |
| 3747 | (uri (pypi-uri "simplejson" version)) |
| 3748 | (sha256 |
| 3749 | (base32 |
| 3750 | "19pqqn01y6qmhhv8q6dh4p1acav49kl923kklnns2qxz5a6h766g")))) |
| 3751 | (build-system python-build-system) |
| 3752 | (native-inputs |
| 3753 | (list python-toml)) |
| 3754 | (home-page "https://simplejson.readthedocs.io/en/latest") |
| 3755 | (synopsis |
| 3756 | "Json library for Python") |
| 3757 | (description |
| 3758 | "JSON (JavaScript Object Notation) is a subset of JavaScript |
| 3759 | syntax (ECMA-262 3rd edition) used as a lightweight data interchange |
| 3760 | format. |
| 3761 | |
| 3762 | Simplejson exposes an API familiar to users of the standard library marshal |
| 3763 | and pickle modules. It is the externally maintained version of the json |
| 3764 | library contained in Python 2.6, but maintains compatibility with Python 2.5 |
| 3765 | and (currently) has significant performance advantages, even without using |
| 3766 | the optional C extension for speedups. Simplejson is also supported on |
| 3767 | Python 3.3+.") |
| 3768 | (license license:x11))) |
| 3769 | |
| 3770 | (define-public python-simple-rlp |
| 3771 | (package |
| 3772 | (name "python-simple-rlp") |
| 3773 | (version "0.1.3") |
| 3774 | (source |
| 3775 | (origin |
| 3776 | (method git-fetch) |
| 3777 | (uri (git-reference |
| 3778 | (url "https://github.com/SamuelHaidu/simple-rlp") |
| 3779 | ;; Upstream doesn't tag the git repo. |
| 3780 | (commit "342ea269d84da1ddc4a7630cdebc90159261391c"))) |
| 3781 | (file-name (git-file-name name version)) |
| 3782 | (sha256 |
| 3783 | (base32 |
| 3784 | "1nv92sphpkyrncak4qgj50qmgkmj4ycl2szbnv9c7ihgl5df4div")))) |
| 3785 | (build-system python-build-system) |
| 3786 | (home-page "https://github.com/SamuelHaidu/simple-rlp") |
| 3787 | (synopsis |
| 3788 | "Python implementation of RLP (Recursive Length Prefix) encoding") |
| 3789 | (description |
| 3790 | "@code{simple-rlp} is a python implementation of RLP (Recursive Length \ |
| 3791 | Prefix) - Encode and decode data structures.") |
| 3792 | (license license:expat))) |
| 3793 | |
| 3794 | (define-public python-pyicu |
| 3795 | (package |
| 3796 | (name "python-pyicu") |
| 3797 | (version "2.9") |
| 3798 | (source |
| 3799 | (origin |
| 3800 | (method url-fetch) |
| 3801 | (uri (pypi-uri "PyICU" version)) |
| 3802 | (sha256 |
| 3803 | (base32 |
| 3804 | "0y2qhh443vydi3y7kmhyb6kz3z6d7qq7ld0sg88mfqalcp7dca9w")))) |
| 3805 | (build-system python-build-system) |
| 3806 | (inputs |
| 3807 | (list icu4c)) |
| 3808 | (native-inputs |
| 3809 | (list python-pytest python-six)) |
| 3810 | (home-page "https://gitlab.pyicu.org/main/pyicu") |
| 3811 | (synopsis "Python extension wrapping the ICU C++ API") |
| 3812 | (description |
| 3813 | "PyICU is a python extension wrapping the ICU C++ API.") |
| 3814 | (license license:x11))) |
| 3815 | |
| 3816 | (define-public python-dogtail |
| 3817 | (package |
| 3818 | (name "python-dogtail") |
| 3819 | (version "0.9.11") |
| 3820 | (source (origin |
| 3821 | (method url-fetch) |
| 3822 | (uri |
| 3823 | (string-append |
| 3824 | "https://gitlab.com/dogtail/dogtail/-/raw/released/" |
| 3825 | "dogtail-" version ".tar.gz")) |
| 3826 | (sha256 |
| 3827 | (base32 |
| 3828 | "0sr38z7b2n12bvfd4xw4b5dnnhkn5zl3h0ymmnnzavcihfqia6l0")))) |
| 3829 | (build-system python-build-system) |
| 3830 | (arguments |
| 3831 | `(#:tests? #f ; TODO Launching dbus for the tests |
| 3832 | ; fails |
| 3833 | #:phases |
| 3834 | (modify-phases %standard-phases |
| 3835 | (replace 'check |
| 3836 | (lambda* (#:key tests? #:allow-other-keys) |
| 3837 | (when tests? |
| 3838 | (system "Xvfb :1 &") |
| 3839 | (setenv "DISPLAY" ":1") |
| 3840 | (invoke "dbus-run-session" "--" "nosetests" "-v" "tests/")) |
| 3841 | #t))))) |
| 3842 | (propagated-inputs |
| 3843 | (list python-pygobject python-pycairo python-pyatspi)) |
| 3844 | (native-inputs |
| 3845 | (list python-nose |
| 3846 | gtk+ |
| 3847 | xorg-server-for-tests |
| 3848 | dbus |
| 3849 | gsettings-desktop-schemas |
| 3850 | gobject-introspection)) |
| 3851 | (home-page "https://gitlab.com/dogtail/dogtail/") |
| 3852 | (synopsis "GUI test tool and automation framework written in Python") |
| 3853 | (description |
| 3854 | "Dogtail is a GUI test tool and automation framework written in Python. |
| 3855 | It uses Accessibility (a11y) technologies to communicate with desktop |
| 3856 | applications. dogtail scripts are written in Python and executed like any |
| 3857 | other Python program.") |
| 3858 | (license license:gpl2+))) |
| 3859 | |
| 3860 | (define-public python-doxyqml |
| 3861 | (package |
| 3862 | (name "python-doxyqml") |
| 3863 | (version "0.5.1") |
| 3864 | (source (origin |
| 3865 | (method url-fetch) |
| 3866 | (uri (pypi-uri "doxyqml" version)) |
| 3867 | (sha256 |
| 3868 | (base32 |
| 3869 | "1f0jjqvamly4hn7f1palvq27z6yr694rfzyxrb6g0ysbbawxkvq9")))) |
| 3870 | (build-system python-build-system) |
| 3871 | (home-page "https://agateau.com/projects/doxyqml") |
| 3872 | (synopsis "Doxygen input filter for QML files") |
| 3873 | (description |
| 3874 | "This package provides a Doxygen input filter for QML files.") |
| 3875 | (license license:bsd-3))) |
| 3876 | |
| 3877 | (define-public python-doxypypy |
| 3878 | (package |
| 3879 | (name "python-doxypypy") |
| 3880 | (version "0.8.8.6") |
| 3881 | (source (origin |
| 3882 | (method url-fetch) |
| 3883 | (uri (pypi-uri "doxypypy" version)) |
| 3884 | (sha256 |
| 3885 | (base32 |
| 3886 | "06z0vbh975g42z5szbfvn9i3bif3xwr5pncqd4fvjzjkbi2p2xb2")))) |
| 3887 | (build-system python-build-system) |
| 3888 | (arguments '(#:tests? #f)) ;no test suite |
| 3889 | (home-page "https://github.com/Feneric/doxypypy") |
| 3890 | (synopsis "Doxygen filter for Python") |
| 3891 | (description |
| 3892 | "This package provides a Doxygen filter for Python.") |
| 3893 | (license license:gpl2+))) |
| 3894 | |
| 3895 | (define-public python-empy |
| 3896 | (package |
| 3897 | (name "python-empy") |
| 3898 | (version "3.3.3") |
| 3899 | (source (origin |
| 3900 | (method url-fetch) |
| 3901 | (uri (string-append "http://www.alcyone.com/software/empy/empy-" |
| 3902 | version ".tar.gz")) |
| 3903 | (sha256 |
| 3904 | (base32 |
| 3905 | "1mxfy5mgp473ga1pgz2nvm8ds6z4g3hdky8523z6jzvcs9ny6hcq")))) |
| 3906 | (build-system python-build-system) |
| 3907 | (arguments |
| 3908 | `(#:tests? #f)) ; python2 only |
| 3909 | (home-page "http://www.alcyone.com/software/empy/") |
| 3910 | (synopsis "Templating system for Python") |
| 3911 | (description |
| 3912 | "EmPy is a system for embedding Python expressions and statements in |
| 3913 | template text; it takes an EmPy source file, processes it, and produces |
| 3914 | output. This is accomplished via expansions, which are special signals to the |
| 3915 | EmPy system and are set off by a special prefix (by default the at sign, @@). |
| 3916 | EmPy can expand arbitrary Python expressions and statements in this way, as |
| 3917 | well as a variety of special forms. Textual data not explicitly delimited in |
| 3918 | this way is sent unaffected to the output, allowing Python to be used in |
| 3919 | effect as a markup language. Also supported are callbacks via hooks, |
| 3920 | recording and playback via diversions, and dynamic, chainable filters. The |
| 3921 | system is highly configurable via command line options and embedded |
| 3922 | commands.") |
| 3923 | (license license:lgpl2.1+))) |
| 3924 | |
| 3925 | (define-public python-palettable |
| 3926 | (package |
| 3927 | (name "python-palettable") |
| 3928 | (version "3.3.3") |
| 3929 | (source (origin |
| 3930 | (method url-fetch) |
| 3931 | (uri (pypi-uri "palettable" version)) |
| 3932 | (sha256 |
| 3933 | (base32 |
| 3934 | "1a4h0jpsr3wjciqg9a5kslxv65d3qqgmqgkpai4cl77wlpcxfk89")))) |
| 3935 | (build-system pyproject-build-system) |
| 3936 | (native-inputs (list python-pytest)) |
| 3937 | (home-page "https://jiffyclub.github.io/palettable/") |
| 3938 | (synopsis "Color palettes for Python") |
| 3939 | (description "Palettable (formerly brewer2mpl) is a library of color |
| 3940 | palettes for Python. It’s written in pure Python with no dependencies, but it |
| 3941 | can supply color maps for matplotlib. You can use Palettable to customize |
| 3942 | matplotlib plots or supply colors for a web application.") |
| 3943 | (license license:expat))) |
| 3944 | |
| 3945 | (define-public python-parse-type |
| 3946 | (package |
| 3947 | (name "python-parse-type") |
| 3948 | (version "0.6.0") |
| 3949 | (source |
| 3950 | (origin |
| 3951 | (method url-fetch) |
| 3952 | (uri (pypi-uri "parse_type" version)) |
| 3953 | (sha256 |
| 3954 | (base32 |
| 3955 | "07smqnzc9km7sbvxfyx4gdm9njrx58x8grdw6gs4gva81rk3rd10")))) |
| 3956 | (build-system python-build-system) |
| 3957 | (arguments |
| 3958 | '(#:phases |
| 3959 | (modify-phases %standard-phases |
| 3960 | (replace 'check |
| 3961 | (lambda* (#:key tests? #:allow-other-keys) |
| 3962 | (when tests? |
| 3963 | (invoke "pytest" "-vv" "-c" "/dev/null"))))))) |
| 3964 | (propagated-inputs (list python-six python-parse)) |
| 3965 | (native-inputs (list python-pytest)) |
| 3966 | (home-page "https://github.com/jenisys/parse_type") |
| 3967 | (synopsis "Extended parse module") |
| 3968 | (description "Parse_type extends the python parse module.") |
| 3969 | (license license:bsd-3))) |
| 3970 | |
| 3971 | (define-public python-parse |
| 3972 | (package |
| 3973 | (name "python-parse") |
| 3974 | (version "1.18.0") |
| 3975 | (source |
| 3976 | (origin |
| 3977 | (method url-fetch) |
| 3978 | (uri (pypi-uri "parse" version)) |
| 3979 | (sha256 |
| 3980 | (base32 |
| 3981 | "19063x4xdjpaf7rfxai6jpgm2k4yvkq7wha8aa8cagbjsqr60rli")))) |
| 3982 | (build-system python-build-system) |
| 3983 | (arguments |
| 3984 | `(#:phases |
| 3985 | (modify-phases %standard-phases |
| 3986 | (replace 'check |
| 3987 | (lambda _ (invoke "python" "test_parse.py")))))) |
| 3988 | (home-page "https://github.com/r1chardj0n3s/parse") |
| 3989 | (synopsis "Parse strings") |
| 3990 | (description |
| 3991 | "Parse strings using a specification based on the Python @code{format()} |
| 3992 | syntax.") |
| 3993 | (license license:x11))) |
| 3994 | |
| 3995 | (define-public python-parsley |
| 3996 | (package |
| 3997 | (name "python-parsley") |
| 3998 | (version "1.3") |
| 3999 | (source (origin |
| 4000 | ;; The source distributed on PyPI is outdated. |
| 4001 | (method git-fetch) |
| 4002 | (uri (git-reference |
| 4003 | (url "https://github.com/pyga/parsley") |
| 4004 | (commit version))) |
| 4005 | (file-name (git-file-name name version)) |
| 4006 | (sha256 |
| 4007 | (base32 |
| 4008 | "0550rw65ygqzbjc8a66hs355pzbx727kbn20dssdb6ls846gw2qs")))) |
| 4009 | (build-system pyproject-build-system) |
| 4010 | (arguments |
| 4011 | (list |
| 4012 | ;; XXX: Check why these 3 tests fail. |
| 4013 | #:test-flags #~(list "-k" |
| 4014 | (string-append "not test_sending_empty_netstring" |
| 4015 | " and not test_sending_one_netstring" |
| 4016 | " and not test_sending_two_netstrings")))) |
| 4017 | (native-inputs (list python-pytest python-twisted)) |
| 4018 | (home-page "https://launchpad.net/parsley") |
| 4019 | (synopsis "Parsing and pattern matching Python library") |
| 4020 | (description |
| 4021 | "Parsley is a parsing library using PEG algorithm, so each expression in |
| 4022 | the grammar rules works like a Python expression. In particular, alternatives |
| 4023 | are evaluated in order, unlike table-driven parsers such as yacc, bison or PLY. |
| 4024 | Parsley is an implementation of OMeta, an object-oriented pattern-matching |
| 4025 | language.") |
| 4026 | (license license:expat))) |
| 4027 | |
| 4028 | (define-public python-polib |
| 4029 | (package |
| 4030 | (name "python-polib") |
| 4031 | (version "1.1.0") |
| 4032 | (source (origin |
| 4033 | (method url-fetch) |
| 4034 | (uri (pypi-uri "polib" version)) |
| 4035 | (sha256 |
| 4036 | (base32 |
| 4037 | "0aikb8gcarhifn3sadrbbs5czagih9hjv250gsrgy9v1d49pvn7s")))) |
| 4038 | (build-system python-build-system) |
| 4039 | (home-page "https://bitbucket.org/izi/polib/wiki/Home") |
| 4040 | (synopsis "Manipulate, create and modify gettext files") |
| 4041 | (description "Polib can manipulate any gettext format (po, pot and mo) |
| 4042 | files. It can be used to create po files from scratch or to modify |
| 4043 | existing ones.") |
| 4044 | (license license:expat))) |
| 4045 | |
| 4046 | (define-public python-polling2 |
| 4047 | (package |
| 4048 | (name "python-polling2") |
| 4049 | (version "0.5.0") |
| 4050 | (source |
| 4051 | (origin |
| 4052 | (method url-fetch) |
| 4053 | (uri (pypi-uri "polling2" version)) |
| 4054 | (sha256 |
| 4055 | (base32 "0hp3238fv6k1qk43gv4jwnv1mwlkmx33akbj560b9nvsry1dmdwh")))) |
| 4056 | (build-system python-build-system) |
| 4057 | (arguments '(#:tests? #false)) ; no tests included |
| 4058 | (native-inputs |
| 4059 | (list python-mock python-pytest python-pytest-runner)) |
| 4060 | (home-page "https://github.com/ddmee/polling2") |
| 4061 | (synopsis "Polling utility with many configurable options") |
| 4062 | (description "Polling2 is a utility used to wait for a function to return |
| 4063 | a certain expected condition.") |
| 4064 | (license license:expat))) |
| 4065 | |
| 4066 | (define-public python-pomegranate |
| 4067 | (package |
| 4068 | (name "python-pomegranate") |
| 4069 | (version "0.14.8") |
| 4070 | (source (origin |
| 4071 | (method url-fetch) |
| 4072 | (uri (pypi-uri "pomegranate" version)) |
| 4073 | (sha256 |
| 4074 | (base32 |
| 4075 | "0gb9srkbxzlkjyfizvxkw5y0bvnfcyiaxapz0hrdaba8j096b5i2")) |
| 4076 | (modules '((guix build utils))) |
| 4077 | ;; Delete generated Cython C files. |
| 4078 | (snippet |
| 4079 | '(for-each delete-file (find-files "." "\\.c$"))))) |
| 4080 | (build-system python-build-system) |
| 4081 | (arguments |
| 4082 | (list |
| 4083 | #:phases |
| 4084 | '(modify-phases %standard-phases |
| 4085 | (replace 'check |
| 4086 | (lambda* (#:key tests? #:allow-other-keys) |
| 4087 | (when tests? |
| 4088 | (invoke "python" "setup.py" "test"))))))) |
| 4089 | (propagated-inputs |
| 4090 | (list python-joblib |
| 4091 | python-networkx |
| 4092 | python-numpy |
| 4093 | python-pyyaml |
| 4094 | python-scipy)) |
| 4095 | (native-inputs |
| 4096 | (list python-cython |
| 4097 | python-nose |
| 4098 | python-pandas)) |
| 4099 | (home-page "https://pypi.python.org/pypi/pomegranate/") |
| 4100 | (synopsis "Graphical models library for Python") |
| 4101 | (description |
| 4102 | "Pomegranate is a graphical models library for Python, implemented in |
| 4103 | Cython for speed.") |
| 4104 | (license license:expat))) |
| 4105 | |
| 4106 | (define-public python-portalocker |
| 4107 | (package |
| 4108 | (name "python-portalocker") |
| 4109 | (version "2.7.0") |
| 4110 | (source (origin |
| 4111 | (method url-fetch) |
| 4112 | (uri (pypi-uri "portalocker" version)) |
| 4113 | (sha256 |
| 4114 | (base32 |
| 4115 | "0lawjm736vs86wlnxc3qqh37l11z0yx81xq3dmrw33m86kaq2bh3")))) |
| 4116 | (build-system pyproject-build-system) |
| 4117 | (native-inputs (list python-pytest |
| 4118 | python-pytest-cov |
| 4119 | python-pytest-mypy |
| 4120 | python-pytest-timeout |
| 4121 | python-redis)) |
| 4122 | (home-page "https://github.com/WoLpH/portalocker") |
| 4123 | (synopsis "Python library for file locking") |
| 4124 | (description "Portalocker is a library to provide an easy API to file |
| 4125 | locking..") |
| 4126 | (license license:bsd-3))) |
| 4127 | |
| 4128 | (define-public python-poyo |
| 4129 | (package |
| 4130 | (name "python-poyo") |
| 4131 | (version "0.5.0") |
| 4132 | (source |
| 4133 | (origin |
| 4134 | (method url-fetch) |
| 4135 | (uri (pypi-uri "poyo" version)) |
| 4136 | (sha256 |
| 4137 | (base32 |
| 4138 | "1pflivs6j22frz0v3dqxnvc8yb8fb52g11lqr88z0i8cg2m5csg2")))) |
| 4139 | (build-system python-build-system) |
| 4140 | (home-page "https://github.com/hackebrot/poyo") |
| 4141 | (synopsis "Lightweight YAML Parser for Python") |
| 4142 | (description |
| 4143 | "This package provides a lightweight YAML Parser for Python. It supports |
| 4144 | only a chosen subset of the YAML format that is required to parse cookiecutter |
| 4145 | user configuration files. It does not have support for serializing into YAML |
| 4146 | and is not compatible with JSON.") |
| 4147 | (license license:expat))) |
| 4148 | |
| 4149 | (define-public python-exceptiongroup |
| 4150 | (package |
| 4151 | (name "python-exceptiongroup") |
| 4152 | (version "1.1.1") |
| 4153 | (source (origin |
| 4154 | (method git-fetch) |
| 4155 | (uri (git-reference |
| 4156 | (url "https://github.com/agronholm/exceptiongroup") |
| 4157 | (commit version))) |
| 4158 | (file-name (git-file-name name version)) |
| 4159 | (sha256 |
| 4160 | (base32 |
| 4161 | "0wcvzwgjs0xmggs6dh92jxdqi988gafzh10hrzvw10kasy0xakfj")))) |
| 4162 | (build-system python-build-system) |
| 4163 | (arguments |
| 4164 | (list |
| 4165 | #:tests? #f ;TODO: Circular dependency on pytest |
| 4166 | #:phases |
| 4167 | #~(modify-phases %standard-phases |
| 4168 | ;; XXX: PEP 517 manual build/install procedures copied from |
| 4169 | ;; python-isort. |
| 4170 | (replace 'build |
| 4171 | (lambda _ |
| 4172 | (setenv "SETUPTOOLS_SCM_PRETEND_VERSION" #$version) |
| 4173 | ;; ZIP does not support timestamps before 1980. |
| 4174 | (setenv "SOURCE_DATE_EPOCH" "315532800") |
| 4175 | (invoke "python" "-m" "build" "--wheel" "--no-isolation" "."))) |
| 4176 | (replace 'install |
| 4177 | (lambda* (#:key outputs #:allow-other-keys) |
| 4178 | (let ((whl (car (find-files "dist" "\\.whl$")))) |
| 4179 | (invoke "pip" "--no-cache-dir" "--no-input" |
| 4180 | "install" "--no-deps" "--prefix" #$output whl)))) |
| 4181 | (replace 'check |
| 4182 | (lambda* (#:key tests? #:allow-other-keys) |
| 4183 | (when tests? |
| 4184 | (invoke "pytest" "-vv" "tests"))))))) |
| 4185 | (native-inputs (list python-flit-scm python-pypa-build)) |
| 4186 | (home-page "https://github.com/agronholm/exceptiongroup") |
| 4187 | (synopsis "PEP 654 backport from Python 3.11") |
| 4188 | (description "This is a backport of the @code{BaseExceptionGroup} and |
| 4189 | @code{ExceptionGroup} classes from Python 3.11.") |
| 4190 | (license license:expat))) |
| 4191 | |
| 4192 | (define-public python-extension-helpers |
| 4193 | (package |
| 4194 | (name "python-extension-helpers") |
| 4195 | (version "1.0.0") |
| 4196 | (source |
| 4197 | (origin |
| 4198 | (method url-fetch) |
| 4199 | (uri (pypi-uri "extension-helpers" version)) |
| 4200 | (sha256 |
| 4201 | (base32 "1rjha07ds633fb81hn3i2yzk3v2flbi6qa091ix4mkvrgk3gl6ya")))) |
| 4202 | (build-system pyproject-build-system) |
| 4203 | ;; FIXME: pytest failed to load test suit, find out why. |
| 4204 | ;; - _pytest.pathlib.ImportPathMismatchError: ('extension_helpers.conftes |
| 4205 | (arguments (list #:tests? #f)) |
| 4206 | (native-inputs |
| 4207 | (list python-coverage |
| 4208 | python-pytest |
| 4209 | python-pytest-astropy |
| 4210 | python-pytest-cov |
| 4211 | python-setuptools-scm)) |
| 4212 | (home-page "https://extension-helpers.readthedocs.io") |
| 4213 | (synopsis "Astropy ecosystem utilities for building and installing packages") |
| 4214 | (description |
| 4215 | "The extension-helpers package includes convenience helpers to assist with |
| 4216 | building Python packages with compiled C/Cython extensions. It is developed by |
| 4217 | the Astropy project but is intended to be general and usable by any Python |
| 4218 | package.") |
| 4219 | (license license:bsd-3))) |
| 4220 | |
| 4221 | (define-public python-extras |
| 4222 | (package |
| 4223 | (name "python-extras") |
| 4224 | (version "1.0.0") |
| 4225 | (source |
| 4226 | (origin |
| 4227 | (method url-fetch) |
| 4228 | (uri (pypi-uri "extras" version)) |
| 4229 | (sha256 |
| 4230 | (base32 |
| 4231 | "0khvm08rcwm62wc47j8niyl6h13f8w51c8669ifivjdr23g3cbhk")))) |
| 4232 | (build-system python-build-system) |
| 4233 | (arguments |
| 4234 | ;; FIXME: Circular dependency on testtools. |
| 4235 | '(#:tests? #f)) |
| 4236 | (home-page "https://github.com/testing-cabal/extras") |
| 4237 | (synopsis "Useful extensions to the Python standard library") |
| 4238 | (description |
| 4239 | "Extras is a set of extensions to the Python standard library.") |
| 4240 | (license license:expat))) |
| 4241 | |
| 4242 | (define-public python-milc |
| 4243 | (package |
| 4244 | (name "python-milc") |
| 4245 | (version "1.6.8") |
| 4246 | (source (origin |
| 4247 | (method url-fetch) |
| 4248 | (uri (pypi-uri "milc" version)) |
| 4249 | (sha256 |
| 4250 | (base32 |
| 4251 | "1pnwdg2653lc82qsv6c0kv9qcydh2f6w5mx5l4227zy1f6kr7b52")))) |
| 4252 | (build-system pyproject-build-system) |
| 4253 | (propagated-inputs (list python-appdirs python-argcomplete python-colorama |
| 4254 | python-halo python-spinners)) |
| 4255 | (home-page "https://github.com/clueboard/milc") |
| 4256 | (synopsis "Python library for command line interface programs") |
| 4257 | (description "MILC is a Python library for developing command line |
| 4258 | interface programs. This library provides features to parse arguments, |
| 4259 | automatic tab-completion, color support, logging to @code{std}, etc.") |
| 4260 | (license license:expat))) |
| 4261 | |
| 4262 | (define-public python-mimeparse |
| 4263 | (package |
| 4264 | (name "python-mimeparse") |
| 4265 | (version "1.6.0") |
| 4266 | (source |
| 4267 | (origin |
| 4268 | (method url-fetch) |
| 4269 | (uri (pypi-uri "python-mimeparse" version)) |
| 4270 | (sha256 |
| 4271 | (base32 |
| 4272 | "0y2g6cl660bpz11srgqyvvm8gmywpgyx8g0xfvbiyr0af0yv1r3n")))) |
| 4273 | (build-system python-build-system) |
| 4274 | (arguments |
| 4275 | '(#:phases |
| 4276 | (modify-phases %standard-phases |
| 4277 | (replace 'check |
| 4278 | (lambda _ |
| 4279 | (invoke "./mimeparse_test.py")))))) |
| 4280 | (home-page |
| 4281 | "https://github.com/dbtsai/python-mimeparse") |
| 4282 | (synopsis "Python library for parsing MIME types") |
| 4283 | (description |
| 4284 | "Mimeparse provides basic functions for parsing MIME type names and |
| 4285 | matching them against a list of media-ranges.") |
| 4286 | (license license:expat))) |
| 4287 | |
| 4288 | (define-public python-miniboa |
| 4289 | (package |
| 4290 | (name "python-miniboa") |
| 4291 | (version "1.0.8") |
| 4292 | (source |
| 4293 | (origin |
| 4294 | (method url-fetch) |
| 4295 | (uri (pypi-uri "miniboa" version)) |
| 4296 | (sha256 |
| 4297 | (base32 |
| 4298 | "002c1aki9hsrwj5plrwdrf3sk8rn95fqylqyjx2arrjfpsih4dgs")))) |
| 4299 | (build-system python-build-system) |
| 4300 | (home-page "https://github.com/shmup/miniboa") |
| 4301 | (synopsis "Simple, single-threaded Telnet server") |
| 4302 | (description |
| 4303 | "Miniboa is a simple, asynchronous, single-threaded, poll-based Telnet |
| 4304 | server.") |
| 4305 | (license license:asl2.0))) |
| 4306 | |
| 4307 | (define-public python-mir-eval |
| 4308 | (package |
| 4309 | (name "python-mir-eval") |
| 4310 | (version "0.7") |
| 4311 | (source (origin |
| 4312 | (method url-fetch) |
| 4313 | (uri (pypi-uri "mir_eval" version)) |
| 4314 | (sha256 |
| 4315 | (base32 |
| 4316 | "0pp6xdflqhj2czhb2w3kk2c7mx4h2hj0n5rabiaafrbcfsjvmzp1")))) |
| 4317 | (build-system python-build-system) |
| 4318 | (propagated-inputs (list python-future python-numpy python-scipy |
| 4319 | python-six)) |
| 4320 | (native-inputs (list python-matplotlib)) |
| 4321 | (home-page "https://github.com/craffel/mir_eval") |
| 4322 | (synopsis "Common metrics for common audio/music processing tasks.") |
| 4323 | (description "This is a Python library for computing common heuristic |
| 4324 | accuracy scores for various music/audio information retrieval/signal |
| 4325 | processing tasks.") |
| 4326 | (license license:expat))) |
| 4327 | |
| 4328 | (define-public python-mizani |
| 4329 | (package |
| 4330 | (name "python-mizani") |
| 4331 | (version "0.9.2") |
| 4332 | (source (origin |
| 4333 | (method git-fetch) |
| 4334 | (uri (git-reference |
| 4335 | (url "https://github.com/has2k1/mizani") |
| 4336 | (commit (string-append "v" version)))) |
| 4337 | (file-name (git-file-name name version)) |
| 4338 | (sha256 |
| 4339 | (base32 |
| 4340 | "13aisfc98nvypb4mglpdphp2r627cjzpdriw4dhlx55f3b2m0dza")))) |
| 4341 | (build-system pyproject-build-system) |
| 4342 | (propagated-inputs |
| 4343 | (list python-matplotlib python-numpy python-pandas python-scipy)) |
| 4344 | (native-inputs |
| 4345 | (list python-setuptools python-setuptools-scm |
| 4346 | python-pytest python-pytest-cov tzdata)) |
| 4347 | (home-page "https://github.com/has2k1/mizani") |
| 4348 | (synopsis "Create data visualizations in Python") |
| 4349 | (description |
| 4350 | "Mizani is a Python package for creating data visualizations. It |
| 4351 | provides functions and tools to help with the creation of visually appealing |
| 4352 | and informative visualizations, including scales, transformations and color |
| 4353 | palettes.") |
| 4354 | (license license:bsd-3))) |
| 4355 | |
| 4356 | (define-public python-pafy |
| 4357 | (package |
| 4358 | (name "python-pafy") |
| 4359 | (version "0.5.3.1") |
| 4360 | (source |
| 4361 | (origin |
| 4362 | (method url-fetch) |
| 4363 | (uri (pypi-uri "pafy" version)) |
| 4364 | (sha256 |
| 4365 | (base32 |
| 4366 | "1a7dxi95m1043rxx1r5x3ngb66nwlq6aqcasyqqjzmmmjps4zrim")))) |
| 4367 | (build-system python-build-system) |
| 4368 | (arguments |
| 4369 | `(#:tests? #f)) ; Currently pafy can not find itself in the tests |
| 4370 | (propagated-inputs |
| 4371 | ;; Youtube-dl is a python package which is imported in the file |
| 4372 | ;; "backend_youtube_dl.py", therefore it needs to be propagated. |
| 4373 | (list youtube-dl)) |
| 4374 | (home-page "https://np1.github.io/pafy/") |
| 4375 | (synopsis "Retrieve YouTube content and metadata") |
| 4376 | (description |
| 4377 | "@code{pafy} is a python library to retrieve YouTube content and metadata.") |
| 4378 | (license license:lgpl3+))) |
| 4379 | |
| 4380 | (define-public python-miniupnpc |
| 4381 | (package |
| 4382 | (name "python-miniupnpc") |
| 4383 | (version "2.2.3") |
| 4384 | (source |
| 4385 | (origin |
| 4386 | (method git-fetch) |
| 4387 | (uri |
| 4388 | (git-reference |
| 4389 | (url "https://github.com/miniupnp/miniupnp") |
| 4390 | (commit |
| 4391 | (string-append |
| 4392 | "miniupnpc_" (string-replace-substring version "." "_"))))) |
| 4393 | (file-name |
| 4394 | (git-file-name name version)) |
| 4395 | (sha256 |
| 4396 | (base32 "03q1rlzvfzm15g1bfw2zqzavlsyaypnaf2k3cz6ha7k5rirkdy0l")))) |
| 4397 | (build-system python-build-system) |
| 4398 | (arguments |
| 4399 | (list |
| 4400 | #:phases |
| 4401 | #~(modify-phases %standard-phases |
| 4402 | (add-after 'unpack 'subdir |
| 4403 | (lambda* (#:key inputs #:allow-other-keys) |
| 4404 | (chdir "miniupnpc") |
| 4405 | (setenv "CC" #$(cc-for-target)) |
| 4406 | (substitute* "Makefile" |
| 4407 | (("/bin/sh") (search-input-file inputs "/bin/sh"))))) |
| 4408 | (add-before 'subdir 'remove-kernel-version |
| 4409 | ;; Avoid embedding the running kernel version for reproducible builds |
| 4410 | (lambda _ |
| 4411 | (substitute* |
| 4412 | "miniupnpc/updateminiupnpcstrings.sh" |
| 4413 | (("^OS_VERSION=`uname -r`") "OS_VERSION=Guix"))))))) |
| 4414 | (inputs (list python)) ;we are building a Python extension |
| 4415 | (synopsis "UPnP client for Python") |
| 4416 | (description "Miniupnpc is a client library for Python programs to set up |
| 4417 | port forwards using @acronym{UPnP, Universal Plug and Play}.") |
| 4418 | (home-page "http://miniupnp.free.fr") |
| 4419 | (license license:bsd-3))) |
| 4420 | |
| 4421 | (define-public python-py |
| 4422 | (package |
| 4423 | (name "python-py") |
| 4424 | (version "1.11.0") |
| 4425 | (source |
| 4426 | (origin |
| 4427 | (method url-fetch) |
| 4428 | (uri (pypi-uri "py" version)) |
| 4429 | (sha256 |
| 4430 | (base32 |
| 4431 | "06c7m7sfcn7587xd4s2bng8m6q1gsfd3j93afhplfjq74r0mrisi")))) |
| 4432 | (build-system python-build-system) |
| 4433 | (arguments |
| 4434 | ;; FIXME: "ImportError: 'test' module incorrectly imported from |
| 4435 | ;; '/gnu/store/...-python-pytest-mimimal-3.0.5/lib/python3.5/site-packages'. |
| 4436 | ;; Expected '/tmp/guix-build-python-py-1.4.31.drv-0/py-1.4.31/py'. |
| 4437 | ;; Is this module globally installed?" |
| 4438 | '(#:tests? #f)) |
| 4439 | (native-inputs |
| 4440 | (list python-setuptools-scm)) |
| 4441 | (home-page "https://github.com/pytest-dev/py") |
| 4442 | (synopsis "Python library for parsing, I/O, instrospection, and logging") |
| 4443 | (description |
| 4444 | "Py is a Python library for file name parsing, .ini file parsing, I/O, |
| 4445 | code introspection, and logging.") |
| 4446 | (license license:expat))) |
| 4447 | |
| 4448 | ;; Recent versions of python-fixtures and python-testrepository need |
| 4449 | ;; python-pbr for packaging, which itself needs these two packages for |
| 4450 | ;; testing. |
| 4451 | ;; To fix this circular dependency, we use a build of python-pbr, based on the |
| 4452 | ;; same source, just without any test dependencies and with tests disabled. |
| 4453 | ;; python-pbr-minmal is then used to package python-fixtures and |
| 4454 | ;; python-testrepository. |
| 4455 | ;; Strictly speaking we currently could remove the test-requirements from the |
| 4456 | ;; normal python-pbr package (and save this package) since test are disabled |
| 4457 | ;; there anyway. But this may change in future. |
| 4458 | (define-public python-pbr-minimal |
| 4459 | (package |
| 4460 | (name "python-pbr-minimal") |
| 4461 | (version "5.5.1") |
| 4462 | (source |
| 4463 | (origin |
| 4464 | (method url-fetch) |
| 4465 | (uri (pypi-uri "pbr" version)) |
| 4466 | (sha256 |
| 4467 | (base32 |
| 4468 | "1j8k5d4rdhy5bw5ai1vkjzln2albah94in3vvyvxa0n42fv81baz")))) |
| 4469 | (build-system python-build-system) |
| 4470 | (arguments |
| 4471 | `(#:tests? #f)) |
| 4472 | (home-page "https://docs.openstack.org/pbr/latest/") |
| 4473 | (synopsis "Minimal build of python-pbr used for bootstrapping") |
| 4474 | (description |
| 4475 | "Used only for bootstrapping python2-pbr, you should not need this.") |
| 4476 | (license license:asl2.0))) |
| 4477 | |
| 4478 | (define-public python-pbr |
| 4479 | (package |
| 4480 | (inherit python-pbr-minimal) |
| 4481 | (name "python-pbr") |
| 4482 | (arguments |
| 4483 | `(#:tests? #f)) ;; Most tests seem to use the Internet. |
| 4484 | (propagated-inputs |
| 4485 | (list git)) ;; pbr actually uses the "git" binary. |
| 4486 | (native-inputs |
| 4487 | `(("python-fixtures" ,python-fixtures-bootstrap) |
| 4488 | ;; discover, coverage, hacking, subunit |
| 4489 | ("python-mock" ,python-mock) |
| 4490 | ("python-six" ,python-six) |
| 4491 | ("python-sphinx" ,python-sphinx) |
| 4492 | ("python-testrepository" ,python-testrepository-bootstrap) |
| 4493 | ("python-testresources" ,python-testresources-bootstrap) |
| 4494 | ("python-testscenarios" ,python-testscenarios-bootstrap) |
| 4495 | ("python-testtools" ,python-testtools-bootstrap) |
| 4496 | ("python-virtualenv" ,python-virtualenv))) |
| 4497 | (synopsis "Enhance the default behavior of Python’s setuptools") |
| 4498 | (description |
| 4499 | "Python Build Reasonableness (PBR) is a library that injects some useful |
| 4500 | and sensible default behaviors into your setuptools run. It will set |
| 4501 | versions, process requirements files and generate AUTHORS and ChangeLog file |
| 4502 | from git information. |
| 4503 | "))) |
| 4504 | |
| 4505 | (define-public python-pyrsistent |
| 4506 | (package |
| 4507 | (name "python-pyrsistent") |
| 4508 | (version "0.16.0") |
| 4509 | (home-page "https://github.com/tobgu/pyrsistent") |
| 4510 | (source (origin |
| 4511 | (method url-fetch) |
| 4512 | (uri (pypi-uri "pyrsistent" version)) |
| 4513 | (sha256 |
| 4514 | (base32 |
| 4515 | "1lrsjgblnapfimd0alsi1as5nz2lfqv97131l7d6anbjzq2rjri8")))) |
| 4516 | (build-system python-build-system) |
| 4517 | (arguments |
| 4518 | '(#:phases (modify-phases %standard-phases |
| 4519 | ;; The package works fine with newer Pytest and Hypothesis, but |
| 4520 | ;; has pinned older versions to stay compatible with Python 2. |
| 4521 | (add-before 'check 'loosen-pytest-requirement |
| 4522 | (lambda _ |
| 4523 | (substitute* "setup.py" |
| 4524 | (("pytest<5") "pytest") |
| 4525 | (("hypothesis<5") "hypothesis")) |
| 4526 | #t))))) |
| 4527 | (native-inputs |
| 4528 | (list python-hypothesis python-pytest python-pytest-runner)) |
| 4529 | (propagated-inputs |
| 4530 | (list python-six)) |
| 4531 | (synopsis "Persistent data structures for Python") |
| 4532 | (description |
| 4533 | "Pyrsistent is a number of persistent collections (by some referred to as |
| 4534 | functional data structures). Persistent in the sense that they are immutable. |
| 4535 | |
| 4536 | All methods on a data structure that would normally mutate it instead return a |
| 4537 | new copy of the structure containing the requested updates. The original |
| 4538 | structure is left untouched.") |
| 4539 | (license license:expat))) |
| 4540 | |
| 4541 | (define-public python-exif-read |
| 4542 | (package |
| 4543 | (name "python-exif-read") |
| 4544 | (version "2.1.2") |
| 4545 | (source (origin |
| 4546 | (method url-fetch) |
| 4547 | (uri (pypi-uri "ExifRead" version)) |
| 4548 | (sha256 |
| 4549 | (base32 |
| 4550 | "1b90jf6m9vxh9nanhpyvqdq7hmfx5iggw1l8kq10jrs6xgr49qkr")))) |
| 4551 | (build-system python-build-system) |
| 4552 | (arguments `(#:tests? #f)) ; no tests |
| 4553 | (home-page "https://github.com/ianare/exif-py") |
| 4554 | (synopsis "Python library to extract EXIF data from image files") |
| 4555 | (description |
| 4556 | "ExifRead is a Python library to extract EXIF data from tiff and jpeg |
| 4557 | files.") |
| 4558 | (license license:bsd-3))) |
| 4559 | |
| 4560 | (define-public python-pyld |
| 4561 | (package |
| 4562 | (name "python-pyld") |
| 4563 | (version "1.0.5") |
| 4564 | (source (origin |
| 4565 | (method url-fetch) |
| 4566 | (uri (pypi-uri "PyLD" version)) |
| 4567 | (sha256 |
| 4568 | (base32 |
| 4569 | "1ywbdbsrkg533qh8xn9ifjh2mvam6v5msrjyqq73jfpvcp89qvff")))) |
| 4570 | (build-system python-build-system) |
| 4571 | (home-page "https://github.com/digitalbazaar/pyld") |
| 4572 | (synopsis "Python implementation of the JSON-LD specification") |
| 4573 | (description |
| 4574 | "PyLD is an implementation of the JSON-LD specification.") |
| 4575 | (license license:bsd-3))) |
| 4576 | |
| 4577 | (define-public python-cli-helpers |
| 4578 | (package |
| 4579 | (name "python-cli-helpers") |
| 4580 | (version "2.2.1") |
| 4581 | (source |
| 4582 | (origin |
| 4583 | ;; There's no source tarball on PyPI. |
| 4584 | (method git-fetch) |
| 4585 | (uri (git-reference |
| 4586 | (url "https://github.com/dbcli/cli_helpers") |
| 4587 | (commit (string-append "v" version)))) |
| 4588 | (file-name (git-file-name name version)) |
| 4589 | (sha256 |
| 4590 | (base32 "1hzavh9v9lkd1dn9f0nvg80f7v4banxvcrj10zy72przqz51k1sb")))) |
| 4591 | (build-system python-build-system) |
| 4592 | (native-inputs |
| 4593 | (list python-pytest)) |
| 4594 | (propagated-inputs |
| 4595 | (list python-wcwidth python-configobj python-tabulate)) |
| 4596 | (home-page "https://github.com/dbcli/cli_helpers") |
| 4597 | (synopsis "Helpers for building command-line apps") |
| 4598 | (description |
| 4599 | "CLI Helpers is a Python package that makes it easy to perform common |
| 4600 | tasks when building command-line apps. It's a helper library for command-line |
| 4601 | interfaces.") |
| 4602 | (license license:bsd-3))) |
| 4603 | |
| 4604 | (define-public python-click |
| 4605 | (package |
| 4606 | (name "python-click") |
| 4607 | (version "8.1.3") |
| 4608 | (source |
| 4609 | (origin |
| 4610 | (method url-fetch) |
| 4611 | (uri (pypi-uri "click" version)) |
| 4612 | (sha256 |
| 4613 | (base32 |
| 4614 | "13kvp8visj5xh9d43brnda6q0kc1s40flxa5cw0p0a9hzf5dr0kn")))) |
| 4615 | (build-system python-build-system) |
| 4616 | (arguments |
| 4617 | `(#:phases |
| 4618 | (modify-phases %standard-phases |
| 4619 | (replace 'check |
| 4620 | (lambda* (#:key tests? #:allow-other-keys) |
| 4621 | (when tests? |
| 4622 | (invoke "pytest" "-vv"))))))) |
| 4623 | (native-inputs (list python-pytest)) |
| 4624 | (home-page "https://palletsprojects.com/p/click/") |
| 4625 | (synopsis "Command line library for Python") |
| 4626 | (description |
| 4627 | "Click is a Python package for creating command line interfaces in a |
| 4628 | composable way with as little code as necessary. Its name stands for |
| 4629 | \"Command Line Interface Creation Kit\". It's highly configurable but comes |
| 4630 | with sensible defaults out of the box.") |
| 4631 | (license license:bsd-3))) |
| 4632 | |
| 4633 | (define-public python-click-7 |
| 4634 | (package (inherit python-click) |
| 4635 | (name "python-click") |
| 4636 | (version "7.1.2") |
| 4637 | (source |
| 4638 | (origin |
| 4639 | (method url-fetch) |
| 4640 | (uri (pypi-uri "click" version)) |
| 4641 | (sha256 |
| 4642 | (base32 "06kbzd6sjfkqan3miwj9wqyddfxc2b6hi7p5s4dvqjb3gif2bdfj")))) |
| 4643 | (arguments `()))) |
| 4644 | |
| 4645 | (define-public python-clickgen |
| 4646 | (package |
| 4647 | (name "python-clickgen") |
| 4648 | (version "2.1.3") |
| 4649 | (source (origin |
| 4650 | (method url-fetch) |
| 4651 | (uri (pypi-uri "clickgen" version)) |
| 4652 | (sha256 |
| 4653 | (base32 |
| 4654 | "010j9zz0gd2za5l4hibicypnfw721x0gxp3rr0329bc97vw5maha")))) |
| 4655 | (build-system python-build-system) |
| 4656 | (propagated-inputs |
| 4657 | (list python-pillow python-toml python-numpy python-attrs)) |
| 4658 | (inputs (list libx11 libpng libxcursor)) |
| 4659 | (native-inputs (list python-wheel)) |
| 4660 | (home-page "https://github.com/ful1e5/clickgen") |
| 4661 | (synopsis "The hassle-free cursor building toolbox") |
| 4662 | (description |
| 4663 | "Clickgen is an API for building X11 and Windows cursors from .png files. |
| 4664 | clickgen is using @code{anicursorgen} and @code{xcursorgen} under the hood.") |
| 4665 | (license license:expat))) |
| 4666 | |
| 4667 | (define-public python-clickhouse-connect |
| 4668 | (package |
| 4669 | (name "python-clickhouse-connect") |
| 4670 | (version "0.6.1") |
| 4671 | (source (origin |
| 4672 | (method git-fetch) |
| 4673 | (uri (git-reference |
| 4674 | (url "https://github.com/ClickHouse/clickhouse-connect") |
| 4675 | (commit (string-append "v" version)))) |
| 4676 | (file-name (git-file-name name version)) |
| 4677 | (sha256 |
| 4678 | (base32 |
| 4679 | "1s0lk7xdq8f351cmpbp6jidqi5zdazrdba7w7fxph0w8sd74amry")))) |
| 4680 | (build-system pyproject-build-system) |
| 4681 | (arguments |
| 4682 | (list |
| 4683 | #:test-flags |
| 4684 | ;; All these tests require docker-compose |
| 4685 | '(list "--ignore-glob=tests/integration_tests/*") |
| 4686 | #:phases |
| 4687 | '(modify-phases %standard-phases |
| 4688 | (add-after 'unpack 'patch-pyproject |
| 4689 | (lambda _ |
| 4690 | ;; Our version of pytest is confused by this field. |
| 4691 | (substitute* "pyproject.toml" |
| 4692 | (("^env_files.*") "")))) |
| 4693 | (add-before 'check 'build-extensions |
| 4694 | (lambda _ |
| 4695 | ;; Cython extensions have to be built before running the tests. |
| 4696 | (invoke "python" "setup.py" "build_ext" "--inplace")))))) |
| 4697 | (propagated-inputs |
| 4698 | (list python-arrow |
| 4699 | python-certifi |
| 4700 | python-lz4 |
| 4701 | python-numpy |
| 4702 | python-orjson |
| 4703 | python-pandas |
| 4704 | python-pytz |
| 4705 | python-sqlalchemy |
| 4706 | python-urllib3 |
| 4707 | python-zstandard)) |
| 4708 | (native-inputs |
| 4709 | (list python-cython |
| 4710 | python-pytest)) |
| 4711 | (home-page "https://github.com/ClickHouse/clickhouse-connect") |
| 4712 | (synopsis |
| 4713 | "ClickHouse database core driver for Python, Pandas, and Superset") |
| 4714 | (description |
| 4715 | "This package provides a high performance core database driver for |
| 4716 | connecting ClickHouse to Python, Pandas, and Superset.") |
| 4717 | (license license:asl2.0))) |
| 4718 | |
| 4719 | (define-public python-cligj |
| 4720 | (package |
| 4721 | (name "python-cligj") |
| 4722 | (version "0.7.2") |
| 4723 | (source |
| 4724 | (origin |
| 4725 | (method url-fetch) |
| 4726 | (uri (pypi-uri "cligj" version)) |
| 4727 | (sha256 |
| 4728 | (base32 |
| 4729 | "09vbkik6kyn6yrqzl2r74vaybjk8kjykvi975hy3fsrm4gb17g54")))) |
| 4730 | (build-system python-build-system) |
| 4731 | (propagated-inputs |
| 4732 | (list python-click)) |
| 4733 | (native-inputs |
| 4734 | (list python-pytest-cov)) |
| 4735 | (home-page "https://github.com/mapbox/cligj") |
| 4736 | (synopsis "Click params for command line interfaces to GeoJSON") |
| 4737 | (description |
| 4738 | "cligj is for Python developers who create command line interfaces |
| 4739 | for geospatial data. cligj allows you to quickly build consistent, |
| 4740 | well-tested and interoperable CLIs for handling GeoJSON.") |
| 4741 | (license license:bsd-3))) |
| 4742 | |
| 4743 | (define-public python-cloup |
| 4744 | (package |
| 4745 | (name "python-cloup") |
| 4746 | (version "2.1.1") |
| 4747 | (source (origin |
| 4748 | (method url-fetch) |
| 4749 | (uri (pypi-uri "cloup" version)) |
| 4750 | (sha256 |
| 4751 | (base32 |
| 4752 | "05c6cjpnf9s72gyn5dckxbmd8rf2kgdzfsl7pqzrnc1lcdl13zmv")))) |
| 4753 | (build-system pyproject-build-system) |
| 4754 | (propagated-inputs (list python-click)) |
| 4755 | (native-inputs (list python-pytest)) |
| 4756 | (home-page "https://github.com/janLuke/cloup") |
| 4757 | (synopsis "Extension library for python-click") |
| 4758 | (description |
| 4759 | "Cloup enriches Click with several features that make it more expressive |
| 4760 | and configurable such as option groups, constraints, subcommand aliases, |
| 4761 | subcommands sections and a themeable HelpFormatter.") |
| 4762 | (license license:bsd-3))) |
| 4763 | |
| 4764 | (define-public python-vcversioner |
| 4765 | (package |
| 4766 | (name "python-vcversioner") |
| 4767 | (version "2.16.0.0") |
| 4768 | (source |
| 4769 | (origin |
| 4770 | (method url-fetch) |
| 4771 | (uri (pypi-uri "vcversioner" version)) |
| 4772 | (sha256 |
| 4773 | (base32 |
| 4774 | "16z10sm78jd7ca3jbkgc3q5i8a8q7y1h21q1li21yy3rlhbhrrns")))) |
| 4775 | (build-system python-build-system) |
| 4776 | (synopsis "Python library for version number discovery") |
| 4777 | (description "Vcversioner is a Python library that inspects tagging |
| 4778 | information in a variety of version control systems in order to discover |
| 4779 | version numbers.") |
| 4780 | (home-page "https://github.com/habnabit/vcversioner") |
| 4781 | (license license:isc))) |
| 4782 | |
| 4783 | (define-public python-jdcal |
| 4784 | (package |
| 4785 | (name "python-jdcal") |
| 4786 | (version "1.4.1") |
| 4787 | (source |
| 4788 | (origin |
| 4789 | (method url-fetch) |
| 4790 | (uri (pypi-uri "jdcal" version)) |
| 4791 | (sha256 |
| 4792 | (base32 |
| 4793 | "1j6g19jf21qprjsr8h0r7nsbss366gy8j9izq8cz53gbjvh74a27")))) |
| 4794 | (build-system python-build-system) |
| 4795 | (arguments |
| 4796 | (list #:phases |
| 4797 | #~(modify-phases %standard-phases |
| 4798 | (replace 'check |
| 4799 | (lambda* (#:key tests? #:allow-other-keys) |
| 4800 | (when tests? |
| 4801 | (invoke "pytest" "-vv"))))))) |
| 4802 | (native-inputs |
| 4803 | (list python-pytest)) |
| 4804 | (home-page "https://github.com/phn/jdcal") |
| 4805 | (synopsis "Functions to convert between Julian dates Gregorian dates") |
| 4806 | (description "This Python library provides functions for converting |
| 4807 | between Julian dates and Gregorian dates.") |
| 4808 | (license license:bsd-2))) |
| 4809 | |
| 4810 | (define-public python-jsondiff |
| 4811 | (package |
| 4812 | (name "python-jsondiff") |
| 4813 | (version "1.2.0") |
| 4814 | (source |
| 4815 | (origin |
| 4816 | (method url-fetch) |
| 4817 | (uri (pypi-uri "jsondiff" version)) |
| 4818 | (sha256 |
| 4819 | (base32 |
| 4820 | "00v3689175aqzdscrxpffm712ylp8jvcpqdg51ca22ni6721p51l")))) |
| 4821 | (build-system python-build-system) |
| 4822 | (native-inputs |
| 4823 | (list python-nose python-nose-random)) |
| 4824 | (home-page |
| 4825 | "https://github.com/fzumstein/jsondiff") |
| 4826 | (synopsis "Compare JSON and JSON-like structures in Python") |
| 4827 | (description "@code{jsondiff} is a Python library which lets you |
| 4828 | compare, diff, and patch JSON and JSON-like structures in Python.") |
| 4829 | (license license:expat))) |
| 4830 | |
| 4831 | (define-public python-jsonschema |
| 4832 | (package |
| 4833 | (name "python-jsonschema") |
| 4834 | ;; XXX: Update to the latest version requires new build system - Hatch |
| 4835 | ;; https://hatch.pypa.io/ |
| 4836 | (version "4.5.1") |
| 4837 | (source |
| 4838 | (origin |
| 4839 | (method url-fetch) |
| 4840 | (uri (pypi-uri "jsonschema" version)) |
| 4841 | (sha256 |
| 4842 | (base32 "1z0x22691jva7lwfcfh377jdmlz68zhiawxzl53k631l34k8hvbw")))) |
| 4843 | (build-system pyproject-build-system) |
| 4844 | (arguments |
| 4845 | (list |
| 4846 | #:phases |
| 4847 | #~(modify-phases %standard-phases |
| 4848 | (add-before 'build 'pretend-version |
| 4849 | ;; The version string is usually derived via setuptools-scm, but |
| 4850 | ;; without the git metadata available, the version string is set to |
| 4851 | ;; '0.0.0'. |
| 4852 | (lambda _ |
| 4853 | (setenv "SETUPTOOLS_SCM_PRETEND_VERSION" #$version))) |
| 4854 | (replace 'check |
| 4855 | (lambda* (#:key tests? #:allow-other-keys) |
| 4856 | (when tests? |
| 4857 | (setenv "JSON_SCHEMA_TEST_SUITE" "json") |
| 4858 | (invoke "trial" "jsonschema"))))))) |
| 4859 | (native-inputs (list python-setuptools-scm python-twisted)) |
| 4860 | (propagated-inputs |
| 4861 | (list python-attrs |
| 4862 | python-importlib-metadata |
| 4863 | python-pyrsistent |
| 4864 | python-typing-extensions)) |
| 4865 | (home-page "https://github.com/Julian/jsonschema") |
| 4866 | (synopsis "Implementation of JSON Schema for Python") |
| 4867 | (description |
| 4868 | "Jsonschema is an implementation of JSON Schema for Python.") |
| 4869 | (license license:expat))) |
| 4870 | |
| 4871 | (define-public python-jsonschema-3 |
| 4872 | (package |
| 4873 | (inherit python-jsonschema) |
| 4874 | (version "3.2.0") |
| 4875 | (source (origin |
| 4876 | (method url-fetch) |
| 4877 | (uri (pypi-uri "jsonschema" version)) |
| 4878 | (sha256 |
| 4879 | (base32 |
| 4880 | "0ykr61yiiizgvm3bzipa3l73rvj49wmrybbfwhvpgk3pscl5pa68")))) |
| 4881 | (arguments |
| 4882 | (substitute-keyword-arguments (package-arguments python-jsonschema) |
| 4883 | ((#:phases phases) |
| 4884 | #~(modify-phases #$phases |
| 4885 | (replace 'pretend-version |
| 4886 | (lambda _ |
| 4887 | (setenv "SETUPTOOLS_SCM_PRETEND_VERSION" #$version))))))))) |
| 4888 | |
| 4889 | (define-public python-schema |
| 4890 | (package |
| 4891 | (name "python-schema") |
| 4892 | (version "0.6.6") |
| 4893 | (source |
| 4894 | (origin |
| 4895 | (method url-fetch) |
| 4896 | (uri (pypi-uri "schema" version)) |
| 4897 | (sha256 |
| 4898 | (base32 |
| 4899 | "1lw28j9w9vxyigg7vkfkvi6ic9lgjkdnfvnxdr7pklslqvzmk2vm")))) |
| 4900 | (build-system python-build-system) |
| 4901 | (native-inputs |
| 4902 | (list python-pytest)) |
| 4903 | (home-page "https://github.com/keleshev/schema") |
| 4904 | (synopsis "Simple data validation library") |
| 4905 | (description |
| 4906 | "@code{python-schema} is a library for validating Python data |
| 4907 | structures, such as those obtained from config-files, forms, external |
| 4908 | services or command-line parsing, converted from JSON/YAML (or |
| 4909 | something else) to Python data-types.") |
| 4910 | (license license:psfl))) |
| 4911 | |
| 4912 | (define-public python-schema-0.5 |
| 4913 | (package (inherit python-schema) |
| 4914 | (version "0.5.0") |
| 4915 | (source |
| 4916 | (origin |
| 4917 | (method url-fetch) |
| 4918 | (uri (pypi-uri "schema" version)) |
| 4919 | (sha256 |
| 4920 | (base32 |
| 4921 | "10zqvpaky51kgb8nd42bk7jwl8cn2zvayxjpdc1wwmpybj92x67s")))))) |
| 4922 | |
| 4923 | (define-public python-kitchen |
| 4924 | (package |
| 4925 | (name "python-kitchen") |
| 4926 | (version "1.2.5") |
| 4927 | (source |
| 4928 | (origin |
| 4929 | (method url-fetch) |
| 4930 | (uri (pypi-uri "kitchen" version)) |
| 4931 | (sha256 |
| 4932 | (base32 |
| 4933 | "1zakh6l0yjvwic9p0nkvmbidpnkygkxbigh2skmb5gccyrhbp7xg")))) |
| 4934 | (build-system python-build-system) |
| 4935 | (propagated-inputs |
| 4936 | (list python-chardet)) |
| 4937 | (home-page "https://github.com/fedora-infra/kitchen") |
| 4938 | (synopsis "Python API for snippets") |
| 4939 | (description "@code{kitchen} module provides a python API for all sorts of |
| 4940 | little useful snippets of code that everybody ends up writing for their projects |
| 4941 | but never seem big enough to build an independent release. Use kitchen and stop |
| 4942 | cutting and pasting that code over and over.") |
| 4943 | (license (list license:lgpl2.1+ |
| 4944 | ;; subprocess.py, test_subprocess.py, |
| 4945 | ;; kitchen/pycompat25/defaultdict.py: |
| 4946 | license:psfl)))) |
| 4947 | |
| 4948 | (define-public python-roman |
| 4949 | (package |
| 4950 | (name "python-roman") |
| 4951 | (version "3.3") |
| 4952 | (source |
| 4953 | (origin |
| 4954 | (method url-fetch) |
| 4955 | (uri (pypi-uri "roman" version)) |
| 4956 | (sha256 |
| 4957 | (base32 |
| 4958 | "0gyp2bmw47jgpm8j64gydzqq838bgxz5gh6cm57lxlr7p26sqiic")))) |
| 4959 | (build-system python-build-system) |
| 4960 | (home-page "https://github.com/zopefoundation/roman") |
| 4961 | (synopsis "Integer to Roman numerals converter") |
| 4962 | (description |
| 4963 | "This package provides a small helper library to convert Arabic Numbers |
| 4964 | to Roman Numerals.") |
| 4965 | (license license:psfl))) |
| 4966 | |
| 4967 | (define-public python-rollbar |
| 4968 | (package |
| 4969 | (name "python-rollbar") |
| 4970 | (version "0.16.3") |
| 4971 | (source (origin |
| 4972 | (method url-fetch) |
| 4973 | (uri (pypi-uri "rollbar" version)) |
| 4974 | (sha256 |
| 4975 | (base32 |
| 4976 | "1qpd0j50wqli3867xmhwk65pm1cxjs60yg83mcvcf3kic3y3sc82")))) |
| 4977 | (build-system python-build-system) |
| 4978 | (native-inputs (list python-pytest-runner python-unittest2)) |
| 4979 | (inputs (list python-requests python-six python-httpx python-blinker |
| 4980 | python-webob)) |
| 4981 | (home-page "https://github.com/rollbar/pyrollbar") |
| 4982 | (synopsis "Notifier for exceptions, errors, and log messages to Rollbar") |
| 4983 | (description |
| 4984 | "Python SDK for reporting exceptions, errors, and log messages |
| 4985 | to @url{https://rollbar.com/, Rollbar}. |
| 4986 | |
| 4987 | Capabilities include: |
| 4988 | |
| 4989 | @itemize @bullet |
| 4990 | @item Sending messages and exceptions with arbitrary context |
| 4991 | @item Getting back aggregates |
| 4992 | @item Debugging production issues |
| 4993 | @end itemize") |
| 4994 | (license license:expat))) |
| 4995 | |
| 4996 | (define-public python-unidecode |
| 4997 | (package |
| 4998 | (name "python-unidecode") |
| 4999 | (version "1.1.1") |
| 5000 | (source (origin |
| 5001 | (method url-fetch) |
| 5002 | (uri (pypi-uri "Unidecode" version)) |
| 5003 | (sha256 |
| 5004 | (base32 |
| 5005 | "1s6cp2lv4m0f00hjckjz8p6m7d3n3v16jvg353llf5ia1iqsnsib")))) |
| 5006 | (build-system python-build-system) |
| 5007 | (home-page "https://pypi.org/project/Unidecode/") |
| 5008 | (synopsis "ASCII transliterations of Unicode text") |
| 5009 | (description |
| 5010 | "Unidecode provides ASCII transliterations of Unicode text. Unidecode is |
| 5011 | useful when integrating with legacy code that doesn't support Unicode, or for |
| 5012 | ease of entry of non-Roman names on a US keyboard, or when constructing ASCII |
| 5013 | machine identifiers from human-readable Unicode strings that should still be |
| 5014 | somewhat intelligible.") |
| 5015 | (license license:gpl2+))) |
| 5016 | |
| 5017 | (define-public python-text-unidecode |
| 5018 | (package |
| 5019 | (name "python-text-unidecode") |
| 5020 | (version "1.3") |
| 5021 | (source (origin |
| 5022 | (method url-fetch) |
| 5023 | (uri (pypi-uri "text-unidecode" version)) |
| 5024 | (sha256 |
| 5025 | (base32 |
| 5026 | "14xb99fdv52j21dsljgsbmbaqv10ps4b453p229r29sdn4xn1mms")))) |
| 5027 | (build-system python-build-system) |
| 5028 | (arguments |
| 5029 | '(#:phases (modify-phases %standard-phases |
| 5030 | (replace 'check |
| 5031 | (lambda _ |
| 5032 | (invoke "pytest" "-vv")))))) |
| 5033 | (native-inputs |
| 5034 | (list python-pytest)) |
| 5035 | (home-page "https://github.com/kmike/text-unidecode/") |
| 5036 | (synopsis "Decode Unicode data") |
| 5037 | (description |
| 5038 | "@code{text-unidecode} is a basic Python port of the @code{Text::Unidecode} |
| 5039 | Perl library. It can create ASCII representations of Unicode data. In general |
| 5040 | users should prefer the @code{python-unidecode} package which offers better |
| 5041 | memory usage and transliteration quality.") |
| 5042 | ;; The user can choose either license. |
| 5043 | (license (list license:clarified-artistic license:gpl2+)))) |
| 5044 | |
| 5045 | (define-public python-pyjwt |
| 5046 | (package |
| 5047 | (name "python-pyjwt") |
| 5048 | (version "2.6.0") |
| 5049 | (source |
| 5050 | (origin |
| 5051 | (method url-fetch) |
| 5052 | (uri (pypi-uri "PyJWT" version)) |
| 5053 | (sha256 |
| 5054 | (base32 |
| 5055 | "1z85kwr945rbzrn5wabrsmck5x8disa9wc7b3y5gci7w65z5qa39")))) |
| 5056 | (build-system pyproject-build-system) |
| 5057 | (native-inputs |
| 5058 | (list python-coverage |
| 5059 | python-cryptography |
| 5060 | python-pytest |
| 5061 | python-sphinx |
| 5062 | python-sphinx-rtd-theme)) |
| 5063 | (home-page "https://github.com/progrium/pyjwt") |
| 5064 | (synopsis "JSON Web Token implementation in Python") |
| 5065 | (description |
| 5066 | "PyJWT is a JSON Web Token implementation written in Python.") |
| 5067 | (license license:expat))) |
| 5068 | |
| 5069 | (define-public python-pymsgbox |
| 5070 | (package |
| 5071 | (name "python-pymsgbox") |
| 5072 | (version "1.0.6") |
| 5073 | (source |
| 5074 | (origin |
| 5075 | (method git-fetch) |
| 5076 | (uri (git-reference |
| 5077 | ;; LICENSE.txt is not present on pypi |
| 5078 | (url "https://github.com/asweigart/PyMsgBox") |
| 5079 | (commit "55926b55f46caa969c5ddb87990ebea2737bd66f"))) |
| 5080 | (file-name (git-file-name name version)) |
| 5081 | (sha256 |
| 5082 | (base32 |
| 5083 | "0zy7rjfpwlrd8b64j7jk2lb8m2npc21rnpwakpfvwgl4nxdy80rg")))) |
| 5084 | (arguments |
| 5085 | ;; Circular dependency to run tests: |
| 5086 | ;; Tests need pyautogui, which depends on pymsgbox. |
| 5087 | '(#:tests? #f)) |
| 5088 | (build-system python-build-system) |
| 5089 | (home-page "https://github.com/asweigart/PyMsgBox") |
| 5090 | (synopsis "Python module for JavaScript-like message boxes") |
| 5091 | (description |
| 5092 | "PyMsgBox is a simple, cross-platform, pure Python module for |
| 5093 | JavaScript-like message boxes. Types of dialog boxes include: |
| 5094 | @enumerate |
| 5095 | @item alert |
| 5096 | @item confirm |
| 5097 | @item prompt |
| 5098 | @item password |
| 5099 | @end enumerate |
| 5100 | ") |
| 5101 | (license license:bsd-3))) |
| 5102 | |
| 5103 | (define-public python-pympler |
| 5104 | (package |
| 5105 | (name "python-pympler") |
| 5106 | (home-page "https://pythonhosted.org/Pympler/") |
| 5107 | (version "1.0.1") |
| 5108 | (source (origin |
| 5109 | (method url-fetch) |
| 5110 | (uri (pypi-uri "Pympler" version)) |
| 5111 | (sha256 |
| 5112 | (base32 |
| 5113 | "1ynkqpv2akldmvkll5vh5zhwj433s1d59iv0f76lygyak4silgwr")))) |
| 5114 | (build-system python-build-system) |
| 5115 | (arguments |
| 5116 | (list |
| 5117 | #:phases |
| 5118 | #~(modify-phases %standard-phases |
| 5119 | (add-after 'unpack 'skip-broken-test |
| 5120 | (lambda _ |
| 5121 | ;; FIXME: This test fails for no good reason: |
| 5122 | ;; https://github.com/pympler/pympler/issues/153 |
| 5123 | (substitute* "test/muppy/test_tracker.py" |
| 5124 | (("^([[:blank:]]+)def test_stracker_create_summary" all indent) |
| 5125 | (string-append indent "@unittest.skipIf(True, \ |
| 5126 | 'Fails on Guix too for unknown reasons')\n" all)))))))) |
| 5127 | (synopsis "Measure, monitor and analyze memory behavior") |
| 5128 | (description |
| 5129 | "Pympler is a development tool to measure, monitor and analyze |
| 5130 | the memory behavior of Python objects in a running Python application. |
| 5131 | |
| 5132 | By pympling a Python application, detailed insight in the size and the |
| 5133 | lifetime of Python objects can be obtained. Undesirable or unexpected |
| 5134 | runtime behavior like memory bloat and other @samp{pymples} can easily |
| 5135 | be identified. |
| 5136 | |
| 5137 | A web profiling frontend exposes process statistics, garbage |
| 5138 | visualisation and class tracker statistics.") |
| 5139 | (license license:asl2.0))) |
| 5140 | |
| 5141 | (define-public python-itsdangerous |
| 5142 | (package |
| 5143 | (name "python-itsdangerous") |
| 5144 | (version "2.0.1") |
| 5145 | (source |
| 5146 | (origin |
| 5147 | (method url-fetch) |
| 5148 | (uri (pypi-uri "itsdangerous" version)) |
| 5149 | (sha256 |
| 5150 | (base32 |
| 5151 | "1w6gfb2zhbcmrfj6digwzw1z68w6zg1q87rm6la2m412zil4swly")))) |
| 5152 | (build-system python-build-system) |
| 5153 | (home-page "https://palletsprojects.com/p/itsdangerous/") |
| 5154 | (synopsis "Python library for passing data to/from untrusted environments") |
| 5155 | (description |
| 5156 | "Itsdangerous provides various helpers to pass trusted data to untrusted |
| 5157 | environments and back.") |
| 5158 | (license license:bsd-3))) |
| 5159 | |
| 5160 | (define-public python-pyyaml |
| 5161 | (package |
| 5162 | (name "python-pyyaml") |
| 5163 | (version "6.0") |
| 5164 | (source |
| 5165 | (origin |
| 5166 | (method url-fetch) |
| 5167 | (uri (pypi-uri "PyYAML" version)) |
| 5168 | (sha256 |
| 5169 | (base32 |
| 5170 | "18imkjacvpxfgg1lbpraqywx3j7hr5dv99d242byqvrh2jf53yv8")))) |
| 5171 | (build-system python-build-system) |
| 5172 | (inputs |
| 5173 | (list libyaml python-cython)) |
| 5174 | (home-page "https://pyyaml.org") |
| 5175 | (synopsis "YAML parser and emitter for Python") |
| 5176 | (description |
| 5177 | "PyYAML is a YAML parser and emitter for Python. PyYAML features a |
| 5178 | complete YAML 1.1 parser, Unicode support, pickle support, capable extension |
| 5179 | API, and sensible error messages. PyYAML supports standard YAML tags and |
| 5180 | provides Python-specific tags that represent an arbitrary Python object.") |
| 5181 | (license license:expat))) |
| 5182 | |
| 5183 | (define-public python-pyyaml-5 |
| 5184 | (package |
| 5185 | (inherit python-pyyaml) |
| 5186 | (version "5.4.1") |
| 5187 | (source |
| 5188 | (origin |
| 5189 | (method url-fetch) |
| 5190 | (uri (pypi-uri "PyYAML" version)) |
| 5191 | (sha256 |
| 5192 | (base32 |
| 5193 | "0pm440pmpvgv5rbbnm8hk4qga5a292kvlm1bh3x2nwr8pb5p8xv0")))))) |
| 5194 | |
| 5195 | (define-public python-vine |
| 5196 | (package |
| 5197 | (name "python-vine") |
| 5198 | (version "5.0.0") |
| 5199 | (source |
| 5200 | (origin |
| 5201 | (method url-fetch) |
| 5202 | (uri (pypi-uri "vine" version)) |
| 5203 | (sha256 |
| 5204 | (base32 "0zk3pm0g7s4qfn0gk28lfmsyplvisaxi6826cgpq5njkm4j1cfvx")))) |
| 5205 | (build-system python-build-system) |
| 5206 | (native-inputs |
| 5207 | (list python-pytest python-case)) |
| 5208 | (home-page "https://github.com/celery/vine") |
| 5209 | (synopsis "Promises for Python") |
| 5210 | (description |
| 5211 | "@code{vine} provides a special implementation of promises in that it can |
| 5212 | be used both for \"promise of a value\" and lazy evaluation. The biggest |
| 5213 | upside for this is that everything in a promise can also be a promise, |
| 5214 | e.g. filters, callbacks and errbacks can all be promises.") |
| 5215 | (license license:bsd-3))) |
| 5216 | |
| 5217 | (define-public python-virtualenv |
| 5218 | (package |
| 5219 | (name "python-virtualenv") |
| 5220 | (version "20.3.1") |
| 5221 | (source |
| 5222 | (origin |
| 5223 | (method url-fetch) |
| 5224 | (uri (pypi-uri "virtualenv" version)) |
| 5225 | (sha256 |
| 5226 | (base32 |
| 5227 | "1nbhnpzswcf3lmzn5xabmfdd7ki8r2w2i37y6wml54di6qi1l48c")))) |
| 5228 | (build-system python-build-system) |
| 5229 | (native-inputs |
| 5230 | (list python-mock python-pytest python-setuptools-scm)) |
| 5231 | (propagated-inputs |
| 5232 | (list python-appdirs python-distlib python-filelock python-six)) |
| 5233 | (home-page "https://virtualenv.pypa.io/") |
| 5234 | (synopsis "Virtual Python environment builder") |
| 5235 | (description |
| 5236 | "Virtualenv is a tool to create isolated Python environments.") |
| 5237 | (license license:expat))) |
| 5238 | |
| 5239 | (define-public python-crossenv |
| 5240 | (package |
| 5241 | (name "python-crossenv") |
| 5242 | (version "1.3.0") |
| 5243 | (source |
| 5244 | (origin |
| 5245 | (method url-fetch) |
| 5246 | (uri (pypi-uri "crossenv" version)) |
| 5247 | (sha256 |
| 5248 | (base32 |
| 5249 | "07rv4650n19740ixmnsf4qbxyqlgi7f5m1cy8cq0gl01q3r6hps4")))) |
| 5250 | (build-system python-build-system) |
| 5251 | (arguments |
| 5252 | (list #:tests? #f)) ; tests not distributed on pypi |
| 5253 | (home-page "https://github.com/benfogle/virtualenv") |
| 5254 | (synopsis "Cross-compiling virtualenv for Python") |
| 5255 | (description "This package is a tool for cross-compiling extension |
| 5256 | modules. It creates a special virtual environment such that @command{pip} or |
| 5257 | @file{setup.py} will cross compile packages for you, usually with no further |
| 5258 | work on your part.") |
| 5259 | (license license:expat))) |
| 5260 | |
| 5261 | (define-public python-virtualenv-clone |
| 5262 | (package |
| 5263 | (name "python-virtualenv-clone") |
| 5264 | (version "0.5.7") |
| 5265 | (source (origin |
| 5266 | (method git-fetch) |
| 5267 | (uri (git-reference |
| 5268 | (url "https://github.com/edwardgeorge/virtualenv-clone") |
| 5269 | (commit version))) |
| 5270 | (file-name (git-file-name name version)) |
| 5271 | (sha256 |
| 5272 | (base32 |
| 5273 | "0p0d1y3axvjfnxlgwjx2374gikc8bmc82g0m7yashihbikh7pcxa")))) |
| 5274 | (build-system python-build-system) |
| 5275 | (arguments |
| 5276 | (list #:phases #~(modify-phases %standard-phases |
| 5277 | (replace 'check |
| 5278 | (lambda* (#:key tests? #:allow-other-keys) |
| 5279 | (when tests? |
| 5280 | (delete-file "tox.ini") |
| 5281 | (invoke "pytest" "-vvv" "tests"))))))) |
| 5282 | (native-inputs (list python-pytest |
| 5283 | python-tox |
| 5284 | python-virtualenv |
| 5285 | python-coverage |
| 5286 | python-wheel |
| 5287 | python-tomli |
| 5288 | python-hypothesis)) |
| 5289 | (home-page "https://github.com/edwardgeorge/virtualenv-clone") |
| 5290 | (synopsis "Clone a non-relocatable virtualenv cleanly") |
| 5291 | (description |
| 5292 | "Clone non-relocatable virtualenvs without breaking site-packages.") |
| 5293 | (license license:expat))) |
| 5294 | |
| 5295 | (define-public python-uc-micro-py |
| 5296 | (package |
| 5297 | (name "python-uc-micro-py") |
| 5298 | (version "1.0.1") |
| 5299 | (source (origin |
| 5300 | (method git-fetch) ;for tests |
| 5301 | (uri (git-reference |
| 5302 | (url "https://github.com/tsutsu3/uc.micro-py") |
| 5303 | (commit (string-append "v" version)))) |
| 5304 | (file-name (git-file-name name version)) |
| 5305 | (sha256 |
| 5306 | (base32 |
| 5307 | "17f55gi55rg47nm88fn3f8851ph03dgykdp011lxr3j6hk18lyfv")))) |
| 5308 | (build-system pyproject-build-system) |
| 5309 | (native-inputs (list python-pytest)) |
| 5310 | (home-page "https://github.com/tsutsu3/uc.micro-py") |
| 5311 | (synopsis "Unicode data files for linkify-it-py projects") |
| 5312 | (description "This package contains a micro subset of Unicode data files |
| 5313 | for linkify-it-py projects.") |
| 5314 | (license license:expat))) |
| 5315 | |
| 5316 | (define-public python-linkify-it-py |
| 5317 | (package |
| 5318 | (name "python-linkify-it-py") |
| 5319 | (version "2.0.0") |
| 5320 | (source (origin |
| 5321 | (method git-fetch) ;for tests |
| 5322 | (uri (git-reference |
| 5323 | (url "https://github.com/tsutsu3/linkify-it-py") |
| 5324 | (commit (string-append "v" version)))) |
| 5325 | (file-name (git-file-name name version)) |
| 5326 | (sha256 |
| 5327 | (base32 |
| 5328 | "0fg0a1lc8xbb62y9krxcp708ll58dxcwm8i7rrwpkd5sh2229f6x")))) |
| 5329 | (build-system pyproject-build-system) |
| 5330 | (propagated-inputs (list python-uc-micro-py)) |
| 5331 | (native-inputs (list python-pytest)) |
| 5332 | (home-page "https://github.com/tsutsu3/linkify-it-py") |
| 5333 | (synopsis "Links recognition library with full Unicode support") |
| 5334 | (description "This is Python port of |
| 5335 | @url{https://github.com/markdown-it/linkify-it, linkify-it}, which is a links |
| 5336 | recognition library with full Unicode support. It has features like: |
| 5337 | @itemize |
| 5338 | @item Full unicode support, with @i{astral} characters |
| 5339 | @item International domains support |
| 5340 | @item Allows rules extension and custom normalizers. |
| 5341 | @end itemize") |
| 5342 | (license license:expat))) |
| 5343 | |
| 5344 | (define-public python-makefun |
| 5345 | (package |
| 5346 | (name "python-makefun") |
| 5347 | (version "1.15.1") |
| 5348 | (source (origin |
| 5349 | (method url-fetch) |
| 5350 | (uri (pypi-uri "makefun" version)) |
| 5351 | (sha256 |
| 5352 | (base32 |
| 5353 | "19a8dga8rnmjn5gy1cy1wdi28swbkdkypwbqikbxil6ynqcg3c20")))) |
| 5354 | (build-system pyproject-build-system) |
| 5355 | (native-inputs |
| 5356 | (list python-pytest python-setuptools-scm)) |
| 5357 | (home-page "https://github.com/smarie/python-makefun") |
| 5358 | (synopsis "Library to dynamically create python functions") |
| 5359 | (description "@code{makefun} helps create functions dynamically with a |
| 5360 | given signature. It was largely inspired by @code{python-decorator} and |
| 5361 | @code{functools}.") |
| 5362 | (license license:bsd-3))) |
| 5363 | |
| 5364 | (define-public python-markdown-it-py |
| 5365 | (package |
| 5366 | (name "python-markdown-it-py") |
| 5367 | (version "2.1.0") |
| 5368 | (source (origin |
| 5369 | (method url-fetch) |
| 5370 | (uri (pypi-uri "markdown-it-py" version)) |
| 5371 | (sha256 |
| 5372 | (base32 |
| 5373 | "1nh75i72584r70alhqc479gys04s5m5g3vq601yf2njbs7z5jzng")))) |
| 5374 | (build-system pyproject-build-system) |
| 5375 | (arguments (list #:tests? #f)) ;pypi source does not contains tests |
| 5376 | (native-inputs (list python-flit)) |
| 5377 | (propagated-inputs |
| 5378 | (list python-mdurl |
| 5379 | python-typing-extensions)) |
| 5380 | (home-page "https://github.com/executablebooks/markdown-it-py") |
| 5381 | (synopsis "Python port of markdown-it") |
| 5382 | (description |
| 5383 | "This is a Python port of @code{markdown-it}, and some of its associated |
| 5384 | plugins. The driving design philosophy of the port has been to change as |
| 5385 | little of the fundamental code structure (file names, function name, etc) as |
| 5386 | possible.") |
| 5387 | (license license:expat))) |
| 5388 | |
| 5389 | (define-public python-markupsafe |
| 5390 | (package |
| 5391 | (name "python-markupsafe") |
| 5392 | (version "2.1.1") |
| 5393 | (source |
| 5394 | (origin |
| 5395 | (method url-fetch) |
| 5396 | (uri (pypi-uri "MarkupSafe" version)) |
| 5397 | (sha256 |
| 5398 | (base32 |
| 5399 | "0jqxp5sfrc0byp6bk0gwdmildi4mck2gprp42afri3z4r5y1k4bz")))) |
| 5400 | (build-system python-build-system) |
| 5401 | (arguments |
| 5402 | `(#:phases (modify-phases %standard-phases |
| 5403 | (replace 'check |
| 5404 | (lambda* (#:key tests? #:allow-other-keys) |
| 5405 | (when tests? |
| 5406 | (invoke "pytest" "-vv"))))))) |
| 5407 | (native-inputs |
| 5408 | (list python-pytest)) |
| 5409 | (home-page "https://github.com/mitsuhiko/markupsafe") |
| 5410 | (synopsis "XML/HTML/XHTML markup safe string implementation for Python") |
| 5411 | (description |
| 5412 | "Markupsafe provides an XML/HTML/XHTML markup safe string implementation |
| 5413 | for Python.") |
| 5414 | (license license:bsd-3))) |
| 5415 | |
| 5416 | |
| 5417 | (define-public python-jinja2 |
| 5418 | (package |
| 5419 | (name "python-jinja2") |
| 5420 | (version "3.1.1") |
| 5421 | (source |
| 5422 | (origin |
| 5423 | (method url-fetch) |
| 5424 | (uri (pypi-uri "Jinja2" version)) |
| 5425 | (sha256 |
| 5426 | (base32 |
| 5427 | "1saawzys14l1p4kafs7hkihmnvqjq8fwxjmkjiqx3jq1nm5ys2v4")))) |
| 5428 | (build-system python-build-system) |
| 5429 | (arguments |
| 5430 | '(#:phases (modify-phases %standard-phases |
| 5431 | (replace 'check |
| 5432 | (lambda* (#:key tests? #:allow-other-keys) |
| 5433 | (if tests? |
| 5434 | (invoke "pytest" "-vv") |
| 5435 | (format #t "test suite not run~%"))))))) |
| 5436 | (native-inputs (list python-pytest)) |
| 5437 | (propagated-inputs (list python-markupsafe)) |
| 5438 | (home-page "https://jinja.palletsprojects.com/") |
| 5439 | (synopsis "Python template engine") |
| 5440 | (description |
| 5441 | "Jinja2 is a small but fast and easy to use stand-alone template engine |
| 5442 | written in pure Python.") |
| 5443 | (license license:bsd-3))) |
| 5444 | |
| 5445 | |
| 5446 | (define-public python-jinja2-time |
| 5447 | (package |
| 5448 | (name "python-jinja2-time") |
| 5449 | (version "0.2.0") |
| 5450 | (source |
| 5451 | (origin |
| 5452 | (method url-fetch) |
| 5453 | (uri (pypi-uri "jinja2-time" version)) |
| 5454 | (sha256 |
| 5455 | (base32 |
| 5456 | "0h0dr7cfpjnjj8bgl2vk9063a53649pn37wnlkd8hxjy656slkni")))) |
| 5457 | (build-system python-build-system) |
| 5458 | (propagated-inputs |
| 5459 | (list python-arrow python-jinja2)) |
| 5460 | (home-page |
| 5461 | "https://github.com/hackebrot/jinja2-time") |
| 5462 | (synopsis "Jinja2 Extension for Dates and Times") |
| 5463 | (description |
| 5464 | "This package provides an extension for the template engine Jinja2. It |
| 5465 | adds a 'now' tag providing a convenient access to the arrow.now() API from |
| 5466 | templates. A format string can be provided to control the output.") |
| 5467 | (license license:expat))) |
| 5468 | |
| 5469 | (define-public python-pysdl2 |
| 5470 | (package |
| 5471 | (name "python-pysdl2") |
| 5472 | (version "0.9.11") |
| 5473 | (source (origin |
| 5474 | (method url-fetch) |
| 5475 | (uri (pypi-uri "PySDL2" version)) |
| 5476 | (sha256 |
| 5477 | (base32 |
| 5478 | "19id1qswgcj4v4j5kn49shq1xxx3slhjpm0102w87mczsdbi1rck")))) |
| 5479 | (build-system python-build-system) |
| 5480 | (arguments |
| 5481 | (list #:tests? #f ;; Requires /dev/dri, OpenGL module, etc. |
| 5482 | #:phases |
| 5483 | #~(modify-phases %standard-phases |
| 5484 | (add-after 'unpack 'patch-paths |
| 5485 | (lambda* (#:key inputs #:allow-other-keys) |
| 5486 | (substitute* "sdl2/dll.py" |
| 5487 | ;; Disable pysdl2-dll. It can't be packaged on GNU Guix |
| 5488 | ;; as it duplicates an existing package (sdl2). |
| 5489 | (("prepath = os\\.getenv\\('PYSDL2_DLL_PATH'\\)") |
| 5490 | "prepath = \"system\"") |
| 5491 | (("^import sdl2dll$") "") |
| 5492 | (("postpath = os\\.getenv\\('PYSDL2_DLL_PATH'\\)") |
| 5493 | "postpath = \"system\"") |
| 5494 | (("DLL\\(.*, os\\.getenv\\(\"PYSDL2_DLL_PATH\"\\)\\)") |
| 5495 | (string-append |
| 5496 | "DLL(\"SDL2\", [\"SDL2\", \"SDL2-2.0\", \"SDL2-2.0.0\"], \"" |
| 5497 | (dirname (search-input-file inputs "/lib/libSDL2.so")) |
| 5498 | "\")"))) |
| 5499 | (substitute* "sdl2/sdlimage.py" |
| 5500 | (("os\\.getenv\\(\"PYSDL2_DLL_PATH\"\\)") |
| 5501 | (string-append |
| 5502 | "\"" |
| 5503 | (dirname (search-input-file inputs "/lib/libSDL2_image.so")) |
| 5504 | "\""))) |
| 5505 | (substitute* "sdl2/sdlgfx.py" |
| 5506 | (("os\\.getenv\\(\"PYSDL2_DLL_PATH\"\\)") |
| 5507 | (string-append |
| 5508 | "\"" |
| 5509 | (dirname (search-input-file inputs "/lib/libSDL2_gfx.so")) |
| 5510 | "\""))) |
| 5511 | (substitute* "sdl2/sdlmixer.py" |
| 5512 | (("os\\.getenv\\(\"PYSDL2_DLL_PATH\"\\)") |
| 5513 | (string-append |
| 5514 | "\"" |
| 5515 | (dirname (search-input-file inputs "/lib/libSDL2_mixer.so")) |
| 5516 | "\""))) |
| 5517 | (substitute* "sdl2/sdlttf.py" |
| 5518 | (("os\\.getenv\\(\"PYSDL2_DLL_PATH\"\\)") |
| 5519 | (string-append |
| 5520 | "\"" |
| 5521 | (dirname (search-input-file inputs "/lib/libSDL2_ttf.so")) |
| 5522 | "\"")))))))) |
| 5523 | (inputs |
| 5524 | (list sdl2 sdl2-image sdl2-gfx sdl2-mixer sdl2-ttf)) |
| 5525 | (home-page "https://github.com/py-sdl/py-sdl2") |
| 5526 | (synopsis "Python bindings around the SDL2 game development library") |
| 5527 | (description "PySDL2 is a pure Python wrapper around the @code{SDL2}, |
| 5528 | @code{SDL2_mixer}, @code{SDL2_image}, @code{SDL2_ttf}, and @code{SDL2_gfx} |
| 5529 | libraries. Instead of relying on C code, it uses the built-in ctypes module |
| 5530 | to interface with SDL2, and provides simple Python classes and wrappers for |
| 5531 | common SDL2 functionality.") |
| 5532 | (license license:cc0))) |
| 5533 | |
| 5534 | (define-public python-pystache |
| 5535 | (package |
| 5536 | (name "python-pystache") |
| 5537 | (version "0.6.0") |
| 5538 | (source (origin |
| 5539 | (method url-fetch) |
| 5540 | (uri (pypi-uri "pystache" version)) |
| 5541 | (sha256 |
| 5542 | (base32 |
| 5543 | "03a73ppf5vxnsk6az5ackvc0hp6xqv2f4hi1s5c4nk4s2jr95gwk")))) |
| 5544 | (build-system python-build-system) |
| 5545 | (arguments |
| 5546 | '(#:tests? #f)) ; FIXME: Python 3 tests are failing. |
| 5547 | (home-page "http://defunkt.io/pystache/") |
| 5548 | (synopsis "Python logic-less template engine") |
| 5549 | (description |
| 5550 | "Pystache is a Python implementation of the framework agnostic, |
| 5551 | logic-free templating system Mustache.") |
| 5552 | (license license:expat))) |
| 5553 | |
| 5554 | (define-public python-pystitcher |
| 5555 | (package |
| 5556 | (name "python-pystitcher") |
| 5557 | (version "1.0.4") |
| 5558 | (source |
| 5559 | (origin |
| 5560 | (method git-fetch) |
| 5561 | (uri |
| 5562 | (git-reference |
| 5563 | (url "https://github.com/captn3m0/pystitcher") |
| 5564 | (commit |
| 5565 | (string-append "v" version)))) |
| 5566 | (file-name |
| 5567 | (git-file-name name version)) |
| 5568 | (sha256 |
| 5569 | (base32 "03yrzqhcsjdj5zprrk3bh5bbyqfy3vfhxra9974vmkir3m121394")))) |
| 5570 | (build-system python-build-system) |
| 5571 | (inputs |
| 5572 | (list python-html5lib python-importlib-metadata python-markdown |
| 5573 | python-pypdf3 python-validators)) |
| 5574 | (home-page "https://github.com/captn3m0/pystitcher") |
| 5575 | (synopsis "Declaratively stitch together a PDF file from multiple sources") |
| 5576 | (description |
| 5577 | "This package stitches your PDF files together, generating customizable |
| 5578 | bookmarks using a declarative input in the form of a markdown file.") |
| 5579 | (license license:expat))) |
| 5580 | |
| 5581 | (define-public python-joblib |
| 5582 | (package |
| 5583 | (name "python-joblib") |
| 5584 | (version "1.1.1") |
| 5585 | (source (origin |
| 5586 | (method url-fetch) |
| 5587 | (uri (pypi-uri "joblib" version)) |
| 5588 | (sha256 |
| 5589 | (base32 |
| 5590 | "0019p280s2k941mihl67l7y6amwx86639xp3zvpsg1lmyish67rh")))) |
| 5591 | (build-system python-build-system) |
| 5592 | (arguments |
| 5593 | `(#:phases |
| 5594 | (modify-phases %standard-phases |
| 5595 | (replace 'check |
| 5596 | (lambda* (#:key tests? #:allow-other-keys) |
| 5597 | (when tests? |
| 5598 | (setenv "JOBLIB_MULTIPROCESSING" "0") |
| 5599 | (invoke "pytest" "-v" "joblib" |
| 5600 | ;; We disable this test to avoid having to depend on ipython/jupyter |
| 5601 | "-k" "not test_parallel_call_cached_function_defined_in_jupyter"))))))) |
| 5602 | (native-inputs |
| 5603 | (list python-pytest)) |
| 5604 | (home-page "https://joblib.readthedocs.io/") |
| 5605 | (synopsis "Using Python functions as pipeline jobs") |
| 5606 | (description |
| 5607 | "Joblib is a set of tools to provide lightweight pipelining in Python. |
| 5608 | In particular, joblib offers: transparent disk-caching of the output values |
| 5609 | and lazy re-evaluation (memoize pattern), easy simple parallel computing |
| 5610 | logging and tracing of the execution.") |
| 5611 | (license license:bsd-3))) |
| 5612 | |
| 5613 | |
| 5614 | (define-public python-daemon |
| 5615 | (package |
| 5616 | (name "python-daemon") |
| 5617 | (version "2.3.0") |
| 5618 | (source |
| 5619 | (origin |
| 5620 | (method url-fetch) |
| 5621 | (uri (pypi-uri "python-daemon" version)) |
| 5622 | (sha256 |
| 5623 | (base32 |
| 5624 | "1bxfn2bq56sd4w0nm9mqy8y0905m7fc8vmhnjxlrf49vcbqr7adx")))) |
| 5625 | (build-system python-build-system) |
| 5626 | (arguments |
| 5627 | `(#:phases |
| 5628 | (modify-phases %standard-phases |
| 5629 | (add-before 'check 'adjust-tests |
| 5630 | (lambda _ |
| 5631 | ;; Drop use of testtools.helpers.safe_hasattr which has |
| 5632 | ;; been removed in favor of hasattr. |
| 5633 | (substitute* "test/test_metadata.py" |
| 5634 | (("testtools\\.helpers\\.safe_hasattr") |
| 5635 | "hasattr")) |
| 5636 | ;; FIXME: Determine why test fails |
| 5637 | (substitute* "test/test_daemon.py" |
| 5638 | (("test_detaches_process_context") |
| 5639 | "skip_test_detaches_process_context"))))))) |
| 5640 | (propagated-inputs |
| 5641 | (list python-lockfile)) |
| 5642 | (native-inputs |
| 5643 | (list python-coverage |
| 5644 | python-testtools |
| 5645 | python-testscenarios |
| 5646 | python-twine |
| 5647 | python-mock |
| 5648 | python-docutils)) |
| 5649 | (home-page "https://pagure.io/python-daemon/") |
| 5650 | (synopsis "Python library for making a Unix daemon process") |
| 5651 | (description "Python-daemon is a library that assists a Python program to |
| 5652 | turn itself into a well-behaved Unix daemon process, as specified in PEP 3143. |
| 5653 | |
| 5654 | This library provides a @code{DaemonContext} class that manages the following |
| 5655 | important tasks for becoming a daemon process: |
| 5656 | @enumerate |
| 5657 | @item Detach the process into its own process group. |
| 5658 | @item Set process environment appropriate for running inside a chroot. |
| 5659 | @item Renounce suid and sgid privileges. |
| 5660 | @item Close all open file descriptors. |
| 5661 | @item Change the working directory, uid, gid, and umask. |
| 5662 | @item Set appropriate signal handlers. |
| 5663 | @item Open new file descriptors for stdin, stdout, and stderr. |
| 5664 | @item Manage a specified PID lock file. |
| 5665 | @item Register cleanup functions for at-exit processing. |
| 5666 | @end enumerate") |
| 5667 | ;; Only setup.py is gpl3+, everything else is apache 2.0 licensed. |
| 5668 | (license (list license:asl2.0 license:gpl3+)))) |
| 5669 | |
| 5670 | (define-public python-anytree |
| 5671 | (package |
| 5672 | (name "python-anytree") |
| 5673 | (version "2.8.0") |
| 5674 | (source (origin |
| 5675 | (method url-fetch) |
| 5676 | (uri (pypi-uri "anytree" version)) |
| 5677 | (sha256 |
| 5678 | (base32 |
| 5679 | "1aycpc387wqz7h9w2p53qxn43qsh3m6by6ak4kkc66x9aprr63rz")))) |
| 5680 | (build-system python-build-system) |
| 5681 | (propagated-inputs |
| 5682 | (list python-six)) |
| 5683 | (native-inputs |
| 5684 | (list ;; For tests. |
| 5685 | graphviz ;for 'dot' |
| 5686 | python-nose)) |
| 5687 | (home-page "https://github.com/c0fec0de/anytree") |
| 5688 | (synopsis "Lightweight tree data library") |
| 5689 | (description |
| 5690 | "@code{anytree} is a simple, lightweight, and extensible tree data |
| 5691 | structure for Python.") |
| 5692 | (license license:asl2.0))) |
| 5693 | |
| 5694 | (define-public autokey |
| 5695 | (package |
| 5696 | (name "autokey") |
| 5697 | (version "0.96.0") |
| 5698 | (source (origin |
| 5699 | (method git-fetch) |
| 5700 | (uri (git-reference |
| 5701 | (url "https://github.com/autokey/autokey") |
| 5702 | (commit (string-append "v" version)))) |
| 5703 | (file-name (git-file-name name version)) |
| 5704 | (sha256 |
| 5705 | (base32 |
| 5706 | "1v19196swihc12bcg0d9s07gfc3a44b9y7g6rqhb82qxm4p8jmbp")) |
| 5707 | (modules '((guix build utils))) |
| 5708 | (snippet |
| 5709 | #~(begin |
| 5710 | ;; XXX: skip test depending on .git/ |
| 5711 | (delete-file "tests/test_common.py"))))) |
| 5712 | (build-system pyproject-build-system) |
| 5713 | (arguments |
| 5714 | (list |
| 5715 | #:phases |
| 5716 | #~(modify-phases %standard-phases |
| 5717 | ;; Use 'prefix' instead of '=' to allow the user to use additional |
| 5718 | ;; GI paths from their autokey scripts. GUIX_PYTHONPATH is already |
| 5719 | ;; wrapped with prefix in python-build-system's wrap. |
| 5720 | (add-before 'wrap 'wrap-autokey |
| 5721 | (lambda* (#:key inputs #:allow-other-keys) |
| 5722 | (let ((gi-typelib-path (getenv "GI_TYPELIB_PATH")) |
| 5723 | (path (map dirname |
| 5724 | ;; see lib/autokey/UI_common_functions.py |
| 5725 | (list (search-input-file inputs "/bin/wmctrl") |
| 5726 | (search-input-file inputs "/bin/zenity") |
| 5727 | (search-input-file inputs "/bin/ipython3") |
| 5728 | (search-input-file inputs "/bin/python3"))))) |
| 5729 | (for-each |
| 5730 | (lambda (program) |
| 5731 | (wrap-program program |
| 5732 | `("PATH" ":" prefix ,path) |
| 5733 | `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path)))) |
| 5734 | (map (lambda (name) |
| 5735 | (string-append #$output "/bin/" name)) |
| 5736 | '("autokey-gtk" |
| 5737 | "autokey-shell")))))) |
| 5738 | (add-before 'check 'setup-env-vars |
| 5739 | (lambda _ |
| 5740 | ;; tests/test_macro.py wants LANG set |
| 5741 | (setenv "LANG" "") |
| 5742 | ;; required for tests/test_configmanager.py |
| 5743 | (setenv "HOME" "/tmp")))))) |
| 5744 | (native-inputs (list python-pytest python-pytest-cov python-pyhamcrest)) |
| 5745 | (inputs |
| 5746 | (list bash-minimal ; for wrap-program |
| 5747 | gtksourceview-3 |
| 5748 | libappindicator |
| 5749 | libnotify |
| 5750 | python-dbus |
| 5751 | python-ipython |
| 5752 | python-pygobject |
| 5753 | python-pyinotify |
| 5754 | python-pyqt+qscintilla |
| 5755 | python-xlib |
| 5756 | wmctrl |
| 5757 | zenity)) |
| 5758 | (home-page "https://github.com/autokey/autokey") |
| 5759 | (synopsis |
| 5760 | "Keyboard and GUI automation utility") |
| 5761 | (description |
| 5762 | "AutoKey is a desktop automation utility for X11. It allows the automation of |
| 5763 | virtually any task by responding to typed abbreviations and hotkeys. It |
| 5764 | offers a full-featured GUI (GTK and QT versions) that makes it highly |
| 5765 | accessible for novices, as well as a scripting interface offering the full |
| 5766 | flexibility and power of the Python language.") |
| 5767 | (license license:gpl3+))) |
| 5768 | |
| 5769 | (define-public python-dm-tree |
| 5770 | (package |
| 5771 | (name "python-dm-tree") |
| 5772 | (version "0.1.7") |
| 5773 | (source (origin |
| 5774 | (method url-fetch) |
| 5775 | (uri (pypi-uri "dm-tree" version)) |
| 5776 | (sha256 |
| 5777 | (base32 "0apxfxgmqh22qpk92zmmf3acqkavhwxz78lnwz026a5rlnncizih")))) |
| 5778 | (build-system python-build-system) |
| 5779 | (inputs (list pybind11 abseil-cpp python)) |
| 5780 | (propagated-inputs (list python-wheel |
| 5781 | python-absl-py |
| 5782 | python-attrs |
| 5783 | python-numpy |
| 5784 | python-wrapt)) |
| 5785 | (arguments |
| 5786 | (list #:tests? #f |
| 5787 | #:phases |
| 5788 | #~(modify-phases %standard-phases |
| 5789 | (add-before 'build 'build-shared-lib |
| 5790 | (lambda _ |
| 5791 | (let* ((pybind11 #$(this-package-input "pybind11")) |
| 5792 | (python #$(this-package-input "python")) |
| 5793 | (version (python-version python)) |
| 5794 | (abseil-cpp #$(this-package-input "abseil-cpp"))) |
| 5795 | ;; Delete default cmake build. |
| 5796 | (substitute* "setup.py" |
| 5797 | (("ext_modules.*") "") |
| 5798 | (("cmdclass.*") "")) |
| 5799 | ;; Actual build phase. |
| 5800 | (mkdir-p "build/temp/tree/") |
| 5801 | (invoke |
| 5802 | "gcc" "-pthread" "-Wno-unused-result" "-Wsign-compare" |
| 5803 | "-DNDEBUG" "-g" "-fwrapv" "-O3" "-Wall" |
| 5804 | "-fno-semantic-interposition" "-fPIC" |
| 5805 | "-I" (string-append pybind11 |
| 5806 | "/lib/python" version |
| 5807 | "/site-packages/pybind11/include") |
| 5808 | "-I" (string-append python "/include/python" |
| 5809 | version) |
| 5810 | "-I" (string-append abseil-cpp "/include") |
| 5811 | "-c" "tree/tree.cc" |
| 5812 | "-o" "build/temp/tree/tree.o" |
| 5813 | "-fvisibility=hidden" "-g0") |
| 5814 | (mkdir-p "build/lib/tree") |
| 5815 | (invoke |
| 5816 | "g++" "-pthread" "-shared" |
| 5817 | (string-append "-Wl," "-rpath=" python "/lib") |
| 5818 | "-fno-semantic-interposition" |
| 5819 | "build/temp/tree/tree.o" |
| 5820 | "-L" (string-append python "/lib") |
| 5821 | "-L" (string-append abseil-cpp "/lib") |
| 5822 | "-l" "absl_int128" |
| 5823 | "-l" "absl_raw_hash_set" |
| 5824 | "-l" "absl_raw_logging_internal" |
| 5825 | "-l" "absl_strings" |
| 5826 | "-l" "absl_throw_delegate" |
| 5827 | "-o" "build/lib/tree/_tree.so"))))))) |
| 5828 | (home-page "https://github.com/deepmind/tree") |
| 5829 | (synopsis "Work with nested data structures in Python") |
| 5830 | (description "Tree is a python library for working with nested data |
| 5831 | structures. In a way, @code{tree} generalizes the builtin @code{map} function |
| 5832 | which only supports flat sequences, and allows you to apply a function to each |
| 5833 | leaf preserving the overall structure.") |
| 5834 | (license license:asl2.0))) |
| 5835 | |
| 5836 | (define-public python-pyment |
| 5837 | (package |
| 5838 | (name "python-pyment") |
| 5839 | (version "0.3.4") |
| 5840 | (source |
| 5841 | (origin |
| 5842 | (method git-fetch) |
| 5843 | (uri |
| 5844 | (git-reference |
| 5845 | (url "https://github.com/dadadel/pyment") |
| 5846 | (commit (string-append "v" version)))) |
| 5847 | (file-name (git-file-name name version)) |
| 5848 | (sha256 |
| 5849 | (base32 "0gbx9wmqsxdx85v5sg79lv2zxmy16j5dwi8bip07i1nyvzc5gvn0")))) |
| 5850 | (build-system python-build-system) |
| 5851 | (native-inputs (list python-pytest)) |
| 5852 | (home-page "https://github.com/dadadel/pyment/") |
| 5853 | (synopsis "Convert Python docstrings automatically") |
| 5854 | (description "Pyment is a command line tool and library that can be |
| 5855 | used to convert between several docstring styles.") |
| 5856 | (license license:gpl3+))) |
| 5857 | |
| 5858 | (define-public python-docstring-parser |
| 5859 | (package |
| 5860 | (name "python-docstring-parser") |
| 5861 | (version "0.15") |
| 5862 | (source (origin |
| 5863 | (method url-fetch) |
| 5864 | (uri (pypi-uri "docstring_parser" version)) |
| 5865 | (sha256 |
| 5866 | (base32 |
| 5867 | "10pnbg2q0ic1h6pwbyhhqd075fv67sq07k3gjncmi1mix29w1pa8")))) |
| 5868 | (build-system pyproject-build-system) |
| 5869 | (native-inputs (list python-poetry-core python-pytest)) |
| 5870 | (home-page "https://github.com/rr-/docstring_parser") |
| 5871 | (synopsis "Parse Python docstrings in reST, Google and Numpydoc format") |
| 5872 | (description "This package lets you parse Python docstrings in reST, |
| 5873 | Google and Numpydoc format.") |
| 5874 | (license license:expat))) |
| 5875 | |
| 5876 | (define-public python-docutils |
| 5877 | (package |
| 5878 | (name "python-docutils") |
| 5879 | (version "0.19") |
| 5880 | (source (origin |
| 5881 | (method url-fetch) |
| 5882 | (uri (pypi-uri "docutils" version)) |
| 5883 | (sha256 |
| 5884 | (base32 |
| 5885 | "1rprvir116g5rz2bgzkzgyn6mv0z8582rz7bgxbpy2y3adkmm69k")))) |
| 5886 | (build-system python-build-system) |
| 5887 | (arguments |
| 5888 | '(#:phases (modify-phases %standard-phases |
| 5889 | (replace 'check |
| 5890 | (lambda* (#:key tests? #:allow-other-keys) |
| 5891 | (if tests? |
| 5892 | (invoke "python" "test/alltests.py") |
| 5893 | (format #t "test suite not run~%"))))))) |
| 5894 | (home-page "https://docutils.sourceforge.net/") |
| 5895 | (synopsis "Python Documentation Utilities") |
| 5896 | (description |
| 5897 | "Docutils is a modular system for processing documentation into useful |
| 5898 | formats, such as HTML, XML, and LaTeX. It uses @dfn{reStructuredText}, an |
| 5899 | easy to use markup language, for input. |
| 5900 | |
| 5901 | This package provides tools for converting @file{.rst} files to other formats |
| 5902 | via commands such as @command{rst2man}, as well as supporting Python code.") |
| 5903 | ;; Most of the source code is public domain, but some source files are |
| 5904 | ;; licensed under the PFSL, BSD 2-clause, and GPLv3+ licenses. |
| 5905 | (license (list license:public-domain license:psfl license:bsd-2 license:gpl3+)))) |
| 5906 | |
| 5907 | ;; awscli refuses to be built with docutils < 0.16. |
| 5908 | (define-public python-docutils-0.15 |
| 5909 | (package |
| 5910 | (inherit python-docutils) |
| 5911 | (version "0.15") |
| 5912 | (source (origin |
| 5913 | (method url-fetch) |
| 5914 | (uri (pypi-uri "docutils" version)) |
| 5915 | (sha256 |
| 5916 | (base32 |
| 5917 | "0ja8q6mdj6xv62jjw3phv8j5nfqi5x8hnfy4pqfcjcgz4b34k8sl")))) |
| 5918 | ;; tests contain Python 2 syntax. |
| 5919 | (arguments '(#:tests? #false)) |
| 5920 | (native-inputs |
| 5921 | (list python-setuptools-57)))) |
| 5922 | |
| 5923 | (define-public python-docx |
| 5924 | (package |
| 5925 | (name "python-docx") |
| 5926 | (version "0.8.11") |
| 5927 | (source (origin |
| 5928 | (method url-fetch) |
| 5929 | (uri (pypi-uri "python-docx" version)) |
| 5930 | (sha256 |
| 5931 | (base32 |
| 5932 | "1i7bxghb7knlyjain101qg1jmmz2b6qj03bi3vfxhvcml0rx418i")))) |
| 5933 | (build-system pyproject-build-system) |
| 5934 | (native-inputs |
| 5935 | (list behave |
| 5936 | python-flake8 |
| 5937 | python-mock |
| 5938 | python-pyparsing |
| 5939 | python-pytest)) |
| 5940 | (propagated-inputs |
| 5941 | (list python-lxml)) |
| 5942 | (home-page "https://github.com/python-openxml/python-docx/") |
| 5943 | (synopsis "Python library to create and modify Microsoft Word documents") |
| 5944 | (description "This Python library can be used to create and update |
| 5945 | Microsoft Word (.docx) documents.") |
| 5946 | (license license:expat))) |
| 5947 | |
| 5948 | (define-public python-restructuredtext-lint |
| 5949 | (package |
| 5950 | (name "python-restructuredtext-lint") |
| 5951 | (version "1.3.0") |
| 5952 | (source |
| 5953 | (origin |
| 5954 | (method url-fetch) |
| 5955 | (uri (pypi-uri "restructuredtext-lint" version)) |
| 5956 | (sha256 |
| 5957 | (base32 |
| 5958 | "026rdy5h82ng4vqxk8fnprii9d6qxf7hkygiv0a8afjvdlsxmcwp")))) |
| 5959 | (build-system python-build-system) |
| 5960 | (arguments |
| 5961 | `(#:phases |
| 5962 | (modify-phases %standard-phases |
| 5963 | (delete 'check) |
| 5964 | (add-after 'install 'check |
| 5965 | (lambda* (#:key inputs outputs tests? #:allow-other-keys) |
| 5966 | (when tests? |
| 5967 | (add-installed-pythonpath inputs outputs) |
| 5968 | (invoke "nosetests" "-v")) |
| 5969 | #t))))) |
| 5970 | (propagated-inputs |
| 5971 | (list python-docutils)) |
| 5972 | (native-inputs |
| 5973 | (list python-nose)) |
| 5974 | (home-page "https://github.com/twolfson/restructuredtext-lint") |
| 5975 | (synopsis "reStructuredText linter") |
| 5976 | (description "This package provides a linter for the reStructuredText |
| 5977 | format.") |
| 5978 | (license license:unlicense))) |
| 5979 | |
| 5980 | (define-public python-click-repl |
| 5981 | (package |
| 5982 | (name "python-click-repl") |
| 5983 | (version "0.2.0") |
| 5984 | (source |
| 5985 | (origin |
| 5986 | (method git-fetch) ; no tests in PyPI release |
| 5987 | (uri (git-reference |
| 5988 | (url "https://github.com/click-contrib/click-repl") |
| 5989 | (commit version))) |
| 5990 | (file-name (git-file-name name version)) |
| 5991 | (sha256 |
| 5992 | (base32 "16ybsnwlj2jlqcfxflky8jz7i3nhrd3f6mvkpgs95618l8lx994i")))) |
| 5993 | (build-system python-build-system) |
| 5994 | (arguments |
| 5995 | `(#:phases |
| 5996 | (modify-phases %standard-phases |
| 5997 | (replace 'check |
| 5998 | (lambda* (#:key inputs outputs tests? #:allow-other-keys) |
| 5999 | (when tests? |
| 6000 | (add-installed-pythonpath inputs outputs) |
| 6001 | (invoke "python" "-m" "pytest"))))))) |
| 6002 | (native-inputs |
| 6003 | (list python-pytest)) |
| 6004 | (propagated-inputs |
| 6005 | (list python-click python-prompt-toolkit python-six)) |
| 6006 | (home-page "https://github.com/untitaker/click-repl") |
| 6007 | (synopsis "REPL plugin for Click") |
| 6008 | (description "This package provides a REPL plugin for Click.") |
| 6009 | (license license:expat))) |
| 6010 | |
| 6011 | (define-public python-doc8 |
| 6012 | (package |
| 6013 | (name "python-doc8") |
| 6014 | (version "0.8.0") |
| 6015 | (source |
| 6016 | (origin |
| 6017 | (method url-fetch) |
| 6018 | (uri (pypi-uri "doc8" version)) |
| 6019 | (sha256 |
| 6020 | (base32 |
| 6021 | "0hw5w8mpgsp51qg8nnq28p7y1jiksvz7a0axnn5bkgss3af9zy1d")))) |
| 6022 | (build-system python-build-system) |
| 6023 | (arguments |
| 6024 | `(#:phases |
| 6025 | (modify-phases %standard-phases |
| 6026 | (delete 'check) |
| 6027 | (add-after 'install 'check |
| 6028 | (lambda* (#:key inputs outputs tests? #:allow-other-keys) |
| 6029 | (when tests? |
| 6030 | (add-installed-pythonpath inputs outputs) |
| 6031 | (invoke "pytest" "-v")) |
| 6032 | #t))))) |
| 6033 | (propagated-inputs |
| 6034 | (list python-chardet python-docutils python-restructuredtext-lint |
| 6035 | python-six python-stevedore)) |
| 6036 | (native-inputs |
| 6037 | (list python-testtools python-pytest)) |
| 6038 | (home-page "https://launchpad.net/doc8") |
| 6039 | (synopsis |
| 6040 | "Style checker for Sphinx (or other) RST documentation") |
| 6041 | (description |
| 6042 | "Doc8 is an opinionated style checker for reStructured Text and plain |
| 6043 | text styles of documentation.") |
| 6044 | (license license:asl2.0))) |
| 6045 | |
| 6046 | (define-public python-pygments |
| 6047 | (package |
| 6048 | (name "python-pygments") |
| 6049 | (version "2.12.0") |
| 6050 | (source |
| 6051 | (origin |
| 6052 | (method url-fetch) |
| 6053 | (uri (pypi-uri "Pygments" version)) |
| 6054 | (sha256 |
| 6055 | (base32 |
| 6056 | "1sr6iqh21xi6p8aba4wa9pqfhjbbpcvn9jcsx0ggy4lniw8idcay")))) |
| 6057 | (build-system python-build-system) |
| 6058 | (arguments |
| 6059 | ;; FIXME: Tests require sphinx, which depends on this. |
| 6060 | '(#:tests? #f)) |
| 6061 | (home-page "https://pygments.org/") |
| 6062 | (synopsis "Syntax highlighting") |
| 6063 | (description |
| 6064 | "Pygments is a syntax highlighting package written in Python.") |
| 6065 | (license license:bsd-2))) |
| 6066 | |
| 6067 | (define-public python-pygments-github-lexers |
| 6068 | (package |
| 6069 | (name "python-pygments-github-lexers") |
| 6070 | (version "0.0.5") |
| 6071 | (source |
| 6072 | (origin |
| 6073 | (method url-fetch) |
| 6074 | (uri (pypi-uri "pygments-github-lexers" version)) |
| 6075 | (sha256 |
| 6076 | (base32 |
| 6077 | "0cz14clcc9z4pn79ll8hp3xzgsrfjscak5zfsvlgrz6ngkkmgjma")))) |
| 6078 | (build-system python-build-system) |
| 6079 | (propagated-inputs |
| 6080 | (list python-pygments)) |
| 6081 | (home-page "https://github.com/liluo/pygments-github-lexers") |
| 6082 | (synopsis "Pygments Github custom lexers") |
| 6083 | (description "This package installs Github custom lexers to Pygments.") |
| 6084 | (license license:bsd-3))) |
| 6085 | |
| 6086 | (define-public python-pygtrie |
| 6087 | (package |
| 6088 | (name "python-pygtrie") |
| 6089 | (version "2.5.0") |
| 6090 | (source (origin |
| 6091 | (method url-fetch) |
| 6092 | (uri (pypi-uri "pygtrie" version)) |
| 6093 | (sha256 |
| 6094 | (base32 |
| 6095 | "1qm4xdmzd4q5pc9h5gjdpr5m7lg06k8dvqnjn7d07d3fhani8d90")))) |
| 6096 | (build-system pyproject-build-system) |
| 6097 | (home-page "https://github.com/mina86/pygtrie") |
| 6098 | (synopsis "Pure Python trie data structure implementation") |
| 6099 | (description |
| 6100 | "This package provides a pure Python trie data structure implementation.") |
| 6101 | (license license:asl2.0))) |
| 6102 | |
| 6103 | (define-public python-bump2version |
| 6104 | (package |
| 6105 | (name "python-bump2version") |
| 6106 | (version "1.0.1") |
| 6107 | (source |
| 6108 | (origin |
| 6109 | (method url-fetch) |
| 6110 | (uri (pypi-uri "bump2version" version)) |
| 6111 | (sha256 |
| 6112 | (base32 "1rinm4gv1fyh7xjv3v6r1p3zh5kl4ry2qifz5f7frx31mnzv4b3n")))) |
| 6113 | (build-system python-build-system) |
| 6114 | (arguments |
| 6115 | ;; XXX: Tests fail with "bumpversion: error: the following arguments are |
| 6116 | ;; required: --new-version". |
| 6117 | `(#:tests? #false)) |
| 6118 | (home-page "https://github.com/c4urself/bump2version") |
| 6119 | (synopsis "Version-bump your software with a single command!") |
| 6120 | (description |
| 6121 | "This package provides a small command line tool to simplify releasing |
| 6122 | software by updating all version strings in your source code by the correct |
| 6123 | increment. It also creates commits and tags.") |
| 6124 | (license license:expat))) |
| 6125 | |
| 6126 | (define-public python-bumpversion |
| 6127 | (package |
| 6128 | (name "python-bumpversion") |
| 6129 | (version "0.5.3") |
| 6130 | (source |
| 6131 | (origin |
| 6132 | (method url-fetch) |
| 6133 | (uri (pypi-uri "bumpversion" version)) |
| 6134 | (sha256 |
| 6135 | (base32 |
| 6136 | "0zn7694yfipxg35ikkfh7kvgl2fissha3dnqad2c5bvsvmrwhi37")))) |
| 6137 | (build-system python-build-system) |
| 6138 | (home-page "https://github.com/peritus/bumpversion") |
| 6139 | (synopsis "Tool to bump software version") |
| 6140 | (description "This tool provides a command-line interface (CLI) to bump a |
| 6141 | software version simply.") |
| 6142 | (license license:expat))) |
| 6143 | |
| 6144 | (define-public python-deprecated |
| 6145 | (package |
| 6146 | (name "python-deprecated") |
| 6147 | (version "1.2.13") |
| 6148 | (source |
| 6149 | (origin |
| 6150 | (method git-fetch) |
| 6151 | (uri (git-reference |
| 6152 | (url "https://github.com/tantale/deprecated") |
| 6153 | (commit (string-append "v" version)))) |
| 6154 | (file-name (git-file-name name version)) |
| 6155 | (sha256 |
| 6156 | (base32 |
| 6157 | "0v4ys9xr8lski2r98da99spsj6hjlnnqgnhhmyhrm66myiix885c")))) |
| 6158 | (build-system python-build-system) |
| 6159 | (arguments |
| 6160 | `(#:phases (modify-phases %standard-phases |
| 6161 | (replace 'check |
| 6162 | (lambda* (#:key tests? #:allow-other-keys) |
| 6163 | (when tests? |
| 6164 | (invoke "pytest"))))))) |
| 6165 | (propagated-inputs |
| 6166 | (list python-wrapt)) |
| 6167 | (native-inputs |
| 6168 | (list python-bumpversion python-pytest python-pytest-cov |
| 6169 | python-sphinx python-tox)) |
| 6170 | (home-page "https://github.com/tantale/deprecated") |
| 6171 | (synopsis "Python decorator to deprecate classes, functions or methods") |
| 6172 | (description "The @code{deprecated} decorator provides a convenient way to deprecate |
| 6173 | to deprecate classes, functions or methods.") |
| 6174 | (license license:expat))) |
| 6175 | |
| 6176 | (define-public python-pygithub |
| 6177 | (package |
| 6178 | (name "python-pygithub") |
| 6179 | (version "1.55") |
| 6180 | (source |
| 6181 | ;; We fetch from the Git repo because there are no tests in the PyPI |
| 6182 | ;; archive. |
| 6183 | (origin |
| 6184 | (method git-fetch) |
| 6185 | (uri (git-reference |
| 6186 | (url "https://github.com/PyGithub/PyGithub") |
| 6187 | (commit (string-append "v" version)))) |
| 6188 | (file-name (git-file-name name version)) |
| 6189 | (sha256 |
| 6190 | (base32 "082bxffpy4h97dsay3l75cpgfjj10kywkvicnm6xscwvah285q9y")))) |
| 6191 | (build-system python-build-system) |
| 6192 | (arguments |
| 6193 | `(#:phases |
| 6194 | (modify-phases %standard-phases |
| 6195 | (replace 'check |
| 6196 | (lambda* (#:key tests? #:allow-other-keys) |
| 6197 | (when tests? |
| 6198 | (invoke "pytest")) |
| 6199 | #t))))) |
| 6200 | (propagated-inputs |
| 6201 | (list python-cryptography python-deprecated python-pyjwt |
| 6202 | python-pynacl python-requests)) |
| 6203 | (native-inputs |
| 6204 | (list python-httpretty python-pytest)) |
| 6205 | (home-page "https://pygithub.readthedocs.io/en/latest/") |
| 6206 | (synopsis "Python library for the GitHub API") |
| 6207 | (description "This library allows managing GitHub resources such as |
| 6208 | repositories, user profiles, and organizations in your Python applications, |
| 6209 | using version 3 of the GitHub application programming interface (API).") |
| 6210 | (license license:lgpl3+))) |
| 6211 | |
| 6212 | (define-public python-rellu |
| 6213 | (package |
| 6214 | (name "python-rellu") |
| 6215 | (version "0.7") |
| 6216 | (source |
| 6217 | (origin |
| 6218 | (method url-fetch) |
| 6219 | (uri (pypi-uri "rellu" version)) |
| 6220 | (sha256 |
| 6221 | (base32 |
| 6222 | "1w0arpj1sm7vh29nrbnca4pnp8sx42l07r17inwqcjjf9bhng66x")))) |
| 6223 | (build-system python-build-system) |
| 6224 | (propagated-inputs |
| 6225 | (list python-invoke python-pygithub)) |
| 6226 | (home-page "https://github.com/robotframework/rellu") |
| 6227 | (synopsis "Utilities to create PyPI releases") |
| 6228 | (description "This collection of utilities contains tooling and templates |
| 6229 | to assist in creating releases on GitHub and publishing them on PyPI. It is |
| 6230 | designed to be used by Robot Framework and tools and libraries in its |
| 6231 | ecosystem, but can naturally be used also by other projects.") |
| 6232 | (license license:asl2.0))) |
| 6233 | |
| 6234 | (define-public python-robotframework |
| 6235 | (package |
| 6236 | (name "python-robotframework") |
| 6237 | (version "5.0.1") |
| 6238 | ;; There are no tests in the PyPI archive. |
| 6239 | (source |
| 6240 | (origin |
| 6241 | (method git-fetch) |
| 6242 | (uri (git-reference |
| 6243 | (url "https://github.com/robotframework/robotframework") |
| 6244 | (commit (string-append "v" version)))) |
| 6245 | (file-name (git-file-name name version)) |
| 6246 | (sha256 |
| 6247 | (base32 "0jjr71npzrm5mv16pya3m2dqaqgf6sc45yca5kfmc5lfislig5b8")) |
| 6248 | (patches (search-patches |
| 6249 | "python-robotframework-atest.patch" |
| 6250 | "python-robotframework-source-date-epoch.patch")))) |
| 6251 | (build-system python-build-system) |
| 6252 | (arguments |
| 6253 | (list |
| 6254 | #:modules '((guix build python-build-system) |
| 6255 | (guix build utils) |
| 6256 | (ice-9 ftw) |
| 6257 | (ice-9 match) |
| 6258 | (srfi srfi-26)) |
| 6259 | #:phases |
| 6260 | #~(modify-phases %standard-phases |
| 6261 | (add-after 'unpack 'delete-problematic-tests |
| 6262 | (lambda _ |
| 6263 | ;; Tests such as 'Tilde and username in path' rely on HOME and |
| 6264 | ;; USER being set, on top of the user's /etc/passwd home |
| 6265 | ;; directory not being '/', as is the case in the Guix build |
| 6266 | ;; container. |
| 6267 | (delete-file "atest/robot/standard_libraries/\ |
| 6268 | operating_system/path_expansion.robot"))) |
| 6269 | (add-before 'build 'build-and-install-doc |
| 6270 | (lambda* (#:key outputs #:allow-other-keys) |
| 6271 | (let ((doc (string-append (assoc-ref outputs "doc") |
| 6272 | "/share/doc/robotframework"))) |
| 6273 | (invoke "invoke" "library-docs" "all") |
| 6274 | (invoke "doc/userguide/ug2html.py" "dist") ;user guide |
| 6275 | (mkdir-p doc) |
| 6276 | (with-directory-excursion "dist" |
| 6277 | (define user-guide-dir |
| 6278 | (match (scandir "." (cut string-prefix? |
| 6279 | "robotframework-userguide-" <>)) |
| 6280 | ((dir) dir) |
| 6281 | (_ (error "could not find the user guide directory")))) |
| 6282 | (copy-recursively user-guide-dir doc))))) |
| 6283 | (replace 'check |
| 6284 | (lambda* (#:key native-inputs inputs tests? |
| 6285 | #:allow-other-keys) |
| 6286 | (when tests? |
| 6287 | ;; Some tests require timezone data. Otherwise, they |
| 6288 | ;; look up /etc/localtime, which doesn't exist, and |
| 6289 | ;; fail with: |
| 6290 | ;; |
| 6291 | ;; OverflowError: mktime argument out of range |
| 6292 | (setenv "TZDIR" |
| 6293 | (search-input-directory |
| 6294 | (or native-inputs inputs) "share/zoneinfo")) |
| 6295 | (setenv "TZ" "Europe/Paris") |
| 6296 | |
| 6297 | (format #t "Running unit tests...~%") |
| 6298 | (invoke "utest/run.py") |
| 6299 | |
| 6300 | (format #t "Running acceptance tests...~%") |
| 6301 | (invoke "xvfb-run" "atest/run.py"))))))) |
| 6302 | (native-inputs |
| 6303 | (list python-docutils |
| 6304 | python-jsonschema |
| 6305 | python-invoke |
| 6306 | python-lxml |
| 6307 | python-pygments |
| 6308 | python-pyyaml |
| 6309 | python-rellu |
| 6310 | `(,python "tk") ;used when building the HTML doc |
| 6311 | python-xmlschema |
| 6312 | scrot ;for taking screenshots |
| 6313 | tzdata-for-tests |
| 6314 | xvfb-run)) |
| 6315 | (outputs '("out" "doc")) |
| 6316 | (home-page "https://robotframework.org") |
| 6317 | (synopsis "Generic automation framework") |
| 6318 | (description "Robot Framework is a generic automation framework for |
| 6319 | acceptance testing, acceptance test driven development (ATDD), and robotic |
| 6320 | process automation (RPA).") |
| 6321 | (license license:asl2.0))) |
| 6322 | |
| 6323 | (define-public python-robotframework-datadriver |
| 6324 | (package |
| 6325 | (name "python-robotframework-datadriver") |
| 6326 | (version "1.6.1") |
| 6327 | (source |
| 6328 | (origin |
| 6329 | (method url-fetch) |
| 6330 | (uri (pypi-uri "robotframework-datadriver" version)) |
| 6331 | (sha256 |
| 6332 | (base32 "0mcyr3v98nvfnvffy096qp3jqslas7l8hh0j00lpi0mp12cd0qk9")))) |
| 6333 | (build-system python-build-system) |
| 6334 | (arguments |
| 6335 | `(#:phases |
| 6336 | (modify-phases %standard-phases |
| 6337 | (add-before 'check 'skip-problematic-tests |
| 6338 | (lambda _ |
| 6339 | ;; The test file 'tab-csv-file-name.tsv' contains special |
| 6340 | ;; characters for which there is no locale in the build |
| 6341 | ;; environment, causing one test to fail. |
| 6342 | (delete-file-recursively "atest/TestCases/csv_reader_config"))) |
| 6343 | (replace 'check |
| 6344 | (lambda* (#:key tests? #:allow-other-keys) |
| 6345 | (when tests? |
| 6346 | (with-directory-excursion "atest" |
| 6347 | (invoke "sh" "run_atest.sh")))))))) |
| 6348 | (native-inputs (list python-docutils |
| 6349 | python-robotframework-stacktrace)) |
| 6350 | (propagated-inputs (list python-openpyxl |
| 6351 | python-pandas |
| 6352 | python-pygments |
| 6353 | python-robotframework)) |
| 6354 | (home-page "https://github.com/Snooz82/robotframework-datadriver") |
| 6355 | (synopsis "Data-driven test extension for Robot Framework") |
| 6356 | (description "DataDriver is a data-driven extension for Robot Framework. |
| 6357 | DataDriver uses the Listener Interface of Robot Framework to create new test |
| 6358 | cases based on a data file that contains the test data. DataDriver supports |
| 6359 | data files in the CSV, XLS or XLSX formats.") |
| 6360 | (license license:asl2.0))) |
| 6361 | |
| 6362 | (define-public python-robotframework-lint |
| 6363 | ;; There is no properly tagged release; the commit below seems to correspond |
| 6364 | ;; to the 0.9 stable release available from PyPI. The tests are not |
| 6365 | ;; included in the PyPI archive, so we fetch the sources from the upstream |
| 6366 | ;; Git repo. |
| 6367 | (let ((commit "b0619ac58a8b1be125f9c98856a664594614570f") |
| 6368 | (revision "0")) |
| 6369 | (package |
| 6370 | (name "python-robotframework-lint") |
| 6371 | (version (git-version "1.1" ;version taken from 'rflint/version.py' |
| 6372 | revision commit)) |
| 6373 | (source |
| 6374 | (origin |
| 6375 | (method git-fetch) |
| 6376 | (uri (git-reference |
| 6377 | (url "https://github.com/boakley/robotframework-lint") |
| 6378 | (commit commit))) |
| 6379 | (file-name (git-file-name name version)) |
| 6380 | (sha256 |
| 6381 | (base32 |
| 6382 | "180npmvzqync25b2scs878gv8q4y17dsinxyjcc10bw22msfap6b")))) |
| 6383 | (build-system python-build-system) |
| 6384 | (arguments |
| 6385 | `(#:phases |
| 6386 | (modify-phases %standard-phases |
| 6387 | (replace 'check |
| 6388 | (lambda _ |
| 6389 | (invoke "python" "-m" "robot" "-A" |
| 6390 | "tests/conf/default.args" "tests")))))) |
| 6391 | (propagated-inputs |
| 6392 | (list python-robotframework)) |
| 6393 | (home-page "https://github.com/boakley/robotframework-lint/") |
| 6394 | (synopsis "Static analysis tool (linter) for Robot Framework") |
| 6395 | (description "This package provides the @code{rflint} command-line |
| 6396 | utility, a static analysis tool (linter) for Robot Framework source files.") |
| 6397 | (license license:asl2.0)))) |
| 6398 | |
| 6399 | (define-public python-robotframework-pabot |
| 6400 | (package |
| 6401 | (name "python-robotframework-pabot") |
| 6402 | (version "2.7.0") |
| 6403 | (source |
| 6404 | (origin |
| 6405 | ;; There are no tests in the PyPI archive. |
| 6406 | (method git-fetch) |
| 6407 | (uri (git-reference |
| 6408 | (url "https://github.com/mkorpela/pabot") |
| 6409 | (commit version))) |
| 6410 | (file-name (git-file-name name version)) |
| 6411 | (sha256 |
| 6412 | (base32 |
| 6413 | "0246vvyaxax0nzlrffvp9vg6mh5jmvbbm87azignf0gakjidr7nn")))) |
| 6414 | (build-system python-build-system) |
| 6415 | (arguments |
| 6416 | (list |
| 6417 | #:phases #~(modify-phases %standard-phases |
| 6418 | (replace 'check |
| 6419 | (lambda* (#:key tests? #:allow-other-keys) |
| 6420 | (when tests? |
| 6421 | (invoke "pytest" "-vv" "tests"))))))) |
| 6422 | (propagated-inputs |
| 6423 | (list python-robotframework python-robotframework-stacktrace)) |
| 6424 | (native-inputs |
| 6425 | (list python-pytest)) |
| 6426 | (home-page "https://pabot.org") |
| 6427 | (synopsis "Parallel test runner for Robot Framework") |
| 6428 | (description "Pabot is a parallel executor for Robot Framework tests.") |
| 6429 | (license license:asl2.0))) |
| 6430 | |
| 6431 | (define-public python-sshtunnel |
| 6432 | (package |
| 6433 | (name "python-sshtunnel") |
| 6434 | (version "0.4.0") |
| 6435 | (source (origin |
| 6436 | (method url-fetch) |
| 6437 | (uri (pypi-uri "sshtunnel" version)) |
| 6438 | (sha256 |
| 6439 | (base32 |
| 6440 | "1z7rdgpp9m36ysh9pfzrn3vyiaj05bkjvcjdhj8vz0fvfjkhxjz7")))) |
| 6441 | (build-system python-build-system) |
| 6442 | (arguments |
| 6443 | `(#:phases |
| 6444 | (modify-phases %standard-phases |
| 6445 | (replace 'check |
| 6446 | (lambda* (#:key tests? #:allow-other-keys) |
| 6447 | (when tests? (invoke "pytest" "-vv" "tests"))))))) |
| 6448 | (propagated-inputs (list python-paramiko)) |
| 6449 | (native-inputs (list openssh python-pytest python-mock)) |
| 6450 | (home-page "https://github.com/pahaz/sshtunnel") |
| 6451 | (synopsis "Python SSH tunnels library") |
| 6452 | (description "@code{sshtunnel} is a Python module for easily creating SSH |
| 6453 | tunnels in the background, using Python.") |
| 6454 | (license license:expat))) |
| 6455 | |
| 6456 | (define-public python-robotframework-sshtunnellibrary |
| 6457 | (package |
| 6458 | (name "python-robotframework-sshtunnellibrary") |
| 6459 | (version "1.0.0") |
| 6460 | (source (origin |
| 6461 | (method git-fetch) |
| 6462 | (uri (git-reference |
| 6463 | (url "https://github.com/C-Squad/robotframework-sshtunnellibrary") |
| 6464 | (commit (string-append "v" version)))) |
| 6465 | (file-name (git-file-name name version)) |
| 6466 | (sha256 |
| 6467 | (base32 |
| 6468 | "1vkkmkb8iql13xpbyj4hvnnmfgzqlr8rffgryp2082cadb3w7xrd")))) |
| 6469 | (build-system python-build-system) |
| 6470 | (arguments |
| 6471 | (list #:phases #~(modify-phases %standard-phases |
| 6472 | (replace 'check |
| 6473 | (lambda* (#:key tests? #:allow-other-keys) |
| 6474 | (when tests? |
| 6475 | (invoke "python" "-m" "unittest" |
| 6476 | "discover" "-s" "test"))))))) |
| 6477 | (propagated-inputs (list python-robotframework python-sshtunnel)) |
| 6478 | (home-page "https://github.com/C-Squad/robotframework-sshtunnellibrary") |
| 6479 | (synopsis "Alternative RobotFramework library for SSH tunnels") |
| 6480 | (description "SSHTunnelLibrary is an alternative RobotFramework |
| 6481 | library (to the more official one that comes from the |
| 6482 | @code{robotframework-sshlibrary} package) to support SSH tunnels.") |
| 6483 | (license license:asl2.0))) |
| 6484 | |
| 6485 | (define-public python-robotframework-stacktrace |
| 6486 | (package |
| 6487 | (name "python-robotframework-stacktrace") |
| 6488 | (version "0.4.1") |
| 6489 | (source |
| 6490 | (origin |
| 6491 | (method url-fetch) |
| 6492 | (uri (pypi-uri "robotframework-stacktrace" version)) |
| 6493 | (sha256 |
| 6494 | (base32 "19gnwr7da1zz9clhwsmvqfjf02d195i61lzpq4253dcsgrpb6v79")))) |
| 6495 | (build-system python-build-system) |
| 6496 | (arguments |
| 6497 | ;; The test suite fails (see: |
| 6498 | ;; https://github.com/MarketSquare/robotframework-stacktrace/issues/4). |
| 6499 | `(#:tests? #f |
| 6500 | #:phases |
| 6501 | (modify-phases %standard-phases |
| 6502 | (replace 'check |
| 6503 | (lambda* (#:key tests? #:allow-other-keys) |
| 6504 | (when tests? |
| 6505 | (with-directory-excursion "tests" |
| 6506 | (invoke "python" "-m" "robot" ".")))))))) |
| 6507 | (propagated-inputs (list python-robotframework)) |
| 6508 | (home-page "https://github.com/MarketSquare/robotframework-stacktrace") |
| 6509 | (synopsis "Robot Framework listener to print a stack trace on error") |
| 6510 | (description "StackTrace is a Robot Framework listener that prints a stack |
| 6511 | trace directly to the terminal to ease debugging.") |
| 6512 | (license license:asl2.0))) |
| 6513 | |
| 6514 | (define-public python-robotframework-sshlibrary |
| 6515 | (package |
| 6516 | (name "python-robotframework-sshlibrary") |
| 6517 | (version "3.8.0") |
| 6518 | ;; There are no tests in the PyPI archive. |
| 6519 | (source |
| 6520 | (origin |
| 6521 | (method git-fetch) |
| 6522 | (uri (git-reference |
| 6523 | (url "https://github.com/robotframework/SSHLibrary") |
| 6524 | (commit (string-append "v" version)))) |
| 6525 | (file-name (git-file-name name version)) |
| 6526 | (sha256 |
| 6527 | (base32 |
| 6528 | "1fn72hw7xacjjpl4dd6wynh2x63i9rk8iqhj3v640db21qpcnbkw")) |
| 6529 | (patches (search-patches |
| 6530 | "python-robotframework-sshlibrary-rf5-compat.patch")))) |
| 6531 | (build-system python-build-system) |
| 6532 | (arguments |
| 6533 | `(#:phases |
| 6534 | (modify-phases %standard-phases |
| 6535 | (add-before 'build 'build-and-install-doc |
| 6536 | (lambda* (#:key outputs #:allow-other-keys) |
| 6537 | (let ((doc (string-append |
| 6538 | (assoc-ref outputs "doc") |
| 6539 | "/share/doc/robotframework-sshlibrary"))) |
| 6540 | (invoke "chmod" "-R" "+w" "docs") |
| 6541 | (invoke "invoke" "kw-docs" "project-docs") |
| 6542 | (mkdir-p doc) |
| 6543 | (for-each delete-file (find-files "docs" "\\.rst")) |
| 6544 | (copy-recursively "docs" doc)))) |
| 6545 | (replace 'check |
| 6546 | (lambda* (#:key tests? #:allow-other-keys) |
| 6547 | (when tests? |
| 6548 | ;; Some tests require an SSH server; we remove them. |
| 6549 | (delete-file "utest/test_client_api.py") |
| 6550 | (delete-file "utest/test_scp.py") |
| 6551 | (invoke "python" "utest/run.py"))))))) |
| 6552 | (propagated-inputs |
| 6553 | (list python-robotframework python-paramiko python-scp)) |
| 6554 | (native-inputs |
| 6555 | (list openssh |
| 6556 | which |
| 6557 | ;; To generate the documentation |
| 6558 | python-docutils |
| 6559 | python-invoke |
| 6560 | python-pygments |
| 6561 | python-rellu)) |
| 6562 | (outputs '("out" "doc")) |
| 6563 | (home-page "https://github.com/robotframework/SSHLibrary") |
| 6564 | (synopsis "Robot Framework library for SSH and SFTP") |
| 6565 | (description "SSHLibrary is a Robot Framework library providing support |
| 6566 | for SSH and SFTP. It has the following main usages: |
| 6567 | @itemize @bullet |
| 6568 | @item Executing commands on the remote machine, either blocking or non-blocking. |
| 6569 | @item Writing and reading in an interactive shell. |
| 6570 | @item Transferring files and directories over SFTP. |
| 6571 | @item Ensuring that files and directories exist on the remote machine. |
| 6572 | @end itemize") |
| 6573 | (license license:asl2.0))) |
| 6574 | |
| 6575 | (define-public python-robotframework-pythonlibcore |
| 6576 | (package |
| 6577 | (name "python-robotframework-pythonlibcore") |
| 6578 | (version "3.0.0") |
| 6579 | (source |
| 6580 | (origin |
| 6581 | (method git-fetch) ;no tests in pypi archive |
| 6582 | (uri (git-reference |
| 6583 | (url "https://github.com/robotframework/PythonLibCore") |
| 6584 | (commit (string-append "v" version)))) |
| 6585 | (file-name (git-file-name name version)) |
| 6586 | (sha256 |
| 6587 | (base32 |
| 6588 | "0v89v8va65l6inh0fb34qgxawx6p29pnrmw4n5941yzdi3804rc4")))) |
| 6589 | (build-system python-build-system) |
| 6590 | (arguments |
| 6591 | `(#:phases (modify-phases %standard-phases |
| 6592 | (replace 'check |
| 6593 | (lambda* (#:key tests? #:allow-other-keys) |
| 6594 | (when tests? |
| 6595 | (invoke "utest/run.py"))))))) |
| 6596 | (native-inputs |
| 6597 | (list python-pytest python-pytest-cov python-pytest-mockito |
| 6598 | python-robotframework)) |
| 6599 | (home-page "https://github.com/robotframework/PythonLibCore") |
| 6600 | (synopsis "Robot Framework Python library tools") |
| 6601 | (description "PythonLibCore provides tools for creating larger test |
| 6602 | libraries for Robot Framework using Python. The Robot Framework hybrid and |
| 6603 | dynamic library APIs give more flexibility for library than the static library |
| 6604 | API, but they also set requirements for libraries which need to be implemented |
| 6605 | in the library side. PythonLibCore eases the problem by providing a simpler |
| 6606 | interface and by handling all the requirements towards the Robot Framework |
| 6607 | library APIs.") |
| 6608 | (license license:asl2.0))) |
| 6609 | |
| 6610 | (define-public python-robotframework-seleniumlibrary |
| 6611 | (package |
| 6612 | (name "python-robotframework-seleniumlibrary") |
| 6613 | (version "5.1.3") |
| 6614 | (source |
| 6615 | (origin |
| 6616 | (method url-fetch) |
| 6617 | (uri (pypi-uri "robotframework-seleniumlibrary" version)) |
| 6618 | (sha256 |
| 6619 | (base32 "1dihrbcid9i7daw2qy6h3xsvwaxzmyip820jw5z11n60qrl006pm")))) |
| 6620 | (build-system python-build-system) |
| 6621 | ;; XXX: Tests require ungoogled-chromium, but the chromium module would |
| 6622 | ;; introduce a cycle if imported here. |
| 6623 | (propagated-inputs |
| 6624 | (list python-robotframework python-robotframework-pythonlibcore |
| 6625 | python-selenium)) |
| 6626 | (home-page "https://github.com/robotframework/SeleniumLibrary") |
| 6627 | (synopsis "Web testing library for Robot Framework") |
| 6628 | (description "SeleniumLibrary is a web testing library for Robot Framework |
| 6629 | that utilizes the Selenium tool internally.") |
| 6630 | (license license:asl2.0))) |
| 6631 | |
| 6632 | (define-public python-robotframework-seleniumscreenshots |
| 6633 | (package |
| 6634 | (name "python-robotframework-seleniumscreenshots") |
| 6635 | (version "0.9.5") |
| 6636 | (source |
| 6637 | (origin |
| 6638 | (method url-fetch) |
| 6639 | (uri (pypi-uri "robotframework-seleniumscreenshots" version)) |
| 6640 | (sha256 |
| 6641 | (base32 "05qv323hvjmy62h33ryrjaa9k1hyvp8hq5qnj8j1x3ap2ci3q3s0")))) |
| 6642 | (build-system python-build-system) |
| 6643 | (arguments |
| 6644 | ;; XXX: The tests require a relatively complicated setup configured in |
| 6645 | ;; their CI with Nix (!). |
| 6646 | `(#:tests? #f)) |
| 6647 | (propagated-inputs |
| 6648 | (list python-robotframework python-robotframework-seleniumlibrary)) |
| 6649 | (home-page "https://github.com/MarketSquare/robotframework-seleniumscreenshots") |
| 6650 | (synopsis "Robot Framework library for annotating and cropping screenshots") |
| 6651 | (description "The SeleniumScreenshots library for Robot Framework provides |
| 6652 | keywords for annotating and cropping screenshots taken with SeleniumLibrary. |
| 6653 | It is useful for scripting automatically updated screenshots for documentation |
| 6654 | or for visual regression testing purposes.") |
| 6655 | (license license:bsd-3))) |
| 6656 | |
| 6657 | (define-public python-rstr |
| 6658 | (package |
| 6659 | (name "python-rstr") |
| 6660 | (version "2.2.6") |
| 6661 | (source |
| 6662 | (origin |
| 6663 | (method url-fetch) |
| 6664 | (uri (pypi-uri "rstr" version)) |
| 6665 | (sha256 |
| 6666 | (base32 |
| 6667 | "197dw8mbq0pjjz1l6h1ksi62vgn7x55d373ch74y06744qiq5sjx")))) |
| 6668 | (build-system python-build-system) |
| 6669 | (home-page "https://github.com/leapfrogonline/rstr") |
| 6670 | (synopsis "Generate random strings in Python") |
| 6671 | (description "This package provides a python module for generating |
| 6672 | random strings of various types. It could be useful for fuzz testing, |
| 6673 | generating dummy data, or other applications. It has no dependencies |
| 6674 | outside the standard library.") |
| 6675 | (license license:bsd-3))) |
| 6676 | |
| 6677 | (define-public python-scp |
| 6678 | (package |
| 6679 | (name "python-scp") |
| 6680 | (version "0.13.3") |
| 6681 | (source |
| 6682 | (origin |
| 6683 | (method url-fetch) |
| 6684 | (uri (pypi-uri "scp" version)) |
| 6685 | (sha256 |
| 6686 | (base32 "1m2v09m407p097cy3xy5rxicqfzrqjwf8v5rd4qhfqkk7lllimwb")))) |
| 6687 | (build-system python-build-system) |
| 6688 | (arguments |
| 6689 | '(#:tests? #f)) ;tests require an SSH server |
| 6690 | (propagated-inputs |
| 6691 | (list python-paramiko)) |
| 6692 | (home-page "https://github.com/jbardin/scp.py") |
| 6693 | (synopsis "SCP protocol module for Python and Paramiko") |
| 6694 | (description "The scp module extends the Paramiko library to send and |
| 6695 | receive files via the SCP1 protocol, as implemented by the OpenSSH |
| 6696 | @command{scp} program.") |
| 6697 | (license license:gpl2+))) |
| 6698 | |
| 6699 | (define-public python-rst.linker |
| 6700 | (package |
| 6701 | (name "python-rst.linker") |
| 6702 | (version "1.11") |
| 6703 | (source |
| 6704 | (origin |
| 6705 | (method url-fetch) |
| 6706 | (uri (pypi-uri "rst.linker" version)) |
| 6707 | (sha256 |
| 6708 | (base32 "0pqsfqqx8h0pq21k8l3k62kznrgaj2ala93c64s4d9rpbr4mgkd2")))) |
| 6709 | (build-system python-build-system) |
| 6710 | (propagated-inputs |
| 6711 | (list python-dateutil python-six)) |
| 6712 | (native-inputs |
| 6713 | (list python-setuptools-scm)) |
| 6714 | ;; Test would require path.py, which would introduce a cyclic dependence. |
| 6715 | (arguments `(#:tests? #f)) |
| 6716 | ;; Note: As of version 1.7 the documentation is not worth building. |
| 6717 | (home-page "https://github.com/jaraco/rst.linker") |
| 6718 | (synopsis "Sphinx plugin to add links and timestamps") |
| 6719 | (description "rst.linker automatically replaces text by a |
| 6720 | reStructuredText external reference or timestamps. It's primary purpose is to |
| 6721 | augment the changelog, but it can be used for other documents, too.") |
| 6722 | (license license:expat))) |
| 6723 | |
| 6724 | (define-public python-sshpubkeys |
| 6725 | (package |
| 6726 | (name "python-sshpubkeys") |
| 6727 | (version "3.1.0") |
| 6728 | (home-page "https://github.com/ojarva/python-sshpubkeys") |
| 6729 | (source (origin |
| 6730 | (method git-fetch) |
| 6731 | (uri (git-reference |
| 6732 | (url home-page) |
| 6733 | (commit (string-append "v" version)))) |
| 6734 | (file-name (git-file-name name version)) |
| 6735 | (sha256 |
| 6736 | (base32 |
| 6737 | "1h4gwmcfn84kkqh83km1vfz8sc5kr2g4gzgzmr8gz704jmqiv7nq")))) |
| 6738 | (build-system python-build-system) |
| 6739 | (propagated-inputs |
| 6740 | (list python-cryptography python-ecdsa)) |
| 6741 | (synopsis "OpenSSH public key parser") |
| 6742 | (description |
| 6743 | "This package provides a library for parsing and validating OpenSSH |
| 6744 | public key files.") |
| 6745 | (license license:bsd-3))) |
| 6746 | |
| 6747 | (define-public python-feedgenerator |
| 6748 | (package |
| 6749 | (name "python-feedgenerator") |
| 6750 | (version "1.9") |
| 6751 | (source |
| 6752 | (origin |
| 6753 | (method url-fetch) |
| 6754 | (uri (pypi-uri "feedgenerator" version)) |
| 6755 | (sha256 |
| 6756 | (base32 |
| 6757 | "01mirwkm7xfx539hmvj7g9da1j51gw5lsx74dr0glizskjm5vq2s")) |
| 6758 | (modules '((guix build utils))) |
| 6759 | (snippet |
| 6760 | '(begin |
| 6761 | ;; Remove pre-compiled .pyc files from source. |
| 6762 | (for-each delete-file-recursively |
| 6763 | (find-files "." "__pycache__" #:directories? #t)) |
| 6764 | (for-each delete-file (find-files "." "\\.pyc$")) |
| 6765 | #t)))) |
| 6766 | (build-system python-build-system) |
| 6767 | (propagated-inputs |
| 6768 | (list python-pytz python-six)) |
| 6769 | (home-page "https://github.com/getpelican/feedgenerator") |
| 6770 | (synopsis |
| 6771 | "Standalone version of Django's Atom/RSS feed generator") |
| 6772 | (description |
| 6773 | "Feedgenerator-py3k is a standalone version of Django's feedgenerator, |
| 6774 | which can produce feeds in RSS 2.0, RSS 0.91, and Atom formats.") |
| 6775 | (license license:bsd-3))) |
| 6776 | |
| 6777 | (define-public python-lsp-jsonrpc |
| 6778 | (package |
| 6779 | (name "python-lsp-jsonrpc") |
| 6780 | (version "1.0.0") |
| 6781 | (source |
| 6782 | (origin |
| 6783 | (method url-fetch) |
| 6784 | (uri (pypi-uri "python-lsp-jsonrpc" version)) |
| 6785 | (sha256 |
| 6786 | (base32 |
| 6787 | "1gb0fsamxndhplx25v8m0b3k7aknzy454fpa0qsqsqnv6c3igv3v")))) |
| 6788 | (build-system python-build-system) |
| 6789 | (native-inputs |
| 6790 | (list python-mock python-pytest)) |
| 6791 | (propagated-inputs |
| 6792 | (list python-ujson)) |
| 6793 | (home-page "https://github.com/python-lsp/python-lsp-jsonrpc") |
| 6794 | (synopsis "JSON RPC 2.0 server library") |
| 6795 | (description |
| 6796 | "This package provides a JSON RPC 2.0 server library for Python.") |
| 6797 | (license license:expat))) |
| 6798 | |
| 6799 | (define-public python-jsonrpc-server |
| 6800 | (deprecated-package "python-jsonrpc-server" python-lsp-jsonrpc)) |
| 6801 | |
| 6802 | (define-public python-pydantic |
| 6803 | (package |
| 6804 | (name "python-pydantic") |
| 6805 | (version "1.9.1") |
| 6806 | (source |
| 6807 | (origin |
| 6808 | (method git-fetch) |
| 6809 | (uri (git-reference |
| 6810 | (url "https://github.com/samuelcolvin/pydantic") |
| 6811 | (commit (string-append "v" version)))) |
| 6812 | (file-name (git-file-name name version)) |
| 6813 | (sha256 |
| 6814 | (base32 "1406kgppqa7524mxllsipj7gb8fn7pwf51l11lqik59xjhsfv94f")))) |
| 6815 | (build-system python-build-system) |
| 6816 | (arguments |
| 6817 | '(#:phases |
| 6818 | (modify-phases %standard-phases |
| 6819 | (replace 'check |
| 6820 | (lambda _ (invoke "pytest" "-vv")))))) |
| 6821 | (native-inputs |
| 6822 | (list python-pytest python-pytest-mock)) |
| 6823 | (propagated-inputs |
| 6824 | (list python-typing-extensions)) |
| 6825 | (home-page "https://github.com/samuelcolvin/pydantic") |
| 6826 | (synopsis "Python data validation and settings management") |
| 6827 | (description |
| 6828 | "Pydantic enforces type hints at runtime, and provides user friendly |
| 6829 | errors when data is invalid.") |
| 6830 | (license license:expat))) |
| 6831 | |
| 6832 | (define-public python-pydantic-cli |
| 6833 | (package |
| 6834 | (name "python-pydantic-cli") |
| 6835 | (version "4.3.0") |
| 6836 | (source |
| 6837 | (origin |
| 6838 | (method git-fetch) ;for tests |
| 6839 | (uri (git-reference |
| 6840 | (url "https://github.com/mpkocher/pydantic-cli") |
| 6841 | (commit (string-append "v" version)))) |
| 6842 | (file-name (git-file-name name version)) |
| 6843 | (sha256 |
| 6844 | (base32 |
| 6845 | "1v4dx6n60rbsan5zpw2rgdih7lb3h0xclagn1p6zfwl0r9l9cvym")))) |
| 6846 | (build-system python-build-system) |
| 6847 | (propagated-inputs |
| 6848 | (list python-pydantic)) |
| 6849 | (native-inputs |
| 6850 | (list python-black |
| 6851 | python-mypy |
| 6852 | python-pytest)) |
| 6853 | (home-page "https://github.com/mpkocher/pydantic-cli") |
| 6854 | (synopsis "Turn Pydantic defined data models into CLI tools") |
| 6855 | (description |
| 6856 | "@code{python-pydantic} enables specifying @acronym{CLI, Command Line |
| 6857 | Interfaces} via data models provided in the JSON format.") |
| 6858 | (license license:expat))) |
| 6859 | |
| 6860 | (define-public python-pydocstyle |
| 6861 | (package |
| 6862 | (name "python-pydocstyle") |
| 6863 | (version "3.0.0") |
| 6864 | (source |
| 6865 | (origin |
| 6866 | (method url-fetch) |
| 6867 | (uri (pypi-uri "pydocstyle" version)) |
| 6868 | (sha256 |
| 6869 | (base32 |
| 6870 | "1m1xv9clkg9lgzyza6dnj359z04vh5g0h49nhzghv7lg81gchhap")))) |
| 6871 | (build-system python-build-system) |
| 6872 | (propagated-inputs |
| 6873 | (list python-six python-snowballstemmer)) |
| 6874 | (home-page |
| 6875 | "https://github.com/PyCQA/pydocstyle/") |
| 6876 | (synopsis "Python docstring style checker") |
| 6877 | (description |
| 6878 | "This package provides a style checker for the Python Language |
| 6879 | Server (PLS).") |
| 6880 | (license license:expat))) |
| 6881 | |
| 6882 | (define-public python-lsp-server |
| 6883 | (package |
| 6884 | (name "python-lsp-server") |
| 6885 | (version "1.3.3") |
| 6886 | (source |
| 6887 | (origin |
| 6888 | (method url-fetch) |
| 6889 | (uri (pypi-uri "python-lsp-server" version)) |
| 6890 | (sha256 |
| 6891 | (base32 |
| 6892 | "0h6wxzmm6qjfwkkn3mnzn1fpmcp23fpbk74bi8p540q1nzccqj0v")))) |
| 6893 | (build-system python-build-system) |
| 6894 | (arguments |
| 6895 | `(#:phases |
| 6896 | (modify-phases %standard-phases |
| 6897 | (add-before 'check 'set-HOME |
| 6898 | (lambda _ (setenv "HOME" "/tmp"))) |
| 6899 | (replace 'check |
| 6900 | (lambda _ |
| 6901 | ;; Disable failing test. |
| 6902 | (invoke "python" "-m" "pytest" "-k" |
| 6903 | "not test_pyqt_completion")))))) |
| 6904 | (propagated-inputs |
| 6905 | (list python-autopep8 |
| 6906 | python-pydocstyle |
| 6907 | python-flake8 |
| 6908 | python-future |
| 6909 | python-jedi |
| 6910 | python-lsp-jsonrpc |
| 6911 | python-pluggy |
| 6912 | python-pycodestyle |
| 6913 | python-pyflakes |
| 6914 | python-rope |
| 6915 | python-ujson |
| 6916 | python-yapf)) |
| 6917 | (native-inputs |
| 6918 | (list python-coverage |
| 6919 | python-flaky |
| 6920 | python-matplotlib |
| 6921 | python-mock |
| 6922 | python-numpy |
| 6923 | python-pandas |
| 6924 | python-pylint |
| 6925 | python-pytest |
| 6926 | python-pytest-cov |
| 6927 | python-versioneer)) |
| 6928 | (home-page "https://github.com/python-lsp/python-lsp-server") |
| 6929 | (synopsis "Python implementation of the Language Server Protocol") |
| 6930 | (description |
| 6931 | "The Python Language Server @command{pylsp} is an implementation of the |
| 6932 | Python 3 language specification for the Language Server Protocol (LSP). |
| 6933 | This tool is used in text editing environments to provide a complete |
| 6934 | and integrated feature-set for programming Python effectively.") |
| 6935 | (license license:expat))) |
| 6936 | |
| 6937 | (define-public python-language-server |
| 6938 | (deprecated-package "python-language-server" python-lsp-server)) |
| 6939 | |
| 6940 | (define-public python-black |
| 6941 | (package |
| 6942 | (name "python-black") |
| 6943 | (version "22.3.0") |
| 6944 | (source |
| 6945 | (origin |
| 6946 | (method url-fetch) |
| 6947 | (uri (pypi-uri "black" version)) |
| 6948 | (sha256 |
| 6949 | (base32 |
| 6950 | "0yfahlqc7dsdp1js0cbv706apldnfnlbal9b53cww8n0hs40n0im")))) |
| 6951 | (build-system python-build-system) |
| 6952 | (arguments |
| 6953 | `(#:phases |
| 6954 | (modify-phases %standard-phases |
| 6955 | (add-after 'patch-source-shebangs 'use-absolute-file-names |
| 6956 | (lambda* (#:key native-inputs inputs #:allow-other-keys) |
| 6957 | (let* ((inpts (or native-inputs inputs)) |
| 6958 | (python3 (search-input-file inpts "/bin/python3"))) |
| 6959 | (substitute* (find-files "tests" "\\.py$") |
| 6960 | (("#!/usr/bin/env python3(\\.[0-9]+)?" _ minor-version) |
| 6961 | (string-append "#!" python3 (if (string? minor-version) |
| 6962 | minor-version |
| 6963 | ""))))))) |
| 6964 | (replace 'check |
| 6965 | (lambda* (#:key tests? #:allow-other-keys) |
| 6966 | (when tests? (invoke "pytest" "-vv"))))))) |
| 6967 | (propagated-inputs |
| 6968 | (list python-click |
| 6969 | python-attrs |
| 6970 | python-appdirs |
| 6971 | python-pathspec |
| 6972 | python-mypy-extensions |
| 6973 | python-platformdirs |
| 6974 | python-regex |
| 6975 | python-tomli |
| 6976 | python-typed-ast |
| 6977 | python-typing-extensions)) |
| 6978 | (native-inputs |
| 6979 | (list python-pytest python-pytest-aiohttp python-setuptools-scm)) |
| 6980 | (home-page "https://github.com/psf/black") |
| 6981 | (synopsis "The uncompromising code formatter") |
| 6982 | (description "Black is the uncompromising Python code formatter.") |
| 6983 | (license license:expat))) |
| 6984 | |
| 6985 | (define-public python-black-macchiato |
| 6986 | (package |
| 6987 | (name "python-black-macchiato") |
| 6988 | (version "1.3.0") |
| 6989 | (source |
| 6990 | (origin |
| 6991 | (method url-fetch) |
| 6992 | (uri (pypi-uri "black-macchiato" version)) |
| 6993 | (sha256 |
| 6994 | (base32 |
| 6995 | "1drp5p697ni1xn5y2lbjpalgpkzy2i4cyxjj5pk4dxr0vk97dd7i")))) |
| 6996 | (build-system python-build-system) |
| 6997 | (propagated-inputs |
| 6998 | (list python-black)) |
| 6999 | (home-page "https://github.com/wbolster/black-macchiato") |
| 7000 | (synopsis "Partial @code{python-black} formatting") |
| 7001 | (description |
| 7002 | "This package is built on top the @{python-black} code formatter to |
| 7003 | enable formatting of partial files.") |
| 7004 | (license license:bsd-3))) |
| 7005 | |
| 7006 | (define-public python-blinker |
| 7007 | (package |
| 7008 | (name "python-blinker") |
| 7009 | (version "1.4") |
| 7010 | (source |
| 7011 | (origin |
| 7012 | (method url-fetch) |
| 7013 | (uri (pypi-uri "blinker" version)) |
| 7014 | (sha256 |
| 7015 | (base32 |
| 7016 | "1dpq0vb01p36jjwbhhd08ylvrnyvcc82yxx3mwjx6awrycjyw6j7")))) |
| 7017 | (build-system python-build-system) |
| 7018 | (home-page "https://pythonhosted.org/blinker/") |
| 7019 | (synopsis "Fast, simple object-to-object and broadcast signaling") |
| 7020 | (description |
| 7021 | "Blinker provides a fast dispatching system that allows any number of |
| 7022 | interested parties to subscribe to events, or \"signals\".") |
| 7023 | (license license:expat))) |
| 7024 | |
| 7025 | (define-public pelican |
| 7026 | (package |
| 7027 | (name "pelican") |
| 7028 | (version "4.7.2") |
| 7029 | (source |
| 7030 | (origin |
| 7031 | (method url-fetch) |
| 7032 | (uri (pypi-uri "pelican" version)) |
| 7033 | (sha256 |
| 7034 | (base32 "0m1kndc98hhnlq0yl05f4lzccw555pkxnrajj6lks18yh491kw8w")))) |
| 7035 | (build-system python-build-system) |
| 7036 | (inputs |
| 7037 | (list python-blinker |
| 7038 | python-dateutil |
| 7039 | ;; Ignoring `guix lint` warning as python-docutils is used to support |
| 7040 | ;; reStructuredText processing at runtime. |
| 7041 | python-docutils |
| 7042 | python-feedgenerator |
| 7043 | python-jinja2 |
| 7044 | python-markdown |
| 7045 | python-pygments |
| 7046 | python-pytz |
| 7047 | python-rich |
| 7048 | python-unidecode)) |
| 7049 | (home-page "https://blog.getpelican.com/") |
| 7050 | (arguments |
| 7051 | `(;; XXX Requires a lot more packages to do unit tests :P |
| 7052 | #:tests? #f)) |
| 7053 | (synopsis "Python-based static site publishing system") |
| 7054 | (description |
| 7055 | "Pelican is a tool to generate a static blog from reStructuredText, |
| 7056 | Markdown input files, and more. Pelican uses Jinja2 for templating |
| 7057 | and is very extensible.") |
| 7058 | (license license:agpl3+))) |
| 7059 | |
| 7060 | (define-public mallard-ducktype |
| 7061 | (package |
| 7062 | (name "mallard-ducktype") |
| 7063 | (version "1.0.2") |
| 7064 | (source |
| 7065 | (origin |
| 7066 | (method git-fetch) |
| 7067 | ;; git-reference because tests are not included in pypi source tarball |
| 7068 | ;; https://issues.guix.gnu.org/issue/36755#2 |
| 7069 | (uri (git-reference |
| 7070 | (url "https://github.com/projectmallard/mallard-ducktype") |
| 7071 | (commit version))) |
| 7072 | (file-name (git-file-name name version)) |
| 7073 | (sha256 |
| 7074 | (base32 |
| 7075 | "1jk9bfz7g04ip78s03b0xak6d54rj4h9zpgadkziy1ji216g6y4c")))) |
| 7076 | (build-system python-build-system) |
| 7077 | (arguments |
| 7078 | '(#:phases |
| 7079 | (modify-phases %standard-phases |
| 7080 | (replace 'check |
| 7081 | (lambda _ |
| 7082 | (with-directory-excursion "tests" |
| 7083 | (invoke "sh" "runtests"))))))) |
| 7084 | (home-page "http://projectmallard.org") |
| 7085 | (synopsis "Convert Ducktype to Mallard documentation markup") |
| 7086 | (description |
| 7087 | "Ducktype is a lightweight syntax that can represent all the semantics |
| 7088 | of the Mallard XML documentation system. Ducktype files can be converted to |
| 7089 | Mallard using the @command{ducktype} tool. The yelp-tools package |
| 7090 | provides additional functionality on the produced Mallard documents.") |
| 7091 | (license license:expat))) |
| 7092 | |
| 7093 | (define-public python-cython |
| 7094 | (package |
| 7095 | (name "python-cython") |
| 7096 | (version "0.29.32") |
| 7097 | (source |
| 7098 | (origin |
| 7099 | (method url-fetch) |
| 7100 | (uri (pypi-uri "Cython" version)) |
| 7101 | (sha256 |
| 7102 | (base32 "1xqsihpqnfal29nb5kmw8z71nd4jbsnbz7p3lkr094xpb13wycw7")))) |
| 7103 | (build-system python-build-system) |
| 7104 | ;; we need the full python package and not just the python-wrapper |
| 7105 | ;; because we need libpython3.3m.so |
| 7106 | (inputs |
| 7107 | (list python)) |
| 7108 | (arguments |
| 7109 | `(#:phases |
| 7110 | (modify-phases %standard-phases |
| 7111 | (add-before 'check 'set-HOME |
| 7112 | ;; some tests require access to "$HOME/.cython" |
| 7113 | (lambda _ (setenv "HOME" "/tmp"))) |
| 7114 | (replace 'check |
| 7115 | (lambda* (#:key tests? #:allow-other-keys) |
| 7116 | ;; Disable compiler optimizations to greatly reduce the running |
| 7117 | ;; time of the test suite. |
| 7118 | (setenv "CFLAGS" "-O0") |
| 7119 | |
| 7120 | (when tests? |
| 7121 | (invoke "python" "runtests.py" "-vv" |
| 7122 | "-j" (number->string (parallel-job-count)) |
| 7123 | ;; XXX: On 32-bit architectures, running the parallel tests |
| 7124 | ;; fails on many-core systems, see |
| 7125 | ;; <https://github.com/cython/cython/issues/2807>. |
| 7126 | ,@(if (not (target-64bit?)) |
| 7127 | '("-x" "run.parallel") |
| 7128 | '()) |
| 7129 | ;; This test fails when running on 24 cores. |
| 7130 | "-x" "cpp_stl_conversion"))))))) |
| 7131 | (home-page "https://cython.org/") |
| 7132 | (synopsis "C extensions for Python") |
| 7133 | (description "Cython is an optimising static compiler for both the Python |
| 7134 | programming language and the extended Cython programming language. It makes |
| 7135 | writing C extensions for Python as easy as Python itself.") |
| 7136 | (license license:asl2.0))) |
| 7137 | |
| 7138 | (define-public python-cython-3 |
| 7139 | (package |
| 7140 | (inherit python-cython) |
| 7141 | ;; Cython 3 is not officially released yet, so distinguish the name |
| 7142 | ;; for now. |
| 7143 | (name "python-cython-next") |
| 7144 | (version "3.0.0b2") |
| 7145 | (source (origin |
| 7146 | (method url-fetch) |
| 7147 | (uri (pypi-uri "Cython" version)) |
| 7148 | (sha256 |
| 7149 | (base32 |
| 7150 | "0mb7gpavs87am29sbk6yqznsybxj9dk4fwj4370j9sbrcmjq0hkc")))) |
| 7151 | (properties '()))) |
| 7152 | |
| 7153 | ;; NOTE: when upgrading numpy please make sure that python-numba, |
| 7154 | ;; python-pandas and python-scipy still build, as these three packages are |
| 7155 | ;; often used together. |
| 7156 | (define-public python-numpy |
| 7157 | (package |
| 7158 | (name "python-numpy") |
| 7159 | (version "1.23.2") |
| 7160 | (source |
| 7161 | (origin |
| 7162 | (method url-fetch) |
| 7163 | (uri (string-append |
| 7164 | "https://github.com/numpy/numpy/releases/download/v" |
| 7165 | version "/numpy-" version ".tar.gz")) |
| 7166 | (sha256 |
| 7167 | (base32 |
| 7168 | "00bx3idjwhmzkdawg2dx1bp0316ig37jfx0dm82bvyv1hbj013dp")))) |
| 7169 | (build-system python-build-system) |
| 7170 | (arguments |
| 7171 | (list |
| 7172 | #:modules '((guix build utils) |
| 7173 | (guix build python-build-system) |
| 7174 | (ice-9 format)) |
| 7175 | #:phases |
| 7176 | #~(modify-phases %standard-phases |
| 7177 | (add-before 'build 'parallelize-build |
| 7178 | (lambda _ |
| 7179 | (setenv "NPY_NUM_BUILD_JOBS" |
| 7180 | (number->string (parallel-job-count))))) |
| 7181 | (add-before 'build 'configure-blas |
| 7182 | (lambda* (#:key inputs #:allow-other-keys) |
| 7183 | (call-with-output-file "site.cfg" |
| 7184 | (lambda (port) |
| 7185 | (format port |
| 7186 | "\ |
| 7187 | [openblas] |
| 7188 | libraries = openblas |
| 7189 | library_dirs = ~a/lib |
| 7190 | include_dirs = ~:*~a/include~%" |
| 7191 | (dirname (dirname |
| 7192 | (search-input-file |
| 7193 | inputs "include/openblas_config.h")))))))) |
| 7194 | (add-before 'build 'fix-executable-paths |
| 7195 | (lambda* (#:key inputs #:allow-other-keys) |
| 7196 | ;; Make /gnu/store/...-bash-.../bin/sh the default shell, |
| 7197 | ;; instead of /bin/sh. |
| 7198 | (substitute* "numpy/distutils/exec_command.py" |
| 7199 | (("'/bin/sh'") |
| 7200 | (format #f "~s" (search-input-file inputs "bin/bash")))) |
| 7201 | ;; Don't try to call '/bin/true' specifically. |
| 7202 | (substitute* "numpy/core/tests/test_cpu_features.py" |
| 7203 | (("/bin/true") (search-input-file inputs "bin/true"))))) |
| 7204 | (replace 'check |
| 7205 | (lambda* (#:key tests? outputs inputs #:allow-other-keys) |
| 7206 | (when tests? |
| 7207 | (invoke "./runtests.py" "-vv" "--no-build" "--mode=fast" |
| 7208 | "-j" (number->string (parallel-job-count)) |
| 7209 | ;; Contrary to scipy, the runtests.py script of numpy |
| 7210 | ;; does *not* automatically provide -n when -j is used |
| 7211 | ;; (see: https://github.com/numpy/numpy/issues/21359). |
| 7212 | "--" "-n" (number->string (parallel-job-count)) |
| 7213 | "-k" (string-append |
| 7214 | ;; These tests may fail on 32-bit systems (see: |
| 7215 | ;; https://github.com/numpy/numpy/issues/18387). |
| 7216 | "not test_float_remainder_overflow " |
| 7217 | "and not test_pareto " |
| 7218 | ;; The 'test_rint_big_int' test fails on older |
| 7219 | ;; x86_64 CPUs such as the Core 2 Duo (see: |
| 7220 | ;; https://github.com/numpy/numpy/issues/22170). |
| 7221 | "and not test_rint_big_int " |
| 7222 | ;; The huge_array test is too large for 32-bit (see: |
| 7223 | ;; https://bugs.gentoo.org/843599 and |
| 7224 | ;; https://bugs.gentoo.org/846548). |
| 7225 | ;; TestKind.test_all is a Fortran type failure |
| 7226 | ;; that may be toolchain or environment related. |
| 7227 | #$@(if (or (target-x86?) (target-arm32?)) |
| 7228 | `(" and not test_identityless_reduction_huge_array" |
| 7229 | " and not (TestKind and test_all)") |
| 7230 | '()) |
| 7231 | ;; This test fails when building from aarch64-linux. |
| 7232 | #$@(if (target-arm32?) |
| 7233 | `(" and not test_features") |
| 7234 | '()) |
| 7235 | ;; These tests seem to fail on machines without |
| 7236 | ;; an FPU is still under investigation upstream. |
| 7237 | ;; https://github.com/numpy/numpy/issues/20635 |
| 7238 | #$@(if (target-riscv64?) |
| 7239 | `(" and not test_float" |
| 7240 | " and not test_fpclass") |
| 7241 | '()))))))))) |
| 7242 | (native-inputs |
| 7243 | (list python-cython |
| 7244 | python-hypothesis |
| 7245 | python-pytest |
| 7246 | python-pytest-xdist |
| 7247 | python-typing-extensions |
| 7248 | gfortran)) |
| 7249 | (inputs (list bash openblas)) |
| 7250 | (home-page "https://numpy.org") |
| 7251 | (synopsis "Fundamental package for scientific computing with Python") |
| 7252 | (description "NumPy is the fundamental package for scientific computing |
| 7253 | with Python. It contains among other things: a powerful N-dimensional array |
| 7254 | object, sophisticated (broadcasting) functions, tools for integrating C/C++ |
| 7255 | and Fortran code, useful linear algebra, Fourier transform, and random number |
| 7256 | capabilities.") |
| 7257 | (properties |
| 7258 | '((upstream-name . "numpy"))) |
| 7259 | (license license:bsd-3))) |
| 7260 | |
| 7261 | (define-public python-numpy-documentation |
| 7262 | (package |
| 7263 | (inherit python-numpy) |
| 7264 | (name "python-numpy-documentation") |
| 7265 | (arguments |
| 7266 | (list |
| 7267 | #:tests? #f ;we're only generating the documentation |
| 7268 | #:phases |
| 7269 | #~(modify-phases %standard-phases |
| 7270 | (add-before 'build 'add-gnu-freefont-to-texmf |
| 7271 | (lambda _ |
| 7272 | ;; XXX: The Sphinx-generated tex output specifies the GNU |
| 7273 | ;; FreeFont font to be searched via its extension, which uses |
| 7274 | ;; kpathsea instead of fontconfig and fail (see: |
| 7275 | ;; https://github.com/sphinx-doc/sphinx/issues/10347). Create a |
| 7276 | ;; symlink to GNU FreeFont and add it to the TEXMF tree via |
| 7277 | ;; GUIX_TEXMF. |
| 7278 | (mkdir-p "texmf-dist/fonts/opentype/public") |
| 7279 | (symlink (string-append |
| 7280 | #$(this-package-native-input "font-gnu-freefont") |
| 7281 | "/share/fonts/opentype") |
| 7282 | (string-append |
| 7283 | (getcwd) "/" |
| 7284 | "texmf-dist/fonts/opentype/public/gnu-freefont")) |
| 7285 | (setenv "GUIX_TEXMF" (string-append (getenv "GUIX_TEXMF") ":" |
| 7286 | (getcwd) "/texmf-dist")))) |
| 7287 | (delete 'build) |
| 7288 | (replace 'install |
| 7289 | (lambda _ |
| 7290 | (let* ((data (string-append #$output "/share")) |
| 7291 | (doc (string-append data "/doc/numpy")) |
| 7292 | (html (string-append doc "/html")) |
| 7293 | (info (string-append data "/info")) |
| 7294 | (sphinxopts (string-append |
| 7295 | "SPHINXOPTS=-j" |
| 7296 | (number->string (parallel-job-count))))) |
| 7297 | (with-directory-excursion "doc" |
| 7298 | ;; Do not treat warnings as errors. |
| 7299 | (substitute* "Makefile" |
| 7300 | ((" -WT ") " -T ")) |
| 7301 | (setenv "HOME" "/tmp") |
| 7302 | ;; Build the PDF documentation. |
| 7303 | (invoke "make" "latex-build" sphinxopts) |
| 7304 | (invoke "make" "-C" "build/latex" "all-pdf" sphinxopts) |
| 7305 | ;; Build the HTML documentation |
| 7306 | (invoke "make" "html" sphinxopts) |
| 7307 | ;; Build the Info documentation. The issues worked around |
| 7308 | ;; below can be tracked at |
| 7309 | ;; https://github.com/numpy/numpy/issues/12278. |
| 7310 | (substitute* "source/conf.py" |
| 7311 | ;; The root document should be "index", not "contents". |
| 7312 | (("\"contents\"") "'index'") |
| 7313 | ;; Disable Sphinx extensions that produce broken Texinfo. |
| 7314 | ((".*'numpydoc'.*") "") |
| 7315 | ((".*'sphinx.ext.autosummary'.*") "")) |
| 7316 | (invoke "make" "info" sphinxopts) |
| 7317 | ;; Install the HTML documentation. |
| 7318 | (mkdir-p html) |
| 7319 | (copy-recursively "build/html" html) |
| 7320 | ;; Install the PDF reference and user manuals. |
| 7321 | (install-file "build/latex/numpy-ref.pdf" doc) |
| 7322 | (install-file "build/latex/numpy-user.pdf" doc) |
| 7323 | ;; Install the info manual. |
| 7324 | (install-file "build/texinfo/numpy.info" info) |
| 7325 | (symlink (string-append html "/_images") |
| 7326 | (string-append info "/numpy-figures"))))))))) |
| 7327 | (native-inputs |
| 7328 | (list font-gnu-freefont |
| 7329 | perl |
| 7330 | python-breathe |
| 7331 | python-ipython |
| 7332 | python-matplotlib |
| 7333 | python-numpy |
| 7334 | python-numpydoc |
| 7335 | python-pandas |
| 7336 | python-pydata-sphinx-theme |
| 7337 | python-scipy ;used by matplotlib |
| 7338 | python-sphinx-4 |
| 7339 | python-sphinx-panels |
| 7340 | texinfo |
| 7341 | (texlive-updmap.cfg |
| 7342 | (list texlive-cbfonts |
| 7343 | texlive-cm-super |
| 7344 | texlive-expdlist |
| 7345 | texlive-greek-fontenc |
| 7346 | texlive-latexmk |
| 7347 | texlive-polyglossia |
| 7348 | texlive-xetex |
| 7349 | texlive-xindy)))) |
| 7350 | (inputs '()) |
| 7351 | (propagated-inputs '()) |
| 7352 | (synopsis "Documentation for the @code{python-numpy} package") |
| 7353 | (description "This package provides the complete NumPy documentation in |
| 7354 | the Texinfo, HTML, and PDF formats."))) |
| 7355 | |
| 7356 | (define-public python-munch |
| 7357 | (package |
| 7358 | (name "python-munch") |
| 7359 | (version "2.5.0") |
| 7360 | (source |
| 7361 | (origin |
| 7362 | (method url-fetch) |
| 7363 | (uri (pypi-uri "munch" version)) |
| 7364 | (sha256 |
| 7365 | (base32 |
| 7366 | "1lnvlic9g68hcmgdnv5bzp0nx2bf1kjclj54gx0s7nyl4ipmywrd")))) |
| 7367 | (build-system python-build-system) |
| 7368 | (native-inputs (list python-pbr python-pytest)) |
| 7369 | (propagated-inputs (list python-six)) |
| 7370 | (home-page "https://github.com/Infinidat/munch") |
| 7371 | (synopsis "Dot-accessible dictionary") |
| 7372 | (description "Munch is a dot-accessible dictionary similar to JavaScript |
| 7373 | objects.") |
| 7374 | (license license:expat))) |
| 7375 | |
| 7376 | (define-public python-colormath |
| 7377 | (package |
| 7378 | (name "python-colormath") |
| 7379 | (version "3.0.0") |
| 7380 | (source |
| 7381 | (origin |
| 7382 | (method url-fetch) |
| 7383 | (uri (pypi-uri "colormath" version)) |
| 7384 | (sha256 |
| 7385 | (base32 |
| 7386 | "05qjycgxp3p2f9n6lmic68sxmsyvgnnlyl4z9w7dl9s56jphaiix")))) |
| 7387 | (build-system python-build-system) |
| 7388 | (propagated-inputs |
| 7389 | (list python-networkx python-numpy)) |
| 7390 | (home-page "https://github.com/gtaylor/python-colormath") |
| 7391 | (synopsis "Color math and conversion library") |
| 7392 | (description |
| 7393 | "This is a Python library for color math and conversions.") |
| 7394 | (license license:bsd-3))) |
| 7395 | |
| 7396 | (define-public python-sparse |
| 7397 | (package |
| 7398 | (name "python-sparse") |
| 7399 | (version "0.14.0") |
| 7400 | (source |
| 7401 | (origin |
| 7402 | (method url-fetch) |
| 7403 | (uri (pypi-uri "sparse" version)) |
| 7404 | (sha256 |
| 7405 | (base32 |
| 7406 | "1600xad37mff46xg80cy6bi3l2n6jm69j7sl19rzdmkcgyijfn2z")))) |
| 7407 | (build-system python-build-system) |
| 7408 | (arguments |
| 7409 | `(#:phases |
| 7410 | (modify-phases %standard-phases |
| 7411 | (replace 'check |
| 7412 | (lambda* (#:key tests? #:allow-other-keys) |
| 7413 | (when tests? |
| 7414 | (invoke "python" "-m" "pytest" "-v"))))))) |
| 7415 | (propagated-inputs |
| 7416 | (list python-numba python-numpy python-scipy)) |
| 7417 | (native-inputs |
| 7418 | (list python-dask python-importlib-metadata python-pytest |
| 7419 | python-pytest-black python-pytest-cov)) |
| 7420 | (home-page "https://github.com/pydata/sparse/") |
| 7421 | (synopsis "Library for multi-dimensional sparse arrays") |
| 7422 | (description |
| 7423 | "This package implements sparse arrays of arbitrary dimension on top of |
| 7424 | @code{numpy} and @code{scipy.sparse}. Sparse array is a matrix in which most |
| 7425 | of the elements are zero. @code{python-sparse} generalizes the |
| 7426 | @code{scipy.sparse.coo_matrix} and @code{scipy.sparse.dok_matrix} layouts, but |
| 7427 | extends beyond just rows and columns to an arbitrary number of dimensions. |
| 7428 | Additionally, this project maintains compatibility with the |
| 7429 | @code{numpy.ndarray} interface rather than the @code{numpy.matrix} interface |
| 7430 | used in @code{scipy.sparse}. These differences make this project useful in |
| 7431 | certain situations where @code{scipy.sparse} matrices are not well suited, but |
| 7432 | it should not be considered a full replacement. It lacks layouts that are not |
| 7433 | easily generalized like @dfn{compressed sparse row/column}(CSR/CSC) and |
| 7434 | depends on @code{scipy.sparse} for some computations.") |
| 7435 | (license license:bsd-3))) |
| 7436 | |
| 7437 | (define-public python-spectra |
| 7438 | (package |
| 7439 | (name "python-spectra") |
| 7440 | (version "0.0.11") |
| 7441 | (source |
| 7442 | (origin |
| 7443 | (method url-fetch) |
| 7444 | (uri (pypi-uri "spectra" version)) |
| 7445 | (sha256 |
| 7446 | (base32 |
| 7447 | "1f322x914bhkg6r5gv1vmnir3iy0k5kih0fd2gp3rdkw32jn5cwf")))) |
| 7448 | (build-system python-build-system) |
| 7449 | (arguments |
| 7450 | `(#:phases |
| 7451 | (modify-phases %standard-phases |
| 7452 | (replace 'check |
| 7453 | (lambda _ (invoke "nosetests" "-v")))))) |
| 7454 | (propagated-inputs |
| 7455 | (list python-colormath)) |
| 7456 | (native-inputs |
| 7457 | (list python-nose)) |
| 7458 | (home-page "https://github.com/jsvine/spectra") |
| 7459 | (synopsis "Color scales and color conversion") |
| 7460 | (description |
| 7461 | "This package provides a Python library intended to make color math, |
| 7462 | color scales, and color space conversion easy. It has support for: |
| 7463 | |
| 7464 | @enumerate |
| 7465 | @item Color scales |
| 7466 | @item Color ranges |
| 7467 | @item Color blending |
| 7468 | @item Brightening/darkening colors |
| 7469 | @item Saturating/desaturating colors |
| 7470 | @item Conversion to/from multiple color spaces. |
| 7471 | @end enumerate\n") |
| 7472 | (license license:expat))) |
| 7473 | |
| 7474 | (define-public python-pyspnego |
| 7475 | (package |
| 7476 | (name "python-pyspnego") |
| 7477 | (version "0.1.6") |
| 7478 | (source |
| 7479 | (origin |
| 7480 | (method git-fetch) ;no tests in PyPI release |
| 7481 | (uri (git-reference |
| 7482 | (url "https://github.com/jborean93/pyspnego") |
| 7483 | (commit (string-append "v" version)))) |
| 7484 | (file-name (git-file-name name version)) |
| 7485 | (sha256 |
| 7486 | (base32 |
| 7487 | "0pfh2x0539f0k2qi2pbjm64b2fqp64c63xxpinvg1yfaw915kgpb")))) |
| 7488 | (build-system python-build-system) |
| 7489 | (arguments |
| 7490 | `(#:phases (modify-phases %standard-phases |
| 7491 | (replace 'check |
| 7492 | (lambda* (#:key tests? #:allow-other-keys) |
| 7493 | (when tests? |
| 7494 | (invoke "pytest"))))))) |
| 7495 | (native-inputs |
| 7496 | (list python-pytest python-pytest-mock)) |
| 7497 | (propagated-inputs |
| 7498 | (list python-cryptography python-gssapi python-ruamel.yaml)) |
| 7499 | (home-page "https://github.com/jborean93/pyspnego") |
| 7500 | (synopsis "Python SPNEGO library") |
| 7501 | (description "The @code{pyspnego} Python library handles Negotiate, NTLM, |
| 7502 | Kerberos (SPNEGO) and CredSSP authentication. It also includes a packet |
| 7503 | parser that can be used to decode raw NTLM/SPNEGO/Kerberos tokens into a human |
| 7504 | readable format.") |
| 7505 | (license license:expat))) |
| 7506 | |
| 7507 | (define-public python-pygit2 |
| 7508 | (package |
| 7509 | (name "python-pygit2") |
| 7510 | (version "1.11.1") |
| 7511 | (source |
| 7512 | (origin |
| 7513 | (method url-fetch) |
| 7514 | (uri (pypi-uri "pygit2" version)) |
| 7515 | (sha256 |
| 7516 | (base32 "1v34xdvh6i5cn5srwicvp0i2kvv8fzsv0v9p72ng081nsczmhgvr")))) |
| 7517 | (build-system pyproject-build-system) |
| 7518 | (propagated-inputs (list python-cffi libgit2)) |
| 7519 | (native-inputs (list python-pytest)) |
| 7520 | (home-page "https://github.com/libgit2/pygit2") |
| 7521 | (synopsis "Python bindings for libgit2") |
| 7522 | (description "Pygit2 is a set of Python bindings to the libgit2 shared library.") |
| 7523 | ;; GPL2.0 only, with linking exception. |
| 7524 | (license license:gpl2))) |
| 7525 | |
| 7526 | (define-public python-patiencediff |
| 7527 | (package |
| 7528 | (name "python-patiencediff") |
| 7529 | (version "0.2.0") |
| 7530 | (source |
| 7531 | (origin |
| 7532 | (method url-fetch) |
| 7533 | (uri (pypi-uri "patiencediff" version)) |
| 7534 | (sha256 |
| 7535 | (base32 |
| 7536 | "0yjk50lsd4gnllxls925xbcdxwvmda37w2a1shk0p1nvl3fcha6q")))) |
| 7537 | (build-system python-build-system) |
| 7538 | (home-page "https://www.breezy-vcs.org/") |
| 7539 | (synopsis "Python implementation of the patiencediff algorithm") |
| 7540 | (description |
| 7541 | "This package contains a Python implementation of the @code{patiencediff} |
| 7542 | algorithm. Patiencediff provides a good balance of performance, nice output for |
| 7543 | humans, and implementation simplicity.") |
| 7544 | (license license:gpl2))) |
| 7545 | |
| 7546 | (define-public python-wmctrl |
| 7547 | (package |
| 7548 | (name "python-wmctrl") |
| 7549 | (version "0.4") |
| 7550 | (source |
| 7551 | (origin |
| 7552 | (method url-fetch) |
| 7553 | (uri (pypi-uri "wmctrl" version)) |
| 7554 | (sha256 |
| 7555 | (base32 |
| 7556 | "1q0l1sqnj5wma87k3dsgmsyph464syjc6fl8qcpa41nan1rgzjv6")))) |
| 7557 | (build-system python-build-system) |
| 7558 | (arguments |
| 7559 | `(#:phases (modify-phases %standard-phases |
| 7560 | (add-after 'unpack 'patch-paths |
| 7561 | (lambda* (#:key inputs #:allow-other-keys) |
| 7562 | (let ((wmctrl (assoc-ref inputs "wmctrl"))) |
| 7563 | (substitute* "wmctrl.py" |
| 7564 | (("'wmctrl") |
| 7565 | (string-append "'" wmctrl "/bin/wmctrl"))))))))) |
| 7566 | (inputs (list wmctrl)) |
| 7567 | (propagated-inputs (list python-attrs)) |
| 7568 | (home-page "https://github.com/antocuni/wmctrl") |
| 7569 | (synopsis "Tool to programmatically control Xorg windows") |
| 7570 | (description "This package provides a library for programmatically |
| 7571 | controlling Xorg windows using Python. The library relies on the |
| 7572 | @command{wmctrl} to do so.") |
| 7573 | (license license:expat))) |
| 7574 | |
| 7575 | (define-public python-fancycompleter |
| 7576 | (package |
| 7577 | (name "python-fancycompleter") |
| 7578 | (version "0.9.1") |
| 7579 | (source |
| 7580 | (origin |
| 7581 | (method url-fetch) |
| 7582 | (uri (pypi-uri "fancycompleter" version)) |
| 7583 | (sha256 |
| 7584 | (base32 "0wkj4h01pxa8prv59zl09a0i3w26k835bfpjgvyvsai4mswgxq09")))) |
| 7585 | (build-system python-build-system) |
| 7586 | (arguments |
| 7587 | `(#:phases (modify-phases %standard-phases |
| 7588 | (add-after 'unpack 'fix-setup.py |
| 7589 | (lambda _ |
| 7590 | (substitute* "setup.py" |
| 7591 | ((".*setupmeta.*") |
| 7592 | "") |
| 7593 | (("versioning=.*") |
| 7594 | (string-append "version='" ,version "',")) |
| 7595 | ((".*pyrepl.*") ;broken on Python 3 |
| 7596 | ""))))))) |
| 7597 | (home-page "https://github.com/pdbpp/fancycompleter") |
| 7598 | (synopsis "TAB completion library for Python") |
| 7599 | (description "@code{fancycompleter} is a module that adds TAB completion |
| 7600 | to the interactive prompt. It is an extension of the @code{rlcompleter} |
| 7601 | module from the standard Python library.") |
| 7602 | (license license:bsd-3))) |
| 7603 | |
| 7604 | (define-public python-ipdb |
| 7605 | (package |
| 7606 | (name "python-ipdb") |
| 7607 | (version "0.13.9") |
| 7608 | (source |
| 7609 | (origin |
| 7610 | (method url-fetch) |
| 7611 | (uri (pypi-uri "ipdb" version)) |
| 7612 | (sha256 |
| 7613 | (base32 "1ibql99agjf2gj7y0svzd5m0h81hailf4p3sj3yl9i1i8ykdj6wm")))) |
| 7614 | (build-system python-build-system) |
| 7615 | (arguments |
| 7616 | (list #:phases #~(modify-phases %standard-phases |
| 7617 | (replace 'check |
| 7618 | (lambda* (#:key tests? #:allow-other-keys) |
| 7619 | (when tests? |
| 7620 | (invoke "python" "-m" "unittest" "discover"))))))) |
| 7621 | (propagated-inputs (list python-ipython python-toml python-decorator)) |
| 7622 | (home-page "https://github.com/gotcha/ipdb") |
| 7623 | (synopsis "IPython-enhanced Python debugger (pdb)") |
| 7624 | (description "@code{ipdb} exports functions to access the IPython |
| 7625 | debugger, which features tab completion, syntax highlighting, better |
| 7626 | tracebacks and better introspection than Python's standard @command{pdb} |
| 7627 | debugger, with which it shares the same interface.") |
| 7628 | (license license:bsd-3))) |
| 7629 | |
| 7630 | (define-public python-pdbpp |
| 7631 | ;; The latest release lacks support for Python 3.10; use the latest commit |
| 7632 | ;; of the master branch (see: https://github.com/pdbpp/pdbpp/issues/503). |
| 7633 | (let ((commit "e1c2e347cc55a6dd89e058e56a1366ada68884bc") |
| 7634 | (revision "0")) |
| 7635 | (package |
| 7636 | (name "python-pdbpp") |
| 7637 | (version (git-version "0.10.3" revision commit)) |
| 7638 | (source (origin |
| 7639 | (method git-fetch) |
| 7640 | (uri (git-reference |
| 7641 | (url "https://github.com/pdbpp/pdbpp") |
| 7642 | (commit commit))) |
| 7643 | (file-name (git-file-name name version)) |
| 7644 | (sha256 |
| 7645 | (base32 |
| 7646 | "1hql1ldwa9czml7zrnv6qdzgpywwav3a282dbvqypf108zvjsdiw")))) |
| 7647 | (build-system python-build-system) |
| 7648 | (arguments |
| 7649 | (list |
| 7650 | #:phases |
| 7651 | #~(modify-phases %standard-phases |
| 7652 | (add-before 'build 'pretend-version |
| 7653 | (lambda _ |
| 7654 | (setenv "SETUPTOOLS_SCM_PRETEND_VERSION" |
| 7655 | #$(package-version this-package)))) |
| 7656 | (replace 'check |
| 7657 | (lambda* (#:key tests? #:allow-other-keys) |
| 7658 | (when tests? |
| 7659 | (invoke "pytest" |
| 7660 | "-k" |
| 7661 | (string-append |
| 7662 | ;; These tests seem to require a real TTY. |
| 7663 | "not interaction_restores_previous_sigint_handler " |
| 7664 | "and not python_m_pdb_uses_pdbpp")))))))) |
| 7665 | (propagated-inputs |
| 7666 | (list python-fancycompleter python-pygments python-wmctrl)) |
| 7667 | (native-inputs |
| 7668 | (list python-pytest python-setuptools-scm)) |
| 7669 | (home-page "https://github.com/pdbpp/pdbpp") |
| 7670 | (synopsis "Drop-in replacement for pdb") |
| 7671 | (description "Pdb++ is a drop-in replacement for @code{pdb}. It |
| 7672 | includes the following improvements compared to @code{pdb}: |
| 7673 | @itemize |
| 7674 | @item auto-completion |
| 7675 | @item syntax highlighting of code listings |
| 7676 | @item sticky mode |
| 7677 | @item new commands to be used from the interactive (Pdb++) prompt |
| 7678 | @item smart command parsing |
| 7679 | @item additional convenience functions in the @code{pdb} module. |
| 7680 | @end itemize") |
| 7681 | (license license:bsd-3)))) |
| 7682 | |
| 7683 | (define-public python-pdftotext |
| 7684 | (package |
| 7685 | (name "python-pdftotext") |
| 7686 | (version "2.1.6") |
| 7687 | (source |
| 7688 | (origin |
| 7689 | (method url-fetch) |
| 7690 | (uri (pypi-uri "pdftotext" version)) |
| 7691 | (sha256 |
| 7692 | (base32 "1555wbgr5spj8xflrs4mwsrdmba2f9s72nk50xzqk9ghxaxdvy6a")))) |
| 7693 | (build-system python-build-system) |
| 7694 | (inputs |
| 7695 | (list poppler)) |
| 7696 | (home-page "https://github.com/jalan/pdftotext") |
| 7697 | (synopsis "Simple PDF text extraction") |
| 7698 | (description "Pdftotext is a Python library of PDF text extraction.") |
| 7699 | (license license:expat))) |
| 7700 | |
| 7701 | (define-public python-pluginbase |
| 7702 | (package |
| 7703 | (name "python-pluginbase") |
| 7704 | (version "1.0.1") |
| 7705 | (source |
| 7706 | (origin |
| 7707 | (method url-fetch) |
| 7708 | (uri (pypi-uri "pluginbase" version)) |
| 7709 | (sha256 |
| 7710 | (base32 |
| 7711 | "11z2vvbp13828y0x3w39f29p9r9xcix7h7c4fff2w8yfiylk6v7z")))) |
| 7712 | (build-system python-build-system) |
| 7713 | (arguments |
| 7714 | `(#:phases (modify-phases %standard-phases |
| 7715 | (replace 'check |
| 7716 | (lambda* (#:key tests? #:allow-other-keys) |
| 7717 | (when tests? |
| 7718 | (invoke "make" "test"))))))) |
| 7719 | (native-inputs (list python-pytest)) |
| 7720 | (home-page "https://github.com/mitsuhiko/pluginbase") |
| 7721 | (synopsis "Simple but flexible plugin system for Python") |
| 7722 | (description "PluginBase is a library useful in the development of |
| 7723 | flexible plugin systems in Python.") |
| 7724 | (license license:bsd-3))) |
| 7725 | |
| 7726 | (define-public python-node-semver |
| 7727 | (package |
| 7728 | (name "python-node-semver") |
| 7729 | (version "0.8.1") |
| 7730 | (source |
| 7731 | (origin |
| 7732 | (method url-fetch) |
| 7733 | (uri (pypi-uri "node-semver" version)) |
| 7734 | (sha256 |
| 7735 | (base32 |
| 7736 | "000ypfns5x72b41w5f9pk6k3jnr35scliqfbvmilyvv0178005i8")))) |
| 7737 | (build-system python-build-system) |
| 7738 | (native-inputs |
| 7739 | (list python-pytest)) |
| 7740 | (home-page "https://github.com/podhmo/python-node-semver") |
| 7741 | (synopsis "Python port of node-semver") |
| 7742 | (description "This module provides a Python version of node-semver, a |
| 7743 | semantic version parser for Node.js.") |
| 7744 | (license license:expat))) |
| 7745 | |
| 7746 | (define-public python-norns |
| 7747 | (package |
| 7748 | (name "python-norns") |
| 7749 | (version "0.1.6") |
| 7750 | (source (origin |
| 7751 | (method url-fetch) |
| 7752 | (uri (pypi-uri "norns" version)) |
| 7753 | (sha256 |
| 7754 | (base32 |
| 7755 | "1r1lcq59v6l75wkbp7mypanr69a6fv6m58v6dw3v6b4vwz5nqg0z")))) |
| 7756 | (build-system pyproject-build-system) |
| 7757 | (propagated-inputs (list python-appdirs python-nose python-pyyaml)) |
| 7758 | (home-page "https://github.com/simonvh/norns") |
| 7759 | (synopsis "Simple YAML-based config module") |
| 7760 | (description "This package provides a simple YAML-based config module.") |
| 7761 | (license license:expat))) |
| 7762 | |
| 7763 | (define-public python-patch-ng |
| 7764 | (package |
| 7765 | (name "python-patch-ng") |
| 7766 | (version "1.17.4") |
| 7767 | (source |
| 7768 | (origin |
| 7769 | (method git-fetch) ;no tests in PyPI archive |
| 7770 | (uri (git-reference |
| 7771 | (url "https://github.com/conan-io/python-patch-ng") |
| 7772 | (commit version))) |
| 7773 | (file-name (git-file-name name version)) |
| 7774 | (sha256 |
| 7775 | (base32 |
| 7776 | "0qxn4ss2s54qy87xrpcybz26kp2fwlaq41x4k9jcmp6d7p0w569m")))) |
| 7777 | (build-system python-build-system) |
| 7778 | (arguments |
| 7779 | `(#:phases (modify-phases %standard-phases |
| 7780 | (replace 'check |
| 7781 | (lambda* (#:key tests? #:allow-other-keys) |
| 7782 | (when tests? |
| 7783 | (invoke "tests/run_tests.py" "-v"))))))) |
| 7784 | (home-page "https://github.com/conan-io/python-patch-ng") |
| 7785 | (synopsis "Python library to parse and apply unified diffs") |
| 7786 | (description "Patch NG (New Generation) is a command and Python library to |
| 7787 | parse and apply unified diffs. It has features such as: |
| 7788 | @itemize |
| 7789 | @item automatic correction of common patch formatting corruption |
| 7790 | @item patch format detection (SVN, Hg, Git) |
| 7791 | @item nice diffstat histogram. |
| 7792 | @end itemize") |
| 7793 | (license license:expat))) |
| 7794 | |
| 7795 | (define-public python-numpydoc |
| 7796 | (package |
| 7797 | (name "python-numpydoc") |
| 7798 | (version "1.5.0") |
| 7799 | (source |
| 7800 | (origin |
| 7801 | (method url-fetch) |
| 7802 | (uri (pypi-uri "numpydoc" version)) |
| 7803 | (sha256 |
| 7804 | (base32 |
| 7805 | "0k2z3g4s3w39h1nd293542hl9qv55j29gcr3bkia0rr3ldsppnxh")))) |
| 7806 | (build-system python-build-system) |
| 7807 | (arguments |
| 7808 | `(#:phases |
| 7809 | (modify-phases %standard-phases |
| 7810 | (replace 'check |
| 7811 | (lambda* (#:key tests? #:allow-other-keys) |
| 7812 | (when tests? |
| 7813 | (invoke "pytest" "-v" "numpydoc/tests" |
| 7814 | ;; TODO: unclear why these fail. |
| 7815 | "-k" "not test_MyClass and not test_my_function"))))))) |
| 7816 | (propagated-inputs (list python-jinja2 python-sphinx)) |
| 7817 | (native-inputs (list python-matplotlib python-pytest python-pytest-cov)) |
| 7818 | (home-page "https://pypi.org/project/numpydoc/") |
| 7819 | (synopsis "Numpy's Sphinx extensions") |
| 7820 | (description "Sphinx extension to support docstrings in Numpy format.") |
| 7821 | (license license:bsd-2))) |
| 7822 | |
| 7823 | (define-public python-numexpr |
| 7824 | (package |
| 7825 | (name "python-numexpr") |
| 7826 | (version "2.8.4") |
| 7827 | (source |
| 7828 | (origin |
| 7829 | (method url-fetch) |
| 7830 | (uri (pypi-uri "numexpr" version)) |
| 7831 | (sha256 |
| 7832 | (base32 |
| 7833 | "0iv1h1lvry5vmzqyvwxfbckyhzm1vbb1bmhmj4dnj64d84vjahym")))) |
| 7834 | (build-system python-build-system) |
| 7835 | (arguments `(#:tests? #f)) ; no tests included |
| 7836 | (propagated-inputs |
| 7837 | (list python-numpy)) |
| 7838 | (home-page "https://github.com/pydata/numexpr") |
| 7839 | (synopsis "Fast numerical expression evaluator for NumPy") |
| 7840 | (description |
| 7841 | "Numexpr is a fast numerical expression evaluator for NumPy. With it, |
| 7842 | expressions that operate on arrays are accelerated and use less memory than |
| 7843 | doing the same calculation in Python. In addition, its multi-threaded |
| 7844 | capabilities can make use of all your cores, which may accelerate |
| 7845 | computations, most specially if they are not memory-bounded (e.g. those using |
| 7846 | transcendental functions).") |
| 7847 | (license license:expat))) |
| 7848 | |
| 7849 | (define-public python-cycler |
| 7850 | (package |
| 7851 | (name "python-cycler") |
| 7852 | (version "0.10.0") |
| 7853 | (source (origin |
| 7854 | (method url-fetch) |
| 7855 | (uri (pypi-uri "cycler" version)) |
| 7856 | (sha256 |
| 7857 | (base32 |
| 7858 | "1n69n23fak1gjxlrbhqisi2b9pv3ckrfj98llx3p53953082syyd")))) |
| 7859 | (build-system python-build-system) |
| 7860 | (arguments |
| 7861 | ;; XXX: The current version requires 'coveralls' which we don't have. |
| 7862 | ;; Enable this for the next release which uses 'python-pytest'. |
| 7863 | '(#:tests? #f)) |
| 7864 | (propagated-inputs |
| 7865 | (list python-six)) |
| 7866 | (home-page "https://matplotlib.org/cycler/") |
| 7867 | (synopsis "Composable keyword argument iterator") |
| 7868 | (description |
| 7869 | "When using @code{matplotlib} and plotting more than one line, it is |
| 7870 | common to want to be able to want to be able to cycle over one or more artist |
| 7871 | styles; but the plotting logic can quickly become involved. |
| 7872 | To address this and enable easy cycling over arbitrary @code{kwargs}, the |
| 7873 | @code{Cycler} class was developed.") |
| 7874 | (license license:bsd-3))) |
| 7875 | |
| 7876 | (define-public python-colorspacious |
| 7877 | (package |
| 7878 | (name "python-colorspacious") |
| 7879 | (version "1.1.2") |
| 7880 | (source |
| 7881 | (origin |
| 7882 | (method git-fetch) |
| 7883 | (uri (git-reference |
| 7884 | (url "https://github.com/njsmith/colorspacious") |
| 7885 | (commit (string-append "v" version)))) |
| 7886 | (file-name (git-file-name name version)) |
| 7887 | (sha256 |
| 7888 | (base32 "0x7nkphr6g5ql5fvgss8l56rgiyjgh6fm8zzs73i94ci9wzlm63w")))) |
| 7889 | (build-system python-build-system) |
| 7890 | (propagated-inputs |
| 7891 | (list python-numpy)) |
| 7892 | (native-inputs |
| 7893 | (list python-nose)) |
| 7894 | (arguments |
| 7895 | `(#:phases |
| 7896 | (modify-phases %standard-phases |
| 7897 | (replace 'check |
| 7898 | (lambda _ |
| 7899 | (invoke "nosetests" "--all-modules" "-v" "colorspacious")))))) |
| 7900 | (home-page "https://github.com/njsmith/colorspacious") |
| 7901 | (synopsis "Python library for colorspace conversions") |
| 7902 | (description "@code{colorspacious} is a Python library that lets you |
| 7903 | convert between colorspaces like sRGB, XYZ, CIEL*a*b*, CIECAM02, CAM02-UCS, etc.") |
| 7904 | (license license:expat))) |
| 7905 | |
| 7906 | (define-public python-proto-matcher |
| 7907 | (package |
| 7908 | (name "python-proto-matcher") |
| 7909 | (version "0.0.3") |
| 7910 | (source |
| 7911 | (origin |
| 7912 | (method url-fetch) |
| 7913 | (uri (pypi-uri "proto_matcher" version)) |
| 7914 | (sha256 |
| 7915 | (base32 "1644x0hrl398ji3281n44ymfgc3cspzfagjckhqjn4nja5nlikxg")))) |
| 7916 | (build-system python-build-system) |
| 7917 | (arguments |
| 7918 | `(#:tests? #f)) ;no test suite |
| 7919 | (propagated-inputs |
| 7920 | (list python-protobuf python-pyhamcrest)) |
| 7921 | (home-page "https://github.com/dayfine/proto-matcher") |
| 7922 | (synopsis "PyHamcrest test matchers for protocol buffers") |
| 7923 | (description "This package provides the following PyHamcrest test |
| 7924 | matchers, that enable matching a protocol buffer message: |
| 7925 | @table @code |
| 7926 | @item equals_proto |
| 7927 | Test the argument equals the given protobuf message. |
| 7928 | @item approximately |
| 7929 | Test the argument equals the given protobuf message, while comparing any float |
| 7930 | field using approximation. |
| 7931 | @item ignoring_field_paths |
| 7932 | Test the argument equals the given protobuf message, while ignoring those |
| 7933 | fields specified in the field paths. |
| 7934 | @item ignoring_repeated_field_ordering |
| 7935 | Test the argument equals the given protobuf message, ignoring the ordering of |
| 7936 | any repeated field. |
| 7937 | @item partially |
| 7938 | Test the argument partially equals the given protobuf message, i.e. if a field |
| 7939 | is in the argument but not in the expected message, it's ignored in the |
| 7940 | comparison. |
| 7941 | @end table") |
| 7942 | (license license:asl2.0))) |
| 7943 | |
| 7944 | (define-public python-matplotlib |
| 7945 | (package |
| 7946 | (name "python-matplotlib") |
| 7947 | (version "3.5.2") |
| 7948 | (source |
| 7949 | (origin |
| 7950 | (method url-fetch) |
| 7951 | (uri (pypi-uri "matplotlib" version)) |
| 7952 | (sha256 |
| 7953 | (base32 "18h78s5ld1i6mz00w258hy29909nfr3ddq6ry9kq18agw468bks8")))) |
| 7954 | (build-system python-build-system) |
| 7955 | (arguments |
| 7956 | (list |
| 7957 | #:phases |
| 7958 | #~(modify-phases %standard-phases |
| 7959 | (add-before 'build 'pretend-version |
| 7960 | ;; The version string is usually derived via setuptools-scm, but |
| 7961 | ;; without the git metadata available, the version string is set to |
| 7962 | ;; '0.0.0'. |
| 7963 | (lambda _ |
| 7964 | (setenv "SETUPTOOLS_SCM_PRETEND_VERSION" #$version))) |
| 7965 | (add-after 'unpack 'fix-and-disable-failing-tests |
| 7966 | ;; XXX: Disable all image comparison tests because we're using a |
| 7967 | ;; newer version of FreeType than matplotlib expects. This leads |
| 7968 | ;; to minor differences throughout the tests. |
| 7969 | (lambda _ |
| 7970 | (substitute* (append (find-files "lib/matplotlib/tests/" |
| 7971 | "test_.*\\.py$") |
| 7972 | (find-files "lib/mpl_toolkits/tests" |
| 7973 | "test_.*\\.py$")) |
| 7974 | (("^from matplotlib" match) |
| 7975 | (string-append "import pytest\n" match)) |
| 7976 | (("( *)@([^_]+_)*(image_comparison|check_figures_equal)" match |
| 7977 | indent) |
| 7978 | (string-append indent "@pytest.mark.skip(\ |
| 7979 | reason=\"unknown minor image differences\")\n" match))) |
| 7980 | (substitute* "lib/matplotlib/tests/test_animation.py" |
| 7981 | (("/bin/sh") (which "sh"))) |
| 7982 | (for-each delete-file |
| 7983 | ;; test_normal_axes, test_get_tightbbox_polar |
| 7984 | '("lib/matplotlib/tests/test_axes.py" |
| 7985 | "lib/matplotlib/tests/test_polar.py" |
| 7986 | ;; We don't use the webagg backend and this test |
| 7987 | ;; forces it. |
| 7988 | "lib/matplotlib/tests/test_backend_webagg.py" |
| 7989 | ;; test_outward_ticks |
| 7990 | "lib/matplotlib/tests/test_tightlayout.py" |
| 7991 | ;; test_hidden_axes fails with minor extent |
| 7992 | ;; differences, possibly due to the use of a |
| 7993 | ;; different version of FreeType. |
| 7994 | "lib/matplotlib/tests/test_constrainedlayout.py" |
| 7995 | ;; Fontconfig returns no fonts. |
| 7996 | "lib/matplotlib/tests/test_font_manager.py" |
| 7997 | ;; The images comparison test fails |
| 7998 | ;; non-deterministically when run in parallel (see: |
| 7999 | ;; https://github.com/matplotlib/matplotlib/issues/22992). |
| 8000 | "lib/matplotlib/tests/test_compare_images.py")))) |
| 8001 | (add-before 'build 'configure-environment |
| 8002 | (lambda* (#:key inputs #:allow-other-keys) |
| 8003 | ;; Fix rounding errors when using the x87 FPU. |
| 8004 | (when (string-prefix? "i686" #$(%current-system)) |
| 8005 | (setenv "CFLAGS" "-ffloat-store")) |
| 8006 | (call-with-output-file "mplsetup.cfg" |
| 8007 | (lambda (port) |
| 8008 | (format port "\ |
| 8009 | [libs] |
| 8010 | system_freetype = true |
| 8011 | system_qhull = true |
| 8012 | |
| 8013 | [rc_options] |
| 8014 | backend=Agg |
| 8015 | |
| 8016 | [directories] |
| 8017 | basedirlist = ~a,~a |
| 8018 | |
| 8019 | [packages] |
| 8020 | tests = True~%" (assoc-ref inputs "tcl") (assoc-ref inputs "tk")))))) |
| 8021 | (replace 'check |
| 8022 | (lambda* (#:key tests? #:allow-other-keys) |
| 8023 | (when tests? |
| 8024 | ;; Step out of the source directory to avoid interference. |
| 8025 | (with-directory-excursion "/tmp" |
| 8026 | ;; Run the installed tests, which is what we want since not |
| 8027 | ;; everything gets built in the source directory. |
| 8028 | (invoke "pytest" |
| 8029 | "-n" (number->string (parallel-job-count)) |
| 8030 | "-m" "not network" "--pyargs" "matplotlib" |
| 8031 | "-k" |
| 8032 | (string-append |
| 8033 | ;; The 'test_lazy_auto_backend_selection' fails |
| 8034 | ;; because it would require an X server; skip it. |
| 8035 | "not test_lazy_auto_backend_selection" |
| 8036 | ;; test_getattr fails for the GTK backend because |
| 8037 | ;; of an unexpected warning from Python 3.10 |
| 8038 | ;; (via the gi module): |
| 8039 | ;; https://gitlab.gnome.org/GNOME/pygobject/-/issues/494 |
| 8040 | " and not test_getattr"))))))))) |
| 8041 | (propagated-inputs |
| 8042 | (list gobject-introspection |
| 8043 | python-cairocffi |
| 8044 | python-certifi |
| 8045 | python-cycler |
| 8046 | python-dateutil |
| 8047 | python-fonttools-minimal |
| 8048 | python-kiwisolver |
| 8049 | python-numpy |
| 8050 | python-packaging |
| 8051 | python-pillow |
| 8052 | ;; ;; 'pycairo'. However, 'pygobject' makes use of a 'pycairo' 'context' |
| 8053 | ;; ;; From version 1.4.0 'matplotlib' makes use of 'cairocffi' instead of |
| 8054 | ;; ;; https://cairocffi.readthedocs.io/en/stable/cffi_api.html#converting-pycairo-wrappers-to-cairocffi |
| 8055 | ;; ;; object. For this reason we need to import both libraries. |
| 8056 | ;; python-pycairo |
| 8057 | python-pygobject |
| 8058 | python-pyparsing |
| 8059 | python-pytz |
| 8060 | python-six |
| 8061 | `(,python "tk") |
| 8062 | python-wxpython)) |
| 8063 | (inputs |
| 8064 | (list cairo |
| 8065 | freetype |
| 8066 | glib |
| 8067 | libpng |
| 8068 | qhull |
| 8069 | tcl |
| 8070 | tk)) |
| 8071 | (native-inputs |
| 8072 | (list pkg-config |
| 8073 | python-pytest |
| 8074 | python-pytest-timeout |
| 8075 | python-pytest-xdist |
| 8076 | python-setuptools-scm |
| 8077 | python-setuptools-scm-git-archive)) |
| 8078 | (home-page "https://matplotlib.org/") |
| 8079 | (synopsis "2D plotting library for Python") |
| 8080 | (description |
| 8081 | "Matplotlib is a Python 2D plotting library which produces publication |
| 8082 | quality figures in a variety of hardcopy formats and interactive environments |
| 8083 | across platforms. Matplotlib can be used in Python scripts, the python and |
| 8084 | ipython shell, web application servers, and six graphical user interface |
| 8085 | toolkits.") |
| 8086 | (license license:psfl))) |
| 8087 | |
| 8088 | (define-public python-matplotlib-documentation |
| 8089 | (package |
| 8090 | (inherit python-matplotlib) |
| 8091 | (name "python-matplotlib-documentation") |
| 8092 | (arguments |
| 8093 | (list |
| 8094 | #:tests? #f ;we're only generating documentation |
| 8095 | #:phases |
| 8096 | #~(modify-phases %standard-phases |
| 8097 | (replace 'build |
| 8098 | (lambda _ |
| 8099 | (setenv "HOME" "/tmp") |
| 8100 | (chdir "doc") |
| 8101 | (substitute* "conf.py" |
| 8102 | ;; The sphinx_panels extension causes a "TypeError: first |
| 8103 | ;; argument must be callable" to be raised when generating the |
| 8104 | ;; info target; remove it (see: |
| 8105 | ;; https://github.com/executablebooks/sphinx-panels/issues/74). |
| 8106 | ((".*'sphinx_panels',.*") "")) |
| 8107 | (invoke "make" "html" "info" |
| 8108 | ;; Don't abort on warnings; build in parallel. |
| 8109 | (format #f "SPHINXOPTS=-j~a" (parallel-job-count))))) |
| 8110 | (replace 'install |
| 8111 | (lambda _ |
| 8112 | (let* ((data (string-append #$output "/share")) |
| 8113 | (doc (string-append data "/doc/matplotlib")) |
| 8114 | (info (string-append data "/info")) |
| 8115 | (html (string-append doc "/html"))) |
| 8116 | (mkdir-p html) |
| 8117 | (copy-recursively "build/html" html) |
| 8118 | (install-file "build/texinfo/matplotlib.info" info) |
| 8119 | ;; The "matplotlib-figures" directory contains are a subset of |
| 8120 | ;; the images produced for the html target; simply create a |
| 8121 | ;; symlink to it, saving about 11 MiB. |
| 8122 | (symlink (string-append html "/_images") |
| 8123 | (string-append info "/matplotlib-figures")))))))) |
| 8124 | (native-inputs |
| 8125 | (list graphviz |
| 8126 | inkscape/stable |
| 8127 | python-colorspacious |
| 8128 | python-ipython |
| 8129 | python-ipywidgets |
| 8130 | python-mpl-sphinx-theme |
| 8131 | python-numpydoc |
| 8132 | python-scipy |
| 8133 | python-sphinx |
| 8134 | python-sphinx-copybutton |
| 8135 | python-sphinx-gallery |
| 8136 | python-sphinxcontrib-svg2pdfconverter |
| 8137 | texinfo |
| 8138 | texlive-amsfonts |
| 8139 | texlive-amsmath |
| 8140 | texlive-babel |
| 8141 | texlive-etoolbox |
| 8142 | texlive-expdlist |
| 8143 | texlive-fontspec |
| 8144 | texlive-times |
| 8145 | texlive-type1cm |
| 8146 | texlive-underscore |
| 8147 | texlive-unicode-math)) |
| 8148 | (synopsis "Documentation for the @code{python-matplotlib} package"))) |
| 8149 | |
| 8150 | (define-public python-matplotlib-inline |
| 8151 | (package |
| 8152 | (name "python-matplotlib-inline") |
| 8153 | (version "0.1.3") |
| 8154 | (source |
| 8155 | (origin |
| 8156 | (method url-fetch) |
| 8157 | (uri (pypi-uri "matplotlib-inline" version)) |
| 8158 | (sha256 |
| 8159 | (base32 "1vilzwj3xp00mxprmmn1hlafm3p23vn56s46kx3ra4qd5signjx0")))) |
| 8160 | (build-system python-build-system) |
| 8161 | (propagated-inputs |
| 8162 | (list python-matplotlib python-traitlets)) |
| 8163 | (arguments |
| 8164 | ;; Tests disabled because of a circular dependency with ipython. |
| 8165 | `(#:tests? #f)) |
| 8166 | (home-page "https://github.com/ipython/matplotlib-inline") |
| 8167 | (synopsis "Inline Matplotlib backend for Jupyter") |
| 8168 | (description |
| 8169 | "This package provides a Matplotlib inline back-end for IPython and |
| 8170 | Jupyter.") |
| 8171 | (license license:bsd-3))) |
| 8172 | |
| 8173 | (define-public python-matplotlib-venn |
| 8174 | (package |
| 8175 | (name "python-matplotlib-venn") |
| 8176 | (version "0.11.5") |
| 8177 | (source |
| 8178 | (origin |
| 8179 | (method url-fetch) |
| 8180 | (uri (pypi-uri "matplotlib-venn" version ".zip")) |
| 8181 | (sha256 |
| 8182 | (base32 |
| 8183 | "13w3i1wih0mij08hrgppzg0g9z50y54rc28l6gdi1r5w45l7l0dy")))) |
| 8184 | (build-system python-build-system) |
| 8185 | (arguments '(#:tests? #f)) ; tests are not included |
| 8186 | (propagated-inputs |
| 8187 | (list python-matplotlib python-numpy python-scipy)) |
| 8188 | (native-inputs |
| 8189 | (list unzip)) |
| 8190 | (home-page "https://github.com/konstantint/matplotlib-venn") |
| 8191 | (synopsis "Plot area-proportional Venn diagrams") |
| 8192 | (description |
| 8193 | "This package provides tools for plotting area-proportional two- and |
| 8194 | three-way Venn diagrams in @code{matplotlib}.") |
| 8195 | (license license:expat))) |
| 8196 | |
| 8197 | (define-public python-pysnptools |
| 8198 | (package |
| 8199 | (name "python-pysnptools") |
| 8200 | (version "0.4.11") |
| 8201 | (source |
| 8202 | (origin |
| 8203 | (method url-fetch) |
| 8204 | (uri (pypi-uri "pysnptools" version)) |
| 8205 | (sha256 |
| 8206 | (base32 |
| 8207 | "0gxr0bjix307wvk0qh7vkafbxbzfpdmq0wlswpxyyaymy0fwcypv")))) |
| 8208 | (build-system python-build-system) |
| 8209 | (arguments |
| 8210 | `(#:tests? #f ; no test data are included |
| 8211 | #:phases |
| 8212 | (modify-phases %standard-phases |
| 8213 | (replace 'check |
| 8214 | (lambda* (#:key inputs outputs tests? #:allow-other-keys) |
| 8215 | (if tests? |
| 8216 | (begin |
| 8217 | (add-installed-pythonpath inputs outputs) |
| 8218 | (invoke "python3" "pysnptools/test.py")) |
| 8219 | #t)))))) |
| 8220 | (propagated-inputs |
| 8221 | (list python-dill |
| 8222 | python-h5py |
| 8223 | python-numpy |
| 8224 | python-pandas |
| 8225 | python-psutil |
| 8226 | python-scipy)) |
| 8227 | (native-inputs |
| 8228 | (list python-cython)) |
| 8229 | (home-page "http://microsoftgenomics.github.io/PySnpTools/") |
| 8230 | (synopsis "Library for reading and manipulating genetic data") |
| 8231 | (description |
| 8232 | "PySnpTools is a library for reading and manipulating genetic data. It |
| 8233 | can, for example, efficiently read whole PLINK *.bed/bim/fam files or parts of |
| 8234 | those files. It can also efficiently manipulate ranges of integers using set |
| 8235 | operators such as union, intersection, and difference.") |
| 8236 | (license license:asl2.0))) |
| 8237 | |
| 8238 | (define-public python-pykdtree |
| 8239 | (package |
| 8240 | (name "python-pykdtree") |
| 8241 | (version "1.3.4") |
| 8242 | (source |
| 8243 | (origin |
| 8244 | (method url-fetch) |
| 8245 | (uri (pypi-uri "pykdtree" version)) |
| 8246 | (sha256 |
| 8247 | (base32 "0p8n2ljdacfixkiw092974dmhy4s1c0h032ii1z9kwi9h5h5rgmy")))) |
| 8248 | (build-system python-build-system) |
| 8249 | (native-inputs |
| 8250 | (list python-nose)) |
| 8251 | (propagated-inputs |
| 8252 | (list python-numpy)) |
| 8253 | (home-page "https://github.com/storpipfugl/pykdtree") |
| 8254 | (synopsis "Fast kd-tree implementation with OpenMP-enabled queries") |
| 8255 | (description |
| 8256 | "@code{pykdtree} is a kd-tree implementation for fast nearest neighbour |
| 8257 | search in Python.") |
| 8258 | (license license:lgpl3+))) |
| 8259 | |
| 8260 | (define-public python-wurlitzer |
| 8261 | (package |
| 8262 | (name "python-wurlitzer") |
| 8263 | (version "2.0.1") |
| 8264 | (source |
| 8265 | (origin |
| 8266 | (method url-fetch) |
| 8267 | (uri (pypi-uri "wurlitzer" version)) |
| 8268 | (sha256 |
| 8269 | (base32 "0hvmbc41kdwrjns8z1s4a59a4azdvzb8q3vs7nn1li4qm4l0g3yh")))) |
| 8270 | (build-system python-build-system) |
| 8271 | (arguments |
| 8272 | '(#:phases |
| 8273 | (modify-phases %standard-phases |
| 8274 | (replace 'check |
| 8275 | (lambda _ |
| 8276 | (invoke "pytest" "-vv" "test.py")))))) |
| 8277 | (native-inputs |
| 8278 | (list python-mock python-pytest)) |
| 8279 | (home-page "https://github.com/minrk/wurlitzer") |
| 8280 | (synopsis "Capture C-level output in context managers") |
| 8281 | (description |
| 8282 | "This library helps to redirect @code{sys.stdout} to a stream or a file |
| 8283 | while executing some piece of code, including C code running within a Python |
| 8284 | process.") |
| 8285 | (license license:expat))) |
| 8286 | |
| 8287 | (define-public python-socksipy-branch |
| 8288 | (package |
| 8289 | (name "python-socksipy-branch") |
| 8290 | (version "1.01") |
| 8291 | (source |
| 8292 | (origin |
| 8293 | (method url-fetch) |
| 8294 | (uri (pypi-uri "SocksiPy-branch" version)) |
| 8295 | (sha256 |
| 8296 | (base32 |
| 8297 | "01l41v4g7fy9fzvinmjxy6zcbhgqaif8dhdqm4w90fwcw9h51a8p")))) |
| 8298 | (build-system python-build-system) |
| 8299 | (arguments |
| 8300 | `(#:tests? #f)) ; There are no tests |
| 8301 | (home-page "https://code.google.com/archive/p/socksipy-branch/") |
| 8302 | (synopsis "Python SOCKS module") |
| 8303 | (description |
| 8304 | "SocksiPy - A Python SOCKS client module. It provides a |
| 8305 | socket-like interface that supports connections to any TCP |
| 8306 | service through the use of a SOCKS4, SOCKS5 or HTTP proxy. |
| 8307 | The original version was developed by Dan Haim, this is a |
| 8308 | branch created by Mario Vilas to address some open issues, |
| 8309 | as the original project seems to have been abandoned circa 2007.") |
| 8310 | (license license:bsd-3))) |
| 8311 | |
| 8312 | (define-public python-socksipychain |
| 8313 | (package |
| 8314 | (name "python-socksipychain") |
| 8315 | (version "2.1.2") |
| 8316 | (source |
| 8317 | (origin |
| 8318 | (method git-fetch) |
| 8319 | (uri (git-reference |
| 8320 | (url "https://github.com/pagekite/PySocksipyChain") |
| 8321 | (commit (string-append "v" version)))) |
| 8322 | (file-name (git-file-name name version)) |
| 8323 | (sha256 |
| 8324 | (base32 |
| 8325 | "02pp994qmiivkdx4y6az5q80l6rzy8g6d2ipvp7kns7lsxvmc2y7")))) |
| 8326 | (build-system python-build-system) |
| 8327 | (arguments |
| 8328 | `(#:tests? #f)) ; Tests try to access the network. |
| 8329 | (propagated-inputs |
| 8330 | (list python-six)) |
| 8331 | (home-page "http://pagekite.net/wiki/Floss/PySocksipyChain/") |
| 8332 | (synopsis "Python SOCKS module with chained proxies support") |
| 8333 | (description |
| 8334 | "SocksiPyChain is a modified version of the SocksiPy SOCKS module, which |
| 8335 | adds support for arbitrary chaining of proxy servers and various modes of |
| 8336 | TLS/SSL encryption. It was developed for use in PageKite, and also includes |
| 8337 | a simple netcat replacement with chaining support.") |
| 8338 | (license license:bsd-3))) |
| 8339 | |
| 8340 | (define-public python-pycodestyle |
| 8341 | (package |
| 8342 | (name "python-pycodestyle") |
| 8343 | (version "2.8.0") |
| 8344 | (source |
| 8345 | (origin |
| 8346 | (method url-fetch) |
| 8347 | (uri (pypi-uri "pycodestyle" version)) |
| 8348 | (sha256 |
| 8349 | (base32 |
| 8350 | "0zxyrg8029lzjhima6l5nk6y0z6lm5wfp9qchz3s33j3xx3mipgd")))) |
| 8351 | (build-system python-build-system) |
| 8352 | (arguments |
| 8353 | `(#:phases |
| 8354 | (modify-phases %standard-phases |
| 8355 | (replace 'check |
| 8356 | (lambda* (#:key tests? #:allow-other-keys) |
| 8357 | (when tests? |
| 8358 | (invoke "pytest" "-vv"))))))) |
| 8359 | (native-inputs |
| 8360 | (list python-pytest)) |
| 8361 | (home-page "https://pycodestyle.readthedocs.io/") |
| 8362 | (synopsis "Python style guide checker") |
| 8363 | (description "@code{pycodestyle} (formerly pep8) is a tool to check |
| 8364 | Python code against some of the style conventions in |
| 8365 | @url{http://www.python.org/dev/peps/pep-0008/,PEP 8}.") |
| 8366 | (license license:expat))) |
| 8367 | |
| 8368 | (define-public python-pycodestyle-2.6 |
| 8369 | (package |
| 8370 | (inherit python-pycodestyle) |
| 8371 | (version "2.6.0") |
| 8372 | (source (origin |
| 8373 | (method url-fetch) |
| 8374 | (uri (pypi-uri "pycodestyle" version)) |
| 8375 | (sha256 |
| 8376 | (base32 |
| 8377 | "0bhr6ia0hmgx3nhgibc9pmkzhlh1zcqk707i5fbxgs702ll7v2n5")))))) |
| 8378 | |
| 8379 | (define-public python-multidict |
| 8380 | (package |
| 8381 | (name "python-multidict") |
| 8382 | (version "5.2.0") |
| 8383 | (source |
| 8384 | (origin |
| 8385 | (method url-fetch) |
| 8386 | (uri (pypi-uri "multidict" version)) |
| 8387 | (sha256 |
| 8388 | (base32 |
| 8389 | "1kjrxav572j45xvr1iy60zb2g8zqvrinzdkl4ax36js4vczckl8d")))) |
| 8390 | (build-system python-build-system) |
| 8391 | (arguments |
| 8392 | '(#:phases (modify-phases %standard-phases |
| 8393 | (replace 'check |
| 8394 | (lambda* (#:key tests? #:allow-other-keys) |
| 8395 | (if tests? |
| 8396 | (invoke "pytest" "-vv") |
| 8397 | (format #t "test suite not run~%"))))))) |
| 8398 | (native-inputs |
| 8399 | (list python-pytest python-pytest-cov)) |
| 8400 | (home-page "https://github.com/aio-libs/multidict/") |
| 8401 | (synopsis "Multidict implementation") |
| 8402 | (description "Multidict is dict-like collection of key-value pairs |
| 8403 | where key might be occurred more than once in the container.") |
| 8404 | (license license:asl2.0))) |
| 8405 | |
| 8406 | (define-public python-orderedmultidict |
| 8407 | (package |
| 8408 | (name "python-orderedmultidict") |
| 8409 | (version "1.0.1") |
| 8410 | (source |
| 8411 | (origin |
| 8412 | (method url-fetch) |
| 8413 | (uri (pypi-uri "orderedmultidict" version)) |
| 8414 | (sha256 |
| 8415 | (base32 |
| 8416 | "1bc2v0yflsxjyyjx4q9wqx0j3bvzcw9z87d5pz4iqac7bsxhn1q4")))) |
| 8417 | (build-system python-build-system) |
| 8418 | (propagated-inputs |
| 8419 | (list python-six)) |
| 8420 | (native-inputs |
| 8421 | (list python-flake8 python-pycodestyle)) |
| 8422 | (home-page "https://github.com/gruns/orderedmultidict") |
| 8423 | (synopsis "Python Ordered Multivalue Dictionary - omdict") |
| 8424 | (description "This package contains a library for ordered multivalue |
| 8425 | dictionaries. A multivalue dictionary is a dictionary that can store |
| 8426 | multiple values for the same key. An ordered multivalue dictionary is a |
| 8427 | multivalue dictionary that retains the order of insertions and deletions.") |
| 8428 | (license license:unlicense))) |
| 8429 | |
| 8430 | (define-public python-autocommand |
| 8431 | (package |
| 8432 | (name "python-autocommand") |
| 8433 | (version "2.2.1") |
| 8434 | (source |
| 8435 | (origin |
| 8436 | (method url-fetch) |
| 8437 | (uri (pypi-uri "autocommand" version)) |
| 8438 | (sha256 |
| 8439 | (base32 "03qp9xx4dq81ljhf56r21gp5j0lpqs1vaw99g0d84i97s3lj1m7y")))) |
| 8440 | (build-system python-build-system) |
| 8441 | (arguments |
| 8442 | (list |
| 8443 | #:phases |
| 8444 | #~(modify-phases %standard-phases |
| 8445 | (replace 'check |
| 8446 | (lambda* (#:key tests? #:allow-other-keys) |
| 8447 | (when tests? |
| 8448 | ;; This test fails with an invalid syntax error on 'task1 = |
| 8449 | ;; asyncio.async(coro_1())' (see: |
| 8450 | ;; https://github.com/Lucretiel/autocommand/issues/20). |
| 8451 | (delete-file "test/test_autoasync.py") |
| 8452 | (invoke "pytest" "-vv"))))))) |
| 8453 | (native-inputs (list python-pytest python-pytest-asyncio)) |
| 8454 | (home-page "https://github.com/Lucretiel/autocommand") |
| 8455 | (synopsis "Python library to build a command-line from a function") |
| 8456 | (description "@code{autocommand} is library to automatically generate and |
| 8457 | run simple @code{argparse} parsers from function signatures.") |
| 8458 | (license license:lgpl3+))) |
| 8459 | |
| 8460 | (define-public python-autopage |
| 8461 | (package |
| 8462 | (name "python-autopage") |
| 8463 | (version "0.5.1") |
| 8464 | (source (origin |
| 8465 | (method url-fetch) |
| 8466 | (uri (pypi-uri "autopage" version)) |
| 8467 | (sha256 |
| 8468 | (base32 |
| 8469 | "169ixll1ncm2a2pcc86665ikjv2lrzs10p6c1w4yj55p3gk3xgh1")))) |
| 8470 | (build-system pyproject-build-system) |
| 8471 | (arguments |
| 8472 | (list |
| 8473 | #:phases |
| 8474 | #~(modify-phases %standard-phases |
| 8475 | (add-before 'check 'disable-e2e-tests |
| 8476 | (lambda _ |
| 8477 | ;; These tests rely on KeyboardInterrupts which do not |
| 8478 | ;; work in the build container. |
| 8479 | (delete-file "autopage/tests/test_end_to_end.py")))))) |
| 8480 | (native-inputs |
| 8481 | (list python-pypa-build |
| 8482 | python-setuptools |
| 8483 | python-wheel |
| 8484 | ;; For tests. |
| 8485 | python-fixtures |
| 8486 | python-pytest |
| 8487 | python-testtools)) |
| 8488 | (home-page "https://github.com/zaneb/autopage") |
| 8489 | (synopsis "Automatic paging for console output") |
| 8490 | (description |
| 8491 | "Autopage is a Python library to automatically display terminal output |
| 8492 | from a program in a @dfn{pager} such as @command{less}.") |
| 8493 | (license license:asl2.0))) |
| 8494 | |
| 8495 | (define-public python-autopep8 |
| 8496 | (package |
| 8497 | (name "python-autopep8") |
| 8498 | (version "1.5.3") |
| 8499 | (source |
| 8500 | (origin |
| 8501 | (method url-fetch) |
| 8502 | (uri (pypi-uri "autopep8" version)) |
| 8503 | (sha256 |
| 8504 | (base32 |
| 8505 | "1w6vh627vrmgfbvrdcxrc3k4gxcldrb2lpgxv9irkdds851qrzb0")))) |
| 8506 | (build-system python-build-system) |
| 8507 | (propagated-inputs |
| 8508 | (list python-pycodestyle python-toml)) |
| 8509 | (home-page "https://github.com/hhatto/autopep8") |
| 8510 | (synopsis "Format Python code according to the PEP 8 style guide") |
| 8511 | (description |
| 8512 | "@code{autopep8} automatically formats Python code to conform to |
| 8513 | the PEP 8 style guide. It uses the pycodestyle utility to determine |
| 8514 | what parts of the code needs to be formatted. @code{autopep8} is |
| 8515 | capable of fixing most of the formatting issues that can be reported |
| 8516 | by pycodestyle.") |
| 8517 | (license (license:non-copyleft |
| 8518 | "https://github.com/hhatto/autopep8/blob/master/LICENSE")))) |
| 8519 | |
| 8520 | (define-public python-distlib |
| 8521 | (package |
| 8522 | (name "python-distlib") |
| 8523 | (version "0.3.5") |
| 8524 | (source |
| 8525 | (origin |
| 8526 | (method url-fetch) |
| 8527 | (uri (pypi-uri "distlib" version)) |
| 8528 | (sha256 |
| 8529 | (base32 |
| 8530 | "1zmjraasgqkz0gfv4mc4w4fj4k2fxj62h1pf5dgb5qqbqwvmgxx7")))) |
| 8531 | (build-system python-build-system) |
| 8532 | (arguments |
| 8533 | (list |
| 8534 | #:phases |
| 8535 | #~(modify-phases %standard-phases |
| 8536 | (replace 'build |
| 8537 | (lambda _ |
| 8538 | ;; ZIP does not support timestamps before 1980. |
| 8539 | (setenv "SOURCE_DATE_EPOCH" "315532800") |
| 8540 | (invoke "python" "-m" "build" "--wheel" "--no-isolation" "."))) |
| 8541 | (add-before 'build 'no-/bin/sh |
| 8542 | (lambda _ |
| 8543 | (substitute* '("distlib/scripts.py" "tests/test_scripts.py") |
| 8544 | (("/bin/sh") (which "sh"))))) |
| 8545 | (replace 'check |
| 8546 | (lambda* (#:key tests? #:allow-other-keys) |
| 8547 | (setenv "HOME" "/tmp") |
| 8548 | ;; NOTE: Any value works, the variable just has to be present. |
| 8549 | (setenv "SKIP_ONLINE" "1") |
| 8550 | (when tests? |
| 8551 | (invoke "pytest" "-vv")))) |
| 8552 | (replace 'install |
| 8553 | (lambda _ |
| 8554 | (let ((whl (car (find-files "dist" "\\.whl$")))) |
| 8555 | (invoke "pip" "--no-cache-dir" "--no-input" |
| 8556 | "install" "--no-deps" "--prefix" #$output whl))))))) |
| 8557 | (native-inputs |
| 8558 | (list python-pypa-build python-pytest)) |
| 8559 | (home-page "https://github.com/pypa/distlib") |
| 8560 | (synopsis "Distribution utilities") |
| 8561 | (description "Distlib is a library which implements low-level functions that |
| 8562 | relate to packaging and distribution of Python software. It is intended to be |
| 8563 | used as the basis for third-party packaging tools.") |
| 8564 | (license license:psfl))) |
| 8565 | |
| 8566 | (define-public python-distutils-extra |
| 8567 | (package |
| 8568 | (name "python-distutils-extra") |
| 8569 | (version "2.38") |
| 8570 | (source |
| 8571 | (origin |
| 8572 | (method url-fetch) |
| 8573 | (uri (string-append "https://launchpad.net/python-distutils-extra/trunk/" |
| 8574 | version "/+download/python-distutils-extra-" |
| 8575 | version ".tar.gz")) |
| 8576 | (sha256 |
| 8577 | (base32 |
| 8578 | "0lx15kcbby9zisx33p2h5hgakgwh2bvh0ibag8z0px4j6ifhs41x")))) |
| 8579 | (build-system python-build-system) |
| 8580 | (home-page "https://launchpad.net/python-distutils-extra/") |
| 8581 | (synopsis "Enhancements to Python's distutils") |
| 8582 | (description |
| 8583 | "The python-distutils-extra module enables you to easily integrate |
| 8584 | gettext support, themed icons, and scrollkeeper-based documentation into |
| 8585 | Python's distutils.") |
| 8586 | (license license:gpl2))) |
| 8587 | |
| 8588 | (define-public python-olefile |
| 8589 | (package |
| 8590 | (name "python-olefile") |
| 8591 | (version "0.46") |
| 8592 | (source |
| 8593 | (origin |
| 8594 | (method url-fetch) |
| 8595 | (uri (string-append "https://github.com/decalage2/olefile/releases/" |
| 8596 | "download/v" version "/olefile-" version ".tar.gz")) |
| 8597 | (file-name (string-append name "-" version ".tar.gz")) |
| 8598 | (sha256 |
| 8599 | (base32 |
| 8600 | "1kjxh4gr651hpqkjfv89cfzr40hyvf3vjlda7mifiail83j7j07m")))) |
| 8601 | (build-system python-build-system) |
| 8602 | (home-page "https://www.decalage.info/python/olefileio") |
| 8603 | (synopsis "Read and write Microsoft OLE2 files") |
| 8604 | (description |
| 8605 | "@code{olefile} can parse, read and write Microsoft OLE2 files (Structured |
| 8606 | Storage or Compound Document, Microsoft Office). It is an improved version of |
| 8607 | the OleFileIO module from PIL, the Python Image Library.") |
| 8608 | (license license:bsd-3))) |
| 8609 | |
| 8610 | (define-public python-pypdf3 |
| 8611 | (package |
| 8612 | (name "python-pypdf3") |
| 8613 | (version "1.0.5") |
| 8614 | (source |
| 8615 | (origin |
| 8616 | (method url-fetch) |
| 8617 | (uri (pypi-uri "PyPDF3" version)) |
| 8618 | (sha256 |
| 8619 | (base32 "018hlq9q2qa96vw4j7ppq352znykldwy98h2w9qcpkvpi93sjqhc")))) |
| 8620 | (build-system python-build-system) |
| 8621 | (propagated-inputs |
| 8622 | (list python-tqdm)) |
| 8623 | (home-page "https://github.com/sfneal/PyPDF3") |
| 8624 | (synopsis "Utility to read and write PDFs with Python") |
| 8625 | (description "PyPDF3 is a pure-python PDF library capable of splitting, |
| 8626 | merging together, cropping, and transforming the pages of PDF files. It can |
| 8627 | also add custom data, viewing options, and passwords to PDF files. It can |
| 8628 | retrieve text and metadata from PDFs as well as merge entire files together.") |
| 8629 | (license license:bsd-3))) |
| 8630 | |
| 8631 | (define-public python-pikepdf |
| 8632 | (package |
| 8633 | (name "python-pikepdf") |
| 8634 | (version "7.2.0") |
| 8635 | (source |
| 8636 | (origin |
| 8637 | (method url-fetch) |
| 8638 | (uri (pypi-uri "pikepdf" version)) |
| 8639 | (sha256 |
| 8640 | (base32 "1vp3q85l2w7wpc8kqs26ijg3ivvvgj50z7g14p3pc0zdz8vbi0md")))) |
| 8641 | (build-system python-build-system) |
| 8642 | (arguments |
| 8643 | `(#:tests? #false)) ;require python-xmp-toolkit |
| 8644 | (native-inputs |
| 8645 | (list pybind11 |
| 8646 | python-attrs |
| 8647 | python-coverage |
| 8648 | python-hypothesis |
| 8649 | python-psutil |
| 8650 | python-pytest |
| 8651 | python-pytest-cov |
| 8652 | python-pytest-timeout |
| 8653 | python-pytest-xdist |
| 8654 | python-dateutil |
| 8655 | ;; python-xmp-toolkit |
| 8656 | python-tomli)) |
| 8657 | (inputs |
| 8658 | (list qpdf)) |
| 8659 | (propagated-inputs |
| 8660 | (list python-deprecation python-lxml python-packaging python-pillow)) |
| 8661 | (home-page "https://github.com/pikepdf/pikepdf") |
| 8662 | (synopsis "Read and write PDFs with Python") |
| 8663 | (description |
| 8664 | "pikepdf is a Python library for reading and writing PDF files.") |
| 8665 | (license license:mpl2.0))) |
| 8666 | |
| 8667 | (define-public python-pillow |
| 8668 | (package |
| 8669 | (name "python-pillow") |
| 8670 | (version "9.2.0") |
| 8671 | (source (origin |
| 8672 | (method url-fetch) |
| 8673 | (uri (pypi-uri "Pillow" version)) |
| 8674 | (sha256 |
| 8675 | (base32 |
| 8676 | "011wgm1mssjchpva9wsi2a07im9czyjvik137xlp5f0g7vykdrkm")) |
| 8677 | (modules '((guix build utils))) |
| 8678 | (snippet '(begin |
| 8679 | (delete-file-recursively "src/thirdparty"))) |
| 8680 | (patches |
| 8681 | (search-patches "python-pillow-CVE-2022-45199.patch")))) |
| 8682 | (build-system python-build-system) |
| 8683 | (native-inputs (list python-pytest)) |
| 8684 | (inputs (list freetype |
| 8685 | lcms |
| 8686 | libjpeg-turbo |
| 8687 | libtiff |
| 8688 | libwebp |
| 8689 | openjpeg |
| 8690 | zlib)) |
| 8691 | (propagated-inputs (list python-olefile)) |
| 8692 | (arguments |
| 8693 | `(#:phases (modify-phases %standard-phases |
| 8694 | (add-after 'unpack 'patch-ldconfig |
| 8695 | (lambda _ |
| 8696 | (substitute* "setup.py" |
| 8697 | (("\\['/sbin/ldconfig', '-p'\\]") "['true']")))) |
| 8698 | (replace 'check |
| 8699 | (lambda* (#:key outputs inputs tests? #:allow-other-keys) |
| 8700 | (when tests? |
| 8701 | (setenv "HOME" |
| 8702 | (getcwd)) |
| 8703 | (add-installed-pythonpath inputs outputs) |
| 8704 | (invoke "python" "selftest.py" "--installed") |
| 8705 | (invoke "python" "-m" "pytest" "-vv"))))))) |
| 8706 | (home-page "https://python-pillow.org") |
| 8707 | (synopsis "Fork of the Python Imaging Library") |
| 8708 | (description |
| 8709 | "The Python Imaging Library adds image processing capabilities to your |
| 8710 | Python interpreter. This library provides extensive file format support, an |
| 8711 | efficient internal representation, and fairly powerful image processing |
| 8712 | capabilities. The core image library is designed for fast access to data |
| 8713 | stored in a few basic pixel formats. It should provide a solid foundation for |
| 8714 | a general image processing tool.") |
| 8715 | (properties `((cpe-name . "pillow"))) |
| 8716 | (license (license:x11-style |
| 8717 | "http://www.pythonware.com/products/pil/license.htm" |
| 8718 | "The PIL Software License")))) |
| 8719 | |
| 8720 | (define-public python-pillow-2.9 |
| 8721 | (package |
| 8722 | (inherit python-pillow) |
| 8723 | (version "2.9.0") |
| 8724 | (source |
| 8725 | (origin |
| 8726 | (method url-fetch) |
| 8727 | (uri (pypi-uri "Pillow" version)) |
| 8728 | (sha256 |
| 8729 | (base32 |
| 8730 | "0ada7lf3lmbdsqm3b7ja920p1pllyfhmqndr85ikpj77fmz9s5qg")))) |
| 8731 | (arguments |
| 8732 | (substitute-keyword-arguments (package-arguments python-pillow) |
| 8733 | ((#:tests? _ #f) #f))) |
| 8734 | (properties '((hidden? #t))))) |
| 8735 | |
| 8736 | (define-public python-pillow-simd |
| 8737 | (package |
| 8738 | (inherit python-pillow) |
| 8739 | (name "python-pillow-simd") |
| 8740 | (version "9.2.0") |
| 8741 | ;; The PyPI tarball does not include test files. |
| 8742 | (source |
| 8743 | (origin |
| 8744 | (method git-fetch) |
| 8745 | (uri (git-reference |
| 8746 | (url "https://github.com/uploadcare/pillow-simd") |
| 8747 | (commit version))) |
| 8748 | (file-name (git-file-name name version)) |
| 8749 | (sha256 |
| 8750 | (base32 "13wwq7slw2q9djh7n39qdmlrzd9k3x7hdr36wk8qbgp3b6bcgvj6")))) |
| 8751 | (inputs |
| 8752 | (modify-inputs (package-inputs python-pillow) |
| 8753 | (prepend libraqm libimagequant))) |
| 8754 | (home-page "https://github.com/uploadcare/pillow-simd") |
| 8755 | (synopsis "Fork of the Python Imaging Library (Pillow)") |
| 8756 | (description "This package is a fork of Pillow which adds support for SIMD |
| 8757 | parallelism."))) |
| 8758 | |
| 8759 | (define-public python-pixelmatch |
| 8760 | (package |
| 8761 | (name "python-pixelmatch") |
| 8762 | (version "0.3.0") |
| 8763 | (source |
| 8764 | (origin |
| 8765 | (method url-fetch) |
| 8766 | (uri (pypi-uri "pixelmatch" version)) |
| 8767 | (sha256 |
| 8768 | (base32 "16b0cz136dcmj4dbr505igpql8dmqmr9vni5nbaa5kygjfjkdynh")))) |
| 8769 | (build-system python-build-system) |
| 8770 | (native-inputs (list python-pillow)) |
| 8771 | (home-page "https://github.com/whtsky/pixelmatch-py") |
| 8772 | (synopsis "A pixel-level image comparison library") |
| 8773 | (description "This package provides a pixel-level image comparison library |
| 8774 | for Python, originally created to compare screenshots in tests. Its features |
| 8775 | include accurate anti-aliased pixels detection and perceptual color difference |
| 8776 | metrics.") |
| 8777 | (license license:isc))) |
| 8778 | |
| 8779 | (define-public python-imagecodecs |
| 8780 | (package |
| 8781 | (name "python-imagecodecs") |
| 8782 | (version "2021.3.31") |
| 8783 | (source |
| 8784 | (origin |
| 8785 | (method url-fetch) |
| 8786 | (uri (pypi-uri "imagecodecs" version)) |
| 8787 | (sha256 |
| 8788 | (base32 |
| 8789 | "0q7pslb6wd56vbcq2mdxwsiha32mxjr7mgqqfbq5w42q601p9pi0")) |
| 8790 | (modules '((guix build utils))) |
| 8791 | (snippet |
| 8792 | '(begin |
| 8793 | ;; Unbundle 3rd party modules. |
| 8794 | (delete-file-recursively "3rdparty") |
| 8795 | ;; Delete pre-generated Cython files. |
| 8796 | (for-each delete-file (find-files "imagecodecs" "_.*\\.c$")) |
| 8797 | #t)))) |
| 8798 | (build-system python-build-system) |
| 8799 | (arguments |
| 8800 | `(#:tests? #f ; Tests are disabled, because dependencies are missing. |
| 8801 | #:phases |
| 8802 | (modify-phases %standard-phases |
| 8803 | (add-after 'unpack 'create-configuration |
| 8804 | (lambda* (#:key inputs #:allow-other-keys) |
| 8805 | ;; By default everything is enabled. We can selectively disable |
| 8806 | ;; extensions (and thus dependencies) by deleting them from the |
| 8807 | ;; EXTENSIONS dictionary. This is upstream’s preferred way. |
| 8808 | (call-with-output-file "imagecodecs_distributor_setup.py" |
| 8809 | (lambda (port) |
| 8810 | (format port "\ |
| 8811 | def customize_build(EXTENSIONS, OPTIONS): |
| 8812 | del EXTENSIONS['aec'] |
| 8813 | del EXTENSIONS['avif'] |
| 8814 | del EXTENSIONS['bitshuffle'] |
| 8815 | del EXTENSIONS['deflate'] |
| 8816 | del EXTENSIONS['jpeg2k'] |
| 8817 | del EXTENSIONS['jpeg12'] |
| 8818 | del EXTENSIONS['jpegls'] |
| 8819 | del EXTENSIONS['jpegxl'] |
| 8820 | del EXTENSIONS['jpegxr'] |
| 8821 | del EXTENSIONS['lerc'] |
| 8822 | del EXTENSIONS['ljpeg'] |
| 8823 | del EXTENSIONS['lzf'] |
| 8824 | del EXTENSIONS['zfp'] |
| 8825 | del EXTENSIONS['zopfli'] |
| 8826 | OPTIONS['cythonize'] |
| 8827 | "))))) |
| 8828 | ;; XXX: The installed scripts import packages that depend on |
| 8829 | ;; this package; disable import check to avoid the cycle. |
| 8830 | (delete 'sanity-check)))) |
| 8831 | (inputs |
| 8832 | (list c-blosc |
| 8833 | giflib |
| 8834 | brotli |
| 8835 | libjpeg-turbo |
| 8836 | libpng |
| 8837 | libtiff |
| 8838 | libwebp |
| 8839 | lz4 |
| 8840 | snappy |
| 8841 | xz |
| 8842 | zlib |
| 8843 | `(,zstd "lib"))) |
| 8844 | (propagated-inputs |
| 8845 | ;; For the Python library. |
| 8846 | (list python-numpy)) |
| 8847 | (native-inputs |
| 8848 | ;; For building. |
| 8849 | (list python-cython |
| 8850 | ;; For testing. Incomplete. |
| 8851 | ;("python-numcodecs" ,python-numcodecs) |
| 8852 | ;("python-zarr" ,python-zarr) |
| 8853 | ;("python-pytest" ,python-pytest) |
| 8854 | )) |
| 8855 | (home-page "https://www.lfd.uci.edu/~gohlke/") |
| 8856 | (synopsis |
| 8857 | "Image transformation, compression, and decompression codecs") |
| 8858 | (description |
| 8859 | "Imagecodecs is a Python library that provides block-oriented, in-memory |
| 8860 | buffer transformation, compression, and decompression functions for use in the |
| 8861 | tifffile, czifile, and other scientific image input/output modules.") |
| 8862 | (license license:bsd-3))) |
| 8863 | |
| 8864 | (define-public python-property-manager |
| 8865 | (package |
| 8866 | (name "python-property-manager") |
| 8867 | (version "3.0") |
| 8868 | (source |
| 8869 | (origin |
| 8870 | (method url-fetch) |
| 8871 | (uri (pypi-uri "property-manager" version)) |
| 8872 | (sha256 |
| 8873 | (base32 "0m3w4spr8f39xnm65naw29ncal4r453kn7ndqb63rwbsmslnvrwk")))) |
| 8874 | (build-system python-build-system) |
| 8875 | (native-inputs |
| 8876 | (list python-pytest-cov)) |
| 8877 | (propagated-inputs |
| 8878 | (list python-verboselogs |
| 8879 | python-humanfriendly |
| 8880 | python-coloredlogs)) |
| 8881 | (home-page "https://github.com/xolox/python-property-manager") |
| 8882 | (synopsis "Useful property variants for Python programming") |
| 8883 | (description "The @code{property-manager} package defines several custom |
| 8884 | property variants for Python programming including required properties, |
| 8885 | writable properties, cached properties, etc.") |
| 8886 | (license license:expat))) ; MIT license |
| 8887 | |
| 8888 | (define-public python-executing |
| 8889 | (package |
| 8890 | (name "python-executing") |
| 8891 | (version "0.8.2") |
| 8892 | (source |
| 8893 | (origin |
| 8894 | (method url-fetch) |
| 8895 | (uri (pypi-uri "executing" version)) |
| 8896 | (sha256 |
| 8897 | (base32 "08q0xh9fd8k41sqpp23q6fb9bf7yj4y2q6sv30pj36vvk8pg8fy2")))) |
| 8898 | (build-system python-build-system) |
| 8899 | (arguments |
| 8900 | `(#:tests? #f)) ; TODO: tests require python-asttokens |
| 8901 | (native-inputs |
| 8902 | (list python-setuptools-scm python-toml)) |
| 8903 | (home-page "https://github.com/alexmojaki/executing") |
| 8904 | (synopsis "Get information about what a Python frame is currently doing") |
| 8905 | (description "This package lets you get information about what a frame is |
| 8906 | currently doing, particularly the AST node being executed.") |
| 8907 | (license license:expat))) |
| 8908 | |
| 8909 | (define-public python-executor |
| 8910 | (package |
| 8911 | (name "python-executor") |
| 8912 | (version "23.2") |
| 8913 | (source |
| 8914 | (origin |
| 8915 | (method url-fetch) |
| 8916 | (uri (pypi-uri "executor" version)) |
| 8917 | (sha256 |
| 8918 | (base32 "0g83yr54j0vcwhy6h7n0jsd7q0q630kwa6v9kqzlzrm9xj6c3ip1")))) |
| 8919 | (build-system python-build-system) |
| 8920 | (arguments |
| 8921 | `(#:tests? #f)) ; TODO: tests require root/sudo |
| 8922 | (propagated-inputs |
| 8923 | (list python-six |
| 8924 | python-property-manager |
| 8925 | python-fasteners |
| 8926 | python-virtualenv)) |
| 8927 | (home-page "https://github.com/xolox/python-executor") |
| 8928 | (synopsis "Programmer friendly subprocess wrapper") |
| 8929 | (description "The @code{executor} package is a simple wrapper for Python’s |
| 8930 | subprocess module that makes it very easy to handle subprocesses on UNIX |
| 8931 | systems with proper escaping of arguments and error checking currently doing, |
| 8932 | particularly the AST node being executed.") |
| 8933 | (license license:expat))) ; MIT license |
| 8934 | |
| 8935 | (define-public python-roifile |
| 8936 | (package |
| 8937 | (name "python-roifile") |
| 8938 | (version "2020.11.28") |
| 8939 | (source |
| 8940 | (origin |
| 8941 | (method url-fetch) |
| 8942 | (uri (pypi-uri "roifile" version)) |
| 8943 | (sha256 |
| 8944 | (base32 |
| 8945 | "04argnc7qccybkrj9ww18bf81ghsghhh93hnqy3p111rcdlyn66p")))) |
| 8946 | (build-system python-build-system) |
| 8947 | (arguments `(#:tests? #f)) ; there are none |
| 8948 | (propagated-inputs |
| 8949 | (list python-numpy)) |
| 8950 | (home-page "https://www.lfd.uci.edu/~gohlke/") |
| 8951 | (synopsis "Read and write ImageJ ROI format") |
| 8952 | (description "Roifile is a Python library to read, write, create, and plot |
| 8953 | ImageJ ROIs, an undocumented and ImageJ application specific format to store |
| 8954 | regions of interest, geometric shapes, paths, text, etc for image overlays.") |
| 8955 | (license license:bsd-3))) |
| 8956 | |
| 8957 | (define-public python-tifffile |
| 8958 | (package |
| 8959 | (name "python-tifffile") |
| 8960 | (version "2021.4.8") |
| 8961 | (source |
| 8962 | (origin |
| 8963 | (method url-fetch) |
| 8964 | (uri (pypi-uri "tifffile" version)) |
| 8965 | (sha256 |
| 8966 | (base32 |
| 8967 | "16r0hw7shka1bqf28bv198lj2jhf2r9gy3s5zv4nf5cfsfm8pajm")))) |
| 8968 | (build-system python-build-system) |
| 8969 | ;; Tests require lfdfiles, which depends on tifffile |
| 8970 | (arguments `(#:tests? #f)) |
| 8971 | (propagated-inputs |
| 8972 | (list python-numpy python-imagecodecs)) |
| 8973 | (home-page "https://www.lfd.uci.edu/~gohlke/") |
| 8974 | (synopsis "Read and write TIFF(r) files") |
| 8975 | (description "This package lets you read image and metadata from many |
| 8976 | bio-scientific formats such as plain TIFF, BigTIFF, OME-TIFF, STK, LSM, SGI, |
| 8977 | NIH, ImageJ, MicroManager, MD GEL, and FluoView files. It also lets you write |
| 8978 | numpy arrays to TIFF, BigTIFF, and ImageJ hyperstack compatible files.") |
| 8979 | (license license:bsd-3))) |
| 8980 | |
| 8981 | (define-public python-lfdfiles |
| 8982 | (package |
| 8983 | (name "python-lfdfiles") |
| 8984 | (version "2021.2.22") |
| 8985 | (source |
| 8986 | (origin |
| 8987 | (method url-fetch) |
| 8988 | (uri (pypi-uri "lfdfiles" version)) |
| 8989 | (sha256 |
| 8990 | (base32 |
| 8991 | "12fxm4v805dgjrih7x6jnl1wd7y7jw1rkhjs3d4am8s6qk1cbar2")) |
| 8992 | (modules '((guix build utils))) |
| 8993 | (snippet |
| 8994 | '(begin |
| 8995 | ;; Delete pre-generated Cython files. |
| 8996 | (for-each delete-file (find-files "lfdfiles" "_.*\\.c$")) |
| 8997 | #t)))) |
| 8998 | (build-system python-build-system) |
| 8999 | (arguments |
| 9000 | `(#:tests? #f)) ; No tests exist, despite a test dependency on pytest. |
| 9001 | (propagated-inputs |
| 9002 | (list python-click python-numpy python-tifffile)) |
| 9003 | (native-inputs (list python-cython)) |
| 9004 | (home-page "https://www.lfd.uci.edu/~gohlke/") |
| 9005 | (synopsis "Work with LFD data files") |
| 9006 | (description |
| 9007 | "Lfdfiles is a Python library and console script for reading, writing, |
| 9008 | converting, and viewing many of the proprietary file formats used to store |
| 9009 | experimental data and metadata at the Laboratory for Fluorescence Dynamics.") |
| 9010 | (license license:bsd-3))) |
| 9011 | |
| 9012 | (define-public python-ffmpeg-python |
| 9013 | ;; The latest release (0.2.0) is old and its test suite crashs on Python 3.10. |
| 9014 | (let ((commit "df129c7ba30aaa9ffffb81a48f53aa7253b0b4e6") (revision "0")) |
| 9015 | (package |
| 9016 | (name "python-ffmpeg-python") |
| 9017 | (version (git-version "0.2.0" revision commit)) |
| 9018 | (source (origin |
| 9019 | (method git-fetch) |
| 9020 | (uri (git-reference |
| 9021 | (url "https://github.com/kkroening/ffmpeg-python.git") |
| 9022 | (commit commit))) |
| 9023 | (file-name (git-file-name name version)) |
| 9024 | (sha256 |
| 9025 | (base32 |
| 9026 | "1zj4ac37n4igfj21zy405mdlvbpv6jyb12wfpszf8zkhhj2qby4c")))) |
| 9027 | (build-system python-build-system) |
| 9028 | (arguments |
| 9029 | (list |
| 9030 | #:phases |
| 9031 | #~(modify-phases %standard-phases |
| 9032 | (add-after 'unpack 'hardcode-ffmpeg |
| 9033 | (lambda* (#:key inputs #:allow-other-keys) |
| 9034 | (define ffmpeg (search-input-file inputs "bin/ffmpeg")) |
| 9035 | (substitute* "ffmpeg/_run.py" |
| 9036 | (("cmd='ffmpeg'") |
| 9037 | (string-append "cmd='" ffmpeg "'"))) |
| 9038 | (substitute* "ffmpeg/tests/test_ffmpeg.py" |
| 9039 | (("out_file.compile\\(\\) == \\['ffmpeg'") |
| 9040 | (string-append "out_file.compile() == ['" ffmpeg "'"))))) |
| 9041 | ;; Some tests fail with ffmpeg 5+ |
| 9042 | (replace 'check |
| 9043 | (lambda* (#:key tests? #:allow-other-keys) |
| 9044 | (when tests? |
| 9045 | (invoke "pytest" "-vv" |
| 9046 | "-k" "not test_pipe and not test__probe"))))))) |
| 9047 | (inputs (list ffmpeg)) |
| 9048 | (propagated-inputs (list python-future)) |
| 9049 | (native-inputs (list python-future python-numpy python-pytest |
| 9050 | python-pytest-mock python-pytest-runner)) |
| 9051 | (home-page "https://github.com/kkroening/ffmpeg-python") |
| 9052 | (synopsis "Python bindings for FFmpeg with complex filtering support") |
| 9053 | (description |
| 9054 | "ffmpeg-python allows you to write FFmpeg filtergraphs in familiar |
| 9055 | Python terms, taking care of running ffmpeg with the correct command-line |
| 9056 | arguments. It handles arbitrarily large (directed-acyclic) signal graphs.") |
| 9057 | (license license:asl2.0)))) |
| 9058 | |
| 9059 | (define-public python-imageio-ffmpeg |
| 9060 | (package |
| 9061 | (name "python-imageio-ffmpeg") |
| 9062 | (version "0.4.8") |
| 9063 | (source (origin |
| 9064 | (method url-fetch) |
| 9065 | (uri (pypi-uri "imageio-ffmpeg" version)) |
| 9066 | (sha256 |
| 9067 | (base32 |
| 9068 | "1a8as5c42s8yl79gc2nhj6vvkwr81p5ibxp5m1zhn1zy22nhbapx")))) |
| 9069 | (arguments |
| 9070 | (list #:phases |
| 9071 | #~(modify-phases %standard-phases |
| 9072 | (add-after 'unpack 'hardcode-ffmpeg |
| 9073 | (lambda* (#:key inputs #:allow-other-keys) |
| 9074 | (substitute* "imageio_ffmpeg/_utils.py" |
| 9075 | (("os\\.getenv\\(\"IMAGEIO_FFMPEG_EXE\".*\\)" all) |
| 9076 | (string-append "(" all " or \"" |
| 9077 | (search-input-file inputs "bin/ffmpeg") |
| 9078 | "\")")))))))) |
| 9079 | (inputs (list ffmpeg-4)) |
| 9080 | (build-system python-build-system) |
| 9081 | (home-page "https://github.com/imageio/imageio-ffmpeg") |
| 9082 | (synopsis "FFMPEG wrapper for Python") |
| 9083 | (description "This package provides an FFMPEG wrapper for working with video |
| 9084 | files. It implements generator functions for reading and writing data to and |
| 9085 | from FFMPEG, reliably terminating the process when done.") |
| 9086 | (license license:bsd-2))) |
| 9087 | |
| 9088 | (define-public python-imageio |
| 9089 | (package |
| 9090 | (name "python-imageio") |
| 9091 | (version "2.26.0") |
| 9092 | (source |
| 9093 | (origin |
| 9094 | (method url-fetch) |
| 9095 | (uri (pypi-uri "imageio" version)) |
| 9096 | (sha256 |
| 9097 | (base32 |
| 9098 | "0dgddhi5dlpry5j4d3256v09pcziyj3ii47yx0zi68xprm11d7qn")))) |
| 9099 | (build-system pyproject-build-system) |
| 9100 | (arguments |
| 9101 | (list |
| 9102 | #:test-flags #~(list "-m" "not needs_internet") |
| 9103 | #:phases |
| 9104 | #~(modify-phases %standard-phases |
| 9105 | (add-after 'unpack 'fix-source |
| 9106 | (lambda* (#:key inputs #:allow-other-keys) |
| 9107 | (substitute* "imageio/plugins/_freeimage.py" |
| 9108 | (("os\\.getenv\\(\"IMAGEIO_FREEIMAGE_LIB\".*\\)" all) |
| 9109 | (string-append |
| 9110 | "(" all " or \"" |
| 9111 | (search-input-file inputs "lib/libfreeimage.so") |
| 9112 | "\")"))) |
| 9113 | (substitute* "imageio/core/util.py" |
| 9114 | (("\"/var/tmp\"") |
| 9115 | "os.getenv(\"TMPDIR\", \"/tmp\")")))) |
| 9116 | (add-after 'unpack 'fix-failing-tests |
| 9117 | (lambda _ |
| 9118 | (substitute* "tests/test_core.py" |
| 9119 | (("(core\\.load_lib)\\((\\[gllib\\], \\[\\])\\)" |
| 9120 | all fun args) |
| 9121 | (string-append "raises(ValueError, " fun ", " args ")"))) |
| 9122 | (delete-file "tests/test_freeimage.py")))))) |
| 9123 | (inputs (list freeimage)) |
| 9124 | (propagated-inputs |
| 9125 | (list python-imageio-ffmpeg python-numpy python-pillow python-psutil)) |
| 9126 | (native-inputs |
| 9127 | (list python-pytest)) |
| 9128 | (home-page "https://imageio.github.io/") |
| 9129 | (synopsis "Library for reading and writing a wide range of image data") |
| 9130 | (description |
| 9131 | "Imageio is a Python library that provides an easy interface to read and |
| 9132 | write a wide range of image data, including animated images, video, volumetric |
| 9133 | data, and scientific formats.") |
| 9134 | (license license:bsd-2))) |
| 9135 | |
| 9136 | (define-public python-pyvips |
| 9137 | (package |
| 9138 | (name "python-pyvips") |
| 9139 | (version "2.2.1") |
| 9140 | (source |
| 9141 | (origin |
| 9142 | (method url-fetch) |
| 9143 | (uri (pypi-uri "pyvips" version)) |
| 9144 | (sha256 |
| 9145 | (base32 "1dfbwwvnnsk4g2kj1pw654z9jq3mb72l1m8ma29858jpn12vn7dm")))) |
| 9146 | (build-system python-build-system) |
| 9147 | (arguments |
| 9148 | (list #:phases |
| 9149 | #~(modify-phases %standard-phases |
| 9150 | ;; Maybe switch to API mode (i.e., build the C extension)? |
| 9151 | ;; It is advertised as faster to start up and run. |
| 9152 | ;; However, even with ‘pkg-config’ and ‘python-pkgconfig’ in |
| 9153 | ;; ‘native-inputs’, the API mode build fails with: |
| 9154 | ;; |
| 9155 | ;; Falling back to ABI mode. Details: unable to find pkg-config package "vips" |
| 9156 | ;; |
| 9157 | ;; The build doesn't actually fail without the below |
| 9158 | ;; substitution, it's just slower because ‘setup.py’ tries |
| 9159 | ;; (unsuccessfully) to download the Python ‘pkgconfig’ module. |
| 9160 | (add-after 'unpack 'fix-build |
| 9161 | (lambda _ |
| 9162 | (substitute* "setup.py" |
| 9163 | (("^( +setup_)API\\(\\)\n" _ prefix) |
| 9164 | (string-append prefix "ABI()\n"))))) |
| 9165 | (add-after 'unpack 'fix-paths |
| 9166 | (lambda _ |
| 9167 | (substitute* "pyvips/__init__.py" |
| 9168 | (("^( +_vips_libname) = '(libvips.so.42)'" |
| 9169 | _ var libname) |
| 9170 | (format #f "~a = '~a/lib/~a'" |
| 9171 | var #$(this-package-input "vips") libname)) |
| 9172 | (("^( +_gobject_libname) = '(libgobject-2.0.so.0)'" |
| 9173 | _ var libname) |
| 9174 | (format #f "~a = '~a/lib/~a'" |
| 9175 | var #$(this-package-input "glib") libname))))) |
| 9176 | (replace 'check |
| 9177 | (lambda* (#:key tests? #:allow-other-keys) |
| 9178 | (when tests? |
| 9179 | (invoke "python" "setup.py" "test"))))))) |
| 9180 | (native-inputs |
| 9181 | (list python-pyperf |
| 9182 | python-pytest |
| 9183 | python-pytest-flake8 |
| 9184 | python-pytest-runner)) |
| 9185 | (inputs |
| 9186 | (list glib vips)) |
| 9187 | (propagated-inputs |
| 9188 | (list python-cffi)) |
| 9189 | (home-page "https://github.com/libvips/pyvips") |
| 9190 | (synopsis "Python bindings for VIPS") |
| 9191 | (description "The @code{pyvips} package provides Python bindings for VIPS, |
| 9192 | a multithreaded image-processing system with low memory needs.") |
| 9193 | (license license:expat))) |
| 9194 | |
| 9195 | (define-public python-pycparser |
| 9196 | (package |
| 9197 | (name "python-pycparser") |
| 9198 | (version "2.21") |
| 9199 | (source |
| 9200 | (origin |
| 9201 | (method url-fetch) |
| 9202 | (uri (pypi-uri "pycparser" version)) |
| 9203 | (sha256 |
| 9204 | (base32 |
| 9205 | "01kjlyn5w2nn2saj8w1rhq7v26328pd91xwgqn32z1zp2bngsi76")))) |
| 9206 | (outputs '("out" "doc")) |
| 9207 | (build-system python-build-system) |
| 9208 | (arguments |
| 9209 | `(#:phases |
| 9210 | (modify-phases %standard-phases |
| 9211 | (replace 'check |
| 9212 | (lambda _ |
| 9213 | (invoke "python" "-m" "unittest" "discover"))) |
| 9214 | (add-after 'install 'install-doc |
| 9215 | (lambda* (#:key outputs #:allow-other-keys) |
| 9216 | (let* ((data (string-append (assoc-ref outputs "doc") "/share")) |
| 9217 | (doc (string-append data "/doc/" ,name "-" ,version)) |
| 9218 | (examples (string-append doc "/examples"))) |
| 9219 | (mkdir-p examples) |
| 9220 | (for-each (lambda (file) |
| 9221 | (copy-file (string-append "." file) |
| 9222 | (string-append doc file))) |
| 9223 | '("/README.rst" "/CHANGES" "/LICENSE")) |
| 9224 | (copy-recursively "examples" examples))))))) |
| 9225 | (home-page "https://github.com/eliben/pycparser") |
| 9226 | (synopsis "C parser in Python") |
| 9227 | (description |
| 9228 | "Pycparser is a complete parser of the C language, written in pure Python |
| 9229 | using the PLY parsing library. It parses C code into an AST and can serve as |
| 9230 | a front-end for C compilers or analysis tools.") |
| 9231 | (license license:bsd-3))) |
| 9232 | |
| 9233 | (define-public python2-pycparser |
| 9234 | (package-with-python2 python-pycparser)) |
| 9235 | |
| 9236 | (define-public python-xlsxwriter |
| 9237 | (package |
| 9238 | (name "python-xlsxwriter") |
| 9239 | (version "3.0.3") |
| 9240 | (source |
| 9241 | (origin |
| 9242 | ;; There are no tests in the PyPI tarball. |
| 9243 | (method git-fetch) |
| 9244 | (uri (git-reference |
| 9245 | (url "https://github.com/jmcnamara/XlsxWriter") |
| 9246 | (commit (string-append "RELEASE_" version)))) |
| 9247 | (file-name (git-file-name name version)) |
| 9248 | (sha256 |
| 9249 | (base32 "1lr7mmik6r4zns069i4zfx1cnwhz6snmlh2zsiry0cwx8cv33wpm")))) |
| 9250 | (build-system python-build-system) |
| 9251 | (home-page "https://github.com/jmcnamara/XlsxWriter") |
| 9252 | (synopsis "Python module for creating Excel XLSX files") |
| 9253 | (description |
| 9254 | "XlsxWriter is a Python module that can be used to write text, numbers, |
| 9255 | formulas and hyperlinks to multiple worksheets in an Excel 2007+ XLSX file.") |
| 9256 | (license license:bsd-2))) |
| 9257 | |
| 9258 | (define-public python-pywavelets |
| 9259 | (package |
| 9260 | (name "python-pywavelets") |
| 9261 | (version "1.2.0") |
| 9262 | (home-page "https://github.com/PyWavelets/pywt") |
| 9263 | (source (origin |
| 9264 | (method url-fetch) |
| 9265 | (uri (pypi-uri "PyWavelets" version)) |
| 9266 | (sha256 |
| 9267 | (base32 |
| 9268 | "13csbr6ls9q9ww53z2xwwsj0hpsz88rj2iwp623h0kmv8yq6kgbc")) |
| 9269 | (snippet |
| 9270 | #~(begin |
| 9271 | (use-modules ((guix build utils))) |
| 9272 | (for-each delete-file |
| 9273 | (list |
| 9274 | "pywt/_extensions/_cwt.c" |
| 9275 | "pywt/_extensions/_dwt.c" |
| 9276 | "pywt/_extensions/_pywt.c" |
| 9277 | "pywt/_extensions/_pywt.h" |
| 9278 | "pywt/_extensions/_swt.c")))))) |
| 9279 | (build-system python-build-system) |
| 9280 | (arguments |
| 9281 | '(#:modules ((ice-9 ftw) |
| 9282 | (srfi srfi-1) |
| 9283 | (srfi srfi-26) |
| 9284 | (guix build utils) |
| 9285 | (guix build python-build-system)) |
| 9286 | #:phases |
| 9287 | (modify-phases %standard-phases |
| 9288 | (replace 'check |
| 9289 | (lambda _ |
| 9290 | (let ((cwd (getcwd)) |
| 9291 | (libdir (find (cut string-prefix? "lib." <>) |
| 9292 | (scandir "build")))) |
| 9293 | (with-directory-excursion (string-append cwd "/build/" libdir) |
| 9294 | (invoke "pytest" "-vv")))))))) |
| 9295 | (native-inputs |
| 9296 | (list python-cython |
| 9297 | python-matplotlib ;for tests |
| 9298 | python-pytest)) |
| 9299 | (propagated-inputs |
| 9300 | (list python-numpy)) |
| 9301 | (synopsis "Wavelet transforms in Python") |
| 9302 | (description |
| 9303 | "PyWavelets is a library for wavelet transforms in Python. Wavelets are |
| 9304 | mathematical basis functions that are localized in both time and frequency. |
| 9305 | Wavelet transforms are time-frequency transforms employing wavelets. They are |
| 9306 | similar to Fourier transforms, the difference being that Fourier transforms are |
| 9307 | localized only in frequency instead of in time and frequency.") |
| 9308 | (license license:expat))) |
| 9309 | |
| 9310 | (define-public python-pywal |
| 9311 | (package |
| 9312 | (name "python-pywal") |
| 9313 | (version "3.3.0") |
| 9314 | (source |
| 9315 | (origin |
| 9316 | (method git-fetch) |
| 9317 | (uri (git-reference |
| 9318 | (url "https://github.com/dylanaraps/pywal") |
| 9319 | (commit version))) |
| 9320 | (file-name (git-file-name name version)) |
| 9321 | (sha256 |
| 9322 | (base32 "039m7dch479hlwddynacdrr0klz6a5bdly5swqbs94hfimficiyf")))) |
| 9323 | (build-system python-build-system) |
| 9324 | (arguments |
| 9325 | `(#:phases |
| 9326 | (modify-phases %standard-phases |
| 9327 | (add-before 'check 'fix-home-directory |
| 9328 | (lambda _ |
| 9329 | ;; Tests fail with "Permission denied: '/homeless-shelter'". |
| 9330 | (setenv "HOME" "/tmp") |
| 9331 | #t))))) |
| 9332 | (inputs |
| 9333 | (list imagemagick)) |
| 9334 | (home-page "https://github.com/dylanaraps/pywal") |
| 9335 | (synopsis "Color palette generator and applicator") |
| 9336 | (description |
| 9337 | "Pywal is a tool that generates a color palette from the dominant colors |
| 9338 | in an image. It then applies the colors system-wide and on-the-fly in all of |
| 9339 | your favourite programs.") |
| 9340 | (license license:expat))) |
| 9341 | |
| 9342 | (define-public python-click-didyoumean |
| 9343 | (package |
| 9344 | (name "python-click-didyoumean") |
| 9345 | (version "0.3.0") |
| 9346 | (source |
| 9347 | (origin |
| 9348 | (method url-fetch) |
| 9349 | (uri (pypi-uri "click-didyoumean" version)) |
| 9350 | (sha256 |
| 9351 | (base32 "0dc0xrmqbw0idpx843ahzzvivmvx3fcfsm3k54lnssyra7cg117i")))) |
| 9352 | (build-system python-build-system) |
| 9353 | (arguments |
| 9354 | `(#:tests? #f)) ; no tests in PyPI and no setup.py in github |
| 9355 | (propagated-inputs |
| 9356 | (list python-click)) |
| 9357 | (home-page "https://github.com/timofurrer/click-didyoumean") |
| 9358 | (synopsis "Git-like did-you-mean feature in Click") |
| 9359 | (description |
| 9360 | "This plugin enables git-like did-you-mean feature in Click.") |
| 9361 | (license license:expat))) |
| 9362 | |
| 9363 | (define-public python-pywinrm |
| 9364 | (package |
| 9365 | (name "python-pywinrm") |
| 9366 | (version "0.4.1") |
| 9367 | (source |
| 9368 | (origin |
| 9369 | (method url-fetch) |
| 9370 | (uri (pypi-uri "pywinrm" version)) |
| 9371 | (sha256 |
| 9372 | (base32 |
| 9373 | "10gabhhg3rgacd5ahmi2r128z99fzbrbx6mz1nnq0dxmhmn5rpjf")))) |
| 9374 | (build-system python-build-system) |
| 9375 | (propagated-inputs |
| 9376 | (list python-six python-requests_ntlm python-xmltodict |
| 9377 | python-kerberos)) |
| 9378 | (native-inputs |
| 9379 | (list python-mock python-pytest)) |
| 9380 | (home-page "https://github.com/diyan/pywinrm/") |
| 9381 | (synopsis |
| 9382 | "Python library for Windows Remote Management (WinRM)") |
| 9383 | (description |
| 9384 | "pywinrm is a Python client for the Windows Remote Management (WinRM) |
| 9385 | service. It allows you to invoke commands on target Windows machines from |
| 9386 | any machine that can run Python.") |
| 9387 | (license license:expat))) |
| 9388 | |
| 9389 | (define-public python-xcffib |
| 9390 | (package |
| 9391 | (name "python-xcffib") |
| 9392 | (version "0.11.1") |
| 9393 | (source |
| 9394 | (origin |
| 9395 | (method url-fetch) |
| 9396 | (uri (pypi-uri "xcffib" version)) |
| 9397 | (sha256 |
| 9398 | (base32 |
| 9399 | "0nkglsm9nbhv238iagmmsjcz6lf1yfdvp5kmspphdj385vz9r50j")))) |
| 9400 | (build-system python-build-system) |
| 9401 | (inputs |
| 9402 | (list libxcb)) |
| 9403 | (propagated-inputs |
| 9404 | (list python-cffi ; used at run time |
| 9405 | python-six)) |
| 9406 | (arguments |
| 9407 | `(;; FIXME: Tests need more work. See ".travis.yml" in the repository. |
| 9408 | #:tests? #f |
| 9409 | #:phases |
| 9410 | (modify-phases %standard-phases |
| 9411 | (add-after 'unpack 'fix-libxcb-path |
| 9412 | (lambda* (#:key inputs #:allow-other-keys) |
| 9413 | (let ((libxcb (assoc-ref inputs "libxcb"))) |
| 9414 | (substitute* '("xcffib/__init__.py") |
| 9415 | (("soname = ctypes.util.find_library.*xcb.*") |
| 9416 | (string-append "soname = \"" libxcb "/lib/libxcb.so\"\n"))) |
| 9417 | #t))) |
| 9418 | (add-after 'install 'install-doc |
| 9419 | (lambda* (#:key outputs #:allow-other-keys) |
| 9420 | (let ((doc (string-append (assoc-ref outputs "out") "/share" |
| 9421 | "/doc/" ,name "-" ,version))) |
| 9422 | (mkdir-p doc) |
| 9423 | (copy-file "README.md" |
| 9424 | (string-append doc "/README.md")) |
| 9425 | #t)))))) |
| 9426 | (home-page "https://github.com/tych0/xcffib") |
| 9427 | (synopsis "XCB Python bindings") |
| 9428 | (description |
| 9429 | "Xcffib is a replacement for xpyb, an XCB Python bindings. It adds |
| 9430 | support for Python 3 and PyPy. It is based on cffi.") |
| 9431 | (license license:expat))) |
| 9432 | |
| 9433 | (define-public python-cairocffi |
| 9434 | (package |
| 9435 | (name "python-cairocffi") |
| 9436 | (version "1.3.0") |
| 9437 | (source |
| 9438 | (origin |
| 9439 | ;; The PyPI archive does not include the documentation, so use Git. |
| 9440 | (method git-fetch) |
| 9441 | (uri (git-reference |
| 9442 | (url "https://github.com/Kozea/cairocffi") |
| 9443 | (commit (string-append "v" version)))) |
| 9444 | (file-name (git-file-name name version)) |
| 9445 | (sha256 |
| 9446 | (base32 |
| 9447 | "0lylyxyyd8csjhn5kxwzrcr6ick6pvvm1wclpmb5ni28jznxn7lb")))) |
| 9448 | (build-system python-build-system) |
| 9449 | (outputs '("out" "doc")) |
| 9450 | (inputs |
| 9451 | (list glib gtk+ gdk-pixbuf cairo)) |
| 9452 | (native-inputs |
| 9453 | (list python-numpy |
| 9454 | python-pytest |
| 9455 | python-pytest-cov |
| 9456 | python-pytest-runner |
| 9457 | python-sphinx |
| 9458 | python-sphinx-rtd-theme)) |
| 9459 | (propagated-inputs |
| 9460 | (list python-xcffib)) ; used at run time |
| 9461 | (arguments |
| 9462 | `(#:phases |
| 9463 | (modify-phases %standard-phases |
| 9464 | (add-after 'unpack 'patch-paths |
| 9465 | (lambda* (#:key inputs #:allow-other-keys) |
| 9466 | (substitute* "cairocffi/__init__.py" |
| 9467 | ;; Hack the dynamic library loading mechanism. |
| 9468 | (("find_library\\(library_name\\)") |
| 9469 | "\"found\"") |
| 9470 | (("filenames = \\(library_filename,\\) \\+ filenames") |
| 9471 | "pass") |
| 9472 | (("libcairo.so.2") |
| 9473 | (search-input-file inputs "/lib/libcairo.so.2"))) |
| 9474 | (substitute* "cairocffi/pixbuf.py" |
| 9475 | (("libgdk_pixbuf-2.0.so.0") |
| 9476 | (search-input-file inputs "/lib/libgdk_pixbuf-2.0.so.0")) |
| 9477 | (("libgobject-2.0.so.0") |
| 9478 | (search-input-file inputs "/lib/libgobject-2.0.so.0")) |
| 9479 | (("libglib-2.0.so.0") |
| 9480 | (search-input-file inputs "/lib/libglib-2.0.so.0")) |
| 9481 | (("libgdk-3.so.0") |
| 9482 | (search-input-file inputs "/lib/libgdk-3.so.0"))))) |
| 9483 | (add-after 'unpack 'disable-linters |
| 9484 | ;; Their check fails; none of our business. |
| 9485 | (lambda _ |
| 9486 | (substitute* "setup.cfg" |
| 9487 | ((".*pytest-flake8.*") "") |
| 9488 | ((".*pytest-isort.*") "") |
| 9489 | (("--flake8") "") |
| 9490 | (("--isort") "")) |
| 9491 | #t)) |
| 9492 | (add-after 'install 'install-doc |
| 9493 | (lambda* (#:key inputs outputs #:allow-other-keys) |
| 9494 | (let* ((data (string-append (assoc-ref outputs "doc") "/share")) |
| 9495 | (doc (string-append data "/doc/" ,name "-" ,version)) |
| 9496 | (html (string-append doc "/html"))) |
| 9497 | (setenv "LD_LIBRARY_PATH" |
| 9498 | (string-append (assoc-ref inputs "cairo") "/lib" ":" |
| 9499 | (assoc-ref inputs "gdk-pixbuf") "/lib")) |
| 9500 | (setenv "LANG" "en_US.UTF-8") |
| 9501 | (mkdir-p html) |
| 9502 | (for-each (lambda (file) |
| 9503 | (copy-file (string-append "." file) |
| 9504 | (string-append doc file))) |
| 9505 | '("/README.rst" "/NEWS.rst")) |
| 9506 | (system* "python" "setup.py" "build_sphinx") |
| 9507 | (copy-recursively "docs/_build/html" html) |
| 9508 | #t)))))) |
| 9509 | (home-page "https://github.com/Kozea/cairocffi") |
| 9510 | (synopsis "Python bindings and object-oriented API for Cairo") |
| 9511 | (description |
| 9512 | "Cairocffi is a CFFI-based drop-in replacement for Pycairo, a set of |
| 9513 | Python bindings and object-oriented API for cairo. Cairo is a 2D vector |
| 9514 | graphics library with support for multiple backends including image buffers, |
| 9515 | PNG, PostScript, PDF, and SVG file output.") |
| 9516 | (license license:bsd-3))) |
| 9517 | |
| 9518 | (define-public python-decorator |
| 9519 | (package |
| 9520 | (name "python-decorator") |
| 9521 | (version "5.0.9") |
| 9522 | (source |
| 9523 | (origin |
| 9524 | (method url-fetch) |
| 9525 | (uri (pypi-uri "decorator" version)) |
| 9526 | (sha256 |
| 9527 | (base32 "1mcy64hllgm938v8k1x2a4g0q9swsnrfnsvhz59kr28a6ajgpv3j")))) |
| 9528 | (build-system python-build-system) |
| 9529 | (home-page "https://pypi.org/project/decorator/") |
| 9530 | (synopsis "Python module to simplify usage of decorators") |
| 9531 | (description |
| 9532 | "The aim of the decorator module is to simplify the usage of decorators |
| 9533 | for the average programmer, and to popularize decorators usage giving examples |
| 9534 | of useful decorators, such as memoize, tracing, redirecting_stdout, locked, |
| 9535 | etc. The core of this module is a decorator factory.") |
| 9536 | (license license:expat))) |
| 9537 | |
| 9538 | |
| 9539 | (define-public python-drmaa |
| 9540 | (package |
| 9541 | (name "python-drmaa") |
| 9542 | (version "0.7.7") |
| 9543 | (source |
| 9544 | (origin |
| 9545 | (method url-fetch) |
| 9546 | (uri (pypi-uri "drmaa" version)) |
| 9547 | (sha256 |
| 9548 | (base32 "0xzqriqyvk5b8hszbavsyxd29wm3sxirm8zvvdm73rs2iq7w4hkx")))) |
| 9549 | (build-system python-build-system) |
| 9550 | ;; The test suite requires libdrmaa which is provided by the cluster |
| 9551 | ;; environment. At runtime the environment variable DRMAA_LIBRARY_PATH |
| 9552 | ;; should be set to the path of the libdrmaa library. |
| 9553 | (arguments |
| 9554 | '(#:tests? #f |
| 9555 | #:phases (modify-phases %standard-phases |
| 9556 | ;; Loading the library fails because DRMAA_LIBRARY_PATH |
| 9557 | ;; is not configured. |
| 9558 | (delete 'sanity-check)))) |
| 9559 | (home-page "https://pypi.org/project/drmaa/") |
| 9560 | (synopsis "Python bindings for the DRMAA library") |
| 9561 | (description |
| 9562 | "A Python package for Distributed Resource Management (DRM) job |
| 9563 | submission and control. This package is an implementation of the DRMAA 1.0 |
| 9564 | Python language binding specification.") |
| 9565 | (license license:bsd-3))) |
| 9566 | |
| 9567 | (define-public python-grako |
| 9568 | (package |
| 9569 | (name "python-grako") |
| 9570 | (version "3.99.9") |
| 9571 | (source |
| 9572 | (origin |
| 9573 | (method url-fetch) |
| 9574 | (uri |
| 9575 | (pypi-uri "grako" version ".zip")) |
| 9576 | (sha256 |
| 9577 | (base32 |
| 9578 | "0r63i68wcnv63rfjkasq1ah81frz61a6mzbcnaxhrkdpx84p7hzw")))) |
| 9579 | (build-system python-build-system) |
| 9580 | (arguments '(#:tests? #f)) ; Test file 'grako.ebnf' is missing from archive. |
| 9581 | (native-inputs |
| 9582 | (list unzip python-pytest python-pytest-runner)) |
| 9583 | (home-page "https://bitbucket.org/neogeny/grako") |
| 9584 | (synopsis "EBNF parser generator") |
| 9585 | (description |
| 9586 | "Grako takes a grammar in a variation of EBNF as input, and outputs a |
| 9587 | memoizing PEG/Packrat parser in Python.") |
| 9588 | (license license:bsd-3))) |
| 9589 | |
| 9590 | (define-public python-grandalf |
| 9591 | (package |
| 9592 | (name "python-grandalf") |
| 9593 | (version "0.7") |
| 9594 | (source |
| 9595 | (origin |
| 9596 | ;; There's no source tarball on PyPI. |
| 9597 | (method git-fetch) |
| 9598 | (uri (git-reference |
| 9599 | (url "https://github.com/bdcht/grandalf") |
| 9600 | (commit (string-append "v" version)))) |
| 9601 | (file-name (git-file-name name version)) |
| 9602 | (sha256 |
| 9603 | (base32 |
| 9604 | "03p8w8ljpb87qbyldm3s6b7qi30hfcn43h33iwlgqcf31fjsyr4g")))) |
| 9605 | (build-system python-build-system) |
| 9606 | (arguments |
| 9607 | '(#:phases |
| 9608 | (modify-phases %standard-phases |
| 9609 | (replace 'check |
| 9610 | (lambda _ |
| 9611 | (invoke "python" "setup.py" "pytest")))))) |
| 9612 | (native-inputs |
| 9613 | (list python-pytest python-pytest-runner)) |
| 9614 | (propagated-inputs |
| 9615 | (list python-numpy python-ply)) |
| 9616 | (home-page "https://github.com/bdcht/grandalf") |
| 9617 | (synopsis "Graph and drawing algorithms framework") |
| 9618 | (description |
| 9619 | "Grandalf is a Python package made for experimentations with graphs |
| 9620 | drawing algorithms. It is written in pure Python, and currently implements |
| 9621 | two layouts: the Sugiyama hierarchical layout and the force-driven or energy |
| 9622 | minimization approach. While not as fast or featured as graphviz or other |
| 9623 | libraries like OGDF (C++), it provides a way to walk and draw graphs no larger |
| 9624 | than thousands of nodes, while keeping the source code simple enough to tweak |
| 9625 | and hack any part of it for experimental purpose. With a total of about 1500 |
| 9626 | lines of Python, the code involved in drawing the Sugiyama (dot) layout fits |
| 9627 | in less than 600 lines. The energy minimization approach is comprised of only |
| 9628 | 250 lines! |
| 9629 | |
| 9630 | Grandalf does only 2 not-so-simple things: |
| 9631 | @itemize |
| 9632 | @item computing the nodes (x,y) coordinates (based on provided nodes |
| 9633 | dimensions, and a chosen layout) |
| 9634 | @item routing the edges with lines or nurbs |
| 9635 | @end itemize |
| 9636 | |
| 9637 | It doesn’t depend on any GTK/Qt/whatever graphics toolkit. This means that it |
| 9638 | will help you find where to draw things like nodes and edges, but it’s up to |
| 9639 | you to actually draw things with your favorite toolkit.") |
| 9640 | ;; The user can choose either license. |
| 9641 | (license (list license:gpl2 license:epl1.0)))) |
| 9642 | |
| 9643 | (define-public python-gridmap |
| 9644 | (package |
| 9645 | (name "python-gridmap") |
| 9646 | (version "0.14.0") |
| 9647 | (source |
| 9648 | (origin |
| 9649 | (method git-fetch) |
| 9650 | (uri (git-reference |
| 9651 | (url "https://github.com/pygridtools/gridmap") |
| 9652 | (commit (string-append "v" version)))) |
| 9653 | (file-name (git-file-name name version)) |
| 9654 | (sha256 |
| 9655 | (base32 "0v0sgpg6pz8h61f9aqjf5xk0ipr512bbz8dxzjjylksj135qr19l")))) |
| 9656 | (build-system python-build-system) |
| 9657 | (arguments |
| 9658 | '(#:tests? #f ;FIXME: Requires python-cherrypy. |
| 9659 | #:phases (modify-phases %standard-phases |
| 9660 | ;; Importing the web server module requires cherrypy, too. |
| 9661 | (delete 'sanity-check)))) |
| 9662 | (propagated-inputs |
| 9663 | (list python-psutil python-drmaa python-pyzmq)) |
| 9664 | (home-page "https://github.com/pygridtools/gridmap") |
| 9665 | (synopsis "Create jobs on a cluster directly from Python") |
| 9666 | (description |
| 9667 | "Gridmap is a Python package to allow you to easily create jobs on the |
| 9668 | cluster directly from Python. You can directly map Python functions onto the |
| 9669 | cluster without needing to write any wrapper code yourself.") |
| 9670 | (license license:gpl3+))) |
| 9671 | |
| 9672 | (define-public python-honcho |
| 9673 | (package |
| 9674 | (name "python-honcho") |
| 9675 | (version "1.1.0") |
| 9676 | (source |
| 9677 | (origin |
| 9678 | (method git-fetch) |
| 9679 | (uri (git-reference |
| 9680 | (url "https://github.com/nickstenning/honcho") |
| 9681 | (commit (string-append "v" version)))) |
| 9682 | (file-name (git-file-name name version)) |
| 9683 | (sha256 |
| 9684 | (base32 "1y0r8dw4pqcq7r4n58ixjdg1iy60lp0gxsd7d2jmhals16ij71rj")))) |
| 9685 | (build-system python-build-system) |
| 9686 | (native-inputs |
| 9687 | (list python-pytest python-mock python-tox which)) ;for tests |
| 9688 | (propagated-inputs |
| 9689 | (list python-jinja2)) |
| 9690 | (arguments |
| 9691 | `(#:phases |
| 9692 | (modify-phases %standard-phases |
| 9693 | (delete 'check) |
| 9694 | (add-after 'install 'check |
| 9695 | (lambda* (#:key outputs inputs #:allow-other-keys) |
| 9696 | ;; fix honcho path in testsuite |
| 9697 | (substitute* "tests/conftest.py" |
| 9698 | (("'honcho'") (string-append "'" (assoc-ref outputs "out") |
| 9699 | "/bin/honcho" "'"))) |
| 9700 | ;; It's easier to run tests after install. |
| 9701 | ;; Make installed package available for running the tests |
| 9702 | (add-installed-pythonpath inputs outputs) |
| 9703 | ;; Skip failing test_export |
| 9704 | (invoke "py.test" "-v" "-k" "not test_export")))))) |
| 9705 | (home-page "https://github.com/nickstenning/honcho") |
| 9706 | (synopsis "Manage Procfile-based applications") |
| 9707 | (description |
| 9708 | "A Procfile is a file which describes how to run an application |
| 9709 | consisting of several processes. honcho starts all listed processes. |
| 9710 | The output of all running processes is collected by honcho and |
| 9711 | displayed.") |
| 9712 | (license license:expat))) |
| 9713 | |
| 9714 | (define-public python-pebble |
| 9715 | (package |
| 9716 | (name "python-pebble") |
| 9717 | (version "4.6.1") |
| 9718 | (source |
| 9719 | (origin |
| 9720 | (method url-fetch) |
| 9721 | (uri (pypi-uri "Pebble" version)) |
| 9722 | (sha256 |
| 9723 | (base32 "16siqc3brbk7dp4d9sg48bjl6a8wyy24aib3il1hf4y2624draxh")))) |
| 9724 | (build-system python-build-system) |
| 9725 | (native-inputs |
| 9726 | (list python-pytest)) |
| 9727 | (arguments |
| 9728 | `(#:phases |
| 9729 | (modify-phases %standard-phases |
| 9730 | (replace 'check |
| 9731 | (lambda _ (invoke "python" "-m" "pytest" "-sv")))))) |
| 9732 | (home-page "https://github.com/noxdafox/pebble") |
| 9733 | (synopsis "Threading and multiprocessing for Python") |
| 9734 | (description |
| 9735 | "Pebble aims to help manage threads and processes in an easier way. It |
| 9736 | wraps Python's standard library threading and multiprocessing objects.") |
| 9737 | (license license:lgpl3+))) |
| 9738 | |
| 9739 | (define-public python-pexpect |
| 9740 | (package |
| 9741 | (name "python-pexpect") |
| 9742 | (version "4.8.0") |
| 9743 | (source |
| 9744 | (origin |
| 9745 | (method url-fetch) |
| 9746 | (uri (pypi-uri "pexpect" version)) |
| 9747 | (sha256 |
| 9748 | (base32 "032cg337h8awydgypz6f4wx848lw8dyrj4zy988x0lyib4ws8rgw")))) |
| 9749 | (build-system python-build-system) |
| 9750 | (arguments |
| 9751 | `(#:phases |
| 9752 | (modify-phases %standard-phases |
| 9753 | (add-before 'check 'prepare-tests |
| 9754 | (lambda _ |
| 9755 | (substitute* (find-files "tests") |
| 9756 | (("/bin/ls") (which "ls")) |
| 9757 | (("/bin/echo") (which "echo")) |
| 9758 | (("/bin/which") (which "which")) |
| 9759 | ;; Many tests try to use the /bin directory which |
| 9760 | ;; is not present in the build environment. |
| 9761 | ;; Use one that's non-empty and unlikely to change. |
| 9762 | (("/bin'") "/dev'") |
| 9763 | ;; Disable failing test. See upstream bug report |
| 9764 | ;; https://github.com/pexpect/pexpect/issues/568 |
| 9765 | (("def test_bash") "def _test_bash")) |
| 9766 | ;; XXX: Socket connection test gets "Connection reset by peer". |
| 9767 | ;; Why does it not work? Delete for now. |
| 9768 | (delete-file "tests/test_socket.py") |
| 9769 | #t)) |
| 9770 | (replace 'check (lambda _ (invoke "nosetests" "-v")))))) |
| 9771 | (native-inputs |
| 9772 | `(("python-nose" ,python-nose) |
| 9773 | ("python-pytest" ,python-pytest) |
| 9774 | ("man-db" ,man-db) |
| 9775 | ("which" ,which) |
| 9776 | ("bash-full" ,bash))) ;full Bash for 'test_replwrap.py' |
| 9777 | (propagated-inputs |
| 9778 | (list python-ptyprocess)) |
| 9779 | (home-page "https://pexpect.readthedocs.org/") |
| 9780 | (synopsis "Controlling interactive console applications") |
| 9781 | (description |
| 9782 | "Pexpect is a pure Python module for spawning child applications; |
| 9783 | controlling them; and responding to expected patterns in their output. |
| 9784 | Pexpect works like Don Libes’ Expect. Pexpect allows your script to spawn a |
| 9785 | child application and control it as if a human were typing commands.") |
| 9786 | (license license:isc))) |
| 9787 | |
| 9788 | (define-public python-sexpdata |
| 9789 | (package |
| 9790 | (name "python-sexpdata") |
| 9791 | (version "0.0.3") |
| 9792 | (source |
| 9793 | (origin |
| 9794 | (method url-fetch) |
| 9795 | (uri (pypi-uri "sexpdata" version)) |
| 9796 | (sha256 |
| 9797 | (base32 |
| 9798 | "1q4lsjyzzqrdv64l0pv4ij9nd8gqhvxqcrpxc2xpxs652sk2gj0s")))) |
| 9799 | (build-system python-build-system) |
| 9800 | (home-page "https://github.com/jd-boyd/sexpdata") |
| 9801 | (synopsis "S-expression parser for Python") |
| 9802 | (description |
| 9803 | "Sexpdata is an S-expression parser/serializer. It has load and dump |
| 9804 | functions like pickle, json or PyYAML module.") |
| 9805 | (license license:bsd-3))) |
| 9806 | |
| 9807 | (define-public python-pathlib2 |
| 9808 | (package |
| 9809 | (name "python-pathlib2") |
| 9810 | (version "2.3.7.post1") |
| 9811 | (source |
| 9812 | (origin |
| 9813 | (method url-fetch) |
| 9814 | (uri (pypi-uri "pathlib2" version)) |
| 9815 | (sha256 |
| 9816 | (base32 |
| 9817 | "0hf62d0lsf37vnr5fxqp5rfn85njgsr45j4rw71w10wbi6nyvq4z")))) |
| 9818 | (build-system python-build-system) |
| 9819 | (propagated-inputs |
| 9820 | (list python-scandir python-six)) |
| 9821 | (home-page "https://pypi.org/project/pathlib2/") |
| 9822 | (synopsis "Object-oriented file system paths") |
| 9823 | (description "The goal of pathlib2 is to provide a backport of the |
| 9824 | standard @code{pathlib} module which tracks the standard library module, so |
| 9825 | all the newest features of the standard @code{pathlib} can be used also on |
| 9826 | older Python versions.") |
| 9827 | (license license:expat))) |
| 9828 | |
| 9829 | (define-public python-pathy |
| 9830 | (package |
| 9831 | (name "python-pathy") |
| 9832 | (version "0.10.1") |
| 9833 | (source (origin |
| 9834 | (method url-fetch) |
| 9835 | (uri (pypi-uri "pathy" version)) |
| 9836 | (sha256 |
| 9837 | (base32 |
| 9838 | "12v196q3rai33cfzrmb9pqfqv7ailngssjdrzdf8gzym9hdygmjc")))) |
| 9839 | (build-system pyproject-build-system) |
| 9840 | (propagated-inputs |
| 9841 | (list python-dataclasses python-smart-open python-typer)) |
| 9842 | (native-inputs (list python-mock python-pytest)) |
| 9843 | (home-page "https://github.com/justindujardin/pathy") |
| 9844 | (synopsis "Path interface for local and cloud bucket storage") |
| 9845 | (description "Pathy is a python package (with type annotations) for |
| 9846 | working with Cloud Bucket storage providers using a @code{pathlib} interface. |
| 9847 | It provides @code{pathlib.Path} subclasses for local and cloud bucket |
| 9848 | storage.") |
| 9849 | (license license:asl2.0))) |
| 9850 | |
| 9851 | (define-public python-importlib-resources |
| 9852 | (package |
| 9853 | (name "python-importlib-resources") |
| 9854 | (version "5.12.0") |
| 9855 | (source (origin |
| 9856 | (method url-fetch) |
| 9857 | (uri (pypi-uri "importlib_resources" version)) |
| 9858 | (sha256 |
| 9859 | (base32 |
| 9860 | "1xi2ggdfdj1bg7w728lvy6j3rjqhklalaanzmscpj7awpy4jbs2b")))) |
| 9861 | (build-system pyproject-build-system) |
| 9862 | (arguments |
| 9863 | (list |
| 9864 | #:phases |
| 9865 | '(modify-phases %standard-phases |
| 9866 | ;; The build system insists on ignoring the existing environment and |
| 9867 | ;; running "pip install". |
| 9868 | (add-after 'unpack 'do-not-use-pip-install |
| 9869 | (lambda _ |
| 9870 | (substitute* "pyproject.toml" |
| 9871 | (("^build-backend.*") "\ |
| 9872 | build-backend = \"backend\" |
| 9873 | backend_path = [\"_custom_build\"]\n") |
| 9874 | (("requires = .*") "requires = []\n")) |
| 9875 | (mkdir-p "_custom_build") |
| 9876 | (with-output-to-file "_custom_build/backend.py" |
| 9877 | (lambda _ |
| 9878 | (display "\ |
| 9879 | from setuptools import build_meta as _orig |
| 9880 | from setuptools.build_meta import * |
| 9881 | def get_requires_for_build_wheel(config_settings=None): |
| 9882 | return [] |
| 9883 | def get_requires_for_build_sdist(config_settings=None): |
| 9884 | return [] |
| 9885 | "))) |
| 9886 | (setenv "PYTHONPATH" |
| 9887 | (string-append (getcwd) "/_custom_build"))))))) |
| 9888 | (native-inputs |
| 9889 | (list python-flake8 |
| 9890 | python-pytest |
| 9891 | python-pytest-black |
| 9892 | python-pytest-checkdocs |
| 9893 | python-pytest-cov |
| 9894 | python-pytest-enabler |
| 9895 | python-pytest-flake8 |
| 9896 | python-pytest-mypy |
| 9897 | python-setuptools-57 |
| 9898 | python-setuptools-scm)) |
| 9899 | (propagated-inputs |
| 9900 | (list python-zipp)) |
| 9901 | (home-page "https://importlib-resources.readthedocs.io/") |
| 9902 | (synopsis "Read resources from Python packages") |
| 9903 | (description |
| 9904 | "@code{importlib_resources} is a backport of Python 3's standard library |
| 9905 | @code{importlib.resources} module for Python 2.7, and Python 3.") |
| 9906 | (license license:asl2.0))) |
| 9907 | |
| 9908 | (define-public python-importlib-metadata |
| 9909 | (package |
| 9910 | (name "python-importlib-metadata") |
| 9911 | (version "5.2.0") |
| 9912 | (source |
| 9913 | (origin |
| 9914 | (method url-fetch) |
| 9915 | (uri (pypi-uri "importlib_metadata" version)) |
| 9916 | (sha256 |
| 9917 | (base32 |
| 9918 | "1kf7qclcz820xl5wwjpzcwpfy6shj7ymwh4xzxvpl2xs5gb4hka0")))) |
| 9919 | (build-system python-build-system) |
| 9920 | (arguments |
| 9921 | (list |
| 9922 | #:phases |
| 9923 | #~(modify-phases %standard-phases |
| 9924 | ;; XXX: PEP 517 manual build/install procedures copied from |
| 9925 | ;; python-isort. |
| 9926 | (replace 'build |
| 9927 | (lambda _ |
| 9928 | ;; ZIP does not support timestamps before 1980. |
| 9929 | (setenv "SOURCE_DATE_EPOCH" "315532800") |
| 9930 | (invoke "python" "-m" "build" "--wheel" "--no-isolation" "."))) |
| 9931 | (replace 'install |
| 9932 | (lambda* (#:key outputs #:allow-other-keys) |
| 9933 | (let ((whl (car (find-files "dist" "\\.whl$")))) |
| 9934 | (invoke "pip" "--no-cache-dir" "--no-input" |
| 9935 | "install" "--no-deps" "--prefix" #$output whl)))) |
| 9936 | (replace 'check |
| 9937 | (lambda* (#:key tests? #:allow-other-keys) |
| 9938 | (when tests? |
| 9939 | (invoke "pytest" "-vv" "tests"))))))) |
| 9940 | (propagated-inputs (list python-zipp)) |
| 9941 | (native-inputs |
| 9942 | (list python-pypa-build |
| 9943 | python-pyfakefs |
| 9944 | python-pytest |
| 9945 | python-setuptools-scm)) |
| 9946 | (home-page "https://importlib-metadata.readthedocs.io/") |
| 9947 | (synopsis "Read metadata from Python packages") |
| 9948 | (description |
| 9949 | "@code{importlib_metadata} is a library which provides an API for |
| 9950 | accessing an installed Python package's metadata, such as its entry points or |
| 9951 | its top-level name. This functionality intends to replace most uses of |
| 9952 | @code{pkg_resources} entry point API and metadata API. Along with |
| 9953 | @code{importlib.resources} in Python 3.7 and newer, this can eliminate the |
| 9954 | need to use the older and less efficient @code{pkg_resources} package.") |
| 9955 | (license license:asl2.0))) |
| 9956 | |
| 9957 | (define-public python-importmagic |
| 9958 | (package |
| 9959 | (name "python-importmagic") |
| 9960 | (version "0.1.7") |
| 9961 | (source |
| 9962 | (origin |
| 9963 | (method url-fetch) |
| 9964 | (uri (pypi-uri "importmagic" version)) |
| 9965 | (sha256 |
| 9966 | (base32 |
| 9967 | "1n7qxa1snj06aw45mcfz7bxc46zp7fxj687140g2k6jcnyjmfxrz")))) |
| 9968 | (build-system python-build-system) |
| 9969 | (arguments |
| 9970 | (list #:phases |
| 9971 | #~(modify-phases %standard-phases |
| 9972 | (replace 'check |
| 9973 | (lambda* (#:key tests? #:allow-other-keys) |
| 9974 | (when tests? |
| 9975 | (invoke "pytest" "-v"))))))) |
| 9976 | (native-inputs |
| 9977 | (list python-pytest)) |
| 9978 | (home-page "https://github.com/alecthomas/importmagic") |
| 9979 | (synopsis "Library for adding, removing and managing Python imports") |
| 9980 | (description |
| 9981 | "Importmagic is a Python library for automatically managing imports by |
| 9982 | finding unresolved symbols in Python code and their corresponding imports.") |
| 9983 | (license license:bsd-3))) |
| 9984 | |
| 9985 | (define-public python-inotify-simple |
| 9986 | (package |
| 9987 | (name "python-inotify-simple") |
| 9988 | (version "1.3.5") |
| 9989 | (source |
| 9990 | (origin |
| 9991 | (method git-fetch) |
| 9992 | (uri (git-reference |
| 9993 | (url "https://github.com/chrisjbillington/inotify_simple") |
| 9994 | (commit version))) |
| 9995 | (file-name (git-file-name name version)) |
| 9996 | (sha256 |
| 9997 | (base32 "1dv9svrcz31acyq9smjlnw75xv3x5wpn5h6s8j8h0vrqyl3d7l05")))) |
| 9998 | (build-system python-build-system) |
| 9999 | (home-page |
| 10000 | "https://github.com/chrisjbillington/inotify_simple") |
| 10001 | (synopsis "Simple wrapper around inotify library") |
| 10002 | (description |
| 10003 | "@code{inotify-simple} is a simple wrapper around inotify library.") |
| 10004 | (license license:bsd-3))) |
| 10005 | |
| 10006 | (define-public python-jaraco-classes |
| 10007 | (package |
| 10008 | (name "python-jaraco-classes") |
| 10009 | (version "3.2.1") |
| 10010 | (source |
| 10011 | (origin |
| 10012 | (method url-fetch) |
| 10013 | (uri (pypi-uri "jaraco.classes" version)) |
| 10014 | (sha256 |
| 10015 | (base32 "0d6g7qvfv1jlzbzh6asprqdblqd59grvlvr3nwbdqdqrmwlbfm7d")))) |
| 10016 | (build-system python-build-system) |
| 10017 | (arguments |
| 10018 | (list |
| 10019 | #:phases |
| 10020 | #~(modify-phases %standard-phases |
| 10021 | (replace 'check |
| 10022 | (lambda* (#:key tests? #:allow-other-keys) |
| 10023 | (when tests? |
| 10024 | ;; Do not test the myproject.toml build as it tries to pull |
| 10025 | ;; dependencies from the Internet. |
| 10026 | (invoke "pytest" "-vv" "-k" "not project"))))))) |
| 10027 | (native-inputs |
| 10028 | (list python-pytest |
| 10029 | python-pytest-black |
| 10030 | python-pytest-checkdocs |
| 10031 | python-pytest-cov |
| 10032 | python-pytest-enabler-bootstrap ;OK since not propagated |
| 10033 | python-pytest-flake8 |
| 10034 | python-pytest-mypy |
| 10035 | python-setuptools-scm |
| 10036 | python-wheel)) |
| 10037 | (propagated-inputs (list python-more-itertools)) |
| 10038 | (home-page "https://github.com/jaraco/jaraco.classes") |
| 10039 | (synopsis "Utility functions for Python class constructs") |
| 10040 | (description "This Python library contains utility functions for Python |
| 10041 | class constructs.") |
| 10042 | (license license:expat))) |
| 10043 | |
| 10044 | ;;; Variant used to break a cycle with python-pytest-enabler. |
| 10045 | (define-public python-jaraco-context-bootstrap |
| 10046 | (hidden-package |
| 10047 | (package |
| 10048 | (name "python-jaraco-context-bootstrap") |
| 10049 | (version "4.1.1") |
| 10050 | (source |
| 10051 | (origin |
| 10052 | (method url-fetch) |
| 10053 | (uri (pypi-uri "jaraco.context" version)) |
| 10054 | (sha256 |
| 10055 | (base32 "0hbjm1rpxf4pzmbdp9rh3ali4zqnlcr8m97bhh1nizxvzcpxim7h")))) |
| 10056 | (build-system python-build-system) |
| 10057 | (arguments (list #:tests? #f)) |
| 10058 | (native-inputs (list python-setuptools-scm)) |
| 10059 | (home-page "https://github.com/jaraco/jaraco.context") |
| 10060 | (synopsis "Context managers Python library") |
| 10061 | (description "This Python library provides context managers-related |
| 10062 | procedures.") |
| 10063 | (license license:expat)))) |
| 10064 | |
| 10065 | (define-public python-jaraco-context |
| 10066 | (package/inherit python-jaraco-context-bootstrap |
| 10067 | (name "python-jaraco-context") |
| 10068 | (arguments |
| 10069 | (substitute-keyword-arguments |
| 10070 | (package-arguments python-jaraco-context-bootstrap) |
| 10071 | ((#:tests? _ #f) |
| 10072 | (not (%current-target-system))) |
| 10073 | ((#:phases phases #~%standard-phases) |
| 10074 | #~(modify-phases #$phases |
| 10075 | (replace 'check |
| 10076 | (lambda* (#:key tests? #:allow-other-keys) |
| 10077 | (when tests? |
| 10078 | ;; Do not test the myproject.toml build as it tries to pull |
| 10079 | ;; dependencies from the Internet. |
| 10080 | (invoke "pytest" "-vv" "-k" "not project")))))))) |
| 10081 | (native-inputs |
| 10082 | (modify-inputs |
| 10083 | (package-native-inputs python-jaraco-context-bootstrap) |
| 10084 | (append python-pytest |
| 10085 | python-pytest-black |
| 10086 | python-pytest-checkdocs |
| 10087 | python-pytest-cov |
| 10088 | python-pytest-enabler-bootstrap ;OK since not propagated |
| 10089 | python-pytest-flake8 |
| 10090 | python-pytest-mypy))) |
| 10091 | (properties (alist-delete 'hidden? (package-properties |
| 10092 | python-jaraco-context-bootstrap))))) |
| 10093 | |
| 10094 | ;;; Variant used to break a cycle with python-pytest-enabler. |
| 10095 | (define-public python-jaraco-functools-bootstrap |
| 10096 | (hidden-package |
| 10097 | (package |
| 10098 | (name "python-jaraco-functools-bootstrap") |
| 10099 | (version "3.5.0") |
| 10100 | (source |
| 10101 | (origin |
| 10102 | (method url-fetch) |
| 10103 | (uri (pypi-uri "jaraco.functools" version)) |
| 10104 | (sha256 |
| 10105 | (base32 "186xqzs3bqhjwajnprxy3sc3h0w5vdld8spc1dxjnn9720yykq1i")))) |
| 10106 | (build-system python-build-system) |
| 10107 | (arguments (list #:tests? #f)) |
| 10108 | (native-inputs (list python-setuptools-scm)) |
| 10109 | (propagated-inputs (list python-more-itertools)) |
| 10110 | (home-page "https://github.com/jaraco/jaraco.functools") |
| 10111 | (synopsis "Python library extending Python's @code{functools}") |
| 10112 | (description "This library extends the standard @code{functools} Python |
| 10113 | module with a few extra procedures.") |
| 10114 | (license license:expat)))) |
| 10115 | |
| 10116 | (define-public python-jaraco-functools |
| 10117 | (package/inherit python-jaraco-functools-bootstrap |
| 10118 | (name "python-jaraco-functools") |
| 10119 | (arguments |
| 10120 | (substitute-keyword-arguments |
| 10121 | (package-arguments python-jaraco-functools-bootstrap) |
| 10122 | ((#:tests? _ #f) |
| 10123 | (not (%current-target-system))) |
| 10124 | ((#:phases phases #~%standard-phases) |
| 10125 | #~(modify-phases #$phases |
| 10126 | (replace 'check |
| 10127 | (lambda* (#:key tests? #:allow-other-keys) |
| 10128 | (when tests? |
| 10129 | ;; Do not test the myproject.toml build as it tries to pull |
| 10130 | ;; dependencies from the Internet. Do not run a test that |
| 10131 | ;; tries to emulate a broken proprietary CI set-up, fails |
| 10132 | ;; to do so correctly, and then throws an error about it. |
| 10133 | (invoke "pytest" "-vv" "-k" |
| 10134 | "not project and not test_function_throttled")))))))) |
| 10135 | (native-inputs |
| 10136 | (modify-inputs |
| 10137 | (package-native-inputs python-jaraco-functools-bootstrap) |
| 10138 | (append python-jaraco-classes |
| 10139 | python-pytest |
| 10140 | python-pytest-black |
| 10141 | python-pytest-checkdocs |
| 10142 | python-pytest-cov |
| 10143 | python-pytest-enabler-bootstrap ;OK since not propagated |
| 10144 | python-pytest-flake8 |
| 10145 | python-pytest-mypy))) |
| 10146 | (properties (alist-delete 'hidden? (package-properties |
| 10147 | python-jaraco-functools-bootstrap))))) |
| 10148 | |
| 10149 | (define-public python-jaraco-packaging |
| 10150 | (package |
| 10151 | (name "python-jaraco-packaging") |
| 10152 | (version "6.1") |
| 10153 | (source |
| 10154 | (origin |
| 10155 | (method url-fetch) |
| 10156 | (uri (pypi-uri "jaraco.packaging" version)) |
| 10157 | (sha256 |
| 10158 | (base32 |
| 10159 | "0zimrnkh33b9g8ffw11mjh6kvs54cy5gcjw1h5cl1r7dc833dmkm")))) |
| 10160 | (build-system python-build-system) |
| 10161 | (propagated-inputs |
| 10162 | (list python-pytest |
| 10163 | python-pytest-checkdocs |
| 10164 | python-pytest-flake8 |
| 10165 | python-rst.linker |
| 10166 | python-setuptools |
| 10167 | python-setuptools-scm |
| 10168 | python-six |
| 10169 | python-sphinx)) |
| 10170 | (home-page "https://github.com/jaraco/jaraco.packaging") |
| 10171 | (synopsis "Tools to supplement packaging Python releases") |
| 10172 | (description |
| 10173 | "This package provides various tools to supplement packaging Python |
| 10174 | releases.") |
| 10175 | (license license:expat))) |
| 10176 | |
| 10177 | (define-public python-jaraco-test |
| 10178 | (package |
| 10179 | (name "python-jaraco-test") |
| 10180 | (version "5.3.0") |
| 10181 | (source (origin |
| 10182 | (method url-fetch) |
| 10183 | (uri (pypi-uri "jaraco.test" version)) |
| 10184 | (sha256 |
| 10185 | (base32 |
| 10186 | "0h0x8qmvfkfqvwdx2m7kwhn53sg26k8gkaas7s1730ak772zqrvz")))) |
| 10187 | (build-system pyproject-build-system) |
| 10188 | (arguments |
| 10189 | (list |
| 10190 | #:phases #~(modify-phases %standard-phases |
| 10191 | (replace 'check |
| 10192 | (lambda _ |
| 10193 | (invoke "pytest" "-vv" "-k" "http")))))) |
| 10194 | (propagated-inputs (list python-jaraco-context python-jaraco-functools)) |
| 10195 | (native-inputs (list python-flake8 |
| 10196 | python-pytest |
| 10197 | python-pytest-black |
| 10198 | python-pytest-checkdocs |
| 10199 | python-pytest-cov |
| 10200 | python-pytest-enabler |
| 10201 | python-pytest-flake8 |
| 10202 | python-pytest-mypy)) |
| 10203 | (home-page "https://github.com/jaraco/jaraco.test") |
| 10204 | (synopsis "Testing support by jaraco") |
| 10205 | (description "This package provides testing support by jaraco.") |
| 10206 | (license license:expat))) |
| 10207 | |
| 10208 | (define-public python-simplegeneric |
| 10209 | (package |
| 10210 | (name "python-simplegeneric") |
| 10211 | (version "0.8.1") |
| 10212 | (source |
| 10213 | (origin |
| 10214 | (method url-fetch) |
| 10215 | (uri (pypi-uri "simplegeneric" version ".zip")) |
| 10216 | (sha256 |
| 10217 | (base32 "0wwi1c6md4vkbcsfsf8dklf3vr4mcdj4mpxkanwgb6jb1432x5yw")))) |
| 10218 | (build-system python-build-system) |
| 10219 | (native-inputs |
| 10220 | (list unzip)) |
| 10221 | (home-page "https://cheeseshop.python.org/pypi/simplegeneric") |
| 10222 | (synopsis "Python module for simple generic functions") |
| 10223 | (description |
| 10224 | "The simplegeneric module lets you define simple single-dispatch generic |
| 10225 | functions, akin to Python’s built-in generic functions like @code{len()}, |
| 10226 | @code{iter()} and so on. However, instead of using specially-named methods, |
| 10227 | these generic functions use simple lookup tables, akin to those used by |
| 10228 | e.g. @code{pickle.dump()} and other generic functions found in the Python |
| 10229 | standard library.") |
| 10230 | (license license:zpl2.1))) |
| 10231 | |
| 10232 | (define-public python-ipython-genutils |
| 10233 | ;; TODO: This package is retired, check if can be removed, see description. |
| 10234 | (package |
| 10235 | (name "python-ipython-genutils") |
| 10236 | (version "0.1.0") |
| 10237 | (source |
| 10238 | (origin |
| 10239 | (method url-fetch) |
| 10240 | (uri (pypi-uri "ipython_genutils" version)) |
| 10241 | (sha256 |
| 10242 | (base32 "19l2pp1c64ansr89l3cqh19jdi2ixhssdzx0vz4n6r52a6i281is")))) |
| 10243 | (build-system python-build-system) |
| 10244 | (arguments `(#:tests? #f)) ; no tests |
| 10245 | (home-page "https://ipython.org") |
| 10246 | (synopsis "Vestigial utilities from IPython") |
| 10247 | (description |
| 10248 | "This package provides retired utilities from IPython. No packages |
| 10249 | outside IPython/Jupyter should depend on it. |
| 10250 | |
| 10251 | This package shouldn't exist. It contains some common utilities shared by |
| 10252 | Jupyter and IPython projects during The Big Split. As soon as possible, those |
| 10253 | packages will remove their dependency on this, and this package will go |
| 10254 | away.") |
| 10255 | (license license:bsd-3))) |
| 10256 | |
| 10257 | ;;; Variant used to break a cycle with python-ipykernel. |
| 10258 | (define-public python-ipyparallel-bootstrap |
| 10259 | (hidden-package |
| 10260 | (package |
| 10261 | (name "python-ipyparallel-bootstrap") |
| 10262 | (version "8.2.1") |
| 10263 | (source |
| 10264 | (origin |
| 10265 | (method url-fetch) |
| 10266 | (uri (pypi-uri "ipyparallel" version)) |
| 10267 | (sha256 |
| 10268 | (base32 |
| 10269 | "0wiwfd7870zbmczzn96jqxxjf2zcbcaxnsl1ddn8hspwa8y4frzj")))) |
| 10270 | (build-system python-build-system) |
| 10271 | (arguments |
| 10272 | (list |
| 10273 | #:tests? #f |
| 10274 | #:phases #~(modify-phases %standard-phases |
| 10275 | ;; The python-ipykernel is normally propagated but is |
| 10276 | ;; removed from this package to break the cycle. |
| 10277 | (delete 'sanity-check)))) |
| 10278 | (propagated-inputs |
| 10279 | (list python-dateutil |
| 10280 | python-decorator |
| 10281 | python-entrypoints |
| 10282 | python-ipython |
| 10283 | ;; python-ipykernel is omitted here to break a cycle. |
| 10284 | python-jupyter-client-bootstrap |
| 10285 | python-psutil |
| 10286 | python-pyzmq |
| 10287 | python-tornado-6 |
| 10288 | python-tqdm |
| 10289 | python-traitlets)) |
| 10290 | (home-page "https://ipython.org/") |
| 10291 | (synopsis "Interactive Parallel Computing with IPython") |
| 10292 | (description |
| 10293 | "@code{ipyparallel} is a Python package and collection of CLI scripts for |
| 10294 | controlling clusters for Jupyter. @code{ipyparallel} contains the following |
| 10295 | CLI scripts: |
| 10296 | @enumerate |
| 10297 | @item ipcluster - start/stop a cluster |
| 10298 | @item ipcontroller - start a scheduler |
| 10299 | @item ipengine - start an engine |
| 10300 | @end enumerate") |
| 10301 | (license license:bsd-3)))) |
| 10302 | |
| 10303 | (define-public python-ipyparallel |
| 10304 | (package |
| 10305 | (inherit python-ipyparallel-bootstrap) |
| 10306 | (name "python-ipyparallel") |
| 10307 | (arguments |
| 10308 | (list |
| 10309 | #:phases |
| 10310 | #~(modify-phases %standard-phases |
| 10311 | (replace 'check |
| 10312 | (lambda _ |
| 10313 | (invoke "pytest" "-vv")))))) |
| 10314 | (native-inputs |
| 10315 | (list python-ipython |
| 10316 | python-pytest |
| 10317 | python-pytest-asyncio |
| 10318 | python-pytest-cov |
| 10319 | python-pytest-tornado |
| 10320 | python-testpath)) |
| 10321 | (propagated-inputs |
| 10322 | (modify-inputs (package-propagated-inputs python-ipyparallel-bootstrap) |
| 10323 | (replace "python-jupyter-client-bootstrap" python-jupyter-client) |
| 10324 | (append python-ipykernel))) |
| 10325 | (properties (alist-delete 'hidden? (package-properties |
| 10326 | python-ipyparallel-bootstrap))))) |
| 10327 | |
| 10328 | (define-public python-ipython-cluster-helper |
| 10329 | (package |
| 10330 | (name "python-ipython-cluster-helper") |
| 10331 | (version "0.6.4") |
| 10332 | (source |
| 10333 | (origin |
| 10334 | (method url-fetch) |
| 10335 | (uri (pypi-uri "ipython-cluster-helper" version)) |
| 10336 | (sha256 |
| 10337 | (base32 |
| 10338 | "1l6mlwxlkxpbvawfwk6qffich7ahg9hq2bxfissgz6144p3k4arj")) |
| 10339 | (modules '((guix build utils))) |
| 10340 | (snippet |
| 10341 | '(begin (substitute* "requirements.txt" |
| 10342 | (("ipython.*") "ipython\n")) |
| 10343 | #t)))) |
| 10344 | (build-system python-build-system) |
| 10345 | (arguments |
| 10346 | `(#:tests? #f ; Test suite can't find IPython. |
| 10347 | #:phases |
| 10348 | (modify-phases %standard-phases |
| 10349 | (replace 'check |
| 10350 | (lambda* (#:key inputs outputs tests? #:allow-other-keys) |
| 10351 | (if tests? |
| 10352 | (begin |
| 10353 | (setenv "HOME" (getcwd)) |
| 10354 | (add-installed-pythonpath inputs outputs) |
| 10355 | (invoke "python" "example/example.py" "--local")) |
| 10356 | #t)))))) |
| 10357 | (propagated-inputs |
| 10358 | (list python-ipyparallel |
| 10359 | python-ipython |
| 10360 | python-netifaces |
| 10361 | python-pyzmq |
| 10362 | python-setuptools |
| 10363 | python-six)) |
| 10364 | (home-page "https://github.com/roryk/ipython-cluster-helper") |
| 10365 | (synopsis |
| 10366 | "Simplify IPython cluster start up and use for multiple schedulers") |
| 10367 | (description |
| 10368 | "@code{ipython-cluster-helper} creates a throwaway parallel IPython |
| 10369 | profile, launches a cluster and returns a view. On program exit it shuts the |
| 10370 | cluster down and deletes the throwaway profile.") |
| 10371 | (license license:expat))) |
| 10372 | |
| 10373 | (define-public python-ipython-sql |
| 10374 | (package |
| 10375 | (name "python-ipython-sql") |
| 10376 | (version "0.4.1") |
| 10377 | (source |
| 10378 | (origin |
| 10379 | (method url-fetch) |
| 10380 | (uri (pypi-uri "ipython-sql" version)) |
| 10381 | (sha256 |
| 10382 | (base32 "1r6rz8jgrqzhkf2flwjw75d96g8l7kykmx5wli3q1988w96391ip")))) |
| 10383 | (build-system python-build-system) |
| 10384 | (arguments |
| 10385 | (list #:tests? #f ;must run under IPython |
| 10386 | #:phases |
| 10387 | #~(modify-phases %standard-phases |
| 10388 | (add-after 'unpack 'permit-newer-prettytable |
| 10389 | ;; See https://github.com/catherinedevlin/ipython-sql/issues/202 |
| 10390 | (lambda _ |
| 10391 | (substitute* "setup.py" |
| 10392 | (("prettytable<1") |
| 10393 | "prettytable"))))))) |
| 10394 | (propagated-inputs |
| 10395 | (list python-ipython |
| 10396 | python-ipython-genutils |
| 10397 | python-prettytable |
| 10398 | python-six |
| 10399 | python-sqlalchemy |
| 10400 | python-sqlparse)) |
| 10401 | (home-page "https://github.com/catherinedevlin/ipython-sql") |
| 10402 | (synopsis "RDBMS access via IPython") |
| 10403 | (description "This library connects to a database, using SQLAlchemy URL |
| 10404 | connect strings, then issue SQL commands within IPython or IPython Notebook.") |
| 10405 | (license license:expat))) |
| 10406 | |
| 10407 | (define-public python-traitlets |
| 10408 | (package |
| 10409 | (name "python-traitlets") |
| 10410 | (version "5.9.0") |
| 10411 | (source |
| 10412 | (origin |
| 10413 | (method url-fetch) |
| 10414 | (uri (pypi-uri "traitlets" version)) |
| 10415 | (sha256 |
| 10416 | (base32 |
| 10417 | "1ndslgsan1g5xhrvxrv2x03zcfvjb8nzfd90y1m7bkv8khdf5kgn")))) |
| 10418 | (build-system pyproject-build-system) |
| 10419 | (native-inputs |
| 10420 | (list python-hatchling |
| 10421 | python-pre-commit |
| 10422 | python-pytest |
| 10423 | python-pytest-mock)) |
| 10424 | (home-page "https://ipython.org") |
| 10425 | (synopsis "Configuration system for Python applications") |
| 10426 | (description |
| 10427 | "Traitlets is a framework that lets Python classes have attributes with |
| 10428 | type checking, dynamically calculated default values, and ‘on change’ |
| 10429 | callbacks. The package also includes a mechanism to use traitlets for |
| 10430 | configuration, loading values from files or from command line arguments. This |
| 10431 | is a distinct layer on top of traitlets, so you can use traitlets in your code |
| 10432 | without using the configuration machinery.") |
| 10433 | (license license:bsd-3))) |
| 10434 | |
| 10435 | (define-public python-treelib |
| 10436 | (package |
| 10437 | (name "python-treelib") |
| 10438 | (version "1.6.1") |
| 10439 | (source (origin |
| 10440 | (method url-fetch) |
| 10441 | (uri (pypi-uri "treelib" version)) |
| 10442 | (sha256 |
| 10443 | (base32 |
| 10444 | "1247rv9fbb8pw3xbkbz04q3vnvvva3hcw002gp1clp5psargzgqw")))) |
| 10445 | (build-system python-build-system) |
| 10446 | (propagated-inputs (list python-future)) |
| 10447 | (home-page "https://github.com/caesar0301/treelib") |
| 10448 | (synopsis "Implementation of a tree structure in Python") |
| 10449 | (description |
| 10450 | "This package provides a Python implementation of a tree structure.") |
| 10451 | (license license:asl2.0))) |
| 10452 | |
| 10453 | (define-public python-jupyter-core |
| 10454 | (package |
| 10455 | (name "python-jupyter-core") |
| 10456 | (version "4.10.0") |
| 10457 | (source |
| 10458 | (origin |
| 10459 | (method url-fetch) |
| 10460 | (uri (string-append (pypi-uri "jupyter_core" version))) |
| 10461 | (sha256 |
| 10462 | (base32 |
| 10463 | "1v0s31rmwppdmww135hif03hy164j9kimirh24kxfcbvdfql9pm6")))) |
| 10464 | (build-system python-build-system) |
| 10465 | (arguments |
| 10466 | `(#:phases |
| 10467 | (modify-phases %standard-phases |
| 10468 | (replace 'check |
| 10469 | (lambda* (#:key tests? #:allow-other-keys) |
| 10470 | (when tests? |
| 10471 | ;; Some tests write to $HOME. |
| 10472 | (setenv "HOME" "/tmp") |
| 10473 | (invoke "pytest" "-vv" |
| 10474 | "-k" |
| 10475 | (string-append |
| 10476 | ;; XXX: These tests fail with "ModuleNotFoundError: No |
| 10477 | ;; module named 'jupyter_core'". |
| 10478 | "not test_argv0 and not test_path_priority " |
| 10479 | "and not test_not_on_path"))))) |
| 10480 | (add-after 'unpack 'patch-testsuite |
| 10481 | (lambda _ |
| 10482 | ;; test_not_on_path() and test_path_priority() try to run a test |
| 10483 | ;; that loads jupyter_core, so we need GUIX_PYTHONPATH |
| 10484 | (substitute* "jupyter_core/tests/test_command.py" |
| 10485 | (("env = \\{'PATH': ''\\}") |
| 10486 | "env = {'PATH': '', 'PYTHONPATH': os.environ['GUIX_PYTHONPATH']}") |
| 10487 | (("env = \\{'PATH': str\\(b\\)\\}") |
| 10488 | "env = {'PATH': str(b), 'PYTHONPATH': os.environ['GUIX_PYTHONPATH']}")))) |
| 10489 | ;; Migration is running whenever etc/jupyter exists, but the |
| 10490 | ;; Guix-managed directory will never contain any migratable IPython |
| 10491 | ;; config files and cannot be written to anyway, so just pretend we |
| 10492 | ;; already did that. |
| 10493 | (add-after 'install 'disable-migration |
| 10494 | (lambda* (#:key outputs #:allow-other-keys) |
| 10495 | (mkdir-p (string-append (assoc-ref outputs "out") "/etc/jupyter")) |
| 10496 | (invoke "touch" |
| 10497 | (string-append |
| 10498 | (assoc-ref outputs "out") |
| 10499 | "/etc/jupyter/migrated"))))))) |
| 10500 | (propagated-inputs (list python-traitlets)) |
| 10501 | (native-inputs (list python-pytest)) |
| 10502 | ;; This package provides the `jupyter` binary and thus also exports the |
| 10503 | ;; search paths. |
| 10504 | (native-search-paths |
| 10505 | (list (search-path-specification |
| 10506 | (variable "JUPYTER_CONFIG_PATH") |
| 10507 | (files '("etc/jupyter"))) |
| 10508 | (search-path-specification |
| 10509 | (variable "JUPYTER_PATH") |
| 10510 | (files '("share/jupyter"))))) |
| 10511 | (home-page "https://jupyter.org/") |
| 10512 | (synopsis "Jupyter base package") |
| 10513 | (description |
| 10514 | "Jupyter core is the base package on which Jupyter projects rely.") |
| 10515 | (license license:bsd-3))) |
| 10516 | |
| 10517 | ;; Bootstrap variant of jupyter-client, which breaks the loop between ipykernel |
| 10518 | ;; and jupyter-client by removing the former from its native-inputs and |
| 10519 | ;; disabling tests. |
| 10520 | (define-public python-jupyter-client-bootstrap |
| 10521 | (hidden-package |
| 10522 | (package |
| 10523 | (name "python-jupyter-client-bootstrap") |
| 10524 | (version "7.2.2") |
| 10525 | (source |
| 10526 | (origin |
| 10527 | (method url-fetch) |
| 10528 | (uri (pypi-uri "jupyter_client" version)) |
| 10529 | (sha256 |
| 10530 | (base32 |
| 10531 | "12pbp177bfb3710y1a5598mwn8ffhyzmpll67m0nmalb98savnwg")))) |
| 10532 | (build-system pyproject-build-system) |
| 10533 | (arguments |
| 10534 | (list |
| 10535 | #:tests? #f |
| 10536 | #:phases |
| 10537 | #~(modify-phases %standard-phases |
| 10538 | ;; The deprecation warnings break the tests. |
| 10539 | (add-after 'unpack 'hide-zmq-deprecation-warnings |
| 10540 | (lambda _ |
| 10541 | (substitute* "pyproject.toml" |
| 10542 | (("\"ignore:There is no current event loop:DeprecationWarning:zmq\"," m) |
| 10543 | (string-append m " |
| 10544 | \"ignore:zmq.eventloop.ioloop.*:DeprecationWarning\", |
| 10545 | \"ignore:zmq.tests.BaseZMQTestCase.*:DeprecationWarning\""))))) |
| 10546 | (add-after 'unpack 'set-tool-file-names |
| 10547 | (lambda* (#:key inputs #:allow-other-keys) |
| 10548 | (substitute* "jupyter_client/localinterfaces.py" |
| 10549 | (("'ip'") |
| 10550 | (format #f "'~a'" (search-input-file inputs "sbin/ip"))))))))) |
| 10551 | (inputs (list iproute)) |
| 10552 | (propagated-inputs |
| 10553 | (list python-dateutil |
| 10554 | python-entrypoints |
| 10555 | python-jupyter-core |
| 10556 | python-nest-asyncio |
| 10557 | python-pyzmq |
| 10558 | python-tornado-6 |
| 10559 | python-traitlets)) |
| 10560 | (home-page "https://jupyter.org/") |
| 10561 | (synopsis "Jupyter protocol implementation and client libraries") |
| 10562 | (description |
| 10563 | "The @code{jupyter_client} package contains the reference implementation |
| 10564 | of the Jupyter protocol. It also provides client and kernel management APIs |
| 10565 | for working with kernels, and the @code{jupyter kernelspec} entrypoint for |
| 10566 | installing @code{kernelspec}s for use with Jupyter frontends.") |
| 10567 | (license license:bsd-3)))) |
| 10568 | |
| 10569 | (define-public python-jupyter-client |
| 10570 | (let ((base python-jupyter-client-bootstrap)) |
| 10571 | (package |
| 10572 | (inherit base) |
| 10573 | (name "python-jupyter-client") |
| 10574 | (arguments |
| 10575 | (substitute-keyword-arguments (package-arguments base) |
| 10576 | ((#:tests? _ #f) |
| 10577 | (not (%current-target-system))) |
| 10578 | ((#:phases phases #~%standard-phases) |
| 10579 | #~(modify-phases #$phases |
| 10580 | (replace 'check |
| 10581 | (lambda* (#:key tests? #:allow-other-keys) |
| 10582 | (when tests? |
| 10583 | ;; Some tests try to write to $HOME. |
| 10584 | (setenv "HOME" "/tmp") |
| 10585 | (invoke "pytest" "-vv" |
| 10586 | "-k" |
| 10587 | ;; XXX "RuntimeError: Kernel died before replying |
| 10588 | ;; to kernel_info", but there's no more |
| 10589 | ;; information. |
| 10590 | "not test_start_parallel_process_kernels")))))))) |
| 10591 | (native-inputs |
| 10592 | (list python-pytest |
| 10593 | python-pytest-asyncio |
| 10594 | python-pytest-timeout |
| 10595 | python-async-generator |
| 10596 | python-ipython |
| 10597 | python-ipykernel-bootstrap)) |
| 10598 | (properties (alist-delete 'hidden? (package-properties base)))))) |
| 10599 | |
| 10600 | (define-public python-ipykernel |
| 10601 | (package |
| 10602 | (name "python-ipykernel") |
| 10603 | (version "6.13.0") |
| 10604 | (source |
| 10605 | (origin |
| 10606 | (method url-fetch) |
| 10607 | (uri (pypi-uri "ipykernel" version)) |
| 10608 | (sha256 |
| 10609 | (base32 "0q5yni8h08nadsn53f957p0pjsjhwl2b2lp1hqz3jn0854z2fa0f")))) |
| 10610 | (build-system pyproject-build-system) |
| 10611 | (arguments |
| 10612 | (list |
| 10613 | #:imported-modules `(,@%pyproject-build-system-modules |
| 10614 | (guix build syscalls)) |
| 10615 | #:modules '((guix build pyproject-build-system) |
| 10616 | (guix build syscalls) |
| 10617 | (guix build utils) |
| 10618 | (ice-9 match)) |
| 10619 | #:phases |
| 10620 | #~(modify-phases %standard-phases |
| 10621 | ;; The deprecation warnings break the tests. |
| 10622 | (add-after 'unpack 'hide-zmq-deprecation-warnings |
| 10623 | (lambda _ |
| 10624 | (substitute* "pyproject.toml" |
| 10625 | (("\"ignore:There is no current event loop:DeprecationWarning\"" m) |
| 10626 | (string-append m ", |
| 10627 | \"ignore:make_current is deprecated.*:DeprecationWarning\", |
| 10628 | \"ignore:zmq.eventloop.ioloop.*:DeprecationWarning\", |
| 10629 | \"ignore:zmq.tests.BaseZMQTestCase.*:DeprecationWarning\""))))) |
| 10630 | (replace 'check |
| 10631 | (lambda* (#:key tests? #:allow-other-keys) |
| 10632 | (when tests? |
| 10633 | (match (primitive-fork) |
| 10634 | (0 ;child process |
| 10635 | (set-child-subreaper!) |
| 10636 | ;; XXX: Tini provides proper PID1-like signal handling that |
| 10637 | ;; reaps zombie processes, necessary for the |
| 10638 | ;; 'test_shutdown_subprocesses' test to pass. |
| 10639 | |
| 10640 | ;; TODO: Complete https://issues.guix.gnu.org/30948. |
| 10641 | (setenv "HOME" "/tmp") |
| 10642 | (execlp "tini" "--" "pytest" "-vv")) |
| 10643 | (pid |
| 10644 | (match (waitpid pid) |
| 10645 | ((_ . status) |
| 10646 | (unless (zero? status) |
| 10647 | (error "`pytest' exited with status" |
| 10648 | status))))))))) |
| 10649 | (add-after 'install 'set-python-file-name |
| 10650 | (lambda* (#:key inputs #:allow-other-keys) |
| 10651 | ;; Record the absolute file name of the 'python' executable in |
| 10652 | ;; 'kernel.json'. |
| 10653 | (substitute* (string-append #$output "/share/jupyter" |
| 10654 | "/kernels/python3/kernel.json") |
| 10655 | (("\"python\"") |
| 10656 | (format #f "~s" (search-input-file inputs |
| 10657 | "/bin/python3"))))))))) |
| 10658 | (propagated-inputs |
| 10659 | (list python-debugpy |
| 10660 | python-ipython |
| 10661 | python-jupyter-client ;imported at runtime during connect |
| 10662 | python-matplotlib-inline |
| 10663 | ;;python-nest-asyncio |
| 10664 | ;;python-packaging |
| 10665 | python-psutil |
| 10666 | python-tornado-6 |
| 10667 | python-traitlets)) |
| 10668 | (inputs (list python)) ;for cross compilation |
| 10669 | (native-inputs |
| 10670 | (list python-flaky |
| 10671 | python-ipyparallel-bootstrap |
| 10672 | ;; XXX: Our Pytest package captures its native inputs in its |
| 10673 | ;; wrapper script (such as python-nose), which is used in the code |
| 10674 | ;; and causes deprecation warnings. Using the bootstrap variant |
| 10675 | ;; avoids that. |
| 10676 | python-pytest-bootstrap |
| 10677 | python-pytest-timeout |
| 10678 | tini)) |
| 10679 | (home-page "https://ipython.org") |
| 10680 | (synopsis "IPython Kernel for Jupyter") |
| 10681 | (description "This package provides the IPython kernel for Jupyter.") |
| 10682 | (license license:bsd-3))) |
| 10683 | |
| 10684 | ;; Bootstrap variant of ipykernel, which uses the bootstrap jupyter-client to |
| 10685 | ;; break the cycle between ipykernel and jupyter-client. |
| 10686 | (define-public python-ipykernel-bootstrap |
| 10687 | (let ((parent python-ipykernel)) |
| 10688 | (hidden-package |
| 10689 | (package |
| 10690 | (inherit parent) |
| 10691 | (name "python-ipykernel-bootstrap") |
| 10692 | (arguments (list #:tests? #f |
| 10693 | ;; The package should normally propagate ipykernel, |
| 10694 | ;; left out here to break the cycle. |
| 10695 | #:phases #~(modify-phases %standard-phases |
| 10696 | (delete 'sanity-check)))) |
| 10697 | (native-inputs '()) |
| 10698 | (propagated-inputs |
| 10699 | (modify-inputs (package-propagated-inputs parent) |
| 10700 | (replace "python-jupyter-client" python-jupyter-client-bootstrap) |
| 10701 | (append python-ipyparallel-bootstrap))))))) |
| 10702 | |
| 10703 | (define-public python-pari-jupyter |
| 10704 | (package |
| 10705 | (name "python-pari-jupyter") |
| 10706 | (version "1.4.1") |
| 10707 | (source |
| 10708 | (origin |
| 10709 | (method url-fetch) |
| 10710 | (uri (pypi-uri "pari-jupyter" version)) |
| 10711 | (sha256 |
| 10712 | (base32 |
| 10713 | "1ikqvv335qfrhmlji0iclci6pnm2c3fvnxf031jr1d68j79g6ypd")))) |
| 10714 | (build-system python-build-system) |
| 10715 | (arguments '(#:tests? #f)) ;no test suite |
| 10716 | (inputs |
| 10717 | (list pari-gp readline python-ipykernel)) |
| 10718 | (home-page "https://github.com/sagemath/pari-jupyter") |
| 10719 | (synopsis "Jupyter kernel for PARI/GP") |
| 10720 | (description "The package provides a PARI/GP kernel for Jupyter.") |
| 10721 | (license license:gpl3+))) |
| 10722 | |
| 10723 | (define-public python-backcall |
| 10724 | (package |
| 10725 | (name "python-backcall") |
| 10726 | (version "0.2.0") |
| 10727 | (source |
| 10728 | (origin |
| 10729 | (method url-fetch) |
| 10730 | (uri (pypi-uri "backcall" version)) |
| 10731 | (sha256 |
| 10732 | (base32 |
| 10733 | "07jy4562lvnhkk6kfr3cphmizy88anlhmbwb8kdzlz2ypqkvzgaw")))) |
| 10734 | (build-system python-build-system) |
| 10735 | (home-page "https://github.com/takluyver/backcall/") |
| 10736 | (synopsis "Specifications for callback functions passed in to an API") |
| 10737 | (description |
| 10738 | "If your code lets other people supply callback functions, it's important |
| 10739 | to specify the function signature you expect, and check that functions support |
| 10740 | that. Adding extra parameters later would break other peoples code unless |
| 10741 | you're careful. The @code{backcall} package provides a way of specifying the |
| 10742 | callback signature using a prototype function.") |
| 10743 | (license license:bsd-3))) |
| 10744 | |
| 10745 | (define-public python-pubmed-parser |
| 10746 | (package |
| 10747 | (name "python-pubmed-parser") |
| 10748 | (version "0.3.1") |
| 10749 | (source (origin |
| 10750 | (method git-fetch) |
| 10751 | (uri (git-reference |
| 10752 | (url "https://github.com/titipata/pubmed_parser") |
| 10753 | (commit version))) |
| 10754 | (file-name (git-file-name name version)) |
| 10755 | (sha256 |
| 10756 | (base32 |
| 10757 | "195cmjjg7xdwjj5455h78q7jnxnccia07a19xwndhlkxv7vk9v60")))) |
| 10758 | (build-system pyproject-build-system) |
| 10759 | (propagated-inputs |
| 10760 | (list python-lxml |
| 10761 | python-numpy |
| 10762 | python-requests |
| 10763 | python-six |
| 10764 | python-unidecode)) |
| 10765 | (native-inputs |
| 10766 | (list python-pytest |
| 10767 | python-pytest-cov)) |
| 10768 | (home-page "https://github.com/titipata/pubmed_parser") |
| 10769 | (synopsis "Parser for Pubmed Open-Access Subset and MEDLINE XML repository") |
| 10770 | (description |
| 10771 | "This package provides a Python parser for Pubmed Open-Access Subset and |
| 10772 | MEDLINE XML repository.") |
| 10773 | (license license:expat))) |
| 10774 | |
| 10775 | (define-public python-pure-eval |
| 10776 | (package |
| 10777 | (name "python-pure-eval") |
| 10778 | (version "0.2.2") |
| 10779 | (source |
| 10780 | (origin |
| 10781 | (method url-fetch) |
| 10782 | (uri (pypi-uri "pure_eval" version)) |
| 10783 | (sha256 |
| 10784 | (base32 "1hwsm85cwqwh6d6x4vzcimla2865s6v19ms3ym81ganzyq534i9b")))) |
| 10785 | (build-system python-build-system) |
| 10786 | (native-inputs (list python-pytest python-setuptools-scm)) |
| 10787 | (home-page "https://github.com/alexmojaki/pure_eval") |
| 10788 | (synopsis "Python library to evaluate abstract syntax tree nodes") |
| 10789 | (description "The @code{pure_eval} Python library can safely evaluate |
| 10790 | abstract syntax tree (AST) nodes without side effects.") |
| 10791 | (license license:expat))) |
| 10792 | |
| 10793 | (define-public python-asttokens |
| 10794 | (package |
| 10795 | (name "python-asttokens") |
| 10796 | (version "2.2.1") |
| 10797 | (source |
| 10798 | (origin |
| 10799 | (method url-fetch) |
| 10800 | (uri (pypi-uri "asttokens" version)) |
| 10801 | (sha256 |
| 10802 | (base32 "1wwlpvnrh67z4228841zgpqc46vigslzmbvk2izbfc3g585i28j6")))) |
| 10803 | (build-system python-build-system) |
| 10804 | (propagated-inputs (list python-six)) |
| 10805 | (native-inputs (list python-astroid python-pytest python-setuptools-scm)) |
| 10806 | (home-page "https://github.com/gristlabs/asttokens") |
| 10807 | (synopsis "Python library to annotate abstract syntax trees") |
| 10808 | (description "The @code{asttokens} module annotates Python abstract syntax |
| 10809 | trees (ASTs) with the positions of tokens and text in the source code that |
| 10810 | generated them. It makes it possible for tools that work with logical AST |
| 10811 | nodes to find the particular text that resulted in those nodes, for example |
| 10812 | for automated refactoring or highlighting.") |
| 10813 | (license license:asl2.0))) |
| 10814 | |
| 10815 | (define-public python-littleutils |
| 10816 | (package |
| 10817 | (name "python-littleutils") |
| 10818 | (version "0.2.2") |
| 10819 | (source |
| 10820 | (origin |
| 10821 | (method url-fetch) |
| 10822 | (uri (pypi-uri "littleutils" version)) |
| 10823 | (sha256 |
| 10824 | (base32 "0vwijrylppmk0nbddqvn527r9cg3zw8d6zk6r58hslry42jf7jp6")))) |
| 10825 | (build-system python-build-system) |
| 10826 | (home-page "https://github.com/alexmojaki/littleutils") |
| 10827 | (synopsis "Python utility function collection") |
| 10828 | (description "@code{littleutils} is a small collection of Python utility |
| 10829 | functions, useful in the context of writing unit tests among other uses.") |
| 10830 | (license license:expat))) |
| 10831 | |
| 10832 | (define-public python-stack-data |
| 10833 | (package |
| 10834 | (name "python-stack-data") |
| 10835 | (version "0.2.0") |
| 10836 | (source |
| 10837 | (origin |
| 10838 | (method url-fetch) |
| 10839 | (uri (pypi-uri "stack_data" version)) |
| 10840 | (sha256 |
| 10841 | (base32 "04lfcj5qrn4qikjw89qbdzqwm0xm4bgm4m8rll1rafk3pm0jssa5")))) |
| 10842 | (build-system python-build-system) |
| 10843 | (propagated-inputs (list python-asttokens python-executing python-pure-eval)) |
| 10844 | (native-inputs |
| 10845 | (list python-cython |
| 10846 | python-littleutils |
| 10847 | python-pygments |
| 10848 | python-pytest |
| 10849 | python-setuptools-scm |
| 10850 | python-typeguard)) |
| 10851 | (home-page "https://github.com/alexmojaki/stack_data") |
| 10852 | (synopsis "Python stack frame and traceback manipulation library") |
| 10853 | (description "The @code{stack_data} Python library extracts data from |
| 10854 | stack frames and tracebacks. Is can be used to display more useful tracebacks |
| 10855 | than the default.") |
| 10856 | (license license:expat))) |
| 10857 | |
| 10858 | (define-public python-ipython |
| 10859 | (package |
| 10860 | (name "python-ipython") |
| 10861 | (version "8.5.0") |
| 10862 | (source |
| 10863 | (origin |
| 10864 | (method url-fetch) |
| 10865 | (uri (pypi-uri "ipython" version ".tar.gz")) |
| 10866 | (sha256 |
| 10867 | (base32 "114z175hnv1lgprj06zfcil7lkq013rggjbrc43gsxkmv1fdyyq9")))) |
| 10868 | (build-system python-build-system) |
| 10869 | (arguments |
| 10870 | `(#:phases |
| 10871 | (modify-phases %standard-phases |
| 10872 | (add-after 'unpack 'make-docs-reproducible |
| 10873 | (lambda _ |
| 10874 | (substitute* "IPython/sphinxext/ipython_directive.py" |
| 10875 | ((".*import datetime") "") |
| 10876 | ((".*datetime.datetime.now\\(\\)") "") |
| 10877 | (("%timeit") "# %timeit")))) |
| 10878 | (replace 'check |
| 10879 | (lambda* (#:key inputs outputs tests? #:allow-other-keys) |
| 10880 | (when tests? |
| 10881 | (setenv "HOME" "/tmp/") ;required by some tests |
| 10882 | (invoke "python" "-m" "pytest" "-vv"))))))) |
| 10883 | (inputs (list readline which)) |
| 10884 | (propagated-inputs |
| 10885 | (list python-backcall |
| 10886 | python-decorator |
| 10887 | python-jedi |
| 10888 | python-jinja2 |
| 10889 | python-jsonschema |
| 10890 | python-matplotlib |
| 10891 | python-matplotlib-inline |
| 10892 | python-mistune |
| 10893 | python-nbformat |
| 10894 | python-numpy |
| 10895 | python-numpydoc |
| 10896 | python-pexpect |
| 10897 | python-pickleshare |
| 10898 | python-prompt-toolkit |
| 10899 | python-pygments |
| 10900 | python-pyzmq |
| 10901 | python-simplegeneric |
| 10902 | python-stack-data |
| 10903 | python-terminado |
| 10904 | python-traitlets)) |
| 10905 | (native-inputs |
| 10906 | (list graphviz |
| 10907 | pkg-config |
| 10908 | ;; For tests. |
| 10909 | python-pytest |
| 10910 | python-requests |
| 10911 | python-testpath)) |
| 10912 | (home-page "https://ipython.org") |
| 10913 | (synopsis "IPython is a tool for interactive computing in Python") |
| 10914 | (description |
| 10915 | "IPython provides a rich architecture for interactive computing with: |
| 10916 | Powerful interactive shells, a browser-based notebook, support for interactive |
| 10917 | data visualization, embeddable interpreters and tools for parallel |
| 10918 | computing.") |
| 10919 | (properties '((cpe-name . "ipython"))) |
| 10920 | (license license:bsd-3))) |
| 10921 | |
| 10922 | (define-public python-ipython-documentation |
| 10923 | (package |
| 10924 | (inherit python-ipython) |
| 10925 | (name "python-ipython-documentation") |
| 10926 | (version (package-version python-ipython)) |
| 10927 | (arguments |
| 10928 | (list |
| 10929 | #:phases |
| 10930 | #~(modify-phases %standard-phases |
| 10931 | (add-after 'unpack 'set-pythonpath |
| 10932 | (lambda _ |
| 10933 | ;; Ensure this fixed (via the |
| 10934 | ;; "python-ipython-documentation-chars.patch" patch) copy of |
| 10935 | ;; IPython gets used. |
| 10936 | (setenv "PYTHONPATH" (string-append (getcwd))))) |
| 10937 | (add-before 'build 'configure-sphinx-for-xelatex |
| 10938 | (lambda _ |
| 10939 | ;; Use XeLaTeX instead of PDFLaTeX, as it can |
| 10940 | ;; cope with the Unicode characters present in the |
| 10941 | ;; contributors page, for example. |
| 10942 | (substitute* "docs/source/conf.py" |
| 10943 | (("project = 'IPython'.*" all) |
| 10944 | (string-append all "latex_engine = 'xelatex'\n"))) |
| 10945 | ;; XXX: The Sphinx-generated ipython.tex specifies the GNU |
| 10946 | ;; FreeFont font to be searched via its extension, which uses |
| 10947 | ;; kpathsea instead of fontconfig and fail (see: |
| 10948 | ;; https://github.com/sphinx-doc/sphinx/issues/10347). Create a |
| 10949 | ;; symlink to GNU FreeFont and add it to the TEXMF tree via |
| 10950 | ;; GUIX_TEXMF. |
| 10951 | (mkdir-p "texmf-dist/fonts/opentype/public") |
| 10952 | (symlink (string-append |
| 10953 | #$(this-package-native-input "font-gnu-freefont") |
| 10954 | "/share/fonts/opentype") |
| 10955 | (string-append |
| 10956 | (getcwd) "/" |
| 10957 | "texmf-dist/fonts/opentype/public/gnu-freefont")) |
| 10958 | (setenv "GUIX_TEXMF" (string-append (getenv "GUIX_TEXMF") ":" |
| 10959 | (getcwd) "/texmf-dist")))) |
| 10960 | (delete 'build) |
| 10961 | (delete 'check) |
| 10962 | (replace 'install |
| 10963 | (lambda* (#:key outputs #:allow-other-keys) |
| 10964 | (let* ((data (string-append #$output "/share")) |
| 10965 | (doc (string-append data "/doc/" #$name "-" #$version)) |
| 10966 | (html (string-append doc "/html")) |
| 10967 | (info (string-append data "/info"))) |
| 10968 | (invoke "make" "-C" "docs" "info" "html" "pdf" |
| 10969 | (string-append "SPHINXOPTS=-j" |
| 10970 | (number->string (parallel-job-count)))) |
| 10971 | (install-file "COPYING.rst" doc) |
| 10972 | (copy-recursively "examples" (string-append doc "/examples")) |
| 10973 | ;; Install HTML documentation. |
| 10974 | (copy-recursively "docs/build/html" html) |
| 10975 | ;; Likewise for the PDF. |
| 10976 | (install-file "docs/build/latex/ipython.pdf" doc) |
| 10977 | ;; Likewise for the info manual. |
| 10978 | (install-file "docs/build/texinfo/ipython.info" info) |
| 10979 | (symlink (string-append html "/_images") |
| 10980 | (string-append info "/ipython-figures")))))))) |
| 10981 | (native-inputs |
| 10982 | (list fontconfig ;for XDG_DATA_DIRS to locate fonts |
| 10983 | font-gnu-freefont |
| 10984 | graphviz |
| 10985 | python-docrepr |
| 10986 | python-ipykernel |
| 10987 | python-sphinx |
| 10988 | python-sphinx-rtd-theme |
| 10989 | texinfo |
| 10990 | (texlive-updmap.cfg |
| 10991 | (list texlive-latexmk |
| 10992 | texlive-polyglossia |
| 10993 | texlive-xetex |
| 10994 | texlive-xindy)))))) |
| 10995 | |
| 10996 | (define-public python-urwid |
| 10997 | (package |
| 10998 | (name "python-urwid") |
| 10999 | (version "2.1.2") |
| 11000 | (source |
| 11001 | (origin |
| 11002 | (method url-fetch) |
| 11003 | (uri (pypi-uri "urwid" version)) |
| 11004 | (sha256 |
| 11005 | (base32 |
| 11006 | "1bky2bra6673xx8jy0826znw6cmxs89wcwwzda8d025j3jffx2sq")))) |
| 11007 | (build-system python-build-system) |
| 11008 | (arguments |
| 11009 | (list |
| 11010 | #:phases |
| 11011 | #~(modify-phases %standard-phases |
| 11012 | (add-after 'unpack 'remove-vterm-tests |
| 11013 | ;; According to Debian these tests are cursed. |
| 11014 | ;; https://salsa.debian.org/python-team/packages/urwid/-/blob/debian/2.1.2-2/debian/changelog#L141 |
| 11015 | (lambda _ |
| 11016 | (delete-file "urwid/tests/test_vterm.py")))))) |
| 11017 | (home-page "https://urwid.org") |
| 11018 | (synopsis "Console user interface library for Python") |
| 11019 | (description |
| 11020 | "Urwid is a curses-based UI/widget library for Python. It includes many |
| 11021 | features useful for text console applications.") |
| 11022 | (license license:lgpl2.1+))) |
| 11023 | |
| 11024 | (define-public python-urwid-readline |
| 11025 | (package |
| 11026 | (name "python-urwid-readline") |
| 11027 | (version "0.13") |
| 11028 | (source |
| 11029 | (origin |
| 11030 | (method git-fetch) |
| 11031 | (uri (git-reference |
| 11032 | (url "https://github.com/rr-/urwid_readline") |
| 11033 | (commit version))) |
| 11034 | (file-name (git-file-name name version)) |
| 11035 | (sha256 |
| 11036 | (base32 |
| 11037 | "0y9k86p31mlr9rwnrbljvfgl183r5j60yaj0r3scljn1m0mlg8qg")))) |
| 11038 | (build-system python-build-system) |
| 11039 | (arguments |
| 11040 | `(#:phases |
| 11041 | (modify-phases %standard-phases |
| 11042 | (replace 'check |
| 11043 | (lambda* (#:key tests? #:allow-other-keys) |
| 11044 | (when tests? |
| 11045 | (invoke "pytest" "-vv"))))))) |
| 11046 | (propagated-inputs (list python-urwid)) |
| 11047 | (native-inputs (list python-pytest)) |
| 11048 | (home-page "https://github.com/rr-/urwid_readline") |
| 11049 | (synopsis "Text input widget for urwid that supports readline shortcuts") |
| 11050 | (description |
| 11051 | "This package provides a textbox edit widget for @code{python-urwid} that |
| 11052 | supports @code{readline} shortcuts.") |
| 11053 | (license license:expat))) |
| 11054 | |
| 11055 | (define-public python-textdistance |
| 11056 | (package |
| 11057 | (name "python-textdistance") |
| 11058 | (version "4.2.1") |
| 11059 | (source |
| 11060 | (origin |
| 11061 | ;; There are no tests in the PyPI tarball. |
| 11062 | (method git-fetch) |
| 11063 | (uri (git-reference |
| 11064 | (url "https://github.com/life4/textdistance") |
| 11065 | (commit (string-append "v." version)))) |
| 11066 | (file-name (git-file-name name version)) |
| 11067 | (sha256 |
| 11068 | (base32 "1g17i356fnny4k6hjr2ayy9k77jbvd6zzmngws2kbrnvhss1wgwf")))) |
| 11069 | (build-system python-build-system) |
| 11070 | (arguments |
| 11071 | `(#:test-target "pytest" |
| 11072 | #:phases |
| 11073 | (modify-phases %standard-phases |
| 11074 | (add-after 'unpack 'delete-external-test |
| 11075 | (lambda _ |
| 11076 | ;; All tests in this file require external libraries. |
| 11077 | (delete-file "tests/test_external.py") |
| 11078 | #t))))) |
| 11079 | (native-inputs |
| 11080 | (list python-hypothesis |
| 11081 | python-isort |
| 11082 | python-numpy |
| 11083 | python-pytest |
| 11084 | python-pytest-runner |
| 11085 | python-tabulate)) |
| 11086 | (home-page "https://github.com/life4/textdistance") |
| 11087 | (synopsis "Compute distance between the two texts") |
| 11088 | (description "@code{textdistance} is a pure Python library for comparing |
| 11089 | distance between two or more sequences by many algorithms.") |
| 11090 | (license license:expat))) |
| 11091 | |
| 11092 | (define-public python-urwidtrees |
| 11093 | (package |
| 11094 | (name "python-urwidtrees") |
| 11095 | (version "1.0.3") |
| 11096 | (source |
| 11097 | (origin |
| 11098 | (method git-fetch) |
| 11099 | ;; package author intends on distributing via github rather than pypi: |
| 11100 | ;; https://github.com/pazz/alot/issues/877#issuecomment-230173331 |
| 11101 | (uri (git-reference |
| 11102 | (url "https://github.com/pazz/urwidtrees") |
| 11103 | (commit version))) |
| 11104 | (file-name (git-file-name name version)) |
| 11105 | (sha256 |
| 11106 | (base32 |
| 11107 | "1y1vysx7jg0vbrarlsykhf7nmr8fc6k1fva1q3i98xq2m30s6r68")))) |
| 11108 | (build-system python-build-system) |
| 11109 | (arguments |
| 11110 | '(#:tests? #f)) ; no tests |
| 11111 | (propagated-inputs (list python-urwid)) |
| 11112 | (native-inputs (list python-mock)) |
| 11113 | (home-page "https://github.com/pazz/urwidtrees") |
| 11114 | (synopsis "Tree widgets for urwid") |
| 11115 | (description "Urwidtrees is a Widget Container API for the @code{urwid} |
| 11116 | toolkit. Use it to build trees of widgets.") |
| 11117 | (license license:gpl3+))) |
| 11118 | |
| 11119 | (define-public python-ua-parser |
| 11120 | (package |
| 11121 | (name "python-ua-parser") |
| 11122 | (version "0.10.0") |
| 11123 | (source |
| 11124 | (origin |
| 11125 | (method url-fetch) |
| 11126 | (uri (pypi-uri "ua-parser" version)) |
| 11127 | (sha256 |
| 11128 | (base32 |
| 11129 | "0csh307zfz666kkk5idrw3crj1x8q8vsqgwqil0r1n1hs4p7ica7")))) |
| 11130 | (build-system python-build-system) |
| 11131 | (arguments |
| 11132 | `(#:tests? #f)) ;no test suite in release |
| 11133 | (native-inputs |
| 11134 | (list python-pyyaml)) |
| 11135 | (home-page "https://github.com/ua-parser/uap-python") |
| 11136 | (synopsis "User agent parser") |
| 11137 | (description |
| 11138 | "@code{ua-parser} is a Python port of Browserscope's user agent parser.") |
| 11139 | (license license:asl2.0))) |
| 11140 | |
| 11141 | (define-public python-user-agents |
| 11142 | (package |
| 11143 | (name "python-user-agents") |
| 11144 | (version "2.2.0") |
| 11145 | (source |
| 11146 | (origin |
| 11147 | (method url-fetch) |
| 11148 | (uri (pypi-uri "user-agents" version)) |
| 11149 | (sha256 |
| 11150 | (base32 |
| 11151 | "09mddriffm9rkwr30081fy9n3cn976ms8pwc8p8hhlxnilbjavfk")))) |
| 11152 | (build-system python-build-system) |
| 11153 | (arguments |
| 11154 | `(#:tests? #f)) ;missing devices.json test file in release |
| 11155 | (propagated-inputs |
| 11156 | (list python-ua-parser)) |
| 11157 | (home-page "https://github.com/selwin/python-user-agents") |
| 11158 | (synopsis "User Agent strings parsing library") |
| 11159 | (description |
| 11160 | "A library to identify devices (phones, tablets) and their capabilities by |
| 11161 | parsing (browser/HTTP) user agent strings.") |
| 11162 | (license license:expat))) |
| 11163 | |
| 11164 | (define-public python-pydbus |
| 11165 | (package |
| 11166 | (name "python-pydbus") |
| 11167 | (version "0.6.0") |
| 11168 | (source |
| 11169 | (origin |
| 11170 | (method url-fetch) |
| 11171 | (uri (pypi-uri "pydbus" version)) |
| 11172 | (sha256 |
| 11173 | (base32 "0b0gipvz7vcfa9ddmwq2jrx16d4apb0hdnl5q4i3h8jlzwp1c1s2")))) |
| 11174 | (build-system python-build-system) |
| 11175 | (propagated-inputs (list python-pygobject)) |
| 11176 | (home-page "https://github.com/LEW21/pydbus") |
| 11177 | (synopsis "Pythonic D-Bus library") |
| 11178 | (description "Pydbus provides a pythonic interface to the D-Bus |
| 11179 | message bus system. Pydbus can be used to access remote objects and |
| 11180 | also for object publication. It is based on PyGI, the Python GObject |
| 11181 | Introspection bindings, which is the recommended way to use GLib from Python.") |
| 11182 | (license license:lgpl2.1+))) |
| 11183 | |
| 11184 | (define-public python-dbus |
| 11185 | (package |
| 11186 | (name "python-dbus") |
| 11187 | (version "1.2.18") |
| 11188 | (source |
| 11189 | (origin |
| 11190 | (method url-fetch) |
| 11191 | (uri (string-append "https://dbus.freedesktop.org/releases/dbus-python/" |
| 11192 | "dbus-python-" version ".tar.gz")) |
| 11193 | (sha256 |
| 11194 | (base32 "0q3jrw515z98mqdk9x822nd95rky455zz9876f1nqna5igkd3gcj")))) |
| 11195 | (build-system gnu-build-system) |
| 11196 | (native-inputs |
| 11197 | (list pkg-config)) |
| 11198 | (inputs |
| 11199 | `(("python" ,python-wrapper) |
| 11200 | ("dbus-glib" ,dbus-glib))) |
| 11201 | (synopsis "Python bindings for D-bus") |
| 11202 | (description "python-dbus provides bindings for libdbus, the reference |
| 11203 | implementation of D-Bus.") |
| 11204 | (home-page "https://www.freedesktop.org/wiki/Software/DBusBindings/") |
| 11205 | (properties `((python2-variant . ,(delay python2-dbus)))) |
| 11206 | (license license:expat))) |
| 11207 | |
| 11208 | (define-public python2-dbus |
| 11209 | (package/inherit python-dbus |
| 11210 | (name "python2-dbus") |
| 11211 | (inputs `(("python" ,python-2) |
| 11212 | ,@(alist-delete "python" |
| 11213 | (package-inputs python-dbus)))) |
| 11214 | (arguments |
| 11215 | `(#:configure-flags '("PYTHON_VERSION=2"))))) |
| 11216 | |
| 11217 | (define-public python-dbus-next |
| 11218 | (package |
| 11219 | (name "python-dbus-next") |
| 11220 | (version "0.2.3") |
| 11221 | (source |
| 11222 | (origin |
| 11223 | (method git-fetch) |
| 11224 | (uri (git-reference |
| 11225 | (url "https://github.com/altdesktop/python-dbus-next") |
| 11226 | (commit (string-append "v" version)))) |
| 11227 | (file-name (git-file-name name version)) |
| 11228 | (sha256 |
| 11229 | (base32 |
| 11230 | "1ahaz52kny1p9xxv6phvk4iq56rg8li390wywlxf2yslaij1188h")))) |
| 11231 | (build-system python-build-system) |
| 11232 | (native-inputs |
| 11233 | (list python-pytest)) |
| 11234 | (home-page "https://github.com/altdesktop/python-dbus-next") |
| 11235 | (synopsis "Zero-dependency DBus library for Python with asyncio support") |
| 11236 | (description |
| 11237 | "This DBus library for Python aims to be a fully-featured high-level |
| 11238 | library primarily geared towards integration of applications into desktop and |
| 11239 | mobile environments.") |
| 11240 | (license license:expat))) |
| 11241 | |
| 11242 | (define-public python-notify2 |
| 11243 | (package |
| 11244 | (name "python-notify2") |
| 11245 | (version "0.3.1") |
| 11246 | (source |
| 11247 | (origin |
| 11248 | (method url-fetch) |
| 11249 | (uri (pypi-uri "notify2" version)) |
| 11250 | (sha256 |
| 11251 | (base32 |
| 11252 | "0z8rrv9rsg1r2qgh2dxj3dfj5xnki98kgi3w839kqby4a26i1yik")))) |
| 11253 | (build-system python-build-system) |
| 11254 | (arguments `(#:tests? #f)) ; tests depend on system state |
| 11255 | (propagated-inputs |
| 11256 | (list python-dbus)) |
| 11257 | (home-page "https://bitbucket.org/takluyver/pynotify2") |
| 11258 | (synopsis "Python interface to D-Bus notifications") |
| 11259 | (description |
| 11260 | "Pynotify2 provides a Python interface for sending D-Bus notifications. |
| 11261 | It is a reimplementation of pynotify in pure Python, and an alternative to |
| 11262 | the GObject Introspection bindings to libnotify for non-GTK applications.") |
| 11263 | (license (list license:bsd-2 |
| 11264 | license:lgpl2.1+)))) |
| 11265 | |
| 11266 | ;; beautifulsoup4 has a totally different namespace than 3.x, |
| 11267 | ;; and pypi seems to put it under its own name, so I guess we should too |
| 11268 | (define-public python-beautifulsoup4 |
| 11269 | (package |
| 11270 | (name "python-beautifulsoup4") |
| 11271 | (version "4.11.1") |
| 11272 | (source |
| 11273 | (origin |
| 11274 | (method url-fetch) |
| 11275 | (uri (pypi-uri "beautifulsoup4" version)) |
| 11276 | (sha256 |
| 11277 | (base32 |
| 11278 | "14v68cpfzckfz63n9hnbsm271jvzvxscyijz83mhha7gcmdsb6md")))) |
| 11279 | (build-system python-build-system) |
| 11280 | (arguments |
| 11281 | '(#:phases (modify-phases %standard-phases |
| 11282 | (replace 'check |
| 11283 | (lambda* (#:key tests? #:allow-other-keys) |
| 11284 | (when tests? |
| 11285 | (invoke "pytest" "-vv"))))))) |
| 11286 | (native-inputs |
| 11287 | (list python-pytest)) |
| 11288 | (propagated-inputs |
| 11289 | (list python-soupsieve python-html5lib python-lxml)) |
| 11290 | (home-page |
| 11291 | "https://www.crummy.com/software/BeautifulSoup/bs4/") |
| 11292 | (synopsis |
| 11293 | "Python screen-scraping library") |
| 11294 | (description |
| 11295 | "Beautiful Soup is a Python library designed for rapidly setting up |
| 11296 | screen-scraping projects. It offers Pythonic idioms for navigating, |
| 11297 | searching, and modifying a parse tree, providing a toolkit for |
| 11298 | dissecting a document and extracting what you need. It automatically |
| 11299 | converts incoming documents to Unicode and outgoing documents to UTF-8.") |
| 11300 | (license license:expat))) |
| 11301 | |
| 11302 | (define-public python-soupsieve |
| 11303 | (package |
| 11304 | (name "python-soupsieve") |
| 11305 | (version "2.2.1") |
| 11306 | (source |
| 11307 | (origin |
| 11308 | (method url-fetch) |
| 11309 | (uri (pypi-uri "soupsieve" version)) |
| 11310 | (sha256 |
| 11311 | (base32 |
| 11312 | "1k70gpn2d3vgdyxbdy536dgm4kchcraxz6lmgsfg3324iy2789q5")))) |
| 11313 | (build-system python-build-system) |
| 11314 | (arguments |
| 11315 | ;;XXX: 2 tests fail currently despite claming they were to be |
| 11316 | ;;skipped. Also, beautifulsoup4 may depend on this in the future, so we |
| 11317 | ;;don't want to create a circular dependency. |
| 11318 | (list #:tests? #f |
| 11319 | #:phases |
| 11320 | #~(modify-phases %standard-phases |
| 11321 | ;; Circular dependency with python-beautifulsoup4. |
| 11322 | (delete 'sanity-check)))) |
| 11323 | (home-page "https://github.com/facelessuser/soupsieve") |
| 11324 | (synopsis "CSS selector library") |
| 11325 | (description |
| 11326 | "Soup Sieve is a CSS selector library designed to be used with Beautiful |
| 11327 | Soup 4. It aims to provide selecting, matching, and filtering using modern |
| 11328 | CSS selectors. Soup Sieve currently provides selectors from the CSS level 1 |
| 11329 | specifications up through the latest CSS level 4 drafts and beyond (though |
| 11330 | some are not yet implemented).") |
| 11331 | (license license:expat))) |
| 11332 | |
| 11333 | |
| 11334 | (define-public python-netifaces |
| 11335 | (package |
| 11336 | (name "python-netifaces") |
| 11337 | (version "0.11.0") |
| 11338 | (source |
| 11339 | (origin |
| 11340 | (method url-fetch) |
| 11341 | (uri (pypi-uri "netifaces" version)) |
| 11342 | (sha256 |
| 11343 | (base32 |
| 11344 | "0cnajf5rl4w1sa72j921scbigr6zndig56cq8ggpx45jdqa7jfh4")))) |
| 11345 | (build-system python-build-system) |
| 11346 | (home-page "https://github.com/al45tair/netifaces") |
| 11347 | (synopsis |
| 11348 | "Python module for portable network interface information") |
| 11349 | (description |
| 11350 | "Netifaces is a Python module providing information on network |
| 11351 | interfaces in an easy and portable manner.") |
| 11352 | (license license:expat))) |
| 11353 | |
| 11354 | (define-public python-networkx |
| 11355 | (package |
| 11356 | (name "python-networkx") |
| 11357 | (version "2.8.6") |
| 11358 | (source |
| 11359 | (origin |
| 11360 | (method url-fetch) |
| 11361 | (uri (pypi-uri "networkx" version)) |
| 11362 | (sha256 |
| 11363 | (base32 "19h18f5j79l7kmwm5cvm75fadjgmkzw5m3pyvb9cnq0860q7faxx")))) |
| 11364 | (build-system python-build-system) |
| 11365 | (arguments |
| 11366 | '(#:phases (modify-phases %standard-phases |
| 11367 | (replace 'check |
| 11368 | (lambda* (#:key tests? #:allow-other-keys) |
| 11369 | (if tests? |
| 11370 | (invoke "pytest" "-vv" "--pyargs" "networkx") |
| 11371 | (format #t "test suite not run~%")) #t))))) |
| 11372 | (propagated-inputs (list python-decorator)) |
| 11373 | (native-inputs (list python-pytest)) |
| 11374 | (home-page "https://networkx.github.io/") |
| 11375 | (synopsis |
| 11376 | "Python module for creating and manipulating graphs and networks") |
| 11377 | (description |
| 11378 | "NetworkX is a Python package for the creation, manipulation, and study |
| 11379 | of the structure, dynamics, and functions of complex networks.") |
| 11380 | (license license:bsd-3))) |
| 11381 | |
| 11382 | |
| 11383 | (define-public python-datrie |
| 11384 | (package |
| 11385 | (name "python-datrie") |
| 11386 | (version "0.8.2") |
| 11387 | (source |
| 11388 | (origin |
| 11389 | (method url-fetch) |
| 11390 | (uri (pypi-uri "datrie" version)) |
| 11391 | (sha256 |
| 11392 | (base32 |
| 11393 | "0pbn32flkrpjiwfcknmj6398qa81ba783kbcvwan3kym73v0hnsj")))) |
| 11394 | (build-system python-build-system) |
| 11395 | (native-inputs |
| 11396 | (list python-cython python-hypothesis python-pytest |
| 11397 | python-pytest-runner)) |
| 11398 | (home-page "https://github.com/kmike/datrie") |
| 11399 | (synopsis "Fast, efficiently stored trie for Python") |
| 11400 | (description |
| 11401 | "This package provides a fast, efficiently stored trie implementation for |
| 11402 | Python.") |
| 11403 | (license license:lgpl2.1+))) |
| 11404 | |
| 11405 | (define-public python-amply |
| 11406 | (package |
| 11407 | (name "python-amply") |
| 11408 | (version "0.1.4") |
| 11409 | (source |
| 11410 | (origin |
| 11411 | (method url-fetch) |
| 11412 | (uri (pypi-uri "amply" version)) |
| 11413 | (sha256 |
| 11414 | (base32 |
| 11415 | "0f1db9zp0rsfzxvaz55xwh8h5rfdgr9a2a715g06ic8nknsdq4nb")))) |
| 11416 | (build-system python-build-system) |
| 11417 | (propagated-inputs |
| 11418 | (list python-docutils python-pyparsing)) |
| 11419 | (native-inputs |
| 11420 | (list python-setuptools-scm)) |
| 11421 | (home-page "https://github.com/willu47/amply") |
| 11422 | (synopsis "Load and manipulate AMPL/GLPK data as Python data structures") |
| 11423 | (description |
| 11424 | "Amply allows you to load and manipulate AMPL/GLPK data as Python data |
| 11425 | structures.") |
| 11426 | (license license:epl1.0))) |
| 11427 | |
| 11428 | (define-public python-pulp |
| 11429 | (package |
| 11430 | (name "python-pulp") |
| 11431 | (version "2.4") |
| 11432 | (source |
| 11433 | (origin |
| 11434 | (method url-fetch) |
| 11435 | (uri (pypi-uri "PuLP" version)) |
| 11436 | (sha256 |
| 11437 | (base32 |
| 11438 | "1dammrg0f1v0r028i3rpxbf2bsyxmjq0q6ihb4x2wsdki44z3bxj")))) |
| 11439 | (build-system python-build-system) |
| 11440 | (propagated-inputs |
| 11441 | (list python-amply)) |
| 11442 | (home-page "https://github.com/coin-or/pulp") |
| 11443 | (synopsis "Linear Programming modeler") |
| 11444 | (description |
| 11445 | "PuLP is a Linear Programming modeler written in Python. PuLP can |
| 11446 | generate MPS or LP files and call GLPK, COIN CLP/CBC, CPLEX, and GUROBI to |
| 11447 | solve linear problems.") |
| 11448 | (license license:expat))) |
| 11449 | |
| 11450 | (define-public python-py-tes |
| 11451 | (package |
| 11452 | (name "python-py-tes") |
| 11453 | (version "0.4.2") |
| 11454 | (source |
| 11455 | (origin |
| 11456 | (method url-fetch) |
| 11457 | (uri (pypi-uri "py-tes" version)) |
| 11458 | (sha256 |
| 11459 | (base32 "0b272y392v0mnq0f3sm5kgcx8fn4qwfbym89hhvqxz3xkganr4pn")))) |
| 11460 | (build-system python-build-system) |
| 11461 | (propagated-inputs |
| 11462 | (list python-attrs python-dateutil python-future python-requests)) |
| 11463 | (home-page "https://github.com/ohsu-comp-bio/py-tes") |
| 11464 | (synopsis "Library for communicating with the GA4GH Task Execution API") |
| 11465 | (description "This package provides a library for communicating with the |
| 11466 | GA4GH Task Execution API.") |
| 11467 | (license license:expat))) |
| 11468 | |
| 11469 | (define-public python-toposort |
| 11470 | (package |
| 11471 | (name "python-toposort") |
| 11472 | (version "1.6") |
| 11473 | (source |
| 11474 | (origin |
| 11475 | (method url-fetch) |
| 11476 | (uri (pypi-uri "toposort" version)) |
| 11477 | (sha256 |
| 11478 | (base32 |
| 11479 | "1b2hppzjg3p006qya3yfdnp76dwq8frl97lypdam0kw4xxb8yhm7")))) |
| 11480 | (build-system python-build-system) |
| 11481 | (home-page "https://gitlab.com/ericvsmith/toposort") |
| 11482 | (synopsis "Topological sort algorithm") |
| 11483 | (description |
| 11484 | "This package provides an implementation of a topological sort |
| 11485 | algorithm.") |
| 11486 | (license license:asl2.0))) |
| 11487 | |
| 11488 | (define-public python-three-merge |
| 11489 | (package |
| 11490 | (name "python-three-merge") |
| 11491 | (version "0.1.1") |
| 11492 | (source |
| 11493 | (origin |
| 11494 | ;; There are no tests in the PyPI tarball. |
| 11495 | (method git-fetch) |
| 11496 | (uri (git-reference |
| 11497 | (url "https://github.com/spyder-ide/three-merge") |
| 11498 | (commit (string-append "v" version)))) |
| 11499 | (file-name (git-file-name name version)) |
| 11500 | (sha256 |
| 11501 | (base32 "1fw28swh6jq4myr09j7gv68l241b8vwg470ak5xv0x4xwh2a1m86")))) |
| 11502 | (build-system python-build-system) |
| 11503 | (arguments |
| 11504 | `(#:test-target "pytest")) |
| 11505 | (propagated-inputs |
| 11506 | (list python-diff-match-patch)) |
| 11507 | (native-inputs |
| 11508 | (list python-flaky python-pytest python-pytest-cov |
| 11509 | python-pytest-runner python-pytest-timeout)) |
| 11510 | (home-page "https://github.com/spyder-ide/three-merge") |
| 11511 | (synopsis "Library for merging two strings with respect to a base one") |
| 11512 | (description |
| 11513 | "This package provides a Python library to perform a 3-way merge between |
| 11514 | strings, based on @code{diff-match-patch}. This library performs merges at a |
| 11515 | character level, as opposed to most VCS systems, which opt for a line-based |
| 11516 | approach.") |
| 11517 | (license license:expat))) |
| 11518 | |
| 11519 | (define-public snakemake |
| 11520 | (package |
| 11521 | (name "snakemake") |
| 11522 | (version "5.32.2") |
| 11523 | (source |
| 11524 | (origin |
| 11525 | (method url-fetch) |
| 11526 | (uri (pypi-uri "snakemake" version)) |
| 11527 | (sha256 |
| 11528 | (base32 "13013gdavwvyj1qr9xfi9fpwhb3km8c3z53bja5b7ic3sb2z6dgz")))) |
| 11529 | (build-system python-build-system) |
| 11530 | (arguments |
| 11531 | ;; TODO: Package missing test dependencies. |
| 11532 | '(#:tests? #f |
| 11533 | #:phases |
| 11534 | (modify-phases %standard-phases |
| 11535 | ;; For cluster execution Snakemake will call Python. Since there is |
| 11536 | ;; no suitable PYTHONPATH set, cluster execution will fail. We fix |
| 11537 | ;; this by calling the snakemake wrapper instead. |
| 11538 | (add-after 'unpack 'call-wrapper-not-wrapped-snakemake |
| 11539 | (lambda* (#:key outputs #:allow-other-keys) |
| 11540 | (substitute* "snakemake/executors/__init__.py" |
| 11541 | (("\\{sys.executable\\} -m snakemake") |
| 11542 | (string-append (assoc-ref outputs "out") |
| 11543 | "/bin/snakemake"))) |
| 11544 | #t))))) |
| 11545 | (propagated-inputs |
| 11546 | (list python-appdirs |
| 11547 | python-configargparse |
| 11548 | python-datrie |
| 11549 | python-docutils |
| 11550 | python-gitpython |
| 11551 | python-jinja2 |
| 11552 | python-jsonschema |
| 11553 | python-nbformat |
| 11554 | python-networkx |
| 11555 | python-psutil |
| 11556 | python-pulp |
| 11557 | python-pyyaml |
| 11558 | python-ratelimiter |
| 11559 | python-requests |
| 11560 | python-toposort |
| 11561 | python-wrapt)) |
| 11562 | (home-page "https://snakemake.readthedocs.io") |
| 11563 | (synopsis "Python-based execution environment for make-like workflows") |
| 11564 | (description |
| 11565 | "Snakemake aims to reduce the complexity of creating workflows by |
| 11566 | providing a clean and modern domain specific specification language (DSL) in |
| 11567 | Python style, together with a fast and comfortable execution environment.") |
| 11568 | (license license:expat))) |
| 11569 | |
| 11570 | (define-public snakemake-6 |
| 11571 | (package |
| 11572 | (inherit snakemake) |
| 11573 | (name "snakemake") |
| 11574 | (version "6.15.5") |
| 11575 | (source |
| 11576 | (origin |
| 11577 | (method git-fetch) |
| 11578 | (uri (git-reference |
| 11579 | (url "https://github.com/snakemake/snakemake") |
| 11580 | (commit (string-append "v" version)))) |
| 11581 | (file-name (git-file-name name version)) |
| 11582 | (sha256 |
| 11583 | (base32 "09yrpi9f86r9yvcm2dfjs5zy87c4j31bxama77kfd6y8yfrrjlai")))) |
| 11584 | (build-system pyproject-build-system) |
| 11585 | (arguments |
| 11586 | (list |
| 11587 | #:phases |
| 11588 | #~(modify-phases %standard-phases |
| 11589 | ;; For cluster execution Snakemake will call Python. Since there is |
| 11590 | ;; no suitable GUIX_PYTHONPATH set, cluster execution will fail. We |
| 11591 | ;; fix this by calling the snakemake wrapper instead. |
| 11592 | |
| 11593 | ;; XXX: There is another instance of sys.executable on line 692, but |
| 11594 | ;; it is not clear how to patch it. |
| 11595 | (add-after 'unpack 'call-wrapper-not-wrapped-snakemake |
| 11596 | (lambda* (#:key outputs #:allow-other-keys) |
| 11597 | (substitute* "snakemake/executors/__init__.py" |
| 11598 | (("\\{sys.executable\\} -m snakemake") |
| 11599 | (string-append #$output "/bin/snakemake"))))) |
| 11600 | (add-after 'unpack 'patch-version |
| 11601 | (lambda _ |
| 11602 | (substitute* "setup.py" |
| 11603 | (("version=versioneer.get_version\\(\\)") |
| 11604 | (format #f "version=~s" #$version))) |
| 11605 | (substitute* '("snakemake/_version.py" |
| 11606 | "versioneer.py") |
| 11607 | (("0\\+unknown") #$version)))) |
| 11608 | (replace 'check |
| 11609 | (lambda* (#:key tests? #:allow-other-keys) |
| 11610 | (when tests? |
| 11611 | (setenv "HOME" "/tmp") |
| 11612 | ;; This test attempts to change S3 buckets on AWS and fails |
| 11613 | ;; because there are no AWS credentials. |
| 11614 | (delete-file "tests/test_tibanna.py") |
| 11615 | (invoke "pytest"))))))) |
| 11616 | (propagated-inputs |
| 11617 | (list python-appdirs |
| 11618 | python-configargparse |
| 11619 | python-connection-pool |
| 11620 | python-datrie |
| 11621 | python-docutils |
| 11622 | python-filelock |
| 11623 | python-gitpython |
| 11624 | python-jinja2 |
| 11625 | python-jsonschema |
| 11626 | python-nbformat |
| 11627 | python-networkx |
| 11628 | python-psutil |
| 11629 | python-pulp |
| 11630 | python-pyyaml |
| 11631 | python-py-tes |
| 11632 | python-ratelimiter |
| 11633 | python-requests |
| 11634 | python-smart-open |
| 11635 | python-stopit |
| 11636 | python-tabulate |
| 11637 | python-toposort |
| 11638 | python-wrapt)) |
| 11639 | (native-inputs |
| 11640 | (list git-minimal |
| 11641 | python-wrapper |
| 11642 | python-pytest |
| 11643 | python-pandas |
| 11644 | python-requests-mock)))) |
| 11645 | |
| 11646 | (define-public snakemake-7 |
| 11647 | (package |
| 11648 | (inherit snakemake-6) |
| 11649 | (name "snakemake") |
| 11650 | (version "7.7.0") |
| 11651 | (source |
| 11652 | (origin |
| 11653 | (method git-fetch) |
| 11654 | (uri (git-reference |
| 11655 | (url "https://github.com/snakemake/snakemake") |
| 11656 | (commit (string-append "v" version)))) |
| 11657 | (file-name (git-file-name name version)) |
| 11658 | (sha256 |
| 11659 | (base32 "1qrqbmx4cbis0wxr6dl2rdjv9v627sbirsz6v5c31vlbqwkvs04q")))) |
| 11660 | (build-system pyproject-build-system) |
| 11661 | (arguments |
| 11662 | (list |
| 11663 | #:phases |
| 11664 | #~(modify-phases %standard-phases |
| 11665 | ;; For cluster execution Snakemake will call Python. Since there is |
| 11666 | ;; no suitable GUIX_PYTHONPATH set, cluster execution will fail. We |
| 11667 | ;; fix this by calling the snakemake wrapper instead. |
| 11668 | (add-after 'unpack 'call-wrapper-not-wrapped-snakemake |
| 11669 | (lambda* (#:key outputs #:allow-other-keys) |
| 11670 | (substitute* "snakemake/executors/__init__.py" |
| 11671 | (("self\\.get_python_executable\\(\\),") |
| 11672 | "") |
| 11673 | (("\"-m snakemake\"") |
| 11674 | (string-append "\"" #$output |
| 11675 | "/bin/snakemake" "\""))))) |
| 11676 | (add-after 'unpack 'patch-version |
| 11677 | (lambda _ |
| 11678 | (substitute* "setup.py" |
| 11679 | (("version=versioneer.get_version\\(\\)") |
| 11680 | (format #f "version=~s" #$version))) |
| 11681 | (substitute* '("snakemake/_version.py" |
| 11682 | "versioneer.py") |
| 11683 | (("0\\+unknown") #$version)))) |
| 11684 | (replace 'check |
| 11685 | (lambda* (#:key tests? #:allow-other-keys) |
| 11686 | (when tests? |
| 11687 | (setenv "HOME" "/tmp") |
| 11688 | ;; This test attempts to change S3 buckets on AWS and fails |
| 11689 | ;; because there are no AWS credentials. |
| 11690 | (delete-file "tests/test_tibanna.py") |
| 11691 | ;; It's a similar story with this test, which requires access |
| 11692 | ;; to the Google Storage service. |
| 11693 | (delete-file "tests/test_google_lifesciences.py") |
| 11694 | (invoke "pytest"))))))) |
| 11695 | (propagated-inputs |
| 11696 | (list python-appdirs |
| 11697 | python-configargparse |
| 11698 | python-connection-pool |
| 11699 | python-datrie |
| 11700 | python-docutils |
| 11701 | python-filelock |
| 11702 | python-gitpython |
| 11703 | python-jinja2 |
| 11704 | python-jsonschema |
| 11705 | python-nbformat |
| 11706 | python-networkx |
| 11707 | python-psutil |
| 11708 | python-pulp |
| 11709 | python-pyyaml |
| 11710 | python-py-tes |
| 11711 | python-ratelimiter |
| 11712 | python-requests |
| 11713 | python-retry |
| 11714 | python-smart-open |
| 11715 | python-stopit |
| 11716 | python-tabulate |
| 11717 | python-toposort |
| 11718 | python-wrapt |
| 11719 | python-yte)) |
| 11720 | (native-inputs |
| 11721 | (list git-minimal |
| 11722 | python-wrapper |
| 11723 | python-pytest |
| 11724 | python-pandas |
| 11725 | python-requests-mock)))) |
| 11726 | |
| 11727 | (define-public python-pyqrcode |
| 11728 | (package |
| 11729 | (name "python-pyqrcode") |
| 11730 | (version "1.2.1") |
| 11731 | (source |
| 11732 | (origin |
| 11733 | (method url-fetch) |
| 11734 | (uri (pypi-uri "PyQRCode" version)) |
| 11735 | (sha256 |
| 11736 | (base32 |
| 11737 | "1m9ln8k9v7dfbh1i81225hx5mdsh8mpf9g7r4wpbfmiyfcs7dgzx")))) |
| 11738 | (build-system python-build-system) |
| 11739 | (home-page |
| 11740 | "https://github.com/mnooner256/pyqrcode") |
| 11741 | (synopsis "QR code generator") |
| 11742 | (description |
| 11743 | "Pyqrcode is a QR code generator written purely in Python with |
| 11744 | SVG, EPS, PNG and terminal output.") |
| 11745 | (license license:bsd-3))) |
| 11746 | |
| 11747 | (define-public python-seaborn |
| 11748 | (package |
| 11749 | (name "python-seaborn") |
| 11750 | (version "0.12.0") |
| 11751 | (source (origin |
| 11752 | (method url-fetch) |
| 11753 | (uri (pypi-uri "seaborn" version)) |
| 11754 | (sha256 |
| 11755 | (base32 |
| 11756 | "08vvnp4ps86857imxz2l5xi2vir5xdcdp3apq4badb4b5llifgw9")))) |
| 11757 | (build-system pyproject-build-system) |
| 11758 | (propagated-inputs (list python-pandas python-matplotlib python-numpy |
| 11759 | python-scipy)) |
| 11760 | (native-inputs (list python-flit-core python-pypa-build python-pytest)) |
| 11761 | (home-page "https://seaborn.pydata.org/") |
| 11762 | (synopsis "Statistical data visualization") |
| 11763 | (description |
| 11764 | "Seaborn is a library for making attractive and informative statistical |
| 11765 | graphics in Python. It is built on top of matplotlib and tightly integrated |
| 11766 | with the PyData stack, including support for numpy and pandas data structures |
| 11767 | and statistical routines from scipy and statsmodels.") |
| 11768 | (license license:bsd-3))) |
| 11769 | |
| 11770 | (define-public python-session-info |
| 11771 | (package |
| 11772 | (name "python-session-info") |
| 11773 | (version "1.0.0") |
| 11774 | (source (origin |
| 11775 | (method url-fetch) |
| 11776 | (uri (pypi-uri "session_info" version)) |
| 11777 | (sha256 |
| 11778 | (base32 |
| 11779 | "1dxnrgaxd2nb44n423mnrx119hmnh2yxdnzaw8mg60x7rh1mxniw")))) |
| 11780 | (build-system python-build-system) |
| 11781 | (propagated-inputs (list python-stdlib-list)) |
| 11782 | (home-page "https://gitlab.com/joelostblom/session_info") |
| 11783 | (synopsis "Output version information for modules currently loaded") |
| 11784 | (description |
| 11785 | "This package outputs version information for modules loaded in the current |
| 11786 | session, Python, and the OS.") |
| 11787 | (license license:bsd-3))) |
| 11788 | |
| 11789 | (define-public python-mpmath |
| 11790 | (package |
| 11791 | (name "python-mpmath") |
| 11792 | (version "1.2.1") |
| 11793 | (source (origin |
| 11794 | (method git-fetch) |
| 11795 | (uri (git-reference |
| 11796 | (url "https://github.com/fredrik-johansson/mpmath") |
| 11797 | (commit "c6a35f9ee7c294bcf4e0517bc76b268843db9499"))) |
| 11798 | (file-name (git-file-name name version)) |
| 11799 | (sha256 |
| 11800 | (base32 |
| 11801 | "0ifw59fjjls3mas104rh0frilvab2fhk1dkjraxlqni5n9l676im")))) |
| 11802 | (build-system python-build-system) |
| 11803 | (arguments |
| 11804 | `(#:phases |
| 11805 | (modify-phases %standard-phases |
| 11806 | (add-before 'build 'set-version |
| 11807 | (lambda _ |
| 11808 | (setenv "SETUPTOOLS_SCM_PRETEND_VERSION" ,version) |
| 11809 | ;; ZIP does not support timestamps before 1980. |
| 11810 | (setenv "SOURCE_DATE_EPOCH" "315532800"))) |
| 11811 | (replace 'check |
| 11812 | (lambda* (#:key tests? inputs outputs #:allow-other-keys) |
| 11813 | (when tests? |
| 11814 | (add-installed-pythonpath inputs outputs) |
| 11815 | (invoke "pytest" "-vv"))))))) |
| 11816 | (native-inputs |
| 11817 | (list python-pytest python-setuptools-scm)) |
| 11818 | (home-page "https://mpmath.org") |
| 11819 | (synopsis "Arbitrary-precision floating-point arithmetic in python") |
| 11820 | (description |
| 11821 | "@code{mpmath} can be used as an arbitrary-precision substitute for |
| 11822 | Python's float/complex types and math/cmath modules, but also does much |
| 11823 | more advanced mathematics.") |
| 11824 | (license license:bsd-3))) |
| 11825 | |
| 11826 | (define-public python-bigfloat |
| 11827 | (package |
| 11828 | (name "python-bigfloat") |
| 11829 | (version "0.4.0") |
| 11830 | (source |
| 11831 | (origin |
| 11832 | (method url-fetch) |
| 11833 | (uri (pypi-uri "bigfloat" version)) |
| 11834 | (sha256 |
| 11835 | (base32 "1f0c1hdr39bbl5rds5r1waa1papjmjiyp0ixs64mkjiahzg6pfaq")))) |
| 11836 | (build-system python-build-system) |
| 11837 | (inputs |
| 11838 | (list mpfr)) |
| 11839 | (propagated-inputs |
| 11840 | (list python-six)) |
| 11841 | (home-page "https://github.com/mdickinson/bigfloat") |
| 11842 | (synopsis "Arbitrary precision floating-point arithmetic for Python") |
| 11843 | (description |
| 11844 | "This package provides a Python interface to the MPFR library for |
| 11845 | multiprecision arithmetic.") |
| 11846 | (license license:lgpl3+))) |
| 11847 | |
| 11848 | (define-public python-plac |
| 11849 | (package |
| 11850 | (name "python-plac") |
| 11851 | (version "1.3.5") |
| 11852 | (source |
| 11853 | (origin |
| 11854 | (method url-fetch) |
| 11855 | (uri (pypi-uri "plac" version)) |
| 11856 | (sha256 |
| 11857 | (base32 "1410h6jw1ksi24kb55xzkwqzba2qqjwiga1s354bf3s5s1jdig9q")))) |
| 11858 | (build-system python-build-system) |
| 11859 | (arguments |
| 11860 | '(#:phases |
| 11861 | (modify-phases %standard-phases |
| 11862 | (add-after 'unpack 'fix-tkinter |
| 11863 | (lambda _ |
| 11864 | (substitute* "plac_tk.py" |
| 11865 | (("from Tkinter import Tk") |
| 11866 | "from tkinter import Tk") |
| 11867 | (("from ScrolledText import ScrolledText") |
| 11868 | "from tkinter.scrolledtext import ScrolledText"))))))) |
| 11869 | (native-inputs |
| 11870 | `(("python-tkinter" ,python "tk"))) |
| 11871 | (home-page "https://github.com/ialbert/plac") |
| 11872 | (synopsis "Command line arguments parser") |
| 11873 | (description "This package can generate command line parameters from |
| 11874 | function signatures.") |
| 11875 | (license license:bsd-3))) |
| 11876 | |
| 11877 | (define-public python-yte |
| 11878 | (package |
| 11879 | (name "python-yte") |
| 11880 | (version "1.2.0") |
| 11881 | (source |
| 11882 | (origin |
| 11883 | (method url-fetch) |
| 11884 | (uri (pypi-uri "yte" version)) |
| 11885 | (sha256 |
| 11886 | (base32 "07hm1warpqi4ifqgkaz5sg887x4a44yhxafmpf835ywnpchg4s03")))) |
| 11887 | (build-system python-build-system) |
| 11888 | (arguments |
| 11889 | '(#:phases |
| 11890 | (modify-phases %standard-phases |
| 11891 | (add-after 'unpack 'set-HOME |
| 11892 | (lambda _ (setenv "HOME" "/tmp")))))) |
| 11893 | (propagated-inputs (list python-plac python-pyyaml)) |
| 11894 | (home-page "https://github.com/koesterlab/yte") |
| 11895 | (synopsis "YAML template engine with Python expressions") |
| 11896 | (description |
| 11897 | "This package provides a YAML template engine with Python expressions.") |
| 11898 | (license license:expat))) |
| 11899 | |
| 11900 | (define-public python-syllables |
| 11901 | (package |
| 11902 | (name "python-syllables") |
| 11903 | (version "1.0.3") |
| 11904 | (source (origin |
| 11905 | (method url-fetch) |
| 11906 | (uri (pypi-uri "syllables" version)) |
| 11907 | (sha256 |
| 11908 | (base32 |
| 11909 | "0wkl6h0rg6fbsxfp0a8fnibf3l4l6lbh6z12cvcilgb6qhxzpmv3")))) |
| 11910 | (build-system python-build-system) |
| 11911 | (home-page "https://github.com/prosegrinder/python-syllables") |
| 11912 | (synopsis "Package for estimating the number of syllables in a word") |
| 11913 | (description |
| 11914 | "This package provides a Python package for estimating the number of |
| 11915 | syllables in a word.") |
| 11916 | (license license:gpl3))) |
| 11917 | |
| 11918 | (define-public python-sympy |
| 11919 | (package |
| 11920 | (name "python-sympy") |
| 11921 | (version "1.11.1") |
| 11922 | (source |
| 11923 | (origin |
| 11924 | (method url-fetch) |
| 11925 | (uri (pypi-uri "sympy" version)) |
| 11926 | (sha256 |
| 11927 | (base32 "0n46x1rfy8c2a9za3yp2va5icigxj805f9fmiq8c1drwwvf808z3")))) |
| 11928 | (build-system python-build-system) |
| 11929 | (arguments |
| 11930 | `(#:phases |
| 11931 | (modify-phases %standard-phases |
| 11932 | (replace 'check |
| 11933 | (lambda* (#:key outputs #:allow-other-keys) |
| 11934 | (invoke |
| 11935 | (or (which "python3") (which "python")) |
| 11936 | "-c" "import sympy; sympy.test(\"/core\")")))))) |
| 11937 | (propagated-inputs |
| 11938 | (list python-mpmath)) |
| 11939 | (home-page "https://www.sympy.org/") |
| 11940 | (synopsis "Python library for symbolic mathematics") |
| 11941 | (description |
| 11942 | "SymPy is a Python library for symbolic mathematics. It aims to become a |
| 11943 | full-featured computer algebra system (CAS) while keeping the code as simple |
| 11944 | as possible in order to be comprehensible and easily extensible.") |
| 11945 | (license license:bsd-3))) |
| 11946 | |
| 11947 | (define-public python-q |
| 11948 | (package |
| 11949 | (name "python-q") |
| 11950 | (version "2.6") |
| 11951 | (source |
| 11952 | (origin |
| 11953 | (method url-fetch) |
| 11954 | (uri (pypi-uri "q" version)) |
| 11955 | (sha256 |
| 11956 | (base32 |
| 11957 | "1mgfazh8fkizh6walra2zv885f3lcgr3nb02v1frfm4p8ddcy3yy")))) |
| 11958 | (build-system python-build-system) |
| 11959 | (home-page "https://github.com/zestyping/q") |
| 11960 | (synopsis "Quick-and-dirty debugging output for tired programmers") |
| 11961 | (description |
| 11962 | "q is a Python module for \"print\" style of debugging Python code. It |
| 11963 | provides convenient short API for print out of values, tracebacks, and |
| 11964 | falling into the Python interpreter.") |
| 11965 | (license license:asl2.0))) |
| 11966 | |
| 11967 | (define-public python-qnorm |
| 11968 | (package |
| 11969 | (name "python-qnorm") |
| 11970 | (version "0.8.1") |
| 11971 | (source (origin |
| 11972 | (method url-fetch) |
| 11973 | (uri (pypi-uri "qnorm" version)) |
| 11974 | (sha256 |
| 11975 | (base32 |
| 11976 | "1iykxrvlg32h78d3cr0137x93w8krcwc8gdqyfj55id917pz7ck1")))) |
| 11977 | (build-system pyproject-build-system) |
| 11978 | (arguments |
| 11979 | (list |
| 11980 | #:tests? #false ;there are none |
| 11981 | #:phases |
| 11982 | #~(modify-phases %standard-phases |
| 11983 | (add-after 'unpack 'fix-pyproject-format |
| 11984 | (lambda _ |
| 11985 | (substitute* "pyproject.toml" |
| 11986 | (("url = .*") (string-append "version = \"" #$version "\"")) |
| 11987 | (("python_requires.*") "") |
| 11988 | (("packages =.*") "") |
| 11989 | (("install_requires") "dependencies") |
| 11990 | (("\"Maarten van der Sande <[email protected]>\"") |
| 11991 | "{ name = \"Maarten van der Sande\", email = \"[email protected]\"}") |
| 11992 | (("license = \"MIT\"") "license = { file = \"LICENSE\"}"))))))) |
| 11993 | (propagated-inputs (list python-numba python-numpy python-pandas)) |
| 11994 | (home-page "https://github.com/Maarten-vd-Sande/qnorm") |
| 11995 | (synopsis "Quantile normalization") |
| 11996 | (description "This tool implements quantile normalization. It properly |
| 11997 | resolves rank ties, which is important when ties happen frequently, such as |
| 11998 | when working with discrete numbers (integers) in count tables. This |
| 11999 | implementation should be relatively fast, and can use multiple cores to sort |
| 12000 | the columns and tie-resolvement is accelerated by numba.") |
| 12001 | (license license:expat))) |
| 12002 | |
| 12003 | (define-public python-xlib |
| 12004 | (package |
| 12005 | (name "python-xlib") |
| 12006 | (version "0.29") |
| 12007 | (source |
| 12008 | (origin |
| 12009 | (method git-fetch) |
| 12010 | (uri (git-reference |
| 12011 | (url "https://github.com/python-xlib/python-xlib") |
| 12012 | (commit version))) |
| 12013 | (file-name (git-file-name name version)) |
| 12014 | (sha256 |
| 12015 | (base32 "17cwd2knqm2vwrii3kqii9abwsnydhpg4byqx1vy7rjs6i1vbqfc")))) |
| 12016 | (build-system python-build-system) |
| 12017 | (arguments |
| 12018 | `(#:phases |
| 12019 | (modify-phases %standard-phases |
| 12020 | (add-before 'check 'start-xserver |
| 12021 | (lambda* (#:key inputs #:allow-other-keys) |
| 12022 | (let ((xorg-server (assoc-ref inputs "xorg-server"))) |
| 12023 | ;; There must be a running X server and make check doesn't |
| 12024 | ;; start one. Therefore we must do it. |
| 12025 | (system (format #f "~a/bin/Xvfb :1 &" xorg-server)) |
| 12026 | (setenv "DISPLAY" ":1") |
| 12027 | #t)))))) |
| 12028 | (native-inputs |
| 12029 | (list python-mock python-setuptools-scm xorg-server)) |
| 12030 | (propagated-inputs |
| 12031 | (list python-six)) |
| 12032 | (home-page "https://github.com/python-xlib/python-xlib") |
| 12033 | (synopsis "Python X11 client library") |
| 12034 | (description |
| 12035 | "The Python X Library is intended to be a fully functional |
| 12036 | X client library for Python programs. It is useful to implement |
| 12037 | low-level X clients. It is written entirely in Python.") |
| 12038 | (license license:gpl2+))) |
| 12039 | |
| 12040 | (define-public python-singledispatch |
| 12041 | (package |
| 12042 | (name "python-singledispatch") |
| 12043 | (version "4.0.0") |
| 12044 | (source |
| 12045 | (origin |
| 12046 | (method url-fetch) |
| 12047 | (uri (pypi-uri "singledispatch" version)) |
| 12048 | (sha256 |
| 12049 | (base32 |
| 12050 | "1z5qbbvvjvh3cwcjv57p7vzhayx0j1ysnvjq0d5py6k5d2ljghzk")))) |
| 12051 | (build-system pyproject-build-system) |
| 12052 | (native-inputs |
| 12053 | (list python-pytest |
| 12054 | python-six)) ; required for conversion, not at run-time |
| 12055 | (home-page |
| 12056 | "https://docs.python.org/3/library/functools.html#functools.singledispatch") |
| 12057 | (synopsis "Backport of singledispatch feature from Python 3.4") |
| 12058 | (description |
| 12059 | "This library brings functools.singledispatch from Python 3.4 to Python |
| 12060 | 2.6-3.3.") |
| 12061 | (license license:expat))) |
| 12062 | |
| 12063 | ;; the python- version can be removed with python-3.5 |
| 12064 | (define-public python-backports-abc |
| 12065 | (package |
| 12066 | (name "python-backports-abc") |
| 12067 | (version "0.5") |
| 12068 | (source |
| 12069 | (origin |
| 12070 | (method url-fetch) |
| 12071 | (uri (pypi-uri "backports_abc" version)) |
| 12072 | (sha256 |
| 12073 | (base32 |
| 12074 | "1pkv8d1zxj5f9i227dxbjczncbv7ks7ywnjwyxfjagm02i2yafq3")))) |
| 12075 | (build-system python-build-system) |
| 12076 | (home-page "https://github.com/cython/backports_abc") |
| 12077 | (synopsis "Backport of additions to the 'collections.abc' module") |
| 12078 | (description |
| 12079 | "Python-backports-abc provides a backport of additions to the |
| 12080 | @code{collections.abc} module in Python-3.5.") |
| 12081 | (license license:psfl))) |
| 12082 | |
| 12083 | (define-public python-backports-csv |
| 12084 | (package |
| 12085 | (name "python-backports-csv") |
| 12086 | (version "1.0.7") |
| 12087 | (source |
| 12088 | (origin |
| 12089 | (method url-fetch) |
| 12090 | (uri (pypi-uri "backports.csv" version)) |
| 12091 | (sha256 |
| 12092 | (base32 "0vdx5jlhs91iizc8j8l8811nqprwvdx39pgkdc82w2qkfgzxyxqj")))) |
| 12093 | (build-system python-build-system) |
| 12094 | (home-page "https://github.com/ryanhiebert/backports.csv") |
| 12095 | (synopsis "Backport of Python 3's csv module for Python 2") |
| 12096 | (description |
| 12097 | "Provides a backport of Python 3's @code{csv} module for parsing |
| 12098 | comma separated values. The API of the @code{csv} module in Python 2 |
| 12099 | is drastically different from the @code{csv} module in Python 3. |
| 12100 | This is due, for the most part, to the difference between str in |
| 12101 | Python 2 and Python 3.") |
| 12102 | (license license:psfl))) |
| 12103 | |
| 12104 | (define-public python-waf |
| 12105 | (package |
| 12106 | (name "python-waf") |
| 12107 | (version "2.0.19") |
| 12108 | (source (origin |
| 12109 | (method url-fetch) |
| 12110 | (uri (string-append "https://waf.io/" |
| 12111 | "waf-" version ".tar.bz2")) |
| 12112 | (sha256 |
| 12113 | (base32 |
| 12114 | "19dvqbsvxz7ch03dh1v0znklrwxlz6yzddc3k9smzrrgny4jch6q")))) |
| 12115 | (build-system python-build-system) |
| 12116 | (arguments |
| 12117 | '(#:phases |
| 12118 | (modify-phases %standard-phases |
| 12119 | (replace 'build |
| 12120 | (lambda _ |
| 12121 | ;; XXX: Find a way to add all extra tools. |
| 12122 | (let ((tools '("gccdeps" |
| 12123 | "clang_compilation_database"))) |
| 12124 | (invoke "python" "waf-light" "configure" "build" |
| 12125 | (string-append "--tools=" |
| 12126 | (string-join tools ",")))))) |
| 12127 | (replace 'check |
| 12128 | (lambda _ |
| 12129 | (invoke "python" "waf" "--version"))) |
| 12130 | (replace 'install |
| 12131 | (lambda* (#:key outputs #:allow-other-keys) |
| 12132 | (let ((out (assoc-ref outputs "out"))) |
| 12133 | (install-file "waf" (string-append out "/bin"))) |
| 12134 | #t)) |
| 12135 | ;; waf breaks when it is wrapped. |
| 12136 | (delete 'wrap)))) |
| 12137 | (home-page "https://waf.io/") |
| 12138 | (synopsis "Python-based build system") |
| 12139 | (description |
| 12140 | "Waf is a Python-based framework for configuring, compiling and installing |
| 12141 | applications.") |
| 12142 | (license license:bsd-3))) |
| 12143 | |
| 12144 | (define-public python-pyzmq |
| 12145 | (package |
| 12146 | (name "python-pyzmq") |
| 12147 | (version "25.1.0") |
| 12148 | (source |
| 12149 | (origin |
| 12150 | (method url-fetch) |
| 12151 | (uri (pypi-uri "pyzmq" version)) |
| 12152 | (sha256 |
| 12153 | (base32 "0mw9zf0h9sgn2cchw24vyxgyi2nfpyfacr0mh072hdjx8qii1i40")) |
| 12154 | (snippet |
| 12155 | #~(begin |
| 12156 | (use-modules (guix build utils)) |
| 12157 | ;; The bundled zeromq source code. |
| 12158 | (delete-file-recursively "bundled") |
| 12159 | ;; Delete cythonized files. |
| 12160 | (for-each delete-file |
| 12161 | (list "zmq/backend/cython/context.c" |
| 12162 | "zmq/backend/cython/_device.c" |
| 12163 | "zmq/backend/cython/error.c" |
| 12164 | "zmq/backend/cython/message.c" |
| 12165 | "zmq/backend/cython/_poll.c" |
| 12166 | "zmq/backend/cython/_proxy_steerable.c" |
| 12167 | "zmq/backend/cython/socket.c" |
| 12168 | "zmq/backend/cython/utils.c" |
| 12169 | "zmq/backend/cython/_version.c" |
| 12170 | "zmq/devices/monitoredqueue.c")))))) |
| 12171 | (build-system python-build-system) |
| 12172 | (arguments |
| 12173 | `(#:configure-flags |
| 12174 | (list (string-append "--zmq=" (assoc-ref %build-inputs "zeromq"))) |
| 12175 | #:phases |
| 12176 | (modify-phases %standard-phases |
| 12177 | (add-before 'build 'configure |
| 12178 | (lambda _ |
| 12179 | ;; Our zeromq package is built with '--enable-drafts'; also |
| 12180 | ;; enable draft support for pyzmq so the draft test passes. |
| 12181 | (setenv "ZMQ_DRAFT_API" "1"))) |
| 12182 | (add-before 'check 'build-extensions |
| 12183 | (lambda _ |
| 12184 | ;; Cython extensions have to be built before running the tests. |
| 12185 | (invoke "python" "setup.py" "build_ext" "--inplace"))) |
| 12186 | (replace 'check |
| 12187 | (lambda* (#:key tests? #:allow-other-keys) |
| 12188 | (when tests? |
| 12189 | (invoke "pytest" "-vv"))))))) |
| 12190 | (inputs (list zeromq)) |
| 12191 | (native-inputs |
| 12192 | (list pkg-config |
| 12193 | python-cython |
| 12194 | python-pytest |
| 12195 | python-pytest-asyncio |
| 12196 | python-tornado)) |
| 12197 | (home-page "https://github.com/zeromq/pyzmq") |
| 12198 | (synopsis "Python bindings for 0MQ") |
| 12199 | (description |
| 12200 | "PyZMQ is the official Python binding for the ZeroMQ messaging library.") |
| 12201 | (license license:bsd-4))) |
| 12202 | |
| 12203 | (define-public python-immutabledict |
| 12204 | (package |
| 12205 | (name "python-immutabledict") |
| 12206 | (version "2.2.1") |
| 12207 | (source |
| 12208 | (origin |
| 12209 | (method url-fetch) |
| 12210 | (uri (pypi-uri "immutabledict" version)) |
| 12211 | (sha256 |
| 12212 | (base32 "0fpc4gbk7inpfbgdypsg6c18bmdjw8gwx47bjw0hvixn3gghxnqx")))) |
| 12213 | (build-system python-build-system) |
| 12214 | (arguments |
| 12215 | `(#:tests? #f)) ; no tests in PyPI release and no setup.py in GitHub |
| 12216 | (native-inputs |
| 12217 | (list python-pytest)) |
| 12218 | (home-page "https://github.com/corenting/immutabledict") |
| 12219 | (synopsis "Immutable wrapper around dictionaries") |
| 12220 | (description |
| 12221 | "@dfn{immutabledict} is an immutable wrapper around dictionaries. |
| 12222 | It implements the complete mapping interface and can be used as a drop-in |
| 12223 | replacement for dictionaries where immutability is desired.") |
| 12224 | (license license:expat))) |
| 12225 | |
| 12226 | (define-public python-emoji |
| 12227 | (package |
| 12228 | (name "python-emoji") |
| 12229 | (version "1.6.1") |
| 12230 | (source |
| 12231 | (origin |
| 12232 | (method url-fetch) |
| 12233 | (uri (pypi-uri "emoji" version)) |
| 12234 | (sha256 |
| 12235 | (base32 "0923mpixwq6hdpkgvi4r46alfvf608iq975rb8lnqpq29j71mmjk")))) |
| 12236 | (build-system python-build-system) |
| 12237 | (arguments |
| 12238 | `(#:phases |
| 12239 | (modify-phases %standard-phases |
| 12240 | (replace 'check |
| 12241 | (lambda* (#:key tests? #:allow-other-keys) |
| 12242 | (when tests? |
| 12243 | (invoke "python" "-m" "pytest"))))))) |
| 12244 | (native-inputs |
| 12245 | (list python-pytest)) |
| 12246 | (home-page "https://github.com/carpedm20/emoji/") |
| 12247 | (synopsis "Emoji terminal output for Python") |
| 12248 | (description "This package provides Emoji terminal output for Python. The |
| 12249 | entire set of Emoji codes as defined by the Unicode Consortium is supported in |
| 12250 | addition to a bunch of aliases.") |
| 12251 | (license license:bsd-3))) |
| 12252 | |
| 12253 | (define-public python-sarge |
| 12254 | (package |
| 12255 | (name "python-sarge") |
| 12256 | (version "0.1.7.post1") ; post release only to correct errors in metadata |
| 12257 | (source |
| 12258 | (origin |
| 12259 | (method url-fetch) |
| 12260 | (uri (pypi-uri "sarge" version)) |
| 12261 | (sha256 |
| 12262 | (base32 "0g9a53mfnp96877n1yq2jdk1mcv3xm0d93iisvgcn2prdsp45zv4")))) |
| 12263 | (build-system python-build-system) |
| 12264 | (home-page "https://docs.red-dove.com/sarge/") |
| 12265 | (synopsis "Subprocess wrapper with command pipeline functionality") |
| 12266 | (description "@code{sarge} is a wrapper for subprocess which provides |
| 12267 | command pipeline functionality.") |
| 12268 | (license license:bsd-3))) |
| 12269 | |
| 12270 | (define-public python-zipfly |
| 12271 | (package |
| 12272 | (name "python-zipfly") |
| 12273 | (version "6.0.5") |
| 12274 | (source |
| 12275 | (origin |
| 12276 | (method url-fetch) |
| 12277 | (uri (pypi-uri "zipfly" version)) |
| 12278 | (sha256 |
| 12279 | (base32 |
| 12280 | "1h7g922a8lsqd69j8blgcgg0lcd8kz51b2p4glfqmgx4vi1nkick")))) |
| 12281 | (build-system python-build-system) |
| 12282 | (home-page "http://github.com/sandes/zipfly") |
| 12283 | (synopsis "Zip archive generator") |
| 12284 | (description "ZipFly is a zip archive generator. It was created to |
| 12285 | generate very large zip archives for immediate sending out to clients, or |
| 12286 | for writing large zip archives without memory inflation.") |
| 12287 | (license license:bsd-2))) |
| 12288 | |
| 12289 | (define-public python-zipstream-new |
| 12290 | (package |
| 12291 | (name "python-zipstream-new") |
| 12292 | (version "1.1.8") |
| 12293 | (source |
| 12294 | (origin |
| 12295 | (method git-fetch) ; no tests in PyPI release |
| 12296 | (uri (git-reference |
| 12297 | (url "https://github.com/arjan-s/python-zipstream") |
| 12298 | (commit (string-append "v" version)))) |
| 12299 | (file-name (git-file-name name version)) |
| 12300 | (sha256 |
| 12301 | (base32 "14vhgg8mcjqi8cpzrw8qzbij2fr2a63l2a8fhil21k2r8vzv92cv")))) |
| 12302 | (build-system python-build-system) |
| 12303 | (native-inputs |
| 12304 | (list python-nose)) |
| 12305 | (home-page "https://github.com/arjan-s/python-zipstream") |
| 12306 | (synopsis "Zipfile generator that takes input files as well as streams") |
| 12307 | (description "@code{zipstream.py} is a zip archive generator based on |
| 12308 | @code{zipfile.py}. It was created to generate a zip file generator for |
| 12309 | streaming. This is beneficial for when you want to provide a downloadable |
| 12310 | archive of a large collection of regular files, which would be infeasible |
| 12311 | to generate the archive prior to downloading or of a very large file that |
| 12312 | you do not want to store entirely on disk or on memory.") |
| 12313 | ;; No copyright headers in the source. The LICENSE file indicates GPL3. |
| 12314 | (license license:gpl3))) |
| 12315 | |
| 12316 | (define-public python-sentry-sdk |
| 12317 | (package |
| 12318 | (name "python-sentry-sdk") |
| 12319 | (version "1.5.1") |
| 12320 | (source |
| 12321 | (origin |
| 12322 | (method git-fetch) ; no tests in PyPI release |
| 12323 | (uri (git-reference |
| 12324 | (url "https://github.com/getsentry/sentry-python") |
| 12325 | (commit version))) |
| 12326 | (file-name (git-file-name name version)) |
| 12327 | (sha256 |
| 12328 | (base32 "128bm136l5zprr3sqqb8j3d6k5i1fhz853mzvh3w8g0w1dw763mx")))) |
| 12329 | (build-system python-build-system) |
| 12330 | (arguments |
| 12331 | `(#:phases |
| 12332 | (modify-phases %standard-phases |
| 12333 | (replace 'check |
| 12334 | (lambda* (#:key inputs outputs tests? #:allow-other-keys) |
| 12335 | (when tests? |
| 12336 | (add-installed-pythonpath inputs outputs) |
| 12337 | (invoke "python" "-m" "pytest" "-k" |
| 12338 | (string-append |
| 12339 | ;; This test requires extra dependencies. |
| 12340 | "not test_auto_enabling_integrations" |
| 12341 | "_catches_import_error" |
| 12342 | ;; Tests below run pip command. |
| 12343 | " and not test_unhandled_exception" |
| 12344 | " and not test_timeout_error" |
| 12345 | " and not test_performance_no_error" |
| 12346 | " and not test_performance_error" |
| 12347 | " and not test_traces_sampler_gets_correct" |
| 12348 | "_values_in_sampling_context" |
| 12349 | " and not test_handled_exception" |
| 12350 | ;; Tests below require network. |
| 12351 | " and not test_crumb_capture" |
| 12352 | " and not test_crumb_capture" |
| 12353 | " and not test_crumb_capture_hint" |
| 12354 | " and not test_httplib_misuse" |
| 12355 | ;; Fails with IndexError. |
| 12356 | " and not test_session_mode_defaults_to" |
| 12357 | "_request_mode_in_wsgi_handler" |
| 12358 | ;; Tests below fail with pytest 7 |
| 12359 | " and not test_leaks" |
| 12360 | " and not test_basic" |
| 12361 | " and not test_keyboard_interrupt_is_captured" |
| 12362 | " and not test_transaction_with_error" |
| 12363 | " and not test_transaction_no_error" |
| 12364 | " and not test_start_span_to_start_transaction" |
| 12365 | " and not test_tracestate_computation" |
| 12366 | " and not test_doesnt_add_new_tracestate_to_transaction_when_none_given" |
| 12367 | " and not test_adds_tracestate_to_transaction_when_to_traceparent_called" |
| 12368 | " and not test_adds_tracestate_to_transaction_when_getting_trace_context" |
| 12369 | " and not test_tracestate_is_immutable_once_set" |
| 12370 | " and not test_to_traceparent" |
| 12371 | " and not test_to_tracestate" |
| 12372 | " and not test_sentrytrace_extraction" |
| 12373 | " and not test_tracestate_extraction" |
| 12374 | " and not test_iter_headers" |
| 12375 | " and not test_tracestate_reinflation" |
| 12376 | " and not test_continue_from_headers" |
| 12377 | " and not test_memory_usage" |
| 12378 | " and not test_transactions_do_not_go_through_before_send" |
| 12379 | " and not test_start_span_after_finish" |
| 12380 | " and not test_span_trimming" |
| 12381 | " and not test_transaction_naming" |
| 12382 | " and not test_start_transaction" |
| 12383 | " and not test_finds_transaction_on_scope" |
| 12384 | " and not test_finds_transaction_when_descendent_span_is_on_scope" |
| 12385 | " and not test_finds_orphan_span_on_scope" |
| 12386 | " and not test_finds_non_orphan_span_on_scope" |
| 12387 | " and not test_circular_references")))))))) |
| 12388 | (native-inputs |
| 12389 | (list python-django |
| 12390 | python-executing |
| 12391 | python-gevent |
| 12392 | python-jsonschema |
| 12393 | python-mock |
| 12394 | python-pyrsistent |
| 12395 | python-pytest |
| 12396 | python-pytest-cov |
| 12397 | python-pytest-django |
| 12398 | python-pytest-forked |
| 12399 | python-pytest-localserver |
| 12400 | python-werkzeug)) |
| 12401 | (propagated-inputs |
| 12402 | (list python-certifi python-urllib3)) |
| 12403 | (home-page "https://github.com/getsentry/sentry-python") |
| 12404 | (synopsis "Python SDK for Sentry") |
| 12405 | (description "This package provides a Python SDK for the Sentry |
| 12406 | application monitoring and error tracking software.") |
| 12407 | (license license:bsd-2))) |
| 12408 | |
| 12409 | (define-public python-pep8 |
| 12410 | ;; This package has been renamed to ‘pycodestyle’ and is no longer updated. |
| 12411 | ;; Its last release (1.7.1) adds only a scary warning to this effect, breaking |
| 12412 | ;; some dependents' test suites, and nothing more. |
| 12413 | (package |
| 12414 | (name "python-pep8") |
| 12415 | (version "1.7.0") |
| 12416 | (source |
| 12417 | (origin |
| 12418 | (method url-fetch) |
| 12419 | (uri (pypi-uri "pep8" version)) |
| 12420 | (sha256 |
| 12421 | (base32 |
| 12422 | "002rkl4lsn6x2mxmf8ar00l0m8i3mzrc6pnzz77blyksmpsxa4x1")) |
| 12423 | (patches (search-patches "python-pep8-stdlib-tokenize-compat.patch")))) |
| 12424 | (build-system python-build-system) |
| 12425 | (home-page "https://pep8.readthedocs.org/") |
| 12426 | (synopsis "Python style guide checker") |
| 12427 | (description |
| 12428 | "This tools checks Python code against some of the style conventions in |
| 12429 | PEP 8.") |
| 12430 | (license license:expat))) |
| 12431 | |
| 12432 | (define-public python-pep8-naming |
| 12433 | (package |
| 12434 | (name "python-pep8-naming") |
| 12435 | (version "0.13.0") |
| 12436 | (source |
| 12437 | (origin |
| 12438 | (method url-fetch) |
| 12439 | (uri (pypi-uri "pep8-naming" version)) |
| 12440 | (sha256 |
| 12441 | (base32 |
| 12442 | "1dc0b6xw1cxp01v9zsv4ryk49rfs1lngfpvzsixgp8b7z3ffcf4z")))) |
| 12443 | (build-system python-build-system) |
| 12444 | (propagated-inputs (list python-flake8)) |
| 12445 | (home-page "https://github.com/PyCQA/pep8-naming") |
| 12446 | (synopsis "Check PEP-8 naming conventions") |
| 12447 | (description |
| 12448 | "This package provides the @code{pep8-naming} Python module, a |
| 12449 | plugin for flake8 to check PEP-8 naming conventions.") |
| 12450 | (license license:expat))) |
| 12451 | |
| 12452 | (define-public python-pep517 |
| 12453 | (package |
| 12454 | (inherit python-pep517-bootstrap) |
| 12455 | (name "python-pep517") |
| 12456 | (arguments |
| 12457 | '(#:phases (modify-phases %standard-phases |
| 12458 | (replace 'check |
| 12459 | (lambda* (#:key tests? #:allow-other-keys) |
| 12460 | (delete-file "pytest.ini") |
| 12461 | (delete-file "tests/test_meta.py") |
| 12462 | (if tests? |
| 12463 | (invoke "pytest") #t)))))) |
| 12464 | (native-inputs (list python-mock python-pytest python-testpath)))) |
| 12465 | |
| 12466 | (define-public python-pyproject-metadata |
| 12467 | (package |
| 12468 | (name "python-pyproject-metadata") |
| 12469 | (version "0.6.1") |
| 12470 | (source |
| 12471 | (origin |
| 12472 | (method git-fetch) |
| 12473 | (uri (git-reference |
| 12474 | (url "https://github.com/FFY00/python-pyproject-metadata") |
| 12475 | (commit version))) |
| 12476 | (file-name (git-file-name name version)) |
| 12477 | (sha256 |
| 12478 | (base32 |
| 12479 | "00zahgw9zjfqwf0218bj5k732aibnn68cq1p8f0wmbirb7fy5k31")))) |
| 12480 | (build-system pyproject-build-system) |
| 12481 | (propagated-inputs (list python-packaging)) |
| 12482 | (native-inputs (list python-pypa-build python-pytest python-tomli)) |
| 12483 | (home-page "https://github.com/FFY00/python-pyproject-metadata") |
| 12484 | (synopsis "Dataclass for PEP 621 metadata") |
| 12485 | (description "This project does not implement the parsing of |
| 12486 | @file{pyproject.toml} containing PEP 621 metadata. Instead, given a Python |
| 12487 | data structure representing PEP 621 metadata (already parsed), it will |
| 12488 | validate this input and generate a PEP 643-compliant metadata |
| 12489 | file (e.g. @file{PKG-INFO}).") |
| 12490 | (license license:expat))) |
| 12491 | |
| 12492 | ;; pep621 was renamed to pyproject-metadata. |
| 12493 | (define-public python-pep621 |
| 12494 | (deprecated-package "python-pep621" python-pyproject-metadata)) |
| 12495 | |
| 12496 | (define-public python-pyflakes |
| 12497 | (package |
| 12498 | (name "python-pyflakes") |
| 12499 | (version "2.4.0") |
| 12500 | (source |
| 12501 | (origin |
| 12502 | (method url-fetch) |
| 12503 | (uri (pypi-uri "pyflakes" version)) |
| 12504 | (sha256 |
| 12505 | (base32 |
| 12506 | "0k5jn8jpxni264wxf6cc3xcd1qckc0pww30bsd77mwzdf8l5ra05")))) |
| 12507 | (build-system python-build-system) |
| 12508 | (home-page "https://github.com/PyCQA/pyflakes") |
| 12509 | (synopsis "Passive checker of Python programs") |
| 12510 | (description |
| 12511 | "Pyflakes statically checks Python source code for common errors.") |
| 12512 | (license license:expat))) |
| 12513 | |
| 12514 | (define-public python-pyflakes-2.2 |
| 12515 | (package |
| 12516 | (inherit python-pyflakes) |
| 12517 | (version "2.2.0") |
| 12518 | (source (origin |
| 12519 | (method url-fetch) |
| 12520 | (uri (pypi-uri "pyflakes" version)) |
| 12521 | (sha256 |
| 12522 | (base32 |
| 12523 | "1j3zqbiwkyicvww499bblq33x0bjpzdrxajhaysr7sk7x5gdgcim")) |
| 12524 | (patches |
| 12525 | (search-patches "python-pyflakes-test-location.patch")))))) |
| 12526 | |
| 12527 | (define-public python-mccabe |
| 12528 | (package |
| 12529 | (name "python-mccabe") |
| 12530 | (version "0.6.1") |
| 12531 | (source |
| 12532 | (origin |
| 12533 | (method url-fetch) |
| 12534 | (uri (pypi-uri "mccabe" version)) |
| 12535 | (sha256 |
| 12536 | (base32 |
| 12537 | "07w3p1qm44hgxf3vvwz84kswpsx6s7kvaibzrsx5dzm0hli1i3fx")))) |
| 12538 | (build-system python-build-system) |
| 12539 | (native-inputs |
| 12540 | (list python-toml python-pytest-bootstrap python-pytest-runner)) |
| 12541 | (home-page "https://github.com/PyCQA/mccabe") |
| 12542 | (synopsis "McCabe checker, plugin for flake8") |
| 12543 | (description "This package provides a Flake8 plug-in to compute the McCabe |
| 12544 | cyclomatic complexity of Python source code.") |
| 12545 | (license license:expat))) |
| 12546 | |
| 12547 | (define-public python-autoflake8 |
| 12548 | (package |
| 12549 | (name "python-autoflake8") |
| 12550 | (version "0.4.0") |
| 12551 | (source (origin |
| 12552 | (method git-fetch) ;for tests |
| 12553 | (uri (git-reference |
| 12554 | (url "https://github.com/fsouza/autoflake8") |
| 12555 | (commit (string-append "v" version)))) |
| 12556 | (file-name (git-file-name name version)) |
| 12557 | (sha256 |
| 12558 | (base32 |
| 12559 | "0jx7bkslbhr24yvq60pl39faz2r6g93f1zm1gygswl0rzr5zmgnh")))) |
| 12560 | (build-system pyproject-build-system) |
| 12561 | (native-inputs |
| 12562 | (list python-aiofiles |
| 12563 | python-poetry-core |
| 12564 | python-pytest |
| 12565 | python-pytest-xdist)) |
| 12566 | (propagated-inputs (list python-pyflakes)) |
| 12567 | (home-page "https://github.com/fsouza/autoflake8") |
| 12568 | (synopsis "Automatically fix issues reported by flake8") |
| 12569 | (description "Tool to automatically fix some issues reported by |
| 12570 | @command{flake8}.") |
| 12571 | (license license:expat))) |
| 12572 | |
| 12573 | (define-public python-flake8 |
| 12574 | (package |
| 12575 | (name "python-flake8") |
| 12576 | (version "4.0.1") |
| 12577 | (source (origin |
| 12578 | (method url-fetch) |
| 12579 | (uri (pypi-uri "flake8" version)) |
| 12580 | (sha256 |
| 12581 | (base32 |
| 12582 | "03c7mnk34wfz7a0m5zq0273y94awz69fy5iww8alh4a4v96h6vl0")))) |
| 12583 | (build-system python-build-system) |
| 12584 | (arguments |
| 12585 | `(#:phases (modify-phases %standard-phases |
| 12586 | (replace 'check |
| 12587 | (lambda* (#:key tests? #:allow-other-keys) |
| 12588 | (when tests? |
| 12589 | (invoke "pytest" "-v"))))))) |
| 12590 | (propagated-inputs |
| 12591 | (list python-entrypoints |
| 12592 | python-mccabe |
| 12593 | python-pycodestyle |
| 12594 | python-pyflakes)) |
| 12595 | (native-inputs (list python-pytest)) |
| 12596 | (home-page "https://gitlab.com/pycqa/flake8") |
| 12597 | (synopsis "The modular source code checker: pep8, pyflakes and co") |
| 12598 | (description |
| 12599 | "Flake8 is a wrapper around PyFlakes, pep8 and python-mccabe.") |
| 12600 | (license license:expat))) |
| 12601 | |
| 12602 | (define-public python-flake8-3.8 |
| 12603 | (package |
| 12604 | (inherit python-flake8) |
| 12605 | (version "3.8.4") |
| 12606 | (source (origin |
| 12607 | (method url-fetch) |
| 12608 | (uri (pypi-uri "flake8" version)) |
| 12609 | (sha256 |
| 12610 | (base32 |
| 12611 | "0fvcrsbyzjpcli8ldbpsdbpmf238nkvwc1dy4hy82lf63rvfinma")))) |
| 12612 | (propagated-inputs |
| 12613 | (list python-pycodestyle-2.6 python-entrypoints python-pyflakes-2.2 |
| 12614 | python-mccabe)))) |
| 12615 | |
| 12616 | (define-public python-flake8-blind-except |
| 12617 | (package |
| 12618 | (name "python-flake8-blind-except") |
| 12619 | (version "0.2.1") |
| 12620 | (source |
| 12621 | (origin |
| 12622 | (method url-fetch) |
| 12623 | (uri (pypi-uri "flake8-blind-except" version)) |
| 12624 | (sha256 |
| 12625 | (base32 "05nxsxfzfhwsm8gys90228imm2qbnqnw5y8bfqyfngnbkmd5fnpj")))) |
| 12626 | (build-system python-build-system) |
| 12627 | (arguments |
| 12628 | `(#:tests? #f)) ; no tests |
| 12629 | (native-inputs (list python-pycodestyle)) |
| 12630 | (home-page "https://github.com/elijahandrews/flake8-blind-except") |
| 12631 | (synopsis "Check for blind @code{except:} statements") |
| 12632 | (description "This package provides a flake8 extension that checks for |
| 12633 | blind @code{except:} statements.") |
| 12634 | (license license:expat))) |
| 12635 | |
| 12636 | (define-public python-flake8-bugbear |
| 12637 | (package |
| 12638 | (name "python-flake8-bugbear") |
| 12639 | (version "20.1.4") |
| 12640 | (source |
| 12641 | (origin |
| 12642 | (method url-fetch) |
| 12643 | (uri (pypi-uri "flake8-bugbear" version)) |
| 12644 | (sha256 |
| 12645 | (base32 |
| 12646 | "0qiihb242fygzyrfynq913ak7cdmx8mcac9c0zk3y5gv16qf80mx")))) |
| 12647 | (build-system python-build-system) |
| 12648 | (arguments |
| 12649 | '(#:phases |
| 12650 | (modify-phases %standard-phases |
| 12651 | (add-before 'check 'disable-test |
| 12652 | (lambda _ |
| 12653 | ;; This test fails on slow computers. |
| 12654 | (substitute* "tests/test_bugbear.py" |
| 12655 | (("def test_does_not_crash_on_any_valid_code") |
| 12656 | "def _test_does_not_crash_on_any_valid_code"))))))) |
| 12657 | (native-inputs |
| 12658 | (list python-hypothesis python-hypothesmith)) |
| 12659 | (propagated-inputs |
| 12660 | (list python-attrs python-flake8)) |
| 12661 | (home-page "https://github.com/PyCQA/flake8-bugbear") |
| 12662 | (synopsis |
| 12663 | "Flake8 plugin for finding likely bugs and design problems in your program") |
| 12664 | (description |
| 12665 | "This package contains a plugin for Flake8 finding likely bugs and |
| 12666 | design problems in your program. It contains warnings that don't belong |
| 12667 | in pyflakes and pycodestyle.") |
| 12668 | (license license:expat))) |
| 12669 | |
| 12670 | (define-public python-flake8-continuation |
| 12671 | (package |
| 12672 | (name "python-flake8-continuation") |
| 12673 | (version "1.0.5") |
| 12674 | (source |
| 12675 | (origin |
| 12676 | (method url-fetch) |
| 12677 | (uri (pypi-uri "flake8-continuation" version)) |
| 12678 | (sha256 |
| 12679 | (base32 |
| 12680 | "0dzaw8jr7yhlabxhrblnrizxx17xa9ngjnbr1kidg5lapq6b9q1y")))) |
| 12681 | (build-system python-build-system) |
| 12682 | (propagated-inputs |
| 12683 | (list python-flake8 python-pycodestyle python-six)) |
| 12684 | (home-page "https://github.com/planetlabs/flake8-continuation") |
| 12685 | (synopsis "Flake8 Line Continuation Plugin") |
| 12686 | (description "A Flake8 plugin that checks for the line continuation |
| 12687 | style to be in the preferred method according to PEP-8, specifically: |
| 12688 | @quotation |
| 12689 | The preferred way of wrapping long lines is by using Python's implied |
| 12690 | line continuation inside parentheses, brackets and braces. Long lines |
| 12691 | can be broken over multiple lines by wrapping expressions in parentheses. |
| 12692 | These should be used in preference to using a backslash for line continuation. |
| 12693 | @end quotation") |
| 12694 | (license license:asl2.0))) |
| 12695 | |
| 12696 | (define-public python-flake8-debugger |
| 12697 | (package |
| 12698 | (name "python-flake8-debugger") |
| 12699 | (version "4.1.2") |
| 12700 | (source |
| 12701 | (origin |
| 12702 | (method url-fetch) |
| 12703 | (uri (pypi-uri "flake8-debugger" version)) |
| 12704 | (sha256 |
| 12705 | (base32 "0h1qlzbxxhjsw6kg3mcml9h8byy77m9a5z06z2dnvqs115b05c2j")))) |
| 12706 | (build-system python-build-system) |
| 12707 | (arguments |
| 12708 | `(#:tests? #f)) ; no tests in PyPI and no setup.py in GitHub |
| 12709 | (propagated-inputs |
| 12710 | (list python-flake8 python-pycodestyle)) |
| 12711 | (home-page "https://github.com/jbkahn/flake8-debugger") |
| 12712 | (synopsis "@code{ipdb} and @code{pdb} statement checker plugin for flake8") |
| 12713 | (description "This package provides a Flake8 plugin that checks for |
| 12714 | @code{ipdb} and @code{pdb} imports and set traces, as well as |
| 12715 | @code{from IPython.terminal.embed}, @code{import InteractiveShellEmbed} |
| 12716 | and @code{InteractiveShellEmbed()()}.") |
| 12717 | (license license:expat))) |
| 12718 | |
| 12719 | (define-public python-flake8-implicit-str-concat |
| 12720 | (package |
| 12721 | (name "python-flake8-implicit-str-concat") |
| 12722 | (version "0.2.0") |
| 12723 | (source |
| 12724 | (origin |
| 12725 | (method url-fetch) |
| 12726 | (uri (pypi-uri "flake8_implicit_str_concat" version)) |
| 12727 | (sha256 |
| 12728 | (base32 "1v0y29xlmbr2q12a4nnpm1dm9aw1mjiys1x8jif4z8c90d63cqm6")))) |
| 12729 | (build-system python-build-system) |
| 12730 | (arguments |
| 12731 | '(#:tests? #f ;no tests |
| 12732 | #:phases (modify-phases %standard-phases |
| 12733 | (add-after 'unpack 'loosen-requirements |
| 12734 | (lambda _ |
| 12735 | ;; Permit newer versions of attrs. Remove for >0.2. |
| 12736 | (substitute* "setup.py" |
| 12737 | ((", <21") ""))))))) |
| 12738 | (propagated-inputs |
| 12739 | (list python-attrs python-more-itertools)) |
| 12740 | (home-page "https://github.com/keisheiled/flake8-implicit-str-concat") |
| 12741 | (synopsis "Flake8 plugin to encourage correct string literal concatenation") |
| 12742 | (description |
| 12743 | "This is a plugin for the Python code checking tool Flake8 to encourage |
| 12744 | correct string literal concatenation. |
| 12745 | |
| 12746 | It looks for style problems like implicitly concatenated string literals on |
| 12747 | the same line (which can be introduced by the code formatting tool Black), or |
| 12748 | unnecessary plus operators for explicit string literal concatenation.") |
| 12749 | (license license:expat))) |
| 12750 | |
| 12751 | (define-public python-flake8-print |
| 12752 | (package |
| 12753 | (name "python-flake8-print") |
| 12754 | (version "4.0.0") |
| 12755 | (source |
| 12756 | (origin |
| 12757 | (method url-fetch) |
| 12758 | (uri (pypi-uri "flake8-print" version)) |
| 12759 | (sha256 |
| 12760 | (base32 "05k5kkvyk6fdmvnacxfzypk74vbl3pmva13dqg1aljfwnxsc7yjs")))) |
| 12761 | (build-system python-build-system) |
| 12762 | (propagated-inputs |
| 12763 | (list python-flake8 python-pycodestyle python-six)) |
| 12764 | (home-page "https://github.com/jbkahn/flake8-print") |
| 12765 | (synopsis "Print statement checker plugin for Flake8") |
| 12766 | (description |
| 12767 | "This plugin for Flake8 checks for @code{print} statements in Python |
| 12768 | files.") |
| 12769 | (license license:expat))) |
| 12770 | |
| 12771 | (define-public python-flake8-pyi |
| 12772 | (package |
| 12773 | (name "python-flake8-pyi") |
| 12774 | (version "20.10.0") |
| 12775 | (source |
| 12776 | (origin |
| 12777 | (method url-fetch) |
| 12778 | (uri (pypi-uri "flake8-pyi" version)) |
| 12779 | (sha256 |
| 12780 | (base32 |
| 12781 | "0b27n2pmrxcc7nva4wp2i7mrag0fnq0firvhg1ljq593a45b5qyf")))) |
| 12782 | (build-system python-build-system) |
| 12783 | (propagated-inputs |
| 12784 | (list python-attrs python-flake8 python-pyflakes)) |
| 12785 | (home-page "https://github.com/ambv/flake8-pyi") |
| 12786 | (synopsis |
| 12787 | "Flake8 plugin that provides specializations for type hinting stub files") |
| 12788 | (description |
| 12789 | "This package contains a plugin that provides specializations for |
| 12790 | type hinting stub files, especially interesting for linting typeshed. It |
| 12791 | adds the @file{.pyi} extension to the default value of the @code{--filename} |
| 12792 | command-line argument to Flake8. This means stubs are linted by default with |
| 12793 | this plugin enabled, without needing to explicitly list every file. It |
| 12794 | modifies PyFlakes runs for @file{.pyi} files to defer checking type annotation |
| 12795 | expressions after the entire file has been read. This enables support for |
| 12796 | first-class forward references that stub files use.") |
| 12797 | (license license:expat))) |
| 12798 | |
| 12799 | (define-public python-flake8-pie |
| 12800 | (package |
| 12801 | (name "python-flake8-pie") |
| 12802 | (version "0.5.0") |
| 12803 | (source |
| 12804 | (origin |
| 12805 | (method url-fetch) |
| 12806 | (uri (pypi-uri "flake8-pie" version)) |
| 12807 | (sha256 |
| 12808 | (base32 "0kgipl5gljlp7aa7ykx15pswpzkd0d0qiznihb2z0d9a73181dyd")))) |
| 12809 | (build-system python-build-system) |
| 12810 | (home-page "https://github.com/sbdchd/flake8-pie") |
| 12811 | (synopsis "Flake8 extension that implements lints") |
| 12812 | (description |
| 12813 | "This package provides a flake8 extension that implements miscellaneous |
| 12814 | lints.") |
| 12815 | (license license:bsd-2))) |
| 12816 | |
| 12817 | (define-public python-flake8-quotes |
| 12818 | (package |
| 12819 | (name "python-flake8-quotes") |
| 12820 | (version "3.2.0") |
| 12821 | (source |
| 12822 | (origin |
| 12823 | (method url-fetch) |
| 12824 | (uri (pypi-uri "flake8-quotes" version)) |
| 12825 | (sha256 |
| 12826 | (base32 |
| 12827 | "0ph5s6lxgpzz4an0ax6s5xjqypqmngwr5b1i0h9pqhzghplic49z")))) |
| 12828 | (build-system python-build-system) |
| 12829 | (propagated-inputs |
| 12830 | (list python-flake8)) |
| 12831 | (home-page "https://github.com/zheller/flake8-quotes/") |
| 12832 | (synopsis "Flake8 lint for quotes") |
| 12833 | (description "This package provides a Flake8 lint for quotes.") |
| 12834 | (license license:expat))) |
| 12835 | |
| 12836 | (define-public python-flake8-todo |
| 12837 | (package |
| 12838 | (name "python-flake8-todo") |
| 12839 | (version "0.7") |
| 12840 | (source |
| 12841 | (origin |
| 12842 | (method url-fetch) |
| 12843 | (uri (pypi-uri "flake8-todo" version)) |
| 12844 | (sha256 |
| 12845 | (base32 |
| 12846 | "05arm0sch3r8248035kilmf01z0mxsahw6vpbbz0d343zy8m8k3f")))) |
| 12847 | (build-system python-build-system) |
| 12848 | (propagated-inputs |
| 12849 | (list python-pycodestyle)) |
| 12850 | (home-page "https://github.com/schlamar/flake8-todo") |
| 12851 | (synopsis "TODO notes checker, plugin for flake8") |
| 12852 | (description |
| 12853 | "This package provides the @code{flake8-todo} Python module, a |
| 12854 | TODO notes checker plugin for flake8.") |
| 12855 | (license license:expat))) |
| 12856 | |
| 12857 | (define-public python-flake8-isort |
| 12858 | (package |
| 12859 | (name "python-flake8-isort") |
| 12860 | (version "4.1.1") |
| 12861 | (source |
| 12862 | (origin |
| 12863 | (method url-fetch) |
| 12864 | (uri (pypi-uri "flake8-isort" version)) |
| 12865 | (sha256 |
| 12866 | (base32 "05r7z0j9rqgy0a9261bhisairrz6w8hy5hy5kf2mhvhfnx53056q")))) |
| 12867 | (build-system python-build-system) |
| 12868 | (arguments |
| 12869 | (list |
| 12870 | #:phases |
| 12871 | #~(modify-phases %standard-phases |
| 12872 | (replace 'check |
| 12873 | (lambda* (#:key tests? #:allow-other-keys) |
| 12874 | (when tests? |
| 12875 | (invoke "pytest" "-vv"))))))) |
| 12876 | (propagated-inputs (list python-flake8 python-isort python-testfixtures)) |
| 12877 | (native-inputs (list python-pytest)) |
| 12878 | (home-page "https://github.com/gforcada/flake8-isort") |
| 12879 | (synopsis "Flake8 plugin integrating isort") |
| 12880 | (description "This package provides a flake8 plugin that integrates isort, |
| 12881 | extending flake8 so that it can warn about badly sorted Python import |
| 12882 | directives.") |
| 12883 | (license license:gpl2+))) |
| 12884 | |
| 12885 | (define-public python-autoflake |
| 12886 | (package |
| 12887 | (name "python-autoflake") |
| 12888 | (version "1.3.1") |
| 12889 | (source |
| 12890 | (origin |
| 12891 | (method url-fetch) |
| 12892 | (uri (pypi-uri "autoflake" version)) |
| 12893 | (sha256 |
| 12894 | (base32 "0nzr057dbmgprp4a52ymafdkdd5zp2wcqf42913xc7hhvvdbj338")))) |
| 12895 | (build-system python-build-system) |
| 12896 | (propagated-inputs |
| 12897 | (list python-pyflakes)) |
| 12898 | (home-page "https://github.com/myint/autoflake") |
| 12899 | (synopsis "Removes unused imports and unused variables") |
| 12900 | (description |
| 12901 | "@code{autoflake} removes unused imports and unused variables from Python |
| 12902 | code as reported by @code{pyflakes}. |
| 12903 | |
| 12904 | By default, it only removes unused imports for modules that are part of the |
| 12905 | standard library. Removal of unused variables is also disabled by default. |
| 12906 | It also removes useless @code{pass} statements.") |
| 12907 | (license license:expat))) |
| 12908 | |
| 12909 | (define-public python-mistune |
| 12910 | (package |
| 12911 | (name "python-mistune") |
| 12912 | (version "0.8.4") |
| 12913 | (source |
| 12914 | (origin |
| 12915 | (method url-fetch) |
| 12916 | (uri (pypi-uri "mistune" version)) |
| 12917 | (sha256 |
| 12918 | (base32 |
| 12919 | "0vkmsh0x480rni51lhyvigfdf06b9247z868pk3bal1wnnfl58sr")))) |
| 12920 | (build-system python-build-system) |
| 12921 | (native-inputs |
| 12922 | (list python-nose python-cython)) |
| 12923 | (home-page "https://github.com/lepture/mistune") |
| 12924 | (synopsis "Markdown parser in pure Python") |
| 12925 | (description "This package provides a fast markdown parser in pure |
| 12926 | Python.") |
| 12927 | (license license:bsd-3))) |
| 12928 | |
| 12929 | ;; 2.0 is not released yet, but some packages have started using it. |
| 12930 | (define-public python-mistune-next |
| 12931 | (package |
| 12932 | (inherit python-mistune) |
| 12933 | (name "python-mistune-next") |
| 12934 | (version "2.0.4") |
| 12935 | (source (origin |
| 12936 | (method url-fetch) |
| 12937 | (uri (pypi-uri "mistune" version)) |
| 12938 | (sha256 |
| 12939 | (base32 |
| 12940 | "024q9l6mgd37wa25w7dhskv1m3zsj5lf0w9cfyx7l9p2adhadq4y")))) |
| 12941 | (arguments |
| 12942 | (list |
| 12943 | #:phases |
| 12944 | #~(modify-phases %standard-phases |
| 12945 | (replace 'check |
| 12946 | (lambda* (#:key tests? #:allow-other-keys) |
| 12947 | (when tests? |
| 12948 | (invoke "pytest" "-vv"))))))) |
| 12949 | (native-inputs (list python-pytest)))) |
| 12950 | |
| 12951 | (define-public python-markdown |
| 12952 | (package |
| 12953 | (name "python-markdown") |
| 12954 | (version "3.3.4") |
| 12955 | (source |
| 12956 | (origin |
| 12957 | (method url-fetch) |
| 12958 | (uri (pypi-uri "Markdown" version)) |
| 12959 | (sha256 |
| 12960 | (base32 |
| 12961 | "0jbs73nincha8fkfxx267sfxac6pl0ckszjbqbb8gk4dhs8v9d9i")))) |
| 12962 | (build-system python-build-system) |
| 12963 | (native-inputs |
| 12964 | (list python-nose python-pyyaml)) |
| 12965 | (home-page "https://python-markdown.github.io/") |
| 12966 | (synopsis "Python implementation of Markdown") |
| 12967 | (description |
| 12968 | "This package provides a Python implementation of John Gruber's |
| 12969 | Markdown. The library features international input, various Markdown |
| 12970 | extensions, and several HTML output formats. A command line wrapper |
| 12971 | markdown_py is also provided to convert Markdown files to HTML.") |
| 12972 | (license license:bsd-3))) |
| 12973 | |
| 12974 | (define-public python-mdx-include |
| 12975 | (package |
| 12976 | (name "python-mdx-include") |
| 12977 | (version "1.4.1") |
| 12978 | (source (origin |
| 12979 | ;; Use git, as there are some test files missing from the PyPI |
| 12980 | ;; release, see https://github.com/neurobin/mdx_include/issues/9 |
| 12981 | (method git-fetch) |
| 12982 | (uri (git-reference |
| 12983 | (url "https://github.com/neurobin/mdx_include") |
| 12984 | ;; Releases are not tagged on github, see |
| 12985 | ;; https://github.com/neurobin/mdx_include/issues/10 |
| 12986 | (commit "683e6be7a00a1ef4d673ad0294458fa61bc97286"))) |
| 12987 | (file-name (git-file-name name version)) |
| 12988 | (sha256 |
| 12989 | (base32 |
| 12990 | "0qpzgln4ybd7pl0m9s19dv60aq9cvwrk7x3yz96kjhcywaa5w386")))) |
| 12991 | (build-system python-build-system) |
| 12992 | (arguments |
| 12993 | '(#:phases |
| 12994 | (modify-phases %standard-phases |
| 12995 | (add-before 'check 'disable-test-requiring-network |
| 12996 | (lambda _ |
| 12997 | (substitute* "mdx_include/test/test.py" |
| 12998 | (("(\\s+def )test_(cache|config|default)\\(" _ pre post) |
| 12999 | (string-append pre "__off__test_" post "(")))))))) |
| 13000 | (propagated-inputs (list python-cyclic python-markdown python-rcslice)) |
| 13001 | (home-page "https://github.com/neurobin/mdx_include") |
| 13002 | (synopsis "Python Markdown extension to include local or remote files") |
| 13003 | (description "Include extension for Python Markdown. It lets you include |
| 13004 | local or remote (downloadable) files into your markdown at arbitrary |
| 13005 | positions. |
| 13006 | |
| 13007 | This project is motivated by markdown-include and provides the same |
| 13008 | functionalities with some extras.") |
| 13009 | (license license:bsd-3))) |
| 13010 | |
| 13011 | (define-public python-ptyprocess |
| 13012 | (package |
| 13013 | (name "python-ptyprocess") |
| 13014 | (version "0.5.2") |
| 13015 | (source |
| 13016 | (origin |
| 13017 | (method url-fetch) |
| 13018 | (uri (pypi-uri "ptyprocess" version)) |
| 13019 | (sha256 |
| 13020 | (base32 |
| 13021 | "0ra31k10v3629xq0kdn8lwmfbi97anmk48r03yvh7mks0kq96hg6")))) |
| 13022 | (build-system python-build-system) |
| 13023 | (native-inputs |
| 13024 | (list python-nose)) |
| 13025 | (arguments |
| 13026 | `(#:phases |
| 13027 | (modify-phases %standard-phases |
| 13028 | (replace 'check |
| 13029 | (lambda _ (invoke "nosetests")))))) |
| 13030 | (home-page "https://github.com/pexpect/ptyprocess") |
| 13031 | (synopsis "Run a subprocess in a pseudo terminal") |
| 13032 | (description |
| 13033 | "This package provides a Python library used to launch a subprocess in a |
| 13034 | pseudo terminal (pty), and interact with both the process and its pty.") |
| 13035 | (license license:isc))) |
| 13036 | |
| 13037 | (define-public python-cram |
| 13038 | (package |
| 13039 | (name "python-cram") |
| 13040 | (version "0.7") |
| 13041 | (home-page "https://bitheap.org/cram/") |
| 13042 | (source (origin |
| 13043 | (method url-fetch) |
| 13044 | (uri (list (string-append home-page "cram-" |
| 13045 | version ".tar.gz") |
| 13046 | (pypi-uri "cram" version))) |
| 13047 | (sha256 |
| 13048 | (base32 |
| 13049 | "0bvz6fwdi55rkrz3f50zsy35gvvwhlppki2yml5bj5ffy9d499vx")))) |
| 13050 | (arguments |
| 13051 | '(#:phases |
| 13052 | (modify-phases %standard-phases |
| 13053 | (add-after 'unpack 'patch-source |
| 13054 | (lambda _ |
| 13055 | (substitute* (find-files "cram" ".*\\.py$") |
| 13056 | ;; Replace default shell path. |
| 13057 | (("/bin/sh") (which "sh"))) |
| 13058 | (substitute* (find-files "tests" ".*\\.t$") |
| 13059 | (("md5") "md5sum") |
| 13060 | (("/bin/bash") (which "bash")) |
| 13061 | (("/bin/sh") (which "sh"))) |
| 13062 | (substitute* "cram/_test.py" |
| 13063 | ;; This hack works around a bug triggered by substituting |
| 13064 | ;; the /bin/sh paths. "tests/usage.t" compares the output of |
| 13065 | ;; "cram -h", which breaks the output at 80 characters. This |
| 13066 | ;; causes the line showing the default shell to break into two |
| 13067 | ;; lines, but the test expects a single line... |
| 13068 | (("env\\['COLUMNS'\\] = '80'") |
| 13069 | "env['COLUMNS'] = '160'")) |
| 13070 | |
| 13071 | (substitute* "Makefile" |
| 13072 | ;; Recent versions of python-coverage have caused the test |
| 13073 | ;; coverage to decrease (as of version 0.7). Allow that. |
| 13074 | (("--fail-under=100") |
| 13075 | "--fail-under=90")) |
| 13076 | |
| 13077 | #t)) |
| 13078 | (replace 'check |
| 13079 | ;; The test phase uses the built library and executable. |
| 13080 | (lambda* (#:key inputs outputs #:allow-other-keys) |
| 13081 | (add-installed-pythonpath inputs outputs) |
| 13082 | (setenv "PATH" (string-append (getenv "PATH") ":" |
| 13083 | (assoc-ref outputs "out") "/bin")) |
| 13084 | (invoke "make" "test")))))) |
| 13085 | (build-system python-build-system) |
| 13086 | (native-inputs |
| 13087 | (list python-coverage which)) |
| 13088 | (synopsis "Simple testing framework for command line applications") |
| 13089 | (description |
| 13090 | "Cram is a functional testing framework for command line applications. |
| 13091 | Cram tests look like snippets of interactive shell sessions. Cram runs each |
| 13092 | command and compares the command output in the test with the command’s actual |
| 13093 | output.") |
| 13094 | (license license:gpl2+))) |
| 13095 | |
| 13096 | (define-public python-crccheck |
| 13097 | (package |
| 13098 | (name "python-crccheck") |
| 13099 | (version "1.1") |
| 13100 | (source |
| 13101 | (origin |
| 13102 | (method url-fetch) |
| 13103 | (uri (pypi-uri "crccheck" version)) |
| 13104 | (sha256 |
| 13105 | (base32 "15psg7wjfbpmmry54ffwg6pg63mnv7mkwmb0a7884axnr8qj55j5")))) |
| 13106 | (build-system python-build-system) |
| 13107 | (arguments |
| 13108 | (list |
| 13109 | #:phases |
| 13110 | #~(modify-phases %standard-phases |
| 13111 | (replace 'check |
| 13112 | (lambda* (#:key tests? #:allow-other-keys) |
| 13113 | (when tests? |
| 13114 | (invoke "pytest" "-vv"))))))) |
| 13115 | (native-inputs (list python-pytest)) |
| 13116 | (home-page "https://sourceforge.net/projects/crccheck/") |
| 13117 | (synopsis "Calculation library for CRCs and checksums") |
| 13118 | (description "@code{crccheck} is a calculation library for CRCs and |
| 13119 | checksums. It implement more than a hundred checksum routines.") |
| 13120 | (license license:gpl3+))) |
| 13121 | |
| 13122 | (define-public python-crashtest |
| 13123 | (package |
| 13124 | (name "python-crashtest") |
| 13125 | (version "0.3.1") |
| 13126 | (source |
| 13127 | (origin |
| 13128 | (method url-fetch) |
| 13129 | (uri (pypi-uri "crashtest" version)) |
| 13130 | (sha256 |
| 13131 | (base32 "1p9p7mn8x2j9psc4jxab98897v4i9s4fliyfw8rp8v4bx1n7pjj2")))) |
| 13132 | (build-system python-build-system) |
| 13133 | (home-page "https://github.com/sdispater/crashtest") |
| 13134 | (synopsis "Manage Python errors with ease") |
| 13135 | (description |
| 13136 | "Python library that makes exceptions handling and inspection easier.") |
| 13137 | (license license:expat))) |
| 13138 | |
| 13139 | (define-public python-stdlib-list |
| 13140 | (package |
| 13141 | (name "python-stdlib-list") |
| 13142 | (version "0.8.0") |
| 13143 | (source (origin |
| 13144 | (method url-fetch) |
| 13145 | (uri (pypi-uri "stdlib-list" version)) |
| 13146 | (sha256 |
| 13147 | (base32 |
| 13148 | "17vdn4q0sdlndc2fr9svapxx6366hnrhkn0fswp1xmr0jxqh7rd1")))) |
| 13149 | (build-system python-build-system) |
| 13150 | (arguments |
| 13151 | `(#:tests? #f)) ; Tests require more dependencies. |
| 13152 | (native-inputs |
| 13153 | (list python-sphinx)) |
| 13154 | (home-page "https://github.com/jackmaney/python-stdlib-list") |
| 13155 | (synopsis "Python Standard Libraries") |
| 13156 | (description "This package contains a list of Python Standard Libraries.") |
| 13157 | (license license:expat))) |
| 13158 | |
| 13159 | (define-public python-stopit |
| 13160 | (package |
| 13161 | (name "python-stopit") |
| 13162 | (version "1.1.2") |
| 13163 | (source |
| 13164 | (origin |
| 13165 | (method url-fetch) |
| 13166 | (uri (pypi-uri "stopit" version)) |
| 13167 | (sha256 |
| 13168 | (base32 "0vcrcvky249q4rbgmwf18mwmnypfk8jpn4h6knyjf86r7xc9rwzp")))) |
| 13169 | (build-system python-build-system) |
| 13170 | (arguments '(#:tests? #f)) ;there are none |
| 13171 | (home-page "https://pypi.python.org/pypi/stopit") |
| 13172 | (synopsis "Timeout control decorator and context managers") |
| 13173 | (description |
| 13174 | "Raise asynchronous exceptions in other threads, control the timeout of |
| 13175 | blocks or callables with two context managers and two decorators.") |
| 13176 | (license license:expat))) |
| 13177 | |
| 13178 | (define-public python-timeout-decorator |
| 13179 | (package |
| 13180 | (name "python-timeout-decorator") |
| 13181 | (version "0.5.0") |
| 13182 | (source (origin |
| 13183 | (method url-fetch) |
| 13184 | (uri (pypi-uri "timeout-decorator" version)) |
| 13185 | (sha256 |
| 13186 | (base32 |
| 13187 | "1mxk2qyydhzncm93z08kvj5ssxq3fr2n7pkrrji28nqwvdc2ybva")))) |
| 13188 | (build-system python-build-system) |
| 13189 | (home-page "https://github.com/pnpnpn/timeout-decorator") |
| 13190 | (synopsis "Timeout decorator") |
| 13191 | (description "This package provides a decorator that raises an error |
| 13192 | when an operation takes longer than expected.") |
| 13193 | (license license:expat))) |
| 13194 | |
| 13195 | (define-public python-straight-plugin |
| 13196 | (package |
| 13197 | (name "python-straight-plugin") |
| 13198 | (version "1.4.1") |
| 13199 | (source |
| 13200 | (origin |
| 13201 | (method url-fetch) |
| 13202 | (uri (pypi-uri "straight.plugin" version)) |
| 13203 | (sha256 |
| 13204 | (base32 |
| 13205 | "069pjll4383p4kkgvcc40hgyvf79j2wdbpgwz77yigzxksh1gj62")))) |
| 13206 | (build-system python-build-system) |
| 13207 | (home-page "https://github.com/ironfroggy/straight.plugin") |
| 13208 | (synopsis "Simple namespaced plugin facility") |
| 13209 | (description "Straight Plugin provides a type of plugin you can create from |
| 13210 | almost any existing Python modules, and an easy way for outside developers to |
| 13211 | add functionality and customization to your projects with their own plugins.") |
| 13212 | (license license:expat))) |
| 13213 | |
| 13214 | (define-public python-pysendfile |
| 13215 | (package |
| 13216 | (name "python-pysendfile") |
| 13217 | (version "2.0.1") |
| 13218 | (source |
| 13219 | (origin |
| 13220 | (method url-fetch) |
| 13221 | (uri (pypi-uri "pysendfile" version)) |
| 13222 | (sha256 |
| 13223 | (base32 "05qf0m32isflln1zjgxlpw0wf469lj86vdwwqyizp1h94x5l22ji")))) |
| 13224 | (build-system python-build-system) |
| 13225 | (arguments |
| 13226 | (list |
| 13227 | #:phases #~(modify-phases %standard-phases |
| 13228 | (replace 'check |
| 13229 | (lambda* (#:key tests? #:allow-other-keys) |
| 13230 | (when tests? |
| 13231 | (setenv "HOME" "/tmp") |
| 13232 | (invoke "make" "test"))))))) |
| 13233 | (home-page "https://github.com/giampaolo/pysendfile") |
| 13234 | (synopsis "Python interface to sendfile(2)") |
| 13235 | (description "The @{pysendfile} Python library provides an interface to |
| 13236 | the @code{sendfile(2)} system call.") |
| 13237 | (license license:expat))) |
| 13238 | |
| 13239 | (define-public python-pyftpdlib |
| 13240 | (package |
| 13241 | (name "python-pyftpdlib") |
| 13242 | (version "1.5.7") |
| 13243 | (source |
| 13244 | (origin |
| 13245 | (method url-fetch) |
| 13246 | (uri (pypi-uri "pyftpdlib" version)) |
| 13247 | (sha256 |
| 13248 | (base32 "0vk5gcx4svjrpm014ykwxmijqihgb4ha17kb3yphk0nv6x0wx8vy")))) |
| 13249 | (build-system pyproject-build-system) |
| 13250 | ;; Using Pytest instead of the Makefile causes the command line tests to |
| 13251 | ;; fail on unknown Pytest arguments. |
| 13252 | (arguments (list #:test-flags #~(list "-k" "not TestCommandLineParser"))) |
| 13253 | (native-inputs (list python-psutil python-pytest)) |
| 13254 | (propagated-inputs (list python-pyopenssl python-pysendfile)) |
| 13255 | (home-page "https://github.com/giampaolo/pyftpdlib/") |
| 13256 | (synopsis "Asynchronous and scalable Python FTP server library") |
| 13257 | (description "The Python FTP server library provides a high-level |
| 13258 | interface to write efficient, scalable and asynchronous FTP servers with |
| 13259 | Python. It is the most complete @url{http://www.faqs.org/rfcs/rfc959.html, |
| 13260 | RFC-959} FTP server implementation available for Python, and has the following |
| 13261 | traits: |
| 13262 | @itemize |
| 13263 | @item |
| 13264 | It is lightweight, fast and scalable. |
| 13265 | @item |
| 13266 | It uses the @code{sendfile(2)} system call for uploads. |
| 13267 | @item |
| 13268 | It uses @code{epoll}, @code{kqueue} and @code{select} to handle concurrency |
| 13269 | asynchronously. |
| 13270 | @item |
| 13271 | It supports FTPS (@url{http://tools.ietf.org/html/rfc4217, RFC-4217}), |
| 13272 | IPv6 (RFC-2428), Unicode file names (@url{http://tools.ietf.org/html/rfc2640, |
| 13273 | RFC-2640}) and MLSD/MLST commands (RFC-3659). |
| 13274 | @item |
| 13275 | It has a flexible system of @samp{authorizers} able to manage both |
| 13276 | @samp{virtual} and @samp{real} users. |
| 13277 | @end itemize") |
| 13278 | (license license:expat))) |
| 13279 | |
| 13280 | (define-public python-fs |
| 13281 | (package |
| 13282 | (name "python-fs") |
| 13283 | (version "2.4.16") |
| 13284 | (source |
| 13285 | (origin |
| 13286 | (method url-fetch) |
| 13287 | (uri (pypi-uri "fs" version)) |
| 13288 | (sha256 |
| 13289 | (base32 "04ykd7q49qgv13hl2n71lzihs2c9099r50lmd85vgx0k2bawg5xf")))) |
| 13290 | (build-system python-build-system) |
| 13291 | (arguments |
| 13292 | (list |
| 13293 | #:tests? (and (not (%current-target-system)) |
| 13294 | (->bool (this-package-native-input "python-pytest"))) |
| 13295 | #:phases #~(modify-phases %standard-phases |
| 13296 | (replace 'check |
| 13297 | (lambda* (#:key tests? #:allow-other-keys) |
| 13298 | (when tests? |
| 13299 | (setenv "HOME" "/tmp") |
| 13300 | (invoke "pytest" "-m" "not slow"))))))) |
| 13301 | (propagated-inputs |
| 13302 | (list python-appdirs python-pytz python-six)) |
| 13303 | (native-inputs |
| 13304 | ;; 'python-pyftpdlib' is needed for tests but it indirectly depends Rust, |
| 13305 | ;; which is currently unavailable on aarch64-linux. Remove all the test |
| 13306 | ;; dependencies in that case. |
| 13307 | (if (and (not (%current-target-system)) |
| 13308 | (supported-package? python-pyftpdlib)) |
| 13309 | (list python-mock python-parameterized python-pyftpdlib |
| 13310 | python-pytest) |
| 13311 | '())) |
| 13312 | (home-page "https://github.com/PyFilesystem/pyfilesystem2/") |
| 13313 | (synopsis "File system abstraction layer for Python") |
| 13314 | (description "PyFilesystem's @code{FS} object is a file system abstraction |
| 13315 | sharing similarities with Python's own @code{file} object for single files. |
| 13316 | It allows opening all the files under a given directory recursively, as a |
| 13317 | single @code{FS} object. This enables, for example, counting the combined |
| 13318 | number of lines in the contained files easily.") |
| 13319 | (license license:expat))) |
| 13320 | |
| 13321 | ;;; Tests are left out in the main package to avoid cycles. |
| 13322 | (define-public python-fonttools-minimal |
| 13323 | (hidden-package |
| 13324 | (package |
| 13325 | (name "python-fonttools-minimal") |
| 13326 | (version "4.39.3") |
| 13327 | (source (origin |
| 13328 | (method url-fetch) |
| 13329 | (uri (pypi-uri "fonttools" version ".zip")) |
| 13330 | (sha256 |
| 13331 | (base32 |
| 13332 | "1msibi5cmi5znykkg66dq7xshl07lkqjxhrz5hcipqvlggsvjd4j")))) |
| 13333 | (build-system python-build-system) |
| 13334 | (native-inputs |
| 13335 | (list unzip)) |
| 13336 | (arguments '(#:tests? #f)) |
| 13337 | (home-page "https://github.com/fonttools/fonttools") |
| 13338 | (synopsis "Tools to manipulate font files") |
| 13339 | (description |
| 13340 | "FontTools/TTX is a library to manipulate font files from Python. It |
| 13341 | supports reading and writing of TrueType/OpenType fonts, reading and writing |
| 13342 | of AFM files, reading (and partially writing) of PS Type 1 fonts. The package |
| 13343 | also contains a tool called “TTX” which converts TrueType/OpenType fonts to and |
| 13344 | from an XML-based format.") |
| 13345 | (license license:expat)))) |
| 13346 | |
| 13347 | (define-public python-fonttools |
| 13348 | (let ((base python-fonttools-minimal)) |
| 13349 | (package/inherit base |
| 13350 | (name "python-fonttools") |
| 13351 | (arguments |
| 13352 | (substitute-keyword-arguments (package-arguments base) |
| 13353 | ((#:tests? _ #f) |
| 13354 | (not (%current-target-system))) |
| 13355 | ((#:phases phases '%standard-phases) |
| 13356 | `(modify-phases ,phases |
| 13357 | (replace 'check |
| 13358 | (lambda* (#:key tests? #:allow-other-keys) |
| 13359 | (when tests? |
| 13360 | (invoke "pytest" "-vv" |
| 13361 | "-k" |
| 13362 | ;; XXX: These tests need .trm files that are |
| 13363 | ;; not shipped with the PyPI release. |
| 13364 | (format #f "not ~a" |
| 13365 | (string-join |
| 13366 | '("test_read_fontdimens_mathsy" |
| 13367 | "test_read_fontdimens_mathex" |
| 13368 | "test_read_fontdimens_vanilla" |
| 13369 | "test_read_boundary_char" |
| 13370 | "fontTools.tfmLib" |
| 13371 | ;; The MtiTest tests fail for unknown |
| 13372 | ;; reasons (see: |
| 13373 | ;; https://github.com/fonttools/ |
| 13374 | ;; fonttools/issues/3078) |
| 13375 | "MtiTest") |
| 13376 | " and not ")))))))))) |
| 13377 | (native-inputs |
| 13378 | (modify-inputs (package-native-inputs base) |
| 13379 | (append python-pytest))) |
| 13380 | (propagated-inputs |
| 13381 | (list python-brotli |
| 13382 | python-fs |
| 13383 | python-lxml |
| 13384 | python-lz4 |
| 13385 | python-scipy |
| 13386 | python-unicodedata2 |
| 13387 | python-zopfli)) |
| 13388 | (properties (alist-delete 'hidden? (package-properties base)))))) |
| 13389 | |
| 13390 | (define-public python-ly |
| 13391 | (package |
| 13392 | (name "python-ly") |
| 13393 | (version "0.9.5") |
| 13394 | (source |
| 13395 | (origin |
| 13396 | (method url-fetch) |
| 13397 | (uri (pypi-uri name version)) |
| 13398 | (sha256 |
| 13399 | (base32 |
| 13400 | "0x98dv7p8mg26p4816yy8hz4f34zf6hpnnfmr56msgh9jnsm2qfl")))) |
| 13401 | (build-system python-build-system) |
| 13402 | (arguments |
| 13403 | ;; FIXME: Some tests need network access. |
| 13404 | '(#:tests? #f)) |
| 13405 | (synopsis "Tool and library for manipulating LilyPond files") |
| 13406 | (description "This package provides a Python library to parse, manipulate |
| 13407 | or create documents in LilyPond format. A command line program ly is also |
| 13408 | provided that can be used to do various manipulations with LilyPond files.") |
| 13409 | (home-page "https://pypi.org/project/python-ly/") |
| 13410 | (license license:gpl2+))) |
| 13411 | |
| 13412 | (define-public python-appdirs |
| 13413 | (package |
| 13414 | (name "python-appdirs") |
| 13415 | (version "1.4.4") |
| 13416 | (source |
| 13417 | (origin |
| 13418 | (method url-fetch) |
| 13419 | (uri (pypi-uri "appdirs" version)) |
| 13420 | (sha256 |
| 13421 | (base32 |
| 13422 | "0hfzmwknxqhg20aj83fx80vna74xfimg8sk18wb85fmin9kh2pbx")))) |
| 13423 | (build-system python-build-system) |
| 13424 | (home-page "https://github.com/ActiveState/appdirs") |
| 13425 | (synopsis |
| 13426 | "Determine platform-specific dirs, e.g. a \"user data dir\"") |
| 13427 | (description |
| 13428 | "This module provides a portable way of finding out where user data |
| 13429 | should be stored on various operating systems.") |
| 13430 | (license license:expat))) |
| 13431 | |
| 13432 | (define-public python-gorilla |
| 13433 | (package |
| 13434 | (name "python-gorilla") |
| 13435 | (version "0.3.0") |
| 13436 | (source (origin |
| 13437 | (method url-fetch) |
| 13438 | (uri (pypi-uri "gorilla" version)) |
| 13439 | (sha256 |
| 13440 | (base32 |
| 13441 | "0b40blcp6fih4nvqbilra4qw1dfccv1ahjmr41ac4d9rjadqkcpy")))) |
| 13442 | (build-system python-build-system) |
| 13443 | (home-page "https://github.com/christophercrouzet/gorilla") |
| 13444 | (synopsis "Convenient monkey patching with Python") |
| 13445 | (description |
| 13446 | "Gorilla is a Python library that provides a convenient approach to |
| 13447 | monkey patching. Monkey patching is the process of modifying module and |
| 13448 | class attributes at runtime with the purpose of replacing or extending |
| 13449 | third-party code.") |
| 13450 | (license license:expat))) |
| 13451 | |
| 13452 | (define-public python-llfuse |
| 13453 | (package |
| 13454 | (name "python-llfuse") |
| 13455 | (version "1.4.4") |
| 13456 | (source (origin |
| 13457 | (method url-fetch) |
| 13458 | (uri (pypi-uri "llfuse" version)) |
| 13459 | (sha256 |
| 13460 | (base32 |
| 13461 | "1jb4c9avvb0v3830xlbj1r9kj05i98vv6nq05105ppg57y7lq14j")))) |
| 13462 | (build-system python-build-system) |
| 13463 | (inputs |
| 13464 | (list fuse-2 attr)) |
| 13465 | (native-inputs |
| 13466 | (list pkg-config python-pytest)) |
| 13467 | (synopsis "Python bindings for FUSE") |
| 13468 | (description |
| 13469 | "Python-LLFUSE is a set of Python bindings for the low level FUSE API.") |
| 13470 | (home-page "https://bitbucket.org/nikratio/python-llfuse/") |
| 13471 | (license license:lgpl2.0+))) |
| 13472 | |
| 13473 | (define-public python-msgpack |
| 13474 | (package |
| 13475 | (name "python-msgpack") |
| 13476 | (version "1.0.4") |
| 13477 | (source (origin |
| 13478 | (method url-fetch) |
| 13479 | (uri (pypi-uri "msgpack" version)) |
| 13480 | (sha256 |
| 13481 | (base32 |
| 13482 | "0pqzy1zclyhd42gfibhkcqymbspy5a6v421g87mh40h3iz0nkn7m")))) |
| 13483 | (build-system python-build-system) |
| 13484 | (arguments |
| 13485 | `(#:modules ((guix build utils) |
| 13486 | (guix build python-build-system) |
| 13487 | (ice-9 ftw) |
| 13488 | (srfi srfi-1) |
| 13489 | (srfi srfi-26)) |
| 13490 | #:phases |
| 13491 | (modify-phases %standard-phases |
| 13492 | (replace 'check |
| 13493 | (lambda _ |
| 13494 | (invoke "pytest" "-v" "test")))))) |
| 13495 | (native-inputs |
| 13496 | (list python-pytest)) |
| 13497 | (synopsis "MessagePack (de)serializer") |
| 13498 | (description "MessagePack is a fast, compact binary serialization format, |
| 13499 | suitable for similar data to JSON. This package provides CPython bindings for |
| 13500 | reading and writing MessagePack data.") |
| 13501 | (home-page "https://pypi.org/project/msgpack/") |
| 13502 | (license license:asl2.0))) |
| 13503 | |
| 13504 | (define-public python-msgpack-1.0.2 |
| 13505 | (package |
| 13506 | (inherit python-msgpack) |
| 13507 | (version "1.0.2") |
| 13508 | (source (origin |
| 13509 | (method url-fetch) |
| 13510 | (uri (pypi-uri "msgpack" version)) |
| 13511 | (sha256 |
| 13512 | (base32 |
| 13513 | "1109s2yynrahwi64ikax68hx0mbclz8p35afmpphw5dwynb49q7s")))))) |
| 13514 | |
| 13515 | (define-public python-netaddr |
| 13516 | (package |
| 13517 | (name "python-netaddr") |
| 13518 | (version "0.8.0") |
| 13519 | (source |
| 13520 | (origin |
| 13521 | (method url-fetch) |
| 13522 | (uri (pypi-uri "netaddr" version)) |
| 13523 | (sha256 |
| 13524 | (base32 |
| 13525 | "0hx2npi0wnhwlcybilgwlddw6qffx1mb7a3sj4p9s7bvl33mgk6n")))) |
| 13526 | (build-system python-build-system) |
| 13527 | (arguments `(#:tests? #f)) ;; No tests. |
| 13528 | (home-page "https://github.com/drkjam/netaddr/") |
| 13529 | (synopsis "Pythonic manipulation of network addresses") |
| 13530 | (description |
| 13531 | "A Python library for representing and manipulating IPv4, IPv6, CIDR, EUI |
| 13532 | and MAC network addresses.") |
| 13533 | (license license:bsd-3))) |
| 13534 | |
| 13535 | (define-public python-openstep-plist |
| 13536 | (package |
| 13537 | (name "python-openstep-plist") |
| 13538 | (version "0.3.0") |
| 13539 | (home-page "https://github.com/fonttools/openstep-plist") |
| 13540 | (source (origin |
| 13541 | (method git-fetch) |
| 13542 | (uri (git-reference |
| 13543 | (url home-page) |
| 13544 | (commit (string-append "v" version)))) |
| 13545 | (file-name (git-file-name name version)) |
| 13546 | (sha256 |
| 13547 | (base32 |
| 13548 | "1rxjgzh0p069ncsr2986rn32vhdqyq35irbqg2559jh18456mkca")))) |
| 13549 | (build-system python-build-system) |
| 13550 | (arguments |
| 13551 | (list #:phases |
| 13552 | #~(modify-phases %standard-phases |
| 13553 | (add-after 'unpack 'pretend-version |
| 13554 | (lambda _ |
| 13555 | (setenv "SETUPTOOLS_SCM_PRETEND_VERSION" |
| 13556 | #$(package-version this-package)))) |
| 13557 | (replace 'check |
| 13558 | (lambda* (#:key tests? #:allow-other-keys) |
| 13559 | (when tests? |
| 13560 | (invoke "pytest" "-vv"))))))) |
| 13561 | (native-inputs |
| 13562 | (list python-cython python-pytest python-setuptools-scm)) |
| 13563 | (synopsis "OpenStep plist parser and writer") |
| 13564 | (description |
| 13565 | "This package provides a parser for the \"old style\" OpenStep property |
| 13566 | list format (also known as ASCII plist), written in Cython.") |
| 13567 | (license license:expat))) |
| 13568 | |
| 13569 | (define-public python-wrapt |
| 13570 | (package |
| 13571 | (name "python-wrapt") |
| 13572 | (version "1.11.2") |
| 13573 | (source |
| 13574 | (origin |
| 13575 | (method url-fetch) |
| 13576 | (uri (pypi-uri "wrapt" version)) |
| 13577 | (sha256 |
| 13578 | (base32 |
| 13579 | "1q81762dgsgrd12f8qc39zk8s5wll3m5xc32jdmlf6cls4gh4njn")))) |
| 13580 | (build-system python-build-system) |
| 13581 | (arguments |
| 13582 | ;; Tests are not included in the tarball, they are only available in the |
| 13583 | ;; git repository. |
| 13584 | `(#:tests? #f)) |
| 13585 | (home-page "https://github.com/GrahamDumpleton/wrapt") |
| 13586 | (synopsis "Module for decorators, wrappers and monkey patching") |
| 13587 | (description |
| 13588 | "The aim of the wrapt module is to provide a transparent object proxy for |
| 13589 | Python, which can be used as the basis for the construction of function |
| 13590 | wrappers and decorator functions.") |
| 13591 | (license license:bsd-2))) |
| 13592 | |
| 13593 | (define-public python-commentjson |
| 13594 | (package |
| 13595 | (name "python-commentjson") |
| 13596 | (version "0.9.0") |
| 13597 | (source (origin |
| 13598 | ;; The PyPI release is missing some test files. |
| 13599 | (method git-fetch) |
| 13600 | (uri (git-reference |
| 13601 | (url "https://github.com/vaidik/commentjson") |
| 13602 | (commit (string-append "v" version)))) |
| 13603 | (file-name (git-file-name name version)) |
| 13604 | (sha256 |
| 13605 | (base32 |
| 13606 | "01iscgrc6bkyrxbzmf46csbf9c0n7g6dygdmxs3fq8fkzrrciybl")))) |
| 13607 | (build-system python-build-system) |
| 13608 | (arguments |
| 13609 | `(#:modules ((guix build python-build-system) |
| 13610 | (guix build utils) |
| 13611 | (ice-9 ftw) |
| 13612 | (ice-9 textual-ports)) |
| 13613 | #:phases |
| 13614 | (modify-phases %standard-phases |
| 13615 | (add-after 'unpack 'relax-requirements |
| 13616 | (lambda _ |
| 13617 | (substitute* "setup.py" |
| 13618 | (("lark-parser>=0.7.1,<0.8.0") |
| 13619 | "lark-parser>=0.7.1")))) |
| 13620 | (add-after 'unpack 'delete-unspported-tests |
| 13621 | ;; Some tests rely on the 'test' module of Python itself, |
| 13622 | ;; which is not available with the Python package in Guix; |
| 13623 | ;; remove them. |
| 13624 | (lambda _ |
| 13625 | ;; XXX: Copied from (guix build dub-build-system). |
| 13626 | (define (grep string file-name) |
| 13627 | (string-contains (call-with-input-file file-name get-string-all) |
| 13628 | string)) |
| 13629 | |
| 13630 | (with-directory-excursion "commentjson/tests/test_json" |
| 13631 | (let* ((dot? (lambda (x) (member x '("." "..")))) |
| 13632 | (test-files (scandir "." (negate dot?)))) |
| 13633 | (for-each delete-file |
| 13634 | (filter (lambda (f) (grep "from test." f)) |
| 13635 | test-files))))))))) |
| 13636 | (propagated-inputs |
| 13637 | (list python-lark-parser)) |
| 13638 | (native-inputs |
| 13639 | (list python-six)) |
| 13640 | (home-page "https://github.com/vaidik/commentjson") |
| 13641 | (synopsis "Python library for adding comments to JSON files") |
| 13642 | (description "Comment JSON is a Python package that helps you create JSON |
| 13643 | files with Python and JavaScript style inline comments. Its API is very |
| 13644 | similar to the Python standard library's @code{json} module.") |
| 13645 | (license license:expat))) |
| 13646 | |
| 13647 | (define-public python-resolvelib |
| 13648 | (package |
| 13649 | (name "python-resolvelib") |
| 13650 | (version "0.7.1") |
| 13651 | (source |
| 13652 | (origin |
| 13653 | ;; Tests are missing from the PyPI release. |
| 13654 | (method git-fetch) |
| 13655 | (uri (git-reference |
| 13656 | (url "https://github.com/sarugaku/resolvelib") |
| 13657 | (commit version))) |
| 13658 | (file-name (git-file-name name version)) |
| 13659 | (sha256 |
| 13660 | (base32 |
| 13661 | "1fqz75riagizihvf4j7wc3zjw6kmg1dd8sf49aszyml105kb33n8")))) |
| 13662 | (build-system python-build-system) |
| 13663 | (arguments |
| 13664 | `(#:phases |
| 13665 | (modify-phases %standard-phases |
| 13666 | (replace 'check |
| 13667 | (lambda* (#:key tests? inputs outputs #:allow-other-keys) |
| 13668 | (when tests? |
| 13669 | (add-installed-pythonpath inputs outputs) |
| 13670 | (invoke "pytest"))))))) |
| 13671 | (native-inputs |
| 13672 | (list python-commentjson python-packaging python-pytest)) |
| 13673 | (home-page "https://github.com/sarugaku/resolvelib") |
| 13674 | (synopsis "Abstract dependencies resolver") |
| 13675 | (description "The ResolveLib library provides a @code{Resolver} class that |
| 13676 | includes dependency resolution logic.") |
| 13677 | (license license:isc))) |
| 13678 | |
| 13679 | ;;; This older version is required by ansible-core. |
| 13680 | (define-public python-resolvelib-0.5 |
| 13681 | (package/inherit python-resolvelib |
| 13682 | (name "python-resolvelib") |
| 13683 | (version "0.5.4") |
| 13684 | (source |
| 13685 | (origin |
| 13686 | (method git-fetch) |
| 13687 | (uri (git-reference |
| 13688 | (url "https://github.com/sarugaku/resolvelib") |
| 13689 | (commit version))) |
| 13690 | (file-name (git-file-name name version)) |
| 13691 | (sha256 |
| 13692 | (base32 |
| 13693 | "0697y330sqhiclk25v151qxg7aixzpj434lbg5qib0qlna5zg9la")))))) |
| 13694 | |
| 13695 | (define-public python-commonmark |
| 13696 | (package |
| 13697 | (name "python-commonmark") |
| 13698 | (version "0.9.1") |
| 13699 | (source |
| 13700 | (origin |
| 13701 | (method url-fetch) |
| 13702 | (uri (pypi-uri "commonmark" version)) |
| 13703 | (sha256 |
| 13704 | (base32 "0q7d39lm8kcingpmykk5r959hrwwj6v2icyw3mihczxyb749sbs5")))) |
| 13705 | (build-system python-build-system) |
| 13706 | (arguments |
| 13707 | `(#:phases |
| 13708 | (modify-phases %standard-phases |
| 13709 | (replace 'check |
| 13710 | (lambda* (#:key inputs outputs #:allow-other-keys) |
| 13711 | (add-installed-pythonpath inputs outputs) |
| 13712 | (invoke "python" "setup.py" "test")))))) |
| 13713 | (home-page "https://github.com/readthedocs/commonmark.py") |
| 13714 | (synopsis "Python parser for the CommonMark Markdown spec") |
| 13715 | (description |
| 13716 | "This module is a pure Python port of jgm's @code{commonmark.js}, a |
| 13717 | Markdown parser and renderer for the CommonMark specification, using only |
| 13718 | native modules.") |
| 13719 | (license license:bsd-3))) |
| 13720 | |
| 13721 | (define-public python-xlrd |
| 13722 | (package |
| 13723 | (name "python-xlrd") |
| 13724 | (version "2.0.1") |
| 13725 | (source (origin |
| 13726 | ;; The tests are not included in the PyPI archive. |
| 13727 | (method git-fetch) |
| 13728 | (uri (git-reference |
| 13729 | (url "https://github.com/python-excel/xlrd") |
| 13730 | (commit version))) |
| 13731 | (file-name (git-file-name name version)) |
| 13732 | (sha256 |
| 13733 | (base32 |
| 13734 | "170asszffvf6rh5w169ic4h5kxgjkmdl3060vw737d4g1qfifvzz")))) |
| 13735 | (build-system python-build-system) |
| 13736 | (native-inputs |
| 13737 | (list python-pytest)) |
| 13738 | (home-page "https://www.python-excel.org/") |
| 13739 | (synopsis "Library for extracting data from Excel files") |
| 13740 | (description "This package provides a library to extract data from |
| 13741 | spreadsheets using Microsoft Excel proprietary file formats @samp{.xls} and |
| 13742 | @samp{.xlsx} (versions 2.0 onwards). It has support for Excel dates and is |
| 13743 | Unicode-aware. It is not intended as an end-user tool.") |
| 13744 | (license license:bsd-3))) |
| 13745 | |
| 13746 | ;;; Note: this package is unmaintained since 2018 (archived on GitHub). |
| 13747 | (define-public python-xlwt |
| 13748 | (package |
| 13749 | (name "python-xlwt") |
| 13750 | (version "1.3.0") |
| 13751 | (source |
| 13752 | (origin |
| 13753 | (method url-fetch) |
| 13754 | (uri (pypi-uri "xlwt" version)) |
| 13755 | (sha256 |
| 13756 | (base32 "123c2pdamshkq75wwvck8fq0cjq1843xd3x9qaiz2a4vg9qi56f5")))) |
| 13757 | (build-system python-build-system) |
| 13758 | (arguments |
| 13759 | `(#:phases |
| 13760 | (modify-phases %standard-phases |
| 13761 | (replace 'check |
| 13762 | (lambda* (#:key tests? #:allow-other-keys) |
| 13763 | (when tests? |
| 13764 | (setenv "GUIX_PYTHONPATH" |
| 13765 | (string-append (getcwd) "/build/lib:" |
| 13766 | (getenv "GUIX_PYTHONPATH"))) |
| 13767 | (invoke "nosetests" "-v"))))))) |
| 13768 | (native-inputs |
| 13769 | `(("nose" ,python-nose))) |
| 13770 | (home-page "https://www.python-excel.org/") |
| 13771 | (synopsis "Library for creating spreadsheet Excel files") |
| 13772 | (description "@code{xlwt} is a library for writing data and formatting |
| 13773 | information to older Excel files (i.e. .xls). The package itself is pure |
| 13774 | Python with no dependencies on modules or packages outside the standard Python |
| 13775 | distribution. It is not intended as an end-user tool.") |
| 13776 | (license license:bsd-3))) |
| 13777 | |
| 13778 | (define-public python-immutables |
| 13779 | (package |
| 13780 | (name "python-immutables") |
| 13781 | (version "0.18") |
| 13782 | (source |
| 13783 | (origin |
| 13784 | (method url-fetch) |
| 13785 | (uri (pypi-uri "immutables" version)) |
| 13786 | (sha256 |
| 13787 | (base32 "1x4cinh0xbl6p6p2yfm2s07mxxy3lf0zzai9gqpydk4482bwfdjk")))) |
| 13788 | (build-system python-build-system) |
| 13789 | (native-inputs (list python-mypy python-pytest)) |
| 13790 | (home-page "https://github.com/MagicStack/immutables") |
| 13791 | (synopsis "High-performance immutable mapping type for Python") |
| 13792 | (description |
| 13793 | "An immutable mapping type for Python. The underlying datastructure is a |
| 13794 | Hash Array Mapped Trie (HAMT) used in Clojure, Scala, Haskell, and other |
| 13795 | functional languages.") |
| 13796 | (license license:asl2.0))) |
| 13797 | |
| 13798 | (define-public python-prettytable |
| 13799 | (package |
| 13800 | (name "python-prettytable") |
| 13801 | (version "3.3.0") |
| 13802 | (source |
| 13803 | (origin |
| 13804 | (method url-fetch) |
| 13805 | (uri (pypi-uri "prettytable" version)) |
| 13806 | (sha256 |
| 13807 | (base32 |
| 13808 | "1c599w31i2ndzbkn85xwsgv9sd2j16r56dl922w4jh3rs97vb3hi")))) |
| 13809 | (build-system python-build-system) |
| 13810 | (arguments |
| 13811 | (list #:phases |
| 13812 | #~(modify-phases %standard-phases |
| 13813 | (replace 'check |
| 13814 | (lambda* (#:key tests? #:allow-other-keys) |
| 13815 | (when tests? |
| 13816 | (invoke "pytest" "-vv"))))))) |
| 13817 | (native-inputs |
| 13818 | (list python-pytest |
| 13819 | python-pytest-lazy-fixture |
| 13820 | python-setuptools-scm)) |
| 13821 | (propagated-inputs (list python-wcwidth)) |
| 13822 | (home-page "https://github.com/jazzband/prettytable") |
| 13823 | (synopsis "Display tabular data in an ASCII table format") |
| 13824 | (description |
| 13825 | "A library designed to represent tabular data in visually appealing ASCII |
| 13826 | tables. PrettyTable allows for selection of which columns are to be printed, |
| 13827 | independent alignment of columns (left or right justified or centred) and |
| 13828 | printing of sub-tables by specifying a row range.") |
| 13829 | (license license:bsd-3))) |
| 13830 | |
| 13831 | (define-public python-rtf-tokenize |
| 13832 | (package |
| 13833 | (name "python-rtf-tokenize") |
| 13834 | (version "1.0.0") |
| 13835 | (source (origin |
| 13836 | (method url-fetch) |
| 13837 | (uri (pypi-uri "rtf_tokenize" version)) |
| 13838 | (sha256 |
| 13839 | (base32 |
| 13840 | "026njb9iwznycda83bln3gfivcnzdz6vy8y86xvbsy84s28g6gaw")))) |
| 13841 | (build-system python-build-system) |
| 13842 | (native-inputs (list python-pytest)) |
| 13843 | (home-page "https://github.com/benoit-pierre/rtf_tokenize") |
| 13844 | (synopsis "Simple RTF tokenizer") |
| 13845 | (description "This package is a simple RTF tokenizer.") |
| 13846 | (license license:gpl2+))) |
| 13847 | |
| 13848 | (define-public python-curio |
| 13849 | (package |
| 13850 | (name "python-curio") |
| 13851 | (version "1.5") |
| 13852 | (source |
| 13853 | (origin |
| 13854 | (method url-fetch) |
| 13855 | (uri (pypi-uri "curio" version)) |
| 13856 | (sha256 |
| 13857 | (base32 "045wwg16qadsalhicbv21p14sj8i4w0l57639j7dmdqbb4p2225g")))) |
| 13858 | (build-system python-build-system) |
| 13859 | (arguments |
| 13860 | `(#:phases |
| 13861 | (modify-phases %standard-phases |
| 13862 | (replace 'check |
| 13863 | (lambda* (#:key inputs outputs tests? #:allow-other-keys) |
| 13864 | (when tests? |
| 13865 | (add-installed-pythonpath inputs outputs) |
| 13866 | (invoke "pytest" "-vv" "-k" |
| 13867 | (string-append |
| 13868 | ;; Tries to open an outgoing connection. |
| 13869 | "not test_ssl_outgoing " |
| 13870 | ;; This test fails since Python 3.9.9 (see: |
| 13871 | ;; https://github.com/dabeaz/curio/issues/347). |
| 13872 | "and not test_timeout")))))))) |
| 13873 | (native-inputs |
| 13874 | (list python-pytest)) |
| 13875 | (home-page "https://github.com/dabeaz/curio") |
| 13876 | (synopsis "Coroutine-based library for concurrent Python") |
| 13877 | (description |
| 13878 | "Curio is a coroutine-based library for concurrent Python systems |
| 13879 | programming. It provides standard programming abstractions such as as |
| 13880 | tasks, sockets, files, locks, and queues.") |
| 13881 | (license license:bsd-3))) |
| 13882 | |
| 13883 | (define-public python-tables |
| 13884 | (package |
| 13885 | (name "python-tables") |
| 13886 | (version "3.6.1") |
| 13887 | (source |
| 13888 | (origin |
| 13889 | (method url-fetch) |
| 13890 | (uri (pypi-uri "tables" version)) |
| 13891 | (sha256 |
| 13892 | (base32 |
| 13893 | "0j8vnxh2m5n0cyk9z3ndcj5n1zj5rdxgc1gb78bqlyn2lyw75aa9")) |
| 13894 | (modules '((guix build utils))) |
| 13895 | (snippet |
| 13896 | '(begin |
| 13897 | ;; Remove pre-compiled .pyc files from source. |
| 13898 | (for-each delete-file-recursively |
| 13899 | (find-files "." "__pycache__" #:directories? #t)) |
| 13900 | (for-each delete-file (find-files "." "\\.pyc$")) |
| 13901 | (for-each delete-file |
| 13902 | (list "tables/_comp_bzip2.c" |
| 13903 | "tables/_comp_lzo.c" |
| 13904 | "tables/hdf5extension.c" |
| 13905 | "tables/indexesextension.c" |
| 13906 | "tables/linkextension.c" |
| 13907 | "tables/lrucacheextension.c" |
| 13908 | "tables/tableextension.c" |
| 13909 | "tables/utilsextension.c")))))) |
| 13910 | (build-system python-build-system) |
| 13911 | (arguments |
| 13912 | (list |
| 13913 | #:phases |
| 13914 | ;; FIXME: python-build-system does not pass configure-flags to "build" |
| 13915 | ;; or "check", so we must override the build and check phases. |
| 13916 | #~(modify-phases %standard-phases |
| 13917 | (add-after 'unpack 'use-gcc |
| 13918 | (lambda _ |
| 13919 | (substitute* "setup.py" |
| 13920 | (("lib_dirs = \\[\\]") |
| 13921 | (string-append "lib_dirs = [" |
| 13922 | "'" #$(this-package-input "hdf5") "/lib'," |
| 13923 | "'" #$(this-package-input "bzip2") "/lib'," |
| 13924 | "'" #$(this-package-input "c-blosc") "/lib'," |
| 13925 | "]")) |
| 13926 | (("^( +)compiler = new_compiler\\(\\)" line indent) |
| 13927 | (string-append line |
| 13928 | "\n" |
| 13929 | indent |
| 13930 | "compiler.set_executables(compiler='gcc'," |
| 13931 | "compiler_so='gcc'," |
| 13932 | "linker_exe='gcc'," |
| 13933 | "linker_so='gcc -shared')"))))) |
| 13934 | (add-after 'unpack 'disable-tuning |
| 13935 | (lambda _ |
| 13936 | (substitute* "setup.py" |
| 13937 | (("cpu_flags = .*") |
| 13938 | "cpu_flags = ['sse2']\n")))) |
| 13939 | (replace 'build |
| 13940 | (lambda* (#:key inputs #:allow-other-keys) |
| 13941 | (invoke "python" "setup.py" "build" |
| 13942 | (string-append "--hdf5=" |
| 13943 | (assoc-ref inputs "hdf5"))))) |
| 13944 | (replace 'check |
| 13945 | (lambda* (#:key inputs #:allow-other-keys) |
| 13946 | (invoke "python" "setup.py" "check" |
| 13947 | (string-append "--hdf5=" |
| 13948 | (assoc-ref inputs "hdf5")))))))) |
| 13949 | (propagated-inputs |
| 13950 | (list python-numexpr python-numpy)) |
| 13951 | (native-inputs |
| 13952 | (list python-cython pkg-config)) |
| 13953 | (inputs |
| 13954 | (list c-blosc hdf5-1.10 bzip2 lzo zlib)) |
| 13955 | (home-page "https://www.pytables.org/") |
| 13956 | (synopsis "Hierarchical datasets for Python") |
| 13957 | (description "PyTables is a package for managing hierarchical datasets and |
| 13958 | designed to efficiently cope with extremely large amounts of data.") |
| 13959 | (license license:bsd-3))) |
| 13960 | |
| 13961 | (define-public python-sniffio |
| 13962 | (package |
| 13963 | (name "python-sniffio") |
| 13964 | (version "1.2.0") |
| 13965 | (source |
| 13966 | (origin |
| 13967 | (method url-fetch) |
| 13968 | (uri (pypi-uri "sniffio" version)) |
| 13969 | (sha256 |
| 13970 | (base32 "1pnkvi6wvn4qd37y69n1ls6n8l63gfmn3pvb1jb50gqxxkn6wrn4")))) |
| 13971 | (build-system python-build-system) |
| 13972 | (arguments |
| 13973 | `(#:phases |
| 13974 | (modify-phases %standard-phases |
| 13975 | (replace 'check |
| 13976 | (lambda _ |
| 13977 | (invoke "pytest" "-vv")))))) |
| 13978 | (native-inputs |
| 13979 | (list python-curio python-pytest python-pytest-cov)) |
| 13980 | (home-page "https://github.com/python-trio/sniffio") |
| 13981 | (synopsis "Detect which async library a program is running under") |
| 13982 | (description "This package detects which async library a program is |
| 13983 | running under. It supports multiple async I/O packages, like Trio, and |
| 13984 | asyncio.") |
| 13985 | ;; Either license applies. |
| 13986 | (license (list license:expat license:asl2.0)))) |
| 13987 | |
| 13988 | (define-public python-snuggs |
| 13989 | (package |
| 13990 | (name "python-snuggs") |
| 13991 | (version "1.4.7") |
| 13992 | (source (origin |
| 13993 | (method url-fetch) |
| 13994 | (uri (pypi-uri "snuggs" version)) |
| 13995 | (sha256 |
| 13996 | (base32 |
| 13997 | "0yv1wayrw9g6k0c2f721kha7wsv0s1fdlxpf5x7f34iqzq9z272h")))) |
| 13998 | (build-system pyproject-build-system) |
| 13999 | (propagated-inputs (list python-numpy python-pyparsing)) |
| 14000 | (native-inputs (list python-hypothesis python-pytest)) |
| 14001 | (home-page "https://github.com/mapbox/snuggs") |
| 14002 | (synopsis "Snuggs are S-expressions for Numpy") |
| 14003 | (description "Snuggs are S-expressions for Numpy.") |
| 14004 | (license license:expat))) |
| 14005 | |
| 14006 | (define-public python-pytest-black |
| 14007 | (package |
| 14008 | (name "python-pytest-black") |
| 14009 | (version "0.3.12") |
| 14010 | (source |
| 14011 | (origin |
| 14012 | (method url-fetch) |
| 14013 | (uri (pypi-uri "pytest-black" version)) |
| 14014 | (sha256 |
| 14015 | (base32 |
| 14016 | "19bmbcnaq02md8nnj6pywri3vps8sxnhysbfy386qkbn9w09ncqx")))) |
| 14017 | (build-system python-build-system) |
| 14018 | (propagated-inputs |
| 14019 | (list python-pytest python-black python-toml)) |
| 14020 | (native-inputs |
| 14021 | (list python-setuptools-scm)) |
| 14022 | (home-page "https://github.com/shopkeep/pytest-black") |
| 14023 | (synopsis "Pytest plugin to enable format checking with black") |
| 14024 | (description |
| 14025 | "This package provides a pytest plugin to enable format checking with the |
| 14026 | Python code formatter \"black\".") |
| 14027 | (license license:expat))) |
| 14028 | |
| 14029 | (define-public python-geojson |
| 14030 | (package |
| 14031 | (name "python-geojson") |
| 14032 | (version "2.5.0") |
| 14033 | (source |
| 14034 | (origin |
| 14035 | (method url-fetch) |
| 14036 | (uri (pypi-uri "geojson" version)) |
| 14037 | (sha256 |
| 14038 | (base32 "12k5bzqskvq3gqzkryarhdjl0df47y5k9cf8r3clasi2wjnbfjvf")))) |
| 14039 | (build-system python-build-system) |
| 14040 | (arguments |
| 14041 | ;; https://github.com/jazzband/geojson/issues/175 |
| 14042 | `(#:tests? #f)) |
| 14043 | (home-page "https://github.com/jazzband/geojson") |
| 14044 | (synopsis "Python bindings and utilities for GeoJSON") |
| 14045 | (description |
| 14046 | "This package provides Python bindings and utilities for |
| 14047 | @uref{http://geojson.org/, GeoJSON}, a format for encoding geographic data |
| 14048 | structures.") |
| 14049 | (license license:bsd-3))) |
| 14050 | |
| 14051 | (define-public wfetch |
| 14052 | (let ((commit "e1cfa37814aebc9eb56ce994ebe877b6a6f9a715") |
| 14053 | (revision "1")) |
| 14054 | (package |
| 14055 | (name "wfetch") |
| 14056 | (version (git-version "0.1-pre" revision commit)) |
| 14057 | (home-page "https://github.com/Gcat101/Wfetch") |
| 14058 | (source |
| 14059 | (origin |
| 14060 | (method git-fetch) |
| 14061 | (uri (git-reference (url home-page) |
| 14062 | (commit commit))) |
| 14063 | (file-name (git-file-name name version)) |
| 14064 | (sha256 |
| 14065 | (base32 "1dmr85plx8zr6s14ym3r32g6crwxghkval5a24ah90ijx4dbn5q5")))) |
| 14066 | (build-system python-build-system) |
| 14067 | (arguments |
| 14068 | `(#:use-setuptools? #f ; no setup.py |
| 14069 | #:tests? #f ; no test suite |
| 14070 | #:phases |
| 14071 | (modify-phases %standard-phases |
| 14072 | (delete 'build) |
| 14073 | (replace 'install |
| 14074 | (lambda* (#:key outputs #:allow-other-keys) |
| 14075 | (let* ((out (assoc-ref outputs "out")) |
| 14076 | (bin (string-append out "/bin")) |
| 14077 | (share (string-append out "/share"))) |
| 14078 | (mkdir-p share) |
| 14079 | (substitute* "wfetch/wfetch.py" |
| 14080 | (("os.sep, 'opt', 'wfetch'") (string-append "'" share "'"))) |
| 14081 | (install-file "wfetch/wfetch.py" bin) |
| 14082 | (copy-recursively "wfetch/icons" share))))))) |
| 14083 | (inputs (list python-pyowm python-fire python-termcolor python-requests)) |
| 14084 | (synopsis "Command-line tool to display weather info") |
| 14085 | (description |
| 14086 | "This package provides a tool similar to Neofetch/pfetch, but for |
| 14087 | weather: it can display the weather condition, temperature, humidity, etc. |
| 14088 | |
| 14089 | To use it, you must first run: |
| 14090 | |
| 14091 | @example |
| 14092 | export WEATHER_CLI_API=@var{your OpenWeatherMap API key} |
| 14093 | @end example\n") |
| 14094 | (license license:gpl3+)))) |
| 14095 | |
| 14096 | (define-public python-get-version |
| 14097 | (package |
| 14098 | (name "python-get-version") |
| 14099 | (version "2.1") |
| 14100 | (source |
| 14101 | (origin |
| 14102 | (method url-fetch) |
| 14103 | (uri (pypi-uri "get_version" version)) |
| 14104 | (sha256 |
| 14105 | (base32 |
| 14106 | "1g15jyx33vkxavv9hwv275cs4g9bp2i1y942raw3fxamq8kbaml1")))) |
| 14107 | (build-system python-build-system) |
| 14108 | (propagated-inputs |
| 14109 | (list python-pygments |
| 14110 | python-pytest |
| 14111 | python-pytest-black |
| 14112 | python-pytest-cov |
| 14113 | python-setuptools |
| 14114 | python-testpath)) |
| 14115 | (home-page "https://github.com/flying-sheep/get_version") |
| 14116 | (synopsis "Version helper in the spirit of versioneer") |
| 14117 | (description |
| 14118 | "This package provides a version helper that lets you automatically use |
| 14119 | the latest @code{vX.X.X} Git tag as the version in your Python package. It |
| 14120 | also supports getting the version from Python source distributions or, once |
| 14121 | your package is installed, via @code{pkg_resources} (part of |
| 14122 | @code{setuptools}).") |
| 14123 | (license license:gpl3+))) |
| 14124 | |
| 14125 | (define-public python-filetype |
| 14126 | (package |
| 14127 | (name "python-filetype") |
| 14128 | (version "1.0.8") |
| 14129 | (source |
| 14130 | (origin |
| 14131 | (method url-fetch) |
| 14132 | (uri (pypi-uri "filetype" version)) |
| 14133 | (sha256 |
| 14134 | (base32 "05mkinkcn36v1cnb5hzay3zxmv7jmmflckxxp08rgzbkkf3i9pvp")))) |
| 14135 | (build-system python-build-system) |
| 14136 | (arguments |
| 14137 | `(#:phases |
| 14138 | (modify-phases %standard-phases |
| 14139 | (replace 'check |
| 14140 | (lambda* (#:key inputs outputs tests? #:allow-other-keys) |
| 14141 | (when tests? |
| 14142 | (add-installed-pythonpath inputs outputs) |
| 14143 | (invoke "python" "-m" "pytest" "-k" |
| 14144 | (string-append |
| 14145 | ;; Both tests fail with FileNotFoundError. |
| 14146 | "not test_infer_zip_from_disk" |
| 14147 | " and not test_infer_tar_from_disk")))))))) |
| 14148 | (native-inputs |
| 14149 | (list python-pytest python-pytest-benchmark)) |
| 14150 | (home-page "https://github.com/h2non/filetype.py") |
| 14151 | (synopsis "Infer file type and MIME type of any file/buffer") |
| 14152 | (description "@code{filetype} is a small and dependency free Python |
| 14153 | package to infer file type and MIME type checking the magic numbers |
| 14154 | signature of a file or buffer.") |
| 14155 | (license license:expat))) |
| 14156 | |
| 14157 | (define-public python-cachelib |
| 14158 | (package |
| 14159 | (name "python-cachelib") |
| 14160 | (version "0.4.1") |
| 14161 | (source |
| 14162 | (origin |
| 14163 | (method url-fetch) |
| 14164 | (uri (pypi-uri "cachelib" version)) |
| 14165 | (sha256 |
| 14166 | (base32 "0p4chkvbvffcllsny5rpzmsq2vyr24ql3kzif4ha0fxp3fp7vqk8")))) |
| 14167 | (build-system python-build-system) |
| 14168 | (arguments |
| 14169 | `(#:phases |
| 14170 | (modify-phases %standard-phases |
| 14171 | (replace 'check |
| 14172 | (lambda* (#:key tests? inputs outputs #:allow-other-keys) |
| 14173 | (when tests? |
| 14174 | (add-installed-pythonpath inputs outputs) |
| 14175 | (invoke "pytest"))))))) |
| 14176 | (native-inputs |
| 14177 | (list python-pytest python-pytest-xprocess)) |
| 14178 | (home-page "https://github.com/pallets/cachelib") |
| 14179 | (synopsis "Collection of cache libraries") |
| 14180 | (description "Cachelib is a library extracted from @code{werkzeug} which |
| 14181 | provides a collection of cache libraries in the same API interface.") |
| 14182 | (license license:bsd-3))) |
| 14183 | |
| 14184 | (define-public python-pylru |
| 14185 | (package |
| 14186 | (name "python-pylru") |
| 14187 | (version "1.2.0") |
| 14188 | (source |
| 14189 | (origin |
| 14190 | (method url-fetch) |
| 14191 | (uri (pypi-uri "pylru" version)) |
| 14192 | (sha256 |
| 14193 | (base32 "15yj46307sw703vjfkgnr04dqvaicmfcj0hc6yrciildp55r6bs9")))) |
| 14194 | (build-system python-build-system) |
| 14195 | (arguments |
| 14196 | `(#:phases |
| 14197 | (modify-phases %standard-phases |
| 14198 | (replace 'check |
| 14199 | (lambda* (#:key inputs outputs tests? #:allow-other-keys) |
| 14200 | (when tests? |
| 14201 | (add-installed-pythonpath inputs outputs) |
| 14202 | (invoke "python" "test.py"))))))) |
| 14203 | (home-page "https://github.com/jlhutch/pylru") |
| 14204 | (synopsis "Least recently used (LRU) cache implementation") |
| 14205 | (description |
| 14206 | "Pylru implements a true LRU cache along with several support classes. |
| 14207 | Pylru provides a cache class with a simple dict interface. It also provides |
| 14208 | classes to wrap any object that has a dict interface with a cache. Both |
| 14209 | write-through and write-back semantics are supported. Pylru also provides |
| 14210 | classes to wrap functions in a similar way, including a function decorator.") |
| 14211 | (license license:gpl2+))) |
| 14212 | |
| 14213 | (define-public python-legacy-api-wrap |
| 14214 | (package |
| 14215 | (name "python-legacy-api-wrap") |
| 14216 | (version "1.2") |
| 14217 | (source |
| 14218 | (origin |
| 14219 | (method url-fetch) |
| 14220 | (uri (pypi-uri "legacy-api-wrap" version)) |
| 14221 | (sha256 |
| 14222 | (base32 |
| 14223 | "06qhp0g543dy98vpa41hwdalvdbsjfc3ldk474yr9sd75mhl8jh3")))) |
| 14224 | (build-system python-build-system) |
| 14225 | (propagated-inputs |
| 14226 | (list python-get-version python-pytest python-pytest-black |
| 14227 | python-pytest-cov python-setuptools)) |
| 14228 | (home-page "https://github.com/flying-sheep/legacy-api-wrap") |
| 14229 | (synopsis "Legacy API wrapper") |
| 14230 | (description "This module defines a decorator to wrap legacy APIs. The |
| 14231 | primary use case is APIs defined before keyword-only parameters existed.") |
| 14232 | (license license:gpl3+))) |
| 14233 | |
| 14234 | (define-public python-langdetect |
| 14235 | (package |
| 14236 | (name "python-langdetect") |
| 14237 | (version "1.0.9") |
| 14238 | (source |
| 14239 | (origin |
| 14240 | (method url-fetch) |
| 14241 | (uri (pypi-uri "langdetect" version)) |
| 14242 | (sha256 |
| 14243 | (base32 "1805svvb7xjm4sf1j7b6nc3409x37pd1xmabfwwjf1ldkzwgxhfb")))) |
| 14244 | (build-system python-build-system) |
| 14245 | (propagated-inputs |
| 14246 | (list python-six)) |
| 14247 | (home-page "https://github.com/Mimino666/langdetect") |
| 14248 | (synopsis "Language detection library") |
| 14249 | (description |
| 14250 | "This library is a port of Nakatani Shuyo's language-detection library |
| 14251 | (version from 03/03/2014) to Python.") |
| 14252 | (license license:expat))) |
| 14253 | |
| 14254 | (define-public python-pyasn1 |
| 14255 | (package |
| 14256 | (name "python-pyasn1") |
| 14257 | (version "0.4.8") |
| 14258 | (source |
| 14259 | (origin |
| 14260 | (method url-fetch) |
| 14261 | (uri (pypi-uri "pyasn1" version)) |
| 14262 | (sha256 |
| 14263 | (base32 |
| 14264 | "1fnhbi3rmk47l9851gbik0flfr64vs5j0hbqx24cafjap6gprxxf")))) |
| 14265 | (build-system python-build-system) |
| 14266 | (home-page "https://pyasn1.sourceforge.net/") |
| 14267 | (synopsis "ASN.1 types and codecs") |
| 14268 | (description |
| 14269 | "This is an implementation of ASN.1 types and codecs in Python. It is |
| 14270 | suitable for a wide range of protocols based on the ASN.1 specification.") |
| 14271 | (license license:bsd-2))) |
| 14272 | |
| 14273 | (define-public python-pyasn1-modules |
| 14274 | (package |
| 14275 | (name "python-pyasn1-modules") |
| 14276 | (version "0.2.8") |
| 14277 | (source |
| 14278 | (origin |
| 14279 | (method url-fetch) |
| 14280 | (uri (pypi-uri "pyasn1-modules" version)) |
| 14281 | (sha256 |
| 14282 | (base32 |
| 14283 | "0pp6dcagd8c2c9qx3lahc1rdwlnmm0y0siqr5icjq2r32b3q8pwh")))) |
| 14284 | (build-system python-build-system) |
| 14285 | (propagated-inputs |
| 14286 | (list python-pyasn1)) |
| 14287 | (home-page "https://sourceforge.net/projects/pyasn1/") |
| 14288 | (synopsis "ASN.1 codec implementations") |
| 14289 | (description |
| 14290 | "Pyasn1-modules is a collection of Python modules providing ASN.1 types and |
| 14291 | implementations of ASN.1-based codecs and protocols.") |
| 14292 | (license license:bsd-3))) |
| 14293 | |
| 14294 | (define-public python-ipaddress |
| 14295 | (package |
| 14296 | (name "python-ipaddress") |
| 14297 | (version "1.0.23") |
| 14298 | (source (origin |
| 14299 | (method url-fetch) |
| 14300 | (uri (pypi-uri "ipaddress" version)) |
| 14301 | (sha256 |
| 14302 | (base32 |
| 14303 | "1qp743h30s04m3cg3yk3fycad930jv17q7dsslj4mfw0jlvf1y5p")))) |
| 14304 | (build-system python-build-system) |
| 14305 | (home-page "https://github.com/phihag/ipaddress") |
| 14306 | (synopsis "IP address manipulation library") |
| 14307 | (description |
| 14308 | "This package provides a fast, lightweight IPv4/IPv6 manipulation library |
| 14309 | in Python. This library is used to create, poke at, and manipulate IPv4 and |
| 14310 | IPv6 addresses and networks.") |
| 14311 | (license license:psfl))) |
| 14312 | |
| 14313 | (define-public python-asn1tools |
| 14314 | (package |
| 14315 | (name "python-asn1tools") |
| 14316 | (version "0.166.0") |
| 14317 | (source |
| 14318 | (origin |
| 14319 | (method url-fetch) |
| 14320 | (uri (pypi-uri "asn1tools" version)) |
| 14321 | (sha256 |
| 14322 | (base32 "1hragm8dsm10rlyz67xslj01bycprlnimdmq1i2acns6kl6difpn")))) |
| 14323 | (build-system python-build-system) |
| 14324 | (propagated-inputs |
| 14325 | (list python-bitstruct python-diskcache python-prompt-toolkit |
| 14326 | python-pyparsing)) |
| 14327 | (home-page "https://github.com/eerimoq/asn1tools") |
| 14328 | (synopsis "ASN.1 parsing, encoding and decoding") |
| 14329 | (description "This package provides ASN.1 parsing, encoding and decoding |
| 14330 | for Python, including constraints checking. It supports several |
| 14331 | codecs (e.g. BER, PER, UPER, XER) as well as limited C source code generating |
| 14332 | for OER and UPER.") |
| 14333 | (license license:expat))) |
| 14334 | |
| 14335 | (define-public python-idna |
| 14336 | (package |
| 14337 | (name "python-idna") |
| 14338 | (version "3.3") |
| 14339 | (source |
| 14340 | (origin |
| 14341 | (method url-fetch) |
| 14342 | (uri (pypi-uri "idna" version)) |
| 14343 | (sha256 |
| 14344 | (base32 |
| 14345 | "0v8f6qjfi5i7qc5icsbv2pi24qy6k6m8wjqjvdf2sxjvlpq3yr4x")))) |
| 14346 | (build-system python-build-system) |
| 14347 | (home-page "https://github.com/kjd/idna") |
| 14348 | (synopsis "Internationalized domain names in applications") |
| 14349 | (description |
| 14350 | "This is a library to support the Internationalised Domain Names in |
| 14351 | Applications (IDNA) protocol as specified in RFC 5891. This version of the |
| 14352 | protocol is often referred to as “IDNA2008” and can produce different results |
| 14353 | from the earlier standard from 2003. The library is also intended to act as a |
| 14354 | suitable drop-in replacement for the “encodings.idna” module that comes with |
| 14355 | the Python standard library but currently only supports the older 2003 |
| 14356 | specification.") |
| 14357 | (license license:bsd-4))) |
| 14358 | |
| 14359 | (define-public python-libsass |
| 14360 | (package |
| 14361 | (name "python-libsass") |
| 14362 | (version "0.20.1") |
| 14363 | (source |
| 14364 | (origin |
| 14365 | ;; PyPI tarball is missing some test files. |
| 14366 | (method git-fetch) |
| 14367 | (uri (git-reference |
| 14368 | (url "https://github.com/sass/libsass-python") |
| 14369 | (commit version))) |
| 14370 | (file-name (git-file-name name version)) |
| 14371 | (sha256 |
| 14372 | (base32 "1r0kgl7i6nnhgjl44sjw57k08gh2qr7l8slqih550dyxbf1akbxh")))) |
| 14373 | (build-system python-build-system) |
| 14374 | (arguments |
| 14375 | '(#:phases |
| 14376 | (modify-phases %standard-phases |
| 14377 | ;; Use Guix package of libsass instead of compiling from a checkout. |
| 14378 | (add-before 'build 'set-libsass |
| 14379 | (lambda _ (setenv "SYSTEM_SASS" "indeed"))) |
| 14380 | (replace 'check |
| 14381 | (lambda* (#:key tests? #:allow-other-keys) |
| 14382 | (when tests? |
| 14383 | (invoke "pytest" "sasstests.py")))) |
| 14384 | (add-after 'install 'delete-test |
| 14385 | (lambda* (#:key inputs outputs #:allow-other-keys) |
| 14386 | ;; Delete sasstests.py because it attempts to open a file |
| 14387 | ;; that is not installed when loaded, which breaks the sanity |
| 14388 | ;; check. |
| 14389 | (delete-file (string-append |
| 14390 | (assoc-ref outputs "out") |
| 14391 | "/lib/python" |
| 14392 | (python-version |
| 14393 | (dirname (dirname |
| 14394 | (search-input-file inputs "bin/python")))) |
| 14395 | "/site-packages/sasstests.py"))))))) |
| 14396 | (native-inputs |
| 14397 | (list python-pytest python-werkzeug)) |
| 14398 | (inputs |
| 14399 | (list libsass)) |
| 14400 | (propagated-inputs |
| 14401 | (list python-six)) |
| 14402 | (home-page "https://sass.github.io/libsass-python/") |
| 14403 | (synopsis "Straightforward binding of libsass for Python") |
| 14404 | (description |
| 14405 | "This package provides a simple Python extension module @code{sass} which |
| 14406 | is binding LibSass.") |
| 14407 | (license license:expat))) |
| 14408 | |
| 14409 | (define-public python-idna-ssl |
| 14410 | (package |
| 14411 | (name "python-idna-ssl") |
| 14412 | (version "1.0.1") |
| 14413 | (source |
| 14414 | (origin |
| 14415 | (method url-fetch) |
| 14416 | (uri (pypi-uri "idna-ssl" version)) |
| 14417 | (sha256 |
| 14418 | (base32 |
| 14419 | "0ydrc8hpg9mdr5hqq1lqfsfbn6sjq69slwpfrnlrm3k0phqg14qj")))) |
| 14420 | (build-system python-build-system) |
| 14421 | (arguments |
| 14422 | `(#:tests? #f)) ;circular dependency with python-aiohttp |
| 14423 | (propagated-inputs (list python-idna)) |
| 14424 | (home-page "https://github.com/aio-libs/idna-ssl") |
| 14425 | (synopsis "Patch @code{ssl.match_hostname} for Unicode(idna) domains support") |
| 14426 | (description "Patch @code{ssl.match_hostname} for Unicode(idna) |
| 14427 | domains support.") |
| 14428 | (license license:expat))) |
| 14429 | |
| 14430 | ;;; Variant used to break a cycle with python-pip-run-bootstrap. |
| 14431 | (define-public python-path-bootstrap |
| 14432 | (hidden-package |
| 14433 | (package |
| 14434 | (name "python-path-bootstrap") |
| 14435 | (version "16.4.0") |
| 14436 | (source |
| 14437 | (origin |
| 14438 | (method url-fetch) |
| 14439 | (uri (pypi-uri "path" version)) |
| 14440 | (sha256 |
| 14441 | (base32 "0lig13gxnfv98v790db1smvsbd3mnj7y8rwyiwhfi6xiqibygwms")))) |
| 14442 | (build-system pyproject-build-system) |
| 14443 | (arguments |
| 14444 | (list #:tests? #f)) |
| 14445 | (native-inputs (list python-setuptools-scm)) |
| 14446 | (home-page "https://github.com/jaraco/path") |
| 14447 | (synopsis "Object-oriented file system path manipulation library") |
| 14448 | (description "@code{path} (formerly @code{path.py}) implements path |
| 14449 | objects as first-class entities, allowing common operations on files to be |
| 14450 | invoked on those path objects directly.") |
| 14451 | (license license:expat)))) |
| 14452 | |
| 14453 | (define-public python-path |
| 14454 | (package/inherit python-path-bootstrap |
| 14455 | (name "python-path") |
| 14456 | (arguments |
| 14457 | (substitute-keyword-arguments |
| 14458 | (package-arguments python-path-bootstrap) |
| 14459 | ((#:tests? _ #f) |
| 14460 | (not (%current-target-system))) |
| 14461 | ((#:test-flags flags #~'()) |
| 14462 | #~(append (list "-k" |
| 14463 | (string-append |
| 14464 | ;; Do not test the myproject.toml build as it tries |
| 14465 | ;; to pull dependencies from the Internet. |
| 14466 | "not project " |
| 14467 | ;; This tests assumes a root user exists. |
| 14468 | "and not test_get_owner")) |
| 14469 | #$flags)))) |
| 14470 | (native-inputs |
| 14471 | (modify-inputs (package-native-inputs python-path-bootstrap) |
| 14472 | (append python-appdirs |
| 14473 | python-packaging |
| 14474 | python-pygments |
| 14475 | python-pytest |
| 14476 | python-pytest-black |
| 14477 | python-pytest-checkdocs |
| 14478 | python-pytest-cov |
| 14479 | python-pytest-enabler |
| 14480 | python-pytest-flake8 |
| 14481 | python-pytest-mypy))) |
| 14482 | (properties (alist-delete 'hidden? |
| 14483 | (package-properties |
| 14484 | python-path-bootstrap))))) |
| 14485 | |
| 14486 | (define-public python-pathpy |
| 14487 | (deprecated-package "python-pathpy" python-path)) |
| 14488 | |
| 14489 | (define-public python-pretend |
| 14490 | (package |
| 14491 | (name "python-pretend") |
| 14492 | (version "1.0.9") |
| 14493 | (source |
| 14494 | (origin |
| 14495 | (method url-fetch) |
| 14496 | (uri (pypi-uri "pretend" version)) |
| 14497 | (sha256 |
| 14498 | (base32 |
| 14499 | "040vm94lcbscg5p81g1icmwwwa2jm7wrd1ybmxnv1sz8rl8bh3n9")))) |
| 14500 | (build-system python-build-system) |
| 14501 | (home-page "https://github.com/alex/pretend") |
| 14502 | (synopsis "Library for stubbing in Python") |
| 14503 | (description |
| 14504 | "Pretend is a library to make stubbing with Python easier. Stubbing is a |
| 14505 | technique for writing tests. You may hear the term mixed up with mocks, |
| 14506 | fakes, or doubles. Basically, a stub is an object that returns pre-canned |
| 14507 | responses, rather than doing any computation.") |
| 14508 | (license license:bsd-3))) |
| 14509 | |
| 14510 | ;;; Variant used to break a dependency cycle with |
| 14511 | ;;; python-pytest-perf-bootstrap. |
| 14512 | (define-public python-pip-run-bootstrap |
| 14513 | (hidden-package |
| 14514 | (package |
| 14515 | (name "python-pip-run-bootstrap") |
| 14516 | (version "8.8.0") |
| 14517 | (source (origin |
| 14518 | (method git-fetch) |
| 14519 | (uri (git-reference |
| 14520 | (url "https://github.com/jaraco/pip-run") |
| 14521 | (commit (string-append "v" version)))) |
| 14522 | (file-name (git-file-name name version)) |
| 14523 | (sha256 |
| 14524 | (base32 |
| 14525 | "0ycrjj3jgqcr9c2k7y8vprq65iblg0q0hvwz8zwi13gmb0ffds0c")))) |
| 14526 | (build-system python-build-system) |
| 14527 | (arguments |
| 14528 | (list |
| 14529 | #:tests? #f |
| 14530 | #:phases |
| 14531 | #~(modify-phases %standard-phases |
| 14532 | (add-before 'build 'pretend-version |
| 14533 | ;; The version string is usually derived via setuptools-scm, but |
| 14534 | ;; without the git metadata available this fails. |
| 14535 | (lambda _ |
| 14536 | (setenv "SETUPTOOLS_SCM_PRETEND_VERSION" #$version)))))) |
| 14537 | (native-inputs (list python-setuptools-scm)) |
| 14538 | (propagated-inputs (list python-autocommand python-path-bootstrap |
| 14539 | python-packaging)) |
| 14540 | (home-page "https://github.com/jaraco/pip-run") |
| 14541 | (synopsis "Dynamic dependency loader for Python") |
| 14542 | (description "The @command{pip-run} command provides on-demand temporary |
| 14543 | package installation for a single interpreter run. It replaces this series of |
| 14544 | commands: |
| 14545 | @example |
| 14546 | $ virtualenv --python pythonX.X --system-site-packages /tmp/env |
| 14547 | $ /tmp/env/bin/pip install pkg1 pkg2 -r reqs.txt |
| 14548 | $ /tmp/env/bin/python ... |
| 14549 | $ rm -rf /tmp/env |
| 14550 | @end example") |
| 14551 | (license license:expat)))) |
| 14552 | |
| 14553 | (define-public python-pip-run |
| 14554 | (package/inherit python-pip-run-bootstrap |
| 14555 | (name "python-pip-run") |
| 14556 | (arguments |
| 14557 | (substitute-keyword-arguments (package-arguments python-pip-run-bootstrap) |
| 14558 | ((#:tests? _ #f) |
| 14559 | (not (%current-target-system))) |
| 14560 | ((#:phases phases #~%standard-phases) |
| 14561 | #~(modify-phases #$phases |
| 14562 | (replace 'check |
| 14563 | (lambda* (#:key tests? #:allow-other-keys) |
| 14564 | (when tests? |
| 14565 | (invoke "pytest" "-k" |
| 14566 | (string-append |
| 14567 | ;; Do not test the myproject.toml build as it tries |
| 14568 | ;; to pull dependencies from the internet. |
| 14569 | "not project " |
| 14570 | ;; These tests attempt to install dependencies from |
| 14571 | ;; the network and fail. |
| 14572 | "and not test_pkg_imported " |
| 14573 | "and not test_pkg_loaded_from_alternate_index "))))))))) |
| 14574 | (propagated-inputs |
| 14575 | (modify-inputs (package-propagated-inputs python-pip-run-bootstrap) |
| 14576 | (replace "python-path-bootstrap" python-path))) |
| 14577 | (native-inputs |
| 14578 | (modify-inputs (package-native-inputs python-pip-run-bootstrap) |
| 14579 | (append python-nbformat |
| 14580 | python-pygments |
| 14581 | python-pytest |
| 14582 | python-pytest-black |
| 14583 | python-pytest-checkdocs |
| 14584 | python-pytest-cov |
| 14585 | python-pytest-enabler |
| 14586 | python-pytest-flake8 |
| 14587 | python-pytest-mypy))) |
| 14588 | (properties (alist-delete 'hidden? (package-properties |
| 14589 | python-pip-run-bootstrap))))) |
| 14590 | |
| 14591 | (define-public python-tlsh |
| 14592 | (package |
| 14593 | (name "python-tlsh") |
| 14594 | (version "4.11.2") |
| 14595 | (home-page "https://github.com/trendmicro/tlsh") |
| 14596 | (source |
| 14597 | (origin |
| 14598 | (method git-fetch) |
| 14599 | (uri (git-reference (url home-page) (commit version))) |
| 14600 | (file-name (git-file-name name version)) |
| 14601 | (sha256 |
| 14602 | (base32 "1gb5j73nw3nmx030rf8pm75rns5syxhv44zxr6i74kjicyly1i9w")))) |
| 14603 | (build-system python-build-system) |
| 14604 | (arguments |
| 14605 | (list #:phases |
| 14606 | #~(modify-phases %standard-phases |
| 14607 | (add-before 'build 'configure |
| 14608 | (lambda _ |
| 14609 | (invoke "cmake" "."))) ;to generate tlsh_version.h |
| 14610 | (add-after 'configure 'chdir |
| 14611 | (lambda _ |
| 14612 | (chdir "py_ext"))) |
| 14613 | (replace 'check |
| 14614 | (lambda* (#:key tests? #:allow-other-keys) |
| 14615 | (when tests? |
| 14616 | (with-directory-excursion "../Testing" |
| 14617 | (invoke "./python_test.sh")))))))) |
| 14618 | (native-inputs (list cmake-minimal)) |
| 14619 | (synopsis "Fuzzy matching library for Python") |
| 14620 | (description |
| 14621 | "Trend Micro Locality Sensitive Hash (TLSH) is a fuzzy matching library. |
| 14622 | Given a byte stream with a minimum length of 256 bytes, TLSH generates a hash |
| 14623 | value which can be used for similarity comparisons. Similar objects have |
| 14624 | similar hash values, which allows for the detection of similar objects by |
| 14625 | comparing their hash values. The byte stream should have a sufficient amount |
| 14626 | of complexity; for example, a byte stream of identical bytes will not generate |
| 14627 | a hash value.") |
| 14628 | (license license:asl2.0))) |
| 14629 | |
| 14630 | (define-public python-termcolor |
| 14631 | (package |
| 14632 | (name "python-termcolor") |
| 14633 | (version "1.1.0") |
| 14634 | (source |
| 14635 | (origin |
| 14636 | (method url-fetch) |
| 14637 | (uri (pypi-uri "termcolor" version)) |
| 14638 | (sha256 |
| 14639 | (base32 |
| 14640 | "0fv1vq14rpqwgazxg4981904lfyp84mnammw7y046491cv76jv8x")))) |
| 14641 | (build-system python-build-system) |
| 14642 | (arguments |
| 14643 | ;; There are no tests. |
| 14644 | `(#:tests? #f)) |
| 14645 | (home-page "https://pypi.org/project/termcolor/") |
| 14646 | (synopsis "ANSII Color formatting for terminal output") |
| 14647 | (description |
| 14648 | "This package provides ANSII Color formatting for output in terminals.") |
| 14649 | (license license:expat))) |
| 14650 | |
| 14651 | (define-public python-terminaltables |
| 14652 | (package |
| 14653 | (name "python-terminaltables") |
| 14654 | (version "3.1.0") |
| 14655 | (source |
| 14656 | (origin |
| 14657 | (method url-fetch) |
| 14658 | (uri (pypi-uri "terminaltables" version)) |
| 14659 | (sha256 |
| 14660 | (base32 |
| 14661 | "109vhldk6nv1z3hzp4dyqf6rjvlhl0y2k5k7qcm9fcrq5swhxszk")))) |
| 14662 | (build-system python-build-system) |
| 14663 | (home-page "https://github.com/Robpol86/terminaltables") |
| 14664 | (synopsis |
| 14665 | "Generate simple tables in terminals from a nested list of strings") |
| 14666 | (description |
| 14667 | "This package makes it easy to draw tables in terminal/console |
| 14668 | applications from a list of lists of strings. It supports multi-line rows.") |
| 14669 | (license license:expat))) |
| 14670 | |
| 14671 | (define-public python-libarchive-c |
| 14672 | (package |
| 14673 | (name "python-libarchive-c") |
| 14674 | (version "2.9") |
| 14675 | (source (origin |
| 14676 | (method url-fetch) |
| 14677 | (uri (pypi-uri "libarchive-c" version)) |
| 14678 | (sha256 |
| 14679 | (base32 |
| 14680 | "0q7g6a97110bk0j5x81555kajyxh4sybaabab6v5sgr0xi6386cr")))) |
| 14681 | (build-system python-build-system) |
| 14682 | (arguments |
| 14683 | '(#:phases (modify-phases %standard-phases |
| 14684 | (add-before |
| 14685 | 'build 'reference-libarchive |
| 14686 | (lambda* (#:key inputs #:allow-other-keys) |
| 14687 | ;; Retain the absolute file name of libarchive.so. |
| 14688 | (let ((libarchive (assoc-ref inputs "libarchive"))) |
| 14689 | (substitute* "libarchive/ffi.py" |
| 14690 | (("find_library\\('archive'\\)") |
| 14691 | (string-append "'" libarchive |
| 14692 | "/lib/libarchive.so'")))))) |
| 14693 | (replace 'check |
| 14694 | (lambda _ (invoke "pytest" "-vv")))))) |
| 14695 | (native-inputs |
| 14696 | (list python-mock python-pytest)) |
| 14697 | (inputs |
| 14698 | (list libarchive)) |
| 14699 | (home-page "https://github.com/Changaco/python-libarchive-c") |
| 14700 | (synopsis "Python interface to libarchive") |
| 14701 | (description |
| 14702 | "This package provides Python bindings to libarchive, a C library to |
| 14703 | access possibly compressed archives in many different formats. It uses |
| 14704 | Python's @code{ctypes} foreign function interface (FFI).") |
| 14705 | (license license:lgpl2.0+))) |
| 14706 | |
| 14707 | (define-public python-file |
| 14708 | (package/inherit file |
| 14709 | (name "python-file") |
| 14710 | (build-system python-build-system) |
| 14711 | (arguments |
| 14712 | '(#:tests? #f ;no tests |
| 14713 | #:configure-flags '("--single-version-externally-managed" "--root=/") |
| 14714 | #:phases (modify-phases %standard-phases |
| 14715 | (add-before 'build 'change-directory |
| 14716 | (lambda _ |
| 14717 | (chdir "python") |
| 14718 | #t)) |
| 14719 | (add-before 'build 'set-library-file-name |
| 14720 | (lambda* (#:key inputs #:allow-other-keys) |
| 14721 | (let ((file (assoc-ref inputs "file"))) |
| 14722 | (substitute* "magic.py" |
| 14723 | (("find_library\\('magic'\\)") |
| 14724 | (string-append "'" file "/lib/libmagic.so'"))) |
| 14725 | #t)))))) |
| 14726 | (inputs `(("file" ,file))) |
| 14727 | (native-inputs (if (%current-target-system) |
| 14728 | `(("self" ,this-package)) |
| 14729 | '())) |
| 14730 | (synopsis "Python bindings to the libmagic file type guesser") |
| 14731 | (description "This package provides Python bindings to the libmagic file |
| 14732 | type guesser. |
| 14733 | |
| 14734 | Note that this module and the @code{python-magic} module both provide a |
| 14735 | @file{magic.py} file; these two modules, which are different and were |
| 14736 | developed separately, both serve the same purpose: provide Python bindings for |
| 14737 | libmagic."))) |
| 14738 | |
| 14739 | (define-public python-pydevd |
| 14740 | ;; Use the latest commit, which includes cleanups that removes Python 2 |
| 14741 | ;; syntax that would fail to build. |
| 14742 | (let ((revision "0") |
| 14743 | (commit "47e298499ef19563bb2ef5941a57046a35ae6868")) |
| 14744 | (package |
| 14745 | (name "python-pydevd") |
| 14746 | (version (git-version "2.8.0" revision commit)) |
| 14747 | (source |
| 14748 | (origin |
| 14749 | (method git-fetch) |
| 14750 | (uri (git-reference |
| 14751 | (url "https://github.com/fabioz/PyDev.Debugger") |
| 14752 | (commit commit))) |
| 14753 | (modules '((guix build utils))) |
| 14754 | (snippet '(begin |
| 14755 | ;; Delete pre-built binaries. |
| 14756 | (for-each delete-file (find-files "." "\\.(so|dylib|dll)")) |
| 14757 | ;; This source is generated via Cython. |
| 14758 | (delete-file "_pydevd_bundle/pydevd_cython.c"))) |
| 14759 | (file-name (git-file-name name version)) |
| 14760 | (sha256 |
| 14761 | (base32 |
| 14762 | "1yd017dh6xgxrqcyf8kk8jrr0a3zw895yfjih0z5jghyf0rck38q")))) |
| 14763 | (build-system python-build-system) |
| 14764 | (arguments |
| 14765 | (list |
| 14766 | #:phases |
| 14767 | #~(modify-phases %standard-phases |
| 14768 | (add-after 'unpack 'fix-tests |
| 14769 | (lambda _ |
| 14770 | (substitute* "tests_python/test_convert_utilities.py" |
| 14771 | ;; Add missing trailing '/'. |
| 14772 | (("'\\\\\\\\usr\\\\\\\\bin\\\\\\\\') == '/usr/bin" all) |
| 14773 | (string-append all "/"))))) |
| 14774 | (add-after 'unpack 'patch-command-paths |
| 14775 | (lambda* (#:key inputs #:allow-other-keys) |
| 14776 | (substitute* "_pydevd_bundle/pydevd_api.py" |
| 14777 | (("'kill'") |
| 14778 | (format #f "~s" (search-input-file inputs "bin/kill"))) |
| 14779 | (("'pgrep'") |
| 14780 | (format #f "~s" (search-input-file inputs "bin/pgrep")))))) |
| 14781 | (add-after 'unpack 'generate-sources |
| 14782 | (lambda _ |
| 14783 | (setenv "PYTHONPATH" (getcwd)) |
| 14784 | (invoke "python" "build_tools/build.py"))) |
| 14785 | (add-after 'unpack 'adjust-attach-binary-name |
| 14786 | (lambda _ |
| 14787 | (substitute* |
| 14788 | '("pydevd_tracing.py" |
| 14789 | "pydevd_attach_to_process/add_code_to_python_process.py") |
| 14790 | (("def get_(target|python_helper_lib)_filename.*" all) |
| 14791 | (format #f "~a return ~s~%" all |
| 14792 | (string-append #$output "/lib/attach.so")))))) |
| 14793 | (add-after 'unpack 'patch-gdb |
| 14794 | (lambda* (#:key inputs #:allow-other-keys) |
| 14795 | (substitute* |
| 14796 | "pydevd_attach_to_process/add_code_to_python_process.py" |
| 14797 | (("'gdb',") |
| 14798 | (format #f "~s," (search-input-file inputs "bin/gdb")))))) |
| 14799 | (add-after 'build 'build-attach-linux-binary |
| 14800 | (lambda _ |
| 14801 | (invoke #+(cxx-for-target) "-shared" "-o" "attach.so" |
| 14802 | "-fPIC" "-nostartfiles" |
| 14803 | "pydevd_attach_to_process/linux_and_mac/attach.cpp"))) |
| 14804 | (replace 'check |
| 14805 | (lambda* (#:key tests? #:allow-other-keys) |
| 14806 | (when tests? |
| 14807 | (setenv "PYDEVD_USE_CYTHON" "YES") |
| 14808 | (invoke "pytest" "-vv" |
| 14809 | "-n" (number->string (parallel-job-count)) |
| 14810 | "-k" |
| 14811 | (string-append |
| 14812 | ;; The two "break_01" tests have been failing on |
| 14813 | ;; Python 3.10: |
| 14814 | ;; <https://github.com/fabioz/PyDev.Debugger/issues/222>. |
| 14815 | "not test_set_pydevd_break_01 " |
| 14816 | ;; This one fails for unknown reasons. |
| 14817 | "and not test_completion_sockets_and_messages " |
| 14818 | ;; the GUI event loop requires an X server. |
| 14819 | "and not test_gui_event_loop_custom " |
| 14820 | ;; This test validates that 'pydevd' is not in the |
| 14821 | ;; exception message, but it is due to being part |
| 14822 | ;; of the build file name present in the message. |
| 14823 | "and not test_evaluate_exception_trace " |
| 14824 | ;; These fail on systems with YAMA LSM’s ptrace |
| 14825 | ;; scope > 0. Upstream issue: |
| 14826 | ;; https://github.com/fabioz/PyDev.Debugger/issues/218 |
| 14827 | "and not test_attach_to_pid"))))) |
| 14828 | (add-after 'install 'install-attach-binary |
| 14829 | (lambda _ |
| 14830 | (install-file "attach.so" |
| 14831 | (string-append #$output "/lib")))) |
| 14832 | ;; Some modules aren't designed to be loadable by themselves, such |
| 14833 | ;; as 'pydev_app_engine_debug_startup' and fail. |
| 14834 | (delete 'sanity-check)))) |
| 14835 | (native-inputs |
| 14836 | (list python-cython |
| 14837 | python-numpy |
| 14838 | python-psutil |
| 14839 | python-pytest |
| 14840 | python-pytest-xdist |
| 14841 | python-trio |
| 14842 | python-untangle)) |
| 14843 | (inputs (list coreutils gdb procps)) |
| 14844 | (home-page "https://github.com/fabioz/PyDev.Debugger/") |
| 14845 | (synopsis "Python debugger") |
| 14846 | (description "PyDev.Debugger is a capable Python debugger used in PyDev |
| 14847 | and other @acronym{IDEs, Integrated Development Environments}.") |
| 14848 | (license license:epl1.0)))) |
| 14849 | |
| 14850 | (define-public python-debugpy |
| 14851 | (package |
| 14852 | (name "python-debugpy") |
| 14853 | (version "1.6.0") |
| 14854 | (source |
| 14855 | (origin |
| 14856 | (method git-fetch) |
| 14857 | (uri (git-reference ;no tests in PyPI archive |
| 14858 | (url "https://github.com/microsoft/debugpy") |
| 14859 | (commit (string-append "v" version)))) |
| 14860 | (file-name (git-file-name name version)) |
| 14861 | (modules '((guix build utils))) |
| 14862 | ;; Remove the bundled PyDev-Debugger copy, including its pre-built |
| 14863 | ;; attach binary. |
| 14864 | (snippet '(delete-file-recursively "src/debugpy/_vendored")) |
| 14865 | (patches (search-patches "python-debugpy-unbundle-pydevd.patch")) |
| 14866 | (sha256 |
| 14867 | (base32 |
| 14868 | "1dpfzs3p51648i7f3fz8dw5d0vrj39iwn1jhn0226idc02ybyqih")))) |
| 14869 | (build-system python-build-system) |
| 14870 | (arguments |
| 14871 | (list |
| 14872 | #:tests? #f ; Fail on systems with YAMA LSM’s ptrace scope > 0. |
| 14873 | #:phases |
| 14874 | #~(modify-phases %standard-phases |
| 14875 | (add-after 'unpack 'patch-sh-in-tests |
| 14876 | (lambda _ |
| 14877 | (substitute* "tests/debugpy/test_run.py" |
| 14878 | (("#!/bin/sh") |
| 14879 | (string-append "#!" (which "sh")))))) |
| 14880 | (add-after 'unpack 'fix-version |
| 14881 | ;; Versioneer is useless when there is no git metadata. |
| 14882 | (lambda _ |
| 14883 | (substitute* "setup.py" |
| 14884 | (("version=versioneer.get_version\\(),") |
| 14885 | (format #f "version=~s," #$version))))) |
| 14886 | (add-before 'build 'configure |
| 14887 | (lambda _ |
| 14888 | ;; This adjusts the behavior of debugpy to load pydevd from |
| 14889 | ;; Python site packages. |
| 14890 | (setenv "DEBUGPY_BUNDLING_DISABLED" "1"))) |
| 14891 | (replace 'check |
| 14892 | (lambda* (#:key tests? #:allow-other-keys) |
| 14893 | (when tests? |
| 14894 | (invoke "pytest" "-vv" |
| 14895 | "-n" (number->string (parallel-job-count)) |
| 14896 | "-k" |
| 14897 | (string-append |
| 14898 | ;; These tests cannot be run in parallel because their |
| 14899 | ;; test data would not be copied by xdist and lead to |
| 14900 | ;; import errors. (see: |
| 14901 | ;; https://github.com/microsoft/debugpy/issues/342 and |
| 14902 | ;; https://github.com/microsoft/debugpy/issues/880). |
| 14903 | "not test_custom_python_args " |
| 14904 | "and not test_autokill ")))))))) |
| 14905 | (native-inputs |
| 14906 | ;; See: https://raw.githubusercontent.com/microsoft/debugpy/ |
| 14907 | ;; main/tests/requirements.txt. |
| 14908 | (list python-django |
| 14909 | python-gevent |
| 14910 | python-flask |
| 14911 | python-psutil |
| 14912 | python-pytest |
| 14913 | python-pytest-cov |
| 14914 | python-pytest-timeout |
| 14915 | python-pytest-xdist |
| 14916 | python-requests)) |
| 14917 | (propagated-inputs (list python-pydevd)) |
| 14918 | (home-page "https://aka.ms/debugpy") |
| 14919 | (synopsis "Debug Adapter Protocol Python implementation") |
| 14920 | (description "An implementation of the Debug Adapter Protocol for |
| 14921 | Python.") |
| 14922 | (license license:expat))) |
| 14923 | |
| 14924 | (define-public python-debian |
| 14925 | (package |
| 14926 | (name "python-debian") |
| 14927 | (home-page "https://salsa.debian.org/python-debian-team/python-debian") |
| 14928 | (version "0.1.49") |
| 14929 | (source |
| 14930 | (origin |
| 14931 | ;; Use git-fetch, as pypi doesn't include test suite. |
| 14932 | (method git-fetch) |
| 14933 | (uri (git-reference |
| 14934 | (url home-page) |
| 14935 | (commit version))) |
| 14936 | (file-name (git-file-name name version)) |
| 14937 | (sha256 |
| 14938 | (base32 |
| 14939 | "190vy2ns0650icpwvv4qp6kr3c3i9jszy1vkdwpigxb96fs1bqf3")) |
| 14940 | (modules '((guix build utils))) |
| 14941 | (snippet |
| 14942 | #~(begin |
| 14943 | ;; python-apt, apt and dpkg are not yet available in guix, |
| 14944 | ;; and these tests heavily depend on them. |
| 14945 | (for-each delete-file |
| 14946 | '("lib/debian/tests/test_deb822.py" |
| 14947 | "lib/debian/tests/test_debfile.py")) |
| 14948 | |
| 14949 | ;; for reproducible builds, otherwise python-debian |
| 14950 | ;; generates a _version.py including the date |
| 14951 | (copy-file "lib/debian/_version.py.in" "lib/debian/_version.py") |
| 14952 | (substitute* "lib/debian/_version.py" |
| 14953 | (("__CHANGELOG_VERSION__") #$version)))))) |
| 14954 | (build-system python-build-system) |
| 14955 | (native-inputs |
| 14956 | (list python-pytest)) |
| 14957 | (propagated-inputs |
| 14958 | (list python-six python-chardet)) |
| 14959 | (synopsis "Debian package related modules") |
| 14960 | (description |
| 14961 | "This package provides Python modules that abstract many formats of |
| 14962 | Debian-related files, such as: |
| 14963 | @itemize |
| 14964 | @item Debtags information; |
| 14965 | @item @file{debian/changelog} files; |
| 14966 | @item packages files, pdiffs; |
| 14967 | @item control files of single or multiple RFC822-style paragraphs---e.g. |
| 14968 | @file{debian/control}, @file{.changes}, @file{.dsc}; |
| 14969 | @item Raw @file{.deb} and @file{.ar} files, with (read-only) access to |
| 14970 | contained files and meta-information. |
| 14971 | @end itemize") |
| 14972 | ;; Modules are either GPLv2+ or GPLv3+. |
| 14973 | (license license:gpl3+))) |
| 14974 | |
| 14975 | (define-public python-json-spec |
| 14976 | (package |
| 14977 | (name "python-json-spec") |
| 14978 | (version "0.11.0") |
| 14979 | (source |
| 14980 | (origin |
| 14981 | (method url-fetch) |
| 14982 | (uri (pypi-uri "json_spec" version)) |
| 14983 | (sha256 |
| 14984 | (base32 |
| 14985 | "0fwxirzxx5s9l0lwnjl6ki39xw1fsjm0vr6cm67ws27fkmcxcry7")))) |
| 14986 | (build-system python-build-system) |
| 14987 | (propagated-inputs |
| 14988 | (list python-importlib-metadata |
| 14989 | python-termcolor)) |
| 14990 | (native-inputs |
| 14991 | (list python-pytest)) |
| 14992 | (home-page "https://json-spec.readthedocs.io/") |
| 14993 | (synopsis |
| 14994 | "JSON Schema, JSON Pointer and JSON Reference for Python") |
| 14995 | (description |
| 14996 | "This Python library implements several JSON specs, like JSON Schema, |
| 14997 | JSON Reference and JSON Pointer.") |
| 14998 | (license license:bsd-3))) |
| 14999 | |
| 15000 | (define-public python-fastbencode |
| 15001 | (package |
| 15002 | (name "python-fastbencode") |
| 15003 | (version "0.0.7") |
| 15004 | (source |
| 15005 | (origin |
| 15006 | (method url-fetch) |
| 15007 | (uri (pypi-uri "fastbencode" version)) |
| 15008 | (modules '((guix build utils))) |
| 15009 | ;; Delete pre-generated Cython C files. |
| 15010 | (snippet '(for-each delete-file (find-files "." "\\.c$"))) |
| 15011 | (sha256 |
| 15012 | (base32 "1r66w3vpmvfmssshjpgqaj2m14c8p94nymr96mwn61idajz9mg5n")))) |
| 15013 | (build-system python-build-system) |
| 15014 | (native-inputs (list python-cython)) |
| 15015 | (home-page "https://github.com/breezy-team/fastbencode") |
| 15016 | (synopsis "Python Bencode (de)serializer with optional fast C extensions") |
| 15017 | (description |
| 15018 | "The fastbencode Python package implements the bencode serialization |
| 15019 | format for storing and transmitting loosely structured data, originally used |
| 15020 | by BitTorrent. |
| 15021 | |
| 15022 | The format can encode four different types of values: byte strings, integers, |
| 15023 | lists, and dictionaries (associative arrays). It's simple and unaffected by |
| 15024 | endianness, |
| 15025 | |
| 15026 | This package includes both a pure-Python version and an optional C extension |
| 15027 | based on Cython. Both provide the same functionality, but the C version has |
| 15028 | significantly better performance.") |
| 15029 | (license (list license:expat ; _bencode_py.py |
| 15030 | license:gpl2+)))) ; __init__.py |
| 15031 | |
| 15032 | (define-public python-fastjsonschema |
| 15033 | (package |
| 15034 | (name "python-fastjsonschema") |
| 15035 | (version "2.15.1") |
| 15036 | (source |
| 15037 | (origin |
| 15038 | (method url-fetch) |
| 15039 | (uri (pypi-uri "fastjsonschema" version)) |
| 15040 | (sha256 |
| 15041 | (base32 "1ln2j60jzyn6p8i8ljygfgrji58hc23452g7nllkcjdk4p93c7v7")))) |
| 15042 | (build-system pyproject-build-system) |
| 15043 | (arguments `(#:tests? #f)) ;no tests included |
| 15044 | (native-inputs |
| 15045 | (list python-colorama |
| 15046 | python-json-spec |
| 15047 | python-jsonschema |
| 15048 | python-pylint |
| 15049 | python-pytest |
| 15050 | python-pytest-benchmark |
| 15051 | python-pytest-cache)) |
| 15052 | (home-page |
| 15053 | "https://github.com/horejsek/python-fastjsonschema") |
| 15054 | (synopsis |
| 15055 | "Fast Python implementation of JSON schema") |
| 15056 | (description |
| 15057 | "This library implements validation of JSON documents by JSON schema for |
| 15058 | drafts 04, 06 and 07.") |
| 15059 | (license license:bsd-3))) |
| 15060 | |
| 15061 | (define-public python-nbformat |
| 15062 | (package |
| 15063 | (name "python-nbformat") |
| 15064 | (version "5.3.0") |
| 15065 | ;; The PyPi release tarball lacks some test cases and test data. |
| 15066 | (source (origin |
| 15067 | (method git-fetch) |
| 15068 | (uri (git-reference |
| 15069 | (url "https://github.com/jupyter/nbformat") |
| 15070 | (commit version))) |
| 15071 | (sha256 |
| 15072 | (base32 |
| 15073 | "114c5c6cvpxhxj8zrw74351gcfzyzjh1jq3py4xf8wk9rahfay9z")) |
| 15074 | (file-name (git-file-name name version)))) |
| 15075 | (build-system python-build-system) |
| 15076 | (arguments |
| 15077 | `(#:phases |
| 15078 | (modify-phases %standard-phases |
| 15079 | (replace 'check |
| 15080 | (lambda* (#:key inputs outputs tests? #:allow-other-keys) |
| 15081 | (when tests? |
| 15082 | (invoke "pytest" "-vv"))))))) |
| 15083 | (propagated-inputs |
| 15084 | (list python-fastjsonschema python-jsonschema python-jupyter-core |
| 15085 | python-traitlets)) |
| 15086 | (native-inputs |
| 15087 | (list python-pytest |
| 15088 | python-testpath)) |
| 15089 | (home-page "https://jupyter.org") |
| 15090 | (synopsis "Jupyter Notebook format") |
| 15091 | (description "This package provides the reference implementation of the |
| 15092 | Jupyter Notebook format and Python APIs for working with notebooks.") |
| 15093 | (license license:bsd-3))) |
| 15094 | |
| 15095 | (define-public python-nb-clean |
| 15096 | (package |
| 15097 | (name "python-nb-clean") |
| 15098 | (version "2.1.0") |
| 15099 | (source |
| 15100 | (origin |
| 15101 | (method url-fetch) |
| 15102 | (uri (pypi-uri "nb-clean" version)) |
| 15103 | (sha256 |
| 15104 | (base32 "01qvk9n7rx15dhc23m8bj9bw5wdyxh6y18c5fm8hllmrd3ndsx14")))) |
| 15105 | (build-system python-build-system) |
| 15106 | (propagated-inputs (list python-nbformat)) |
| 15107 | (home-page "https://github.com/srstevenson/nb-clean") |
| 15108 | (synopsis "Clean Jupyter notebooks for versioning") |
| 15109 | (description "This package cleans Jupyter notebooks of cell execution |
| 15110 | counts, metadata, outputs, and empty cells, preparing them for committing to |
| 15111 | version control. It provides a Git filter to automatically clean notebooks |
| 15112 | before they're staged, and can also be used with other version control |
| 15113 | systems, as a command line tool, and as a Python library.") |
| 15114 | (license license:isc))) |
| 15115 | |
| 15116 | (define-public python-bleach |
| 15117 | (package |
| 15118 | (name "python-bleach") |
| 15119 | (version "5.0.1") |
| 15120 | (source |
| 15121 | (origin |
| 15122 | (method url-fetch) |
| 15123 | (uri (pypi-uri "bleach" version)) |
| 15124 | (sha256 |
| 15125 | (base32 "0p089853pkwzf1j2zjlmw67pwbkk0whpzfx9dbrd56zb8xf2a0qd")) |
| 15126 | (snippet |
| 15127 | #~(begin |
| 15128 | (use-modules (guix build utils)) |
| 15129 | (substitute* (find-files "." "\\.py$") |
| 15130 | (("bleach\\._vendor\\.html5lib") "html5lib")) |
| 15131 | (delete-file-recursively "bleach/_vendor/html5lib"))))) |
| 15132 | (build-system pyproject-build-system) |
| 15133 | (propagated-inputs (list python-html5lib python-tinycss2 python-webencodings)) |
| 15134 | (native-inputs (list python-pytest)) |
| 15135 | (home-page "https://github.com/mozilla/bleach") |
| 15136 | (synopsis "Whitelist-based HTML-sanitizing tool") |
| 15137 | (description "Bleach is an easy whitelist-based HTML-sanitizing tool.") |
| 15138 | (license license:asl2.0))) |
| 15139 | |
| 15140 | (define-public python-entrypoints |
| 15141 | (package |
| 15142 | (name "python-entrypoints") |
| 15143 | (version "0.3") |
| 15144 | (source |
| 15145 | (origin |
| 15146 | (method url-fetch) |
| 15147 | (uri (pypi-uri "entrypoints" version)) |
| 15148 | (sha256 |
| 15149 | (base32 |
| 15150 | "0lc4si3xb7hza424414rdqdc3vng3kcrph8jbvjqb32spqddf3f7")))) |
| 15151 | (build-system python-build-system) |
| 15152 | ;; The package does not come with a setup.py file, so we have to generate |
| 15153 | ;; one ourselves. |
| 15154 | (arguments |
| 15155 | `(#:tests? #f |
| 15156 | #:phases |
| 15157 | (modify-phases %standard-phases |
| 15158 | (add-after 'unpack 'create-setup.py |
| 15159 | (lambda _ |
| 15160 | (call-with-output-file "setup.py" |
| 15161 | (lambda (port) |
| 15162 | (format port "\ |
| 15163 | from setuptools import setup |
| 15164 | setup(name='entrypoints', version='~a', py_modules=['entrypoints']) |
| 15165 | " ,version)))))))) |
| 15166 | (home-page "https://github.com/takluyver/entrypoints") |
| 15167 | (synopsis "Discover and load entry points from installed Python packages") |
| 15168 | (description "Entry points are a way for Python packages to advertise |
| 15169 | objects with some common interface. The most common examples are |
| 15170 | @code{console_scripts} entry points, which define shell commands by |
| 15171 | identifying a Python function to run. The @code{entrypoints} module contains |
| 15172 | functions to find and load entry points.") |
| 15173 | (license license:expat))) |
| 15174 | |
| 15175 | (define-public python-epc |
| 15176 | (package |
| 15177 | (name "python-epc") |
| 15178 | (version "0.0.5") |
| 15179 | (source |
| 15180 | (origin |
| 15181 | (method url-fetch) |
| 15182 | (uri (pypi-uri "epc" version)) |
| 15183 | (sha256 |
| 15184 | (base32 |
| 15185 | "09bx1ln1bwa00917dndlgs4k589h8qx2x080xch5m58p92kjwkd1")))) |
| 15186 | (build-system python-build-system) |
| 15187 | (propagated-inputs |
| 15188 | (list python-sexpdata)) |
| 15189 | (native-inputs |
| 15190 | (list python-nose)) |
| 15191 | (home-page "https://github.com/tkf/python-epc") |
| 15192 | (synopsis "Remote procedure call (RPC) stack for Emacs Lisp and Python") |
| 15193 | (description |
| 15194 | "Python-EPC can call elisp functions from Python and Python functions |
| 15195 | from elisp.") |
| 15196 | (license license:gpl3))) |
| 15197 | |
| 15198 | (define-public python-forex-python |
| 15199 | (package |
| 15200 | (name "python-forex-python") |
| 15201 | (version "1.5") |
| 15202 | (source |
| 15203 | (origin |
| 15204 | (method url-fetch) |
| 15205 | (uri (pypi-uri "forex-python" version)) |
| 15206 | (sha256 |
| 15207 | (base32 "1ma8cl1i2dh8aa99pifnlilyy4d1gd1s07fj0yd17wcbpsh532cj")))) |
| 15208 | (build-system python-build-system) |
| 15209 | (arguments |
| 15210 | ;; Tests are not included in the PyPI tarball. Also, the tests in the |
| 15211 | ;; repository require online data. |
| 15212 | `(#:tests? #f)) |
| 15213 | (propagated-inputs |
| 15214 | (list python-requests python-simplejson)) |
| 15215 | (home-page "https://github.com/MicroPyramid/forex-python") |
| 15216 | (synopsis "Foreign exchange rates and currency conversion") |
| 15217 | (description |
| 15218 | "@code{python-forex-python} can be used to manipulate foreign |
| 15219 | exchange rates and to operate currency conversions. |
| 15220 | |
| 15221 | Features: |
| 15222 | @itemize |
| 15223 | @item List all currency rates. |
| 15224 | @item BitCoin price for all currencies. |
| 15225 | @item Converting amount to BitCoins. |
| 15226 | @item Get historical rates for any day since 1999. |
| 15227 | @item Conversion rate for one currency(ex; USD to INR). |
| 15228 | @item Convert amount from one currency to other.('USD 10$' to INR). |
| 15229 | @item Currency symbols. |
| 15230 | @item Currency names. |
| 15231 | @end itemize") |
| 15232 | (license license:expat))) |
| 15233 | |
| 15234 | (define-public python-simpleeval |
| 15235 | (package |
| 15236 | (name "python-simpleeval") |
| 15237 | (version "0.9.12") |
| 15238 | (source |
| 15239 | (origin |
| 15240 | (method url-fetch) |
| 15241 | (uri (pypi-uri "simpleeval" version)) |
| 15242 | (sha256 |
| 15243 | (base32 "0diysdzvx865yy2rjfah75ha2qfxaxz7r108kp7j2kkd903ya2ry")))) |
| 15244 | (build-system python-build-system) |
| 15245 | (home-page "https://github.com/danthedeckie/simpleeval") |
| 15246 | (synopsis "Simple, safe single expression evaluator library") |
| 15247 | (description |
| 15248 | "This package provides a quick single file library for easily adding |
| 15249 | evaluatable expressions into python projects. Say you want to allow a user |
| 15250 | to set an alarm volume, which could depend on the time of day, alarm level, |
| 15251 | how many previous alarms had gone off, and if there is music playing at the |
| 15252 | time.") |
| 15253 | (license license:expat))) |
| 15254 | |
| 15255 | (define-public python-nbconvert |
| 15256 | (package |
| 15257 | (name "python-nbconvert") |
| 15258 | (version "6.5.0") |
| 15259 | (source |
| 15260 | (origin |
| 15261 | (method url-fetch) |
| 15262 | (uri (pypi-uri "nbconvert" version)) |
| 15263 | (sha256 |
| 15264 | (base32 |
| 15265 | "17g9xq4za7vvzml6l6d8zrzknhxsvgx02hymmsw9d1dygbi4cgi2")))) |
| 15266 | (build-system python-build-system) |
| 15267 | (arguments |
| 15268 | (list |
| 15269 | #:phases |
| 15270 | #~(modify-phases %standard-phases |
| 15271 | (add-after 'unpack 'fix-paths |
| 15272 | (lambda* (#:key inputs #:allow-other-keys) |
| 15273 | ;; Use pandoc binary from input. |
| 15274 | (substitute* "nbconvert/utils/pandoc.py" |
| 15275 | (("'pandoc'") |
| 15276 | (format #f "~s" (search-input-file inputs "bin/pandoc")))) |
| 15277 | ;; Same for LaTeX. |
| 15278 | (substitute* "nbconvert/exporters/pdf.py" |
| 15279 | (("\"xelatex\"") |
| 15280 | (format #f "~s" (search-input-file inputs "bin/xelatex"))) |
| 15281 | (("\"bibtex\"") |
| 15282 | (format #f "~s" (search-input-file inputs "bin/bibtex")))) |
| 15283 | ;; Likewise for Inkscape. |
| 15284 | (substitute* "nbconvert/preprocessors/svg2pdf.py" |
| 15285 | (("inkscape_path = which\\(\"inkscape\")") |
| 15286 | (format #f "inkscape_path = ~s" |
| 15287 | (search-input-file inputs "bin/inkscape")))))) |
| 15288 | (replace 'check |
| 15289 | (lambda* (#:key tests? #:allow-other-keys) |
| 15290 | (when tests? |
| 15291 | ;; Tests depend on templates installed to output. |
| 15292 | (setenv "JUPYTER_PATH" |
| 15293 | (string-append #$output "/share/jupyter:" |
| 15294 | (getenv "JUPYTER_PATH"))) |
| 15295 | ;; Step outside of the source directory to avoid having both |
| 15296 | ;; the installed package *and* the package from the source on |
| 15297 | ;; Python's path. |
| 15298 | (with-directory-excursion "/tmp" |
| 15299 | (invoke "pytest" "--pyargs" "nbconvert" |
| 15300 | "-vv" "-n" (number->string (parallel-job-count)) |
| 15301 | "-k" |
| 15302 | (string-append |
| 15303 | ;; These tests require pyppeteer, not yet |
| 15304 | ;; available in Guix. |
| 15305 | "not test_webpdf_with_chromium " |
| 15306 | "and not test_webpdf.py " |
| 15307 | ;; These tests require ipywidgets, which would |
| 15308 | ;; introduce a dependency cycle. |
| 15309 | "and not test_execute_widgets_from_nbconvert " |
| 15310 | "and not test_execute_multiple_notebooks "))))))))) |
| 15311 | (inputs |
| 15312 | (list inkscape/stable pandoc)) |
| 15313 | (native-inputs |
| 15314 | (list python-ipykernel |
| 15315 | ;; Adding ipywidgets would create a cycle. |
| 15316 | ;;python-ipywidgets |
| 15317 | ;; XXX: Disabled, not in guix. |
| 15318 | ;;python-pyppeteer |
| 15319 | python-pytest |
| 15320 | python-pytest-xdist)) |
| 15321 | (propagated-inputs |
| 15322 | (list python-beautifulsoup4 |
| 15323 | python-bleach |
| 15324 | python-defusedxml |
| 15325 | python-entrypoints |
| 15326 | python-jinja2 |
| 15327 | python-jupyter-core |
| 15328 | python-mistune |
| 15329 | python-nbclient |
| 15330 | python-nbformat |
| 15331 | python-pandocfilters |
| 15332 | python-pygments |
| 15333 | python-jupyterlab-pygments |
| 15334 | python-testpath |
| 15335 | python-traitlets |
| 15336 | ;; Required, even if [serve] is not used. |
| 15337 | python-tornado-6 |
| 15338 | ;; Required at runtime for `jupyter nbconvert --to=pdf`. |
| 15339 | texlive-adjustbox |
| 15340 | texlive-booktabs |
| 15341 | texlive-caption |
| 15342 | texlive-collection-basic |
| 15343 | texlive-enumitem |
| 15344 | texlive-environ |
| 15345 | texlive-eurosym |
| 15346 | texlive-fancyvrb |
| 15347 | texlive-float |
| 15348 | texlive-fontspec |
| 15349 | texlive-geometry |
| 15350 | texlive-grffile |
| 15351 | texlive-hyperref |
| 15352 | texlive-jknapltx |
| 15353 | texlive-jknapltx |
| 15354 | texlive-lm |
| 15355 | texlive-lm-math |
| 15356 | texlive-mathpazo |
| 15357 | texlive-ms |
| 15358 | texlive-parskip |
| 15359 | texlive-pdfcol |
| 15360 | texlive-pgf |
| 15361 | texlive-rsfs |
| 15362 | texlive-stringenc |
| 15363 | texlive-tcolorbox |
| 15364 | texlive-titling |
| 15365 | texlive-tools |
| 15366 | texlive-trimspaces |
| 15367 | texlive-ucs |
| 15368 | texlive-ulem |
| 15369 | texlive-unicode-math |
| 15370 | texlive-upquote |
| 15371 | texlive-xcolor |
| 15372 | texlive-xetex |
| 15373 | texlive-zapfding)) |
| 15374 | (home-page "https://jupyter.org") |
| 15375 | (synopsis "Converting Jupyter Notebooks") |
| 15376 | (description "The @code{nbconvert} tool, @code{jupyter nbconvert}, converts |
| 15377 | notebooks to various other formats via Jinja templates. It allows you to |
| 15378 | convert an @code{.ipynb} notebook file into various static formats including: |
| 15379 | |
| 15380 | @enumerate |
| 15381 | @item HTML |
| 15382 | @item LaTeX |
| 15383 | @item PDF |
| 15384 | @item Reveal JS |
| 15385 | @item Markdown (md) |
| 15386 | @item ReStructured Text (rst) |
| 15387 | @item executable script |
| 15388 | @end enumerate\n") |
| 15389 | (license license:bsd-3))) |
| 15390 | |
| 15391 | (define-public python-notebook |
| 15392 | (package |
| 15393 | (name "python-notebook") |
| 15394 | (version "6.4.10") |
| 15395 | (source (origin |
| 15396 | (method url-fetch) |
| 15397 | (uri (pypi-uri "notebook" version)) |
| 15398 | (sha256 |
| 15399 | (base32 |
| 15400 | "03p976xq1l9xf4djwk0snmywd0zck3i6gjngxsl874i8qrmsf214")))) |
| 15401 | (build-system python-build-system) |
| 15402 | (arguments |
| 15403 | `(#:phases |
| 15404 | (modify-phases %standard-phases |
| 15405 | (add-after 'unpack 'use-our-home-for-tests |
| 15406 | (lambda _ |
| 15407 | ;; The 'get_patch_env' function in this file reads: |
| 15408 | ;; 'HOME': cls.home_dir |
| 15409 | ;; but for some reason, that definition of HOME is not what the |
| 15410 | ;; GLib/GIO trash mechanism honors, which would cause test |
| 15411 | ;; failures. Instead, set 'HOME' here to an existing directory |
| 15412 | ;; and let the tests honor it. |
| 15413 | (substitute* "notebook/tests/launchnotebook.py" |
| 15414 | (("'HOME': .*," all) |
| 15415 | (string-append "# " all "\n"))) |
| 15416 | (setenv "HOME" (getcwd)))) |
| 15417 | (replace 'check |
| 15418 | (lambda* (#:key tests? inputs outputs #:allow-other-keys) |
| 15419 | ;; These tests require a browser. |
| 15420 | (delete-file-recursively "notebook/tests/selenium") |
| 15421 | (when tests? |
| 15422 | ;; Interferes with test expectations. |
| 15423 | (unsetenv "JUPYTER_CONFIG_PATH") |
| 15424 | ;; Some tests do not expect all files to be installed in the |
| 15425 | ;; same directory, but JUPYTER_PATH contains multiple entries. |
| 15426 | (unsetenv "JUPYTER_PATH") |
| 15427 | (invoke "pytest" "-vv" |
| 15428 | ;; TODO: This tests fails because nbconvert does not |
| 15429 | ;; list "python" as a format. |
| 15430 | "-k" "not test_list_formats"))))))) |
| 15431 | (propagated-inputs |
| 15432 | (list python-argon2-cffi |
| 15433 | python-ipykernel |
| 15434 | python-ipython-genutils |
| 15435 | python-jinja2 |
| 15436 | python-jupyter-client |
| 15437 | python-jupyter-core |
| 15438 | python-nest-asyncio |
| 15439 | python-nbconvert |
| 15440 | python-nbformat |
| 15441 | python-prometheus-client |
| 15442 | python-pyzmq |
| 15443 | python-send2trash |
| 15444 | python-terminado |
| 15445 | python-tornado-6 |
| 15446 | python-traitlets)) |
| 15447 | (native-inputs |
| 15448 | (list python-coverage |
| 15449 | python-nbval |
| 15450 | python-pytest |
| 15451 | python-pytest-cov |
| 15452 | python-requests |
| 15453 | python-requests-unixsocket)) |
| 15454 | (home-page "https://jupyter.org/") |
| 15455 | (synopsis "Web-based notebook environment for interactive computing") |
| 15456 | (description |
| 15457 | "The Jupyter HTML notebook is a web-based notebook environment for |
| 15458 | interactive computing.") |
| 15459 | (license license:bsd-3))) |
| 15460 | |
| 15461 | (define-public python-widgetsnbextension |
| 15462 | (package |
| 15463 | (name "python-widgetsnbextension") |
| 15464 | (version "3.5.1") |
| 15465 | (source |
| 15466 | (origin |
| 15467 | (method url-fetch) |
| 15468 | (uri (pypi-uri "widgetsnbextension" version)) |
| 15469 | (sha256 |
| 15470 | (base32 |
| 15471 | "1ismyaxbv9d56yqqqb8xl58hg0iq0bbyy014a53y1g3hfbc8g7q7")))) |
| 15472 | (build-system python-build-system) |
| 15473 | (propagated-inputs |
| 15474 | (list python-notebook)) |
| 15475 | (home-page "https://ipython.org") |
| 15476 | (synopsis "IPython HTML widgets for Jupyter") |
| 15477 | (description "This package provides interactive HTML widgets for Jupyter |
| 15478 | notebooks.") |
| 15479 | (license license:bsd-3))) |
| 15480 | |
| 15481 | (define-public python-ipywidgets |
| 15482 | (package |
| 15483 | (name "python-ipywidgets") |
| 15484 | (version "7.6.3") |
| 15485 | (source |
| 15486 | (origin |
| 15487 | (method url-fetch) |
| 15488 | (uri (pypi-uri "ipywidgets" version)) |
| 15489 | (sha256 |
| 15490 | (base32 |
| 15491 | "1w217j8i53x14l7b05fk300k222zs9vkcjaa1rbrw3sk43k466lz")))) |
| 15492 | (build-system python-build-system) |
| 15493 | (propagated-inputs |
| 15494 | (list python-ipykernel |
| 15495 | python-ipython |
| 15496 | python-jupyterlab-widgets |
| 15497 | python-nbformat |
| 15498 | python-traitlets |
| 15499 | python-widgetsnbextension)) |
| 15500 | (native-inputs |
| 15501 | (list python-mock python-pytest python-pytest-cov)) |
| 15502 | (home-page "https://ipython.org") |
| 15503 | (synopsis "IPython HTML widgets for Jupyter") |
| 15504 | (description "Ipywidgets are interactive HTML widgets for Jupyter |
| 15505 | notebooks and the IPython kernel. Notebooks come alive when interactive |
| 15506 | widgets are used. Users gain control of their data and can visualize changes |
| 15507 | in the data.") |
| 15508 | (license license:bsd-3))) |
| 15509 | |
| 15510 | (define-public python-jupyter-console |
| 15511 | (package |
| 15512 | (name "python-jupyter-console") |
| 15513 | (version "6.4.0") |
| 15514 | (source |
| 15515 | (origin |
| 15516 | (method url-fetch) |
| 15517 | (uri (pypi-uri "jupyter_console" version)) |
| 15518 | (sha256 |
| 15519 | (base32 |
| 15520 | "1iqrxhd8hvlyf8cqbc731ssnwm61wrycnbiczy5wsfahd3hlh8i4")))) |
| 15521 | (build-system python-build-system) |
| 15522 | (propagated-inputs |
| 15523 | (list python-ipykernel python-jupyter-client python-prompt-toolkit |
| 15524 | python-pygments)) |
| 15525 | (native-inputs |
| 15526 | (list python-nose python-pytest)) |
| 15527 | (home-page "https://jupyter.org") |
| 15528 | (synopsis "Jupyter terminal console") |
| 15529 | (description "This package provides a terminal-based console frontend for |
| 15530 | Jupyter kernels. It also allows for console-based interaction with non-Python |
| 15531 | Jupyter kernels such as IJulia and IRKernel.") |
| 15532 | (license license:bsd-3))) |
| 15533 | |
| 15534 | ;; The python-ipython and python-jupyter-console require each other. To get |
| 15535 | ;; the functionality in both packages working, strip down the |
| 15536 | ;; python-jupyter-console package when using it as an input to python-ipython. |
| 15537 | (define python-jupyter-console-minimal |
| 15538 | (package/inherit python-jupyter-console |
| 15539 | (name "python-jupyter-console-minimal") |
| 15540 | (arguments |
| 15541 | (substitute-keyword-arguments |
| 15542 | (package-arguments python-jupyter-console) |
| 15543 | ((#:phases phases) |
| 15544 | `(modify-phases ,phases |
| 15545 | (add-after 'install 'delete-bin |
| 15546 | (lambda* (#:key outputs #:allow-other-keys) |
| 15547 | ;; Delete the bin files, to avoid conflicts in profiles |
| 15548 | ;; where python-ipython and python-jupyter-console are |
| 15549 | ;; both present. |
| 15550 | (delete-file-recursively |
| 15551 | (string-append |
| 15552 | (assoc-ref outputs "out") "/bin")))))))) |
| 15553 | ;; Remove the python-ipython propagated input, to avoid the cycle |
| 15554 | (propagated-inputs |
| 15555 | (modify-inputs (package-propagated-inputs python-jupyter-console) |
| 15556 | (delete "python-ipython"))))) |
| 15557 | |
| 15558 | (define-public python-qtconsole |
| 15559 | (package |
| 15560 | (name "python-qtconsole") |
| 15561 | (version "5.3.0") |
| 15562 | (source |
| 15563 | (origin |
| 15564 | (method url-fetch) |
| 15565 | (uri (pypi-uri "qtconsole" version)) |
| 15566 | (sha256 |
| 15567 | (base32 "09anp8g7vqi8z8wyi2lv21a2frd2dyhyrzvcrk2anijyqzyj0dcf")))) |
| 15568 | (build-system python-build-system) |
| 15569 | (arguments |
| 15570 | `(#:phases |
| 15571 | (modify-phases %standard-phases |
| 15572 | (add-before 'check 'pre-check |
| 15573 | (lambda _ |
| 15574 | (setenv "QT_QPA_PLATFORM" "offscreen") |
| 15575 | (setenv "HOME" "/tmp") |
| 15576 | ;; FIXME: skip a failing test. |
| 15577 | (substitute* "qtconsole/tests/test_jupyter_widget.py" |
| 15578 | (("def test_other_output") "def _test_other_output"))))))) |
| 15579 | (propagated-inputs |
| 15580 | (list python-ipykernel python-ipython-genutils python-jupyter-client |
| 15581 | python-jupyter-core python-pygments python-pyqt |
| 15582 | python-pyzmq python-qtpy python-traitlets)) |
| 15583 | (native-inputs |
| 15584 | (list python-flaky python-pytest python-pytest-qt)) |
| 15585 | (home-page "https://jupyter.org") |
| 15586 | (synopsis "Jupyter Qt console") |
| 15587 | (description "This package provides a Qt-based console for Jupyter with |
| 15588 | support for rich media output.") |
| 15589 | (license license:bsd-3))) |
| 15590 | |
| 15591 | (define-public python-jsbeautifier |
| 15592 | (package |
| 15593 | (name "python-jsbeautifier") |
| 15594 | (version "1.10.2") |
| 15595 | (home-page "https://github.com/beautify-web/js-beautify") |
| 15596 | (source (origin |
| 15597 | (method git-fetch) |
| 15598 | (uri (git-reference |
| 15599 | (url home-page) |
| 15600 | (commit (string-append "v" version)))) |
| 15601 | (file-name (git-file-name name version)) |
| 15602 | (sha256 |
| 15603 | (base32 |
| 15604 | "0wawb070ki1axb3jc9xvsrgpji52vcfif3zmjzc3z4g98m5xw4kg")))) |
| 15605 | (build-system python-build-system) |
| 15606 | (arguments |
| 15607 | `(#:phases (modify-phases %standard-phases |
| 15608 | (add-after 'unpack 'chdir |
| 15609 | (lambda _ |
| 15610 | ;; The upstream Git repository contains all the code, |
| 15611 | ;; but this package only builds the python code. |
| 15612 | (chdir "python") |
| 15613 | #t)) |
| 15614 | (add-after 'unpack 'patch-python-six-requirements |
| 15615 | (lambda _ |
| 15616 | (substitute* "python/setup.py" |
| 15617 | (("six>=1.12.0") |
| 15618 | "six>=1.11.0")) |
| 15619 | #t))))) |
| 15620 | (propagated-inputs |
| 15621 | (list python-editorconfig python-six)) |
| 15622 | (native-inputs |
| 15623 | (list python-pytest)) |
| 15624 | (synopsis "JavaScript unobfuscator and beautifier") |
| 15625 | (description "Beautify, unpack or deobfuscate JavaScript, leveraging |
| 15626 | popular online obfuscators.") |
| 15627 | (license license:expat))) |
| 15628 | |
| 15629 | (define-public jupyter |
| 15630 | (package |
| 15631 | (name "jupyter") |
| 15632 | (version "1.0.0") |
| 15633 | (source |
| 15634 | (origin |
| 15635 | (method url-fetch) |
| 15636 | (uri (pypi-uri "jupyter" version)) |
| 15637 | (sha256 |
| 15638 | (base32 |
| 15639 | "0pwf3pminkzyzgx5kcplvvbvwrrzd3baa7lmh96f647k30rlpp6r")))) |
| 15640 | (build-system python-build-system) |
| 15641 | (arguments '(#:tests? #f)) ; there are none. |
| 15642 | (propagated-inputs |
| 15643 | (list python-ipykernel |
| 15644 | python-ipywidgets |
| 15645 | python-jupyter-console |
| 15646 | python-nbconvert |
| 15647 | python-notebook |
| 15648 | python-qtconsole)) |
| 15649 | (home-page "https://jupyter.org") |
| 15650 | (synopsis "Web application for interactive documents") |
| 15651 | (description |
| 15652 | "The Jupyter Notebook is a web application that allows you to create and |
| 15653 | share documents that contain live code, equations, visualizations and |
| 15654 | explanatory text. Uses include: data cleaning and transformation, numerical |
| 15655 | simulation, statistical modeling, machine learning and much more.") |
| 15656 | (license license:bsd-3))) |
| 15657 | |
| 15658 | (define-public python-chardet |
| 15659 | (package |
| 15660 | (name "python-chardet") |
| 15661 | (version "5.1.0") |
| 15662 | (source |
| 15663 | (origin |
| 15664 | (method url-fetch) |
| 15665 | (uri (pypi-uri "chardet" version)) |
| 15666 | (sha256 |
| 15667 | (base32 |
| 15668 | "1r9ixxnish9j3dq4h0z0cwlkr4f5lgi6d8mhbzw59hbbjlmp2qhd")))) |
| 15669 | (native-inputs |
| 15670 | (list python-pytest)) |
| 15671 | (build-system pyproject-build-system) |
| 15672 | (arguments |
| 15673 | (list #:test-flags |
| 15674 | ;; Disable test that fails sporadically: |
| 15675 | ;; https://github.com/chardet/chardet/issues/256 |
| 15676 | #~'("-k" "not test_detect_all_and_detect_one_should_agree") |
| 15677 | #:phases |
| 15678 | #~(modify-phases %standard-phases |
| 15679 | ;; This package provides a 'chardetect' executable that only |
| 15680 | ;; depends on Python, so customize the wrap phase to avoid |
| 15681 | ;; adding pytest and friends in order to save size. |
| 15682 | ;; (See also <https://bugs.gnu.org/25235>.) |
| 15683 | (replace 'wrap |
| 15684 | (lambda* (#:key inputs outputs #:allow-other-keys) |
| 15685 | (let* ((sitedir (site-packages inputs outputs)) |
| 15686 | (python (dirname (dirname |
| 15687 | (search-input-file |
| 15688 | inputs "bin/python")))) |
| 15689 | (python-sitedir |
| 15690 | (string-append python "/lib/python" |
| 15691 | (python-version python) |
| 15692 | "/site-packages"))) |
| 15693 | (wrap-program (string-append #$output "/bin/chardetect") |
| 15694 | `("GUIX_PYTHONPATH" ":" suffix |
| 15695 | ,(list sitedir python-sitedir))))))))) |
| 15696 | (home-page "https://github.com/chardet/chardet") |
| 15697 | (synopsis "Universal encoding detector for Python 2 and 3") |
| 15698 | (description |
| 15699 | "This package provides @code{chardet}, a Python module that can |
| 15700 | automatically detect a wide range of file encodings.") |
| 15701 | (license license:lgpl2.1+))) |
| 15702 | |
| 15703 | (define-public python-charset-normalizer |
| 15704 | (package |
| 15705 | (name "python-charset-normalizer") |
| 15706 | (version "2.1.0") |
| 15707 | (source |
| 15708 | (origin |
| 15709 | (method url-fetch) |
| 15710 | (uri (pypi-uri "charset-normalizer" version)) |
| 15711 | (sha256 |
| 15712 | (base32 "04zlajr77f6c7ai59l46as1idi0jjgbvj72lh4v5wfpz2s070pjp")))) |
| 15713 | (build-system python-build-system) |
| 15714 | (arguments |
| 15715 | (list #:phases |
| 15716 | #~(modify-phases %standard-phases |
| 15717 | ;; This package provides a 'normalizer' executable that only |
| 15718 | ;; depends on Python, so customize the wrap phase to avoid |
| 15719 | ;; adding pytest and friends in order to save size. |
| 15720 | ;; (See also <https://bugs.gnu.org/25235>.) |
| 15721 | (replace 'wrap |
| 15722 | (lambda* (#:key inputs outputs #:allow-other-keys) |
| 15723 | (let* ((sitedir (site-packages inputs outputs)) |
| 15724 | (python (dirname (dirname |
| 15725 | (search-input-file |
| 15726 | inputs "bin/python")))) |
| 15727 | (python-sitedir |
| 15728 | (string-append python "/lib/python" |
| 15729 | (python-version python) |
| 15730 | "/site-packages"))) |
| 15731 | (wrap-program (string-append #$output "/bin/normalizer") |
| 15732 | `("GUIX_PYTHONPATH" ":" suffix |
| 15733 | ,(list sitedir python-sitedir))))))))) |
| 15734 | (native-inputs |
| 15735 | (list python-pytest)) |
| 15736 | (home-page "https://github.com/ousret/charset_normalizer") |
| 15737 | (synopsis "Universal Charset Detector, alternative to Chardet") |
| 15738 | (description "This library helps you read text from an unknown charset |
| 15739 | encoding. Motivated by @code{chardet}, it tries to resolve the issue by |
| 15740 | taking a new approach. All IANA character set names for which the Python core |
| 15741 | library provides codecs are supported.") |
| 15742 | (license license:expat))) |
| 15743 | |
| 15744 | (define-public python-docopt |
| 15745 | (package |
| 15746 | (name "python-docopt") |
| 15747 | (version "0.6.2") |
| 15748 | (source |
| 15749 | (origin |
| 15750 | (method git-fetch) |
| 15751 | ;; The release on PyPI does not include tests. |
| 15752 | (uri (git-reference |
| 15753 | (url "https://github.com/docopt/docopt") |
| 15754 | (commit version))) |
| 15755 | (file-name (git-file-name name version)) |
| 15756 | (sha256 |
| 15757 | (base32 |
| 15758 | "0aad9gbswnnhssin2q0m5lmpm0ahyf80ahs2zjigbn5y7fvljnd0")) |
| 15759 | (patches (search-patches "python-docopt-pytest6-compat.patch")))) |
| 15760 | (build-system python-build-system) |
| 15761 | (native-inputs |
| 15762 | (list python-pytest)) |
| 15763 | (arguments |
| 15764 | `(#:phases |
| 15765 | (modify-phases %standard-phases |
| 15766 | (replace 'check |
| 15767 | (lambda* (#:key tests? #:allow-other-keys) |
| 15768 | (when tests? |
| 15769 | (invoke "py.test"))))))) |
| 15770 | (home-page "http://docopt.org") |
| 15771 | (synopsis "Command-line interface description language for Python") |
| 15772 | (description "This library allows the user to define a command-line |
| 15773 | interface from a program's help message rather than specifying it |
| 15774 | programmatically with command-line parsers like @code{getopt} and |
| 15775 | @code{argparse}.") |
| 15776 | (license license:expat))) |
| 15777 | |
| 15778 | (define-public python-pythonanywhere |
| 15779 | (package |
| 15780 | (name "python-pythonanywhere") |
| 15781 | (version "0.9.10") |
| 15782 | (source |
| 15783 | (origin |
| 15784 | (method git-fetch) |
| 15785 | (uri (git-reference |
| 15786 | (url "https://github.com/pythonanywhere/helper_scripts") |
| 15787 | (commit (string-append "v" version)))) |
| 15788 | (file-name (git-file-name name version)) |
| 15789 | (sha256 |
| 15790 | (base32 |
| 15791 | "0vzzc1g8pl7cb9yvm3n1j5zlzxf0jd423rzspc2kvpb8yhvydklx")))) |
| 15792 | (build-system python-build-system) |
| 15793 | (arguments |
| 15794 | `(#:phases |
| 15795 | (modify-phases %standard-phases |
| 15796 | (add-before 'check 'change-home |
| 15797 | (lambda _ |
| 15798 | (setenv "HOME" "/tmp"))) |
| 15799 | (replace 'check |
| 15800 | (lambda* (#:key tests? #:allow-other-keys) |
| 15801 | (when tests? |
| 15802 | ;; Exclude tests marked as slowtest that assume running |
| 15803 | ;; inside Git repository on system with virtualenvwrapper |
| 15804 | ;; installed. |
| 15805 | (invoke "pytest" "-m" "not slowtest"))))))) |
| 15806 | (native-inputs |
| 15807 | (list python-pytest |
| 15808 | python-psutil |
| 15809 | python-responses |
| 15810 | python-pytest-mock)) |
| 15811 | (propagated-inputs |
| 15812 | (list python-dateutil |
| 15813 | python-docopt |
| 15814 | python-packaging |
| 15815 | python-requests |
| 15816 | python-schema |
| 15817 | python-tabulate |
| 15818 | python-typer)) |
| 15819 | (home-page "https://github.com/pythonanywhere/helper_scripts/") |
| 15820 | (synopsis "PythonAnywhere helper tools for users") |
| 15821 | (description "PythonAnywhere provides a command-line interface and an |
| 15822 | application programming interface that allows managing Web apps and scheduled |
| 15823 | tasks. It includes single-command deployment for the Django Girls tutorial.") |
| 15824 | (license license:expat))) |
| 15825 | |
| 15826 | (define-public python-pythondialog |
| 15827 | (package |
| 15828 | (name "python-pythondialog") |
| 15829 | (version "3.4.0") |
| 15830 | (source (origin |
| 15831 | (method url-fetch) |
| 15832 | (uri (pypi-uri "pythondialog" version)) |
| 15833 | (sha256 |
| 15834 | (base32 |
| 15835 | "1728ghsran47jczn9bhlnkvk5bvqmmbihabgif5h705b84r1272c")))) |
| 15836 | (build-system python-build-system) |
| 15837 | (arguments |
| 15838 | `(#:phases (modify-phases %standard-phases |
| 15839 | (add-after 'unpack 'patch-path |
| 15840 | (lambda* (#:key inputs #:allow-other-keys) |
| 15841 | (let* ((dialog (assoc-ref inputs "dialog"))) |
| 15842 | (substitute* "dialog.py" |
| 15843 | (("os.getenv\\(\"PATH\", \":/bin:/usr/bin\"\\)") (string-append |
| 15844 | "os.getenv(\"PATH\") + \":" |
| 15845 | dialog |
| 15846 | "/bin\""))) |
| 15847 | #t)))) |
| 15848 | #:tests? #f)) |
| 15849 | (propagated-inputs (list dialog)) |
| 15850 | (home-page "https://pythondialog.sourceforge.net/") |
| 15851 | (synopsis "Python interface to the UNIX dialog utility") |
| 15852 | (description |
| 15853 | "A Python wrapper for the dialog utility. Its purpose is to |
| 15854 | provide an easy to use, pythonic and comprehensive Python interface to dialog. |
| 15855 | This allows one to make simple text-mode user interfaces on Unix-like systems") |
| 15856 | (license license:lgpl2.1))) |
| 15857 | |
| 15858 | (define-public python-confection |
| 15859 | (package |
| 15860 | (name "python-confection") |
| 15861 | (version "0.0.4") |
| 15862 | (source (origin |
| 15863 | (method url-fetch) |
| 15864 | (uri (pypi-uri "confection" version)) |
| 15865 | (sha256 |
| 15866 | (base32 |
| 15867 | "1ksfn10zhnpkcj3y0c3xs4dznvc062bk62x4c3ig0dd6bn4gbpdi")))) |
| 15868 | (build-system pyproject-build-system) |
| 15869 | (propagated-inputs (list python-pydantic python-srsly |
| 15870 | python-typing-extensions)) |
| 15871 | (native-inputs (list python-pytest)) |
| 15872 | (home-page "https://github.com/explosion/confection") |
| 15873 | (synopsis "Config system for Python") |
| 15874 | (description "Confection is a lightweight library that offers a |
| 15875 | configuration system letting you conveniently describe arbitrary trees of |
| 15876 | objects.") |
| 15877 | (license license:expat))) |
| 15878 | |
| 15879 | (define-public python-configobj |
| 15880 | (package |
| 15881 | (name "python-configobj") |
| 15882 | (version "5.0.6") |
| 15883 | (source (origin |
| 15884 | (method url-fetch) |
| 15885 | (uri (pypi-uri "configobj" version)) |
| 15886 | (sha256 |
| 15887 | (base32 |
| 15888 | "00h9rcmws03xvdlfni11yb60bz3kxfvsj6dg6nrpzj71f03nbxd2")) |
| 15889 | ;; Patch setup.py so it looks for python-setuptools, which is |
| 15890 | ;; required to parse the keyword 'install_requires' in setup.py. |
| 15891 | (patches (search-patches "python-configobj-setuptools.patch")))) |
| 15892 | (build-system python-build-system) |
| 15893 | (propagated-inputs |
| 15894 | (list python-six)) |
| 15895 | (synopsis "Config file reading, writing and validation") |
| 15896 | (description "ConfigObj is a simple but powerful config file reader and |
| 15897 | writer: an ini file round tripper. Its main feature is that it is very easy to |
| 15898 | use, with a straightforward programmer’s interface and a simple syntax for |
| 15899 | config files.") |
| 15900 | (home-page "https://github.com/DiffSK/configobj") |
| 15901 | (license license:bsd-3))) |
| 15902 | |
| 15903 | (define-public python-omegaconf |
| 15904 | (package |
| 15905 | (name "python-omegaconf") |
| 15906 | (version "2.2.3") |
| 15907 | (source (origin |
| 15908 | (method git-fetch) |
| 15909 | (uri (git-reference |
| 15910 | (url "https://github.com/omry/omegaconf") |
| 15911 | (commit (string-append "v" version)))) |
| 15912 | (file-name (git-file-name name version)) |
| 15913 | (modules '((guix build utils))) |
| 15914 | (snippet #~(begin |
| 15915 | (delete-file-recursively "build_helpers/bin") |
| 15916 | (substitute* "build_helpers/build_helpers.py" |
| 15917 | (("java") "antlr4") |
| 15918 | (("\"-jar\",") "") |
| 15919 | (("str\\(build_dir / \"bin\" / \"antlr.*\"\\),") "")))) |
| 15920 | (sha256 |
| 15921 | (base32 |
| 15922 | "00rw1rkjycn0jdg3jmar6jdxb1pcb21jclm5g1921s9z8f5ii5dh")))) |
| 15923 | (build-system pyproject-build-system) |
| 15924 | (arguments |
| 15925 | (list #:phases |
| 15926 | #~(modify-phases %standard-phases |
| 15927 | (add-after 'unpack 'loosen-requirements |
| 15928 | (lambda _ |
| 15929 | (substitute* "requirements/base.txt" |
| 15930 | (("antlr4-python3-runtime==") |
| 15931 | "antlr4-python3-runtime>="))))))) |
| 15932 | (propagated-inputs (list java-antlr4-runtime-python |
| 15933 | python-pydevd |
| 15934 | python-pyyaml)) |
| 15935 | (native-inputs (list icedtea antlr4 python-pytest python-pytest-mock)) |
| 15936 | (home-page "https://github.com/omry/omegaconf") |
| 15937 | (synopsis "Flexible configuration system") |
| 15938 | (description "OmegaConf is a hierarchical configuration system and |
| 15939 | supports merging configurations from multiple sources. It provides a |
| 15940 | consistent API regardless of how the configuration was created.") |
| 15941 | (license license:bsd-3))) |
| 15942 | |
| 15943 | (define-public python-configargparse |
| 15944 | (package |
| 15945 | (name "python-configargparse") |
| 15946 | (version "1.5.3") |
| 15947 | (source (origin |
| 15948 | (method url-fetch) |
| 15949 | (uri (pypi-uri "ConfigArgParse" version)) |
| 15950 | (sha256 |
| 15951 | (base32 |
| 15952 | "17vky4ihicbf7nggg30xs7h3g5rxzwgch8vilnnrvdaacszkq2qv")))) |
| 15953 | (build-system pyproject-build-system) |
| 15954 | (native-inputs |
| 15955 | (list python-mock python-pytest)) |
| 15956 | (synopsis "Replacement for argparse") |
| 15957 | (description "A drop-in replacement for argparse that allows options to also |
| 15958 | be set via config files and/or environment variables.") |
| 15959 | (home-page "https://github.com/bw2/ConfigArgParse") |
| 15960 | (license license:expat))) |
| 15961 | |
| 15962 | (define-public python-connection-pool |
| 15963 | (package |
| 15964 | (name "python-connection-pool") |
| 15965 | (version "0.0.3") |
| 15966 | (source |
| 15967 | (origin |
| 15968 | (method url-fetch) |
| 15969 | (uri (pypi-uri "connection_pool" version)) |
| 15970 | (sha256 |
| 15971 | (base32 "1p6hfkcl4n3hhhcgjbaxn21i7b1yipag6j7dnilir4k5xxx9whmz")))) |
| 15972 | (build-system python-build-system) |
| 15973 | (home-page "https://github.com/zhouyl/ConnectionPool") |
| 15974 | (synopsis "Thread-safe connection pool") |
| 15975 | (description "This package provides a library implementing a thread-safe |
| 15976 | connection pool.") |
| 15977 | (license license:expat))) |
| 15978 | |
| 15979 | (define-public python-argparse-manpage |
| 15980 | (package |
| 15981 | (name "python-argparse-manpage") |
| 15982 | (version "1.1") |
| 15983 | (source |
| 15984 | (origin |
| 15985 | (method url-fetch) |
| 15986 | (uri (pypi-uri "argparse-manpage" version)) |
| 15987 | (sha256 |
| 15988 | (base32 |
| 15989 | "0blh31zns68anina9lba5wh81d1414s97p60zw5l0d0shhh0wj5p")))) |
| 15990 | (build-system python-build-system) |
| 15991 | (home-page "https://github.com/praiskup/argparse-manpage") |
| 15992 | (synopsis "Build manual page from Python's ArgumentParser object") |
| 15993 | (description |
| 15994 | "This package provides tools to build manual pages from Python's |
| 15995 | @code{ArgumentParser} object.") |
| 15996 | (license license:asl2.0))) |
| 15997 | |
| 15998 | (define-public python-contextlib2 |
| 15999 | (package |
| 16000 | (name "python-contextlib2") |
| 16001 | (version "0.6.0.post1") |
| 16002 | (source |
| 16003 | (origin |
| 16004 | (method url-fetch) |
| 16005 | (uri (pypi-uri "contextlib2" version)) |
| 16006 | (sha256 |
| 16007 | (base32 |
| 16008 | "0bhnr2ac7wy5l85ji909gyljyk85n92w8pdvslmrvc8qih4r1x01")))) |
| 16009 | (build-system python-build-system) |
| 16010 | (home-page "https://contextlib2.readthedocs.org/") |
| 16011 | (synopsis "Tools for decorators and context managers") |
| 16012 | (description "This module is primarily a backport of the Python |
| 16013 | 3.2 contextlib to earlier Python versions. Like contextlib, it |
| 16014 | provides utilities for common tasks involving decorators and context |
| 16015 | managers. It also contains additional features that are not part of |
| 16016 | the standard library.") |
| 16017 | (license license:psfl))) |
| 16018 | |
| 16019 | (define-public python-texttable |
| 16020 | (package |
| 16021 | (name "python-texttable") |
| 16022 | (version "1.6.4") |
| 16023 | (source |
| 16024 | (origin |
| 16025 | (method url-fetch) |
| 16026 | (uri (pypi-uri "texttable" version)) |
| 16027 | (sha256 |
| 16028 | (base32 |
| 16029 | "1sbn821394rix6xgj3zqk743pj6nqm1qz81zgis2bcpp2ng7pvj2")))) |
| 16030 | (build-system python-build-system) |
| 16031 | (arguments |
| 16032 | `(#:phases |
| 16033 | (modify-phases %standard-phases |
| 16034 | (replace 'check |
| 16035 | (lambda* (#:key tests? #:allow-other-keys) |
| 16036 | (when tests? (invoke "pytest" "-vv" "tests.py"))))))) |
| 16037 | (native-inputs |
| 16038 | (list python-pytest)) |
| 16039 | (home-page "https://github.com/foutaise/texttable/") |
| 16040 | (synopsis "Python module for creating simple ASCII tables") |
| 16041 | (description "Texttable is a Python module for creating simple ASCII |
| 16042 | tables.") |
| 16043 | (license license:expat))) |
| 16044 | |
| 16045 | (define-public python-atomicwrites |
| 16046 | (package |
| 16047 | (name "python-atomicwrites") |
| 16048 | (version "1.4.0") |
| 16049 | (source (origin |
| 16050 | (method url-fetch) |
| 16051 | (uri (pypi-uri "atomicwrites" version)) |
| 16052 | (sha256 |
| 16053 | (base32 |
| 16054 | "0yla2svfhfqrcj8qbyqzx7wi4jy0dwcxvlkg0k3zjd54s5m3jw5f")))) |
| 16055 | (build-system python-build-system) |
| 16056 | (arguments `(#:tests? #f)) ;avoid circular dependency with pytest |
| 16057 | (synopsis "Atomic file writes in Python") |
| 16058 | (description "Library for atomic file writes using platform dependent tools |
| 16059 | for atomic file system operations.") |
| 16060 | (home-page "https://github.com/untitaker/python-atomicwrites") |
| 16061 | (license license:expat))) |
| 16062 | |
| 16063 | (define-public python-qstylizer |
| 16064 | (package |
| 16065 | (name "python-qstylizer") |
| 16066 | (version "0.1.10") |
| 16067 | (source |
| 16068 | (origin |
| 16069 | (method git-fetch) |
| 16070 | (uri (git-reference |
| 16071 | (url "https://github.com/blambright/qstylizer") |
| 16072 | (commit version))) |
| 16073 | (file-name (git-file-name name version)) |
| 16074 | (sha256 |
| 16075 | (base32 "0zvkn6g1dn51kkw33v8qrlnwlmf5h6sw1ay3bh14ifjr8b9xsjjz")))) |
| 16076 | (build-system python-build-system) |
| 16077 | (arguments |
| 16078 | `(#:test-target "pytest" |
| 16079 | #:phases |
| 16080 | (modify-phases %standard-phases |
| 16081 | (add-before 'build 'set-pbr-version |
| 16082 | (lambda _ |
| 16083 | (setenv "PBR_VERSION" "3.0.1")))))) |
| 16084 | (native-inputs |
| 16085 | (list python-pbr |
| 16086 | python-pytest |
| 16087 | python-pytest-catchlog |
| 16088 | python-pytest-cov |
| 16089 | python-pytest-mock |
| 16090 | python-pytest-runner |
| 16091 | python-pytest-xdist)) |
| 16092 | (propagated-inputs |
| 16093 | (list python-inflection python-tinycss)) |
| 16094 | (home-page "https://github.com/blambright/qstylizer") |
| 16095 | (synopsis "Qt stylesheet generation utility for PyQt/PySide") |
| 16096 | (description "@code{qstylizer} is a Python package designed to help with |
| 16097 | the construction of PyQt/PySide stylesheets.") |
| 16098 | (license license:expat))) |
| 16099 | |
| 16100 | (define-public python-click-threading |
| 16101 | (package |
| 16102 | (name "python-click-threading") |
| 16103 | (version "0.5.0") |
| 16104 | (source (origin |
| 16105 | (method url-fetch) |
| 16106 | (uri (pypi-uri "click-threading" version)) |
| 16107 | (sha256 |
| 16108 | (base32 |
| 16109 | "0f9lmxwcq0y9lb8w0whbni7gwy12gbv74h1igh85qn9aq0iydkxd")))) |
| 16110 | (build-system python-build-system) |
| 16111 | (propagated-inputs |
| 16112 | (list python-click)) |
| 16113 | (synopsis "Utilities for multithreading in Click") |
| 16114 | (description "This package provides utilities for multithreading in Click |
| 16115 | applications.") |
| 16116 | (home-page "https://github.com/click-contrib/click-threading") |
| 16117 | (license license:expat))) |
| 16118 | |
| 16119 | (define-public python-click-log |
| 16120 | (package |
| 16121 | (name "python-click-log") |
| 16122 | (version "0.3.2") |
| 16123 | (source (origin |
| 16124 | (method url-fetch) |
| 16125 | (uri (pypi-uri "click-log" version)) |
| 16126 | (sha256 |
| 16127 | (base32 |
| 16128 | "091i03bhxyzsdbc6kilxhivfda2f8ymz3b33xa6cj5kbzjiirz8n")))) |
| 16129 | (build-system python-build-system) |
| 16130 | (propagated-inputs |
| 16131 | (list python-click)) |
| 16132 | (synopsis "Logging for click applications") |
| 16133 | (description "This package provides a Python library for logging Click |
| 16134 | applications.") |
| 16135 | (home-page "https://github.com/click-contrib/click-log") |
| 16136 | (license license:expat))) |
| 16137 | |
| 16138 | (define-public python-click-default-group |
| 16139 | (package |
| 16140 | (name "python-click-default-group") |
| 16141 | (version "1.2.2") |
| 16142 | (source (origin |
| 16143 | (method url-fetch) |
| 16144 | (uri (pypi-uri "click-default-group" version)) |
| 16145 | (sha256 |
| 16146 | (base32 |
| 16147 | "015r78jk8gznfw0dphpwaqcx5mhg5822b55w5xbb6i7sin70wmnr")))) |
| 16148 | (build-system python-build-system) |
| 16149 | (arguments |
| 16150 | `(#:tests? #f)) ; no target |
| 16151 | (propagated-inputs |
| 16152 | (list python-click)) |
| 16153 | (synopsis "Extends click.Group") |
| 16154 | (description "This package extends click.Group to invoke a command without |
| 16155 | explicit subcommand name.") |
| 16156 | (home-page "https://github.com/click-contrib/click-default-group") |
| 16157 | (license license:bsd-3))) |
| 16158 | |
| 16159 | (define-public python-structlog |
| 16160 | (package |
| 16161 | (name "python-structlog") |
| 16162 | (version "23.1.0") |
| 16163 | (source |
| 16164 | (origin |
| 16165 | (method url-fetch) |
| 16166 | (uri (pypi-uri "structlog" version)) |
| 16167 | (sha256 |
| 16168 | (base32 |
| 16169 | "0swh5wxghpzdkncsl3zhiq5bblkj4i5r3g00lldw2qyiswfnh397")))) |
| 16170 | (build-system pyproject-build-system) |
| 16171 | (native-inputs |
| 16172 | (list ;; For the build |
| 16173 | python-hatch-fancy-pypi-readme |
| 16174 | python-hatch-vcs |
| 16175 | python-hatchling |
| 16176 | ;; For the tests |
| 16177 | python-coverage |
| 16178 | python-freezegun |
| 16179 | python-pretend |
| 16180 | python-pytest |
| 16181 | python-pytest-asyncio |
| 16182 | python-simplejson |
| 16183 | python-twisted)) |
| 16184 | (home-page "https://www.structlog.org/") |
| 16185 | (synopsis "Structured Logging for Python") |
| 16186 | (description "@code{structlog} changes logging in Python by adding structure |
| 16187 | to your log entries.") |
| 16188 | (license (list license:asl2.0 license:expat)))) |
| 16189 | |
| 16190 | (define-public python-apipkg |
| 16191 | (package |
| 16192 | (name "python-apipkg") |
| 16193 | (version "1.5") |
| 16194 | (source (origin |
| 16195 | (method url-fetch) |
| 16196 | (uri (pypi-uri "apipkg" version)) |
| 16197 | (sha256 |
| 16198 | (base32 |
| 16199 | "1xhak74yj3lqflvpijg15rnkklrigvsp5q7s4as4h6a157d8q8ip")))) |
| 16200 | (build-system python-build-system) |
| 16201 | (native-inputs |
| 16202 | (list python-pytest python-setuptools-scm)) |
| 16203 | (synopsis "Namespace control and lazy-import mechanism") |
| 16204 | (description "With apipkg you can control the exported namespace of a Python |
| 16205 | package and greatly reduce the number of imports for your users. It is a small |
| 16206 | pure Python module that works on virtually all Python versions.") |
| 16207 | (home-page "https://github.com/pytest-dev/apipkg") |
| 16208 | (license license:expat))) |
| 16209 | |
| 16210 | (define-public python-execnet |
| 16211 | ;; The latest release (1.9.0) is old and lacks support for Pytest 7.2. |
| 16212 | (let ((commit "d6aa1a56773c2e887515d63e50b1d08338cb78a7") |
| 16213 | (revision "1")) |
| 16214 | (package |
| 16215 | (name "python-execnet") |
| 16216 | (version (git-version "1.9.0" revision commit)) |
| 16217 | (source (origin |
| 16218 | (method git-fetch) |
| 16219 | (uri (git-reference |
| 16220 | (url "https://github.com/pytest-dev/execnet") |
| 16221 | (commit commit))) |
| 16222 | (file-name (git-file-name name version)) |
| 16223 | (sha256 |
| 16224 | (base32 |
| 16225 | "0s60jggcjiw38b7xsh1q2lnnr4c4kaki7c5zsv7xyj7df8ngbbsm")))) |
| 16226 | (build-system pyproject-build-system) |
| 16227 | (arguments |
| 16228 | (list |
| 16229 | ;; ;; This test hasn't been updated for the latest Pytest yet: |
| 16230 | ;; #:test-flags #~(list "--ignore" "testing/test_rsync.py") |
| 16231 | #:phases |
| 16232 | #~(modify-phases %standard-phases |
| 16233 | (add-after 'unpack 'adjust-for-pytest-7.2+ |
| 16234 | (lambda _ |
| 16235 | ;; This test fails with an error because @py.test has been |
| 16236 | ;; deprecated for @pytest in recent Pytest. |
| 16237 | (substitute* "testing/test_rsync.py" |
| 16238 | (("@py.test") |
| 16239 | "@pytest")))) |
| 16240 | (add-before 'build 'pretend-version |
| 16241 | ;; The version string is usually derived via setuptools-scm, but |
| 16242 | ;; without the git metadata available this fails. |
| 16243 | (lambda _ |
| 16244 | ;; hatch-vcs uses setuptools under the hood. |
| 16245 | (setenv "SETUPTOOLS_SCM_PRETEND_VERSION" |
| 16246 | ;; Massage the version string to a PEP-0440 compatible |
| 16247 | ;; one. |
| 16248 | #$(car (string-split version #\-))))) |
| 16249 | (add-before 'check 'prepare-for-tests |
| 16250 | (lambda _ |
| 16251 | ;; Unset PYTHONDONTWRITEBYTECODE to match the |
| 16252 | ;; expectations of a test in |
| 16253 | ;; 'testing/test_gateway.py'. |
| 16254 | (unsetenv "PYTHONDONTWRITEBYTECODE")))))) |
| 16255 | (native-inputs |
| 16256 | (list python-hatchling |
| 16257 | python-hatch-vcs |
| 16258 | python-py |
| 16259 | python-pytest |
| 16260 | python-pytest-timeout |
| 16261 | python-setuptools-scm)) |
| 16262 | (synopsis "Rapid multi-Python deployment") |
| 16263 | (description "Execnet provides a share-nothing model with |
| 16264 | channel-send/receive communication for distributing execution across many |
| 16265 | Python interpreters across version, platform and network barriers. It has a |
| 16266 | minimal and fast API targeting the following uses: |
| 16267 | @enumerate |
| 16268 | @item distribute tasks to (many) local or remote CPUs |
| 16269 | @item write and deploy hybrid multi-process applications |
| 16270 | @item write scripts to administer multiple environments |
| 16271 | @end enumerate") |
| 16272 | (home-page "https://codespeak.net/execnet/") |
| 16273 | (license license:expat)))) |
| 16274 | |
| 16275 | (define-public python-icalendar |
| 16276 | (package |
| 16277 | (name "python-icalendar") |
| 16278 | (version "4.1.0") |
| 16279 | (source (origin |
| 16280 | (method url-fetch) |
| 16281 | (uri (pypi-uri "icalendar" version)) |
| 16282 | (sha256 |
| 16283 | (base32 |
| 16284 | "15dkq42rkqjdi17rpvmd1plnbwn4daby0nk1s1c3xi7w5v0bfj4p")))) |
| 16285 | (build-system python-build-system) |
| 16286 | (propagated-inputs |
| 16287 | (list python-dateutil python-pytz)) |
| 16288 | (synopsis "Python library for parsing iCalendar files") |
| 16289 | (description "The icalendar package is a parser/generator of iCalendar |
| 16290 | files for use with Python.") |
| 16291 | (home-page "https://github.com/collective/icalendar") |
| 16292 | (license license:bsd-2))) |
| 16293 | |
| 16294 | (define-public python-args |
| 16295 | (let ((commit "9460f1a35eb3055e9e4de1f0a6932e0883c72d65") (revision "0")) |
| 16296 | (package |
| 16297 | (name "python-args") |
| 16298 | (version (git-version "0.1.0" revision commit)) |
| 16299 | (home-page "https://github.com/kennethreitz-archive/args") |
| 16300 | (source (origin |
| 16301 | (method git-fetch) |
| 16302 | (uri (git-reference |
| 16303 | (url home-page) |
| 16304 | (commit commit))) |
| 16305 | (file-name (git-file-name name version)) |
| 16306 | (sha256 |
| 16307 | (base32 |
| 16308 | "1zfxpbp9vldqdrjmd0c6y3wisl35mx5v8zlyp3nhwpy1730wrc9j")))) |
| 16309 | (build-system python-build-system) |
| 16310 | (arguments |
| 16311 | `(#:phases (modify-phases %standard-phases |
| 16312 | (add-after 'unpack 'patch-args.py |
| 16313 | (lambda _ |
| 16314 | (substitute* "args.py" |
| 16315 | (("basestring") "str")))) |
| 16316 | (replace 'check |
| 16317 | (lambda* (#:key tests? #:allow-other-keys) |
| 16318 | (when tests? |
| 16319 | (invoke "nosetests" "-v"))))))) |
| 16320 | (native-inputs (list python-nose)) |
| 16321 | (synopsis "Command-line argument parser") |
| 16322 | (description |
| 16323 | "This library provides a Python module to parse command-line arguments.") |
| 16324 | (license license:bsd-3)))) |
| 16325 | |
| 16326 | (define-public python-clint |
| 16327 | (package |
| 16328 | (name "python-clint") |
| 16329 | (version "0.5.1") |
| 16330 | (source (origin |
| 16331 | (method url-fetch) |
| 16332 | (uri (pypi-uri "clint" version)) |
| 16333 | (sha256 |
| 16334 | (base32 |
| 16335 | "1an5lkkqk1zha47198p42ji3m94xmzx1a03dn7866m87n4r4q8h5")))) |
| 16336 | (build-system python-build-system) |
| 16337 | (arguments |
| 16338 | '(#:phases |
| 16339 | (modify-phases %standard-phases |
| 16340 | (replace 'check |
| 16341 | (lambda _ (invoke "py.test" "-v")))))) |
| 16342 | (native-inputs |
| 16343 | (list python-pytest)) |
| 16344 | (propagated-inputs |
| 16345 | (list python-args)) |
| 16346 | (home-page "https://github.com/kennethreitz/clint") |
| 16347 | (synopsis "Command-line interface tools") |
| 16348 | (description |
| 16349 | "Clint is a Python module filled with a set of tools for developing |
| 16350 | command-line applications, including tools for colored and indented |
| 16351 | output, progress bar display, and pipes.") |
| 16352 | (license license:isc))) |
| 16353 | |
| 16354 | (define-public python-rply |
| 16355 | (package |
| 16356 | (name "python-rply") |
| 16357 | (version "0.7.8") |
| 16358 | (source (origin |
| 16359 | (method url-fetch) |
| 16360 | (uri (pypi-uri "rply" version)) |
| 16361 | (sha256 |
| 16362 | (base32 |
| 16363 | "1j81nddvnb145x4p81bnfpyai6g26i2dc1633ycsk025bb18m01a")))) |
| 16364 | (build-system python-build-system) |
| 16365 | (propagated-inputs |
| 16366 | (list python-appdirs)) |
| 16367 | (home-page "https://github.com/alex/rply") |
| 16368 | (synopsis "Parser generator for Python") |
| 16369 | (description |
| 16370 | "This package provides a pure Python based parser generator, that also |
| 16371 | works with RPython. It is a more-or-less direct port of David Bazzley's PLY, |
| 16372 | with a new public API, and RPython support.") |
| 16373 | (license license:bsd-3))) |
| 16374 | |
| 16375 | (define-public python-hy |
| 16376 | (package |
| 16377 | (name "python-hy") |
| 16378 | (version "0.26.0") |
| 16379 | (source |
| 16380 | (origin |
| 16381 | (method git-fetch) ; no tests in PyPI release |
| 16382 | (uri (git-reference |
| 16383 | (url "https://github.com/hylang/hy") |
| 16384 | (commit version))) |
| 16385 | (file-name (git-file-name name version)) |
| 16386 | (sha256 |
| 16387 | (base32 "1czhh7s81sg0nrnf4zv0ydqi4f7s6sywf4ks4fd59vpx441ca39v")))) |
| 16388 | (build-system python-build-system) |
| 16389 | (arguments |
| 16390 | (list |
| 16391 | #:phases |
| 16392 | #~(modify-phases %standard-phases |
| 16393 | ;; Hy includes a script that writes a version.py file that Hy uses to |
| 16394 | ;; report its version. That script uses information from the git |
| 16395 | ;; repository or the HY_VERSION environment variable. Therefore, |
| 16396 | ;; these phases set HY_VERSION and then remove the support scripts |
| 16397 | ;; which get installed in the root of the output. |
| 16398 | (add-after 'unpack 'set-version |
| 16399 | (lambda _ |
| 16400 | (setenv "HY_VERSION" #$version))) |
| 16401 | (add-after 'install 'remove-installed-build-scripts |
| 16402 | (lambda _ |
| 16403 | (delete-file-recursively (string-append #$output "/get_version")))) |
| 16404 | (replace 'check |
| 16405 | (lambda* (#:key tests? #:allow-other-keys) |
| 16406 | (when tests? |
| 16407 | (invoke "python" "-m" "pytest" "-k" |
| 16408 | (string-append ; skip some failed tests |
| 16409 | "not test_sys_executable" |
| 16410 | " and not test_circular_macro_require" |
| 16411 | " and not test_macro_require" |
| 16412 | " and not test_requires_pollutes_core")))))))) |
| 16413 | (native-inputs |
| 16414 | (list python-pytest python-wheel)) |
| 16415 | (propagated-inputs |
| 16416 | (list python-funcparserlib)) |
| 16417 | (home-page "https://docs.hylang.org/en/stable/") |
| 16418 | (synopsis "Lisp frontend to Python") |
| 16419 | (description |
| 16420 | "Hy is a dialect of Lisp that's embedded in Python. Since Hy transforms |
| 16421 | its Lisp code into the Python Abstract Syntax Tree, you have the whole world of |
| 16422 | Python at your fingertips, in Lisp form.") |
| 16423 | (license license:expat))) |
| 16424 | |
| 16425 | (define-public python-hissp |
| 16426 | (package |
| 16427 | (name "python-hissp") |
| 16428 | (version "0.2.0") |
| 16429 | (source |
| 16430 | (origin |
| 16431 | (method url-fetch) |
| 16432 | (uri (pypi-uri "hissp" version)) |
| 16433 | (sha256 |
| 16434 | (base32 |
| 16435 | "0yns7f0q699zn2ziagyas2nkndl7mp1hhssv9x9mpl7jxj2p5myw")))) |
| 16436 | (build-system python-build-system) |
| 16437 | (home-page "https://github.com/gilch/hissp") |
| 16438 | (synopsis "It's Python with a Lissp") |
| 16439 | (description "Hissp is a modular Lisp implementation that compiles to a |
| 16440 | functional subset of Python—Syntactic macro metaprogramming with full access |
| 16441 | to the Python ecosystem.") |
| 16442 | (license license:asl2.0))) |
| 16443 | |
| 16444 | (define-public python-promise |
| 16445 | (package |
| 16446 | (name "python-promise") |
| 16447 | (version "0.4.2") |
| 16448 | (source |
| 16449 | (origin |
| 16450 | (method url-fetch) |
| 16451 | (uri (pypi-uri "promise" version)) |
| 16452 | (sha256 |
| 16453 | (base32 |
| 16454 | "1k19ms8l3d5jzjh557rgkxb5sg4mqgfc315rn4hx1z3n8qq6lr3h")))) |
| 16455 | (build-system python-build-system) |
| 16456 | ;; Tests wants python-futures, which is a python2 only program, and |
| 16457 | ;; can't be found by python-promise at test time. |
| 16458 | (arguments `(#:tests? #f)) |
| 16459 | (home-page "https://github.com/syrusakbary/promise") |
| 16460 | (synopsis "Promises/A+ implementation for Python") |
| 16461 | (description |
| 16462 | "Promises/A+ implementation for Python") |
| 16463 | (license license:expat))) |
| 16464 | |
| 16465 | (define-public python-progress |
| 16466 | (package |
| 16467 | (name "python-progress") |
| 16468 | (version "1.6") |
| 16469 | (source |
| 16470 | (origin |
| 16471 | (method url-fetch) |
| 16472 | (uri (pypi-uri "progress" version)) |
| 16473 | (sha256 |
| 16474 | (base32 "1k9lpb7lqr6mywpnqcz71y6qny54xlgprdp327za2gy0nnc6xj69")))) |
| 16475 | (build-system python-build-system) |
| 16476 | (home-page "http://github.com/verigak/progress/") |
| 16477 | (synopsis "Progress reporting bars for Python") |
| 16478 | (description "This Python package provides progress reporting for visual |
| 16479 | of progress of long running operations. There are multiple choices of |
| 16480 | progress bars and spinners, with customizable options, such as width, fill |
| 16481 | character, and suffix.") |
| 16482 | (license license:isc))) |
| 16483 | |
| 16484 | (define-public python-progressbar2 |
| 16485 | (package |
| 16486 | (name "python-progressbar2") |
| 16487 | (version "3.51.3") |
| 16488 | (source |
| 16489 | (origin |
| 16490 | (method url-fetch) |
| 16491 | (uri (pypi-uri "progressbar2" version)) |
| 16492 | (sha256 |
| 16493 | (base32 |
| 16494 | "0b2v3mim90rmfvixkaniz2qrs650sk230rzgd5zhcjfldmlqgxpc")))) |
| 16495 | (build-system python-build-system) |
| 16496 | (propagated-inputs |
| 16497 | (list python-six python-utils)) |
| 16498 | (native-inputs |
| 16499 | (list python-flake8 |
| 16500 | python-freezegun |
| 16501 | python-pycodestyle |
| 16502 | python-pytest |
| 16503 | python-pytest-cache |
| 16504 | python-pytest-cov |
| 16505 | python-pytest-flakes |
| 16506 | python-pytest-pep8 |
| 16507 | python-sphinx)) |
| 16508 | (home-page "https://github.com/WoLpH/python-progressbar") |
| 16509 | (synopsis "Text progress bar library for Python") |
| 16510 | (description |
| 16511 | "This package provides a Python progressbar library to provide |
| 16512 | visual (yet text based) progress to long running operations.") |
| 16513 | (license license:bsd-3))) |
| 16514 | |
| 16515 | (define-public python-progressbar33 |
| 16516 | (package |
| 16517 | (name "python-progressbar33") |
| 16518 | (version "2.4") |
| 16519 | (source |
| 16520 | (origin |
| 16521 | (method url-fetch) |
| 16522 | (uri (pypi-uri "progressbar33" version)) |
| 16523 | (sha256 |
| 16524 | (base32 |
| 16525 | "1zvf6zs5hzrc03p9nfs4p16vhilqikycvv1yk0pxn8s07fdhvzji")))) |
| 16526 | (build-system python-build-system) |
| 16527 | (home-page "https://github.com/germangh/python-progressbar") |
| 16528 | (synopsis "Text progress bar library for Python") |
| 16529 | (description |
| 16530 | "This package provides a text progress bar library for Python. This |
| 16531 | version only differs from the original @code{progressbar} package in that it |
| 16532 | uses relative package imports instead of absolute imports, which is necessary |
| 16533 | for the module to work under Python 3.3.") |
| 16534 | ;; Either or both of these licenses may be selected. |
| 16535 | (license (list license:lgpl2.1+ license:bsd-3)))) |
| 16536 | |
| 16537 | (define-public python-colorama |
| 16538 | (package |
| 16539 | (name "python-colorama") |
| 16540 | (version "0.4.4") |
| 16541 | (source |
| 16542 | (origin |
| 16543 | (method url-fetch) |
| 16544 | (uri (pypi-uri "colorama" version)) |
| 16545 | (sha256 |
| 16546 | (base32 "16w62sm95hmh55rqxn4zwdz0bkh3fqm1qnz9cwi3s510iasb4har")))) |
| 16547 | (build-system python-build-system) |
| 16548 | (synopsis "Colored terminal text rendering for Python") |
| 16549 | (description "Colorama is a Python library for rendering colored terminal |
| 16550 | text.") |
| 16551 | (home-page "https://pypi.org/project/colorama/") |
| 16552 | (license license:bsd-3))) |
| 16553 | |
| 16554 | ;; awscli and botocore do not accept version 0.4.4 |
| 16555 | (define-public python-colorama-for-awscli |
| 16556 | (package |
| 16557 | (inherit python-colorama) |
| 16558 | (version "0.4.3") |
| 16559 | (source |
| 16560 | (origin |
| 16561 | (method url-fetch) |
| 16562 | (uri (pypi-uri "colorama" version)) |
| 16563 | (sha256 |
| 16564 | (base32 "189n8hpijy14jfan4ha9f5n06mnl33cxz7ay92wjqgkr639s0vg9")))))) |
| 16565 | |
| 16566 | (define-public python-moto |
| 16567 | (package |
| 16568 | (name "python-moto") |
| 16569 | (version "3.1.4") |
| 16570 | (source (origin |
| 16571 | (method url-fetch) |
| 16572 | (uri (pypi-uri "moto" version)) |
| 16573 | (sha256 |
| 16574 | (base32 "0dfnad1f9d5ybabs69dzc7x357z1r4jbhrhgw57gyic1qnmcw864")))) |
| 16575 | (build-system python-build-system) |
| 16576 | (arguments |
| 16577 | `(#:phases |
| 16578 | (modify-phases %standard-phases |
| 16579 | (add-after 'unpack 'patch-hardcoded-executable-names |
| 16580 | (lambda* (#:key inputs #:allow-other-keys) |
| 16581 | (let ((bash-exec (search-input-file inputs "/bin/sh"))) |
| 16582 | (substitute* "moto/batch/models.py" |
| 16583 | (("/bin/sh") bash-exec)) |
| 16584 | (substitute* (find-files "tests" "\\.py$") |
| 16585 | (("#!/bin/bash") (string-append "#!" bash-exec)))))) |
| 16586 | (replace 'check |
| 16587 | (lambda* (#:key tests? #:allow-other-keys) |
| 16588 | (when tests? |
| 16589 | (invoke "pytest" "-vv" "-m" "not network" "-k" |
| 16590 | (string-append |
| 16591 | ;; XXX: This test is timing sensitive and may |
| 16592 | ;; fail non-deterministically. |
| 16593 | "not test_cancel_pending_job" |
| 16594 | ;; These tests require Docker. |
| 16595 | " and not test_terminate_job" |
| 16596 | " and not test_invoke_function_from_sqs_exception" |
| 16597 | " and not test_create_custom_lambda_resource__verify_cfnresponse_failed" |
| 16598 | " and not test_lambda_function" |
| 16599 | |
| 16600 | ;; These tests also require the network. |
| 16601 | " and not test_put_record_batch_http_destination" |
| 16602 | " and not test_put_record_http_destination" |
| 16603 | " and not test_dependencies" |
| 16604 | " and not test_cancel_running_job" |
| 16605 | " and not test_container_overrides")))))))) |
| 16606 | (native-inputs |
| 16607 | (list python-flask |
| 16608 | python-flask-cors |
| 16609 | python-freezegun |
| 16610 | python-graphql-core |
| 16611 | python-pytest |
| 16612 | python-sure)) |
| 16613 | (inputs |
| 16614 | (list bash-minimal)) |
| 16615 | (propagated-inputs |
| 16616 | (list python-aws-xray-sdk |
| 16617 | python-boto3 |
| 16618 | python-botocore |
| 16619 | python-cfn-lint |
| 16620 | python-cryptography |
| 16621 | python-dateutil |
| 16622 | python-docker |
| 16623 | python-importlib-metadata |
| 16624 | python-jinja2 |
| 16625 | python-jose |
| 16626 | python-jsondiff |
| 16627 | python-markupsafe |
| 16628 | python-pytz |
| 16629 | python-pyyaml |
| 16630 | python-requests |
| 16631 | python-responses |
| 16632 | python-sshpubkeys |
| 16633 | python-werkzeug |
| 16634 | python-xmltodict)) |
| 16635 | (home-page "https://github.com/spulec/moto") |
| 16636 | (synopsis "Mock out the boto library") |
| 16637 | (description |
| 16638 | "@code{moto} is a library designed to easily mock out the |
| 16639 | @code{boto} library.") |
| 16640 | (license license:asl2.0))) |
| 16641 | |
| 16642 | (define-public python-rsa |
| 16643 | (package |
| 16644 | (name "python-rsa") |
| 16645 | (version "3.4.2") |
| 16646 | (source |
| 16647 | (origin |
| 16648 | (method url-fetch) |
| 16649 | (uri (pypi-uri "rsa" version)) |
| 16650 | (sha256 |
| 16651 | (base32 |
| 16652 | "1dcxvszbikgzh99ybdc7jq0zb9wspy2ds8z9mjsqiyv3q884xpr5")))) |
| 16653 | (build-system python-build-system) |
| 16654 | (propagated-inputs |
| 16655 | (list python-pyasn1)) |
| 16656 | (synopsis "Pure-Python RSA implementation") |
| 16657 | (description "Python-RSA is a pure-Python RSA implementation. It supports |
| 16658 | encryption and decryption, signing and verifying signatures, and key |
| 16659 | generation according to PKCS#1 version 1.5. It can be used as a Python |
| 16660 | library as well as on the command line.") |
| 16661 | (home-page "https://stuvel.eu/rsa") |
| 16662 | (license license:asl2.0))) |
| 16663 | |
| 16664 | (define-public python-plumbum |
| 16665 | (package |
| 16666 | (name "python-plumbum") |
| 16667 | (version "1.7.0") |
| 16668 | (source |
| 16669 | (origin |
| 16670 | (method url-fetch) |
| 16671 | (uri (pypi-uri "plumbum" version)) |
| 16672 | (sha256 |
| 16673 | (base32 "1kidj821k79dw064rlxh84xamb9h79ychg3pgj81jlvm5hs48xri")))) |
| 16674 | (build-system python-build-system) |
| 16675 | (arguments |
| 16676 | `(#:tests? #f)) ;no tests |
| 16677 | (native-inputs |
| 16678 | ;; XXX: Not actually used since there are no tests but required for |
| 16679 | ;; build. |
| 16680 | (list python-pytest)) |
| 16681 | (home-page "https://plumbum.readthedocs.io") |
| 16682 | (synopsis "Python shell combinators library") |
| 16683 | (description |
| 16684 | "Plumbum is a library of tools for replacing shell scripts with Python |
| 16685 | code.") |
| 16686 | (license license:expat))) |
| 16687 | |
| 16688 | (define-public python-deprecation |
| 16689 | (package |
| 16690 | (name "python-deprecation") |
| 16691 | (version "2.1.0") |
| 16692 | (source |
| 16693 | (origin |
| 16694 | (method url-fetch) |
| 16695 | (uri (pypi-uri "deprecation" version)) |
| 16696 | (sha256 |
| 16697 | (base32 |
| 16698 | "1zqqjlgmhgkpzg9ss5ki8wamxl83xn51fs6gn2a8cxsx9vkbvcvj")))) |
| 16699 | (build-system python-build-system) |
| 16700 | (propagated-inputs |
| 16701 | (list python-packaging)) |
| 16702 | (native-inputs |
| 16703 | (list python-unittest2)) |
| 16704 | (home-page "https://deprecation.readthedocs.io/") |
| 16705 | (synopsis "Python library to handle automated deprecations") |
| 16706 | (description |
| 16707 | "This is a library that enables automated deprecations. It offers the |
| 16708 | @code{deprecated()} decorator to wrap functions, providing proper warnings |
| 16709 | both in documentation and via Python’s warnings system, as well as the |
| 16710 | @code{deprecation.fail_if_not_removed()} decorator for test methods to ensure |
| 16711 | that deprecated code is eventually removed.") |
| 16712 | (license license:asl2.0))) |
| 16713 | |
| 16714 | (define-public python-jmespath |
| 16715 | (package |
| 16716 | (name "python-jmespath") |
| 16717 | (version "1.0.0") |
| 16718 | (source |
| 16719 | (origin |
| 16720 | (method url-fetch) |
| 16721 | (uri (pypi-uri "jmespath" version)) |
| 16722 | (sha256 |
| 16723 | (base32 |
| 16724 | "0pmzfi230zfgiq2rz896kbb9f7mp0lnrjdl6x1npvxfixn0f5454")))) |
| 16725 | (build-system python-build-system) |
| 16726 | (native-inputs |
| 16727 | (list python-nose)) |
| 16728 | (synopsis "JSON Matching Expressions") |
| 16729 | (description "JMESPath (pronounced “james path”) is a Python library that |
| 16730 | allows one to declaratively specify how to extract elements from a JSON |
| 16731 | document.") |
| 16732 | (home-page "https://github.com/jmespath/jmespath.py") |
| 16733 | (license license:expat))) |
| 16734 | |
| 16735 | (define-public python-symengine |
| 16736 | (package |
| 16737 | (name "python-symengine") |
| 16738 | (version "0.10.0") |
| 16739 | (source |
| 16740 | (origin |
| 16741 | (method url-fetch) |
| 16742 | (uri (pypi-uri "symengine" version)) |
| 16743 | (sha256 |
| 16744 | (base32 "0i97lb6h8jk0k98805mkw6id5r537469zbh2d95320azq9nfj824")))) |
| 16745 | (build-system python-build-system) |
| 16746 | (arguments |
| 16747 | (list |
| 16748 | #:phases |
| 16749 | #~(modify-phases %standard-phases |
| 16750 | (replace 'check |
| 16751 | (lambda* (#:key tests? #:allow-other-keys) |
| 16752 | (if tests? |
| 16753 | ;; Run tests against installed package. |
| 16754 | (with-directory-excursion "/tmp" |
| 16755 | (invoke "nosetests" "-v" "symengine.tests")) |
| 16756 | (format #t "test suite not run~%"))))))) |
| 16757 | (native-inputs |
| 16758 | (list cmake python-cython python-nose)) |
| 16759 | (inputs |
| 16760 | (list symengine)) |
| 16761 | (home-page "https://github.com/symengine/symengine.py") |
| 16762 | (synopsis "Python library providing wrappers to SymEngine") |
| 16763 | (description |
| 16764 | "This library provides a Python wrapper to SymEngine, a fast C++ symbolic |
| 16765 | manipulation library.") |
| 16766 | (license license:expat))) |
| 16767 | |
| 16768 | (define-public python-uncertainties |
| 16769 | (package |
| 16770 | (name "python-uncertainties") |
| 16771 | (version "3.1.5") |
| 16772 | (source |
| 16773 | (origin |
| 16774 | (method url-fetch) |
| 16775 | (uri (pypi-uri "uncertainties" version)) |
| 16776 | (sha256 |
| 16777 | (base32 |
| 16778 | "00z9xl40czmqk0vmxjvmjvwb41r893l4dad7nj1nh6blw3kw28li")))) |
| 16779 | (build-system python-build-system) |
| 16780 | ;; While there are test files, there is no "tests" directory, so the tests |
| 16781 | ;; fail. |
| 16782 | (arguments '(#:tests? #false)) |
| 16783 | (propagated-inputs |
| 16784 | (list python-future)) |
| 16785 | (native-inputs |
| 16786 | (list python-nose python-numpy)) |
| 16787 | (home-page "https://uncertainties-python-package.readthedocs.io/") |
| 16788 | (synopsis "Calculations with uncertainties") |
| 16789 | (description |
| 16790 | "The uncertainties package transparently handles calculations with |
| 16791 | numbers with uncertainties. It can also yield the derivatives of any |
| 16792 | expression.") |
| 16793 | (license license:bsd-3))) |
| 16794 | |
| 16795 | (define-public python-unicodedata2 |
| 16796 | (package |
| 16797 | (name "python-unicodedata2") |
| 16798 | (version "15.0.0") |
| 16799 | (source |
| 16800 | (origin |
| 16801 | (method url-fetch) |
| 16802 | (uri (pypi-uri "unicodedata2" version)) |
| 16803 | (sha256 |
| 16804 | (base32 "0bcgls7m2zndpd8whgznnd5908jbsa50si2bh88wsn0agcznhv7d")))) |
| 16805 | (build-system python-build-system) |
| 16806 | (home-page "https://github.com/fonttools/unicodedata2") |
| 16807 | (synopsis "Python unicodedata backport") |
| 16808 | (description "This package corresponds to the latest @code{unicodedata} |
| 16809 | standard Python module.") |
| 16810 | (license license:asl2.0))) |
| 16811 | |
| 16812 | (define-public python-asteval |
| 16813 | (package |
| 16814 | (name "python-asteval") |
| 16815 | (version "0.9.23") |
| 16816 | (source |
| 16817 | (origin |
| 16818 | (method url-fetch) |
| 16819 | (uri (pypi-uri "asteval" version)) |
| 16820 | (sha256 |
| 16821 | (base32 |
| 16822 | "0f54sd4w1a72ij1bcxs2x7dk9xf8bzclawijf1z18bqx9f96l2gm")))) |
| 16823 | (build-system python-build-system) |
| 16824 | (native-inputs |
| 16825 | (list python-pytest)) |
| 16826 | (home-page "https://github.com/newville/asteval") |
| 16827 | (synopsis "Minimalistic evaluator of Python expressions") |
| 16828 | (description |
| 16829 | "This package provides a minimalistic evaluator of Python expression |
| 16830 | using the @code{ast} module") |
| 16831 | (license license:expat))) |
| 16832 | |
| 16833 | (define-public python-lmfit |
| 16834 | (package |
| 16835 | (name "python-lmfit") |
| 16836 | (version "1.0.2") |
| 16837 | (source |
| 16838 | (origin |
| 16839 | (method url-fetch) |
| 16840 | (uri (pypi-uri "lmfit" version)) |
| 16841 | (sha256 |
| 16842 | (base32 |
| 16843 | "0iab33jjb60f8kn0k0cqb0vjp1mdskks2n3kpn97zkw5cvjhq2b7")))) |
| 16844 | (build-system python-build-system) |
| 16845 | (propagated-inputs |
| 16846 | (list python-asteval python-numpy python-scipy python-uncertainties)) |
| 16847 | (native-inputs |
| 16848 | (list python-pytest)) |
| 16849 | (home-page "https://lmfit.github.io/lmfit-py/") |
| 16850 | (synopsis "Least-Squares minimization with bounds and constraints") |
| 16851 | (description |
| 16852 | "Lmfit provides a high-level interface to non-linear optimization and |
| 16853 | curve fitting problems for Python. It builds on and extends many of the |
| 16854 | optimization methods of @code{scipy.optimize}. Initially inspired by (and |
| 16855 | named for) extending the Levenberg-Marquardt method from |
| 16856 | @code{scipy.optimize.leastsq}, lmfit now provides a number of useful |
| 16857 | enhancements to optimization and data fitting problems.") |
| 16858 | (license license:bsd-3))) |
| 16859 | |
| 16860 | (define-public python-bokeh |
| 16861 | (package |
| 16862 | (name "python-bokeh") |
| 16863 | (version "2.4.3") |
| 16864 | (source (origin |
| 16865 | (method url-fetch) |
| 16866 | (uri (pypi-uri "bokeh" version)) |
| 16867 | (sha256 |
| 16868 | (base32 |
| 16869 | "00sbhya9vfdv3yi07j6mxwx1x1h9497nhd3smdjrcdxgc48q0czg")))) |
| 16870 | (build-system python-build-system) |
| 16871 | (arguments |
| 16872 | `(#:phases |
| 16873 | (modify-phases %standard-phases |
| 16874 | (replace 'check |
| 16875 | (lambda* (#:key tests? #:allow-other-keys) |
| 16876 | (when tests? |
| 16877 | ;; These require selenium. |
| 16878 | (delete-file "tests/unit/bokeh/io/test_export.py") |
| 16879 | (delete-file "tests/unit/bokeh/io/test_webdriver.py") |
| 16880 | (delete-file "tests/unit/bokeh/embed/test_standalone.py") |
| 16881 | |
| 16882 | ;; Doesn't find ManagedServerLoop fixture |
| 16883 | (delete-file "tests/unit/bokeh/test_client_server.py") |
| 16884 | |
| 16885 | ;; This fails because of the Guix wrapper around pytest |
| 16886 | (delete-file "tests/unit/bokeh/io/test_util__io.py") |
| 16887 | |
| 16888 | ;; Fixture ipython not found. |
| 16889 | (delete-file "tests/unit/bokeh/application/handlers/test_notebook__handlers.py") |
| 16890 | (delete-file "tests/unit/bokeh/command/subcommands/test_info.py") |
| 16891 | |
| 16892 | ;; pd fixture not found. |
| 16893 | (delete-file "tests/unit/bokeh/models/test_mappers.py") |
| 16894 | (delete-file "tests/unit/bokeh/models/util/test_structure.py") |
| 16895 | (delete-file "tests/unit/bokeh/plotting/test__plot.py") |
| 16896 | (delete-file "tests/unit/bokeh/plotting/test__graph.py") |
| 16897 | (delete-file "tests/unit/bokeh/plotting/test_figure.py") |
| 16898 | (delete-file "tests/unit/bokeh/core/test_json_encoder.py") |
| 16899 | (delete-file "tests/unit/bokeh/core/property/test_bases.py") |
| 16900 | (delete-file "tests/unit/bokeh/core/property/test_container.py") |
| 16901 | (delete-file "tests/unit/bokeh/core/property/test_dataspec.py") |
| 16902 | (delete-file "tests/unit/bokeh/core/property/test_datetime.py") |
| 16903 | (delete-file "tests/unit/bokeh/core/property/test_pandas.py") |
| 16904 | |
| 16905 | ;; nx fixture not found. |
| 16906 | (delete-file "tests/unit/bokeh/plotting/test_graph.py") |
| 16907 | (delete-file "tests/unit/bokeh/models/test_graphs.py") |
| 16908 | (delete-file "tests/unit/bokeh/io/test_showing.py") |
| 16909 | (delete-file "tests/unit/bokeh/document/test_events__document.py") |
| 16910 | |
| 16911 | ;; These tests need external sample data |
| 16912 | (delete-file-recursively "tests/unit/bokeh/sampledata/") |
| 16913 | |
| 16914 | ;; Attempts to install something via npm. |
| 16915 | (delete-file "tests/unit/bokeh/test_ext.py") |
| 16916 | |
| 16917 | ;; More failures due to set up problems. |
| 16918 | (delete-file "tests/unit/bokeh/server/test_server__server.py") |
| 16919 | (delete-file "tests/unit/bokeh/server/test_tornado__server.py") |
| 16920 | (delete-file "tests/unit/bokeh/util/test_serialization.py") |
| 16921 | (delete-file "tests/unit/bokeh/util/test_hex.py") |
| 16922 | (delete-file "tests/unit/bokeh/models/test_sources.py") |
| 16923 | (delete-file "tests/unit/bokeh/embed/test_bundle.py") |
| 16924 | |
| 16925 | ;; XXX: This one test transforms a gif of a red box. It |
| 16926 | ;; transforms it all right but the base64 doesn't look as |
| 16927 | ;; expected, probably because of a change in pillow. |
| 16928 | (invoke "pytest" "-v" "-k" "not test_transform_PIL"))))))) |
| 16929 | (propagated-inputs |
| 16930 | (list node-lts |
| 16931 | python-jinja2 |
| 16932 | python-numpy |
| 16933 | python-packaging |
| 16934 | python-pillow |
| 16935 | python-pyyaml |
| 16936 | python-tornado-6 |
| 16937 | python-typing-extensions)) |
| 16938 | (native-inputs |
| 16939 | (list python-beautifulsoup4 |
| 16940 | python-dateutil |
| 16941 | python-flaky |
| 16942 | python-mock |
| 16943 | python-nbconvert |
| 16944 | python-pandas |
| 16945 | python-pytest |
| 16946 | python-pytz |
| 16947 | python-requests)) |
| 16948 | (home-page "https://github.com/bokeh/bokeh") |
| 16949 | (synopsis "Interactive plots and applications in the browser from Python") |
| 16950 | (description |
| 16951 | "This package provides tools for interactive plots and applications in the |
| 16952 | browser from Python.") |
| 16953 | (license license:bsd-3))) |
| 16954 | |
| 16955 | (define-public python-boto |
| 16956 | (package |
| 16957 | (name "python-boto") |
| 16958 | (version "2.49.0") |
| 16959 | (source (origin |
| 16960 | (method url-fetch) |
| 16961 | (uri (pypi-uri "boto" version)) |
| 16962 | (sha256 |
| 16963 | (base32 |
| 16964 | "0njy09c4wjx7ipxhwi6vv404nflyiasl78vwwxxpclnql903n3ga")))) |
| 16965 | (build-system python-build-system) |
| 16966 | (arguments |
| 16967 | ;; XXX: This package is unmaintained and has problems with newer versions |
| 16968 | ;; of Python 3 as well as test libraries. 'python-moto' still uses a |
| 16969 | ;; subset of this library, so keep it around for now, but disable tests. |
| 16970 | '(#:tests? #f)) |
| 16971 | (propagated-inputs |
| 16972 | (list python-paramiko python-requests)) |
| 16973 | (home-page "https://github.com/boto/boto") |
| 16974 | (synopsis "Python interfaces for Amazon Web Services") |
| 16975 | (description |
| 16976 | "This package provides various facilities for interacting with Amazon |
| 16977 | Web Services through Python. |
| 16978 | |
| 16979 | This software is unmaintained, and new projects should use @code{boto3} instead.") |
| 16980 | (license license:expat))) |
| 16981 | |
| 16982 | (define-public python-botocore |
| 16983 | ;; Note: When updating botocore, also make sure that boto3 and awscli |
| 16984 | ;; are compatible. |
| 16985 | (package |
| 16986 | (name "python-botocore") |
| 16987 | (version "1.24.35") |
| 16988 | (source |
| 16989 | (origin |
| 16990 | (method url-fetch) |
| 16991 | (uri (pypi-uri "botocore" version)) |
| 16992 | (sha256 |
| 16993 | (base32 |
| 16994 | "0rv8mvhq5s373zdjs2yb45hzvqcqdh2lp2rbb21jjc8ciwnl5d9n")))) |
| 16995 | (build-system python-build-system) |
| 16996 | (arguments |
| 16997 | ;; FIXME: Many tests are failing. |
| 16998 | '(#:tests? #f)) |
| 16999 | (propagated-inputs |
| 17000 | (list python-dateutil python-jmespath python-urllib3)) |
| 17001 | (home-page "https://github.com/boto/botocore") |
| 17002 | (synopsis "Low-level interface to AWS") |
| 17003 | (description "Botocore is a Python library that provides a low-level |
| 17004 | interface to the Amazon Web Services (AWS) API.") |
| 17005 | (license license:asl2.0))) |
| 17006 | |
| 17007 | (define-public python-boto3 |
| 17008 | (package |
| 17009 | (name "python-boto3") |
| 17010 | (version "1.21.35") |
| 17011 | (home-page "https://github.com/boto/boto3") |
| 17012 | (source (origin |
| 17013 | (method git-fetch) |
| 17014 | (uri (git-reference (url home-page) (commit version))) |
| 17015 | (file-name (git-file-name name version)) |
| 17016 | (sha256 |
| 17017 | (base32 |
| 17018 | "1kdyf238rpfldnpzs0rdh3nhjn6hwfym4faskyhzlgzkf1smmbg1")))) |
| 17019 | (arguments |
| 17020 | `(#:phases |
| 17021 | (modify-phases %standard-phases |
| 17022 | (add-after 'unpack 'delete-network-tests |
| 17023 | ;; Deleting integration tests because they are trying to connect to AWS. |
| 17024 | (lambda _ |
| 17025 | (delete-file-recursively "tests/integration"))) |
| 17026 | (replace 'check |
| 17027 | (lambda* (#:key tests? #:allow-other-keys) |
| 17028 | (when tests? |
| 17029 | (invoke "pytest" "-v"))))))) |
| 17030 | (build-system python-build-system) |
| 17031 | (native-inputs |
| 17032 | (list python-nose python-mock python-pytest)) |
| 17033 | (propagated-inputs |
| 17034 | (list python-botocore python-jmespath python-s3transfer)) |
| 17035 | (synopsis "AWS SDK for Python") |
| 17036 | (description |
| 17037 | "Boto3 is a Python library for writing programs that interact with |
| 17038 | @acronym{AWS,Amazon Web Services}.") |
| 17039 | (license license:asl2.0))) |
| 17040 | |
| 17041 | (define-public python-pyfiglet |
| 17042 | (package |
| 17043 | (name "python-pyfiglet") |
| 17044 | (version "0.8.post1") |
| 17045 | (source |
| 17046 | (origin |
| 17047 | (method url-fetch) |
| 17048 | (uri (pypi-uri "pyfiglet" version)) |
| 17049 | (sha256 |
| 17050 | (base32 |
| 17051 | "0f9n2076ga2ccsg174k2d7n0z4d44ml96yzc72s6g4nhalbk5hn6")))) |
| 17052 | (build-system python-build-system) |
| 17053 | (home-page "https://github.com/pwaller/pyfiglet") |
| 17054 | (synopsis "Draw ASCII art big letters in Python") |
| 17055 | (description "This module lets you draw large letter from ordinary characters |
| 17056 | in pure Python.") |
| 17057 | (license license:expat))) |
| 17058 | |
| 17059 | (define-public python-xdg |
| 17060 | (package |
| 17061 | (name "python-xdg") |
| 17062 | (version "6.0.0") |
| 17063 | (source (origin |
| 17064 | (method url-fetch) |
| 17065 | (uri (pypi-uri "xdg" version)) |
| 17066 | (sha256 |
| 17067 | (base32 |
| 17068 | "14hwk9j5zjc8rvirw95mrb07zdnpjaxjx2mj3rnq8pnlyaa809r4")))) |
| 17069 | (build-system pyproject-build-system) |
| 17070 | (native-inputs |
| 17071 | (list python-poetry-core)) |
| 17072 | (home-page "https://github.com/srstevenson/xdg-base-dirs") |
| 17073 | (synopsis "Variables defined by the XDG Base Directory Specification") |
| 17074 | (description "xdg-base-dirs is a Python module that provides functions to |
| 17075 | return paths to the directories defined by the XDG Base Directory |
| 17076 | Specification, to save you from duplicating the same snippet of logic in every |
| 17077 | Python utility you write that deals with user cache, configuration, or data |
| 17078 | files.") |
| 17079 | (license license:isc))) |
| 17080 | |
| 17081 | (define-public python-xdo |
| 17082 | (package |
| 17083 | (name "python-xdo") |
| 17084 | (version "0.3") |
| 17085 | (source (origin |
| 17086 | (method url-fetch) |
| 17087 | (uri (string-append |
| 17088 | "http://http.debian.net/debian/pool/main/p/python-xdo/" |
| 17089 | "python-xdo_" version ".orig.tar.gz")) |
| 17090 | (sha256 |
| 17091 | (base32 |
| 17092 | "1vqh1n5yy5dhnq312kwrl90fnck4v26is3lq3lxdvcn60vv19da0")))) |
| 17093 | (build-system python-build-system) |
| 17094 | (arguments |
| 17095 | '(#:phases |
| 17096 | (modify-phases %standard-phases |
| 17097 | (add-before 'install 'patch-libxdo-path |
| 17098 | ;; Hardcode the path of dynamically loaded libxdo library. |
| 17099 | (lambda* (#:key inputs #:allow-other-keys) |
| 17100 | (let ((libxdo (string-append |
| 17101 | (assoc-ref inputs "xdotool") |
| 17102 | "/lib/libxdo.so")) |
| 17103 | (libc (string-append |
| 17104 | (assoc-ref inputs "libc") |
| 17105 | "/lib/libc.so.6"))) |
| 17106 | (substitute* "xdo/_xdo.py" |
| 17107 | (("find_library\\(\"xdo\"\\)") |
| 17108 | (simple-format #f "\"~a\"" libxdo)) |
| 17109 | (("ctypes\\.util\\.find_library\\('libc'\\)") |
| 17110 | (simple-format #f "\"~a\"" libc))) |
| 17111 | #t)))) |
| 17112 | #:tests? #f)) ; no tests provided |
| 17113 | (propagated-inputs |
| 17114 | (list python-six)) |
| 17115 | (inputs |
| 17116 | `(("xdotool" ,xdotool) |
| 17117 | ("libX11" ,libx11))) |
| 17118 | (home-page "https://tracker.debian.org/pkg/python-xdo") |
| 17119 | (synopsis "Python library for simulating X11 keyboard/mouse input") |
| 17120 | (description "Provides bindings to libxdo for manipulating X11 via simulated |
| 17121 | input. (Note that this is mostly a legacy library; you may wish to look at |
| 17122 | python-xdo for newer bindings.)") |
| 17123 | (license license:bsd-3))) |
| 17124 | |
| 17125 | (define-public python-xdoctest |
| 17126 | (package |
| 17127 | (name "python-xdoctest") |
| 17128 | (version "1.0.0") |
| 17129 | (source |
| 17130 | (origin |
| 17131 | (method url-fetch) |
| 17132 | (uri (pypi-uri "xdoctest" version)) |
| 17133 | (sha256 |
| 17134 | (base32 "0bgbmb9nqv95f9gfxqifqff1qaz5fnanjqy4hv7ygrjp2kksgfvy")))) |
| 17135 | (build-system python-build-system) |
| 17136 | (arguments |
| 17137 | (list #:phases |
| 17138 | #~(modify-phases %standard-phases |
| 17139 | (replace 'check |
| 17140 | (lambda* (#:key tests? #:allow-other-keys) |
| 17141 | (when tests? |
| 17142 | ;; A writable HOME is needed by the |
| 17143 | ;; 'import_module_from_path' test. |
| 17144 | (setenv "HOME" "/tmp") |
| 17145 | (invoke "pytest" "-vv"))))))) |
| 17146 | (propagated-inputs (list python-six)) |
| 17147 | (native-inputs (list python-pytest which)) |
| 17148 | (home-page "https://github.com/Erotemic/xdoctest") |
| 17149 | (synopsis "Rewrite of the Python builtin doctest module") |
| 17150 | (description "This package provides a rewrite of the builtin doctest |
| 17151 | module which leverages the Python @acronym{AST, Abstract Syntax Tree} instead |
| 17152 | of @acronym{REGEXPs, regular expressions}.") |
| 17153 | (license license:asl2.0))) |
| 17154 | |
| 17155 | (define-public python-mako |
| 17156 | (package |
| 17157 | (name "python-mako") |
| 17158 | (version "1.2.2") |
| 17159 | (source |
| 17160 | (origin |
| 17161 | (method url-fetch) |
| 17162 | (uri (pypi-uri "Mako" version)) |
| 17163 | (sha256 |
| 17164 | (base32 |
| 17165 | "0gqnv9py1dqp01jmf5zxp0vj2dbhq1l9zy55fai319iv6sdqc91p")))) |
| 17166 | (build-system python-build-system) |
| 17167 | (arguments |
| 17168 | `(#:phases (modify-phases %standard-phases |
| 17169 | (replace 'check |
| 17170 | (lambda* (#:key tests? #:allow-other-keys) |
| 17171 | (if tests? |
| 17172 | (invoke "pytest" "-vv") |
| 17173 | (format #t "test suite not run~%")) |
| 17174 | #t))))) |
| 17175 | (propagated-inputs |
| 17176 | (list python-markupsafe)) |
| 17177 | (native-inputs |
| 17178 | (list python-mock python-pytest)) |
| 17179 | (home-page "https://www.makotemplates.org/") |
| 17180 | (synopsis "Templating language for Python") |
| 17181 | (description "Mako is a templating language for Python that compiles |
| 17182 | templates into Python modules.") |
| 17183 | (license license:expat))) |
| 17184 | |
| 17185 | (define-public python-waitress |
| 17186 | (package |
| 17187 | (name "python-waitress") |
| 17188 | (version "1.1.0") |
| 17189 | (source |
| 17190 | (origin |
| 17191 | (method url-fetch) |
| 17192 | (uri (pypi-uri "waitress" version)) |
| 17193 | (patches (search-patches "python-waitress-fix-tests.patch")) |
| 17194 | (sha256 |
| 17195 | (base32 |
| 17196 | "1a85gyji0kajc3p0s1pwwfm06w4wfxjkvvl4rnrz3h164kbd6g6k")))) |
| 17197 | (build-system python-build-system) |
| 17198 | (home-page "https://github.com/Pylons/waitress") |
| 17199 | (synopsis "Waitress WSGI server") |
| 17200 | (description "Waitress is meant to be a production-quality pure-Python WSGI |
| 17201 | server with very acceptable performance.") |
| 17202 | (license license:zpl2.1))) |
| 17203 | |
| 17204 | (define-public python-whichcraft |
| 17205 | (package |
| 17206 | (name "python-whichcraft") |
| 17207 | (version "0.6.1") |
| 17208 | (source |
| 17209 | (origin |
| 17210 | (method url-fetch) |
| 17211 | (uri (pypi-uri "whichcraft" version)) |
| 17212 | (sha256 |
| 17213 | (base32 |
| 17214 | "11yfkzyplizdgndy34vyd5qlmr1n5mxis3a3svxmx8fnccdvknxc")))) |
| 17215 | (build-system python-build-system) |
| 17216 | (native-inputs |
| 17217 | (list python-pytest)) |
| 17218 | (home-page "https://github.com/pydanny/whichcraft") |
| 17219 | (synopsis "Cross-platform cross-python shutil.which functionality") |
| 17220 | (description |
| 17221 | "This package provides a shim of the shutil.which function that's |
| 17222 | designed to work across multiple versions of Python.") |
| 17223 | (license license:bsd-3))) |
| 17224 | |
| 17225 | (define-public python-cookiecutter |
| 17226 | (package |
| 17227 | (name "python-cookiecutter") |
| 17228 | (version "1.7.3") |
| 17229 | (source |
| 17230 | (origin |
| 17231 | (method url-fetch) |
| 17232 | (uri (pypi-uri "cookiecutter" version)) |
| 17233 | (sha256 |
| 17234 | (base32 "0mx49whhwcxmvcak27zr7p7ndzkn3w7psfd7fzh3n91fi1r4v6kb")))) |
| 17235 | (build-system python-build-system) |
| 17236 | (native-inputs |
| 17237 | (list python-freezegun python-pytest python-pytest-catchlog |
| 17238 | python-pytest-cov python-pytest-mock)) |
| 17239 | (propagated-inputs |
| 17240 | (list python-binaryornot |
| 17241 | python-click |
| 17242 | python-future |
| 17243 | python-jinja2 |
| 17244 | python-jinja2-time |
| 17245 | python-poyo |
| 17246 | python-requests |
| 17247 | python-slugify |
| 17248 | python-text-unidecode |
| 17249 | python-whichcraft)) |
| 17250 | (home-page "https://github.com/cookiecutter/cookiecutter") |
| 17251 | (synopsis |
| 17252 | "Command-line utility that creates projects from project templates") |
| 17253 | (description |
| 17254 | "This package provides a command-line utility that creates projects from |
| 17255 | project templates, e.g. creating a Python package project from a Python package |
| 17256 | project template.") |
| 17257 | (license license:bsd-3))) |
| 17258 | |
| 17259 | (define-public python-pyquery |
| 17260 | (package |
| 17261 | (name "python-pyquery") |
| 17262 | (version "1.2.17") |
| 17263 | (source |
| 17264 | (origin |
| 17265 | (method url-fetch) |
| 17266 | (uri (pypi-uri "pyquery" version)) |
| 17267 | (sha256 |
| 17268 | (base32 |
| 17269 | "1xia20wm0vx5dk85kcwgh13bylz8qh47ffjxssd2586r60xi783a")))) |
| 17270 | (build-system python-build-system) |
| 17271 | (native-inputs |
| 17272 | (list python-webob python-webtest)) |
| 17273 | (propagated-inputs |
| 17274 | (list python-lxml python-cssselect)) |
| 17275 | (home-page "https://github.com/gawel/pyquery") |
| 17276 | (synopsis "Make jQuery-like queries on xml documents") |
| 17277 | (description "pyquery allows you to make jQuery queries on xml documents. |
| 17278 | The API is as much as possible the similar to jQuery. pyquery uses lxml for |
| 17279 | fast xml and html manipulation.") |
| 17280 | (license license:bsd-3))) |
| 17281 | |
| 17282 | (define-public python-anyjson |
| 17283 | (package |
| 17284 | (name "python-anyjson") |
| 17285 | (version "0.3.3") |
| 17286 | (source |
| 17287 | (origin |
| 17288 | (method url-fetch) |
| 17289 | (uri (pypi-uri "anyjson" version)) |
| 17290 | (sha256 |
| 17291 | (base32 |
| 17292 | "1fjph4alvcscsl5d4b6qpv1yh31jy05jxi1l0xff7lws7j32v09p")))) |
| 17293 | (build-system python-build-system) |
| 17294 | (arguments |
| 17295 | `(;; We could possibly get tests working, but on Python 3 it's not so easy. |
| 17296 | ;; Very strangely, 2to3 is run *during setup.py install* (or bdist, or |
| 17297 | ;; whatever) so this transformation needs to be done before the tests |
| 17298 | ;; can be run. Maybe we could add a build step to transform beforehand |
| 17299 | ;; but it could be annoying/difficult. |
| 17300 | #:tests? #f)) |
| 17301 | (native-inputs (list python-setuptools-57)) ;for use_2to3 support |
| 17302 | (home-page "https://bitbucket.org/runeh/anyjson/") |
| 17303 | (synopsis |
| 17304 | "Wraps best available JSON implementation in a common interface") |
| 17305 | (description |
| 17306 | "Anyjson loads whichever is the fastest JSON module installed |
| 17307 | and provides a uniform API regardless of which JSON implementation is used.") |
| 17308 | (license license:bsd-3))) |
| 17309 | |
| 17310 | (define-public python-amqp |
| 17311 | (package |
| 17312 | (name "python-amqp") |
| 17313 | (version "5.1.1") |
| 17314 | (source |
| 17315 | (origin |
| 17316 | (method url-fetch) |
| 17317 | (uri (pypi-uri "amqp" version)) |
| 17318 | (sha256 |
| 17319 | (base32 "1qmmffiy48nady7is8529vxcyqbq88v5zgawqr3fk4q8rkz166rc")))) |
| 17320 | (build-system python-build-system) |
| 17321 | (arguments |
| 17322 | (list |
| 17323 | #:phases |
| 17324 | #~(modify-phases %standard-phases |
| 17325 | (replace 'check |
| 17326 | (lambda* (#:key tests? #:allow-other-keys) |
| 17327 | (when tests? |
| 17328 | (invoke "pytest" "-vv" |
| 17329 | "-c" "/dev/null" ;take control over pytest options |
| 17330 | ;; Integration tests require network connectivity. |
| 17331 | "--ignore" "t/integration"))))))) |
| 17332 | (native-inputs (list python-pytest)) |
| 17333 | (propagated-inputs (list python-vine)) |
| 17334 | (home-page "https://github.com/celery/py-amqp") |
| 17335 | (synopsis "Low-level AMQP client for Python (fork of amqplib)") |
| 17336 | (description |
| 17337 | "This is a fork of amqplib which was originally written by Barry Pederson. |
| 17338 | It is maintained by the Celery project, and used by kombu as a pure python |
| 17339 | alternative when librabbitmq is not available.") |
| 17340 | (license license:lgpl2.1+))) |
| 17341 | |
| 17342 | (define-public python-beniget |
| 17343 | (package |
| 17344 | (name "python-beniget") |
| 17345 | (version "0.4.1") |
| 17346 | (home-page "https://github.com/serge-sans-paille/beniget") |
| 17347 | (source |
| 17348 | (origin |
| 17349 | (method url-fetch) |
| 17350 | (uri (pypi-uri "beniget" version)) |
| 17351 | (sha256 |
| 17352 | (base32 "035c4f78yllpw2c5p1w92520rilm7nnpsqh7yvi3qmfhi8xlnmbm")))) |
| 17353 | (build-system python-build-system) |
| 17354 | (propagated-inputs |
| 17355 | (list python-gast)) |
| 17356 | (synopsis "Extract semantic information about static Python code") |
| 17357 | (description |
| 17358 | "Beniget is a collection of analyzers for Python @acronym{AST, |
| 17359 | Abstract Syntax Tree}. It is a building block for writing a static analyzer |
| 17360 | or compiler for Python.") |
| 17361 | (license license:bsd-3))) |
| 17362 | |
| 17363 | (define-public python-txamqp |
| 17364 | (package |
| 17365 | (name "python-txamqp") |
| 17366 | (version "0.8.2") |
| 17367 | (source |
| 17368 | (origin |
| 17369 | (method url-fetch) |
| 17370 | (uri (pypi-uri "txAMQP" version)) |
| 17371 | (sha256 |
| 17372 | (base32 |
| 17373 | "0jd9864k3csc06kipiwzjlk9mq4054s8kzk5q1cfnxj8572s4iv4")))) |
| 17374 | (build-system python-build-system) |
| 17375 | (propagated-inputs |
| 17376 | (list python-six python-twisted)) |
| 17377 | (home-page "https://github.com/txamqp/txamqp") |
| 17378 | (synopsis "Communicate with AMQP peers and brokers using Twisted") |
| 17379 | (description |
| 17380 | "This package provides a Python library for communicating with AMQP peers |
| 17381 | and brokers using the asynchronous networking framework Twisted. It contains |
| 17382 | all the necessary code to connect, send and receive messages to/from an |
| 17383 | AMQP-compliant peer or broker (Qpid, OpenAMQ, RabbitMQ) using Twisted. It |
| 17384 | also includes support for using Thrift RPC over AMQP in Twisted |
| 17385 | applications.") |
| 17386 | (license license:asl2.0))) |
| 17387 | |
| 17388 | (define-public python-kombu |
| 17389 | (package |
| 17390 | (name "python-kombu") |
| 17391 | (version "5.2.4") |
| 17392 | (source |
| 17393 | (origin |
| 17394 | (method url-fetch) |
| 17395 | (uri (pypi-uri "kombu" version)) |
| 17396 | (sha256 |
| 17397 | (base32 "044ng79gj04668kf5fmy7fjkw8302xyapskkn65ym52zfbpf7kip")))) |
| 17398 | (build-system python-build-system) |
| 17399 | (arguments |
| 17400 | (list |
| 17401 | #:phases |
| 17402 | #~(modify-phases %standard-phases |
| 17403 | (replace 'check |
| 17404 | (lambda* (#:key tests? #:allow-other-keys) |
| 17405 | (when tests? |
| 17406 | (invoke "pytest" "-vv" |
| 17407 | ;; The transport tests attempt to pass messages to |
| 17408 | ;; many different databases. |
| 17409 | "--ignore" "t/unit/transport"))))))) |
| 17410 | (native-inputs |
| 17411 | (list python-case python-pyro4 python-pytest-sugar |
| 17412 | python-pytest python-pytz)) |
| 17413 | (propagated-inputs |
| 17414 | (list python-amqp python-cached-property python-vine)) |
| 17415 | (home-page "https://kombu.readthedocs.io") |
| 17416 | (synopsis "Message passing library for Python") |
| 17417 | (description "The aim of Kombu is to make messaging in Python as easy as |
| 17418 | possible by providing an idiomatic high-level interface for the AMQ protocol, |
| 17419 | and also provide proven and tested solutions to common messaging problems. |
| 17420 | AMQP is the Advanced Message Queuing Protocol, an open standard protocol for |
| 17421 | message orientation, queuing, routing, reliability and security, for which the |
| 17422 | RabbitMQ messaging server is the most popular implementation.") |
| 17423 | (license license:bsd-3))) |
| 17424 | |
| 17425 | (define-public python-billiard |
| 17426 | (package |
| 17427 | (name "python-billiard") |
| 17428 | (version "3.6.4.0") |
| 17429 | (source |
| 17430 | (origin |
| 17431 | (method url-fetch) |
| 17432 | (uri (pypi-uri "billiard" version)) |
| 17433 | (sha256 |
| 17434 | (base32 "0ismj2p8c66ykpss94rs0bfra5agxxmljz8r3gaq79r8valfb799")))) |
| 17435 | (build-system python-build-system) |
| 17436 | (arguments |
| 17437 | `(#:phases |
| 17438 | (modify-phases %standard-phases |
| 17439 | (add-after 'unpack 'remove-win-files |
| 17440 | (lambda _ |
| 17441 | (for-each delete-file-recursively |
| 17442 | ;; test_multiprocessing seem to be written in Python2. |
| 17443 | '("t/integration/tests/test_multiprocessing.py" |
| 17444 | "t/unit/test_win32.py" |
| 17445 | "billiard/popen_spawn_win32.py" |
| 17446 | "billiard/_win.py"))))))) |
| 17447 | (native-inputs |
| 17448 | (list python-case python-psutil python-pytest)) |
| 17449 | (home-page "https://github.com/celery/billiard") |
| 17450 | (synopsis "Python multiprocessing fork with improvements and bugfixes") |
| 17451 | (description |
| 17452 | "Billiard is a fork of the Python 2.7 multiprocessing package. The |
| 17453 | multiprocessing package itself is a renamed and updated version of R Oudkerk's |
| 17454 | pyprocessing package. This standalone variant is intended to be compatible with |
| 17455 | Python 2.4 and 2.5, and will draw its fixes/improvements from python-trunk.") |
| 17456 | (license license:bsd-3))) |
| 17457 | |
| 17458 | (define-public python-celery |
| 17459 | (package |
| 17460 | (name "python-celery") |
| 17461 | (version "5.2.6") |
| 17462 | (source |
| 17463 | (origin |
| 17464 | (method url-fetch) |
| 17465 | (uri (pypi-uri "celery" version)) |
| 17466 | (sha256 |
| 17467 | (base32 "109lcqarrbmh95sk1dm4yxayq1h3i27f4w23ndk64mqgyfnqqffi")))) |
| 17468 | (build-system python-build-system) |
| 17469 | (arguments |
| 17470 | '(#:phases |
| 17471 | (modify-phases %standard-phases |
| 17472 | (add-after 'unpack 'relax-requirements |
| 17473 | (lambda _ |
| 17474 | (substitute* "requirements/default.txt" |
| 17475 | (("pytz.*") |
| 17476 | "pytz\n")))) |
| 17477 | (replace 'check |
| 17478 | (lambda* (#:key tests? #:allow-other-keys) |
| 17479 | (when tests? |
| 17480 | (invoke "python" "-m" "pytest" "t" |
| 17481 | "--ignore" "t/integration" ;hangs tests |
| 17482 | ;; The MongoDB backend test appears to expect an older |
| 17483 | ;; version of MongoDB which provided its own bson |
| 17484 | ;; module, fails with " AttributeError: module 'bson' |
| 17485 | ;; has no attribute 'encode'". |
| 17486 | "--ignore" "t/unit/backends/test_mongodb.py" |
| 17487 | ;; AssertionErrors |
| 17488 | "-k" "not test_check_privileges_no_fchown "))))))) |
| 17489 | (native-inputs |
| 17490 | (list python-case |
| 17491 | python-dnspython |
| 17492 | python-flaky |
| 17493 | python-iniconfig |
| 17494 | python-moto |
| 17495 | python-msgpack |
| 17496 | python-pytest ;for pytest-subtests |
| 17497 | python-pytest-celery |
| 17498 | python-pytest-subtests |
| 17499 | python-pytest-timeout |
| 17500 | python-toml)) |
| 17501 | (propagated-inputs |
| 17502 | (list python-billiard |
| 17503 | python-click |
| 17504 | python-click-didyoumean |
| 17505 | python-click-plugins |
| 17506 | python-click-repl |
| 17507 | python-kombu |
| 17508 | python-pytz |
| 17509 | python-vine)) |
| 17510 | (home-page "https://celeryproject.org") |
| 17511 | (synopsis "Distributed Task Queue") |
| 17512 | (description "Celery is an asynchronous task queue/job queue based on |
| 17513 | distributed message passing. It is focused on real-time operation, but |
| 17514 | supports scheduling as well. The execution units, called tasks, are executed |
| 17515 | concurrently on a single or more worker servers using multiprocessing, |
| 17516 | Eventlet, or gevent. Tasks can execute asynchronously (in the background) or |
| 17517 | synchronously (wait until ready).") |
| 17518 | (license license:bsd-3))) |
| 17519 | |
| 17520 | (define-public python-cesium |
| 17521 | (package |
| 17522 | (name "python-cesium") |
| 17523 | (version "0.12.1") |
| 17524 | (source (origin |
| 17525 | (method url-fetch) |
| 17526 | (uri (pypi-uri "cesium" version)) |
| 17527 | (sha256 |
| 17528 | (base32 |
| 17529 | "0jr0ycqz9ns6mcskm4sxx92k40fj3v0x9knjaw5ac9f3mpqxsfbv")))) |
| 17530 | (build-system pyproject-build-system) |
| 17531 | (arguments |
| 17532 | (list |
| 17533 | #:phases |
| 17534 | #~(modify-phases %standard-phases |
| 17535 | ;; The installed test files contain the /gnu/store location, not the |
| 17536 | ;; location of the discovered test files from the build directory. |
| 17537 | ;; The test framework doesn't like this. The easiest way around |
| 17538 | ;; this mismatch is to jump to the output directory. |
| 17539 | (add-before 'check 'check-chdir |
| 17540 | (lambda _ (chdir #$output)))))) |
| 17541 | (propagated-inputs |
| 17542 | (list python-click ;XXX required by python-dask |
| 17543 | python-cloudpickle |
| 17544 | python-dask |
| 17545 | python-gatspy |
| 17546 | python-joblib |
| 17547 | python-numpy |
| 17548 | python-pandas |
| 17549 | python-scikit-learn |
| 17550 | python-scipy |
| 17551 | python-toolz)) |
| 17552 | (native-inputs (list python-cython python-pytest python-setuptools-scm)) |
| 17553 | (home-page "https://pypi.org/project/cesium/") |
| 17554 | (synopsis "Library for time-series feature extraction and processing") |
| 17555 | (description |
| 17556 | "Cesium is a library for time-series feature extraction and processing.") |
| 17557 | (license license:bsd-3))) |
| 17558 | |
| 17559 | (define-public python-translitcodec |
| 17560 | (package |
| 17561 | (name "python-translitcodec") |
| 17562 | (version "0.4.0") |
| 17563 | (source |
| 17564 | (origin |
| 17565 | (method url-fetch) |
| 17566 | (uri (pypi-uri "translitcodec" version)) |
| 17567 | (sha256 |
| 17568 | (base32 |
| 17569 | "10x6pvblkzky1zhjs8nmx64nb9jdzxad4bxhq4iwv0j4z2aqjnki")))) |
| 17570 | (build-system python-build-system) |
| 17571 | (arguments |
| 17572 | `(#:tests? #f)) ; no tests provided |
| 17573 | (home-page |
| 17574 | "https://github.com/claudep/translitcodec") |
| 17575 | (synopsis |
| 17576 | "Unicode to 8-bit charset transliteration codec") |
| 17577 | (description |
| 17578 | "This package contains codecs for transliterating ISO 10646 texts into |
| 17579 | best-effort representations using smaller coded character sets (ASCII, |
| 17580 | ISO 8859, etc.).") |
| 17581 | (license license:expat))) |
| 17582 | |
| 17583 | (define-public python-anyqt |
| 17584 | (package |
| 17585 | (name "python-anyqt") |
| 17586 | (version "0.2.0") |
| 17587 | (source |
| 17588 | (origin |
| 17589 | (method url-fetch) |
| 17590 | (uri (pypi-uri "AnyQt" version)) |
| 17591 | (sha256 |
| 17592 | (base32 "0fvnhdk0nzhlm1xydisvdq1w7lwaakdkbwb1rkyz4vd232wji4jb")))) |
| 17593 | (build-system python-build-system) |
| 17594 | (arguments |
| 17595 | `(#:tests? #f ;there are no tests |
| 17596 | #:phases |
| 17597 | (modify-phases %standard-phases |
| 17598 | (add-after 'unpack 'delete-files |
| 17599 | ;; Delete files related to other operating systems. |
| 17600 | (lambda _ |
| 17601 | (delete-file "AnyQt/QtMacExtras.py") |
| 17602 | (delete-file "AnyQt/QtWinExtras.py")))))) |
| 17603 | (home-page "https://github.com/ales-erjavec/anyqt") |
| 17604 | (synopsis "PyQt4/PyQt5 compatibility layer") |
| 17605 | (description "AnyQt is a PyQt4/PyQt5 compatibility layer.") |
| 17606 | (license license:gpl3))) |
| 17607 | |
| 17608 | (define-public python-pyqtgraph |
| 17609 | (package |
| 17610 | (name "python-pyqtgraph") |
| 17611 | (version "0.13.1") |
| 17612 | (source |
| 17613 | (origin |
| 17614 | (method url-fetch) |
| 17615 | (uri (pypi-uri "pyqtgraph" version)) |
| 17616 | (sha256 |
| 17617 | (base32 "026wq2p7h1dmg2ldwhxiv28i5qld0llhnak06dxp4rdrkpsqg3v9")))) |
| 17618 | (build-system pyproject-build-system) |
| 17619 | (arguments |
| 17620 | ;; This test fails. It suggests to disable assert rewriting in Pytest, |
| 17621 | ;; but it still doesn't pass. |
| 17622 | (list #:test-flags #~'("-k" "not test_reload") |
| 17623 | #:phases |
| 17624 | #~(modify-phases %standard-phases |
| 17625 | (add-before 'check 'set-qpa |
| 17626 | (lambda _ |
| 17627 | (setenv "QT_QPA_PLATFORM" "offscreen")))))) |
| 17628 | (native-inputs |
| 17629 | (list python-pytest python-pytest-cov python-pytest-xdist)) |
| 17630 | (inputs |
| 17631 | (list qtbase-5)) |
| 17632 | (propagated-inputs |
| 17633 | (list python-h5py python-numpy python-pyopengl python-scipy |
| 17634 | python-pyqt)) |
| 17635 | (home-page "https://www.pyqtgraph.org") |
| 17636 | (synopsis "Scientific graphics and GUI library for Python") |
| 17637 | (description |
| 17638 | "PyQtGraph is a Pure-python graphics library for PyQt5, PyQt6, PySide2 |
| 17639 | and PySide6. It is intended for use in mathematics, scientific or engineering |
| 17640 | applications.") |
| 17641 | (license license:expat))) |
| 17642 | |
| 17643 | (define-public python-qasync |
| 17644 | (package |
| 17645 | (name "python-qasync") |
| 17646 | (version "0.22.0") |
| 17647 | (source |
| 17648 | (origin |
| 17649 | ;; There are no tests in the PyPI tarball. |
| 17650 | (method git-fetch) |
| 17651 | (uri (git-reference |
| 17652 | (url "https://github.com/CabbageDevelopment/qasync/") |
| 17653 | (commit (string-append "v" version)))) |
| 17654 | (file-name (git-file-name name version)) |
| 17655 | (sha256 |
| 17656 | (base32 "1q9cllrwf94whr0f6mipa0hdq1rcyqvklwx19g35g2dav8f3xkjl")))) |
| 17657 | (build-system python-build-system) |
| 17658 | (arguments |
| 17659 | `(#:test-target "pytest" |
| 17660 | #:phases |
| 17661 | (modify-phases %standard-phases |
| 17662 | (add-before 'check 'set-qpa |
| 17663 | (lambda _ |
| 17664 | (setenv "QT_QPA_PLATFORM" "offscreen")))))) |
| 17665 | (native-inputs |
| 17666 | (list python-pytest python-pytest-runner)) |
| 17667 | (propagated-inputs |
| 17668 | (list python-pyqt)) |
| 17669 | (home-page "https://github.com/CabbageDevelopment/qasync") |
| 17670 | (synopsis "Implementation of the PEP 3156 Event-Loop with Qt") |
| 17671 | (description |
| 17672 | "@code{qasync} allows coroutines to be used in PyQt/PySide applications |
| 17673 | by providing an implementation of the PEP 3156 event-loop.") |
| 17674 | (license license:bsd-2))) |
| 17675 | |
| 17676 | (define-public python-editor |
| 17677 | (package |
| 17678 | (name "python-editor") |
| 17679 | (version "1.0.4") |
| 17680 | (source |
| 17681 | (origin |
| 17682 | (method url-fetch) |
| 17683 | (uri (pypi-uri "python-editor" version)) |
| 17684 | (sha256 |
| 17685 | (base32 |
| 17686 | "0yrjh8w72ivqxi4i7xsg5b1vz15x8fg51xra7c3bgfyxqnyadzai")))) |
| 17687 | (build-system python-build-system) |
| 17688 | (arguments |
| 17689 | '(#:tests? #f)) ;XXX: needs a TTY and an editor |
| 17690 | (home-page "https://github.com/fmoo/python-editor") |
| 17691 | (synopsis "Programmatically open an editor, capture the result") |
| 17692 | (description |
| 17693 | "python-editor is a library that provides the editor module for |
| 17694 | programmatically interfacing with your system's $EDITOR.") |
| 17695 | (license license:asl2.0))) |
| 17696 | |
| 17697 | (define-public python-multiprocessing-logging |
| 17698 | (package |
| 17699 | (name "python-multiprocessing-logging") |
| 17700 | (version "0.3.1") |
| 17701 | (home-page "https://github.com/jruere/multiprocessing-logging") |
| 17702 | (source (origin |
| 17703 | (method git-fetch) |
| 17704 | (uri (git-reference |
| 17705 | (url home-page) |
| 17706 | (commit (string-append "v" version)))) |
| 17707 | (file-name (git-file-name name version)) |
| 17708 | (sha256 |
| 17709 | (base32 |
| 17710 | "1625wy3djlr3b2fpd3vi822f8gw6b75mnls5a4318dbi9za5pf0y")))) |
| 17711 | (build-system python-build-system) |
| 17712 | (synopsis "Manage logs from multiple processes") |
| 17713 | (description |
| 17714 | "This Python module implements a multiprocessing-aware @code{Handler} |
| 17715 | that, when set on the root @code{Logger}, will tunnel log records to the |
| 17716 | main process so that they are handled correctly.") |
| 17717 | (license license:lgpl3+))) |
| 17718 | |
| 17719 | (define-public python-vobject |
| 17720 | (package |
| 17721 | (name "python-vobject") |
| 17722 | (version "0.9.6.1") |
| 17723 | (source (origin |
| 17724 | (method url-fetch) |
| 17725 | (uri (pypi-uri "vobject" version)) |
| 17726 | (sha256 |
| 17727 | (base32 |
| 17728 | "0081g4gngw28j7vw8101jk600wz4gzfrhf5myrqvn2mrfkn2llcn")))) |
| 17729 | (build-system python-build-system) |
| 17730 | (arguments |
| 17731 | '(;; The test suite relies on some non-portable Windows interfaces. |
| 17732 | #:tests? #f)) |
| 17733 | (propagated-inputs |
| 17734 | (list python-dateutil python-pyicu)) |
| 17735 | (synopsis "Parse and generate vCard and vCalendar files") |
| 17736 | (description "Vobject is intended to be a full featured Python package for |
| 17737 | parsing and generating vCard and vCalendar files. Currently, iCalendar files |
| 17738 | are supported and well tested. vCard 3.0 files are supported, and all data |
| 17739 | should be imported, but only a few components are understood in a sophisticated |
| 17740 | way.") |
| 17741 | (home-page "https://eventable.github.io/vobject/") |
| 17742 | (license license:asl2.0))) |
| 17743 | |
| 17744 | (define-public python-munkres |
| 17745 | (package |
| 17746 | (name "python-munkres") |
| 17747 | (version "1.1.4") |
| 17748 | (source (origin |
| 17749 | (method url-fetch) |
| 17750 | (uri (pypi-uri "munkres" version)) |
| 17751 | (sha256 |
| 17752 | (base32 |
| 17753 | "00yvj8bxmhhhhd74v7j0x673is7vizmxwgb3dd5xmnkr74ybyi7w")))) |
| 17754 | (arguments |
| 17755 | (list |
| 17756 | #:phases |
| 17757 | '(modify-phases %standard-phases |
| 17758 | (add-after 'unpack 'disable-test |
| 17759 | (lambda _ |
| 17760 | ;; See https://github.com/bmc/munkres/issues/40 |
| 17761 | (substitute* "test/test_munkres.py" |
| 17762 | (("^def test_profit_float" m) |
| 17763 | (string-append "\ |
| 17764 | import platform |
| 17765 | @pytest.mark.skipif(platform.architecture()[0] == \"32bit\", |
| 17766 | reason=\"Fails on 32 bit architectures\") |
| 17767 | " m)))))))) |
| 17768 | (build-system python-build-system) |
| 17769 | (native-inputs (list python-pytest)) |
| 17770 | (home-page "https://software.clapper.org/munkres/") |
| 17771 | (synopsis "Implementation of the Munkres algorithm") |
| 17772 | (description "The Munkres module provides an implementation of the Munkres |
| 17773 | algorithm (also called the Hungarian algorithm or the Kuhn-Munkres algorithm), |
| 17774 | useful for solving the Assignment Problem.") |
| 17775 | (license license:bsd-3))) |
| 17776 | |
| 17777 | (define-public python-whoosh |
| 17778 | (package |
| 17779 | (name "python-whoosh") |
| 17780 | (version "2.7.4") |
| 17781 | (source |
| 17782 | (origin |
| 17783 | (method url-fetch) |
| 17784 | (uri (pypi-uri "Whoosh" version)) |
| 17785 | (sha256 |
| 17786 | (base32 |
| 17787 | "10qsqdjpbc85fykc1vgcs8xwbgn4l2l52c8d83xf1q59pwyn79bw")))) |
| 17788 | (build-system python-build-system) |
| 17789 | (arguments '(#:tests? #f)) ; Test invocation is no longer supported by Python. |
| 17790 | (native-inputs |
| 17791 | (list python-pytest)) |
| 17792 | (home-page "https://bitbucket.org/mchaput/whoosh") |
| 17793 | (synopsis "Full text indexing, search, and spell checking library") |
| 17794 | (description |
| 17795 | "Whoosh is a fast, pure-Python full text indexing, search, and spell |
| 17796 | checking library.") |
| 17797 | (license license:bsd-2))) |
| 17798 | |
| 17799 | (define-public python-codespell |
| 17800 | (package |
| 17801 | (name "python-codespell") |
| 17802 | (version "2.2.5") |
| 17803 | (source |
| 17804 | (origin |
| 17805 | (method url-fetch) |
| 17806 | (uri (pypi-uri "codespell" version)) |
| 17807 | (sha256 |
| 17808 | (base32 "0mmynpblhwbja0vmzbmbb9cgpxdl7b0lxaf9h2zr5dpddvgsv7vd")))) |
| 17809 | (build-system pyproject-build-system) |
| 17810 | (inputs |
| 17811 | (list python-chardet)) |
| 17812 | (native-inputs |
| 17813 | (list python-flake8 |
| 17814 | python-pygments |
| 17815 | python-pytest |
| 17816 | python-pytest-cov |
| 17817 | python-pytest-dependency |
| 17818 | python-tomli)) |
| 17819 | (arguments |
| 17820 | `(#:phases |
| 17821 | (modify-phases %standard-phases |
| 17822 | (replace 'check |
| 17823 | (lambda* (#:key outputs tests? #:allow-other-keys) |
| 17824 | (when tests? |
| 17825 | ;; Make installed executable available for running the tests. |
| 17826 | (setenv "PATH" |
| 17827 | (string-append (assoc-ref outputs "out") "/bin" |
| 17828 | ":" (getenv "PATH"))) |
| 17829 | (invoke "pytest" "-vv"))))))) |
| 17830 | (home-page "https://github.com/codespell-project/codespell/") |
| 17831 | (synopsis "Spellchecker for code") |
| 17832 | (description "Codespell fixes common misspellings in text files. |
| 17833 | It's designed primarily for checking misspelled words in source code, |
| 17834 | but it can be used with other files as well. It does not check for word |
| 17835 | membership in a complete dictionary, but instead looks for a set of |
| 17836 | common misspellings. Therefore it should catch errors like \"adn\", but |
| 17837 | it will not catch \"adnasdfasdf\". This also means it shouldn't |
| 17838 | generate false-positives when you use a niche term it doesn't know |
| 17839 | about.") |
| 17840 | (license |
| 17841 | (list |
| 17842 | ; for codespell and codespell_lib |
| 17843 | license:gpl2 |
| 17844 | ; for dictionary*.txt |
| 17845 | license:cc-by-sa3.0)))) |
| 17846 | |
| 17847 | (define-public python-pathlib |
| 17848 | (package |
| 17849 | (name "python-pathlib") |
| 17850 | (version "1.0.1") |
| 17851 | (source (origin |
| 17852 | (method url-fetch) |
| 17853 | (uri (pypi-uri "pathlib" version)) |
| 17854 | (sha256 |
| 17855 | (base32 |
| 17856 | "17zajiw4mjbkkv6ahp3xf025qglkj0805m9s41c45zryzj6p2h39")))) |
| 17857 | (build-system python-build-system) |
| 17858 | ;; The tests depend on the internal "test" module, which does not provide |
| 17859 | ;; a stable interface. |
| 17860 | (arguments `(#:tests? #f)) |
| 17861 | (home-page "https://pathlib.readthedocs.org/") |
| 17862 | (synopsis "Object-oriented file system paths") |
| 17863 | (description "Pathlib offers a set of classes to handle file system paths. |
| 17864 | It offers the following advantages over using string objects: |
| 17865 | |
| 17866 | @enumerate |
| 17867 | @item No more cumbersome use of os and os.path functions. Everything can |
| 17868 | be done easily through operators, attribute accesses, and method calls. |
| 17869 | @item Embodies the semantics of different path types. For example, |
| 17870 | comparing Windows paths ignores casing. |
| 17871 | @item Well-defined semantics, eliminating any inconsistencies or |
| 17872 | ambiguities (forward vs. backward slashes, etc.). |
| 17873 | @end enumerate |
| 17874 | |
| 17875 | Note: In Python 3.4, pathlib is now part of the standard library. For other |
| 17876 | Python versions please consider python-pathlib2 instead, which tracks the |
| 17877 | standard library module. This module (python-pathlib) isn't maintained |
| 17878 | anymore.") |
| 17879 | (license license:expat))) |
| 17880 | |
| 17881 | (define-public python-jellyfish |
| 17882 | (package |
| 17883 | (name "python-jellyfish") |
| 17884 | (version "0.8.8") |
| 17885 | (source (origin |
| 17886 | (method url-fetch) |
| 17887 | (uri (pypi-uri "jellyfish" version)) |
| 17888 | (sha256 |
| 17889 | (base32 |
| 17890 | "0p2s6b30sfffx8sya2i8kz0i0riw9fq1fi0k89s8kdgrmjf0h1h5")))) |
| 17891 | (build-system python-build-system) |
| 17892 | (arguments |
| 17893 | `(#:tests? #f ; XXX: Tests cannot find C coded version. |
| 17894 | #:phases |
| 17895 | (modify-phases %standard-phases |
| 17896 | (replace 'check |
| 17897 | (lambda* (#:key inputs outputs tests? #:allow-other-keys) |
| 17898 | (when tests? |
| 17899 | (add-installed-pythonpath inputs outputs) |
| 17900 | (invoke "pytest" "-vv" "jellyfish/test.py"))))))) |
| 17901 | (native-inputs |
| 17902 | (list python-pytest)) |
| 17903 | (home-page "https://github.com/jamesturk/jellyfish") |
| 17904 | (synopsis "Approximate and phonetic matching of strings") |
| 17905 | (description "Jellyfish uses a variety of string comparison and phonetic |
| 17906 | encoding algorithms to do fuzzy string matching.") |
| 17907 | (license license:bsd-2))) |
| 17908 | |
| 17909 | (define-public python-pdfminer-six |
| 17910 | (package |
| 17911 | (name "python-pdfminer-six") |
| 17912 | (version "20201018") |
| 17913 | ;; There are no tests in the PyPI tarball. |
| 17914 | (source |
| 17915 | (origin |
| 17916 | (method git-fetch) |
| 17917 | (uri (git-reference |
| 17918 | (url "https://github.com/pdfminer/pdfminer.six") |
| 17919 | (commit version))) |
| 17920 | (file-name (git-file-name name version)) |
| 17921 | (sha256 |
| 17922 | (base32 "1a2fxxnnjqbx344znpvx7cnv1881dk6585ibw01inhfq3w6yj2lr")))) |
| 17923 | (build-system python-build-system) |
| 17924 | (arguments |
| 17925 | `(#:phases |
| 17926 | (modify-phases %standard-phases |
| 17927 | ;; Tests write to the source tree. |
| 17928 | (add-after 'unpack 'make-git-checkout-writable |
| 17929 | (lambda _ |
| 17930 | (for-each make-file-writable (find-files ".")) |
| 17931 | #t)) |
| 17932 | (replace 'check |
| 17933 | (lambda _ |
| 17934 | (invoke "make" "test")))))) |
| 17935 | (propagated-inputs |
| 17936 | (list python-chardet python-cryptography python-sortedcontainers)) |
| 17937 | (native-inputs |
| 17938 | (list python-nose python-tox)) |
| 17939 | (home-page "https://github.com/pdfminer/pdfminer.six") |
| 17940 | (synopsis "PDF parser and analyzer") |
| 17941 | (description "@code{pdfminer.six} is a community maintained fork of |
| 17942 | the original PDFMiner. It is a tool for extracting information from PDF |
| 17943 | documents. It focuses on getting and analyzing text data. Pdfminer.six |
| 17944 | extracts the text from a page directly from the sourcecode of the PDF. It |
| 17945 | can also be used to get the exact location, font or color of the text.") |
| 17946 | (license license:expat))) |
| 17947 | |
| 17948 | (define-public python-rarfile |
| 17949 | (package |
| 17950 | (name "python-rarfile") |
| 17951 | (version "4.0") |
| 17952 | (source (origin |
| 17953 | (method url-fetch) |
| 17954 | (uri (pypi-uri "rarfile" version)) |
| 17955 | (sha256 |
| 17956 | (base32 |
| 17957 | "1882wv9szcm29mnyhjmspyflyr2l7z73srn14w4dlnww49lqfm37")))) |
| 17958 | (build-system python-build-system) |
| 17959 | (arguments |
| 17960 | `(#:tests? #f ;; The bsdtar utility is very limited and most tests fail. |
| 17961 | #:phases |
| 17962 | (modify-phases %standard-phases |
| 17963 | (add-after 'unpack 'patch |
| 17964 | (lambda* (#:key inputs #:allow-other-keys) |
| 17965 | (substitute* "rarfile.py" |
| 17966 | ;; Disable unrar and unar, which are unavailable on Guix. |
| 17967 | (("(unrar|unar)=True" all tool) (string-append tool "=False")) |
| 17968 | ;; Hardcode path to bsdtar |
| 17969 | (("\"bsdtar\"") |
| 17970 | (string-append "\"" (assoc-ref inputs "libarchive") "/bin/bsdtar\""))) |
| 17971 | #t)) |
| 17972 | (replace 'check |
| 17973 | (lambda* (#:key inputs tests? #:allow-other-keys) |
| 17974 | (when tests? |
| 17975 | (invoke "pytest" "-vv"))))))) |
| 17976 | (native-inputs (list python-pytest)) |
| 17977 | (inputs (list libarchive)) |
| 17978 | (home-page "https://github.com/markokr/rarfile") |
| 17979 | (synopsis "RAR archive reader for Python") |
| 17980 | (description "This is Python module for RAR archive reading. The interface |
| 17981 | is made as zipfile like as possible.") |
| 17982 | (license license:isc))) |
| 17983 | |
| 17984 | (define-public python-slugid |
| 17985 | (package |
| 17986 | (name "python-slugid") |
| 17987 | (version "2.0.0") |
| 17988 | (source |
| 17989 | (origin |
| 17990 | (method git-fetch) |
| 17991 | (uri (git-reference |
| 17992 | (url "https://github.com/taskcluster/slugid.py") |
| 17993 | (commit (string-append "v" version)))) |
| 17994 | (file-name (git-file-name name version)) |
| 17995 | (sha256 |
| 17996 | (base32 "1h64p2jlqv6lsmw8h2j203kx3bhv72cwzpk5gdhsaamw30cp3h1i")))) |
| 17997 | (build-system python-build-system) |
| 17998 | (native-inputs (list python-nose)) |
| 17999 | (arguments |
| 18000 | (list #:phases |
| 18001 | #~(modify-phases %standard-phases |
| 18002 | (replace 'check |
| 18003 | (lambda* (#:key inputs tests? #:allow-other-keys) |
| 18004 | (when tests? |
| 18005 | ;; The project uses tox to run the tests via nose. |
| 18006 | (invoke "nosetests" "-v" "test.py"))))))) |
| 18007 | (home-page "http://taskcluster.github.io/slugid.py") |
| 18008 | (synopsis "Module for Base64 encoded UUID v4 slugs") |
| 18009 | (description "This package provides a module for generating v4 |
| 18010 | UUIDs and encoding them into 22 character URL-safe base64 slug |
| 18011 | representation.") |
| 18012 | (license license:mpl2.0))) |
| 18013 | |
| 18014 | (define-public python-rich |
| 18015 | (package |
| 18016 | (name "python-rich") |
| 18017 | (version "12.4.1") |
| 18018 | (source (origin |
| 18019 | (method url-fetch) |
| 18020 | (uri (pypi-uri "rich" version)) |
| 18021 | (sha256 |
| 18022 | (base32 |
| 18023 | "149vjb4cpf9mz14iig0b6d8065dm8aslp6pc45g9ipmp1wf00ffj")))) |
| 18024 | (build-system python-build-system) |
| 18025 | (arguments |
| 18026 | `(#:phases |
| 18027 | (modify-phases %standard-phases |
| 18028 | (replace 'check |
| 18029 | (lambda* (#:key inputs tests? #:allow-other-keys) |
| 18030 | (when tests? |
| 18031 | (copy-recursively (string-append |
| 18032 | (assoc-ref inputs "tests") "/tests") |
| 18033 | "tests") |
| 18034 | (invoke "python" "-m" "pytest" "-vv"))))))) |
| 18035 | (propagated-inputs |
| 18036 | (list python-attrs python-colorama python-commonmark python-pygments |
| 18037 | python-typing-extensions)) |
| 18038 | (native-inputs |
| 18039 | `(("python-pytest" ,python-pytest) |
| 18040 | ("tests" |
| 18041 | ;; The release on pypi comes without tests. We can't build from this |
| 18042 | ;; checkout, though, because installation requires an invocation of |
| 18043 | ;; poetry. |
| 18044 | ,(origin |
| 18045 | (method git-fetch) |
| 18046 | (uri (git-reference |
| 18047 | (url "https://github.com/willmcgugan/rich") |
| 18048 | (commit (string-append "v" version)))) |
| 18049 | (file-name (git-file-name name version)) |
| 18050 | (sha256 |
| 18051 | (base32 |
| 18052 | "17c3gljn8zv32xnpsgd3fqgqn4r7cdfqri41hridcpbhssdgkyp9")))))) |
| 18053 | (home-page "https://github.com/willmcgugan/rich") |
| 18054 | (synopsis "Render rich text and more to the terminal") |
| 18055 | (description |
| 18056 | "This is a Python package for rendering rich text, tables, progress bars, |
| 18057 | syntax highlighting, markdown and more to the terminal.") |
| 18058 | (license license:expat))) |
| 18059 | |
| 18060 | (define-public python-rich-click |
| 18061 | (package |
| 18062 | (name "python-rich-click") |
| 18063 | (version "1.6.1") |
| 18064 | (source (origin |
| 18065 | (method url-fetch) |
| 18066 | (uri (pypi-uri "rich-click" version)) |
| 18067 | (sha256 |
| 18068 | (base32 |
| 18069 | "0zkp2sn0vz1hhjbv9bf8fifyzi8ib2d7v7sfak8n3qn67rlrdzzq")))) |
| 18070 | (build-system python-build-system) |
| 18071 | (propagated-inputs |
| 18072 | (list python-click python-importlib-metadata python-rich)) |
| 18073 | (native-inputs (list python-pre-commit)) |
| 18074 | (home-page "https://github.com/ewels/rich-click") |
| 18075 | (synopsis "Format click help output nicely with rich") |
| 18076 | (description "Click is a \"Python package for creating beautiful command |
| 18077 | line interfaces\". Rich is a \"Python library for rich text and beautiful |
| 18078 | formatting in the terminal\". The intention of rich-click is to provide |
| 18079 | attractive help output from click, formatted with rich, with minimal |
| 18080 | customization required.") |
| 18081 | (license license:expat))) |
| 18082 | |
| 18083 | (define-public python-textual |
| 18084 | (package |
| 18085 | (name "python-textual") |
| 18086 | (version "0.1.18") |
| 18087 | (source (origin |
| 18088 | (method url-fetch) |
| 18089 | (uri (pypi-uri "textual" version)) |
| 18090 | (sha256 |
| 18091 | (base32 |
| 18092 | "08yg5a51hz1axfj5hx28hx31gq5apcj6vpkkmawmiplisa73z25j")))) |
| 18093 | (build-system python-build-system) |
| 18094 | (arguments |
| 18095 | (let ((tests |
| 18096 | ;; The release on pypi comes without tests. We can't build |
| 18097 | ;; from this checkout, though, because installation requires |
| 18098 | ;; an invocation of poetry. |
| 18099 | (origin |
| 18100 | (method git-fetch) |
| 18101 | (uri (git-reference |
| 18102 | (url "https://github.com/Textualize/textual") |
| 18103 | (commit (string-append "v" version)))) |
| 18104 | (file-name (git-file-name name version)) |
| 18105 | (sha256 |
| 18106 | (base32 |
| 18107 | "0b3ycwqhp21mg9fvmadgxhgbvkwq6fd784l2xcmvy77rravrnnax"))))) |
| 18108 | (list #:phases |
| 18109 | #~(modify-phases %standard-phases |
| 18110 | (replace 'check |
| 18111 | (lambda* (#:key tests? #:allow-other-keys) |
| 18112 | (when tests? |
| 18113 | (copy-recursively #$(file-append tests "/tests") |
| 18114 | "tests") |
| 18115 | (invoke "python" "-m" "pytest" "-vv")))))))) |
| 18116 | (propagated-inputs |
| 18117 | (list python-rich python-typing-extensions)) |
| 18118 | (native-inputs |
| 18119 | (list python-pytest)) |
| 18120 | (home-page "https://github.com/Textualize/textual") |
| 18121 | (synopsis "Build text user interfaces in Python") |
| 18122 | (description "Textual is a @acronym{TUI, Text User Interface} framework |
| 18123 | for Python inspired by modern web development.") |
| 18124 | (license license:expat))) |
| 18125 | |
| 18126 | (define-public python-magic |
| 18127 | (package |
| 18128 | (name "python-magic") |
| 18129 | (version "0.4.27") |
| 18130 | (home-page "https://github.com/ahupp/python-magic") |
| 18131 | (source |
| 18132 | (origin |
| 18133 | (method git-fetch) |
| 18134 | (uri (git-reference (url home-page) (commit version))) |
| 18135 | (file-name (git-file-name name version)) |
| 18136 | (sha256 |
| 18137 | (base32 |
| 18138 | "1x11kfn4g244fia9a7y4ly8dqv5zsxfg3l5azc54dl6gkp2bk7vx")))) |
| 18139 | (build-system python-build-system) |
| 18140 | (arguments |
| 18141 | '(#:phases (modify-phases %standard-phases |
| 18142 | ;; Replace a specific method call with a hard-coded |
| 18143 | ;; path to the necessary libmagic.so file in the |
| 18144 | ;; store. If we don't do this, then the method call |
| 18145 | ;; will fail to find the libmagic.so file, which in |
| 18146 | ;; turn will cause any application using |
| 18147 | ;; python-magic to fail. |
| 18148 | (add-before 'build 'hard-code-path-to-libmagic |
| 18149 | (lambda* (#:key inputs #:allow-other-keys) |
| 18150 | (let ((magic (search-input-file inputs "/lib/libmagic.so"))) |
| 18151 | (substitute* "magic/loader.py" |
| 18152 | (("find_library\\('magic'\\)") |
| 18153 | (string-append "'" magic "'")))))) |
| 18154 | (replace 'check |
| 18155 | (lambda* (#:key tests? #:allow-other-keys) |
| 18156 | ;; The test suite mandates this variable. |
| 18157 | (setenv "LC_ALL" "en_US.UTF-8") |
| 18158 | (if tests? |
| 18159 | (with-directory-excursion "test" |
| 18160 | (invoke "python" "./libmagic_test.py")) |
| 18161 | (format #t "test suite not run~%"))))))) |
| 18162 | (native-inputs |
| 18163 | (list which)) |
| 18164 | (inputs |
| 18165 | ;; python-magic needs to be able to find libmagic.so. |
| 18166 | (list file)) |
| 18167 | (synopsis "File type identification using libmagic") |
| 18168 | (description |
| 18169 | "This module uses ctypes to access the libmagic file type |
| 18170 | identification library. It makes use of the local magic database and |
| 18171 | supports both textual and MIME-type output. Note that this module and |
| 18172 | the python-file module both provide a \"magic.py\" file; these two |
| 18173 | modules, which are different and were developed separately, both serve |
| 18174 | the same purpose: to provide Python bindings for libmagic.") |
| 18175 | (license license:expat))) |
| 18176 | |
| 18177 | (define-public s3cmd |
| 18178 | (package |
| 18179 | (name "s3cmd") |
| 18180 | (version "2.3.0") |
| 18181 | (source |
| 18182 | (origin |
| 18183 | (method git-fetch) |
| 18184 | (uri (git-reference |
| 18185 | (url "https://github.com/s3tools/s3cmd") |
| 18186 | (commit (string-append "v" version)))) |
| 18187 | (file-name (git-file-name name version)) |
| 18188 | (sha256 |
| 18189 | (base32 "0rdgwwmmp8mdxc84bxq6k9a7v7z2qgc3df47djzs2b84gw81dglx")))) |
| 18190 | (build-system python-build-system) |
| 18191 | (arguments |
| 18192 | (list #:phases |
| 18193 | #~(modify-phases %standard-phases |
| 18194 | (add-after 'unpack 'hide-wrapping |
| 18195 | (lambda _ |
| 18196 | (substitute* "S3/MultiPart.py" |
| 18197 | (("sys\\.argv\\[0\\]") "\"s3cmd\"")) |
| 18198 | (substitute* "s3cmd" |
| 18199 | (("optparser\\.get_prog_name\\(\\)") "\"s3cmd\""))))))) |
| 18200 | (inputs |
| 18201 | (list python-dateutil |
| 18202 | python-magic)) |
| 18203 | (home-page "https://s3tools.org/s3cmd") |
| 18204 | (synopsis "Command line tool for S3-compatible storage services") |
| 18205 | (description |
| 18206 | "S3cmd is a command line tool for uploading, retrieving and managing data |
| 18207 | in storage services that are compatible with the Amazon Simple Storage |
| 18208 | Service (S3) protocol, including S3 itself. It supports rsync-like backup, |
| 18209 | GnuPG encryption, and more. It also supports management of Amazon's |
| 18210 | CloudFront content delivery network.") |
| 18211 | (license license:gpl2+))) |
| 18212 | |
| 18213 | (define-public python-pkgconfig |
| 18214 | (package |
| 18215 | (name "python-pkgconfig") |
| 18216 | (version "1.3.1") |
| 18217 | (source |
| 18218 | (origin |
| 18219 | (method url-fetch) |
| 18220 | (uri (pypi-uri "pkgconfig" version)) |
| 18221 | (sha256 |
| 18222 | (base32 |
| 18223 | "107x2wmchlch8saixb488cgjz9n6inl38wi7nxkb942rbaapxiqb")))) |
| 18224 | (build-system python-build-system) |
| 18225 | (native-inputs |
| 18226 | (list python-nose)) |
| 18227 | (inputs |
| 18228 | (list pkg-config)) |
| 18229 | (arguments |
| 18230 | `(#:phases |
| 18231 | (modify-phases %standard-phases |
| 18232 | (add-before 'build 'patch |
| 18233 | ;; Hard-code the path to pkg-config. |
| 18234 | (lambda _ |
| 18235 | (substitute* "pkgconfig/pkgconfig.py" |
| 18236 | (("'pkg-config'") |
| 18237 | (string-append "'" (which "pkg-config") "'"))))) |
| 18238 | (replace 'check |
| 18239 | (lambda _ |
| 18240 | (invoke "nosetests" "test.py")))))) |
| 18241 | (home-page "https://github.com/matze/pkgconfig") |
| 18242 | (synopsis "Python interface for pkg-config") |
| 18243 | (description "This module provides a Python interface to pkg-config. It |
| 18244 | can be used to find all pkg-config packages, check if a package exists, |
| 18245 | check if a package meets certain version requirements, query CFLAGS and |
| 18246 | LDFLAGS and parse the output to build extensions with setup.py.") |
| 18247 | (license license:expat))) |
| 18248 | |
| 18249 | (define-public python-bz2file |
| 18250 | (package |
| 18251 | (name "python-bz2file") |
| 18252 | (version "0.98") |
| 18253 | (source |
| 18254 | (origin |
| 18255 | (method url-fetch) |
| 18256 | (uri (pypi-uri "bz2file" version)) |
| 18257 | (sha256 |
| 18258 | (base32 |
| 18259 | "126s53fkpx04f33a829yqqk8fj4png3qwg4m66cvlmhmwc8zihb4")))) |
| 18260 | (build-system python-build-system) |
| 18261 | (arguments |
| 18262 | `(#:tests? #f)) ; Tests use deprecated python modules. |
| 18263 | (home-page "https://github.com/nvawda/bz2file") |
| 18264 | (synopsis "Read and write bzip2-compressed files") |
| 18265 | (description |
| 18266 | "Bz2file is a Python library for reading and writing bzip2-compressed |
| 18267 | files. It contains a drop-in replacement for the I/O interface in the |
| 18268 | standard library's @code{bz2} module, including features from the latest |
| 18269 | development version of CPython that are not available in older releases.") |
| 18270 | (license license:asl2.0))) |
| 18271 | |
| 18272 | (define-public python-future |
| 18273 | (package |
| 18274 | (name "python-future") |
| 18275 | (version "0.18.2") |
| 18276 | (source |
| 18277 | (origin |
| 18278 | (method url-fetch) |
| 18279 | (uri (pypi-uri "future" version)) |
| 18280 | (sha256 |
| 18281 | (base32 |
| 18282 | "0zakvfj87gy6mn1nba06sdha63rn4njm7bhh0wzyrxhcny8avgmi")))) |
| 18283 | (build-system python-build-system) |
| 18284 | ;; Many tests connect to the network or are otherwise flawed. |
| 18285 | ;; https://github.com/PythonCharmers/python-future/issues/210 |
| 18286 | (arguments |
| 18287 | `(#:tests? #f |
| 18288 | #:phases |
| 18289 | (modify-phases %standard-phases |
| 18290 | (replace 'sanity-check |
| 18291 | (let ((sanity-check (assoc-ref %standard-phases 'sanity-check))) |
| 18292 | (lambda* (#:key inputs outputs #:allow-other-keys #:rest args) |
| 18293 | (let* ((files (find-files (site-packages inputs outputs) |
| 18294 | "top_level\\.txt")) |
| 18295 | (backups (map (lambda (f) (string-append f ".bak")) |
| 18296 | files))) |
| 18297 | (for-each copy-file files backups) |
| 18298 | (substitute* files |
| 18299 | ;; Nobody be usin' winreg on Guix |
| 18300 | ;; Also, don't force users to have tkinter when they don't |
| 18301 | ;; need it |
| 18302 | (("(winreg|tkinter)") "")) |
| 18303 | (apply sanity-check args) |
| 18304 | (for-each rename-file backups files)))))))) |
| 18305 | (home-page "https://python-future.org") |
| 18306 | (synopsis "Single-source support for Python 3 and 2") |
| 18307 | (description |
| 18308 | "@code{python-future} is the missing compatibility layer between Python 2 and |
| 18309 | Python 3. It allows you to use a single, clean Python 3.x-compatible codebase |
| 18310 | to support both Python 2 and Python 3 with minimal overhead.") |
| 18311 | (license license:expat))) |
| 18312 | |
| 18313 | (define-public python-cysignals |
| 18314 | (package |
| 18315 | (name "python-cysignals") |
| 18316 | (version "1.9.0") |
| 18317 | (source |
| 18318 | (origin |
| 18319 | (method url-fetch) |
| 18320 | (uri (pypi-uri "cysignals" version)) |
| 18321 | (sha256 |
| 18322 | (base32 |
| 18323 | "15ix8crpad26cfl1skyg7qajqqfdrm8q5ahhmlfmqi1aw0jqj2g2")))) |
| 18324 | (build-system python-build-system) |
| 18325 | (native-inputs |
| 18326 | (list python-cython python-sphinx)) |
| 18327 | (inputs |
| 18328 | (list pari-gp)) |
| 18329 | (arguments |
| 18330 | `(#:modules ((guix build python-build-system) |
| 18331 | ((guix build gnu-build-system) #:prefix gnu:) |
| 18332 | (guix build utils)) |
| 18333 | ;; FIXME: Tests are executed after installation and currently fail |
| 18334 | ;; when not installing into standard locations; the author is working |
| 18335 | ;; on a fix. |
| 18336 | #:tests? #f |
| 18337 | #:phases |
| 18338 | (modify-phases %standard-phases |
| 18339 | (add-before |
| 18340 | 'build 'configure |
| 18341 | (assoc-ref gnu:%standard-phases 'configure))))) |
| 18342 | (home-page |
| 18343 | "https://github.com/sagemath/cysignals") |
| 18344 | (synopsis |
| 18345 | "Handling of interrupts and signals for Cython") |
| 18346 | (description |
| 18347 | "The cysignals package provides mechanisms to handle interrupts (and |
| 18348 | other signals and errors) in Cython code, using two related approaches, |
| 18349 | for mixed Cython/Python code or external C libraries and pure Cython code, |
| 18350 | respectively.") |
| 18351 | (license license:lgpl3+))) |
| 18352 | |
| 18353 | (define-public python-rope |
| 18354 | (package |
| 18355 | (name "python-rope") |
| 18356 | (version "1.1.1") |
| 18357 | (source |
| 18358 | (origin |
| 18359 | (method url-fetch) |
| 18360 | (uri (pypi-uri "rope" version)) |
| 18361 | (sha256 |
| 18362 | (base32 |
| 18363 | "0bkzwkllxxdxd3w70xiy137lqvnlmmaplsc2ya3s23ss4kq8y10k")))) |
| 18364 | (build-system python-build-system) |
| 18365 | (arguments |
| 18366 | (list #:phases |
| 18367 | `(modify-phases %standard-phases |
| 18368 | (add-after 'unpack 'disable-broken-test |
| 18369 | (lambda _ |
| 18370 | (substitute* "ropetest/contrib/autoimporttest.py" |
| 18371 | (("def test_search_module") |
| 18372 | "def __notest_search_module") |
| 18373 | (("def test_search_submodule") |
| 18374 | "def __notest_search_submodule"))))))) |
| 18375 | (native-inputs |
| 18376 | (list python-pytest-timeout |
| 18377 | python-pytest)) |
| 18378 | (home-page "https://github.com/python-rope/rope") |
| 18379 | (synopsis "Refactoring library for Python") |
| 18380 | (description "Rope is a refactoring library for Python. It facilitates |
| 18381 | the renaming, moving and extracting of attributes, functions, modules, fields |
| 18382 | and parameters in Python source code. These refactorings can also be applied |
| 18383 | to occurrences in strings and comments.") |
| 18384 | (license license:lgpl3+))) |
| 18385 | |
| 18386 | (define-public python-py3status |
| 18387 | (package |
| 18388 | (name "python-py3status") |
| 18389 | (version "3.50") |
| 18390 | (source |
| 18391 | (origin |
| 18392 | (method url-fetch) |
| 18393 | (uri (pypi-uri "py3status" version)) |
| 18394 | (sha256 |
| 18395 | (base32 "0j2dx9lzpic15r8p0r0s3jmcskxpacahxl640b4864ldn5rlnh9d")))) |
| 18396 | (build-system python-build-system) |
| 18397 | (inputs |
| 18398 | (list file)) |
| 18399 | (arguments |
| 18400 | '(#:phases |
| 18401 | (modify-phases %standard-phases |
| 18402 | ;; 'file' is used for detection of configuration file encoding |
| 18403 | ;; let's make link the dependency to particular input |
| 18404 | (add-before 'build 'patch-file-path |
| 18405 | (lambda* (#:key inputs #:allow-other-keys) |
| 18406 | (let ((file-path (assoc-ref inputs "file"))) |
| 18407 | (substitute* "py3status/parse_config.py" |
| 18408 | (("\\[\"file\", \"-b\"") |
| 18409 | (string-append "['" file-path "/bin/file', '-b'"))) |
| 18410 | #t)))) |
| 18411 | #:tests? #f)) ; TODO: Requires many libraries not in Guix. |
| 18412 | (home-page "https://github.com/ultrabug/py3status") |
| 18413 | (synopsis "Extensible i3status wrapper written in Python") |
| 18414 | (description "py3status is an i3status wrapper which extends i3status |
| 18415 | functionality in a modular way, allowing you to extend your panel with your |
| 18416 | own code, responding to click events and updating clock every second.") |
| 18417 | (license license:bsd-3))) |
| 18418 | |
| 18419 | (define-public python-tblib |
| 18420 | (package |
| 18421 | (name "python-tblib") |
| 18422 | (version "1.6.0") |
| 18423 | (source (origin |
| 18424 | (method url-fetch) |
| 18425 | (uri (pypi-uri "tblib" version)) |
| 18426 | (sha256 |
| 18427 | (base32 |
| 18428 | "0i136n5pydmd202254wzrdbspkw0br0c9mbxhfs9hpfbahvyx6r2")))) |
| 18429 | (build-system python-build-system) |
| 18430 | (arguments |
| 18431 | `(#:phases |
| 18432 | (modify-phases %standard-phases |
| 18433 | (replace 'check |
| 18434 | (lambda _ |
| 18435 | (invoke "py.test" "-vv" "tests" "README.rst")))))) |
| 18436 | (native-inputs |
| 18437 | (list python-pytest python-six)) |
| 18438 | (home-page "https://github.com/ionelmc/python-tblib") |
| 18439 | (synopsis "Traceback serialization library") |
| 18440 | (description |
| 18441 | "Traceback serialization allows you to: |
| 18442 | |
| 18443 | @enumerate |
| 18444 | @item Pickle tracebacks and raise exceptions with pickled tracebacks in |
| 18445 | different processes. This allows better error handling when running code over |
| 18446 | multiple processes (imagine multiprocessing, billiard, futures, celery etc). |
| 18447 | |
| 18448 | @item Parse traceback strings and raise with the parsed tracebacks. |
| 18449 | @end enumerate\n") |
| 18450 | (license license:bsd-3))) |
| 18451 | |
| 18452 | (define-public python-tftpy |
| 18453 | (package |
| 18454 | (name "python-tftpy") |
| 18455 | (version "0.8.2") |
| 18456 | (source |
| 18457 | (origin |
| 18458 | (method git-fetch) ;no tests in PyPI archive |
| 18459 | (uri (git-reference |
| 18460 | (url "https://github.com/msoulier/tftpy") |
| 18461 | (commit version))) |
| 18462 | (file-name (git-file-name name version)) |
| 18463 | (sha256 |
| 18464 | (base32 |
| 18465 | "1gl04ps8h8r7av3h0zbm8gwmkqs9rkk5vf7n8mv2bzrkwvy9hacc")))) |
| 18466 | (build-system python-build-system) |
| 18467 | (arguments |
| 18468 | `(#:phases (modify-phases %standard-phases |
| 18469 | (replace 'check |
| 18470 | (lambda* (#:key tests? inputs outputs #:allow-other-keys) |
| 18471 | (when tests? |
| 18472 | ;; The default DEBUG logging level is way too verbose. |
| 18473 | (substitute* "t/test.py" |
| 18474 | (("logging\\.DEBUG") |
| 18475 | "logging.INFO")) |
| 18476 | (invoke "python" "-m" "unittest" "t/test.py"))))))) |
| 18477 | (home-page "https://tftpy.sourceforge.net/") |
| 18478 | (synopsis "Python trivial file transfer protocol (TFTP) library") |
| 18479 | (description "TFTPy is a trivial file transfer protocol (TFTP) Python |
| 18480 | library. It can be used to act both as a TFTP client or TFTP server.") |
| 18481 | (license license:expat))) |
| 18482 | |
| 18483 | (define-public python-greenlet |
| 18484 | (package |
| 18485 | (name "python-greenlet") |
| 18486 | (version "2.0.1") |
| 18487 | (source |
| 18488 | (origin |
| 18489 | (method url-fetch) |
| 18490 | (uri (pypi-uri "greenlet" version)) |
| 18491 | (sha256 |
| 18492 | (base32 "0rqgxp1fai0fcyv46nd1389mxvk3ccixgdkwws70xnk08ib05rj2")))) |
| 18493 | (build-system python-build-system) |
| 18494 | (home-page "https://greenlet.readthedocs.io/") |
| 18495 | (synopsis "Lightweight in-process concurrent programming") |
| 18496 | (description |
| 18497 | "Greenlet package is a spin-off of Stackless, a version of CPython |
| 18498 | that supports micro-threads called \"tasklets\". Tasklets run |
| 18499 | pseudo-concurrently (typically in a single or a few OS-level threads) and |
| 18500 | are synchronized with data exchanges on \"channels\".") |
| 18501 | (license (list license:psfl license:expat)))) |
| 18502 | |
| 18503 | (define-public python-objgraph |
| 18504 | (package |
| 18505 | (name "python-objgraph") |
| 18506 | (version "3.4.1") |
| 18507 | (source |
| 18508 | (origin |
| 18509 | (method url-fetch) |
| 18510 | (uri (pypi-uri "objgraph" version)) |
| 18511 | (sha256 |
| 18512 | (base32 |
| 18513 | "19qmqsh984zq1rzzjy4vqnmviaqnymcyl8h7z99pnicbgwnm2adz")))) |
| 18514 | (build-system python-build-system) |
| 18515 | (propagated-inputs |
| 18516 | (list python-graphviz)) |
| 18517 | (native-inputs |
| 18518 | (list python-mock graphviz)) |
| 18519 | (home-page "https://mg.pov.lt/objgraph/") |
| 18520 | (synopsis "Draw Python object reference graphs with graphviz") |
| 18521 | (description |
| 18522 | "This package provides tools to draw Python object reference graphs with |
| 18523 | graphviz.") |
| 18524 | (license license:expat))) |
| 18525 | |
| 18526 | (define-public python-gevent |
| 18527 | (package |
| 18528 | (name "python-gevent") |
| 18529 | (version "22.10.2") |
| 18530 | (source (origin |
| 18531 | (method url-fetch) |
| 18532 | (uri (pypi-uri "gevent" version)) |
| 18533 | (sha256 |
| 18534 | (base32 |
| 18535 | "0ijwwm2yr7jgz8xs1rbvzj6gp7xw1pagf0i7g99b6dzffshiv80w")) |
| 18536 | (modules '((guix build utils))) |
| 18537 | (snippet |
| 18538 | '(begin |
| 18539 | ;; unbunding libev and c-ares |
| 18540 | (delete-file-recursively "deps") |
| 18541 | ;; Remove cythonized files. |
| 18542 | (with-directory-excursion "src/gevent" |
| 18543 | (for-each delete-file |
| 18544 | (append (list "resolver/cares.c" |
| 18545 | "queue.c" |
| 18546 | "local.c" |
| 18547 | "libev/corecext.h" |
| 18548 | "libev/corecext.c" |
| 18549 | "greenlet.c" |
| 18550 | "event.c" |
| 18551 | "_waiter.c" |
| 18552 | "_tracer.c" |
| 18553 | "_semaphore.c" |
| 18554 | "_imap.c" |
| 18555 | "_ident.c" |
| 18556 | "_hub_primitives.c" |
| 18557 | "_hub_local.c" |
| 18558 | "_greenlet_primitives.c" |
| 18559 | "_abstract_linkable.c") |
| 18560 | (find-files "." "\\.html$")))))))) |
| 18561 | (build-system python-build-system) |
| 18562 | (arguments |
| 18563 | `(#:modules ((ice-9 ftw) |
| 18564 | (ice-9 match) |
| 18565 | (srfi srfi-26) |
| 18566 | (guix build utils) |
| 18567 | (guix build python-build-system)) |
| 18568 | #:phases (modify-phases %standard-phases |
| 18569 | (add-before 'patch-source-shebangs 'patch-hard-coded-paths |
| 18570 | (lambda _ |
| 18571 | (substitute* "src/gevent/subprocess.py" |
| 18572 | (("/bin/sh") (which "sh"))) |
| 18573 | (for-each (lambda (file) |
| 18574 | (substitute* file |
| 18575 | (("/bin/sh") (which "sh")) |
| 18576 | (("/bin/true") (which "true")))) |
| 18577 | (find-files "src/greentest" "\\.py$")))) |
| 18578 | (add-before 'build 'do-not-use-bundled-sources |
| 18579 | (lambda _ |
| 18580 | (setenv "GEVENTSETUP_EMBED" "0") |
| 18581 | |
| 18582 | ;; Prevent building bundled libev. |
| 18583 | (substitute* "setup.py" |
| 18584 | (("run_make=_BUILDING") |
| 18585 | "run_make=False")))) |
| 18586 | (add-before 'build 'add-greenlet-on-C_INCLUDE_PATH |
| 18587 | (lambda* (#:key inputs #:allow-other-keys) |
| 18588 | (let ((greenlet (string-append |
| 18589 | (assoc-ref inputs "python-greenlet") |
| 18590 | "/include"))) |
| 18591 | (match (scandir greenlet |
| 18592 | (lambda (item) |
| 18593 | (string-prefix? "python" item))) |
| 18594 | ((python) |
| 18595 | (setenv "C_INCLUDE_PATH" |
| 18596 | (string-append greenlet "/" python ":" |
| 18597 | (or (getenv "C_INCLUDE_PATH") |
| 18598 | "")))))))) |
| 18599 | (add-before 'check 'pretend-to-be-CI |
| 18600 | (lambda _ |
| 18601 | ;; A few tests are skipped due to network constraints or |
| 18602 | ;; get longer timeouts when running in a CI environment. |
| 18603 | ;; Piggy-back on that, as we need the same adjustments. |
| 18604 | (setenv "TRAVIS" "1") |
| 18605 | (setenv "APPVEYOR" "1"))) |
| 18606 | (add-before 'check 'adjust-tests |
| 18607 | (lambda _ |
| 18608 | (let ((disabled-tests |
| 18609 | '(;; These tests relies on networking which is |
| 18610 | ;; not available in the build container. |
| 18611 | "test__getaddrinfo_import.py" |
| 18612 | "test__server_pywsgi.py" |
| 18613 | ;; XXX: These tests borrow functionality from the |
| 18614 | ;; Python builtin 'test' module, but it is not |
| 18615 | ;; installed with the Guix Python distribution. |
| 18616 | "test_smtpd.py" |
| 18617 | "test_wsgiref.py" |
| 18618 | "test_urllib2.py" |
| 18619 | "test_thread.py" |
| 18620 | "test_threading.py" |
| 18621 | "test__threading_2.py" |
| 18622 | ;; These tests rely on KeyboardInterrupts which do not |
| 18623 | ;; work inside the build container for some reason |
| 18624 | ;; (lack of controlling terminal?). |
| 18625 | "test_subprocess.py" |
| 18626 | "test__issues461_471.py" |
| 18627 | ;; TODO: Patch out the tests that use getprotobyname, etc |
| 18628 | ;; instead of disabling all the tests from these files. |
| 18629 | "test__resolver_dnspython.py" |
| 18630 | "test__doctests.py" |
| 18631 | "test__all__.py" |
| 18632 | "test___config.py" |
| 18633 | "test__execmodules.py" |
| 18634 | ;; This test contains 'test_unlink', which |
| 18635 | ;; fails on i686 (see: |
| 18636 | ;; https://github.com/gevent/gevent/issues/1558). |
| 18637 | "test__core_stat.py"))) |
| 18638 | (call-with-output-file "skipped_tests.txt" |
| 18639 | (lambda (port) |
| 18640 | (format port "~a~%" |
| 18641 | (string-join disabled-tests "\n"))))))) |
| 18642 | (replace 'check |
| 18643 | (lambda _ |
| 18644 | ;; Use the build daemons configured number of workers. |
| 18645 | (setenv "NWORKERS" (number->string (parallel-job-count))) |
| 18646 | |
| 18647 | (invoke "python" "-m" "gevent.tests" "-unone" "--config" |
| 18648 | "known_failures.py" "--ignore" "skipped_tests.txt")))))) |
| 18649 | (propagated-inputs |
| 18650 | (list python-greenlet python-zope-event python-zope-interface)) |
| 18651 | (native-inputs |
| 18652 | (list python-cython |
| 18653 | ;; For tests. |
| 18654 | python-dnspython python-psutil python-objgraph)) |
| 18655 | (inputs |
| 18656 | (list c-ares libev)) |
| 18657 | (home-page "https://www.gevent.org/") |
| 18658 | (synopsis "Coroutine-based network library") |
| 18659 | (description |
| 18660 | "@code{gevent} is a coroutine-based Python networking library that uses |
| 18661 | @code{greenlet} to provide a high-level synchronous API on top of the |
| 18662 | @code{libev} event loop.") |
| 18663 | (license license:expat))) |
| 18664 | |
| 18665 | (define-public python-fastimport |
| 18666 | (package |
| 18667 | (name "python-fastimport") |
| 18668 | (version "0.9.9") |
| 18669 | (source |
| 18670 | (origin |
| 18671 | (method url-fetch) |
| 18672 | (uri (pypi-uri "fastimport" version)) |
| 18673 | (sha256 |
| 18674 | (base32 "06gk14qgm9dxx3pzjn0ckdbywc8ial2bjfzddqwlr4bn1nnqkbll")))) |
| 18675 | (build-system python-build-system) |
| 18676 | (home-page "https://github.com/jelmer/python-fastimport") |
| 18677 | (synopsis "VCS fastimport parser and generator in Python") |
| 18678 | (description "This package provides a parser for and generator of the Git |
| 18679 | @url{https://www.kernel.org/pub/software/scm/git/docs/git-fast-import.html,fastimport} |
| 18680 | format.") |
| 18681 | (license license:gpl2+))) |
| 18682 | |
| 18683 | (define-public python-twisted |
| 18684 | (package |
| 18685 | (name "python-twisted") |
| 18686 | (version "19.7.0") |
| 18687 | (source (origin |
| 18688 | (method url-fetch) |
| 18689 | (uri (pypi-uri "Twisted" version ".tar.bz2")) |
| 18690 | (sha256 |
| 18691 | (base32 |
| 18692 | "17d3hnxv9qndagzz63mdpyk99xj63p9gq586vjn0rxk8cl197nym")))) |
| 18693 | (build-system python-build-system) |
| 18694 | (arguments |
| 18695 | '(#:tests? #f ; FIXME: some tests fail |
| 18696 | #:phases |
| 18697 | (modify-phases %standard-phases |
| 18698 | ;; Remove scripts, because they depend on [conch] |
| 18699 | (add-after 'unpack 'remove-entrypoint |
| 18700 | (lambda _ |
| 18701 | (substitute* "src/twisted/python/_setup.py" |
| 18702 | (("\".+ = twisted\\.conch\\.scripts\\..+\",") ""))))))) |
| 18703 | (propagated-inputs |
| 18704 | (list python-zope-interface |
| 18705 | python-pyhamcrest |
| 18706 | python-incremental |
| 18707 | python-hyperlink |
| 18708 | python-constantly |
| 18709 | python-automat)) |
| 18710 | (home-page "https://twistedmatrix.com/") |
| 18711 | (synopsis "Asynchronous networking framework written in Python") |
| 18712 | (description |
| 18713 | "Twisted is an extensible framework for Python programming, with special |
| 18714 | focus on event-based network programming and multiprotocol integration.") |
| 18715 | (license license:expat))) |
| 18716 | |
| 18717 | (define-public python-pika |
| 18718 | (package |
| 18719 | (name "python-pika") |
| 18720 | (version "1.2.1") |
| 18721 | (source |
| 18722 | (origin |
| 18723 | (method git-fetch) |
| 18724 | (uri (git-reference |
| 18725 | (url "https://github.com/pika/pika") |
| 18726 | (commit version))) |
| 18727 | (file-name (git-file-name name version)) |
| 18728 | (sha256 |
| 18729 | (base32 |
| 18730 | "0sqj3bg6jwign8vwvn337fbwy69sm684ns1vh5kbfnskq4him9i2")))) |
| 18731 | (build-system python-build-system) |
| 18732 | (arguments |
| 18733 | '(#:phases (modify-phases %standard-phases |
| 18734 | (add-after 'unpack 'disable-live-tests |
| 18735 | (lambda _ |
| 18736 | ;; Disable tests that require RabbitMQ, which is not |
| 18737 | ;; yet available in Guix. |
| 18738 | (substitute* "nose2.cfg" |
| 18739 | (("tests=tests/unit,tests/acceptance") |
| 18740 | "start-dir=tests/unit")) |
| 18741 | (with-directory-excursion "tests" |
| 18742 | (for-each delete-file |
| 18743 | '("unit/base_connection_tests.py" |
| 18744 | "unit/threaded_test_wrapper_test.py"))))) |
| 18745 | (replace 'check |
| 18746 | (lambda* (#:key tests? #:allow-other-keys) |
| 18747 | (when tests? |
| 18748 | (setenv "PYTHONPATH" (getcwd)) |
| 18749 | (invoke "nose2" "-v"))))))) |
| 18750 | (native-inputs |
| 18751 | (list python-mock |
| 18752 | python-nose2 |
| 18753 | ;; These are optional at runtime, and provided here for tests. |
| 18754 | python-gevent |
| 18755 | python-tornado |
| 18756 | python-twisted)) |
| 18757 | (home-page "https://pika.readthedocs.org") |
| 18758 | (synopsis "Pure Python AMQP Client Library") |
| 18759 | (description |
| 18760 | "Pika is a pure-Python implementation of the AMQP (Advanced Message Queuing |
| 18761 | Protocol) 0-9-1 protocol that tries to stay fairly independent of the underlying |
| 18762 | network support library.") |
| 18763 | (license license:bsd-3))) |
| 18764 | |
| 18765 | (define-public python-ply |
| 18766 | (package |
| 18767 | (name "python-ply") |
| 18768 | (version "3.11") |
| 18769 | (source |
| 18770 | (origin |
| 18771 | (method url-fetch) |
| 18772 | (uri (pypi-uri "ply" version)) |
| 18773 | (sha256 |
| 18774 | (base32 |
| 18775 | "18qx113g9bi1ac4indd5phma82zcdq601lxncp3vjn43m2mc3iq0")))) |
| 18776 | (build-system python-build-system) |
| 18777 | (home-page "http://www.dabeaz.com/ply/") |
| 18778 | (synopsis "Python Lex & Yacc") |
| 18779 | (description "PLY is a @code{lex}/@code{yacc} implemented purely in Python. |
| 18780 | It uses LR parsing and does extensive error checking.") |
| 18781 | (license license:bsd-3))) |
| 18782 | |
| 18783 | (define-public python-tabulate |
| 18784 | (package |
| 18785 | (name "python-tabulate") |
| 18786 | (version "0.8.9") |
| 18787 | (source (origin |
| 18788 | (method url-fetch) |
| 18789 | (uri (pypi-uri "tabulate" version)) |
| 18790 | (sha256 |
| 18791 | (base32 |
| 18792 | "19qkdz8xwk5jxa5xn53mnk76qnh4ysm81vzj664jw1b0azr167gb")))) |
| 18793 | (build-system python-build-system) |
| 18794 | (arguments |
| 18795 | ;; FIXME: The pypi release tarball is missing a 'test/common.py' |
| 18796 | ;; and the latest release is not tagged in the upstream repository. |
| 18797 | '(#:tests? #f)) |
| 18798 | (home-page "https://bitbucket.org/astanin/python-tabulate") |
| 18799 | (synopsis "Pretty-print tabular data") |
| 18800 | (description |
| 18801 | "Tabulate is a library and command-line utility to pretty-print tabular |
| 18802 | data in Python.") |
| 18803 | (license license:expat))) |
| 18804 | |
| 18805 | (define-public python-kazoo |
| 18806 | (package |
| 18807 | (name "python-kazoo") |
| 18808 | (version "2.8.0") |
| 18809 | (source |
| 18810 | (origin |
| 18811 | (method url-fetch) |
| 18812 | (uri (pypi-uri "kazoo" version)) |
| 18813 | (sha256 |
| 18814 | (base32 |
| 18815 | "1zpj5cc8624w6i0pxgcxqkjwbkm4pkrv19d7wh5df3jais32g3jq")))) |
| 18816 | (build-system python-build-system) |
| 18817 | (arguments '(#:tests? #f)) ; XXX: needs zookeeper |
| 18818 | (propagated-inputs |
| 18819 | (list python-six)) |
| 18820 | (home-page "https://kazoo.readthedocs.org") |
| 18821 | (synopsis "High-level Zookeeper client library") |
| 18822 | (description |
| 18823 | "Kazoo is a Python client library for the Apache Zookeeper distributed |
| 18824 | application service. It is designed to be easy to use and to avoid common |
| 18825 | programming errors.") |
| 18826 | (license license:asl2.0))) |
| 18827 | |
| 18828 | (define-public python-pykafka |
| 18829 | (package |
| 18830 | (name "python-pykafka") |
| 18831 | (version "2.4.0") |
| 18832 | (source (origin |
| 18833 | (method url-fetch) |
| 18834 | (uri (pypi-uri "pykafka" version)) |
| 18835 | (sha256 |
| 18836 | (base32 |
| 18837 | "1id6sr159p6aa13bxcqyr9gln8sqg1l0ddzns5iws8kk5q1p5cfv")))) |
| 18838 | (build-system python-build-system) |
| 18839 | (arguments '(#:tests? #f)) ; XXX: needs zookeeper, kafka, etc. |
| 18840 | (propagated-inputs |
| 18841 | (list python-gevent python-kazoo python-tabulate)) |
| 18842 | (inputs |
| 18843 | (list librdkafka)) |
| 18844 | (home-page "https://pykafka.readthedocs.io/") |
| 18845 | (synopsis "Apache Kafka client for Python") |
| 18846 | (description |
| 18847 | "PyKafka is a client for the Apache Kafka distributed messaging system. |
| 18848 | It includes Python implementations of Kafka producers and consumers, which |
| 18849 | are optionally backed by a C extension built on librdkafka.") |
| 18850 | (license license:asl2.0))) |
| 18851 | |
| 18852 | (define-public python-wcwidth |
| 18853 | (package |
| 18854 | (name "python-wcwidth") |
| 18855 | (version "0.1.8") |
| 18856 | (source (origin |
| 18857 | (method url-fetch) |
| 18858 | (uri (pypi-uri "wcwidth" version)) |
| 18859 | (sha256 |
| 18860 | (base32 |
| 18861 | "1a1pzds3xzfylm5mnc5f6c1p8kiig0daqjc9gygd9rc3cj53x2zj")))) |
| 18862 | (build-system python-build-system) |
| 18863 | (home-page "https://github.com/jquast/wcwidth") |
| 18864 | (synopsis "Measure number of terminal column cells of wide-character codes") |
| 18865 | (description "Wcwidth measures the number of terminal column cells of |
| 18866 | wide-character codes. It is useful for those implementing a terminal emulator, |
| 18867 | or programs that carefully produce output to be interpreted by one. It is a |
| 18868 | Python implementation of the @code{wcwidth} and @code{wcswidth} C functions |
| 18869 | specified in POSIX.1-2001 and POSIX.1-2008.") |
| 18870 | (license license:expat))) |
| 18871 | |
| 18872 | (define-public python-chai |
| 18873 | (package |
| 18874 | (name "python-chai") |
| 18875 | (version "1.1.2") |
| 18876 | (source (origin |
| 18877 | (method url-fetch) |
| 18878 | (uri (pypi-uri "chai" version)) |
| 18879 | (sha256 |
| 18880 | (base32 |
| 18881 | "1k6n6zbgrrs83crp6mr3yqj9zlv40b8rpisyrliwsq7naml2p3gz")) |
| 18882 | (patches (search-patches "python-chai-drop-python2.patch")))) |
| 18883 | (build-system python-build-system) |
| 18884 | (home-page "https://github.com/agoragames/chai") |
| 18885 | (synopsis "Mocking framework for Python") |
| 18886 | (description |
| 18887 | "Chai provides an api for mocking, stubbing and spying your python |
| 18888 | objects, patterned after the Mocha library for Ruby.") |
| 18889 | (license license:bsd-3))) |
| 18890 | |
| 18891 | (define-public python-inflect |
| 18892 | (package |
| 18893 | (name "python-inflect") |
| 18894 | (version "6.0.4") |
| 18895 | (source (origin |
| 18896 | (method url-fetch) |
| 18897 | (uri (pypi-uri "inflect" version)) |
| 18898 | (sha256 |
| 18899 | (base32 |
| 18900 | "1sqj4svg2vbn4vq332nxnvky2433rgxbvjd529lddjmn2yd68hhq")))) |
| 18901 | (build-system pyproject-build-system) |
| 18902 | (arguments |
| 18903 | (list |
| 18904 | #:test-flags |
| 18905 | '(list "--ignore=_custom_build/backend.py" |
| 18906 | "-k" "not mypy-status") |
| 18907 | #:phases |
| 18908 | '(modify-phases %standard-phases |
| 18909 | ;; The build system insists on ignoring the existing environment and |
| 18910 | ;; running "pip install". |
| 18911 | (add-after 'unpack 'do-not-use-pip-install |
| 18912 | (lambda _ |
| 18913 | (substitute* "pyproject.toml" |
| 18914 | (("^build-backend.*") "\ |
| 18915 | build-backend = \"backend\" |
| 18916 | backend_path = [\"_custom_build\"]\n") |
| 18917 | (("requires = .*") "requires = []\n")) |
| 18918 | (mkdir-p "_custom_build") |
| 18919 | (with-output-to-file "_custom_build/backend.py" |
| 18920 | (lambda _ |
| 18921 | (display "\ |
| 18922 | from setuptools import build_meta as _orig |
| 18923 | from setuptools.build_meta import * |
| 18924 | def get_requires_for_build_wheel(config_settings=None): |
| 18925 | return [] |
| 18926 | def get_requires_for_build_sdist(config_settings=None): |
| 18927 | return [] |
| 18928 | "))) |
| 18929 | (setenv "PYTHONPATH" |
| 18930 | (string-append (getcwd) "/_custom_build"))))))) |
| 18931 | (propagated-inputs (list python-pydantic)) |
| 18932 | (native-inputs (list python-flake8 |
| 18933 | python-pygments |
| 18934 | python-pytest |
| 18935 | python-pytest-black |
| 18936 | python-pytest-checkdocs |
| 18937 | python-pytest-cov |
| 18938 | python-pytest-enabler |
| 18939 | python-pytest-flake8 |
| 18940 | python-pytest-mypy |
| 18941 | ;; For the version number |
| 18942 | python-setuptools-scm)) |
| 18943 | (home-page "https://github.com/jaraco/inflect") |
| 18944 | (synopsis "Correctly generate plurals, singular nouns, ordinals, indefinite articles") |
| 18945 | (description |
| 18946 | "This Python module lets you correctly generate plurals, singular nouns, |
| 18947 | ordinals, indefinite articles; it also can convert numbers to words.") |
| 18948 | (license license:expat))) |
| 18949 | |
| 18950 | (define-public python-inflection |
| 18951 | (package |
| 18952 | (name "python-inflection") |
| 18953 | (version "0.3.1") |
| 18954 | (source |
| 18955 | (origin (method url-fetch) |
| 18956 | (uri (pypi-uri "inflection" version)) |
| 18957 | (sha256 |
| 18958 | (base32 |
| 18959 | "1jhnxgnw8y3mbzjssixh6qkc7a3afc4fygajhqrqalnilyvpzshq")))) |
| 18960 | (build-system python-build-system) |
| 18961 | (native-inputs |
| 18962 | (list python-pytest)) |
| 18963 | (home-page "https://github.com/jpvanhal/inflection") |
| 18964 | (synopsis "Python string transformation library") |
| 18965 | (description |
| 18966 | "Inflection is a string transformation library. It singularizes |
| 18967 | and pluralizes English words, and transforms strings from CamelCase to |
| 18968 | underscored string.") |
| 18969 | (license license:expat))) |
| 18970 | |
| 18971 | (define-public python-pylev |
| 18972 | (package |
| 18973 | (name "python-pylev") |
| 18974 | (version "1.3.0") |
| 18975 | (source (origin |
| 18976 | (method url-fetch) |
| 18977 | (uri (pypi-uri "pylev" version)) |
| 18978 | (sha256 |
| 18979 | (base32 |
| 18980 | "1hz1x9blsbxya1y9nnhnwwdnqmakxi9mc0jkwj0rn6b1h44i0f86")))) |
| 18981 | (build-system python-build-system) |
| 18982 | (home-page "https://github.com/toastdriven/pylev") |
| 18983 | (synopsis "Levenshtein distance implementation in Python") |
| 18984 | (description "Pure Python Levenshtein implementation, based off the |
| 18985 | Wikipedia code samples at |
| 18986 | @url{http://en.wikipedia.org/wiki/Levenshtein_distance}.") |
| 18987 | (license license:bsd-3))) |
| 18988 | |
| 18989 | (define-public python-cleo |
| 18990 | (package |
| 18991 | (name "python-cleo") |
| 18992 | (version "0.8.1") |
| 18993 | (source (origin |
| 18994 | (method url-fetch) |
| 18995 | (uri (pypi-uri "cleo" version)) |
| 18996 | (sha256 |
| 18997 | (base32 |
| 18998 | "17q6wi3q280kxmxzb2iwnnqih2xbljn18v0bjx2ip18p079j43ix")))) |
| 18999 | (build-system python-build-system) |
| 19000 | (native-inputs |
| 19001 | (list ;; For testing |
| 19002 | python-mock python-pytest-mock python-pytest)) |
| 19003 | (propagated-inputs |
| 19004 | (list python-backpack python-clikit python-pastel python-pylev)) |
| 19005 | (home-page "https://github.com/sdispater/cleo") |
| 19006 | (synopsis "Command-line arguments library for Python") |
| 19007 | (description |
| 19008 | "Cleo allows you to create command-line commands with signature in |
| 19009 | docstring and colored output.") |
| 19010 | (license license:expat))) |
| 19011 | |
| 19012 | (define-public python-tomlkit |
| 19013 | (package |
| 19014 | (name "python-tomlkit") |
| 19015 | (version "0.11.6") |
| 19016 | (source |
| 19017 | (origin |
| 19018 | (method url-fetch) |
| 19019 | (uri (pypi-uri "tomlkit" version)) |
| 19020 | (sha256 |
| 19021 | (base32 "0wsxnv9bs7jk8ig8blj9c438a1ygvdad7y9cn1zr720nfbjm5fbi")))) |
| 19022 | (build-system python-build-system) |
| 19023 | (native-inputs |
| 19024 | (list python-pytest python-pyyaml)) |
| 19025 | (home-page "https://github.com/sdispater/tomlkit") |
| 19026 | (synopsis "Style-preserving TOML library") |
| 19027 | (description |
| 19028 | "TOML Kit is a 1.0.0rc1-compliant TOML library. It includes a parser that |
| 19029 | preserves all comments, indentations, whitespace and internal element ordering, |
| 19030 | and makes them accessible and editable via an intuitive API. It can also |
| 19031 | create new TOML documents from scratch using the provided helpers. Part of the |
| 19032 | implementation has been adapted, improved, and fixed from Molten.") |
| 19033 | (license license:expat))) |
| 19034 | |
| 19035 | (define-public python-shellingham |
| 19036 | (package |
| 19037 | (name "python-shellingham") |
| 19038 | (version "1.5.1") |
| 19039 | (source |
| 19040 | (origin |
| 19041 | (method url-fetch) |
| 19042 | (uri (pypi-uri "shellingham" version)) |
| 19043 | (sha256 |
| 19044 | (base32 "0iawv24xx6vhwbhqlxyyg901f8pf6abqyfg0711v1bvlipx83g21")))) |
| 19045 | (build-system python-build-system) |
| 19046 | (arguments |
| 19047 | '(#:phases |
| 19048 | (modify-phases %standard-phases |
| 19049 | (replace 'check |
| 19050 | (lambda* (#:key tests? #:allow-other-keys) |
| 19051 | (when tests? |
| 19052 | (invoke "python" "-m" "pytest" "-v"))))))) |
| 19053 | (native-inputs |
| 19054 | (list python-pytest python-pytest-mock)) |
| 19055 | (home-page "https://github.com/sarugaku/shellingham") |
| 19056 | (synopsis "Tool to detect surrounding shell") |
| 19057 | (description |
| 19058 | "Shellingham detects what shell the current Python executable is |
| 19059 | running in.") |
| 19060 | (license license:isc))) |
| 19061 | |
| 19062 | (define-public python-memcached |
| 19063 | (package |
| 19064 | (name "python-memcached") |
| 19065 | (version "1.59") |
| 19066 | (source |
| 19067 | (origin |
| 19068 | (method url-fetch) |
| 19069 | (uri (pypi-uri "python-memcached" version)) |
| 19070 | (sha256 |
| 19071 | (base32 |
| 19072 | "0kvyapavbirk2x3n1jx4yb9nyigrj1s3x15nm3qhpvhkpqvqdqm2")) |
| 19073 | (patches (search-patches "python-memcached-syntax-warnings.patch")))) |
| 19074 | (build-system python-build-system) |
| 19075 | (propagated-inputs (list python-six)) |
| 19076 | (home-page |
| 19077 | "https://github.com/linsomniac/python-memcached") |
| 19078 | (synopsis "Pure python memcached client") |
| 19079 | (description |
| 19080 | "This software is a pure Python interface to the memcached memory cache |
| 19081 | daemon. It is the client side software which allows storing values in one or |
| 19082 | more, possibly remote, memcached servers.") |
| 19083 | (license license:psfl))) |
| 19084 | |
| 19085 | (define-public python-mergedeep |
| 19086 | (package |
| 19087 | (name "python-mergedeep") |
| 19088 | (version "1.3.4") |
| 19089 | (source |
| 19090 | (origin |
| 19091 | (method git-fetch) |
| 19092 | (uri (git-reference |
| 19093 | (url "https://github.com/clarketm/mergedeep") |
| 19094 | (commit (string-append "v" version)))) |
| 19095 | (file-name (git-file-name name version)) |
| 19096 | (sha256 |
| 19097 | (base32 |
| 19098 | "1msvvdzk33sxzgyvs4fs8dlsrsi7fjj038z83s0yw5h8m8d78469")))) |
| 19099 | (build-system python-build-system) |
| 19100 | (native-inputs (list python-pytest)) |
| 19101 | (home-page "https://github.com/clarketm/mergedeep") |
| 19102 | (synopsis "Deep merge function for Python") |
| 19103 | (description "This package provides a deep merge function for Python, |
| 19104 | useful to combine multiple data objects as one.") |
| 19105 | (license license:expat))) |
| 19106 | |
| 19107 | (define-public python-clikit |
| 19108 | (package |
| 19109 | (name "python-clikit") |
| 19110 | (version "0.6.2") |
| 19111 | (source |
| 19112 | (origin |
| 19113 | (method url-fetch) |
| 19114 | (uri (pypi-uri "clikit" version)) |
| 19115 | (sha256 |
| 19116 | (base32 |
| 19117 | "0ngdkmb73gkp5y00q7r9k1cdlfn0wyzws2wrqlshc4hlkbdyabj4")))) |
| 19118 | (build-system python-build-system) |
| 19119 | (arguments '(#:tests? #f)) ; no test in the PyPI tarball |
| 19120 | (propagated-inputs |
| 19121 | (list python-crashtest python-pastel python-pylev)) |
| 19122 | (home-page "https://github.com/sdispater/clikit") |
| 19123 | (synopsis "Group of utilities to build command line interfaces") |
| 19124 | (description |
| 19125 | "CliKit is a group of utilities to build testable command line |
| 19126 | interfaces.") |
| 19127 | (license license:expat))) |
| 19128 | |
| 19129 | (define-public python-msgpack-python |
| 19130 | (package |
| 19131 | (name "python-msgpack-python") |
| 19132 | (version "0.5.6") |
| 19133 | (source |
| 19134 | (origin |
| 19135 | (method url-fetch) |
| 19136 | (uri (pypi-uri "msgpack-python" version)) |
| 19137 | (sha256 |
| 19138 | (base32 |
| 19139 | "16wh8qgybmfh4pjp8vfv78mdlkxfmcasg78lzlnm6nslsfkci31p")))) |
| 19140 | (build-system python-build-system) |
| 19141 | (home-page "https://msgpack.org/") |
| 19142 | (synopsis "Package to deserialize messages in MessagePack binary format") |
| 19143 | (description |
| 19144 | "MessagePack is an efficient binary serialization format. It lets you |
| 19145 | exchange data among multiple languages like JSON. But it's faster and |
| 19146 | smaller. Small integers are encoded into a single byte, and typical short |
| 19147 | strings require only one extra byte in addition to the strings themselves.") |
| 19148 | (license license:asl2.0))) |
| 19149 | |
| 19150 | (define-public python-cattrs |
| 19151 | (package |
| 19152 | (name "python-cattrs") |
| 19153 | (version "22.1.0") |
| 19154 | (source (origin |
| 19155 | (method git-fetch) ;for tests |
| 19156 | (uri (git-reference |
| 19157 | (url "https://github.com/python-attrs/cattrs") |
| 19158 | (commit (string-append "v" version)))) |
| 19159 | (file-name (git-file-name name version)) |
| 19160 | (sha256 |
| 19161 | (base32 |
| 19162 | "1n0h25gj6zd02kqyl040xpdvg4hpy1j92716sz0rg019xjqqijqb")))) |
| 19163 | (build-system pyproject-build-system) |
| 19164 | (arguments |
| 19165 | (list |
| 19166 | #:phases |
| 19167 | #~(modify-phases %standard-phases |
| 19168 | (add-after 'unpack 'adjust-for-older-attrs |
| 19169 | ;; Our older attrs package is using the 'attr' rather than 'attrs' |
| 19170 | ;; namespace. |
| 19171 | ;; TODO: Remove after python-attrs is updated to >= 21.4.0. |
| 19172 | (lambda _ |
| 19173 | (substitute* (find-files "." "\\.py$") |
| 19174 | (("from attrs\\b") |
| 19175 | "from attr")))) |
| 19176 | (replace 'check |
| 19177 | (lambda* (#:key tests? #:allow-other-keys) |
| 19178 | (when tests? |
| 19179 | ;; Do not use the 'pytest' binary as it hard-codes an older |
| 19180 | ;; python-hypothesis version near the beginning of its |
| 19181 | ;; GUIX_PYTHONPATH. |
| 19182 | (invoke "python" "-m" "pytest" "-vv" "-c" "/dev/null" "tests" |
| 19183 | "-n" (number->string (parallel-job-count)) |
| 19184 | ;; This test requires orjson, which needs the maturin |
| 19185 | ;; build system and new Rust dependencies. |
| 19186 | "--ignore" "tests/test_preconf.py"))))))) |
| 19187 | (native-inputs |
| 19188 | (list python-hypothesis |
| 19189 | python-immutables |
| 19190 | python-msgpack |
| 19191 | python-poetry-core |
| 19192 | python-pymongo ;for the bson module |
| 19193 | python-pytest |
| 19194 | python-pytest-xdist)) |
| 19195 | (propagated-inputs |
| 19196 | (list python-attrs |
| 19197 | python-exceptiongroup |
| 19198 | python-typing-extensions)) |
| 19199 | (home-page "https://github.com/python-attrs/cattrs") |
| 19200 | (synopsis "Python library for structuring and unstructuring data") |
| 19201 | (description "@code{cattrs} is an Python library for structuring and |
| 19202 | unstructuring data. @code{cattrs} works best with @code{attrs} classes, |
| 19203 | @code{dataclasses} and the usual Python collections, but other kinds of |
| 19204 | classes can also be supported by manually registering converters.") |
| 19205 | (license license:expat))) |
| 19206 | |
| 19207 | (define-public python-cachy |
| 19208 | (package |
| 19209 | (name "python-cachy") |
| 19210 | (version "0.3.0") |
| 19211 | (source |
| 19212 | (origin |
| 19213 | (method url-fetch) |
| 19214 | (uri (pypi-uri "cachy" version)) |
| 19215 | (sha256 |
| 19216 | (base32 |
| 19217 | "1cb9naly8ampzlky7h74n5wj628l7jkpsh0c0jz0namlrvs82r8q")))) |
| 19218 | (build-system python-build-system) |
| 19219 | (arguments |
| 19220 | '(#:phases |
| 19221 | (modify-phases %standard-phases |
| 19222 | (replace 'check |
| 19223 | (lambda _ (invoke "pifpaf" "run" "memcached" "--port" "11211" "--" |
| 19224 | "pytest")))))) |
| 19225 | (native-inputs |
| 19226 | (list memcached python-fakeredis python-flexmock python-pifpaf |
| 19227 | python-pytest)) |
| 19228 | (propagated-inputs |
| 19229 | (list python-memcached python-msgpack-python python-redis)) |
| 19230 | (home-page "https://github.com/sdispater/cachy") |
| 19231 | (synopsis "Simple yet effective caching library") |
| 19232 | (description |
| 19233 | "Cachy provides a simple yet effective caching library. A simple but |
| 19234 | powerful API: thread-safety; decorator syntax; support for memcached, redis, |
| 19235 | database, file, dict stores. Cachy supports python versions 2.7+ and 3.2+.") |
| 19236 | (license license:expat))) |
| 19237 | |
| 19238 | (define-public poetry |
| 19239 | (package |
| 19240 | (name "poetry") |
| 19241 | (version "1.4.2") |
| 19242 | (source |
| 19243 | (origin |
| 19244 | (method url-fetch) |
| 19245 | (uri (pypi-uri "poetry" version)) |
| 19246 | (sha256 |
| 19247 | (base32 |
| 19248 | "0g0vczn6qa4b2bdkq4k7fm1g739vyxp2iiblwwsrcmw24jj81m8b")))) |
| 19249 | (build-system python-build-system) |
| 19250 | (arguments |
| 19251 | `(#:tests? #f ;PyPI does not have tests |
| 19252 | ;; #:phases |
| 19253 | ;; (modify-phases %standard-phases |
| 19254 | ;; (add-before 'build 'patch-setup-py |
| 19255 | ;; (lambda _ |
| 19256 | ;; (substitute* "setup.py" |
| 19257 | ;; ;; Relax some of the requirements. |
| 19258 | ;; (("(keyring>=21.2.0),<22.0.0" _ keyring) keyring) |
| 19259 | ;; (("(packaging>=20.4),<21.0" _ packaging) packaging))))) |
| 19260 | )) |
| 19261 | (propagated-inputs |
| 19262 | (list python-cachecontrol |
| 19263 | python-cachy |
| 19264 | python-cleo |
| 19265 | python-crashtest |
| 19266 | python-entrypoints |
| 19267 | python-html5lib |
| 19268 | python-keyring |
| 19269 | python-msgpack |
| 19270 | python-packaging |
| 19271 | python-pexpect |
| 19272 | python-pip |
| 19273 | python-pkginfo |
| 19274 | python-poetry-core |
| 19275 | python-requests |
| 19276 | python-requests-toolbelt |
| 19277 | python-shellingham |
| 19278 | python-tomlkit |
| 19279 | python-virtualenv)) |
| 19280 | (home-page "https://python-poetry.org") |
| 19281 | (synopsis "Python dependency management and packaging made easy") |
| 19282 | (description "Poetry is a tool for dependency management and packaging |
| 19283 | in Python. It allows you to declare the libraries your project depends on and |
| 19284 | it will manage (install/update) them for you.") |
| 19285 | (license license:expat))) |
| 19286 | |
| 19287 | (define-public python-lark-parser |
| 19288 | (package |
| 19289 | (name "python-lark-parser") |
| 19290 | (version "0.9.0") |
| 19291 | (source (origin |
| 19292 | (method url-fetch) |
| 19293 | (uri (pypi-uri "lark-parser" version)) |
| 19294 | (sha256 |
| 19295 | (base32 |
| 19296 | "1kd61asrb3h9spgsj4bslfbgp8q4271sw3hblk6f2vbbblv8jxcy")))) |
| 19297 | (build-system python-build-system) |
| 19298 | (home-page "https://github.com/lark-parser/lark") |
| 19299 | (synopsis "Multi-language parser for Python") |
| 19300 | (description |
| 19301 | "Lark is a parser built with a focus on ergonomics, performance and |
| 19302 | resilience. Lark can parse all context-free languages. That means it is |
| 19303 | capable of parsing almost any programming language out there, and to |
| 19304 | some degree most natural languages too.") |
| 19305 | (license license:expat))) |
| 19306 | |
| 19307 | (define-public python-libcst |
| 19308 | (package |
| 19309 | (name "python-libcst") |
| 19310 | (version "0.3.8") |
| 19311 | (source (origin |
| 19312 | (method url-fetch) |
| 19313 | (uri (pypi-uri "libcst" version)) |
| 19314 | (sha256 |
| 19315 | (base32 |
| 19316 | "05zsc61gsd2pyb6wiyh58zczndxi6rm4d2jl94rpf5cv1fzw6ks8")))) |
| 19317 | (build-system python-build-system) |
| 19318 | (arguments |
| 19319 | `(#:phases |
| 19320 | (modify-phases %standard-phases |
| 19321 | (add-after 'unpack 'remove-failing-tests |
| 19322 | (lambda _ |
| 19323 | ;; Reported upstream: <https://github.com/Instagram/LibCST/issues/346>. |
| 19324 | (delete-file "libcst/tests/test_fuzz.py") |
| 19325 | ;; Reported upstream: <https://github.com/Instagram/LibCST/issues/347>. |
| 19326 | (delete-file "libcst/tests/test_pyre_integration.py") |
| 19327 | (delete-file "libcst/codemod/tests/test_codemod_cli.py") |
| 19328 | (delete-file "libcst/metadata/tests/test_full_repo_manager.py") |
| 19329 | (delete-file "libcst/metadata/tests/test_type_inference_provider.py"))) |
| 19330 | (add-before 'check 'generate-test-data |
| 19331 | (lambda _ |
| 19332 | (invoke "python" "-m" "libcst.codegen.generate" "visitors") |
| 19333 | (invoke "python" "-m" "libcst.codegen.generate" "return_types"))) |
| 19334 | (replace 'check |
| 19335 | (lambda* (#:key tests? #:allow-other-keys) |
| 19336 | (when tests? |
| 19337 | (invoke "python" "-m" "unittest"))))))) |
| 19338 | (native-inputs |
| 19339 | (list python-black python-isort)) |
| 19340 | (propagated-inputs |
| 19341 | (list python-typing-extensions python-typing-inspect python-pyyaml)) |
| 19342 | (home-page "https://github.com/Instagram/LibCST") |
| 19343 | (synopsis "Concrete Syntax Tree (CST) parser and serializer library for Python") |
| 19344 | (description |
| 19345 | "LibCST parses Python source code as a CST tree that keeps all |
| 19346 | formatting details (comments, whitespaces, parentheses, etc). It's useful |
| 19347 | for building automated refactoring (codemod) applications and linters. |
| 19348 | LibCST creates a compromise between an Abstract Syntax Tree (AST) and |
| 19349 | a traditional Concrete Syntax Tree (CST). By carefully reorganizing and |
| 19350 | naming node types and fields, LibCST creates a lossless CST that looks and |
| 19351 | feels like an AST.") |
| 19352 | (license (list license:expat |
| 19353 | ;; Some files unde libcst/_parser/ are under Python Software |
| 19354 | ;; Foundation license (see LICENSE file for details) |
| 19355 | license:psfl |
| 19356 | ;; libcst/_add_slots.py |
| 19357 | license:asl2.0)))) |
| 19358 | |
| 19359 | (define-public python-libcst-minimal |
| 19360 | (hidden-package |
| 19361 | (package |
| 19362 | (inherit python-libcst) |
| 19363 | (name "python-libcst-minimal") |
| 19364 | (arguments '(#:tests? #f)) |
| 19365 | (native-inputs '())))) |
| 19366 | |
| 19367 | (define-public python-typing-inspect |
| 19368 | (package |
| 19369 | (name "python-typing-inspect") |
| 19370 | (version "0.6.0") |
| 19371 | (source (origin |
| 19372 | (method url-fetch) |
| 19373 | (uri (pypi-uri "typing_inspect" version)) |
| 19374 | (sha256 |
| 19375 | (base32 |
| 19376 | "1dzs9a1pr23dhbvmnvms2jv7l7jk26023g5ysf0zvnq8b791s6wg")) |
| 19377 | (patches (search-patches "python-typing-inspect-fix.patch")))) |
| 19378 | (build-system python-build-system) |
| 19379 | (propagated-inputs |
| 19380 | (list python-mypy-extensions python-typing-extensions)) |
| 19381 | (home-page "https://github.com/ilevkivskyi/typing_inspect") |
| 19382 | (synopsis "API for inspection of types in the Python @code{typing} module") |
| 19383 | (description |
| 19384 | "The @code{typing_inspect} module defines experimental API for runtime |
| 19385 | inspection of types defined in the Python standard typing module.") |
| 19386 | (license license:expat))) |
| 19387 | |
| 19388 | (define-public python-lazy-loader |
| 19389 | (package |
| 19390 | (name "python-lazy-loader") |
| 19391 | (version "0.2") |
| 19392 | (source (origin |
| 19393 | (method url-fetch) |
| 19394 | (uri (pypi-uri "lazy_loader" version)) |
| 19395 | (sha256 |
| 19396 | (base32 |
| 19397 | "12piaj94m5wbx33cxb80xgnsvzgya6cp90zj12qsq064fm8pmp0f")))) |
| 19398 | (build-system pyproject-build-system) |
| 19399 | (native-inputs |
| 19400 | (list python-pytest python-pytest-cov)) |
| 19401 | (propagated-inputs |
| 19402 | (list python-flit-core)) |
| 19403 | (home-page "https://scientific-python.org/specs/spec-0001/") |
| 19404 | (synopsis "Load subpackages and functions on demand") |
| 19405 | (description "@code{python-lazy-loader} makes it easy to load subpackages |
| 19406 | and functions on demand. Its main features are: |
| 19407 | |
| 19408 | @itemize |
| 19409 | @item Allow subpackages to be made visible to users without incurring import |
| 19410 | costs. |
| 19411 | @item Allow external libraries to be imported only when used, improving import |
| 19412 | times. |
| 19413 | @end itemize") |
| 19414 | (license license:bsd-3))) |
| 19415 | |
| 19416 | (define-public python-lazy-object-proxy |
| 19417 | (package |
| 19418 | (name "python-lazy-object-proxy") |
| 19419 | (version "1.5.1") |
| 19420 | (source (origin |
| 19421 | (method url-fetch) |
| 19422 | (uri (pypi-uri "lazy-object-proxy" version)) |
| 19423 | (sha256 |
| 19424 | (base32 |
| 19425 | "0hwh29m9wa582ramj30p4pysckdrmki1z1b8iaaxk6mpfx2kc8wp")))) |
| 19426 | (native-inputs |
| 19427 | (list python-setuptools-scm)) |
| 19428 | (build-system python-build-system) |
| 19429 | (home-page "https://github.com/ionelmc/python-lazy-object-proxy") |
| 19430 | (synopsis "Lazy object proxy for python") |
| 19431 | (description |
| 19432 | "Lazy object proxy is an object that wraps a callable but defers the call |
| 19433 | until the object is actually required, and caches the result of said call.") |
| 19434 | (license license:bsd-2))) |
| 19435 | |
| 19436 | (define-public python-dnspython |
| 19437 | (package |
| 19438 | (name "python-dnspython") |
| 19439 | (version "2.1.0") |
| 19440 | (source (origin |
| 19441 | (method url-fetch) |
| 19442 | (uri (pypi-uri "dnspython" version ".zip")) |
| 19443 | (sha256 |
| 19444 | (base32 |
| 19445 | "1m0xvyby8baaxp6pfm0fgq8d2pq5dd8qm8bzfbrs009jaw5pza74")))) |
| 19446 | (build-system python-build-system) |
| 19447 | (arguments |
| 19448 | `(#:tests? #f ; XXX: requires internet access |
| 19449 | #:phases |
| 19450 | (modify-phases %standard-phases |
| 19451 | (add-after 'unpack 'patch-getprotobyname-calls |
| 19452 | ;; These calls are problematic in the build environment as there is |
| 19453 | ;; no /etc/protocols. This breaks the sanity-check phase of any |
| 19454 | ;; package depnding on this one. |
| 19455 | (lambda _ |
| 19456 | (substitute* "dns/rdtypes/IN/WKS.py" |
| 19457 | (("socket.getprotobyname\\('tcp'\\)") |
| 19458 | "6") |
| 19459 | (("socket.getprotobyname\\('udp'\\)") |
| 19460 | "17"))))))) |
| 19461 | (native-inputs (list unzip)) |
| 19462 | (home-page "https://www.dnspython.org") |
| 19463 | (synopsis "DNS toolkit for Python") |
| 19464 | (description |
| 19465 | "dnspython is a DNS toolkit for Python. It supports almost all record |
| 19466 | types. It can be used for queries, zone transfers, and dynamic updates. |
| 19467 | It supports TSIG authenticated messages and EDNS0.") |
| 19468 | (license license:expat))) |
| 19469 | |
| 19470 | (define-public python-dnspython-1.16 |
| 19471 | (package |
| 19472 | (inherit python-dnspython) |
| 19473 | (version "1.16.0") |
| 19474 | (source (origin |
| 19475 | (method url-fetch) |
| 19476 | (uri (string-append "http://www.dnspython.org/kits/" |
| 19477 | version "/dnspython-" version ".tar.gz")) |
| 19478 | (sha256 |
| 19479 | (base32 |
| 19480 | "1yaw7irazy42n0kdhlk7wyg8ki34rxcnc5xbc1wfwy245b0wbxab")))) |
| 19481 | (native-inputs '()))) |
| 19482 | |
| 19483 | (define-public python-py3dns |
| 19484 | (package |
| 19485 | (name "python-py3dns") |
| 19486 | (version "3.2.1") |
| 19487 | (source |
| 19488 | (origin |
| 19489 | (method url-fetch) |
| 19490 | (uri (pypi-uri "py3dns" version)) |
| 19491 | (sha256 |
| 19492 | (base32 |
| 19493 | "1r25f0ys5p37bhld7m7n4gb0lrysaym3w318w2f8bncq7r3d81qz")))) |
| 19494 | (build-system python-build-system) |
| 19495 | ;; This package wants to read /etc/resolv.conf. We can't patch it without |
| 19496 | ;; removing functionality so we copy from Nix and "just don't build it". |
| 19497 | (arguments |
| 19498 | `(#:phases |
| 19499 | (modify-phases %standard-phases |
| 19500 | (add-after 'unpack 'patch-source |
| 19501 | (lambda _ |
| 19502 | (substitute* "setup.py" |
| 19503 | (("import DNS") "") |
| 19504 | (("DNS.__version__") (string-append "\"" ,version "\""))))) |
| 19505 | ;; For the same reason, drop the sanity check because the library |
| 19506 | ;; fails to load without /etc/resolv.conf. |
| 19507 | (delete 'sanity-check)) |
| 19508 | #:tests? #f)) ; Also skip the tests. |
| 19509 | (home-page "https://launchpad.net/py3dns") |
| 19510 | (synopsis "Python 3 DNS library") |
| 19511 | (description "This Python 3 module provides a DNS API for looking up DNS |
| 19512 | entries from within Python 3 modules and applications. This module is a |
| 19513 | simple, lightweight implementation.") |
| 19514 | (license license:psfl))) |
| 19515 | |
| 19516 | (define-public python-email-validator |
| 19517 | (package |
| 19518 | (name "python-email-validator") |
| 19519 | (version "1.0.2") |
| 19520 | (source |
| 19521 | (origin (method url-fetch) |
| 19522 | (uri (pypi-uri "email_validator" version)) |
| 19523 | (sha256 |
| 19524 | (base32 |
| 19525 | "1ja9149l9ck5n45a72h3is7v476hjny5ybxbcamx1nw6iplsm7k6")))) |
| 19526 | (build-system python-build-system) |
| 19527 | (arguments |
| 19528 | '(#:phases |
| 19529 | (modify-phases %standard-phases |
| 19530 | (add-before 'build 'use-dnspython |
| 19531 | (lambda _ |
| 19532 | (substitute* "setup.py" |
| 19533 | (("dnspython3") "dnspython")) |
| 19534 | #t))))) |
| 19535 | (propagated-inputs |
| 19536 | (list python-dnspython python-idna)) |
| 19537 | (home-page "https://github.com/JoshData/python-email-validator") |
| 19538 | (synopsis "Email address validation library for Python") |
| 19539 | (description |
| 19540 | "This library validates email address syntax and deliverability.") |
| 19541 | (license license:cc0))) |
| 19542 | |
| 19543 | (define-public python-ukpostcodeparser |
| 19544 | (package |
| 19545 | (name "python-ukpostcodeparser") |
| 19546 | (version "1.1.2") |
| 19547 | (source (origin |
| 19548 | (method url-fetch) |
| 19549 | (uri (pypi-uri "UkPostcodeParser" version)) |
| 19550 | (sha256 |
| 19551 | (base32 |
| 19552 | "03jkf1ygbwq3akzbcjyjk1akc1hv2sfgx90306pq1nwklbpn80lk")))) |
| 19553 | (build-system python-build-system) |
| 19554 | (arguments |
| 19555 | `(#:phases |
| 19556 | (modify-phases %standard-phases |
| 19557 | (replace 'check |
| 19558 | (lambda* (#:key tests? #:allow-other-keys) |
| 19559 | (when tests? |
| 19560 | ;; Tests for lowercase postcodes fail. |
| 19561 | (invoke "pytest" "-vv" "ukpostcodeparser/test/parser.py" "-k" |
| 19562 | (string-append "not test_091 " |
| 19563 | "and not test_097 " |
| 19564 | "and not test_098 " |
| 19565 | "and not test_125 " |
| 19566 | "and not test_131")))))))) |
| 19567 | (native-inputs |
| 19568 | (list python-pytest)) |
| 19569 | (home-page "https://github.com/hamstah/ukpostcodeparser") |
| 19570 | (synopsis "UK Postcode parser for Python") |
| 19571 | (description |
| 19572 | "This library provides the @code{parse_uk_postcode} function for |
| 19573 | parsing UK postcodes.") |
| 19574 | (license license:expat))) |
| 19575 | |
| 19576 | (define-public python-faker |
| 19577 | (package |
| 19578 | (name "python-faker") |
| 19579 | (version "15.0.0") |
| 19580 | (source (origin |
| 19581 | (method url-fetch) |
| 19582 | (uri (pypi-uri "Faker" version)) |
| 19583 | (sha256 |
| 19584 | (base32 |
| 19585 | "1yx3gsivisf8ls43v0fgzy4n5q9625xrp9fr9cb5gp3h6k9cfpr4")))) |
| 19586 | (build-system python-build-system) |
| 19587 | (arguments |
| 19588 | '(#:phases |
| 19589 | (modify-phases %standard-phases |
| 19590 | (replace 'check |
| 19591 | (lambda* (#:key tests? #:allow-other-keys) |
| 19592 | (when tests? |
| 19593 | (invoke "python" "-m" "pytest" "-v"))))))) |
| 19594 | (native-inputs |
| 19595 | (list python-freezegun |
| 19596 | python-pytest |
| 19597 | python-random2 |
| 19598 | python-ukpostcodeparser |
| 19599 | python-validators)) |
| 19600 | (propagated-inputs (list python-dateutil)) |
| 19601 | (home-page "https://github.com/joke2k/faker") |
| 19602 | (synopsis "Python package that generates fake data") |
| 19603 | (description |
| 19604 | "Faker is a Python package that generates fake data such as names, |
| 19605 | addresses, and phone numbers.") |
| 19606 | (license license:expat))) |
| 19607 | |
| 19608 | (define-public python-pyaml |
| 19609 | (package |
| 19610 | (name "python-pyaml") |
| 19611 | (version "21.10.1") |
| 19612 | (source (origin |
| 19613 | (method url-fetch) |
| 19614 | (uri (pypi-uri "pyaml" version)) |
| 19615 | (sha256 |
| 19616 | (base32 |
| 19617 | "10w3frzqir5sbpglc9bwb8w414dsivmcvji07yxy61mz2gp9ylf6")))) |
| 19618 | (build-system python-build-system) |
| 19619 | (native-inputs |
| 19620 | (list python-unidecode)) |
| 19621 | (propagated-inputs |
| 19622 | (list python-pyyaml)) |
| 19623 | (home-page "https://github.com/mk-fg/pretty-yaml") |
| 19624 | (synopsis "YAML pretty-print library for Python") |
| 19625 | (description |
| 19626 | "pyaml is a PyYAML based python module to produce pretty and readable |
| 19627 | YAML-serialized data.") |
| 19628 | (license license:wtfpl2))) |
| 19629 | |
| 19630 | (define-public python-pyyaml-env-tag |
| 19631 | (package |
| 19632 | (name "python-pyyaml-env-tag") |
| 19633 | (version "0.1") |
| 19634 | (source |
| 19635 | (origin |
| 19636 | (method url-fetch) |
| 19637 | (uri (pypi-uri "pyyaml_env_tag" version)) |
| 19638 | (sha256 |
| 19639 | (base32 "1nsva88jsmwn0cb9jnrfiz4dvs9xakkpgfii7g1xwkx1pmsjc2bh")))) |
| 19640 | (build-system python-build-system) |
| 19641 | (propagated-inputs (list python-pyyaml)) |
| 19642 | (home-page "https://github.com/waylan/pyyaml-env-tag") |
| 19643 | (synopsis "Custom YAML tag for environment variables") |
| 19644 | (description "This package provides a custom YAML tag for referencing |
| 19645 | environment variables in YAML files.") |
| 19646 | (license license:expat))) |
| 19647 | |
| 19648 | (define-public python-backpack |
| 19649 | (package |
| 19650 | (name "python-backpack") |
| 19651 | (version "0.1") |
| 19652 | (source |
| 19653 | (origin |
| 19654 | (method url-fetch) |
| 19655 | (uri (pypi-uri "backpack" version)) |
| 19656 | (sha256 |
| 19657 | (base32 |
| 19658 | "14rq1mvm0jda90lcx9gyyby9dvq4x3js2cmxvd6vl4686ixwyqh1")))) |
| 19659 | (build-system python-build-system) |
| 19660 | (native-inputs |
| 19661 | (list python-pytest python-nose python-toml)) |
| 19662 | (propagated-inputs |
| 19663 | (list python-simplejson)) |
| 19664 | (home-page "https://github.com/sdispater/backpack") |
| 19665 | (synopsis "Utilities for working with Python collections") |
| 19666 | (description "Backpack provides some useful utilities for working with |
| 19667 | collections of data.") |
| 19668 | (license license:expat))) |
| 19669 | |
| 19670 | (define-public python-prompt-toolkit |
| 19671 | (package |
| 19672 | (name "python-prompt-toolkit") |
| 19673 | (version "3.0.29") |
| 19674 | (source |
| 19675 | (origin |
| 19676 | (method url-fetch) |
| 19677 | (uri (pypi-uri "prompt_toolkit" version)) |
| 19678 | (sha256 |
| 19679 | (base32 "19vf5cahp3imdpwhgvk55g3dvqmc6ga175r4vkq79kffx1h0yr5x")))) |
| 19680 | (build-system python-build-system) |
| 19681 | (arguments |
| 19682 | `(#:phases |
| 19683 | (modify-phases %standard-phases |
| 19684 | (replace 'check |
| 19685 | (lambda* (#:key tests? #:allow-other-keys) |
| 19686 | (when tests? |
| 19687 | ;; HOME is needed for the test |
| 19688 | ;; "test_pathcompleter_can_expanduser". |
| 19689 | (setenv "HOME" "/tmp") |
| 19690 | (invoke "pytest" "-vv"))))))) |
| 19691 | (propagated-inputs |
| 19692 | (list python-wcwidth)) |
| 19693 | (native-inputs |
| 19694 | (list python-pytest)) |
| 19695 | (home-page "https://github.com/prompt-toolkit/python-prompt-toolkit") |
| 19696 | (synopsis "Library for building command line interfaces in Python") |
| 19697 | (description |
| 19698 | "Prompt-Toolkit is a library for building interactive command line |
| 19699 | interfaces in Python. It's like GNU Readline but it also features syntax |
| 19700 | highlighting while typing, out-of-the-box multi-line input editing, advanced |
| 19701 | code completion, incremental search, support for Chinese double-width |
| 19702 | characters, mouse support, and auto suggestions.") |
| 19703 | (license license:bsd-3))) |
| 19704 | |
| 19705 | (define-public python-proselint |
| 19706 | (package |
| 19707 | (name "python-proselint") |
| 19708 | (version "0.13.0") |
| 19709 | (source |
| 19710 | (origin |
| 19711 | (method url-fetch) |
| 19712 | (uri (pypi-uri "proselint" version)) |
| 19713 | (sha256 |
| 19714 | (base32 |
| 19715 | "0n1ahnq2mkgvh94g05xhc3l1fs3hh0ycskqlqivhhfdaq8ybdlkx")))) |
| 19716 | (build-system python-build-system) |
| 19717 | (arguments |
| 19718 | `(#:tests? #f |
| 19719 | #:phases |
| 19720 | (modify-phases %standard-phases |
| 19721 | (add-after 'unpack 'set-home-directory |
| 19722 | (lambda _ |
| 19723 | (setenv "HOME" "/tmp")))))) |
| 19724 | (propagated-inputs |
| 19725 | (list python-click python-future python-six)) |
| 19726 | (home-page "http://proselint.com/") |
| 19727 | (synopsis "Linter for prose") |
| 19728 | (description "@code{python-proselint} is a linter for English prose, that |
| 19729 | scans through a file and detects issues.") |
| 19730 | (license license:bsd-3))) |
| 19731 | |
| 19732 | (define-public python-jedi |
| 19733 | (package |
| 19734 | (name "python-jedi") |
| 19735 | (version "0.18.2") |
| 19736 | (source |
| 19737 | (origin |
| 19738 | (method git-fetch) |
| 19739 | (uri (git-reference |
| 19740 | (url "https://github.com/davidhalter/jedi") |
| 19741 | (commit (string-append "v" version)) |
| 19742 | (recursive? #true))) |
| 19743 | (file-name (git-file-name name version)) |
| 19744 | (sha256 |
| 19745 | (base32 |
| 19746 | "1nhsajmkn3qj32k5z3ymrd3r6dz2aliv2pqb824m5kaib986dm44")) |
| 19747 | (modules '((guix build utils))))) |
| 19748 | (build-system python-build-system) |
| 19749 | (arguments |
| 19750 | `(#:phases |
| 19751 | (modify-phases %standard-phases |
| 19752 | (replace 'check |
| 19753 | (lambda* (#:key tests? #:allow-other-keys) |
| 19754 | (when tests? |
| 19755 | (setenv "HOME" "/tmp") |
| 19756 | (invoke "python" "-m" "pytest" "-vv"))))))) |
| 19757 | (native-inputs |
| 19758 | (list python-colorama python-docopt python-pytest)) |
| 19759 | (propagated-inputs |
| 19760 | (list python-parso)) |
| 19761 | (home-page "https://github.com/davidhalter/jedi") |
| 19762 | (synopsis "Autocompletion and static analysis library for Python") |
| 19763 | (description |
| 19764 | "Jedi is a static analysis tool for Python that can be used in Integrated |
| 19765 | Development Environments (@dfn{IDE}s) and text editors. It understands Python |
| 19766 | on a deeper level than many other static analysis frameworks for Python. |
| 19767 | |
| 19768 | Jedi understands docstrings and you can use Jedi autocompletion in your REPL |
| 19769 | as well.") |
| 19770 | (license license:expat))) |
| 19771 | |
| 19772 | (define-public ptpython |
| 19773 | (package |
| 19774 | (name "ptpython") |
| 19775 | (version "3.0.20") |
| 19776 | (source (origin |
| 19777 | (method url-fetch) |
| 19778 | (uri (pypi-uri "ptpython" version)) |
| 19779 | (sha256 |
| 19780 | (base32 |
| 19781 | "1mjfyr5gwrs1qbizh6nki0nv6hahmg8mhhqxi1qc6pfa4znlrzga")))) |
| 19782 | (build-system python-build-system) |
| 19783 | (arguments |
| 19784 | `(#:tests? #f)) ;there are no tests |
| 19785 | (propagated-inputs |
| 19786 | (list python-appdirs python-black python-jedi python-prompt-toolkit |
| 19787 | python-pygments)) |
| 19788 | (home-page "https://github.com/jonathanslenders/ptpython") |
| 19789 | (synopsis "Python Read-Eval-Print-Loop with nice IDE-like features") |
| 19790 | (description |
| 19791 | "ptpython is a Python read-eval-print loop with IDE-like features. |
| 19792 | It supports syntax highlighting, multiline editing, autocompletion, mouse, |
| 19793 | color schemes, bracketed paste, Vi and Emacs keybindings, Chinese characters |
| 19794 | etc.") |
| 19795 | (license license:bsd-3))) |
| 19796 | |
| 19797 | (define-public python-easyprocess |
| 19798 | (package |
| 19799 | (name "python-easyprocess") |
| 19800 | (version "0.3") |
| 19801 | (source |
| 19802 | (origin |
| 19803 | (method url-fetch) |
| 19804 | (uri (pypi-uri "EasyProcess" version)) |
| 19805 | (sha256 |
| 19806 | (base32 "115rzzr0hx4af4m6krf7dxn8851n4l8jfxahjzjc2r0zq2m8v57v")))) |
| 19807 | (build-system python-build-system) |
| 19808 | (arguments |
| 19809 | ;; Tests require pyvirtualdisplay, which requires this package. |
| 19810 | `(#:tests? #f)) |
| 19811 | (home-page "https://github.com/ponty/easyprocess") |
| 19812 | (synopsis "Python subprocess interface") |
| 19813 | (description |
| 19814 | "@code{easyprocess} is an easy to use Python subprocess interface.") |
| 19815 | (license license:bsd-3))) |
| 19816 | |
| 19817 | (define-public python-entrypoint2 |
| 19818 | (package |
| 19819 | (name "python-entrypoint2") |
| 19820 | (version "0.2.4") |
| 19821 | (source |
| 19822 | (origin |
| 19823 | (method url-fetch) |
| 19824 | (uri (pypi-uri "entrypoint2" version)) |
| 19825 | (sha256 |
| 19826 | (base32 "1qyxq54r2fbh09ab5sffbxajy8arbk6czxz5lq3ccr9qrypw6w27")))) |
| 19827 | (build-system python-build-system) |
| 19828 | (arguments |
| 19829 | `(#:test-target "pytest")) |
| 19830 | (native-inputs |
| 19831 | (list python-easyprocess python-pytest python-pytest-runner)) |
| 19832 | (home-page "https://github.com/ponty/entrypoint2") |
| 19833 | (synopsis "Command-line interface for Python modules") |
| 19834 | (description |
| 19835 | "@code{entrypoint2} is an easy to use command-line interface for Python |
| 19836 | modules based on @code{argparse}. It translates function signature and |
| 19837 | documentation to argparse configuration.") |
| 19838 | (license license:bsd-3))) |
| 19839 | |
| 19840 | (define-public python-pyvirtualdisplay |
| 19841 | (package |
| 19842 | (name "python-pyvirtualdisplay") |
| 19843 | (version "2.1") |
| 19844 | (source |
| 19845 | (origin |
| 19846 | (method url-fetch) |
| 19847 | (uri (pypi-uri "PyVirtualDisplay" version)) |
| 19848 | (sha256 |
| 19849 | (base32 "1z2fzgiw3xv3m1d9ppn53g07zhnpj05addiz56sm6ircxibnjk4x")))) |
| 19850 | (build-system python-build-system) |
| 19851 | (arguments |
| 19852 | ;; Tests fail with: |
| 19853 | ;; FileNotFoundError: [Errno 2] No such file or directory: 'Xvnc'. |
| 19854 | `(#:tests? #f)) |
| 19855 | (native-inputs |
| 19856 | (list python-entrypoint2 python-psutil python-pytest |
| 19857 | python-pytest-runner)) |
| 19858 | (propagated-inputs |
| 19859 | (list python-easyprocess python-pillow)) |
| 19860 | (home-page "https://github.com/ponty/pyvirtualdisplay") |
| 19861 | (synopsis "Python wrapper for Xvfb, Xephyr and Xvnc") |
| 19862 | (description |
| 19863 | "@code{pyvirtualdisplay} is a Python wrapper for Xvfb, Xephyr and Xvnc.") |
| 19864 | (license license:bsd-3))) |
| 19865 | |
| 19866 | (define-public python-stem |
| 19867 | (package |
| 19868 | (name "python-stem") |
| 19869 | (version "1.8.0") |
| 19870 | (source |
| 19871 | (origin |
| 19872 | (method url-fetch) |
| 19873 | (uri (pypi-uri "stem" version)) |
| 19874 | (sha256 |
| 19875 | (base32 |
| 19876 | "1hk8alc0r4m669ggngdfvryndd0fbx0w62sclcmg55af4ak8xd50")))) |
| 19877 | (build-system python-build-system) |
| 19878 | (arguments |
| 19879 | `(#:phases |
| 19880 | (modify-phases %standard-phases |
| 19881 | (add-after 'unpack 'fix-tests |
| 19882 | ;; See https://github.com/torproject/stem/issues/56 |
| 19883 | (lambda _ |
| 19884 | (substitute* "run_tests.py" |
| 19885 | (("test\\.task\\.MOCK_VERSION,") |
| 19886 | "")))) |
| 19887 | (replace 'check |
| 19888 | (lambda _ |
| 19889 | (invoke "./run_tests.py" "--unit") |
| 19890 | #t))))) |
| 19891 | (native-inputs |
| 19892 | (list python-mock python-pycodestyle python-pyflakes)) |
| 19893 | (home-page "https://stem.torproject.org/") |
| 19894 | (synopsis |
| 19895 | "Python controller library that allows applications to interact with Tor") |
| 19896 | (description |
| 19897 | "Stem is a Python controller library for Tor. With it you can use Tor's |
| 19898 | control protocol to script against the Tor process and read descriptor data |
| 19899 | relays publish about themselves.") |
| 19900 | (license license:lgpl3))) |
| 19901 | |
| 19902 | (define-public python-pyserial |
| 19903 | (package |
| 19904 | (name "python-pyserial") |
| 19905 | (version "3.5") |
| 19906 | (source |
| 19907 | (origin |
| 19908 | (method url-fetch) |
| 19909 | (uri (pypi-uri "pyserial" version)) |
| 19910 | (sha256 |
| 19911 | (base32 |
| 19912 | "1nyd4m4mnrz8scbfqn4zpq8gnbl4x42w5zz62vcgpzqd2waf0xrw")))) |
| 19913 | (build-system python-build-system) |
| 19914 | (arguments |
| 19915 | '(#:tests? #f)) ; FIXME: 3/49 tests are failing. |
| 19916 | ;; #:phases |
| 19917 | ;; (modify-phases %standard-phases |
| 19918 | ;; (replace 'check |
| 19919 | ;; (lambda _ |
| 19920 | ;; (zero? (system* "python" "test/run_all_tests.py" "loop://"))))))) |
| 19921 | (home-page |
| 19922 | "https://github.com/pyserial/pyserial") |
| 19923 | (synopsis "Python Serial Port Bindings") |
| 19924 | (description "@code{pyserial} provide serial port bindings for Python. It |
| 19925 | supports different byte sizes, stop bits, parity and flow control with RTS/CTS |
| 19926 | and/or Xon/Xoff. The port is accessed in RAW mode.") |
| 19927 | (license license:bsd-3))) |
| 19928 | |
| 19929 | (define-public python-pyserial-asyncio |
| 19930 | (package |
| 19931 | (name "python-pyserial-asyncio") |
| 19932 | (version "0.6") |
| 19933 | (source |
| 19934 | (origin |
| 19935 | (method url-fetch) |
| 19936 | (uri (pypi-uri "pyserial-asyncio" version)) |
| 19937 | (sha256 |
| 19938 | (base32 "0bx3syngmq2j9mh81byzka1x4ilw8ac9mbx52zn7b7ayw0ijj0xn")))) |
| 19939 | (build-system python-build-system) |
| 19940 | (propagated-inputs (list python-pyserial)) |
| 19941 | (home-page "https://github.com/pyserial/pyserial-asyncio") |
| 19942 | (synopsis "Pyserial asynchronous I/O extension") |
| 19943 | (description "This package extends Pyserial with asynchronous I/O |
| 19944 | support.") |
| 19945 | (license license:bsd-3))) |
| 19946 | |
| 19947 | (define-public python-pymodbus |
| 19948 | (package |
| 19949 | (name "python-pymodbus") |
| 19950 | (version "2.5.3") |
| 19951 | (source |
| 19952 | (origin |
| 19953 | (method git-fetch) |
| 19954 | (uri (git-reference |
| 19955 | (url "https://github.com/riptideio/pymodbus") |
| 19956 | (commit (string-append "v" version)))) |
| 19957 | (file-name (git-file-name name version)) |
| 19958 | (sha256 |
| 19959 | (base32 |
| 19960 | "0kjjrx7xrlx0pf3y67hhr4xvqrly3xzmvf6ic5as61m6z19m7zd5")))) |
| 19961 | (build-system python-build-system) |
| 19962 | (arguments |
| 19963 | `(#:phases (modify-phases %standard-phases |
| 19964 | (add-after 'unpack 'disable-problematic-tests |
| 19965 | (lambda _ |
| 19966 | ;; The following test modules rely on Python's own |
| 19967 | ;; 'test' module, which is not distributed in the Python |
| 19968 | ;; package of Guix. |
| 19969 | (delete-file "test/test_client_async_asyncio.py") |
| 19970 | (delete-file "test/test_client_sync_diag.py") |
| 19971 | ;; The following test module requires the asynctest |
| 19972 | ;; library, abandoned without support for Python 3.9+ |
| 19973 | ;; (see: |
| 19974 | ;; https://github.com/riptideio/pymodbus/issues/681). |
| 19975 | (delete-file "test/test_server_asyncio.py"))) |
| 19976 | (replace 'check |
| 19977 | (lambda* (#:key tests? #:allow-other-keys) |
| 19978 | (when tests? |
| 19979 | (invoke "python" "-m" "pytest"))))))) |
| 19980 | (native-inputs |
| 19981 | (list python-mock |
| 19982 | python-pytest |
| 19983 | python-redis |
| 19984 | python-sqlalchemy |
| 19985 | python-tornado |
| 19986 | python-twisted)) |
| 19987 | (propagated-inputs |
| 19988 | (list python-pyserial |
| 19989 | python-six |
| 19990 | ;; For the REPL. |
| 19991 | python-aiohttp |
| 19992 | python-click |
| 19993 | python-prompt-toolkit |
| 19994 | python-pygments |
| 19995 | python-pyserial-asyncio)) |
| 19996 | (home-page "https://github.com/riptideio/pymodbus/") |
| 19997 | (synopsis "Modbus protocol stack in Python") |
| 19998 | (description "Pymodbus is a full Modbus protocol implementation using |
| 19999 | @code{asyncio}, @code{tornado} or @code{twisted} for its asynchronous |
| 20000 | communications core. It includes the following @emph{client} features: |
| 20001 | @itemize |
| 20002 | @item full read/write protocol on discrete and register |
| 20003 | @item most of the extended protocol (diagnostic/file/pipe/setting/information) |
| 20004 | @item TCP, UDP, Serial ASCII, Serial RTU, and Serial Binary |
| 20005 | @item asynchronous and synchronous versions |
| 20006 | @item payload builder/decoder utilities |
| 20007 | @item pymodbus read eval print loop (REPL). |
| 20008 | @end itemize |
| 20009 | It also includes the following @emph{server} features: |
| 20010 | @itemize |
| 20011 | @item can function as a fully implemented Modbus server |
| 20012 | @item TCP, UDP, Serial ASCII, Serial RTU, and Serial Binary |
| 20013 | @item asynchronous and synchronous versions |
| 20014 | @item full server control context (device information, counters, etc) |
| 20015 | @item a number of backing contexts (database, redis, sqlite, a slave device). |
| 20016 | @end itemize") |
| 20017 | (license license:bsd-3))) |
| 20018 | |
| 20019 | (define-public python-exodriver |
| 20020 | (package |
| 20021 | (name "python-exodriver") |
| 20022 | (version "2.6.0") |
| 20023 | (source (origin |
| 20024 | (method git-fetch) |
| 20025 | (uri (git-reference |
| 20026 | (url "https://github.com/labjack/exodriver") |
| 20027 | (commit (string-append "v" version)))) |
| 20028 | (file-name (git-file-name name version)) |
| 20029 | (sha256 |
| 20030 | (base32 |
| 20031 | "1ikjz8147p14s814yabdq821y691klnr2yg54zgsymcc97kvwp2q")))) |
| 20032 | (outputs (list "out" |
| 20033 | "doc")) ;544 KiB of examples |
| 20034 | (build-system gnu-build-system) |
| 20035 | (arguments |
| 20036 | (list |
| 20037 | #:tests? #f ;no test suite |
| 20038 | #:make-flags #~(list (string-append "CC=" #$(cc-for-target)) |
| 20039 | (string-append "PREFIX=" #$output) |
| 20040 | "RUN_LDCONFIG=0" |
| 20041 | "LINK_SO=1") |
| 20042 | #:phases |
| 20043 | #~(modify-phases %standard-phases |
| 20044 | (delete 'configure) |
| 20045 | (replace 'build |
| 20046 | (lambda* (#:key make-flags #:allow-other-keys #:rest args) |
| 20047 | (with-directory-excursion "liblabjackusb" |
| 20048 | (apply (assoc-ref %standard-phases 'build) |
| 20049 | `(,@args #:make-flags ,make-flags))))) |
| 20050 | (replace 'install |
| 20051 | (lambda* (#:key make-flags #:allow-other-keys #:rest args) |
| 20052 | (with-directory-excursion "liblabjackusb" |
| 20053 | (apply (assoc-ref %standard-phases 'install) |
| 20054 | `(,@args #:make-flags ,make-flags))) |
| 20055 | ;; Install udev rules. |
| 20056 | (install-file "90-labjack.rules" |
| 20057 | (string-append #$output "/lib/udev/rules.d")) |
| 20058 | ;; Install examples. |
| 20059 | (let ((doc (string-append #$output:doc "/share/doc/" #$name))) |
| 20060 | (mkdir-p doc) |
| 20061 | (copy-recursively "examples" |
| 20062 | (string-append doc "/examples")))))))) |
| 20063 | (inputs (list libusb)) |
| 20064 | (home-page "https://github.com/labjack/exodriver") |
| 20065 | (synopsis "USB driver for LabJack data acquisition instruments") |
| 20066 | (description "This package provides @code{liblabjackusb}, a USB library for low-level |
| 20067 | communication with the U3, U6, UE9, Digit, T4 and T7 LabJack data acquisition |
| 20068 | instruments. A udev rule is also included to allow unprivileged users to |
| 20069 | communicate with the instruments via USB.") |
| 20070 | (license license:expat))) ;see README |
| 20071 | |
| 20072 | (define-public python-labjack |
| 20073 | (package |
| 20074 | (name "python-labjack") |
| 20075 | (version "2.0.4") |
| 20076 | (source (origin |
| 20077 | (method url-fetch) |
| 20078 | (uri (pypi-uri "LabJackPython" version)) |
| 20079 | (sha256 |
| 20080 | (base32 |
| 20081 | "013bjqdi05vlbdqprr6kqi8gs4qhqc7rnyp1klw8k6fng77rpdzz")))) |
| 20082 | (build-system python-build-system) |
| 20083 | (arguments |
| 20084 | (list |
| 20085 | #:tests? #f ;no test suite |
| 20086 | #:phases |
| 20087 | #~(modify-phases %standard-phases |
| 20088 | (add-after 'unpack 'patch-liblabjackusb.so |
| 20089 | (lambda* (#:key inputs #:allow-other-keys) |
| 20090 | (substitute* (find-files "." "\\.py$") |
| 20091 | (("ctypes.CDLL\\(\"liblabjackusb.so\"") |
| 20092 | (format #f "ctypes.CDLL(~s" |
| 20093 | (search-input-file inputs |
| 20094 | "lib/liblabjackusb.so"))))))))) |
| 20095 | ;; exodriver is provided as a regular input, as only its shared object is |
| 20096 | ;; used, not its Python API. |
| 20097 | (inputs (list python-exodriver)) |
| 20098 | (home-page "https://labjack.com/support/software/examples/ud/labjackpython") |
| 20099 | (synopsis "Python library for LabJack U3, U6, UE9 and U12") |
| 20100 | (description "This Python library allows communicating with the U3, U6, |
| 20101 | UE9 and U12 LabJack data acquisition (DAQ) modules.") |
| 20102 | (license license:expat))) ;see setup.py |
| 20103 | |
| 20104 | (define-public python-kivy-garden |
| 20105 | (package |
| 20106 | (name "python-kivy-garden") |
| 20107 | (version "0.1.4") |
| 20108 | (source |
| 20109 | (origin |
| 20110 | (method url-fetch) |
| 20111 | (uri (pypi-uri "kivy-garden" version)) |
| 20112 | (sha256 |
| 20113 | (base32 "0wkcpr2zc1q5jb0bi7v2dgc0vs5h1y7j42mviyh764j2i0kz8mn2")))) |
| 20114 | (build-system python-build-system) |
| 20115 | (arguments |
| 20116 | '(#:phases (modify-phases %standard-phases |
| 20117 | (add-after 'install 'remove-bat-file |
| 20118 | (lambda* (#:key outputs #:allow-other-keys) |
| 20119 | (let ((out (assoc-ref outputs "out"))) |
| 20120 | (delete-file |
| 20121 | (string-append out "/bin/garden.bat")))))))) |
| 20122 | (propagated-inputs |
| 20123 | (list python-requests)) |
| 20124 | (home-page "https://github.com/kivy-garden/garden") |
| 20125 | (synopsis "Garden tool for Kivy flowers") |
| 20126 | (description |
| 20127 | "This package provides the @command{garden} command to install packages |
| 20128 | for Kivy, the multitouch application platform.") |
| 20129 | (license license:expat))) |
| 20130 | |
| 20131 | (define-public python-kivy |
| 20132 | (package |
| 20133 | (name "python-kivy") |
| 20134 | (version "2.1.0") |
| 20135 | (source |
| 20136 | (origin |
| 20137 | (method url-fetch) |
| 20138 | (uri (pypi-uri "Kivy" version)) |
| 20139 | (file-name (string-append name "-" version ".tar.gz")) |
| 20140 | (sha256 |
| 20141 | (base32 |
| 20142 | "1cq4djfn7h8560mvz94dydsldg2jpp5w9rby7nafgmbh7fxg65is")))) |
| 20143 | (build-system python-build-system) |
| 20144 | (arguments |
| 20145 | `(#:tests? #f ; Tests require many optional packages |
| 20146 | #:phases |
| 20147 | (modify-phases %standard-phases |
| 20148 | (add-after 'patch-generated-file-shebangs 'set-sdl-paths |
| 20149 | (lambda* (#:key inputs #:allow-other-keys) |
| 20150 | (setenv "KIVY_SDL2_PATH" |
| 20151 | (search-input-directory inputs "/include/SDL2")))) |
| 20152 | (add-before 'build 'set-home |
| 20153 | (lambda _ |
| 20154 | ;; 'kivy/__init__.py' wants to create $HOME/.kivy. |
| 20155 | (setenv "HOME" (getcwd))))))) |
| 20156 | (native-inputs |
| 20157 | (list pkg-config python-cython)) |
| 20158 | (inputs |
| 20159 | (list gstreamer |
| 20160 | mesa |
| 20161 | (sdl-union (list sdl2 sdl2-image sdl2-mixer sdl2-ttf)) |
| 20162 | python-docutils |
| 20163 | python-kivy-garden |
| 20164 | python-pygments)) |
| 20165 | (home-page "https://kivy.org") |
| 20166 | (synopsis "Multitouch application framework") |
| 20167 | (description |
| 20168 | "Kivy is a software library for rapid development of hardware-accelerated |
| 20169 | multitouch applications.") |
| 20170 | (license license:expat))) |
| 20171 | |
| 20172 | (define-public python-kivymd |
| 20173 | (package |
| 20174 | (name "python-kivymd") |
| 20175 | (version "0.104.2") |
| 20176 | (source |
| 20177 | (origin |
| 20178 | (method url-fetch) |
| 20179 | (uri (pypi-uri "kivymd" version)) |
| 20180 | (sha256 |
| 20181 | (base32 "04lwy6j0agrdwa4a6dl6qs97nx9ysmscmm8psvdzjpyj8aa1zg4p")))) |
| 20182 | (build-system python-build-system) |
| 20183 | (arguments |
| 20184 | `(#:tests? #f ;tests require network |
| 20185 | #:phases |
| 20186 | (modify-phases %standard-phases |
| 20187 | (add-before 'sanity-check 'set-home |
| 20188 | (lambda _ |
| 20189 | ;; 'kivy/__init__.py' wants to create $HOME/.kivy. |
| 20190 | (setenv "HOME" (getcwd))))))) |
| 20191 | (native-inputs (list python-docutils)) |
| 20192 | (propagated-inputs |
| 20193 | (list python-kivy python-pillow python-pygments python-kivy-garden)) |
| 20194 | (home-page "https://github.com/kivymd/KivyMD") |
| 20195 | (synopsis "Material Design compliant widgets for use with Kivy") |
| 20196 | (description |
| 20197 | "This package provides Kivy widgets that approximate Google's Material |
| 20198 | Design spec without sacrificing ease of use or application performance.") |
| 20199 | (license license:expat))) |
| 20200 | |
| 20201 | (define-public python-asynckivy |
| 20202 | (package |
| 20203 | (name "python-asynckivy") |
| 20204 | (version "0.5.3") |
| 20205 | (source |
| 20206 | (origin |
| 20207 | (method url-fetch) |
| 20208 | (uri |
| 20209 | (pypi-uri "asynckivy" version)) |
| 20210 | (sha256 |
| 20211 | (base32 "0ivjvch8yn3k1ybfp7c1nm8mhc0ymg7d04mq54lly7yjvg0jvcni")))) |
| 20212 | (build-system python-build-system) |
| 20213 | (arguments |
| 20214 | `(#:phases |
| 20215 | (modify-phases %standard-phases |
| 20216 | (add-before 'check 'set-home |
| 20217 | (lambda _ |
| 20218 | ;; 'kivy/__init__.py' wants to create $HOME/.kivy. |
| 20219 | (setenv "HOME" (getcwd))))))) |
| 20220 | (propagated-inputs (list python-kivy python-asyncgui)) |
| 20221 | (home-page "https://github.com/gottadiveintopython/asynckivy") |
| 20222 | (synopsis "Async library for Kivy") |
| 20223 | (description |
| 20224 | "This package provides async versions of Kivy functions to avoid the |
| 20225 | callback-heavy mode of interaction typical in some Kivy applications.") |
| 20226 | (license license:expat))) |
| 20227 | |
| 20228 | (define-public python-asyncgui |
| 20229 | (package |
| 20230 | (name "python-asyncgui") |
| 20231 | (version "0.5.3") |
| 20232 | (source (origin |
| 20233 | (method url-fetch) |
| 20234 | (uri (pypi-uri "asyncgui" version)) |
| 20235 | (sha256 |
| 20236 | (base32 |
| 20237 | "0614130afg2qc1qq4p82piskvvx6lpjl4nlsakbjzdyd78xywnb7")))) |
| 20238 | (build-system python-build-system) |
| 20239 | (home-page "https://github.com/gottadiveintopython/asyncgui") |
| 20240 | (synopsis "Enables async/await without an event loop") |
| 20241 | (description "This package provides support for async/await applications |
| 20242 | without requiring an event loop, useful for creative responsive GUIs.") |
| 20243 | (license license:expat))) |
| 20244 | |
| 20245 | (define-public python-asynctest |
| 20246 | (package |
| 20247 | (name "python-asynctest") |
| 20248 | (version "0.13.0") |
| 20249 | (source (origin |
| 20250 | (method url-fetch) |
| 20251 | (uri (pypi-uri "asynctest" version)) |
| 20252 | (sha256 |
| 20253 | (base32 |
| 20254 | "1b3zsy7p84gag6q8ai2ylyrhx213qdk2h2zb6im3xn0m5n264y62")))) |
| 20255 | (build-system python-build-system) |
| 20256 | (arguments |
| 20257 | ;; The test suite appears to be incompatible with Python 3.9+, completes |
| 20258 | ;; with 25 failures and 41 errors out of 220 tests (see: |
| 20259 | ;; https://github.com/Martiusweb/asynctest/issues/149). |
| 20260 | (list #:tests? #f |
| 20261 | #:phases #~(modify-phases %standard-phases |
| 20262 | (replace 'check |
| 20263 | (lambda* (#:key tests? #:allow-other-keys) |
| 20264 | (when tests? |
| 20265 | (invoke "python" "-m" "unittest" "test"))))))) |
| 20266 | (home-page "https://github.com/Martiusweb/asynctest/") |
| 20267 | (synopsis "Unittest extensions for testing asyncio libraries") |
| 20268 | (description |
| 20269 | "The @code{asynctest} Python package is built on top of the standard |
| 20270 | @code{unittest} module and cuts down boilerplate code when testing libraries |
| 20271 | for @code{asyncio}.") |
| 20272 | (license license:asl2.0))) |
| 20273 | |
| 20274 | (define-public python-binaryornot |
| 20275 | (package |
| 20276 | (name "python-binaryornot") |
| 20277 | (version "0.4.4") |
| 20278 | (source (origin |
| 20279 | (method url-fetch) |
| 20280 | (uri (pypi-uri "binaryornot" version)) |
| 20281 | (sha256 |
| 20282 | (base32 |
| 20283 | "0qc006986rb6bcbmiymwgcl1mns2jphr1j7sr7nk41nlr7gh359m")))) |
| 20284 | (build-system python-build-system) |
| 20285 | (arguments |
| 20286 | `(#:phases |
| 20287 | (modify-phases %standard-phases |
| 20288 | (add-after 'unpack 'patch-tests |
| 20289 | (lambda _ |
| 20290 | ;; TypeError: binary() got an unexpected keyword argument |
| 20291 | ;; 'average_size'. |
| 20292 | (substitute* "tests/test_check.py" |
| 20293 | (("average_size=512") "")) |
| 20294 | #t))))) |
| 20295 | (propagated-inputs |
| 20296 | (list python-chardet python-hypothesis)) |
| 20297 | (home-page "https://github.com/audreyr/binaryornot") |
| 20298 | (synopsis "Package to check if a file is binary or text") |
| 20299 | (description "Ultra-lightweight pure Python package to check if a file is |
| 20300 | binary or text.") |
| 20301 | (license license:bsd-3))) |
| 20302 | |
| 20303 | (define-public binwalk |
| 20304 | (package |
| 20305 | (name "binwalk") |
| 20306 | (version "2.3.4") |
| 20307 | (source |
| 20308 | (origin |
| 20309 | (method git-fetch) |
| 20310 | (uri (git-reference |
| 20311 | (url "https://github.com/ReFirmLabs/binwalk") |
| 20312 | (commit (string-append "v" version)))) |
| 20313 | (file-name (git-file-name name version)) |
| 20314 | (sha256 |
| 20315 | (base32 "0cfm1khckq986l0q68kmfyfagc6zmb94hgjjm847fjcil77dnlw6")) |
| 20316 | (modules '((guix build utils))) |
| 20317 | (snippet |
| 20318 | #~(begin |
| 20319 | (for-each delete-file |
| 20320 | (list "testing/tests/input-vectors/firmware.zip" |
| 20321 | "testing/tests/test_firmware_zip.py")))))) |
| 20322 | (build-system python-build-system) |
| 20323 | (arguments |
| 20324 | `(#:phases |
| 20325 | (modify-phases %standard-phases |
| 20326 | (add-before 'check 'set-home |
| 20327 | (lambda _ |
| 20328 | (setenv "HOME" "")))))) |
| 20329 | (native-inputs |
| 20330 | (list python-coverage python-nose)) |
| 20331 | (home-page "https://github.com/ReFirmLabs/binwalk") |
| 20332 | (synopsis "Firmware analysis tool") |
| 20333 | (description "Binwalk is a tool for analyzing, reverse engineering, and |
| 20334 | extracting firmware images") |
| 20335 | (license license:expat))) |
| 20336 | |
| 20337 | (define-public python-binwalk |
| 20338 | (deprecated-package "python-binwalk" binwalk)) |
| 20339 | |
| 20340 | (define-public python-bson |
| 20341 | (package |
| 20342 | (name "python-bson") |
| 20343 | (version "0.5.10") |
| 20344 | (source |
| 20345 | (origin |
| 20346 | (method git-fetch) ;for tests |
| 20347 | (uri (git-reference |
| 20348 | (url "https://github.com/py-bson/bson") |
| 20349 | (commit version))) |
| 20350 | (file-name (git-file-name name version)) |
| 20351 | (sha256 |
| 20352 | (base32 |
| 20353 | "1vpy4rsvm3hhawvbg9rbw4j36ck8qylkhm8cjy0q6imvinkd2als")))) |
| 20354 | (build-system python-build-system) |
| 20355 | (arguments |
| 20356 | '(#:phases |
| 20357 | (modify-phases %standard-phases |
| 20358 | (replace 'check |
| 20359 | (lambda* (#:key tests? #:allow-other-keys) |
| 20360 | (when tests? |
| 20361 | (invoke "./test.py"))))))) |
| 20362 | (propagated-inputs (list python-dateutil python-six)) |
| 20363 | (home-page "https://github.com/py-bson/bson") |
| 20364 | (synopsis "BSON (Binary JSON) codec for Python") |
| 20365 | (description "@code{bson} is a Python library implementing a BSON (Binary |
| 20366 | JSON) codec.") |
| 20367 | (license license:asl2.0))) |
| 20368 | |
| 20369 | (define-public python-nltk |
| 20370 | (package |
| 20371 | (name "python-nltk") |
| 20372 | (version "3.6.2") |
| 20373 | (source (origin |
| 20374 | (method url-fetch) |
| 20375 | (uri (pypi-uri "nltk" version ".zip")) |
| 20376 | (sha256 |
| 20377 | (base32 |
| 20378 | "1sq32lwgij9h8rsksymnxxr7bqfw3vgx5ijw4azbj6k2xnmmdmap")))) |
| 20379 | (build-system python-build-system) |
| 20380 | (arguments |
| 20381 | '(;; The tests require some extra resources to be downloaded. |
| 20382 | ;; TODO Try packaging these resources. |
| 20383 | #:tests? #f)) |
| 20384 | (propagated-inputs |
| 20385 | (list python-click python-joblib python-regex python-tqdm)) |
| 20386 | (native-inputs |
| 20387 | (list unzip)) |
| 20388 | (home-page "http://nltk.org/") |
| 20389 | (synopsis "Natural Language Toolkit") |
| 20390 | (description "It provides interfaces to over 50 corpora and lexical |
| 20391 | resources such as WordNet, along with a suite of text processing libraries |
| 20392 | for classification, tokenization, stemming, tagging, parsing, and semantic |
| 20393 | reasoning, wrappers for natural language processing libraries.") |
| 20394 | (license license:asl2.0))) |
| 20395 | |
| 20396 | ;; Versions >=3.5 breaks backward-compatibility, |
| 20397 | ;; so we keep version 3.4.x around for a while. |
| 20398 | (define-public python-nltk-3.4 |
| 20399 | (package |
| 20400 | (inherit python-nltk) |
| 20401 | (version "3.4.5") |
| 20402 | (source |
| 20403 | (origin |
| 20404 | (method url-fetch) |
| 20405 | (uri (pypi-uri "nltk" version ".zip")) |
| 20406 | (sha256 |
| 20407 | (base32 "153x2clrnigs74jdgnn3qmljdjj4gprmvpdvh49i18ls4m8mbm5y")))) |
| 20408 | (propagated-inputs (list python-six)))) |
| 20409 | |
| 20410 | (define-public python-pymongo |
| 20411 | (package |
| 20412 | (name "python-pymongo") |
| 20413 | (version "4.1.1") |
| 20414 | (source (origin |
| 20415 | (method url-fetch) |
| 20416 | (uri (pypi-uri "pymongo" version)) |
| 20417 | (sha256 |
| 20418 | (base32 |
| 20419 | "1m9hc2a4kgg10xy3g5x00z4a7rrk9s0rbf5qfypwnhq0kdfg5f6p")))) |
| 20420 | (build-system python-build-system) |
| 20421 | (propagated-inputs |
| 20422 | (list python-certifi)) |
| 20423 | (home-page "https://github.com/mongodb/mongo-python-driver") |
| 20424 | (synopsis "Python driver for MongoDB") |
| 20425 | (description "Python driver for MongoDB.") |
| 20426 | (license license:asl2.0))) |
| 20427 | |
| 20428 | (define-public python-consul |
| 20429 | (package |
| 20430 | (name "python-consul") |
| 20431 | (version "0.6.1") |
| 20432 | (source |
| 20433 | (origin |
| 20434 | (method url-fetch) |
| 20435 | (uri (pypi-uri "python-consul" version)) |
| 20436 | (sha256 |
| 20437 | (base32 |
| 20438 | "0rfyxcy4cr3x848vhx876ifalxd5ghq6l5x813m49h4vq2d4jiq8")))) |
| 20439 | (build-system python-build-system) |
| 20440 | (arguments |
| 20441 | '(#:tests? #f)) ; The tests are not distributed |
| 20442 | (propagated-inputs |
| 20443 | (list python-requests python-six)) |
| 20444 | (home-page "https://github.com/cablehead/python-consul") |
| 20445 | (synopsis "Python client for Consul") |
| 20446 | (description |
| 20447 | "Python client for @url{http://www.consul.io/,Consul}, a tool for service |
| 20448 | discovery, monitoring and configuration.") |
| 20449 | (license license:expat))) |
| 20450 | |
| 20451 | (define-public python-schematics |
| 20452 | (package |
| 20453 | (name "python-schematics") |
| 20454 | (version "1.1.1") |
| 20455 | (source |
| 20456 | (origin |
| 20457 | (method git-fetch) |
| 20458 | (uri (git-reference |
| 20459 | (url "https://github.com/schematics/schematics") |
| 20460 | (commit (string-append "v" version)))) |
| 20461 | (file-name (git-file-name name version)) |
| 20462 | (sha256 |
| 20463 | (base32 "0xdqskycznqc7mfp60bhw1zq8wx7yx1dvmbq3brnm1dx3xnqa0zd")))) |
| 20464 | (build-system python-build-system) |
| 20465 | (propagated-inputs |
| 20466 | (list python-six)) |
| 20467 | (arguments |
| 20468 | ;; The tests require a bunch of not very nice packages with fixed |
| 20469 | ;; version requirements (e.g. python-coveralls). |
| 20470 | `(#:tests? #f)) |
| 20471 | (home-page "https://github.com/schematics/schematics") |
| 20472 | (synopsis "Python Data Structures for Humans") |
| 20473 | (description "Python Data Structures for Humans.") |
| 20474 | (license license:bsd-3))) |
| 20475 | |
| 20476 | (define-public python-odfpy |
| 20477 | (package |
| 20478 | (name "python-odfpy") |
| 20479 | (version "1.4.1") |
| 20480 | (source (origin |
| 20481 | (method url-fetch) |
| 20482 | (uri (pypi-uri "odfpy" version)) |
| 20483 | (sha256 |
| 20484 | (base32 |
| 20485 | "1v1qqk9p12qla85yscq2g413l3qasn6yr4ncyc934465b5p6lxnv")))) |
| 20486 | (arguments |
| 20487 | `(#:phases |
| 20488 | (modify-phases %standard-phases |
| 20489 | (replace 'check |
| 20490 | (lambda _ |
| 20491 | (invoke "pytest" "-vv")))))) |
| 20492 | (build-system python-build-system) |
| 20493 | (native-inputs |
| 20494 | (list python-pytest)) |
| 20495 | (propagated-inputs |
| 20496 | (list python-defusedxml)) |
| 20497 | (home-page "https://github.com/eea/odfpy") |
| 20498 | (synopsis "Python API and tools to manipulate OpenDocument files") |
| 20499 | (description "Collection of libraries and utility programs written in |
| 20500 | Python to manipulate OpenDocument 1.2 files.") |
| 20501 | (license |
| 20502 | ;; The software is mainly dual GPL2+ and ASL2.0, but includes a |
| 20503 | ;; number of files with other licenses. |
| 20504 | (list license:gpl2+ license:asl2.0 license:lgpl2.1+ license:cc-by-sa3.0)))) |
| 20505 | |
| 20506 | (define-public python-natsort |
| 20507 | (package |
| 20508 | (name "python-natsort") |
| 20509 | (version "7.1.1") |
| 20510 | (source (origin |
| 20511 | (method url-fetch) |
| 20512 | (uri (pypi-uri "natsort" version)) |
| 20513 | (sha256 |
| 20514 | (base32 |
| 20515 | "00y49bfsi7rrsd1s42gc2w95a6arl9ipdsx2493hr0v54fj07ih0")))) |
| 20516 | (build-system python-build-system) |
| 20517 | (arguments |
| 20518 | `(#:phases |
| 20519 | (modify-phases %standard-phases |
| 20520 | (add-after 'unpack 'remove-test-hypothesis-deadlines |
| 20521 | (lambda _ |
| 20522 | (substitute* "tests/test_utils.py" |
| 20523 | (("from hypothesis import given") |
| 20524 | "from hypothesis import given, settings") |
| 20525 | (("( +)@given" all spaces) |
| 20526 | (string-append spaces "@settings(deadline=None)\n" all))))) |
| 20527 | (replace 'check |
| 20528 | (lambda* (#:key tests? #:allow-other-keys) |
| 20529 | (when tests? |
| 20530 | (invoke "pytest" "-v"))))))) |
| 20531 | (native-inputs |
| 20532 | (list python-hypothesis python-pytest-cov python-pytest-mock |
| 20533 | python-pytest)) |
| 20534 | (propagated-inputs ; TODO: Add python-fastnumbers. |
| 20535 | (list python-pyicu)) |
| 20536 | (home-page "https://github.com/SethMMorton/natsort") |
| 20537 | (synopsis "Natural sorting for python and shell") |
| 20538 | (description |
| 20539 | "Natsort lets you apply natural sorting on lists instead of |
| 20540 | lexicographical. If you use the built-in @code{sorted} method in python on a |
| 20541 | list such as @code{[@code{a20}, @code{a9}, @code{a1}, @code{a4}, @code{a10}]}, |
| 20542 | it would be returned as @code{[@code{a1}, @code{a10}, @code{a20}, @code{a4}, |
| 20543 | @code{a9}]}. Natsort provides a function @code{natsorted} that identifies |
| 20544 | numbers and sorts them separately from strings. It can also sort version |
| 20545 | numbers, real numbers, mixed types and more, and comes with a shell command |
| 20546 | @command{natsort} that exposes this functionality in the command line.") |
| 20547 | (license license:expat))) |
| 20548 | |
| 20549 | (define-public glances |
| 20550 | (package |
| 20551 | (name "glances") |
| 20552 | (version "3.4.0.3") |
| 20553 | (source |
| 20554 | (origin |
| 20555 | (method url-fetch) |
| 20556 | (uri (pypi-uri "Glances" version)) |
| 20557 | (sha256 |
| 20558 | (base32 "0pf8hxbgwkhv8l5frg61b073vscz5a7bz1al7xhn36fvh10xbcg7")) |
| 20559 | (modules '((guix build utils))) |
| 20560 | (snippet |
| 20561 | '(begin |
| 20562 | ;; Glances phones PyPI for weekly update checks by default. |
| 20563 | ;; Disable these. The user can re-enable them if desired. |
| 20564 | (substitute* "glances/outdated.py" |
| 20565 | (("^(.*)self\\.load_config\\(config\\)\n" line indentation) |
| 20566 | (string-append indentation |
| 20567 | "self.args.disable_check_update = True\n" |
| 20568 | line))) |
| 20569 | #t)))) |
| 20570 | (build-system python-build-system) |
| 20571 | (propagated-inputs |
| 20572 | (list python-defusedxml python-future python-packaging python-psutil python-ujson)) |
| 20573 | (home-page "https://github.com/nicolargo/glances") |
| 20574 | (synopsis "Cross-platform curses-based monitoring tool") |
| 20575 | (description |
| 20576 | "Glances is a curses-based monitoring tool for a wide variety of platforms. |
| 20577 | Glances uses the PsUtil library to get information from your system. It |
| 20578 | monitors CPU, load, memory, network bandwidth, disk I/O, disk use, and more.") |
| 20579 | (license license:lgpl3+))) |
| 20580 | |
| 20581 | (define-public python-graphql-core |
| 20582 | (package |
| 20583 | (name "python-graphql-core") |
| 20584 | (version "3.1.2") |
| 20585 | (source |
| 20586 | (origin |
| 20587 | (method url-fetch) |
| 20588 | (uri (pypi-uri "graphql-core" version)) |
| 20589 | (sha256 |
| 20590 | (base32 |
| 20591 | "0fjv5w2wvgdr8gb27v241bavliipyir9fdz48rsgc3xapm644mn0")))) |
| 20592 | (build-system python-build-system) |
| 20593 | (arguments |
| 20594 | `(#:tests? #f ; Tests require the unpackaged pytest-benchmark. |
| 20595 | #:phases |
| 20596 | (modify-phases %standard-phases |
| 20597 | (add-after 'unpack 'patch-hardcoded-version |
| 20598 | (lambda _ (substitute* |
| 20599 | "setup.py" |
| 20600 | (("'gevent==1.1rc1'") "'gevent'")) |
| 20601 | #t))))) |
| 20602 | (native-inputs |
| 20603 | (list python-gevent python-mock python-pytest-mock)) |
| 20604 | (propagated-inputs |
| 20605 | (list python-promise python-six)) |
| 20606 | (home-page "https://github.com/graphql-python/graphql-core") |
| 20607 | (synopsis "GraphQL implementation for Python") |
| 20608 | (description |
| 20609 | "GraphQL implementation for Python. GraphQL is a data query language and |
| 20610 | runtime designed and used to request and deliver data to mobile and web apps. |
| 20611 | This library is a port of @url{https://github.com/graphql/graphql-js,graphql-js} |
| 20612 | to Python.") |
| 20613 | (license license:expat))) |
| 20614 | |
| 20615 | (define-public python-graphql-relay |
| 20616 | (package |
| 20617 | (name "python-graphql-relay") |
| 20618 | (version "3.1.0") |
| 20619 | (source |
| 20620 | (origin |
| 20621 | (method url-fetch) |
| 20622 | (uri (pypi-uri "graphql-relay" version)) |
| 20623 | (sha256 |
| 20624 | (base32 |
| 20625 | "1d70vwam9gjhx7fqzsa03x7lc6ivcqki5r9pk8m7rslmb7pagmbh")))) |
| 20626 | (build-system python-build-system) |
| 20627 | (arguments |
| 20628 | '(#:phases |
| 20629 | (modify-phases %standard-phases |
| 20630 | (replace 'check |
| 20631 | (lambda* (#:key tests? #:allow-other-keys) |
| 20632 | (when tests? |
| 20633 | (invoke "pytest" "tests"))))))) |
| 20634 | (native-inputs |
| 20635 | (list |
| 20636 | python-pytest |
| 20637 | python-pytest-asyncio)) |
| 20638 | (propagated-inputs |
| 20639 | (list python-graphql-core)) |
| 20640 | (home-page "https://github.com/graphql-python/graphql-relay-py") |
| 20641 | (synopsis "Relay implementation for Python") |
| 20642 | (description |
| 20643 | "This is a library to allow the easy creation of Relay-compliant servers |
| 20644 | using the GraphQL Python reference implementation of a GraphQL server. It |
| 20645 | should be noted that the code is a exact port of the original |
| 20646 | @url{https://github.com/graphql/graphql-relay-js,graphql-relay js implementation} |
| 20647 | from Facebook.") |
| 20648 | (license license:expat))) |
| 20649 | |
| 20650 | (define-public python-graphene |
| 20651 | (package |
| 20652 | (name "python-graphene") |
| 20653 | (version "3.0") |
| 20654 | (source |
| 20655 | (origin |
| 20656 | (method url-fetch) |
| 20657 | (uri (pypi-uri "graphene" version)) |
| 20658 | (sha256 |
| 20659 | (base32 |
| 20660 | "08m1n2ydk48c18cvl8474v3pwwacjl1vgq61m9qs00122mp0cj5g")))) |
| 20661 | (build-system python-build-system) |
| 20662 | (propagated-inputs |
| 20663 | (list python-graphql-core python-graphql-relay python-aniso8601 |
| 20664 | python-promise python-six)) |
| 20665 | (arguments |
| 20666 | `(#:tests? #f)) ; no tests/ in the PyPI tarball |
| 20667 | (home-page "https://graphene-python.org/") |
| 20668 | (synopsis "GraphQL Framework for Python") |
| 20669 | (description |
| 20670 | "Graphene is a Python library for building GraphQL schemas/types. |
| 20671 | A GraphQL schema describes your data model, and provides a GraphQL server |
| 20672 | with an associated set of resolve methods that know how to fetch data.") |
| 20673 | (license license:expat))) |
| 20674 | |
| 20675 | (define-public python-random2 |
| 20676 | (package |
| 20677 | (name "python-random2") |
| 20678 | (version "1.0.1") |
| 20679 | (source (origin |
| 20680 | (method url-fetch) |
| 20681 | (uri (pypi-uri "random2" version ".zip")) |
| 20682 | (sha256 |
| 20683 | (base32 |
| 20684 | "01y0s4747plsx8fdnxy0nz83dp69naddz58m81r9h0s1qfm31b9l")) |
| 20685 | (patches |
| 20686 | (search-patches "python-random2-getrandbits-test.patch")))) |
| 20687 | (build-system python-build-system) |
| 20688 | (native-inputs (list unzip)) |
| 20689 | (home-page "https://pypi.python.org/pypi/random2") |
| 20690 | (synopsis "Python 3 version of the Python 2 @code{random} module") |
| 20691 | (description |
| 20692 | "This package provides a Python 3 ported version of Python 2.7’s |
| 20693 | @code{random} module. It has also been back-ported to work in Python 2.6. |
| 20694 | |
| 20695 | In Python 3, the implementation of @code{randrange()} was changed, so that |
| 20696 | even with the same seed you get different sequences in Python 2 and 3. |
| 20697 | |
| 20698 | This package closes that gap, allowing stable random number generation |
| 20699 | between the different Python versions.") |
| 20700 | (license license:psfl))) |
| 20701 | |
| 20702 | (define-public python-snowballstemmer |
| 20703 | (package |
| 20704 | (name "python-snowballstemmer") |
| 20705 | (version "2.0.0") |
| 20706 | (source (origin |
| 20707 | (method url-fetch) |
| 20708 | (uri (pypi-uri "snowballstemmer" version)) |
| 20709 | (sha256 |
| 20710 | (base32 |
| 20711 | "0ligk61idlz8kkgd5hpip5whm172riwglb6xydii7h62yhysqfyz")))) |
| 20712 | (build-system python-build-system) |
| 20713 | (arguments |
| 20714 | `(;; No tests exist |
| 20715 | #:tests? #f)) |
| 20716 | (home-page "https://github.com/shibukawa/snowball_py") |
| 20717 | (synopsis "Snowball stemming library collection for Python") |
| 20718 | (description "This package provides 16 word stemmer algorithms generated |
| 20719 | from Snowball algorithms. It includes the 15 original ones plus the Poerter |
| 20720 | English stemmer.") |
| 20721 | (license license:bsd-3))) |
| 20722 | |
| 20723 | (define-public python-setproctitle |
| 20724 | (package |
| 20725 | (name "python-setproctitle") |
| 20726 | (version "1.3.2") |
| 20727 | (source |
| 20728 | (origin |
| 20729 | (method url-fetch) |
| 20730 | (uri (pypi-uri "setproctitle" version)) |
| 20731 | (sha256 |
| 20732 | (base32 |
| 20733 | "1zbp6kyzfbrmbh9j3idai0mnpa28zn5db3k5l07jc3c3gj89gyxr")))) |
| 20734 | (build-system python-build-system) |
| 20735 | (arguments |
| 20736 | '(#:phases |
| 20737 | (modify-phases %standard-phases |
| 20738 | (replace 'check |
| 20739 | (lambda* (#:key tests? #:allow-other-keys) |
| 20740 | (setenv "PYTHON" (or (which "python3") (which "python"))) |
| 20741 | (setenv "PYCONFIG" (if (which "python3-config") |
| 20742 | "python3-config --embed" |
| 20743 | "python-config")) |
| 20744 | (substitute* "tests/conftest.py" |
| 20745 | (("cc") "gcc")) |
| 20746 | (when tests? |
| 20747 | (invoke "pytest" "tests/"))))))) |
| 20748 | (native-inputs |
| 20749 | (list procps python-pytest)) ; required for tests |
| 20750 | (home-page "https://github.com/dvarrazzo/py-setproctitle") |
| 20751 | (synopsis |
| 20752 | "Setproctitle implementation for Python to customize the process title") |
| 20753 | (description "The library allows a process to change its title (as displayed |
| 20754 | by system tools such as @code{ps} and @code{top}). |
| 20755 | |
| 20756 | Changing the title is mostly useful in multi-process systems, for example when a |
| 20757 | master process is forked: changing the children's title allows identifying the |
| 20758 | task each process is busy with. The technique is used by PostgreSQL and the |
| 20759 | OpenSSH Server for example.") |
| 20760 | (license license:bsd-3))) |
| 20761 | |
| 20762 | (define-public python-pyelftools |
| 20763 | (package |
| 20764 | (name "python-pyelftools") |
| 20765 | (version "0.29") |
| 20766 | (home-page "https://github.com/eliben/pyelftools") |
| 20767 | (source |
| 20768 | (origin |
| 20769 | (method git-fetch) |
| 20770 | (uri (git-reference (url home-page) |
| 20771 | (commit (string-append "v" version)))) |
| 20772 | (file-name (git-file-name name version)) |
| 20773 | (sha256 |
| 20774 | (base32 "1mi7i9zlhkkap4q50ciak57ia46mj2jzq0713m3dh0x8j05k9xml")) |
| 20775 | (snippet |
| 20776 | ;; Delete bundled readelf executable. |
| 20777 | '(delete-file "test/external_tools/readelf")))) |
| 20778 | (build-system python-build-system) |
| 20779 | (arguments |
| 20780 | '(#:phases (modify-phases %standard-phases |
| 20781 | (replace 'check |
| 20782 | (lambda* (#:key tests? #:allow-other-keys) |
| 20783 | (when tests? |
| 20784 | ;; Taken from tox.ini. |
| 20785 | (invoke "python" "test/run_all_unittests.py") |
| 20786 | (invoke "python" "test/run_examples_test.py") |
| 20787 | (invoke "python" "test/run_readelf_tests.py"))))))) |
| 20788 | (synopsis |
| 20789 | "Analyze binary and library file information") |
| 20790 | (description "This Python library provides interfaces for parsing and |
| 20791 | analyzing two binary and library file formats ; the Executable and Linking |
| 20792 | Format (ELF), and debugging information in the Debugging With Attributed |
| 20793 | Record Format (DWARF).") |
| 20794 | (license license:public-domain))) |
| 20795 | |
| 20796 | (define-public python-pefile |
| 20797 | (package |
| 20798 | (name "python-pefile") |
| 20799 | (version "2022.5.30") |
| 20800 | (source (origin |
| 20801 | (method git-fetch) |
| 20802 | (uri (git-reference |
| 20803 | (url "https://github.com/erocarrera/pefile") |
| 20804 | (commit (string-append "v" version)))) |
| 20805 | (file-name (git-file-name name version)) |
| 20806 | (sha256 |
| 20807 | (base32 |
| 20808 | "1qj90a0s2gd5hn2zggypqc1077inid5dcl1fp5973b04kf2b9z8a")))) |
| 20809 | (build-system python-build-system) |
| 20810 | (propagated-inputs (list python-future)) |
| 20811 | (home-page "https://github.com/erocarrera/pefile") |
| 20812 | (synopsis "Portable Executable (PE) file parser") |
| 20813 | (description "This python library provides interfaces for parsing and |
| 20814 | working with Portable Executable (PE) files. It makes to most information |
| 20815 | from the header, as well as section details and data available.") |
| 20816 | (license license:expat))) |
| 20817 | |
| 20818 | (define-public python-imagesize |
| 20819 | (package |
| 20820 | (name "python-imagesize") |
| 20821 | (version "1.2.0") |
| 20822 | (source |
| 20823 | (origin |
| 20824 | (method url-fetch) |
| 20825 | (uri (pypi-uri "imagesize" version)) |
| 20826 | (sha256 |
| 20827 | (base32 |
| 20828 | "1cd24x0vqbd6c8ym1n21qc0aj54mfb7rzdqglmwk9xxixajbbxmi")))) |
| 20829 | (build-system python-build-system) |
| 20830 | (home-page "https://github.com/shibukawa/imagesize_py") |
| 20831 | (synopsis "Gets image size of files in various formats in Python") |
| 20832 | (description |
| 20833 | "This package allows determination of image size from |
| 20834 | PNG, JPEG, JPEG2000 and GIF files in pure Python.") |
| 20835 | (license license:expat))) |
| 20836 | |
| 20837 | (define-public python-termstyle |
| 20838 | (package |
| 20839 | (name "python-termstyle") |
| 20840 | (version "0.1.11") |
| 20841 | (source |
| 20842 | (origin |
| 20843 | (method url-fetch) |
| 20844 | (uri (pypi-uri "termstyle" version)) |
| 20845 | (sha256 |
| 20846 | (base32 |
| 20847 | "17wzkkcqy5zc0g68xlad3kcv66iw14d2pwqc0h9420gak0vbhx7g")))) |
| 20848 | (build-system python-build-system) |
| 20849 | (arguments |
| 20850 | '(#:phases |
| 20851 | (modify-phases %standard-phases |
| 20852 | (replace 'check |
| 20853 | (lambda _ |
| 20854 | (invoke "python" "test3.py")))))) |
| 20855 | (home-page "https://github.com/gfxmonk/termstyle") |
| 20856 | (synopsis "Console text coloring for Python") |
| 20857 | (description "This package provides console text coloring for Python.") |
| 20858 | (license license:bsd-3))) |
| 20859 | |
| 20860 | (define-public python-argcomplete |
| 20861 | (package |
| 20862 | (name "python-argcomplete") |
| 20863 | (version "1.11.1") |
| 20864 | (source |
| 20865 | (origin |
| 20866 | (method url-fetch) |
| 20867 | (uri (pypi-uri "argcomplete" version)) |
| 20868 | (sha256 |
| 20869 | (base32 |
| 20870 | "0h1przxffrhqvi46k40pzjsvdrq4zc3sl1pc96kkigqppq0vdrss")) |
| 20871 | (patches (search-patches "python-argcomplete-1.11.1-fish31.patch")))) |
| 20872 | (build-system python-build-system) |
| 20873 | (native-inputs |
| 20874 | (list python-coverage |
| 20875 | python-flake8 |
| 20876 | python-pexpect |
| 20877 | python-wheel |
| 20878 | tcsh |
| 20879 | fish |
| 20880 | bash)) ;full Bash for 'test_file_completion' |
| 20881 | (home-page "https://github.com/kislyuk/argcomplete") |
| 20882 | (synopsis "Shell tab completion for Python argparse") |
| 20883 | (description "argcomplete provides extensible command line tab completion |
| 20884 | of arguments and options for Python scripts using @code{argparse}. It's |
| 20885 | particularly useful for programs with many options or sub-parsers that can |
| 20886 | dynamically suggest completions ; for example, when browsing resources over the |
| 20887 | network.") |
| 20888 | (license license:asl2.0))) |
| 20889 | |
| 20890 | (define-public python-csscompressor |
| 20891 | (package |
| 20892 | (name "python-csscompressor") |
| 20893 | (version "0.9.5") |
| 20894 | (source |
| 20895 | (origin |
| 20896 | (method url-fetch) |
| 20897 | (uri (pypi-uri "csscompressor" version)) |
| 20898 | (sha256 |
| 20899 | (base32 |
| 20900 | "018ssffvlpnc1salmnpyl52c11glzzwj4k9f757hl4pkpjnjp8mg")))) |
| 20901 | (build-system python-build-system) |
| 20902 | (arguments |
| 20903 | '(#:phases |
| 20904 | (modify-phases %standard-phases |
| 20905 | (replace 'check |
| 20906 | (lambda _ |
| 20907 | (invoke "py.test")))))) |
| 20908 | (native-inputs |
| 20909 | (list python-pytest)) |
| 20910 | (home-page "https://github.com/sprymix/csscompressor") |
| 20911 | (synopsis "Python port of YUI CSS Compressor") |
| 20912 | (description |
| 20913 | "This package provides a python port of YUI CSS Compressor.") |
| 20914 | (license license:bsd-3))) |
| 20915 | |
| 20916 | (define-public python-rcssmin |
| 20917 | (package |
| 20918 | (name "python-rcssmin") |
| 20919 | (version "1.0.6") |
| 20920 | (source |
| 20921 | (origin |
| 20922 | (method url-fetch) |
| 20923 | (uri (pypi-uri "rcssmin" version)) |
| 20924 | (sha256 |
| 20925 | (base32 |
| 20926 | "0w42l4dhxghcz7pj3q7hkxp015mvb8z2cq9sfxbl31npsfavd1ya")))) |
| 20927 | (build-system python-build-system) |
| 20928 | (arguments |
| 20929 | '(#:phases |
| 20930 | (modify-phases %standard-phases |
| 20931 | (replace 'check |
| 20932 | (lambda _ |
| 20933 | (invoke "python" "run_tests.py" "tests")))))) |
| 20934 | (home-page "http://opensource.perlig.de/rcssmin/") |
| 20935 | (synopsis "CSS Minifier") |
| 20936 | (description "The minifier is based on the semantics of the YUI compressor, |
| 20937 | which itself is based on the rule list by Isaac Schlueter.") |
| 20938 | (license license:asl2.0))) |
| 20939 | |
| 20940 | (define-public python-rjsmin |
| 20941 | (package |
| 20942 | (name "python-rjsmin") |
| 20943 | (version "1.1.0") |
| 20944 | (source |
| 20945 | (origin |
| 20946 | (method url-fetch) |
| 20947 | (uri (pypi-uri "rjsmin" version)) |
| 20948 | (sha256 |
| 20949 | (base32 |
| 20950 | "0cmc72rlkvzz8fl89bc83czkx0pcvhzj7yn7m29r8pgnf5fcfpdi")) |
| 20951 | (modules '((guix build utils))) |
| 20952 | (snippet |
| 20953 | '(begin |
| 20954 | (for-each delete-file (find-files "bench" "\\.js$")) |
| 20955 | #t)))) |
| 20956 | (build-system python-build-system) |
| 20957 | (arguments |
| 20958 | '(#:tests? #f ; Not all test files included. |
| 20959 | #:phases |
| 20960 | (modify-phases %standard-phases |
| 20961 | (replace 'check |
| 20962 | (lambda* (#:key inputs outputs tests? #:allow-other-keys) |
| 20963 | (add-installed-pythonpath inputs outputs) |
| 20964 | (if tests? |
| 20965 | (invoke "py.test" "-vv" "tests") |
| 20966 | #t)))))) |
| 20967 | (native-inputs |
| 20968 | (list python-pytest)) |
| 20969 | (home-page "http://opensource.perlig.de/rjsmin/") |
| 20970 | (synopsis "Javascript Minifier") |
| 20971 | (description "@code{rJSmin} is a javascript minifier written in Python. The |
| 20972 | minifier is based on the semantics of jsmin.c by Douglas Crockford. The module |
| 20973 | is a re-implementation aiming for speed, so it can be used at runtime (rather |
| 20974 | than during a preprocessing step).") |
| 20975 | (license license:asl2.0))) |
| 20976 | |
| 20977 | (define-public python-xopen |
| 20978 | (package |
| 20979 | (name "python-xopen") |
| 20980 | (version "1.7.0") |
| 20981 | (source |
| 20982 | (origin |
| 20983 | (method url-fetch) |
| 20984 | (uri (pypi-uri "xopen" version)) |
| 20985 | (sha256 |
| 20986 | (base32 |
| 20987 | "17qda88irg77qdm2kkxq4zgdhwfgykcpdgd4cx3xfpp9k219q7wh")))) |
| 20988 | (build-system pyproject-build-system) |
| 20989 | (propagated-inputs |
| 20990 | (list pigz python-isal python-typing-extensions)) |
| 20991 | (native-inputs |
| 20992 | (list python-pytest python-pytest-timeout python-setuptools-scm)) |
| 20993 | (home-page "https://github.com/marcelm/xopen/") |
| 20994 | (synopsis "Open compressed files transparently") |
| 20995 | (description "This module provides an @code{xopen} function that works |
| 20996 | like Python's built-in @code{open} function, but can also deal with compressed |
| 20997 | files. Supported compression formats are gzip, bzip2 and, xz, and are |
| 20998 | automatically recognized by their file extensions. The focus is on being as |
| 20999 | efficient as possible on all supported Python versions.") |
| 21000 | (license license:expat))) |
| 21001 | |
| 21002 | (define-public python-cheetah |
| 21003 | (package |
| 21004 | (name "python-cheetah") |
| 21005 | (version "3.3.1") |
| 21006 | (source |
| 21007 | (origin |
| 21008 | (method url-fetch) |
| 21009 | (uri (pypi-uri "CT3" version)) |
| 21010 | (sha256 |
| 21011 | (base32 |
| 21012 | "1j36vampqip18jx0jzngb9rnkhhhl8hqnscg117y0d6cgrgm57qw")))) |
| 21013 | (build-system python-build-system) |
| 21014 | (arguments |
| 21015 | `(#:phases (modify-phases %standard-phases |
| 21016 | (add-after 'unpack 'use-absolute-python |
| 21017 | (lambda _ |
| 21018 | (substitute* "Cheetah/CheetahWrapper.py" |
| 21019 | (("#!/usr/bin/env python") |
| 21020 | (string-append "#!" (which "python")))))) |
| 21021 | (add-after 'unpack 'fix-tests |
| 21022 | (lambda _ |
| 21023 | (substitute* "Cheetah/Tests/ImportHooks.py" |
| 21024 | (("os.path.dirname\\(__file__\\)") |
| 21025 | (string-append "'" (getcwd) "/Cheetah/Tests'"))))) |
| 21026 | (replace 'check |
| 21027 | (lambda _ |
| 21028 | (setenv "TMPDIR" "/tmp") |
| 21029 | (substitute* "Cheetah/Tests/Test.py" |
| 21030 | (("unittest.TextTestRunner\\(\\)") |
| 21031 | "unittest.TextTestRunner(verbosity=2)")) |
| 21032 | |
| 21033 | (invoke "python" "Cheetah/Tests/Test.py")))))) |
| 21034 | (propagated-inputs |
| 21035 | (list python-markdown)) ;optional |
| 21036 | (home-page "https://cheetahtemplate.org/") |
| 21037 | (synopsis "Template engine") |
| 21038 | (description "Cheetah is a text-based template engine and Python code |
| 21039 | generator. |
| 21040 | |
| 21041 | Cheetah can be used as a standalone templating utility or referenced as |
| 21042 | a library from other Python applications. It has many potential uses, |
| 21043 | but web developers looking for a viable alternative to ASP, JSP, PHP and |
| 21044 | PSP are expected to be its principle user group. |
| 21045 | |
| 21046 | Features: |
| 21047 | @enumerate |
| 21048 | @item Generates HTML, SGML, XML, SQL, Postscript, form email, LaTeX, or any other |
| 21049 | text-based format. |
| 21050 | @item Cleanly separates content, graphic design, and program code. |
| 21051 | @item Blends the power and flexibility of Python with a simple template language |
| 21052 | that non-programmers can understand. |
| 21053 | @item Gives template writers full access to any Python data structure, module, |
| 21054 | function, object, or method in their templates. |
| 21055 | @item Makes code reuse easy by providing an object-orientated interface to |
| 21056 | templates that is accessible from Python code or other Cheetah templates. |
| 21057 | One template can subclass another and selectively reimplement sections of it. |
| 21058 | @item Provides a simple, yet powerful, caching mechanism that can dramatically |
| 21059 | improve the performance of a dynamic website. |
| 21060 | @item Compiles templates into optimized, yet readable, Python code. |
| 21061 | @end enumerate") |
| 21062 | (license (license:x11-style "file://LICENSE")))) |
| 21063 | |
| 21064 | (define-public python-chevron |
| 21065 | (package |
| 21066 | (name "python-chevron") |
| 21067 | (version "0.14.0") |
| 21068 | (source (origin |
| 21069 | (method url-fetch) |
| 21070 | (uri (pypi-uri "chevron" version)) |
| 21071 | (sha256 |
| 21072 | (base32 |
| 21073 | "1gqfh00ics2k1sm5g46l3bi8cl5fc5d1cwzh1ylvcxvdvypklqc7")))) |
| 21074 | (build-system pyproject-build-system) |
| 21075 | (arguments (list #:tests? #false)) ;there are none |
| 21076 | (home-page "https://github.com/noahmorrison/chevron") |
| 21077 | (synopsis "Mustache templating language renderer") |
| 21078 | (description "This package provides a Python implementation of the |
| 21079 | Mustache templating language renderer.") |
| 21080 | (license license:expat))) |
| 21081 | |
| 21082 | (define-public python-duckdb |
| 21083 | (package |
| 21084 | (name "python-duckdb") |
| 21085 | (version "0.8.0") |
| 21086 | (source (origin |
| 21087 | (method url-fetch) |
| 21088 | (uri (pypi-uri "duckdb" version)) |
| 21089 | (sha256 |
| 21090 | (base32 |
| 21091 | "13y1gs565q51li5fi9m7fpf0sqns8frsaii6v95acwjhmdds73f6")))) |
| 21092 | (build-system pyproject-build-system) |
| 21093 | (arguments |
| 21094 | (list |
| 21095 | #:test-flags |
| 21096 | '(list "--ignore=tests/slow/test_h2oai_arrow.py" |
| 21097 | ;; Don't install anything, thank you. |
| 21098 | "-k" "not test_install_non_existent_extension") |
| 21099 | #:phases |
| 21100 | #~(modify-phases %standard-phases |
| 21101 | ;; Tests need this |
| 21102 | (add-before 'check 'set-HOME |
| 21103 | (lambda _ (setenv "HOME" "/tmp"))) |
| 21104 | (add-before 'build 'set-version |
| 21105 | (lambda _ |
| 21106 | (setenv "SETUPTOOLS_SCM_PRETEND_VERSION" #$version) |
| 21107 | (substitute* "setup.py" |
| 21108 | (("\"setuptools_scm<7.0.0\",") "")))) |
| 21109 | ;; Later versions of pybind replace "_" with "const_name". |
| 21110 | (add-after 'unpack 'pybind-compatibility |
| 21111 | (lambda _ |
| 21112 | (with-directory-excursion "src/include/duckdb_python" |
| 21113 | (substitute* '("python_objects.hpp" |
| 21114 | "pyfilesystem.hpp" |
| 21115 | "pybind11/conversions/pyconnection_default.hpp") |
| 21116 | (("const_name") "_")))))))) |
| 21117 | (native-inputs |
| 21118 | (list pybind11 |
| 21119 | python-fsspec |
| 21120 | python-google-cloud-storage |
| 21121 | python-mypy |
| 21122 | python-numpy |
| 21123 | python-pandas |
| 21124 | python-psutil |
| 21125 | python-pyarrow |
| 21126 | python-pytest |
| 21127 | python-pytest-runner |
| 21128 | python-setuptools-scm)) |
| 21129 | (home-page "https://www.duckdb.org") |
| 21130 | (synopsis "DuckDB embedded database") |
| 21131 | (description "DuckDB is an in-process SQL OLAP database management |
| 21132 | system.") |
| 21133 | (license license:expat))) |
| 21134 | |
| 21135 | (define-public python-dulwich |
| 21136 | (package |
| 21137 | (name "python-dulwich") |
| 21138 | (version "0.20.30") |
| 21139 | (source |
| 21140 | (origin |
| 21141 | (method url-fetch) |
| 21142 | (uri (list (string-append "https://www.dulwich.io/releases/" |
| 21143 | "dulwich-" version ".tar.gz") |
| 21144 | (pypi-uri "dulwich" version))) |
| 21145 | (sha256 |
| 21146 | (base32 |
| 21147 | "0hafaff30bmkj30b8pwpwsy3fz5h6c1pn98ihqcvl5zndflr1h22")))) |
| 21148 | (build-system python-build-system) |
| 21149 | (arguments |
| 21150 | '(#:phases |
| 21151 | (modify-phases %standard-phases |
| 21152 | (add-before 'check 'fix-tests |
| 21153 | (lambda* (#:key inputs #:allow-other-keys) |
| 21154 | (substitute* '("dulwich/tests/test_repository.py" |
| 21155 | "dulwich/tests/test_porcelain.py" |
| 21156 | "dulwich/tests/test_hooks.py") |
| 21157 | (("/bin/sh") (search-input-file inputs "/bin/sh"))) |
| 21158 | (setenv "TEST_RUNNER" "unittest") |
| 21159 | (setenv "PYTHONHASHSEED" "random")))))) |
| 21160 | (propagated-inputs |
| 21161 | (list python-fastimport python-urllib3)) |
| 21162 | (native-inputs |
| 21163 | (list python-mock python-geventhttpclient python-gpg |
| 21164 | git gnupg)) |
| 21165 | (home-page "https://www.dulwich.io/") |
| 21166 | (synopsis "Git implementation in Python") |
| 21167 | (description "Dulwich is an implementation of the Git file formats and |
| 21168 | protocols written in pure Python.") |
| 21169 | ;; Can be used with either license. |
| 21170 | (license (list license:asl2.0 license:gpl2+)))) |
| 21171 | |
| 21172 | (define-public python-pbkdf2 |
| 21173 | (package |
| 21174 | (name "python-pbkdf2") |
| 21175 | (version "1.3") |
| 21176 | (source |
| 21177 | (origin |
| 21178 | (method url-fetch) |
| 21179 | (uri (pypi-uri "pbkdf2" version)) |
| 21180 | (sha256 |
| 21181 | (base32 |
| 21182 | "0yb99rl2mbsaamj571s1mf6vgniqh23v98k4632150hjkwv9fqxc")))) |
| 21183 | (build-system python-build-system) |
| 21184 | (arguments |
| 21185 | '(#:phases |
| 21186 | (modify-phases %standard-phases |
| 21187 | (replace 'check |
| 21188 | (lambda _ |
| 21189 | (invoke "python" "test/test_pbkdf2.py")))))) |
| 21190 | (home-page "https://www.dlitz.net/software/python-pbkdf2/") |
| 21191 | (synopsis "Password-based key derivation") |
| 21192 | (description "This module implements the password-based key derivation |
| 21193 | function, PBKDF2, specified in RSA PKCS#5 v2.0. |
| 21194 | |
| 21195 | PKCS#5 v2.0 Password-Based Key Derivation is a key derivation function which |
| 21196 | is part of the RSA Public Key Cryptography Standards series. The provided |
| 21197 | implementation takes a password or a passphrase and a salt value (and |
| 21198 | optionally a iteration count, a digest module, and a MAC module) and provides |
| 21199 | a file-like object from which an arbitrarily-sized key can be read.") |
| 21200 | (license license:expat))) |
| 21201 | |
| 21202 | (define-public python-qrcode |
| 21203 | (package |
| 21204 | (name "python-qrcode") |
| 21205 | (version "7.3.1") |
| 21206 | (source |
| 21207 | (origin |
| 21208 | (method url-fetch) |
| 21209 | (uri (pypi-uri "qrcode" version)) |
| 21210 | (sha256 |
| 21211 | (base32 "0y35jlwfvkgn9341lzshyaqgpp61vysjh107vhdd96ya83r6ynip")))) |
| 21212 | (build-system python-build-system) |
| 21213 | (arguments |
| 21214 | ;; FIXME: Tests require packaging 'pymaging'. |
| 21215 | '(#:tests? #f)) |
| 21216 | (propagated-inputs |
| 21217 | (list python-lxml ; for SVG output |
| 21218 | python-pillow)) ; for PNG output |
| 21219 | (home-page "https://github.com/lincolnloop/python-qrcode") |
| 21220 | (synopsis "QR Code image generator") |
| 21221 | (description "This package provides a pure Python QR Code generator |
| 21222 | module. It uses the Python Imaging Library (PIL) to allow for the generation |
| 21223 | of QR Codes. |
| 21224 | |
| 21225 | In addition this package provides a command line tool to generate QR codes and |
| 21226 | either write these QR codes to a file or do the output as ascii art at the |
| 21227 | console.") |
| 21228 | (license license:bsd-3))) |
| 21229 | |
| 21230 | (define-public python-rst2ansi |
| 21231 | (package |
| 21232 | (name "python-rst2ansi") |
| 21233 | (version "0.1.5") |
| 21234 | (source |
| 21235 | (origin |
| 21236 | (method url-fetch) |
| 21237 | (uri (pypi-uri "rst2ansi" version)) |
| 21238 | (sha256 |
| 21239 | (base32 |
| 21240 | "0vzy6gd60l79ff750scl0sz48r1laalkl6md6dwzah4dcadgn5qv")))) |
| 21241 | (build-system python-build-system) |
| 21242 | (propagated-inputs |
| 21243 | (list python-docutils)) |
| 21244 | (home-page "https://github.com/Snaipe/python-rst-to-ansi") |
| 21245 | (synopsis "Convert RST to ANSI-decorated console output") |
| 21246 | (description |
| 21247 | "Python module dedicated to rendering RST (reStructuredText) documents |
| 21248 | to ansi-escaped strings suitable for display in a terminal.") |
| 21249 | (license license:expat))) |
| 21250 | |
| 21251 | (define-public python-ansi2html |
| 21252 | (package |
| 21253 | (name "python-ansi2html") |
| 21254 | (version "1.2.0") |
| 21255 | (source |
| 21256 | (origin |
| 21257 | (method url-fetch) |
| 21258 | (uri (pypi-uri "ansi2html" version)) |
| 21259 | (sha256 |
| 21260 | (base32 |
| 21261 | "1wa00zffprb78w1mqq90dk47czz1knanys2a40zbw2vyapd5lp9y")))) |
| 21262 | (build-system python-build-system) |
| 21263 | (native-inputs |
| 21264 | (list python-mock python-nose)) |
| 21265 | (propagated-inputs |
| 21266 | (list python-six)) |
| 21267 | (home-page "https://github.com/ralphbean/ansi2html") |
| 21268 | (synopsis "Convert ANSI-decorated console output to HTML") |
| 21269 | (description |
| 21270 | "@command{ansi2html} is a Python library and command line utility for |
| 21271 | converting text with ANSI color codes to HTML or LaTeX.") |
| 21272 | (license license:gpl3+))) |
| 21273 | |
| 21274 | (define-public python-easy-ansi |
| 21275 | (package |
| 21276 | (name "python-easy-ansi") |
| 21277 | (version "0.3") |
| 21278 | (source |
| 21279 | (origin |
| 21280 | (method git-fetch) |
| 21281 | (uri (git-reference |
| 21282 | (url "https://gitlab.com/joeysbytes/easy-ansi") |
| 21283 | (commit (string-append "v" version)))) |
| 21284 | (file-name (git-file-name name version)) |
| 21285 | (sha256 |
| 21286 | (base32 "0albh55ynzs98qy9pln4qaxw5qhhh3lk09jy9bx19gycrp1c3lc3")))) |
| 21287 | (build-system python-build-system) |
| 21288 | (home-page "https://gitlab.com/joeysbytes/easy-ansi") |
| 21289 | (synopsis "Terminal framework API") |
| 21290 | (description |
| 21291 | "Easy ANSI is a terminal framework API to give you an easy way to use |
| 21292 | colors, cursor control movements, and line/box drawing. It is not meant as a |
| 21293 | replacement to more full-featured frameworks (such as curses or urwid), but as |
| 21294 | a tool to quickly create nice-looking screens in your terminal window. You |
| 21295 | can even create animations with the cursor controls.") |
| 21296 | (license license:expat))) |
| 21297 | |
| 21298 | (define-public python-ddt |
| 21299 | (package |
| 21300 | (name "python-ddt") |
| 21301 | (version "1.4.2") |
| 21302 | (source |
| 21303 | (origin |
| 21304 | (method url-fetch) |
| 21305 | (uri (pypi-uri "ddt" version)) |
| 21306 | (sha256 |
| 21307 | (base32 |
| 21308 | "0y2k756qjz1rhpivi60hy29b4bf0bh3wck39i1mn6pkil9k779k4")))) |
| 21309 | (build-system python-build-system) |
| 21310 | (native-inputs |
| 21311 | (list python-pytest)) |
| 21312 | (propagated-inputs |
| 21313 | (list python-pyyaml)) |
| 21314 | (home-page "https://github.com/datadriventests/ddt") |
| 21315 | (synopsis "Data-Driven Tests") |
| 21316 | (description |
| 21317 | "Data-Driven Tests (@dfn{DDT}) allow you to multiply one test case by |
| 21318 | running it with different test data, and make it appear as multiple test |
| 21319 | cases.") |
| 21320 | (license license:expat))) |
| 21321 | |
| 21322 | (define-public python-pycountry |
| 21323 | (package |
| 21324 | (name "python-pycountry") |
| 21325 | (version "22.3.5") |
| 21326 | (source |
| 21327 | (origin |
| 21328 | (method url-fetch) |
| 21329 | (uri (pypi-uri "pycountry" version)) |
| 21330 | (sha256 |
| 21331 | (base32 |
| 21332 | "0ihnkh86zz01vi46gcwgq6h71jrpj7hq71zi13c98n2qdhj3l5mj")))) |
| 21333 | (build-system python-build-system) |
| 21334 | (home-page "https://bitbucket.org/flyingcircus/pycountry") |
| 21335 | (synopsis "ISO databases for languages, countries, currencies, etc.") |
| 21336 | (description |
| 21337 | "@code{pycountry} provides the ISO databases for the standards: |
| 21338 | @enumerate |
| 21339 | @item 639-3 (Languages) |
| 21340 | @item 3166 (Countries) |
| 21341 | @item 3166-3 (Deleted Countries) |
| 21342 | @item 3166-2 (Subdivisions of countries) |
| 21343 | @item 4217 (Currencies) |
| 21344 | @item 15924 (Scripts) |
| 21345 | @end enumerate |
| 21346 | It includes a copy from Debian’s pkg-isocodes and makes the data accessible |
| 21347 | through a Python API.") |
| 21348 | (license license:lgpl2.1+))) |
| 21349 | |
| 21350 | (define-public [email protected] |
| 21351 | (package |
| 21352 | (inherit python-pycountry) |
| 21353 | (name "python-pycountry") |
| 21354 | (version "20.7.3") |
| 21355 | (source |
| 21356 | (origin |
| 21357 | (method url-fetch) |
| 21358 | (uri (pypi-uri "pycountry" version)) |
| 21359 | (sha256 |
| 21360 | (base32 "0hnbabsmqimx5hqh0jbd2f64i8fhzhhbrvid57048hs5sd9ll241")))))) |
| 21361 | |
| 21362 | (define-public python-pycosat |
| 21363 | (package |
| 21364 | (name "python-pycosat") |
| 21365 | (version "0.6.3") |
| 21366 | (source |
| 21367 | (origin |
| 21368 | (method url-fetch) |
| 21369 | (uri (pypi-uri "pycosat" version ".zip")) |
| 21370 | (sha256 |
| 21371 | (base32 |
| 21372 | "1vg0f2fwcybpdqv92z0hwdl603n2safh3fqvjjxkksd78r4qg6ac")))) |
| 21373 | ;; TODO: Unundle picosat. http://fmv.jku.at/picosat/ |
| 21374 | (build-system python-build-system) |
| 21375 | (native-inputs |
| 21376 | (list unzip)) |
| 21377 | (home-page "https://github.com/ContinuumIO/pycosat") |
| 21378 | (synopsis "Bindings to picosat (a SAT solver)") |
| 21379 | (description |
| 21380 | "This package provides efficient Python bindings to @code{picosat} on |
| 21381 | the C level. When importing pycosat, the @code{picosat} solver becomes part |
| 21382 | of the Python process itself. @code{picosat} is a @dfn{Boolean Satisfiability |
| 21383 | Problem} (SAT) solver.") |
| 21384 | (license license:expat))) |
| 21385 | |
| 21386 | (define-public python-pypeg2 |
| 21387 | (package |
| 21388 | (name "python-pypeg2") |
| 21389 | (version "2.15.2") |
| 21390 | (source |
| 21391 | (origin |
| 21392 | (method url-fetch) |
| 21393 | (uri (pypi-uri "pyPEG2" version)) |
| 21394 | (sha256 |
| 21395 | (base32 |
| 21396 | "0v8ziaam2r637v94ra4dbjw6jzxz99gs5x4i585kgag1v204yb9b")))) |
| 21397 | (build-system python-build-system) |
| 21398 | (propagated-inputs (list python-lxml)) |
| 21399 | (arguments |
| 21400 | ;;https://bitbucket.org/fdik/pypeg/issues/36/test-failures-on-py35 |
| 21401 | '(#:tests? #f)) |
| 21402 | (home-page "https://fdik.org/pyPEG/") |
| 21403 | (synopsis "Parsing Expression Grammars in Python") |
| 21404 | (description "PyPEG is an intrinsic parser interpreter framework for |
| 21405 | Python. It is based on Parsing Expression Grammars, PEG. With pyPEG you can |
| 21406 | parse many formal languages.") |
| 21407 | (license license:gpl2))) |
| 21408 | |
| 21409 | (define-public python-incremental |
| 21410 | (package |
| 21411 | (name "python-incremental") |
| 21412 | (version "17.5.0") |
| 21413 | (source |
| 21414 | (origin |
| 21415 | (method url-fetch) |
| 21416 | (uri (pypi-uri "incremental" version)) |
| 21417 | (sha256 |
| 21418 | (base32 |
| 21419 | "1cylxdz1cnkm5g3pklna3h2n0i0rks95ir1pnpxfnvpkmab1cxbv")))) |
| 21420 | (build-system python-build-system) |
| 21421 | (home-page "https://github.com/hawkowl/incremental") |
| 21422 | (synopsis "Library for versioning Python projects") |
| 21423 | (description "Incremental is a small library that versions your Python |
| 21424 | projects.") |
| 21425 | (license license:expat))) |
| 21426 | |
| 21427 | (define-public python-invoke |
| 21428 | (package |
| 21429 | (name "python-invoke") |
| 21430 | (home-page "https://www.pyinvoke.org/") |
| 21431 | (version "1.6.0") |
| 21432 | (source (origin |
| 21433 | (method url-fetch) |
| 21434 | (uri (pypi-uri "invoke" version)) |
| 21435 | (sha256 |
| 21436 | (base32 |
| 21437 | "1lsql9daabfr31c7syva5myc5bka45k57ygs9fliv63qrwp1wk9p")))) |
| 21438 | (build-system python-build-system) |
| 21439 | (arguments |
| 21440 | ;; XXX: Requires many dependencies that are not yet in Guix. |
| 21441 | `(#:tests? #f |
| 21442 | #:phases |
| 21443 | (modify-phases %standard-phases |
| 21444 | (add-after 'unpack 'delete-python2-code |
| 21445 | (lambda _ |
| 21446 | (delete-file-recursively "invoke/vendor/yaml2"))) |
| 21447 | (add-after 'unpack 'fix-bash-path |
| 21448 | (lambda* (#:key inputs #:allow-other-keys) |
| 21449 | (let ((bash (assoc-ref inputs "bash"))) |
| 21450 | (substitute* "invoke/config.py" |
| 21451 | (("shell = \"/bin/bash\"") |
| 21452 | (string-append "shell = \"" bash "/bin/bash\""))))))))) |
| 21453 | (inputs |
| 21454 | `(("bash" ,bash-minimal))) |
| 21455 | (synopsis "Pythonic task execution") |
| 21456 | (description |
| 21457 | "Invoke is a Python task execution tool and library, drawing inspiration |
| 21458 | from various sources to arrive at a powerful and clean feature set. It is |
| 21459 | evolved from the Fabric project, but focuses on local and abstract concerns |
| 21460 | instead of servers and network commands.") |
| 21461 | (license license:bsd-3))) |
| 21462 | |
| 21463 | (define-public python-automat |
| 21464 | (package |
| 21465 | (name "python-automat") |
| 21466 | (version "20.2.0") |
| 21467 | (source (origin |
| 21468 | (method url-fetch) |
| 21469 | (uri (pypi-uri "Automat" version)) |
| 21470 | (sha256 |
| 21471 | (base32 |
| 21472 | "0cyzrcqiibwdsp4y0djkllnzab8m5faa4s0d1kpi23k1fhy80ybr")))) |
| 21473 | (build-system python-build-system) |
| 21474 | ;; We disable the tests because they require python-twisted, while |
| 21475 | ;; python-twisted depends on python-automat. Twisted is optional, but the |
| 21476 | ;; tests fail if it is not available. Also see |
| 21477 | ;; <https://github.com/glyph/automat/issues/71>. |
| 21478 | (arguments |
| 21479 | `(#:tests? #f |
| 21480 | #:phases |
| 21481 | (modify-phases %standard-phases |
| 21482 | ;; Remove script, because it depends on python-twisted. |
| 21483 | (add-after 'unpack 'remove-entrypoint |
| 21484 | (lambda _ |
| 21485 | (substitute* "setup.py" |
| 21486 | (("\"automat-visualize = automat._visualize:tool\"") ""))))))) |
| 21487 | (native-inputs |
| 21488 | (list python-m2r python-setuptools-scm python-graphviz)) |
| 21489 | (propagated-inputs |
| 21490 | (list python-six python-attrs)) |
| 21491 | (home-page "https://github.com/glyph/Automat") |
| 21492 | (synopsis "Self-service finite-state machines") |
| 21493 | (description "Automat is a library for concise, idiomatic Python |
| 21494 | expression of finite-state automata (particularly deterministic finite-state |
| 21495 | transducers).") |
| 21496 | (license license:expat))) |
| 21497 | |
| 21498 | (define-public python-m2r |
| 21499 | (package |
| 21500 | (name "python-m2r") |
| 21501 | (version "0.3.1") |
| 21502 | (source (origin |
| 21503 | (method url-fetch) |
| 21504 | (uri (pypi-uri "m2r" version)) |
| 21505 | (sha256 |
| 21506 | (base32 |
| 21507 | "1asnwazfznbs0r7x03pj5ns4npz18z3kli538sgdicfg97y6gyxa")) |
| 21508 | (modules '((guix build utils))) |
| 21509 | (snippet |
| 21510 | ;; Adjust test regex for Python 3.10 compatibility. |
| 21511 | ;; Taken from upstream pull request: |
| 21512 | ;; https://github.com/miyakogi/m2r/pull/62 |
| 21513 | '(substitute* "tests/test_cli.py" |
| 21514 | (("self.assertIn\\('optional arguments:', message\\)") |
| 21515 | "self.assertRegex(message, r'option(s|al arguments):')"))))) |
| 21516 | (build-system python-build-system) |
| 21517 | (propagated-inputs |
| 21518 | (list python-docutils python-mistune)) |
| 21519 | (native-inputs |
| 21520 | (list python-pygments python-mock)) |
| 21521 | (home-page "https://github.com/miyakogi/m2r") |
| 21522 | (synopsis "Markdown to reStructuredText converter") |
| 21523 | (description "M2R converts a markdown file including reST markups to valid |
| 21524 | reST format.") |
| 21525 | (license license:expat))) |
| 21526 | |
| 21527 | (define-public python-constantly |
| 21528 | (package |
| 21529 | (name "python-constantly") |
| 21530 | (version "15.1.0") |
| 21531 | (source (origin |
| 21532 | (method url-fetch) |
| 21533 | (uri (pypi-uri "constantly" version)) |
| 21534 | (sha256 |
| 21535 | (base32 |
| 21536 | "0dgwdla5kfpqz83hfril716inm41hgn9skxskvi77605jbmp4qsq")))) |
| 21537 | (build-system python-build-system) |
| 21538 | (home-page "https://github.com/twisted/constantly") |
| 21539 | (synopsis "Symbolic constants in Python") |
| 21540 | (description "Constantly is a Python library that provides symbolic |
| 21541 | constant support. It includes collections and constants with text, numeric, |
| 21542 | and bit flag values.") |
| 21543 | (license license:expat))) |
| 21544 | |
| 21545 | (define-public python-attrdict3 |
| 21546 | (package |
| 21547 | (name "python-attrdict3") |
| 21548 | (version "2.0.2") |
| 21549 | (source (origin |
| 21550 | (method url-fetch) |
| 21551 | (uri (pypi-uri "attrdict3" version)) |
| 21552 | (sha256 |
| 21553 | (base32 |
| 21554 | "1s2z6c9jam5azm746l49wsqsyi29zbbrknq1axsw230jl4f1fk00")))) |
| 21555 | (build-system python-build-system) |
| 21556 | ;; The package is no longer maintained and tests need some work. |
| 21557 | (arguments '(#:tests? #f)) |
| 21558 | (propagated-inputs (list python-six)) |
| 21559 | (home-page "https://github.com/pirofti/AttrDict3") |
| 21560 | (synopsis "Attribute-style access dictionaries") |
| 21561 | (description |
| 21562 | "This package provides mapping objects whose elements can be accessed |
| 21563 | both as keys and as attributes.") |
| 21564 | (license license:expat))) |
| 21565 | |
| 21566 | (define-public python-attrs |
| 21567 | (package |
| 21568 | (name "python-attrs") |
| 21569 | (version "21.2.0") |
| 21570 | (source (origin |
| 21571 | (method url-fetch) |
| 21572 | (uri (pypi-uri "attrs" version)) |
| 21573 | (sha256 |
| 21574 | (base32 |
| 21575 | "1yzmwi5d197p0qhl7rl4xi9q1w8mk9i3zn6hrl22knbcrb1slspg")))) |
| 21576 | (build-system python-build-system) |
| 21577 | (arguments |
| 21578 | `(#:phases (modify-phases %standard-phases |
| 21579 | (add-after 'unpack 'remove-test-hypothesis-deadlines |
| 21580 | (lambda _ |
| 21581 | (substitute* "tests/test_make.py" |
| 21582 | (("assume, given") "assume, given, settings") |
| 21583 | (("( +)@given" all spaces) |
| 21584 | (string-append spaces "@settings(deadline=None)\n" all))))) |
| 21585 | (replace 'check |
| 21586 | (lambda* (#:key tests? #:allow-other-keys) |
| 21587 | (when tests? |
| 21588 | (invoke "pytest"))))))) |
| 21589 | (native-inputs |
| 21590 | (list python-coverage python-hypothesis python-pympler python-pytest |
| 21591 | python-six)) |
| 21592 | (home-page "https://github.com/python-attrs/attrs/") |
| 21593 | (synopsis "Attributes without boilerplate") |
| 21594 | (description "@code{attrs} is a Python package with class decorators that |
| 21595 | ease the chores of implementing the most common attribute-related object |
| 21596 | protocols.") |
| 21597 | (license license:expat))) |
| 21598 | |
| 21599 | (define-public python-attrs-bootstrap |
| 21600 | (package |
| 21601 | (inherit python-attrs) |
| 21602 | (name "python-attrs-bootstrap") |
| 21603 | (native-inputs `()) |
| 21604 | (arguments `(#:tests? #f)))) |
| 21605 | |
| 21606 | (define-public python-cliapp |
| 21607 | (package |
| 21608 | (name "python-cliapp") |
| 21609 | (version "1.20180812.1") |
| 21610 | (source |
| 21611 | (origin |
| 21612 | (method url-fetch) |
| 21613 | (uri (string-append |
| 21614 | "http://git.liw.fi/cgi-bin/cgit/cgit.cgi/cliapp/snapshot/cliapp-" |
| 21615 | version ".tar.gz")) |
| 21616 | (sha256 |
| 21617 | (base32 |
| 21618 | "1c1jlblbns8qhiaqjpg4xi6lip8xwfc5w643p43rg543havaj45x")))) |
| 21619 | (build-system python-build-system) |
| 21620 | (arguments |
| 21621 | `(;; XXX: The tests only do style and coverage checks, which |
| 21622 | ;; fails due to deprecation warnings, etc. |
| 21623 | #:tests? #f)) |
| 21624 | (native-inputs |
| 21625 | (list python-coverage-test-runner python-pep8)) |
| 21626 | (propagated-inputs |
| 21627 | (list python-pyaml)) |
| 21628 | (home-page "https://liw.fi/cliapp/") |
| 21629 | (synopsis "Python framework for command line programs") |
| 21630 | (description "@code{cliapp} is a Python framework for command line |
| 21631 | programs. It contains the typical stuff such programs need to do, such |
| 21632 | as parsing the command line for options, and iterating over input files.") |
| 21633 | (license license:gpl2+))) |
| 21634 | |
| 21635 | (define-public python-ttystatus |
| 21636 | (package |
| 21637 | (name "python-ttystatus") |
| 21638 | (version "0.38") |
| 21639 | (source |
| 21640 | (origin |
| 21641 | (method git-fetch) |
| 21642 | (uri (git-reference |
| 21643 | (url "http://git.liw.fi/ttystatus") |
| 21644 | ;; There are no tags after ttystatus-0.36. |
| 21645 | (commit "e9fc573326c5d1348f5fe56263b4f7a8c32f58c9"))) |
| 21646 | (sha256 |
| 21647 | (base32 "0v49q839nrwdm19c83wfmj6n2kw80xslwq9k0n5509r2h7wzjiqj")) |
| 21648 | (file-name (git-file-name name version)))) |
| 21649 | (build-system python-build-system) |
| 21650 | (native-inputs |
| 21651 | (list python-coverage-test-runner python-pep8)) |
| 21652 | (arguments |
| 21653 | `(#:phases |
| 21654 | (modify-phases %standard-phases |
| 21655 | ;; check phase needs to be run before the build phase. If not, |
| 21656 | ;; coverage-test-runner looks for tests for the built source files, |
| 21657 | ;; and fails. |
| 21658 | (delete 'check) |
| 21659 | (add-before 'build 'check |
| 21660 | (lambda _ (invoke "make" "check")))))) |
| 21661 | (home-page "https://liw.fi/ttystatus/") |
| 21662 | (synopsis "Python library for progress reporting and |
| 21663 | status updates on terminals") |
| 21664 | (description "@code{ttystatus} is a Python library for showing progress |
| 21665 | reporting and status updates on terminals, for command line programs. |
| 21666 | Output is automatically adapted to the width of the terminal: truncated |
| 21667 | if it does not fit, and resized if the terminal size changes.") |
| 21668 | (license license:gpl3+))) |
| 21669 | |
| 21670 | (define-public python-astroid |
| 21671 | (package |
| 21672 | (name "python-astroid") |
| 21673 | (version "2.11.7") |
| 21674 | (source |
| 21675 | (origin |
| 21676 | (method git-fetch) |
| 21677 | (uri (git-reference |
| 21678 | (url "https://github.com/PyCQA/astroid") |
| 21679 | (commit (string-append "v" version)))) |
| 21680 | (file-name (git-file-name name version)) |
| 21681 | (sha256 |
| 21682 | (base32 "0lmm5bhszg1nj0xsjnh5nm39if2jzpa3ycgvhy6ddycz28dy568y")))) |
| 21683 | (build-system python-build-system) |
| 21684 | (propagated-inputs |
| 21685 | (list python-lazy-object-proxy python-typing-extensions python-wrapt)) |
| 21686 | (native-inputs |
| 21687 | (list python-pytest python-pytest-runner)) |
| 21688 | (home-page "https://github.com/PyCQA/astroid") |
| 21689 | (synopsis "Python source code base representation") |
| 21690 | (description "@code{python-astroid} provides a common base representation |
| 21691 | of Python source code for projects such as pychecker, pyreverse, pylint, etc. |
| 21692 | It provides a compatible representation which comes from the _ast module. It |
| 21693 | rebuilds the tree generated by the builtin _ast module by recursively walking |
| 21694 | down the AST and building an extended ast. The new node classes have |
| 21695 | additional methods and attributes for different usages. They include some |
| 21696 | support for static inference and local name scopes. Furthermore, astroid |
| 21697 | builds partial trees by inspecting living objects.") |
| 21698 | (license license:lgpl2.1+))) |
| 21699 | |
| 21700 | (define-public python-isbnlib |
| 21701 | (package |
| 21702 | (name "python-isbnlib") |
| 21703 | (version "3.10.4") |
| 21704 | (source |
| 21705 | (origin |
| 21706 | (method url-fetch) |
| 21707 | (uri (pypi-uri "isbnlib" version)) |
| 21708 | (sha256 |
| 21709 | (base32 |
| 21710 | "0iin0x2xqwyphyyzd0mzrq5v5xm7b6dlbb294k4dywra5qvbrgzm")))) |
| 21711 | (build-system python-build-system) |
| 21712 | (arguments '(#:tests? #f)) ; No test |
| 21713 | (home-page "https://github.com/xlcnd/isbnlib") |
| 21714 | (synopsis "Python library to work with ISBN strings") |
| 21715 | (description "@code{python-isbnlib} is a (pure) python library that provides |
| 21716 | several useful methods and functions to validate, clean, transform, hyphenate and |
| 21717 | get metadata for ISBN strings. Its origin was as the core of isbntools. This short |
| 21718 | version, is suitable to be include as a dependency in other projects.") |
| 21719 | (license license:lgpl3+))) |
| 21720 | |
| 21721 | (define-public python-isort |
| 21722 | (package |
| 21723 | (name "python-isort") |
| 21724 | (version "5.12.0") |
| 21725 | (source |
| 21726 | (origin |
| 21727 | (method git-fetch) |
| 21728 | (uri (git-reference |
| 21729 | ;; Tests pass only from the Github sources |
| 21730 | (url "https://github.com/timothycrosley/isort") |
| 21731 | (commit version))) |
| 21732 | (file-name (git-file-name name version)) |
| 21733 | (modules '((guix build utils))) |
| 21734 | (snippet '(for-each delete-file (find-files "." "\\.whl$"))) |
| 21735 | (sha256 |
| 21736 | (base32 |
| 21737 | "1vbwc4gpffclf6hw08lvvgqlvsgfjlw7gjsm28jfcrln2pixla7j")))) |
| 21738 | (build-system python-build-system) |
| 21739 | (arguments |
| 21740 | (list |
| 21741 | #:phases |
| 21742 | #~(modify-phases %standard-phases |
| 21743 | (replace 'build |
| 21744 | (lambda _ |
| 21745 | (invoke "python" "-m" "build" "--wheel" "--no-isolation" "."))) |
| 21746 | (replace 'install |
| 21747 | (lambda _ |
| 21748 | (let ((whl (car (find-files "dist" "\\.whl$")))) |
| 21749 | (invoke "pip" "--no-cache-dir" "--no-input" |
| 21750 | "install" "--no-deps" "--prefix" #$output whl)))) |
| 21751 | (add-after 'install 'install-example-plugins |
| 21752 | (lambda _ |
| 21753 | (for-each (lambda (source-directory) |
| 21754 | (invoke "python" "-m" "build" "--wheel" |
| 21755 | "--no-isolation" "--outdir=dist" |
| 21756 | source-directory)) |
| 21757 | '("example_isort_formatting_plugin" |
| 21758 | "example_isort_sorting_plugin" |
| 21759 | "example_shared_isort_profile")) |
| 21760 | ;; Install them to temporary storage, for the test. |
| 21761 | (setenv "HOME" (getcwd)) |
| 21762 | (let ((example-whls (find-files "dist" "^example.*\\.whl$"))) |
| 21763 | (apply invoke "pip" "--no-cache-dir" "--no-input" |
| 21764 | "install" "--user" "--no-deps" example-whls)))) |
| 21765 | (replace 'check |
| 21766 | (lambda* (#:key tests? inputs outputs #:allow-other-keys) |
| 21767 | (when tests? |
| 21768 | (let ((bin (string-append #$output "/bin"))) |
| 21769 | (setenv "PATH" (string-append (getenv "PATH") ":" bin))) |
| 21770 | (invoke "pytest" "-vv" "tests/unit/" |
| 21771 | "-k" "not test_gitignore" ;requires git |
| 21772 | "--ignore=tests/unit/test_deprecated_finders.py"))))))) |
| 21773 | (native-inputs |
| 21774 | (list python-black |
| 21775 | python-colorama |
| 21776 | python-hypothesmith |
| 21777 | python-libcst-minimal |
| 21778 | python-natsort |
| 21779 | python-poetry-core |
| 21780 | python-pylama |
| 21781 | python-pypa-build |
| 21782 | python-pytest-mock |
| 21783 | python-pytest)) |
| 21784 | (home-page "https://github.com/PyCQA/isort") |
| 21785 | (synopsis "Python utility/library to sort python imports") |
| 21786 | (description "@code{python-isort} is a python utility/library to sort |
| 21787 | imports alphabetically, and automatically separated into sections. It |
| 21788 | provides a command line utility, a python library and plugins for various |
| 21789 | editors.") |
| 21790 | (license license:expat))) |
| 21791 | |
| 21792 | (define-public python-configparser |
| 21793 | (package |
| 21794 | (name "python-configparser") |
| 21795 | (version "4.0.2") |
| 21796 | (source |
| 21797 | (origin |
| 21798 | (method url-fetch) |
| 21799 | (uri (pypi-uri "configparser" version)) |
| 21800 | (sha256 |
| 21801 | (base32 |
| 21802 | "1priacxym85yjcf68hh38w55nqswaxp71ryjyfdk222kg9l85ln7")))) |
| 21803 | (native-inputs |
| 21804 | (list python-setuptools-scm)) |
| 21805 | (build-system python-build-system) |
| 21806 | (home-page "https://github.com/jaraco/configparser/") |
| 21807 | (synopsis "Backport of configparser from python 3.5") |
| 21808 | (description "@code{python-configparser} is a backport of |
| 21809 | @code{configparser} from Python 3.5 so that it can be used directly |
| 21810 | in other versions.") |
| 21811 | (license license:expat))) |
| 21812 | |
| 21813 | (define-public python-iniconfig |
| 21814 | (package |
| 21815 | (name "python-iniconfig") |
| 21816 | (version "1.1.1") |
| 21817 | (source |
| 21818 | (origin |
| 21819 | (method url-fetch) |
| 21820 | (uri (pypi-uri "iniconfig" version)) |
| 21821 | (sha256 |
| 21822 | (base32 |
| 21823 | "0ckzngs3scaa1mcfmsi1w40a1l8cxxnncscrxzjjwjyisx8z0fmw")))) |
| 21824 | (build-system python-build-system) |
| 21825 | (home-page "https://github.com/RonnyPfannschmidt/iniconfig") |
| 21826 | (synopsis "Simple INI-file parser") |
| 21827 | (description "The @code{iniconfig} package provides a small and simple |
| 21828 | INI-file parser module having a unique set of features ; @code{iniconfig} |
| 21829 | @itemize |
| 21830 | @item maintains the order of sections and entries ; |
| 21831 | @item supports multi-line values with or without line-continuations ; |
| 21832 | @item supports \"#\" comments everywhere ; |
| 21833 | @item raises errors with proper line-numbers ; |
| 21834 | @item raises an error when two sections have the same name. |
| 21835 | @end itemize") |
| 21836 | (license license:expat))) |
| 21837 | |
| 21838 | (define-public python-mamba |
| 21839 | (package |
| 21840 | (name "python-mamba") |
| 21841 | (version "0.11.2") |
| 21842 | (source (origin |
| 21843 | (method url-fetch) |
| 21844 | (uri (pypi-uri "mamba" version)) |
| 21845 | (sha256 |
| 21846 | (base32 |
| 21847 | "15m4dpnpv9m60pdaygvwgi43fwqaivs3qxfxhspwrp47sbgwdkvm")))) |
| 21848 | (build-system python-build-system) |
| 21849 | (arguments `(#:tests? #f)) ; No test |
| 21850 | (propagated-inputs |
| 21851 | (list python-clint python-coverage)) |
| 21852 | (home-page "https://nestorsalceda.com/mamba/") |
| 21853 | (synopsis "Test runner for Python") |
| 21854 | (description |
| 21855 | "Mamba is a Behaviour-Driven Development tool for Python developers. |
| 21856 | Is heavily influenced from RSpec, Mocha, Jasmine or Ginkgo.") |
| 21857 | (license license:expat))) |
| 21858 | |
| 21859 | (define-public python-mando |
| 21860 | (package |
| 21861 | (name "python-mando") |
| 21862 | (version "0.7.1") |
| 21863 | (source (origin |
| 21864 | (method url-fetch) |
| 21865 | (uri (pypi-uri "mando" version)) |
| 21866 | (sha256 |
| 21867 | (base32 |
| 21868 | "001mikga36i811pbc95rb45m2kzivkx4xb0fn3pzl4xnnjcskfhq")))) |
| 21869 | (build-system python-build-system) |
| 21870 | (arguments |
| 21871 | (list #:phases |
| 21872 | #~(modify-phases %standard-phases |
| 21873 | (replace 'check |
| 21874 | (lambda* (#:key tests? #:allow-other-keys) |
| 21875 | (when tests? |
| 21876 | (invoke "pytest" "-vv"))))))) |
| 21877 | (propagated-inputs |
| 21878 | (list python-rst2ansi python-six)) |
| 21879 | (native-inputs |
| 21880 | (list python-pytest)) |
| 21881 | (home-page "https://mando.readthedocs.org/") |
| 21882 | (synopsis |
| 21883 | "Wrapper around argparse, allowing creation of complete CLI applications") |
| 21884 | (description |
| 21885 | "This package is a wrapper around argparse, allowing you to write complete CLI |
| 21886 | applications in seconds while maintaining all the flexibility.") |
| 21887 | (license license:expat))) |
| 21888 | |
| 21889 | (define-public python-mwclient |
| 21890 | (package |
| 21891 | (name "python-mwclient") |
| 21892 | (version "0.10.1") |
| 21893 | (source |
| 21894 | (origin |
| 21895 | (method git-fetch) |
| 21896 | ;; The PyPI version wouldn't contain tests. |
| 21897 | (uri (git-reference |
| 21898 | (url "https://github.com/mwclient/mwclient") |
| 21899 | (commit (string-append "v" version)))) |
| 21900 | (file-name (git-file-name name version)) |
| 21901 | (sha256 |
| 21902 | (base32 "120snnsh9n5svfwkyj1w9jrxf99jnqm0jk282yypd3lpyca1l9hj")))) |
| 21903 | (build-system python-build-system) |
| 21904 | (propagated-inputs |
| 21905 | (list python-requests-oauthlib python-six)) |
| 21906 | (native-inputs |
| 21907 | (list python-mock python-pytest python-pytest-cov |
| 21908 | python-pytest-runner python-responses)) |
| 21909 | (home-page "https://github.com/btongminh/mwclient") |
| 21910 | (synopsis "MediaWiki API client") |
| 21911 | (description "This package provides a MediaWiki API client.") |
| 21912 | (license license:expat))) |
| 21913 | |
| 21914 | (define-public python-kneed |
| 21915 | (package |
| 21916 | (name "python-kneed") |
| 21917 | (version "0.7.0") |
| 21918 | (source |
| 21919 | (origin |
| 21920 | (method url-fetch) |
| 21921 | (uri (pypi-uri "kneed" version)) |
| 21922 | (sha256 |
| 21923 | (base32 "0vkwi0pr7nfkp3c46hnmx0275yx68v96v10rmspv0wis33x6f39l")))) |
| 21924 | (build-system python-build-system) |
| 21925 | (propagated-inputs |
| 21926 | (list python-matplotlib python-numpy python-scipy)) |
| 21927 | (home-page "https://github.com/arvkevi/kneed") |
| 21928 | (synopsis "Knee-point detection in Python") |
| 21929 | (description "This package implements the kneedle algorithm. Given a set |
| 21930 | of x and y values, kneed will return the knee point of the function. The knee |
| 21931 | point is the point of maximum curvature.") |
| 21932 | (license license:bsd-3))) |
| 21933 | |
| 21934 | (define-public python-utils |
| 21935 | (package |
| 21936 | (name "python-utils") |
| 21937 | (version "2.4.0") |
| 21938 | (source (origin |
| 21939 | (method url-fetch) |
| 21940 | (uri (pypi-uri "python-utils" version)) |
| 21941 | (sha256 |
| 21942 | (base32 |
| 21943 | "12c0glzkm81ljgf6pwh0d4rmdm1r7vvgg3ifzp8yp9cfyngw07zj")))) |
| 21944 | (build-system python-build-system) |
| 21945 | (arguments |
| 21946 | `(#:phases |
| 21947 | (modify-phases %standard-phases |
| 21948 | (replace 'check |
| 21949 | (lambda* (#:key inputs outputs #:allow-other-keys) |
| 21950 | (add-installed-pythonpath inputs outputs) |
| 21951 | (delete-file "pytest.ini") |
| 21952 | (invoke "pytest" "-vv")))))) |
| 21953 | (native-inputs |
| 21954 | `(("pytest-runner" ,python-pytest-runner) |
| 21955 | ("pytest" ,python-pytest) |
| 21956 | ("six" ,python-six))) |
| 21957 | (home-page "https://github.com/WoLpH/python-utils") |
| 21958 | (synopsis "Convenient utilities not included with the standard Python install") |
| 21959 | (description |
| 21960 | "Python Utils is a collection of small Python functions and classes which |
| 21961 | make common patterns shorter and easier.") |
| 21962 | (license license:bsd-2))) |
| 21963 | |
| 21964 | (define-public python-diff-cover |
| 21965 | (package |
| 21966 | (name "python-diff-cover") |
| 21967 | (version "7.5.0") |
| 21968 | (source (origin |
| 21969 | (method url-fetch) |
| 21970 | (uri (pypi-uri "diff_cover" version)) |
| 21971 | (sha256 |
| 21972 | (base32 |
| 21973 | "1z7bxnij2sqsiz9313nwcak7nshakpq4b6c05v13hkqyhd505cx4")))) |
| 21974 | (build-system pyproject-build-system) |
| 21975 | (arguments |
| 21976 | (list |
| 21977 | #:test-flags |
| 21978 | ;; missing fixture 'datadir'. |
| 21979 | '(list "--ignore=tests/test_clover_violations_reporter.py" |
| 21980 | ;; Difference in line breaks |
| 21981 | "-k" "not test_html_with_external_css"))) |
| 21982 | (propagated-inputs |
| 21983 | (list python-chardet |
| 21984 | python-jinja2 |
| 21985 | python-pluggy |
| 21986 | python-pygments |
| 21987 | python-tomli)) |
| 21988 | (native-inputs |
| 21989 | (list python-flake8 |
| 21990 | python-poetry-core |
| 21991 | python-pylint |
| 21992 | python-pytest |
| 21993 | python-pytest-flake8 |
| 21994 | python-pytest-mock)) |
| 21995 | (home-page "https://github.com/Bachmann1234/diff-cover") |
| 21996 | (synopsis "Run coverage and linting reports on diffs") |
| 21997 | (description "Automatically find diff lines that need test coverage. It |
| 21998 | also finds diff lines that have violations (according to tools such as |
| 21999 | pycodestyle, pyflakes, flake8, or pylint). This is used as a code quality |
| 22000 | metric during code reviews.") |
| 22001 | (license license:asl2.0))) |
| 22002 | |
| 22003 | (define-public python-diff-match-patch |
| 22004 | (package |
| 22005 | (name "python-diff-match-patch") |
| 22006 | (version "20200713") |
| 22007 | (source |
| 22008 | (origin |
| 22009 | (method url-fetch) |
| 22010 | (uri (pypi-uri "diff-match-patch" version)) |
| 22011 | (sha256 |
| 22012 | (base32 |
| 22013 | "063s8zcxz787xfg7d1wxpqh59fxg3iz85ww9zhyz4vaqm80mlvys")))) |
| 22014 | (build-system python-build-system) |
| 22015 | (arguments |
| 22016 | `(#:phases (modify-phases %standard-phases |
| 22017 | (replace 'check |
| 22018 | (lambda* (#:key tests? #:allow-other-keys) |
| 22019 | (when tests? |
| 22020 | (invoke "python" "-m" "unittest" |
| 22021 | "diff_match_patch.tests"))))))) |
| 22022 | (home-page "https://github.com/diff-match-patch-python/diff-match-patch") |
| 22023 | (synopsis "Synchronize plain text") |
| 22024 | (description "Diff Match and Patch libraries offer robust algorithms to |
| 22025 | perform the operations required for synchronizing plain text.") |
| 22026 | (license license:asl2.0))) |
| 22027 | |
| 22028 | (define-public python-icdiff |
| 22029 | (package |
| 22030 | (name "python-icdiff") |
| 22031 | (version "2.0.5") |
| 22032 | (source (origin |
| 22033 | (method git-fetch) |
| 22034 | (uri (git-reference |
| 22035 | (url "https://github.com/jeffkaufman/icdiff") |
| 22036 | (commit (string-append "release-" version)))) |
| 22037 | (file-name (git-file-name name version)) |
| 22038 | (sha256 |
| 22039 | (base32 |
| 22040 | "14gr9j2h7sfw47pwfzspm4zinywhqmzm4a0qz5c2k9wbixz120a4")))) |
| 22041 | (build-system python-build-system) |
| 22042 | (home-page "https://www.jefftk.com/icdiff") |
| 22043 | (synopsis "Improved colored diff") |
| 22044 | (description "This package provides colored diff functions that highlight |
| 22045 | parts of the lines that were modified.") |
| 22046 | (license license:psfl))) |
| 22047 | |
| 22048 | (define-public python-dirsync |
| 22049 | (package |
| 22050 | (name "python-dirsync") |
| 22051 | (version "2.2.5") |
| 22052 | (source |
| 22053 | (origin |
| 22054 | (method url-fetch) |
| 22055 | (uri (pypi-uri "dirsync" version)) |
| 22056 | (sha256 |
| 22057 | (base32 |
| 22058 | "1gm82jddm1lkazdi8lfsl1b3vi1z0252ng60mzjym8irnv94qfhy")))) |
| 22059 | (build-system python-build-system) |
| 22060 | (propagated-inputs |
| 22061 | (list python-six)) |
| 22062 | (home-page "https://github.com/tkhyn/dirsync") |
| 22063 | (synopsis "Advanced directory tree synchronisation tool") |
| 22064 | (description "Advanced directory tree synchronisation tool.") |
| 22065 | (license license:expat))) |
| 22066 | |
| 22067 | (define-public python-levenshtein |
| 22068 | (package |
| 22069 | (name "python-levenshtein") |
| 22070 | (version "0.12.2") |
| 22071 | (source |
| 22072 | (origin |
| 22073 | (method url-fetch) |
| 22074 | (uri (pypi-uri "python-Levenshtein" version)) |
| 22075 | (sha256 |
| 22076 | (base32 |
| 22077 | "1xj60gymwx1jl2ra9razx2wk8nb9cv1i7l8d14qsp8a8s7xra8yw")))) |
| 22078 | (build-system python-build-system) |
| 22079 | (home-page "https://github.com/ztane/python-Levenshtein") |
| 22080 | (synopsis "Fast computation of Levenshtein distance and string similarity") |
| 22081 | (description |
| 22082 | "The Levenshtein Python C extension module contains functions for fast computation of |
| 22083 | @enumerate |
| 22084 | @item Levenshtein (edit) distance, and edit operations |
| 22085 | @item string similarity |
| 22086 | @item approximate median strings, and generally string averaging |
| 22087 | @item string sequence and set similarity |
| 22088 | @end enumerate |
| 22089 | It supports both normal and Unicode strings.") |
| 22090 | (license license:gpl2+))) |
| 22091 | |
| 22092 | (define-public python-scandir |
| 22093 | (package |
| 22094 | (name "python-scandir") |
| 22095 | (version "1.10.0") |
| 22096 | (source |
| 22097 | (origin |
| 22098 | (method url-fetch) |
| 22099 | (uri (pypi-uri "scandir" version)) |
| 22100 | (sha256 |
| 22101 | (base32 "1bkqwmf056pkchf05ywbnf659wqlp6lljcdb0y88wr9f0vv32ijd")))) |
| 22102 | (build-system python-build-system) |
| 22103 | (arguments |
| 22104 | `(#:phases (modify-phases %standard-phases |
| 22105 | (replace 'check |
| 22106 | (lambda _ |
| 22107 | (invoke "python" "test/run_tests.py")))))) |
| 22108 | (home-page "https://github.com/benhoyt/scandir") |
| 22109 | (synopsis "Directory iteration function") |
| 22110 | (description |
| 22111 | "Directory iteration function like os.listdir(), except that instead of |
| 22112 | returning a list of bare filenames, it yields DirEntry objects that include |
| 22113 | file type and stat information along with the name. Using scandir() increases |
| 22114 | the speed of os.walk() by 2-20 times (depending on the platform and file |
| 22115 | system) by avoiding unnecessary calls to os.stat() in most cases. |
| 22116 | |
| 22117 | This package is part of the Python standard library since version 3.5.") |
| 22118 | (license license:bsd-3))) |
| 22119 | |
| 22120 | (define-public python-factory-boy |
| 22121 | (package |
| 22122 | (name "python-factory-boy") |
| 22123 | (version "3.2.1") |
| 22124 | (source |
| 22125 | (origin |
| 22126 | (method url-fetch) |
| 22127 | (uri (pypi-uri "factory_boy" version)) |
| 22128 | (sha256 |
| 22129 | (base32 "0pm5lbvnwm0kg5i6z611rg907yw1gy551f2advmpaz041ixjg3d9")))) |
| 22130 | (build-system python-build-system) |
| 22131 | (arguments |
| 22132 | ;; Tests are not included in the tarball. |
| 22133 | `(#:tests? #f)) |
| 22134 | (propagated-inputs (list python-faker)) |
| 22135 | (home-page "https://github.com/benhoyt/scandir") |
| 22136 | (synopsis "Versatile test fixtures replacement") |
| 22137 | (description "Factory_boy is a fixtures replacement based on thoughtbot’s |
| 22138 | factory_girl. As a fixtures replacement tool, it aims to replace static, hard |
| 22139 | to maintain fixtures with easy-to-use factories for complex object. Instead |
| 22140 | of building an exhaustive test setup with every possible combination of corner |
| 22141 | cases, factory_boy allows you to use objects customized for the current test, |
| 22142 | while only declaring the test-specific fields.") |
| 22143 | (license license:expat))) |
| 22144 | |
| 22145 | (define-public python-translate-toolkit |
| 22146 | (package |
| 22147 | (name "python-translate-toolkit") |
| 22148 | (version "3.6.2") |
| 22149 | (source |
| 22150 | (origin |
| 22151 | (method url-fetch) |
| 22152 | (uri (pypi-uri "translate-toolkit" version ".tar.gz")) |
| 22153 | (sha256 |
| 22154 | (base32 "0m4cpsp7x7h5m5agg4ybscf7y86wla46q2lvxpi2myplb6qlgcli")))) |
| 22155 | (build-system python-build-system) |
| 22156 | (native-inputs |
| 22157 | (list python-pytest python-sphinx)) |
| 22158 | (propagated-inputs |
| 22159 | (list python-babel |
| 22160 | python-beautifulsoup4 |
| 22161 | python-chardet |
| 22162 | python-diff-match-patch |
| 22163 | python-levenshtein |
| 22164 | python-lxml |
| 22165 | python-six |
| 22166 | python-vobject |
| 22167 | python-pyyaml)) |
| 22168 | (arguments |
| 22169 | ;; TODO: tests are not run, because they end with |
| 22170 | ;; TypeError: parse() missing 2 required positional arguments: 'tree' and |
| 22171 | ;; 'parse_funcs' |
| 22172 | ;; during test setup. |
| 22173 | (list #:tests? #f |
| 22174 | #:phases |
| 22175 | #~(modify-phases %standard-phases |
| 22176 | ;; translate-toolkit has many optional dependencies (see |
| 22177 | ;; optional.txt), which the sanity check does not understand. |
| 22178 | (delete 'sanity-check)))) |
| 22179 | (home-page "https://toolkit.translatehouse.org") |
| 22180 | (synopsis "Tools and API for translation and localization engineering") |
| 22181 | (description |
| 22182 | "Tools and API for translation and localization engineering. It contains |
| 22183 | several utilities, as well as an API for building localization tools.") |
| 22184 | (license license:gpl2+))) |
| 22185 | |
| 22186 | (define-public python-gtts |
| 22187 | (package |
| 22188 | (name "python-gtts") |
| 22189 | (version "2.3.1") |
| 22190 | (source (origin |
| 22191 | (method url-fetch) |
| 22192 | (uri (pypi-uri "gTTS" version)) |
| 22193 | (sha256 |
| 22194 | (base32 |
| 22195 | "1jsg1prpzr7gj5sn385mkv2v1i8xfc83ycm87hvsi2j0y366plps")))) |
| 22196 | (build-system pyproject-build-system) |
| 22197 | (arguments |
| 22198 | ;; Disable tests that require internet. |
| 22199 | (list #:test-flags '(list "-k" "not net"))) |
| 22200 | (native-inputs |
| 22201 | (list python-pytest python-testfixtures python-click python-requests)) |
| 22202 | (home-page "https://github.com/pndurette/gTTS") |
| 22203 | (synopsis "Google Translate text-to-speech interface") |
| 22204 | (description |
| 22205 | "Google Text-to-Speech (gTTS) is a Python library and CLI tool to |
| 22206 | interface with the Google Translate text-to-speech API. It lets you write |
| 22207 | spoken MP3 data to a file, a file-like object (bytestring) for further audio |
| 22208 | manipulation, or @code{stdout}.") |
| 22209 | (license license:expat))) |
| 22210 | |
| 22211 | (define-public python-packaging |
| 22212 | (package/inherit python-packaging-bootstrap |
| 22213 | (name "python-packaging") |
| 22214 | (arguments |
| 22215 | `(#:phases (modify-phases %standard-phases |
| 22216 | (replace 'check |
| 22217 | (lambda* (#:key tests? #:allow-other-keys) |
| 22218 | (if tests? |
| 22219 | (invoke "pytest" "-vv") |
| 22220 | (format #t "test suite not run~%"))))))) |
| 22221 | (native-inputs (list python-pretend python-pytest)) |
| 22222 | (propagated-inputs (list python-pyparsing python-six)) |
| 22223 | (home-page "https://github.com/pypa/packaging") |
| 22224 | (synopsis "Core utilities for Python packages") |
| 22225 | (description "Packaging is a Python module for dealing with Python packages. |
| 22226 | It offers an interface for working with package versions, names, and dependency |
| 22227 | information.") |
| 22228 | ;; From 'LICENSE': This software is made available under the terms of |
| 22229 | ;; *either* of the licenses found in LICENSE.APACHE or LICENSE.BSD. |
| 22230 | ;; Contributions to this software is made under the terms of *both* these |
| 22231 | ;; licenses. |
| 22232 | (license (list license:asl2.0 license:bsd-2)))) |
| 22233 | |
| 22234 | (define-public python-relatorio |
| 22235 | (package |
| 22236 | (name "python-relatorio") |
| 22237 | (version "0.10.0") |
| 22238 | (source |
| 22239 | (origin |
| 22240 | (method url-fetch) |
| 22241 | (uri (pypi-uri "relatorio" version)) |
| 22242 | (sha256 |
| 22243 | (base32 |
| 22244 | "09nhrz80dfm60nssbvjgz4czzy4yzfa8gxczcdlzbgcnnvm914vb")))) |
| 22245 | (build-system python-build-system) |
| 22246 | (propagated-inputs |
| 22247 | (list python-lxml python-genshi)) |
| 22248 | (native-inputs |
| 22249 | (list python-magic)) |
| 22250 | (home-page "https://relatorio.tryton.org/") |
| 22251 | (synopsis "Templating library able to output ODT and PDF files") |
| 22252 | (description "Relatorio is a templating library which provides a way to |
| 22253 | easily output ODT, ODS, PNG, SVG and several other kinds of files. Support |
| 22254 | for more filetypes can be easily added by creating plugins for them.") |
| 22255 | (license license:gpl3+))) |
| 22256 | |
| 22257 | (define-public python-radon |
| 22258 | (package |
| 22259 | (name "python-radon") |
| 22260 | (version "5.1.0") |
| 22261 | (source |
| 22262 | (origin |
| 22263 | (method url-fetch) |
| 22264 | (uri (pypi-uri "radon" version)) |
| 22265 | (sha256 |
| 22266 | (base32 |
| 22267 | "1vmf56zsf3paa1jadjcjghiv2kxwiismyayq42ggnqpqwm98f7fb")))) |
| 22268 | (build-system python-build-system) |
| 22269 | (arguments |
| 22270 | `(#:phases (modify-phases %standard-phases |
| 22271 | (add-after 'unpack 'relax-requirements |
| 22272 | (lambda _ |
| 22273 | (substitute* "setup.py" |
| 22274 | ((".*'future'.*") |
| 22275 | "") |
| 22276 | (("mando>=0\\.6,<0\\.7") |
| 22277 | "mando>=0.6") |
| 22278 | (("colorama==0.4.1") |
| 22279 | "colorama>=0.4.1")))) |
| 22280 | (replace 'check |
| 22281 | (lambda _ |
| 22282 | (invoke "python" "radon/tests/run.py")))))) |
| 22283 | (propagated-inputs (list python-colorama python-mando)) |
| 22284 | (native-inputs (list python-pytest python-pytest-mock)) |
| 22285 | (home-page "https://radon.readthedocs.org/") |
| 22286 | (synopsis "Code Metrics in Python") |
| 22287 | (description "Radon is a Python tool which computes various code metrics. |
| 22288 | Supported metrics are: |
| 22289 | @itemize @bullet |
| 22290 | @item raw metrics: SLOC, comment lines, blank lines, &c. |
| 22291 | @item Cyclomatic Complexity (i.e., McCabe’s Complexity) |
| 22292 | @item Halstead metrics (all of them) |
| 22293 | @item the Maintainability Index (a Visual Studio metric) |
| 22294 | @end itemize") |
| 22295 | (license license:expat))) |
| 22296 | |
| 22297 | (define-public python-sure |
| 22298 | (package |
| 22299 | (name "python-sure") |
| 22300 | (version "2.0.1") |
| 22301 | (source |
| 22302 | (origin |
| 22303 | (method url-fetch) |
| 22304 | (uri (pypi-uri "sure" version)) |
| 22305 | (sha256 |
| 22306 | (base32 |
| 22307 | "1jmrskj399idw1czx6dvy2zfaijnwi02b55vx979ixp7q2mnzz68")))) |
| 22308 | (build-system python-build-system) |
| 22309 | (propagated-inputs |
| 22310 | (list python-mock python-six)) |
| 22311 | (native-inputs |
| 22312 | (list python-nose python-rednose)) |
| 22313 | (home-page "https://github.com/gabrielfalcao/sure") |
| 22314 | (synopsis "Automated testing library in python for python") |
| 22315 | (description |
| 22316 | "Sure is a python library that leverages a DSL for writing assertions. |
| 22317 | Sure is heavily inspired by @code{RSpec Expectations} and @code{should.js}.") |
| 22318 | (license license:gpl3+))) |
| 22319 | |
| 22320 | (define-public python-misaka |
| 22321 | (package |
| 22322 | (name "python-misaka") |
| 22323 | (version "2.1.1") |
| 22324 | (source |
| 22325 | (origin |
| 22326 | (method url-fetch) |
| 22327 | (uri (pypi-uri "misaka" version)) |
| 22328 | (sha256 |
| 22329 | (base32 |
| 22330 | "1mzc29wwyhyardclj1vg2xsfdibg2lzb7f1azjcxi580ama55wv2")))) |
| 22331 | (build-system python-build-system) |
| 22332 | (arguments |
| 22333 | `(;; Line 37 of setup.py calls self.run_command('develop') |
| 22334 | ;; in the 'check' phase. This command seems to be trying |
| 22335 | ;; to write to |
| 22336 | ;; /gnu/store/...-python-<version>/lib/python<version>/site-packages/ |
| 22337 | ;; for which it does not have the permission to write. |
| 22338 | #:tests? #f)) |
| 22339 | (propagated-inputs |
| 22340 | (list python-cffi)) |
| 22341 | (home-page "https://github.com/FSX/misaka") |
| 22342 | (synopsis "Python binding for Hoedown") |
| 22343 | (description |
| 22344 | "@code{Misaka} is a CFFI-based binding for @code{Hoedown}, a fast markdown processing |
| 22345 | library written in C. It features a fast HTML renderer and functionality to make custom |
| 22346 | renderers (e.g. man pages or LaTeX).") |
| 22347 | (license license:expat))) |
| 22348 | |
| 22349 | (define-public python-jsonpointer |
| 22350 | (package |
| 22351 | (name "python-jsonpointer") |
| 22352 | (version "1.10") |
| 22353 | (source |
| 22354 | (origin |
| 22355 | (method url-fetch) |
| 22356 | (uri (pypi-uri "jsonpointer" version)) |
| 22357 | (sha256 |
| 22358 | (base32 |
| 22359 | "1cg0gvgqjysydv6p45v4jywg1jb3v48c7m3cbpi57zgf6nndr9cz")))) |
| 22360 | (build-system python-build-system) |
| 22361 | (home-page "https://github.com/stefankoegl/python-json-pointer") |
| 22362 | (synopsis "Identify specific nodes in a JSON document") |
| 22363 | (description "@code{jsonpointer} allows you to access specific nodes |
| 22364 | by path in a JSON document (see RFC 6901).") |
| 22365 | (license license:bsd-3))) |
| 22366 | |
| 22367 | (define-public python-jsonpatch |
| 22368 | (package |
| 22369 | (name "python-jsonpatch") |
| 22370 | (version "1.16") |
| 22371 | (source |
| 22372 | (origin |
| 22373 | (method git-fetch) |
| 22374 | ;; pypi version lacks tests.js |
| 22375 | (uri (git-reference |
| 22376 | (url "https://github.com/stefankoegl/python-json-patch") |
| 22377 | (commit (string-append "v" version)))) |
| 22378 | (file-name (git-file-name name version)) |
| 22379 | (sha256 |
| 22380 | (base32 |
| 22381 | "0k9pff06lxama3nhsc7cdxbp83422bdy8ifs52i6xkas8hpyzfzr")))) |
| 22382 | (build-system python-build-system) |
| 22383 | (propagated-inputs |
| 22384 | (list python-jsonpointer)) |
| 22385 | (home-page "https://github.com/stefankoegl/python-json-patch") |
| 22386 | (synopsis "Applying JSON Patches in Python 2.6+ and 3.x") |
| 22387 | (description "@code{jsonpatch} is a library and program that allows |
| 22388 | applying JSON Patches according to RFC 6902.") |
| 22389 | (license license:bsd-3))) |
| 22390 | |
| 22391 | (define-public python-jsonpatch-0.4 |
| 22392 | (package (inherit python-jsonpatch) |
| 22393 | (name "python-jsonpatch") |
| 22394 | (version "0.4") |
| 22395 | (source |
| 22396 | (origin |
| 22397 | (method git-fetch) |
| 22398 | (uri (git-reference |
| 22399 | (url "https://github.com/stefankoegl/python-json-patch") |
| 22400 | (commit (string-append "v" version)))) |
| 22401 | (file-name (git-file-name name version)) |
| 22402 | (sha256 |
| 22403 | (base32 |
| 22404 | "1fq02y57kinyknxjcav0slcb0k9mwdffqw2hnlhdkpj7palh2mwk")))))) |
| 22405 | |
| 22406 | (define-public python-rfc3986 |
| 22407 | (package |
| 22408 | (name "python-rfc3986") |
| 22409 | (version "1.4.0") |
| 22410 | (source (origin |
| 22411 | (method url-fetch) |
| 22412 | (uri (pypi-uri "rfc3986" version)) |
| 22413 | (sha256 |
| 22414 | (base32 |
| 22415 | "17dvx15m3r49bmif5zlli8kzjd6bys6psixzbp14sd5367d9h8qi")))) |
| 22416 | (build-system python-build-system) |
| 22417 | (arguments |
| 22418 | `(#:phases |
| 22419 | (modify-phases %standard-phases |
| 22420 | (replace 'check |
| 22421 | (lambda _ |
| 22422 | (invoke "pytest" "-v")))))) |
| 22423 | (native-inputs |
| 22424 | (list python-pytest)) |
| 22425 | (home-page "https://rfc3986.readthedocs.io/") |
| 22426 | (synopsis "Parse and validate URI references") |
| 22427 | (description |
| 22428 | "@code{rfc3986} is a Python implementation of RFC@tie{}3986 including |
| 22429 | validation and authority parsing. This module also supports RFC@tie{}6874 |
| 22430 | which adds support for zone identifiers to IPv6 addresses.") |
| 22431 | (license license:asl2.0))) |
| 22432 | |
| 22433 | (define-public python-rfc3987 |
| 22434 | (package |
| 22435 | (name "python-rfc3987") |
| 22436 | (version "1.3.7") |
| 22437 | (source |
| 22438 | (origin |
| 22439 | (method url-fetch) |
| 22440 | (uri (pypi-uri "rfc3987" version)) |
| 22441 | (sha256 |
| 22442 | (base32 |
| 22443 | "192pclzs2y0yaywqkrlvd0x73740q310kvqvm6jldhi619mq59wi")))) |
| 22444 | (build-system python-build-system) |
| 22445 | (home-page "https://pypi.org/project/rfc3987/") |
| 22446 | (synopsis "Parsing and validation of URIs (RFC 3986) and IRIs (RFC 3987)") |
| 22447 | (description "@code{rfc3987} provides routines for parsing and |
| 22448 | validation of URIs (see RFC 3986) and IRIs (see RFC 3987).") |
| 22449 | (license license:gpl3+))) |
| 22450 | |
| 22451 | ;; The latest commit contains fixes for building with both python3 and python2. |
| 22452 | (define-public python-rfc6555 |
| 22453 | (let ((commit "1a181b432312731f6742a5eb558dae4761d32361") |
| 22454 | (revision "1")) |
| 22455 | (package |
| 22456 | (name "python-rfc6555") |
| 22457 | (version (git-version "0.0.0" revision commit)) |
| 22458 | (source (origin |
| 22459 | (method git-fetch) |
| 22460 | (uri (git-reference |
| 22461 | (url "https://github.com/sethmlarson/rfc6555") |
| 22462 | (commit commit))) |
| 22463 | (file-name (git-file-name name version)) |
| 22464 | (sha256 |
| 22465 | (base32 |
| 22466 | "1bxl17j9vs69cshcqnlwamr03hnykxqnwz3mdgi6x3s2k4q18npp")))) |
| 22467 | (build-system python-build-system) |
| 22468 | (arguments |
| 22469 | '(#:phases |
| 22470 | (modify-phases %standard-phases |
| 22471 | (replace 'check |
| 22472 | (lambda* (#:key tests? #:allow-other-keys) |
| 22473 | (if tests? |
| 22474 | ;; Other tests require network access. |
| 22475 | (invoke "pytest" "tests/test_ipv6.py") |
| 22476 | #t)))))) |
| 22477 | (native-inputs |
| 22478 | (list python-pytest)) |
| 22479 | (home-page "https://pypi.org/project/rfc6555/") |
| 22480 | (synopsis "Python implementation of RFC 6555") |
| 22481 | (description |
| 22482 | "Python implementation of the Happy Eyeballs Algorithm described in RFC |
| 22483 | 6555. Provided with a single file and dead-simple API to allow easy vendoring |
| 22484 | and integration into other projects.") |
| 22485 | (license license:asl2.0)))) |
| 22486 | |
| 22487 | (define-public python-bagit |
| 22488 | (package |
| 22489 | (name "python-bagit") |
| 22490 | (version "1.7.0") |
| 22491 | (source |
| 22492 | (origin |
| 22493 | (method url-fetch) |
| 22494 | (uri (pypi-uri "bagit" version)) |
| 22495 | (sha256 |
| 22496 | (base32 |
| 22497 | "1m6y04qmig0b5hzb35lnaw3d2yfydb7alyr1579yblvgs3da6j7j")))) |
| 22498 | (build-system python-build-system) |
| 22499 | (native-inputs |
| 22500 | (list python-setuptools-scm python-coverage python-mock)) |
| 22501 | (home-page "https://libraryofcongress.github.io/bagit-python/") |
| 22502 | (synopsis "Create and validate BagIt packages") |
| 22503 | (description "Bagit is a Python library and command line utility for working |
| 22504 | with BagIt style packages. BagIt is a minimalist packaging format for digital |
| 22505 | preservation.") |
| 22506 | (license license:cc0))) |
| 22507 | |
| 22508 | (define-public python-prov |
| 22509 | (package |
| 22510 | (name "python-prov") |
| 22511 | (version "2.0.0") |
| 22512 | (source |
| 22513 | (origin |
| 22514 | (method url-fetch) |
| 22515 | (uri (pypi-uri "prov" version)) |
| 22516 | (sha256 |
| 22517 | (base32 |
| 22518 | "1vi2fj31vygfcqrkimdmk52q2ldw08g9fn4v4zlgdfgcjlhqyhxn")))) |
| 22519 | (build-system python-build-system) |
| 22520 | (propagated-inputs |
| 22521 | (list python-dateutil python-lxml python-networkx python-rdflib-5)) |
| 22522 | (native-inputs |
| 22523 | (list graphviz python-pydot)) |
| 22524 | (home-page "https://github.com/trungdong/prov") |
| 22525 | (synopsis |
| 22526 | "W3C Provenance Data Model supporting PROV-JSON, PROV-XML and PROV-O (RDF)") |
| 22527 | (description |
| 22528 | "This package provides a library for W3C Provenance Data Model supporting |
| 22529 | PROV-O (RDF), PROV-XML, PROV-JSON import/export.") |
| 22530 | (license license:expat))) |
| 22531 | |
| 22532 | (define-public python-arcp |
| 22533 | (package |
| 22534 | (name "python-arcp") |
| 22535 | (version "0.2.1") |
| 22536 | (source |
| 22537 | (origin |
| 22538 | (method url-fetch) |
| 22539 | (uri (pypi-uri "arcp" version)) |
| 22540 | (sha256 |
| 22541 | (base32 |
| 22542 | "1p8mfyjssa6pbn5dp6pyzv9yy6kwm2rz5jn2kjbq5vy9f9wsq5sw")))) |
| 22543 | (build-system python-build-system) |
| 22544 | (native-inputs |
| 22545 | (list python-pytest)) |
| 22546 | (home-page "https://arcp.readthedocs.io/") |
| 22547 | (synopsis |
| 22548 | "Archive and Package URI parser and generator") |
| 22549 | (description |
| 22550 | "@acronym{arcp, Archive and Package} provides functions for creating |
| 22551 | @code{arcp_} URIs, which can be used for identifying or parsing hypermedia files |
| 22552 | packaged in an archive or package, like a ZIP file. arcp URIs can be used to |
| 22553 | consume or reference hypermedia resources bundled inside a file archive or an |
| 22554 | application package, as well as to resolve URIs for archive resources within a |
| 22555 | programmatic framework. This URI scheme provides mechanisms to generate a |
| 22556 | unique base URI to represent the root of the archive, so that relative URI |
| 22557 | references in a bundled resource can be resolved within the archive without |
| 22558 | having to extract the archive content on the local file system. An arcp URI can |
| 22559 | be used for purposes of isolation (e.g. when consuming multiple archives), |
| 22560 | security constraints (avoiding \"climb out\" from the archive), or for |
| 22561 | externally identiyfing sub-resources referenced by hypermedia formats.") |
| 22562 | (license license:asl2.0))) |
| 22563 | |
| 22564 | (define-public python-shellescape |
| 22565 | (package |
| 22566 | (name "python-shellescape") |
| 22567 | (version "3.8.1") |
| 22568 | (source |
| 22569 | (origin |
| 22570 | (method git-fetch) |
| 22571 | (uri (git-reference |
| 22572 | (url "https://github.com/chrissimpkins/shellescape") |
| 22573 | (commit (string-append "v" version)))) |
| 22574 | (file-name (git-file-name name version)) |
| 22575 | (sha256 |
| 22576 | (base32 |
| 22577 | "0wzccxk139qx1lb2g70f5b2yh9zq15nr2mgvqdbfabg5zm0vf1qw")))) |
| 22578 | (build-system python-build-system) |
| 22579 | (arguments |
| 22580 | '(#:phases |
| 22581 | (modify-phases %standard-phases |
| 22582 | (replace 'check |
| 22583 | (lambda* (#:key tests? inputs outputs #:allow-other-keys) |
| 22584 | (when tests? |
| 22585 | (add-installed-pythonpath inputs outputs) |
| 22586 | (invoke "python" "tests/test_shellescape.py")) |
| 22587 | #t))))) |
| 22588 | (native-inputs |
| 22589 | (list python-pytest)) |
| 22590 | (home-page "https://github.com/chrissimpkins/shellescape") |
| 22591 | (synopsis |
| 22592 | "Shell escape a string to safely use it as a token in a shell command") |
| 22593 | (description |
| 22594 | "The shellescape Python module defines the @code{shellescape.quote()} |
| 22595 | function that returns a shell-escaped version of a Python string. This is a |
| 22596 | backport of the @code{shlex.quote()} function from Python 3.8 that makes it |
| 22597 | accessible to users of Python 3 versions < 3.3 and all Python 2.x versions.") |
| 22598 | (license license:expat))) |
| 22599 | |
| 22600 | (define-public python-validators |
| 22601 | (package |
| 22602 | (name "python-validators") |
| 22603 | (version "0.18.2") |
| 22604 | (source (origin |
| 22605 | (method url-fetch) |
| 22606 | (uri (pypi-uri "validators" version)) |
| 22607 | (sha256 |
| 22608 | (base32 |
| 22609 | "19lypf7hm7p203ay3v8zmckc5rv6889zkfdm16nki1972f99mk9p")))) |
| 22610 | (build-system python-build-system) |
| 22611 | (arguments |
| 22612 | '(#:phases (modify-phases %standard-phases |
| 22613 | (replace 'check |
| 22614 | (lambda _ |
| 22615 | (invoke "pytest" "-vv")))))) |
| 22616 | (propagated-inputs |
| 22617 | (list python-decorator python-six)) |
| 22618 | (native-inputs |
| 22619 | (list python-flake8 python-isort python-pytest)) |
| 22620 | (home-page "https://github.com/kvesteri/validators") |
| 22621 | (synopsis "Data validation library") |
| 22622 | (description |
| 22623 | "This package contains validators for different things such as email |
| 22624 | addresses, IP addresses, URLs, hashes and more. It has been designed to |
| 22625 | be easy to use and not require defining a schema or form just to validate |
| 22626 | some input.") |
| 22627 | (license license:expat))) |
| 22628 | |
| 22629 | (define-public python-validate-email |
| 22630 | (package |
| 22631 | (name "python-validate-email") |
| 22632 | (version "1.3") |
| 22633 | (source |
| 22634 | (origin |
| 22635 | (method url-fetch) |
| 22636 | (uri (pypi-uri "validate_email" version)) |
| 22637 | (sha256 |
| 22638 | (base32 |
| 22639 | "1bxffaf5yz2cph8ki55vdvdypbwkvn2xr1firlcy62vqbzf1jivq")))) |
| 22640 | (build-system python-build-system) |
| 22641 | (home-page "https://github.com/syrusakbary/validate_email") |
| 22642 | (synopsis "Verifies if an email address is valid and really exists") |
| 22643 | (description "@code{validate_email} can be used to verify if an email |
| 22644 | address is valid and really exists.") |
| 22645 | (license license:lgpl3+))) |
| 22646 | |
| 22647 | (define-public python-flex |
| 22648 | (package |
| 22649 | (name "python-flex") |
| 22650 | (version "6.10.0") |
| 22651 | (source |
| 22652 | (origin |
| 22653 | (method url-fetch) |
| 22654 | (uri (pypi-uri "flex" version)) |
| 22655 | (sha256 |
| 22656 | (base32 |
| 22657 | "00pamnwla3khk8nyla7y28dq9jnh69swd7f4jfsl7sn1izs8n8zk")))) |
| 22658 | (build-system python-build-system) |
| 22659 | (propagated-inputs |
| 22660 | (list python-click |
| 22661 | python-iso8601 |
| 22662 | python-jsonpointer |
| 22663 | python-pyyaml |
| 22664 | python-requests |
| 22665 | python-rfc3987 |
| 22666 | python-six |
| 22667 | python-validate-email)) |
| 22668 | (home-page "https://github.com/pipermerriam/flex") |
| 22669 | (synopsis "Validates Swagger schemata") |
| 22670 | (description "@code{flex} can be used to validate Swagger schemata.") |
| 22671 | (license license:bsd-3))) |
| 22672 | |
| 22673 | (define-public python-marshmallow |
| 22674 | (package |
| 22675 | (name "python-marshmallow") |
| 22676 | (version "3.19.0") |
| 22677 | (source |
| 22678 | (origin |
| 22679 | (method url-fetch) |
| 22680 | (uri (pypi-uri "marshmallow" version)) |
| 22681 | (sha256 |
| 22682 | (base32 |
| 22683 | "0y6vpq2p5841kcw2qil68la0rx9z1vmxzj3dxjv99kjhsq7jq0wh")))) |
| 22684 | (build-system pyproject-build-system) |
| 22685 | (propagated-inputs |
| 22686 | (list python-packaging)) |
| 22687 | (native-inputs |
| 22688 | (list python-flake8 |
| 22689 | python-flake8-bugbear |
| 22690 | python-mypy |
| 22691 | python-pytest |
| 22692 | python-pytz |
| 22693 | python-simplejson)) |
| 22694 | (home-page "https://github.com/marshmallow-code/marshmallow") |
| 22695 | (synopsis "Convert complex datatypes to and from native Python datatypes") |
| 22696 | (description "@code{marshmallow} provides a library for converting complex |
| 22697 | datatypes to and from native Python datatypes.") |
| 22698 | (license license:expat))) |
| 22699 | |
| 22700 | (define-public python-marshmallow-jsonapi |
| 22701 | (package |
| 22702 | (name "python-marshmallow-jsonapi") |
| 22703 | (version "0.24.0") |
| 22704 | (source |
| 22705 | (origin |
| 22706 | (method url-fetch) |
| 22707 | (uri (pypi-uri "marshmallow-jsonapi" version)) |
| 22708 | (sha256 |
| 22709 | (base32 "1d9pxcgmln4gls99vwj1h24qv0lz7fb2jqmqrsiv1pid1snc125x")))) |
| 22710 | (build-system python-build-system) |
| 22711 | (propagated-inputs |
| 22712 | (list python-marshmallow)) |
| 22713 | (native-inputs |
| 22714 | (list python-faker |
| 22715 | python-flake8 |
| 22716 | python-flake8-bugbear |
| 22717 | python-flask |
| 22718 | python-mock |
| 22719 | python-pytest |
| 22720 | python-tox)) |
| 22721 | (home-page "https://github.com/marshmallow-code/marshmallow-jsonapi") |
| 22722 | (synopsis "JSON:API 1.0 formatting with Marshmallow") |
| 22723 | (description |
| 22724 | "The marshmallow-jsonapi package provides a simple way to produce |
| 22725 | @uref{https://jsonapi.org, JSON:API}-compliant data in any Python Web framework. |
| 22726 | It includes optional utilities to integrate with Flask.") |
| 22727 | (license license:expat))) |
| 22728 | |
| 22729 | (define-public python-apispec |
| 22730 | (package |
| 22731 | (name "python-apispec") |
| 22732 | (version "6.0.2") |
| 22733 | (source |
| 22734 | (origin |
| 22735 | (method url-fetch) |
| 22736 | (uri (pypi-uri "apispec" version)) |
| 22737 | (sha256 |
| 22738 | (base32 |
| 22739 | "11vqxwdxmm7qmyhdbxk4gnx37nbzmn266ah92gi4pvzd76vq0vg7")))) |
| 22740 | (build-system pyproject-build-system) |
| 22741 | (arguments |
| 22742 | (list |
| 22743 | ;; Disable validation tests since they require |
| 22744 | ;; the optional 'prance' library which is not |
| 22745 | ;; yet in Guix. |
| 22746 | #:test-flags '(list "-k" "not openapi_tools_validate"))) |
| 22747 | (propagated-inputs |
| 22748 | (list python-packaging)) |
| 22749 | (native-inputs |
| 22750 | (list python-flake8 |
| 22751 | python-flake8-bugbear |
| 22752 | python-marshmallow |
| 22753 | python-mypy |
| 22754 | python-pytest |
| 22755 | python-pyyaml)) |
| 22756 | (home-page "https://github.com/marshmallow-code/apispec") |
| 22757 | (synopsis "Swagger/OpenAPI specification generator") |
| 22758 | (description "@code{python-apispec} is a pluggable API specification |
| 22759 | generator. It currently supports the OpenAPI specification, formerly known as |
| 22760 | Swagger.") |
| 22761 | (license license:expat))) |
| 22762 | |
| 22763 | (define-public python-apispec-webframeworks |
| 22764 | (package |
| 22765 | (name "python-apispec-webframeworks") |
| 22766 | (version "0.5.2") |
| 22767 | (source (origin |
| 22768 | (method url-fetch) |
| 22769 | (uri (pypi-uri "apispec-webframeworks" version)) |
| 22770 | (sha256 |
| 22771 | (base32 |
| 22772 | "1wyw30402xq2a8icrsjmy9v43jyvawcjd85ccb2zicqlg4k5pcqd")))) |
| 22773 | (build-system pyproject-build-system) |
| 22774 | (propagated-inputs (list python-apispec)) |
| 22775 | (native-inputs |
| 22776 | (list python-bottle |
| 22777 | python-flake8 |
| 22778 | python-flake8-bugbear |
| 22779 | python-flask |
| 22780 | python-mock |
| 22781 | python-pytest |
| 22782 | python-pyyaml |
| 22783 | python-tornado |
| 22784 | python-tox)) |
| 22785 | (home-page "https://github.com/marshmallow-code/apispec-webframeworks") |
| 22786 | (synopsis "Web framework plugins for apispec") |
| 22787 | (description "This package provides plugins for using @code{apispec} with |
| 22788 | web frameworks.") |
| 22789 | (license license:expat))) |
| 22790 | |
| 22791 | (define-public python-flasgger |
| 22792 | (package |
| 22793 | (name "python-flasgger") |
| 22794 | (version "0.9.5") |
| 22795 | (source |
| 22796 | (origin |
| 22797 | (method git-fetch) |
| 22798 | (uri (git-reference |
| 22799 | (url "https://github.com/rochacbruno/flasgger") |
| 22800 | (commit version))) |
| 22801 | (file-name (git-file-name name version)) |
| 22802 | (sha256 |
| 22803 | (base32 "0a2djgfq905a4in16068qz0ikg88dm4nbckaamhaz2v9khllr0bi")))) |
| 22804 | (build-system pyproject-build-system) |
| 22805 | (arguments |
| 22806 | (list |
| 22807 | ;; This test fails due to missing fixtures |
| 22808 | #:test-flags '(list "-k" "not test_swag") |
| 22809 | #:phases |
| 22810 | '(modify-phases %standard-phases |
| 22811 | (add-after 'unpack 'prepare-check |
| 22812 | (lambda _ |
| 22813 | ;; This requires a dummy package "flasgger_package" to be installed. |
| 22814 | (delete-file "examples/package_example.py") |
| 22815 | ;; These fail with an internal server error |
| 22816 | (for-each delete-file '("examples/marshmallow_apispec.py" |
| 22817 | "examples/validation.py"))))))) |
| 22818 | (propagated-inputs |
| 22819 | (list python-flask python-pyyaml python-jsonschema python-mistune |
| 22820 | python-six)) |
| 22821 | (native-inputs |
| 22822 | (list python-apispec |
| 22823 | python-apispec-webframeworks |
| 22824 | python-decorator |
| 22825 | python-flake8 |
| 22826 | python-flask-jwt |
| 22827 | python-flask-restful |
| 22828 | python-flex |
| 22829 | python-marshmallow |
| 22830 | python-pytest |
| 22831 | python-pytest-cov)) |
| 22832 | (home-page "https://github.com/rochacbruno/flasgger/") |
| 22833 | (synopsis "Extract Swagger specs from your Flask project") |
| 22834 | (description "@code{python-flasgger} allows extracting Swagger specs |
| 22835 | from your Flask project. It is a fork of Flask-Swagger.") |
| 22836 | (license license:expat))) |
| 22837 | |
| 22838 | (define-public python-swagger-spec-validator |
| 22839 | (package |
| 22840 | (name "python-swagger-spec-validator") |
| 22841 | (version "2.4.3") |
| 22842 | (source |
| 22843 | (origin |
| 22844 | (method url-fetch) |
| 22845 | (uri (pypi-uri "swagger-spec-validator" version)) |
| 22846 | (sha256 |
| 22847 | (base32 |
| 22848 | "11g627icrsqwazsncwi0sdvprcj6hwaayw5xk3xsj8d97bmrzqjp")))) |
| 22849 | (build-system python-build-system) |
| 22850 | (propagated-inputs |
| 22851 | (list python-jsonschema python-pyyaml python-six)) |
| 22852 | (home-page |
| 22853 | "https://github.com/Yelp/swagger_spec_validator") |
| 22854 | (synopsis "Validation of Swagger specifications") |
| 22855 | (description "@code{swagger_spec_validator} provides a library for |
| 22856 | validating Swagger API specifications.") |
| 22857 | (license license:asl2.0))) |
| 22858 | |
| 22859 | (define-public python-apache-libcloud |
| 22860 | (package |
| 22861 | (name "python-apache-libcloud") |
| 22862 | (version "3.1.0") |
| 22863 | (source |
| 22864 | (origin |
| 22865 | (method url-fetch) |
| 22866 | (uri (pypi-uri "apache-libcloud" version)) |
| 22867 | (sha256 |
| 22868 | (base32 |
| 22869 | "1b28j265kvibgxrgxx0gwfm6cmv252c8ph1j2vb0cpms8ph5if5v")))) |
| 22870 | (build-system python-build-system) |
| 22871 | (arguments |
| 22872 | '(#:phases |
| 22873 | (modify-phases %standard-phases |
| 22874 | (add-after 'unpack 'patch-ssh |
| 22875 | (lambda* (#:key inputs #:allow-other-keys) |
| 22876 | (substitute* "libcloud/compute/ssh.py" |
| 22877 | (("'ssh'") |
| 22878 | (string-append "'" (search-input-file inputs "/bin/ssh") |
| 22879 | "'"))))) |
| 22880 | (add-after 'unpack 'patch-tests |
| 22881 | (lambda _ |
| 22882 | (substitute* "libcloud/test/compute/test_ssh_client.py" |
| 22883 | (("^class ShellOutSSHClientTests") |
| 22884 | "@unittest.skip(\"Guix container doesn't have ssh service\") |
| 22885 | class ShellOutSSHClientTests")))) |
| 22886 | (add-before 'check 'copy-secret |
| 22887 | (lambda _ |
| 22888 | (copy-file "libcloud/test/secrets.py-dist" |
| 22889 | "libcloud/test/secrets.py")))))) |
| 22890 | (inputs |
| 22891 | (list openssh)) |
| 22892 | (propagated-inputs |
| 22893 | (list python-paramiko python-requests)) |
| 22894 | (native-inputs |
| 22895 | (list python-lockfile python-mock python-pytest python-pytest-runner |
| 22896 | python-requests-mock)) |
| 22897 | (home-page "https://libcloud.apache.org/") |
| 22898 | (synopsis "Unified Cloud API") |
| 22899 | (description "@code{libcloud} is a Python library for interacting with |
| 22900 | many of the popular cloud service providers using a unified API.") |
| 22901 | (license license:asl2.0))) |
| 22902 | |
| 22903 | (define-public python-smmap |
| 22904 | (package |
| 22905 | (name "python-smmap") |
| 22906 | (version "3.0.1") |
| 22907 | (source |
| 22908 | (origin |
| 22909 | (method url-fetch) |
| 22910 | (uri (pypi-uri "smmap" version)) |
| 22911 | (sha256 |
| 22912 | (base32 "0ijlnv60y8f41py1wnn5n1a1i81cxd9dfpdhr0k3cgkrcbz8850p")))) |
| 22913 | (build-system python-build-system) |
| 22914 | (native-inputs |
| 22915 | (list python-nosexcover)) |
| 22916 | (home-page "https://github.com/Byron/smmap") |
| 22917 | (synopsis "Python sliding window memory map manager") |
| 22918 | (description "@code{smmap} is a pure Python implementation of a sliding |
| 22919 | window memory map manager.") |
| 22920 | (license license:bsd-3))) |
| 22921 | |
| 22922 | (define-public python-regex |
| 22923 | (package |
| 22924 | (name "python-regex") |
| 22925 | (version "2022.1.18") |
| 22926 | (source (origin |
| 22927 | (method url-fetch) |
| 22928 | (uri (pypi-uri "regex" version)) |
| 22929 | (sha256 |
| 22930 | (base32 |
| 22931 | "05ir92d0cmv8wkafn3r05j5q47l6shg7cpdblp2a8m407b02vwwp")))) |
| 22932 | (build-system python-build-system) |
| 22933 | (arguments |
| 22934 | '(#:phases |
| 22935 | (modify-phases %standard-phases |
| 22936 | (replace 'check |
| 22937 | (lambda* (#:key inputs outputs #:allow-other-keys) |
| 22938 | (add-installed-pythonpath inputs outputs) |
| 22939 | (invoke "python" "-c" |
| 22940 | "from regex.test_regex import test_main ; test_main()")))))) |
| 22941 | (home-page "https://bitbucket.org/mrabarnett/mrab-regex") |
| 22942 | (synopsis "Alternative regular expression module") |
| 22943 | (description "This regular expression implementation is backwards- |
| 22944 | compatible with the standard @code{re} module, but offers additional |
| 22945 | functionality like full case-folding for case-insensitive matches in Unicode.") |
| 22946 | (license license:psfl))) |
| 22947 | |
| 22948 | (define-public python-pyopengl |
| 22949 | (package |
| 22950 | (name "python-pyopengl") |
| 22951 | (version "3.1.6") |
| 22952 | (source |
| 22953 | (origin |
| 22954 | (method url-fetch) |
| 22955 | (uri (pypi-uri "PyOpenGL" version)) |
| 22956 | (sha256 |
| 22957 | (base32 |
| 22958 | "09syrsfrcknr1k2wmj05gfd5d0dyjfxzbipzbd0agv9775vwi9lf")))) |
| 22959 | (build-system python-build-system) |
| 22960 | (inputs |
| 22961 | (list mesa freeglut glu)) |
| 22962 | (arguments |
| 22963 | `(#:tests? #f ; Tests fail: AttributeError: 'GLXPlatform' object has no |
| 22964 | ;attribute 'OSMesa' |
| 22965 | #:phases |
| 22966 | (modify-phases %standard-phases |
| 22967 | (add-before 'build 'fix-paths |
| 22968 | (lambda* (#:key inputs outputs #:allow-other-keys) |
| 22969 | (substitute* '("OpenGL/platform/ctypesloader.py") |
| 22970 | (("filenames_to_try = \\[\\]") "filenames_to_try = [name]")) |
| 22971 | (substitute* '("OpenGL/platform/glx.py" "tests/check_glut_load.py") |
| 22972 | (("'GL'") |
| 22973 | (string-append "'" (assoc-ref inputs "mesa") "/lib/libGL.so'")) |
| 22974 | (("'GLU'") |
| 22975 | (string-append "'" (assoc-ref inputs "glu") "/lib/libGLU.so'")) |
| 22976 | (("'glut',") |
| 22977 | (string-append "'" (assoc-ref inputs "freeglut") "/lib/libglut.so',")) |
| 22978 | (("'GLESv1_CM'") |
| 22979 | (string-append "'" (assoc-ref inputs "mesa") "/lib/libGLESv1_CM.so'")) |
| 22980 | (("'GLESv2'") |
| 22981 | (string-append "'" (assoc-ref inputs "mesa") "/lib/libGLESv2.so'"))) |
| 22982 | ;; Not providing libgle. It seems to be very old. |
| 22983 | #t))))) |
| 22984 | (home-page "https://pyopengl.sourceforge.net") |
| 22985 | (synopsis "Standard OpenGL bindings for Python") |
| 22986 | (description |
| 22987 | "PyOpenGL is the most common cross platform Python binding to OpenGL and |
| 22988 | related APIs. The binding is created using the standard @code{ctypes} |
| 22989 | library.") |
| 22990 | (license license:bsd-3))) |
| 22991 | |
| 22992 | (define-public python-pyopengl-accelerate |
| 22993 | (package |
| 22994 | (inherit python-pyopengl) |
| 22995 | (name "python-pyopengl-accelerate") |
| 22996 | (version "3.1.6") |
| 22997 | (source |
| 22998 | (origin |
| 22999 | (method url-fetch) |
| 23000 | (uri (pypi-uri "PyOpenGL-accelerate" version)) |
| 23001 | (sha256 |
| 23002 | (base32 |
| 23003 | "1hydrpdn4p4z6mlczcg1y4s0z8si3rs6zq8x4ql558pcaq1312md")))) |
| 23004 | (inputs |
| 23005 | (list mesa python-numpy)) ; for cython module |
| 23006 | ; numpy_formathandler, thus not propagated |
| 23007 | (arguments |
| 23008 | `(#:tests? #f |
| 23009 | #:phases |
| 23010 | (modify-phases %standard-phases |
| 23011 | (delete 'fix-paths)))) |
| 23012 | (synopsis "Acceleration code for PyOpenGL") |
| 23013 | (description |
| 23014 | "This is the Cython-coded accelerator module for PyOpenGL."))) |
| 23015 | |
| 23016 | (define-public python-glcontext |
| 23017 | (package |
| 23018 | (name "python-glcontext") |
| 23019 | (version "2.4.0") |
| 23020 | (source (origin |
| 23021 | (method git-fetch) |
| 23022 | (uri (git-reference |
| 23023 | (url "https://github.com/moderngl/glcontext") |
| 23024 | (commit version))) |
| 23025 | (file-name (git-file-name name version)) |
| 23026 | (sha256 |
| 23027 | (base32 |
| 23028 | "0zzpwyqg19y600n09xz07cxk4jimh9vjraszda7g7ipijq6iasac")))) |
| 23029 | (build-system pyproject-build-system) |
| 23030 | (arguments |
| 23031 | (list #:phases #~(modify-phases %standard-phases |
| 23032 | (add-before 'build 'fix-lib-paths |
| 23033 | (lambda* (#:key inputs outputs #:allow-other-keys) |
| 23034 | (let ((mesa (assoc-ref inputs "mesa")) |
| 23035 | (libx11 (assoc-ref inputs "libx11"))) |
| 23036 | (substitute* '("glcontext/x11.cpp" |
| 23037 | "glcontext/egl.cpp") |
| 23038 | (("\"libGL.so\"") |
| 23039 | (string-append "\"" mesa "/lib/libGL.so\"")) |
| 23040 | (("\"libEGL.so\"") |
| 23041 | (string-append "\"" mesa "/lib/libEGL.so\"")) |
| 23042 | (("\"libX11.so\"") |
| 23043 | (string-append "\"" libx11 "/lib/libX11.so\""))) |
| 23044 | (substitute* '("glcontext/__init__.py") |
| 23045 | (("find_library\\('GL'\\)") |
| 23046 | (string-append "'" mesa "/lib/libGL.so'")) |
| 23047 | (("find_library\\('EGL'\\)") |
| 23048 | (string-append "'" mesa "/lib/libEGL.so'")) |
| 23049 | (("find_library\\(\"X11\"\\)") |
| 23050 | (string-append "'" libx11 "/lib/libX11.so'")))))) |
| 23051 | (replace 'check |
| 23052 | (lambda* (#:key inputs outputs tests? |
| 23053 | #:allow-other-keys) |
| 23054 | (when tests? |
| 23055 | (system "Xvfb :1 &") |
| 23056 | (setenv "DISPLAY" ":1") |
| 23057 | (add-installed-pythonpath inputs outputs) |
| 23058 | (invoke "pytest" "tests"))))))) |
| 23059 | (inputs (list libx11 mesa)) |
| 23060 | (native-inputs (list xorg-server-for-tests python-pytest python-psutil)) |
| 23061 | (home-page "https://github.com/moderngl/glcontext") |
| 23062 | (synopsis "Portable OpenGL Context for ModernGL") |
| 23063 | (description "Python-glcontext is a library providing an OpenGL |
| 23064 | implementation for ModernGL on multiple platforms.") |
| 23065 | (license license:expat))) |
| 23066 | |
| 23067 | (define-public python-rencode |
| 23068 | (package |
| 23069 | (name "python-rencode") |
| 23070 | (version "1.0.5") |
| 23071 | (source |
| 23072 | (origin |
| 23073 | (method url-fetch) |
| 23074 | (uri (pypi-uri "rencode" version)) |
| 23075 | (sha256 |
| 23076 | (base32 |
| 23077 | "0mzwdq1is7kyyr32i5k4iz6g5xxdvmiyc132jnc60p9m6lnwjrpv")))) |
| 23078 | (build-system python-build-system) |
| 23079 | (arguments |
| 23080 | `(#:phases |
| 23081 | (modify-phases %standard-phases |
| 23082 | (add-before 'check 'delete-bogus-test |
| 23083 | ;; This test requires /home/aresch/Downloads, which is not provided by |
| 23084 | ;; the build environment. |
| 23085 | (lambda _ |
| 23086 | (delete-file "rencode/t.py") |
| 23087 | #t))))) |
| 23088 | (native-inputs (list pkg-config python-cython)) |
| 23089 | (home-page "https://github.com/aresch/rencode") |
| 23090 | (synopsis "Serialization of heterogeneous data structures") |
| 23091 | (description |
| 23092 | "The @code{rencode} module is a data structure serialization library, |
| 23093 | similar to @code{bencode} from the BitTorrent project. For complex, |
| 23094 | heterogeneous data structures with many small elements, r-encoding stake up |
| 23095 | significantly less space than b-encodings. This version of rencode is a |
| 23096 | complete rewrite in Cython to attempt to increase the performance over the |
| 23097 | pure Python module.") |
| 23098 | (license license:bsd-3))) |
| 23099 | |
| 23100 | (define-public python-pysocks |
| 23101 | (package |
| 23102 | (name "python-pysocks") |
| 23103 | (version "1.7.1") |
| 23104 | (source |
| 23105 | (origin |
| 23106 | (method url-fetch) |
| 23107 | (uri (pypi-uri "PySocks" version)) |
| 23108 | (sha256 |
| 23109 | (base32 |
| 23110 | "184sg65mbmih6ljblfsxcmq5js5l7dj3gpn618w9q5dy3rbh921z")))) |
| 23111 | (build-system python-build-system) |
| 23112 | (arguments `(#:tests? #f)) |
| 23113 | (home-page "https://github.com/Anorov/PySocks") |
| 23114 | (synopsis "SOCKS client module") |
| 23115 | (description "@code{pysocks} is an updated and semi-actively maintained |
| 23116 | version of @code{SocksiPy} with bug fixes and extra features.") |
| 23117 | (license license:bsd-3))) |
| 23118 | |
| 23119 | (define-public python-pydiff |
| 23120 | (package |
| 23121 | (name "python-pydiff") |
| 23122 | (version "0.2") |
| 23123 | (source |
| 23124 | (origin |
| 23125 | (method url-fetch) |
| 23126 | (uri (pypi-uri "pydiff" version)) |
| 23127 | (sha256 |
| 23128 | (base32 |
| 23129 | "1als83h9w0gab24ipyna6khm390qmpnpkc5jksmdbs2xc8hp2z44")))) |
| 23130 | (build-system python-build-system) |
| 23131 | (home-page "https://github.com/myint/pydiff") |
| 23132 | (synopsis "Library to diff two Python files at the bytecode level") |
| 23133 | (description |
| 23134 | "@code{pydiff} makes it easy to look for actual code changes while |
| 23135 | ignoring formatting changes.") |
| 23136 | (license license:expat))) |
| 23137 | |
| 23138 | (define-public python-pydub |
| 23139 | (package |
| 23140 | (name "python-pydub") |
| 23141 | (version "0.25.1") |
| 23142 | (source |
| 23143 | (origin |
| 23144 | (method url-fetch) |
| 23145 | (uri (pypi-uri "pydub" version)) |
| 23146 | (sha256 |
| 23147 | (base32 |
| 23148 | "03ykn2kp6qglsrzqi5h79z5cp3kl9mknasv0d6jv5jj9k77362lq")))) |
| 23149 | (build-system python-build-system) |
| 23150 | (arguments |
| 23151 | `(#:phases |
| 23152 | (modify-phases %standard-phases |
| 23153 | (add-after 'unpack 'fix-ffmpeg-path |
| 23154 | (lambda* (#:key inputs #:allow-other-keys) |
| 23155 | (let ((ffmpeg (assoc-ref inputs "ffmpeg"))) |
| 23156 | (substitute* '("pydub/utils.py") |
| 23157 | (("return \"ffmpeg\"") |
| 23158 | (string-append "return \"" ffmpeg "/bin/ffmpeg\"")) |
| 23159 | (("return \"ffplay\"") |
| 23160 | (string-append "return \"" ffmpeg "/bin/ffplay\"")) |
| 23161 | (("return \"ffprobe\"") |
| 23162 | (string-append "return \"" ffmpeg "/bin/ffprobe\"")) |
| 23163 | (("warn\\(\"Couldn't find ff") "# warn\\(\"Couldn't find ff")) |
| 23164 | #t)))))) |
| 23165 | (home-page "https://pydub.com") |
| 23166 | (inputs |
| 23167 | (list ffmpeg)) |
| 23168 | (propagated-inputs |
| 23169 | (list python-scipy)) |
| 23170 | (synopsis "Manipulate audio with a high level interface in Python") |
| 23171 | (description |
| 23172 | "@code{pydub} makes it easy to manipulate audio in Python. It relies on |
| 23173 | @code{ffmpeg} to open various audio formats.") |
| 23174 | (license license:expat))) ; MIT license |
| 23175 | |
| 23176 | (define-public python-tqdm |
| 23177 | (package |
| 23178 | (name "python-tqdm") |
| 23179 | (version "4.64.1") |
| 23180 | (source |
| 23181 | (origin |
| 23182 | (method url-fetch) |
| 23183 | (uri (pypi-uri "tqdm" version)) |
| 23184 | (sha256 |
| 23185 | (base32 |
| 23186 | "1r7i9kswpnrx4ppfvzz6discb04j1rqkqxdwa2sc2la900m6hksz")))) |
| 23187 | (build-system python-build-system) |
| 23188 | (arguments |
| 23189 | '(#:phases (modify-phases %standard-phases |
| 23190 | (replace 'check |
| 23191 | (lambda _ |
| 23192 | (invoke "pytest" "-vv" |
| 23193 | "-o" "asyncio_mode=auto" |
| 23194 | "-k" "not perf")))))) |
| 23195 | (native-inputs |
| 23196 | (list python-pytest python-pytest-asyncio python-pytest-timeout |
| 23197 | python-setuptools-scm python-toml)) |
| 23198 | (home-page "https://github.com/tqdm/tqdm") |
| 23199 | (synopsis "Fast, extensible progress meter") |
| 23200 | (description |
| 23201 | "Make loops show a progress bar on the console by just wrapping any |
| 23202 | iterable with @code{|tqdm(iterable)|}. Offers many options to define |
| 23203 | design and layout.") |
| 23204 | (license (list license:mpl2.0 license:expat)))) |
| 23205 | |
| 23206 | (define-public python-pkginfo |
| 23207 | (package |
| 23208 | (name "python-pkginfo") |
| 23209 | (version "1.8.3") |
| 23210 | (source |
| 23211 | (origin |
| 23212 | (method url-fetch) |
| 23213 | (uri (pypi-uri "pkginfo" version)) |
| 23214 | (sha256 |
| 23215 | (base32 "0z46w559hrl79gf7navgzimj21ma821wka27jh58fvyqilqs8kd8")))) |
| 23216 | (build-system python-build-system) |
| 23217 | (native-inputs |
| 23218 | (list python-wheel)) |
| 23219 | (home-page "https://code.launchpad.net/~tseaver/pkginfo/trunk") |
| 23220 | (synopsis "Query metadatdata from sdists, bdists, and installed packages") |
| 23221 | (description |
| 23222 | "API to query the distutils metadata written in @file{PKG-INFO} inside a |
| 23223 | source distriubtion (an sdist) or a binary distribution (e.g., created by |
| 23224 | running bdist_egg). It can also query the EGG-INFO directory of an installed |
| 23225 | distribution, and the *.egg-info stored in a \"development checkout\" (e.g, |
| 23226 | created by running @code{python setup.py develop}).") |
| 23227 | (license license:expat))) |
| 23228 | |
| 23229 | (define-public python-twine |
| 23230 | (package |
| 23231 | (name "python-twine") |
| 23232 | (version "1.15.0") |
| 23233 | (source |
| 23234 | (origin |
| 23235 | (method url-fetch) |
| 23236 | (uri (pypi-uri "twine" version)) |
| 23237 | (sha256 |
| 23238 | (base32 "11rpd653zcgzkq3sgwkzs3mpxl3r5rij59745ni84ikv8smjmlm3")))) |
| 23239 | (build-system python-build-system) |
| 23240 | (propagated-inputs |
| 23241 | (list python-tqdm |
| 23242 | python-packaging |
| 23243 | python-pkginfo |
| 23244 | python-readme-renderer |
| 23245 | python-requests |
| 23246 | python-requests-toolbelt)) |
| 23247 | (home-page "https://github.com/pypa/twine") |
| 23248 | (synopsis "Collection of utilities for interacting with PyPI") |
| 23249 | (description |
| 23250 | "@code{twine} currently supports registering projects and uploading |
| 23251 | distributions. It authenticates the user over HTTPS, allows them to pre-sign |
| 23252 | their files and supports any packaging format (including wheels).") |
| 23253 | (license license:asl2.0))) |
| 23254 | |
| 23255 | (define-public python-linecache2 |
| 23256 | (package |
| 23257 | (name "python-linecache2") |
| 23258 | (version "1.0.0") |
| 23259 | (source |
| 23260 | (origin |
| 23261 | (method url-fetch) |
| 23262 | (uri (pypi-uri "linecache2" version)) |
| 23263 | (sha256 |
| 23264 | (base32 |
| 23265 | "0z79g3ds5wk2lvnqw0y2jpakjf32h95bd9zmnvp7dnqhf57gy9jb")))) |
| 23266 | (build-system python-build-system) |
| 23267 | (arguments |
| 23268 | `(;; The tests depend on unittest2, and our version is a bit too old. |
| 23269 | #:tests? #f)) |
| 23270 | (native-inputs |
| 23271 | `(("python-pbr" ,python-pbr-minimal))) |
| 23272 | (home-page |
| 23273 | "https://github.com/testing-cabal/linecache2") |
| 23274 | (synopsis "Backports of the linecache module") |
| 23275 | (description |
| 23276 | "The linecache module allows one to get any line from any file, while |
| 23277 | attempting to optimize internally, using a cache, the common case where many |
| 23278 | lines are read from a single file.") |
| 23279 | (license license:psfl))) |
| 23280 | |
| 23281 | (define-public python-traceback2 |
| 23282 | (package |
| 23283 | (name "python-traceback2") |
| 23284 | (version "1.4.0") |
| 23285 | (source |
| 23286 | (origin |
| 23287 | (method url-fetch) |
| 23288 | (uri (pypi-uri "traceback2" version)) |
| 23289 | (sha256 |
| 23290 | (base32 |
| 23291 | "0c1h3jas1jp1fdbn9z2mrgn3jj0hw1x3yhnkxp7jw34q15xcdb05")))) |
| 23292 | (build-system python-build-system) |
| 23293 | (arguments |
| 23294 | `(;; python-traceback2 and python-unittest2 depend on one another. |
| 23295 | #:tests? #f)) |
| 23296 | (native-inputs |
| 23297 | `(("python-pbr" ,python-pbr-minimal))) |
| 23298 | (propagated-inputs |
| 23299 | (list python-linecache2 python-six)) |
| 23300 | (home-page |
| 23301 | "https://github.com/testing-cabal/traceback2") |
| 23302 | (synopsis "Backports of the traceback module") |
| 23303 | (description |
| 23304 | "This module provides a standard interface to extract, format and print |
| 23305 | stack traces of Python programs. It exactly mimics the behavior of the Python |
| 23306 | interpreter when it prints a stack trace.") |
| 23307 | (license license:psfl))) |
| 23308 | |
| 23309 | (define-public python-ratelimiter |
| 23310 | (package |
| 23311 | (name "python-ratelimiter") |
| 23312 | (version "1.2.0") |
| 23313 | (source |
| 23314 | (origin |
| 23315 | (method url-fetch) |
| 23316 | (uri (pypi-uri "ratelimiter" version)) |
| 23317 | (sha256 |
| 23318 | (base32 |
| 23319 | "1dhz85mj5bqd2mij84ncs6pz32hgidr79hay4aqfmzaa4rbb497p")))) |
| 23320 | (build-system python-build-system) |
| 23321 | (arguments |
| 23322 | '(#:tests? #f)) ; There are no tests in the pypi archive. |
| 23323 | (home-page "https://github.com/RazerM/ratelimiter") |
| 23324 | (synopsis "Simple rate limiting object") |
| 23325 | (description |
| 23326 | "The @code{ratelimiter} module ensures that an operation will not be |
| 23327 | executed more than a given number of times during a given period.") |
| 23328 | (license license:asl2.0))) |
| 23329 | |
| 23330 | (define-public python-jsonrpclib-pelix |
| 23331 | (package |
| 23332 | (name "python-jsonrpclib-pelix") |
| 23333 | (version "0.3.2") |
| 23334 | (source |
| 23335 | (origin |
| 23336 | (method url-fetch) |
| 23337 | (uri (pypi-uri "jsonrpclib-pelix" version)) |
| 23338 | (sha256 |
| 23339 | (base32 |
| 23340 | "0f83z5zi7w32vprhk1dyc94ir1bh4hdd57bjdbwkq9ykng8qilhl")))) |
| 23341 | (build-system python-build-system) |
| 23342 | (arguments |
| 23343 | `(#:tests? #f)) ; no tests in PyPI tarball |
| 23344 | (home-page "https://github.com/tcalmant/jsonrpclib/") |
| 23345 | (synopsis "JSON-RPC 2.0 client library for Python") |
| 23346 | (description |
| 23347 | "This library implements the JSON-RPC v2.0 |
| 23348 | specification (backwards-compatible) as a client library for Python. This |
| 23349 | version is a fork of jsonrpclib by Josh Marshall, usable with Pelix remote |
| 23350 | services.") |
| 23351 | (license license:asl2.0))) |
| 23352 | |
| 23353 | (define-public python-setuptools-scm-git-archive |
| 23354 | (package |
| 23355 | (name "python-setuptools-scm-git-archive") |
| 23356 | (version "1.0") |
| 23357 | (source |
| 23358 | (origin |
| 23359 | (method url-fetch) |
| 23360 | (uri (pypi-uri "setuptools_scm_git_archive" version)) |
| 23361 | (sha256 |
| 23362 | (base32 |
| 23363 | "1nii1sz5jq75ilf18bjnr11l9rz1lvdmyk66bxl7q90qan85yhjj")))) |
| 23364 | (build-system python-build-system) |
| 23365 | (arguments |
| 23366 | '(#:phases (modify-phases %standard-phases |
| 23367 | (add-after 'unpack 'dont-install-defunct-egginfo |
| 23368 | (lambda _ |
| 23369 | ;; When a ".git" directory is missing, the setup.py |
| 23370 | ;; script invokes setuptools.setup twice, once with |
| 23371 | ;; "0" as the version. Prevent that. |
| 23372 | (substitute* "setup.py" |
| 23373 | (("if not isdir\\('\\.git'\\):") |
| 23374 | "if False:"))))))) |
| 23375 | (native-inputs |
| 23376 | (list python-pytest)) |
| 23377 | (propagated-inputs |
| 23378 | (list python-setuptools-scm)) |
| 23379 | (home-page "https://github.com/Changaco/setuptools_scm_git_archive/") |
| 23380 | (synopsis "Setuptools_scm plugin for git archives") |
| 23381 | (description |
| 23382 | "The setuptools_scm_git_archive package is a plugin to |
| 23383 | setuptools_scm, which supports obtaining versions from git archives that |
| 23384 | belong to tagged versions.") |
| 23385 | (license license:expat))) |
| 23386 | |
| 23387 | (define-public python-setuptools-git |
| 23388 | (package |
| 23389 | (name "python-setuptools-git") |
| 23390 | (version "1.2") |
| 23391 | (source |
| 23392 | (origin |
| 23393 | (method url-fetch) |
| 23394 | (uri (pypi-uri "setuptools-git" version)) |
| 23395 | (sha256 |
| 23396 | (base32 |
| 23397 | "0i84qjwp5m0l9qagdjww2frdh63r37km1c48mrvbmaqsl1ni6r7z")))) |
| 23398 | (build-system python-build-system) |
| 23399 | (arguments |
| 23400 | `(#:phases |
| 23401 | (modify-phases %standard-phases |
| 23402 | ;; This is needed for tests. |
| 23403 | (add-after 'unpack 'configure-git |
| 23404 | (lambda _ |
| 23405 | (setenv "HOME" "/tmp") |
| 23406 | (invoke "git" "config" "--global" "user.email" "guix") |
| 23407 | (invoke "git" "config" "--global" "user.name" "guix") |
| 23408 | #t))))) |
| 23409 | (native-inputs |
| 23410 | `(("git" ,git-minimal))) |
| 23411 | (home-page "https://github.com/msabramo/setuptools-git") |
| 23412 | (synopsis "Setuptools revision control system plugin for Git") |
| 23413 | (description |
| 23414 | "This package provides a plugin for Setuptools for revision control with |
| 23415 | Git.") |
| 23416 | (license license:bsd-3))) |
| 23417 | |
| 23418 | (define-public python-setuptools-rust |
| 23419 | (package |
| 23420 | (name "python-setuptools-rust") |
| 23421 | (version "1.6.0") |
| 23422 | (source |
| 23423 | (origin |
| 23424 | (method url-fetch) |
| 23425 | (uri (pypi-uri "setuptools-rust" version)) |
| 23426 | (sha256 |
| 23427 | (base32 "0qi274r0fcnvxa8vs8vyhcknnzhq8pd0ig5zk1wmjc63x96p6vn8")))) |
| 23428 | (build-system pyproject-build-system) |
| 23429 | (arguments '(#:tests? #f)) ;no tests |
| 23430 | (propagated-inputs |
| 23431 | (list python-semantic-version python-typing-extensions)) |
| 23432 | (home-page "https://github.com/PyO3/setuptools-rust") |
| 23433 | (synopsis "Setuptools plugin for Rust extensions") |
| 23434 | (description |
| 23435 | "@code{setuptools-rust} is a plugin for @code{setuptools} to build |
| 23436 | Rust Python extensions implemented with @code{PyO3} or @code{rust-cpython}.") |
| 23437 | (license license:expat))) |
| 23438 | |
| 23439 | (define-public python-pyclipper |
| 23440 | (package |
| 23441 | (name "python-pyclipper") |
| 23442 | (version "1.3.0.post3") |
| 23443 | (source |
| 23444 | (origin |
| 23445 | (method url-fetch) |
| 23446 | (uri (pypi-uri "pyclipper" version)) |
| 23447 | (sha256 |
| 23448 | (base32 "0vqzbmq2di1jaj6230m5i1ld0mg6wdb1c6r6i5zli54varavr7v3")) |
| 23449 | (modules '((guix build utils))) |
| 23450 | (snippet |
| 23451 | '(begin |
| 23452 | ;; This file is generated by Cython. |
| 23453 | (delete-file "src/pyclipper/_pyclipper.cpp") #t)))) |
| 23454 | (build-system python-build-system) |
| 23455 | (arguments |
| 23456 | `(#:phases |
| 23457 | (modify-phases %standard-phases |
| 23458 | (add-before 'build 'cythonize-sources |
| 23459 | (lambda _ |
| 23460 | (with-directory-excursion "src/pyclipper" |
| 23461 | (invoke "cython" "--cplus" "_pyclipper.pyx"))))))) |
| 23462 | (native-inputs |
| 23463 | (list python-cython python-setuptools-scm |
| 23464 | python-pytest python-pytest-runner)) |
| 23465 | (home-page "https://github.com/greginvm/pyclipper") |
| 23466 | (synopsis "Wrapper for Angus Johnson's Clipper library") |
| 23467 | (description |
| 23468 | "Pyclipper is a Cython wrapper for the C++ translation of the |
| 23469 | Angus Johnson's polygon clipping Clipper library (ver. 6.4.2).") |
| 23470 | (license license:expat))) |
| 23471 | |
| 23472 | (define-public python-tempdir |
| 23473 | (package |
| 23474 | (name "python-tempdir") |
| 23475 | (version "0.7.1") |
| 23476 | (source |
| 23477 | (origin |
| 23478 | (method url-fetch) |
| 23479 | (uri (pypi-uri "tempdir" version)) |
| 23480 | (sha256 |
| 23481 | (base32 |
| 23482 | "13msyyxqbicr111a294x7fsqbkl6a31fyrqflx3q7k547gnq15k8")))) |
| 23483 | (build-system python-build-system) |
| 23484 | (home-page "https://pypi.org/project/tempdir/") |
| 23485 | (arguments |
| 23486 | ;; the package has no tests |
| 23487 | '(#:tests? #f)) |
| 23488 | (synopsis "Python library for managing temporary directories") |
| 23489 | (description |
| 23490 | "This library manages temporary directories that are automatically |
| 23491 | deleted with all their contents when they are no longer needed. It is |
| 23492 | particularly convenient for use in tests.") |
| 23493 | (license license:expat))) |
| 23494 | |
| 23495 | (define-public python-tempora |
| 23496 | (package |
| 23497 | (name "python-tempora") |
| 23498 | (version "5.0.1") |
| 23499 | (source |
| 23500 | (origin |
| 23501 | (method url-fetch) |
| 23502 | (uri (pypi-uri "tempora" version)) |
| 23503 | (sha256 |
| 23504 | (base32 "09wirlk5vmxlhl9rnxp7g5qz2nsd6b0gnzk5fczbz0s8lsbz386b")))) |
| 23505 | (build-system pyproject-build-system) |
| 23506 | (arguments |
| 23507 | ;; Do not test the myproject.toml build as it tries to pull |
| 23508 | ;; dependencies from the Internet. |
| 23509 | (list #:test-flags #~'("-k" "not project"))) |
| 23510 | (native-inputs |
| 23511 | (list python-freezegun |
| 23512 | python-pytest |
| 23513 | python-pytest-black |
| 23514 | python-pytest-checkdocs |
| 23515 | python-pytest-cov |
| 23516 | python-pytest-enabler |
| 23517 | python-pytest-flake8 |
| 23518 | python-pytest-freezegun |
| 23519 | python-pytest-mypy |
| 23520 | python-setuptools-scm |
| 23521 | python-types-freezegun |
| 23522 | python-types-pytz)) |
| 23523 | (propagated-inputs (list python-jaraco-functools python-pytz)) |
| 23524 | (home-page "https://github.com/jaraco/tempora") |
| 23525 | (synopsis "Python date and time objects and routines") |
| 23526 | (description "The @code{tempora} Python library contains miscellaneous |
| 23527 | date and time related utilities and constants, routines for measuring, |
| 23528 | profiling, and getting datetime-aware @acronym{UTC, Coordinated Universal |
| 23529 | Time} values as well as an event scheduler.") |
| 23530 | (license license:expat))) |
| 23531 | |
| 23532 | (define-public python-activepapers |
| 23533 | (package |
| 23534 | (name "python-activepapers") |
| 23535 | (version "0.2.2") |
| 23536 | (source |
| 23537 | (origin |
| 23538 | (method url-fetch) |
| 23539 | (uri (pypi-uri "ActivePapers.Py" version)) |
| 23540 | (sha256 |
| 23541 | (base32 |
| 23542 | "12wkhjh90ffipjzv10swndp2xv9hd7xrxvg6v0n4n3i411pj4xb8")))) |
| 23543 | (build-system python-build-system) |
| 23544 | (arguments |
| 23545 | `(#:modules ((ice-9 ftw) |
| 23546 | (srfi srfi-1) |
| 23547 | (guix build utils) |
| 23548 | (guix build python-build-system)) |
| 23549 | |
| 23550 | #:phases |
| 23551 | (modify-phases %standard-phases |
| 23552 | (add-after 'unpack 'delete-python2-code |
| 23553 | (lambda _ |
| 23554 | (for-each delete-file |
| 23555 | '("lib/activepapers/builtins2.py" |
| 23556 | "lib/activepapers/standardlib2.py" |
| 23557 | "lib/activepapers/utility2.py")))) |
| 23558 | (replace 'check |
| 23559 | (lambda _ |
| 23560 | ;; Deactivate the test cases that download files |
| 23561 | (setenv "NO_NETWORK_ACCESS" "1") |
| 23562 | ;; For some strange reason, some tests fail if nosetests runs all |
| 23563 | ;; test modules in a single execution. They pass if each test |
| 23564 | ;; module is run individually. |
| 23565 | (for-each (lambda (filename) |
| 23566 | (invoke "nosetests" |
| 23567 | (string-append "tests/" filename))) |
| 23568 | (scandir "tests" |
| 23569 | (lambda (filename) |
| 23570 | (string-suffix? ".py" filename))))))))) |
| 23571 | (native-inputs |
| 23572 | (list python-tempdir python-nose)) |
| 23573 | (propagated-inputs |
| 23574 | (list python-h5py)) |
| 23575 | (home-page "https://www.activepapers.org/") |
| 23576 | (synopsis "Executable papers for scientific computing") |
| 23577 | (description |
| 23578 | "ActivePapers is a tool for working with executable papers, which |
| 23579 | combine data, code, and documentation in single-file packages, |
| 23580 | suitable for publication as supplementary material or on repositories |
| 23581 | such as figshare or Zenodo.") |
| 23582 | (license license:bsd-3))) |
| 23583 | |
| 23584 | (define-public python-semver |
| 23585 | (package |
| 23586 | (name "python-semver") |
| 23587 | (version "2.9.0") |
| 23588 | (source |
| 23589 | (origin |
| 23590 | (method url-fetch) |
| 23591 | (uri (pypi-uri "semver" version)) |
| 23592 | (sha256 |
| 23593 | (base32 |
| 23594 | "183kg1rhzz3hqizvphkd8hlbf1zxfx8737zhfkmqzxi71jmdw7pd")))) |
| 23595 | (build-system python-build-system) |
| 23596 | (arguments |
| 23597 | `(#:phases (modify-phases %standard-phases |
| 23598 | (replace 'check |
| 23599 | (lambda _ |
| 23600 | (delete-file "setup.cfg") |
| 23601 | (invoke "py.test")))))) |
| 23602 | (native-inputs |
| 23603 | (list python-pytest)) |
| 23604 | (home-page "https://github.com/k-bx/python-semver") |
| 23605 | (synopsis "Python helper for Semantic Versioning") |
| 23606 | (description "This package provides a Python library for |
| 23607 | @url{Semantic Versioning, http://semver.org/}.") |
| 23608 | (license license:bsd-3))) |
| 23609 | |
| 23610 | (define-public python-pyro4 |
| 23611 | (package |
| 23612 | (name "python-pyro4") |
| 23613 | (version "4.77") |
| 23614 | (source |
| 23615 | (origin |
| 23616 | (method url-fetch) |
| 23617 | (uri (pypi-uri "Pyro4" version)) |
| 23618 | (sha256 |
| 23619 | (base32 "0gsjg869y4gpy265s1gj1f2qy6jn5iz8r2bwwnq78r1r5yi15zib")))) |
| 23620 | (build-system python-build-system) |
| 23621 | (arguments |
| 23622 | '(#:tests? #f)) ;FIXME: Some tests require network access. |
| 23623 | (native-inputs |
| 23624 | (list python-cloudpickle python-dill python-msgpack)) |
| 23625 | (propagated-inputs |
| 23626 | (list python-serpent)) |
| 23627 | (home-page "https://pyro4.readthedocs.io") |
| 23628 | (synopsis "Distributed object middleware for Python") |
| 23629 | (description |
| 23630 | "Pyro enables you to build applications in which objects can talk to each |
| 23631 | other over the network. You can just use normal Python method calls to call |
| 23632 | objects on other machines, also known as remote procedure calls (RPC).") |
| 23633 | (license license:expat))) |
| 23634 | |
| 23635 | (define-public python-phonenumbers |
| 23636 | (package |
| 23637 | (name "python-phonenumbers") |
| 23638 | (version "8.9.1") |
| 23639 | (source |
| 23640 | (origin |
| 23641 | (method url-fetch) |
| 23642 | (uri (pypi-uri "phonenumbers" version)) |
| 23643 | (sha256 |
| 23644 | (base32 |
| 23645 | "03fmrgb4r8x3ykmddjs9i3zhs703in8smikj3a6447blqpimwyh1")))) |
| 23646 | (build-system python-build-system) |
| 23647 | (home-page |
| 23648 | "https://github.com/daviddrysdale/python-phonenumbers") |
| 23649 | (synopsis |
| 23650 | "Python library for dealing with international phone numbers") |
| 23651 | (description |
| 23652 | "This package provides a Python port of Google's libphonenumber library.") |
| 23653 | (license license:asl2.0))) |
| 23654 | |
| 23655 | (define-public python-heapdict |
| 23656 | (package |
| 23657 | (name "python-heapdict") |
| 23658 | (version "1.0.1") |
| 23659 | (source |
| 23660 | (origin |
| 23661 | (method url-fetch) |
| 23662 | (uri (pypi-uri "HeapDict" version)) |
| 23663 | (sha256 |
| 23664 | (base32 |
| 23665 | "1dnd7v9adqd21bf4ih2wzn9a7b41m0nccb0vbxny9n037rxzb5c4")))) |
| 23666 | (build-system python-build-system) |
| 23667 | (home-page "http://stutzbachenterprises.com/") |
| 23668 | (synopsis "Heap with decrease-key and increase-key operations") |
| 23669 | (description |
| 23670 | "heapdict implements the MutableMapping ABC, meaning it works pretty much |
| 23671 | like a regular Python @code{dict}. It’s designed to be used as a priority |
| 23672 | queue.") |
| 23673 | (license license:bsd-3))) |
| 23674 | |
| 23675 | (define-public python-zict |
| 23676 | (package |
| 23677 | (name "python-zict") |
| 23678 | (version "3.0.0") |
| 23679 | (source |
| 23680 | (origin |
| 23681 | (method url-fetch) |
| 23682 | (uri (pypi-uri "zict" version)) |
| 23683 | (sha256 |
| 23684 | (base32 |
| 23685 | "19gvr41xi5fazkzkg33kwrk70sv50hygng0cg70ayym9nriy48g3")))) |
| 23686 | (build-system pyproject-build-system) |
| 23687 | (arguments |
| 23688 | (list |
| 23689 | #:test-flags |
| 23690 | ;; This uses "importorskip", but it won't skip. |
| 23691 | '(list "--ignore=tests/test_lmdb.py"))) |
| 23692 | (propagated-inputs |
| 23693 | (list python-heapdict)) |
| 23694 | (native-inputs |
| 23695 | (list python-pytest |
| 23696 | python-pytest-asyncio |
| 23697 | python-pytest-repeat |
| 23698 | python-pytest-timeout)) |
| 23699 | (home-page "https://zict.readthedocs.io/en/latest/") |
| 23700 | (synopsis "Composable mutable mapping tools") |
| 23701 | (description "This package provides abstract @code{MutableMapping} classes |
| 23702 | that consume and build on other @code{MutableMappings}. Several of these can |
| 23703 | be composed with one another to form intuitive interfaces over complex storage |
| 23704 | systems policies.") |
| 23705 | (license license:bsd-3))) |
| 23706 | |
| 23707 | (define-public python-send2trash |
| 23708 | (package |
| 23709 | (name "python-send2trash") |
| 23710 | (version "1.8.0") |
| 23711 | (source |
| 23712 | (origin (method git-fetch) |
| 23713 | ;; Source tarball on PyPI doesn't include tests. |
| 23714 | (uri (git-reference |
| 23715 | (url "https://github.com/arsenetar/send2trash") |
| 23716 | (commit version))) |
| 23717 | (file-name (git-file-name name version)) |
| 23718 | (sha256 |
| 23719 | (base32 |
| 23720 | "1k7dfypaaq4f36fbciaasv72j6wgjihw8d88axmz9c329bz8v5qx")))) |
| 23721 | (build-system python-build-system) |
| 23722 | (arguments |
| 23723 | '(#:phases |
| 23724 | (modify-phases %standard-phases |
| 23725 | (add-before 'check 'pre-check |
| 23726 | (lambda _ |
| 23727 | (setenv "HOME" "/tmp"))) |
| 23728 | (replace 'check |
| 23729 | (lambda* (#:key tests? #:allow-other-keys) |
| 23730 | (when tests? |
| 23731 | (invoke "pytest" "-vv"))))))) |
| 23732 | (native-inputs (list python-pytest)) |
| 23733 | (home-page "https://github.com/arsenetar/send2trash") |
| 23734 | (synopsis "Send files to the user's @file{~/Trash} directory") |
| 23735 | (description "This package provides a Python library to send files to the |
| 23736 | user's @file{~/Trash} directory.") |
| 23737 | (license license:bsd-3))) |
| 23738 | |
| 23739 | (define-public python-pyfavicon |
| 23740 | (package |
| 23741 | (name "python-pyfavicon") |
| 23742 | (version "0.1.1") |
| 23743 | (source |
| 23744 | (origin |
| 23745 | (method url-fetch) |
| 23746 | (uri (pypi-uri "pyfavicon" version)) |
| 23747 | (sha256 |
| 23748 | (base32 "15wfpa99hvcfsv8j0m8iprmydi2p4qkhm86qfx485244y0ia5mgx")))) |
| 23749 | (build-system python-build-system) |
| 23750 | (arguments |
| 23751 | ;; There are no tests in the PyPI tarball and the tests from the |
| 23752 | ;; repository require online data. |
| 23753 | '(#:tests? #f)) |
| 23754 | (propagated-inputs |
| 23755 | (list python-aiohttp python-beautifulsoup4 python-pillow)) |
| 23756 | (home-page "https://github.com/bilelmoussaoui/pyfavicon") |
| 23757 | (synopsis "Async favicon fetcher") |
| 23758 | (description |
| 23759 | "@code{pyfavicon} is an async favicon fetcher.") |
| 23760 | (license license:expat))) |
| 23761 | |
| 23762 | (define-public python-yamllint |
| 23763 | (package |
| 23764 | (name "python-yamllint") |
| 23765 | (version "1.31.0") |
| 23766 | (source |
| 23767 | (origin |
| 23768 | (method url-fetch) |
| 23769 | (uri (pypi-uri "yamllint" version)) |
| 23770 | (sha256 |
| 23771 | (base32 "0rbs7xq7y7bp3k75z7jamrdrrfyp95hifsz0hwm1cgkk5z8z30rd")))) |
| 23772 | (build-system python-build-system) |
| 23773 | (propagated-inputs |
| 23774 | (list python-pathspec python-pyyaml python-setuptools)) |
| 23775 | (home-page "https://github.com/adrienverge/yamllint") |
| 23776 | (synopsis "Linter for YAML files") |
| 23777 | (description |
| 23778 | "Yamllint is a linter for YAML files. yamllint does not only check for |
| 23779 | syntax validity, but for weirdnesses like key repetition and cosmetic problems |
| 23780 | such as lines length, trailing spaces, indentation, etc.") |
| 23781 | (license license:gpl3+))) |
| 23782 | |
| 23783 | (define-public python-yapf |
| 23784 | (package |
| 23785 | (name "python-yapf") |
| 23786 | (version "0.29.0") |
| 23787 | (source |
| 23788 | (origin |
| 23789 | (method url-fetch) |
| 23790 | (uri (pypi-uri "yapf" version)) |
| 23791 | (sha256 |
| 23792 | (base32 |
| 23793 | "1pj3xzblmbssshi889b6n9hwqbjpabw6j0fimlng2sshd3226bki")))) |
| 23794 | (build-system python-build-system) |
| 23795 | (home-page "https://github.com/google/yapf") |
| 23796 | (synopsis "Formatter for Python code") |
| 23797 | (description "YAPF is a formatter for Python code. It's based off of |
| 23798 | @dfn{clang-format}, developed by Daniel Jasper. In essence, the algorithm |
| 23799 | takes the code and reformats it to the best formatting that conforms to the |
| 23800 | style guide, even if the original code didn't violate the style guide.") |
| 23801 | (license license:asl2.0))) |
| 23802 | |
| 23803 | (define-public python-yq |
| 23804 | (package |
| 23805 | (name "python-yq") |
| 23806 | (version "3.1.0") |
| 23807 | (source |
| 23808 | (origin |
| 23809 | (method url-fetch) |
| 23810 | (uri (pypi-uri "yq" version)) |
| 23811 | (sha256 |
| 23812 | (base32 |
| 23813 | "1wklgs3d9si475nffw9agq5kgk8bdicbsmlj4sx4kiw64ji4ma1h")))) |
| 23814 | (build-system python-build-system) |
| 23815 | (arguments |
| 23816 | '(#:phases |
| 23817 | (modify-phases %standard-phases |
| 23818 | (add-after 'unpack 'patch |
| 23819 | (lambda* (#:key inputs #:allow-other-keys) |
| 23820 | (substitute* "yq/__init__.py" |
| 23821 | (("Popen\\(\\[\"jq") |
| 23822 | (string-append |
| 23823 | "Popen([\"" |
| 23824 | (assoc-ref inputs "jq") |
| 23825 | "/bin/jq"))) |
| 23826 | #t))))) |
| 23827 | (inputs |
| 23828 | (list python-argcomplete python-pyyaml python-xmltodict python-toml jq)) |
| 23829 | (native-inputs |
| 23830 | (list python-coverage python-flake8 python-setuptools-scm python-wheel)) |
| 23831 | (home-page "https://github.com/kislyuk/yq") |
| 23832 | (synopsis "Command-line YAML/XML processor") |
| 23833 | (description |
| 23834 | "This package provides @command{yq} and @command{xq} for processing YAML |
| 23835 | and XML respectively. The processing is done through @command{jq}, @command{jq} |
| 23836 | filters can be used to process the data as it passes through.") |
| 23837 | (license license:asl2.0))) |
| 23838 | |
| 23839 | (define-public python-gyp |
| 23840 | (let ((commit "9d09418933ea2f75cc416e5ce38d15f62acd5c9a") |
| 23841 | (revision "1")) |
| 23842 | (package |
| 23843 | (name "python-gyp") |
| 23844 | ;; Google does not release versions, |
| 23845 | ;; based on second most recent commit date. |
| 23846 | (version (git-version "0.0.0" revision commit)) |
| 23847 | (source |
| 23848 | (origin |
| 23849 | ;; Google does not release tarballs, |
| 23850 | ;; git checkout is needed. |
| 23851 | (method git-fetch) |
| 23852 | (uri (git-reference |
| 23853 | (url "https://chromium.googlesource.com/external/gyp") |
| 23854 | (commit commit))) |
| 23855 | (file-name (git-file-name name version)) |
| 23856 | (sha256 |
| 23857 | (base32 |
| 23858 | "0ay99rc5msqjpjl7fy1l69f8mvn08wnh2pgr08ijdih9z88xaa5x")))) |
| 23859 | (build-system python-build-system) |
| 23860 | (propagated-inputs (list python-six)) |
| 23861 | (home-page "https://gyp.gsrc.io/") |
| 23862 | (synopsis "GYP is a Meta-Build system") |
| 23863 | (description |
| 23864 | "GYP builds build systems for large, cross platform applications. |
| 23865 | It can be used to generate XCode projects, Visual Studio projects, Ninja build |
| 23866 | files, and Makefiles.") |
| 23867 | (license license:bsd-3)))) |
| 23868 | |
| 23869 | (define-public python-whatever |
| 23870 | (package |
| 23871 | (name "python-whatever") |
| 23872 | (version "0.6") |
| 23873 | (source |
| 23874 | (origin |
| 23875 | (method git-fetch) |
| 23876 | (uri (git-reference |
| 23877 | (url "https://github.com/Suor/whatever") |
| 23878 | (commit version))) |
| 23879 | (file-name (git-file-name name version)) |
| 23880 | (sha256 |
| 23881 | (base32 "1q7ajgqjfivxqsqgnhp4lc4p6jxyh4zprcsdbpd6dw54inaf0av5")))) |
| 23882 | (build-system pyproject-build-system) |
| 23883 | (native-inputs |
| 23884 | (list python-pytest)) |
| 23885 | (home-page "https://github.com/Suor/whatever") |
| 23886 | (synopsis "Make anonymous functions by partial application of operators") |
| 23887 | (description "@code{whatever} provides an easy way to make anonymous |
| 23888 | functions by partial application of operators.") |
| 23889 | (license license:bsd-3))) |
| 23890 | |
| 23891 | (define-public python-funcy |
| 23892 | (package |
| 23893 | (name "python-funcy") |
| 23894 | (version "1.11") |
| 23895 | (source |
| 23896 | (origin |
| 23897 | (method git-fetch) |
| 23898 | (uri (git-reference |
| 23899 | (url "https://github.com/Suor/funcy") |
| 23900 | (commit version))) |
| 23901 | (sha256 |
| 23902 | (base32 "1s98vkjnq3zq71737hn8xa15kssvmy1sfzsll3vrlv53902418mw")) |
| 23903 | (file-name (git-file-name name version)))) |
| 23904 | (build-system pyproject-build-system) |
| 23905 | (native-inputs |
| 23906 | (list python-pytest python-whatever)) |
| 23907 | (home-page "https://github.com/Suor/funcy") |
| 23908 | (synopsis "Functional tools") |
| 23909 | (description "@code{funcy} is a library that provides functional tools. |
| 23910 | Examples are: |
| 23911 | @enumerate |
| 23912 | @item merge - Merges collections of the same type |
| 23913 | @item walk - Type-preserving map |
| 23914 | @item select - Selects a part of a collection |
| 23915 | @item take - Takes the first n items of a collection |
| 23916 | @item first - Takes the first item of a collection |
| 23917 | @item remove - Predicated-removes items of a collection |
| 23918 | @item concat - Concatenates two collections |
| 23919 | @item flatten - Flattens a collection with subcollections |
| 23920 | @item distinct - Returns only distinct items |
| 23921 | @item split - Predicated-splits a collection |
| 23922 | @item split_at - Splits a collection at a given item |
| 23923 | @item group_by - Groups items by group |
| 23924 | @item pairwise - Pairs off adjacent items |
| 23925 | @item partial - Partially-applies a function |
| 23926 | @item curry - Curries a function |
| 23927 | @item compose - Composes functions |
| 23928 | @item complement - Complements a predicate |
| 23929 | @item all_fn - \"all\" with predicate |
| 23930 | @end enumerate") |
| 23931 | (license license:bsd-3))) |
| 23932 | |
| 23933 | (define-public python-isoweek |
| 23934 | (package |
| 23935 | (name "python-isoweek") |
| 23936 | (version "1.3.3") |
| 23937 | (source |
| 23938 | (origin |
| 23939 | (method url-fetch) |
| 23940 | (uri (pypi-uri "isoweek" version)) |
| 23941 | (sha256 |
| 23942 | (base32 |
| 23943 | "1s7zsf0pab0l9gn6456qadnz5i5h90hafcjwnhx5mq23qjxggwvk")))) |
| 23944 | (build-system python-build-system) |
| 23945 | (home-page "https://github.com/gisle/isoweek") |
| 23946 | (synopsis "Objects representing a week") |
| 23947 | (description "The @code{isoweek} module provide the class Week that |
| 23948 | implements the week definition of ISO 8601. This standard also defines |
| 23949 | a notation for identifying weeks; yyyyWww (where the W is a literal). |
| 23950 | Week instances stringify to this form.") |
| 23951 | (license license:bsd-3))) |
| 23952 | |
| 23953 | (define-public python-pyzbar |
| 23954 | (package |
| 23955 | (name "python-pyzbar") |
| 23956 | (version "0.1.8") |
| 23957 | (source |
| 23958 | (origin |
| 23959 | ;; There's no source tarball on PyPI. |
| 23960 | (method git-fetch) |
| 23961 | (uri (git-reference |
| 23962 | (url "https://github.com/NaturalHistoryMuseum/pyzbar") |
| 23963 | (commit (string-append "v" version)))) |
| 23964 | (file-name (git-file-name name version)) |
| 23965 | (sha256 |
| 23966 | (base32 "1fqlfg5p2v9lzzzi0si2sz54lblprk6jjjhjw54b64lp58c1yhsl")))) |
| 23967 | (build-system python-build-system) |
| 23968 | (arguments |
| 23969 | `(#:phases |
| 23970 | (modify-phases %standard-phases |
| 23971 | (add-after 'unpack 'remove-failing-test |
| 23972 | (lambda _ |
| 23973 | ;; This tests if find_library was called once, but we remove |
| 23974 | ;; the call in the stage below to make the library find libzbar. |
| 23975 | (delete-file "pyzbar/tests/test_zbar_library.py") |
| 23976 | #t)) |
| 23977 | (add-before 'build 'set-library-file-name |
| 23978 | (lambda* (#:key inputs #:allow-other-keys) |
| 23979 | (let ((libzbar (assoc-ref inputs "zbar"))) |
| 23980 | (substitute* "pyzbar/zbar_library.py" |
| 23981 | (("find_library\\('zbar'\\)") |
| 23982 | (string-append "'" libzbar "/lib/libzbar.so.0'"))) |
| 23983 | #t)))))) |
| 23984 | (native-inputs |
| 23985 | (list pkg-config python-numpy python-pillow)) |
| 23986 | (inputs |
| 23987 | (list zbar)) |
| 23988 | (home-page "https://github.com/NaturalHistoryMuseum/pyzbar/") |
| 23989 | (synopsis "Read one-dimensional barcodes and QR codes") |
| 23990 | (description |
| 23991 | "Read one-dimensional barcodes and QR codes using the zbar library. |
| 23992 | |
| 23993 | Features: |
| 23994 | |
| 23995 | @itemize |
| 23996 | @item Pure python |
| 23997 | @item Works with PIL / Pillow images, OpenCV / numpy ndarrays, and raw bytes |
| 23998 | @item Decodes locations of barcodes |
| 23999 | @item No dependencies, other than the zbar library itself |
| 24000 | @end itemize") |
| 24001 | (license license:expat))) |
| 24002 | |
| 24003 | (define-public python-tokenize-rt |
| 24004 | (package |
| 24005 | (name "python-tokenize-rt") |
| 24006 | (version "2.0.1") |
| 24007 | (source |
| 24008 | (origin |
| 24009 | (method url-fetch) |
| 24010 | (uri (pypi-uri "tokenize-rt" version)) |
| 24011 | (sha256 |
| 24012 | (base32 |
| 24013 | "1yjvbz7rvrz31zjyax1cgy3xhf4wb3j18jwnj4bnl77ca4gliyiw")))) |
| 24014 | (build-system python-build-system) |
| 24015 | (home-page "https://github.com/asottile/tokenize-rt") |
| 24016 | (synopsis "Wrapper around the stdlib tokenize which roundtrips") |
| 24017 | (description |
| 24018 | "This Python library is a wrapper around @code{tokenize} from the Python |
| 24019 | standard library. It provides two additional tokens @code{ESCAPED_NL} and |
| 24020 | @code{UNIMPORTANT_WS}, and a @code{Token} data type. Use @code{src_to_tokens} |
| 24021 | and @code{tokens_to_src} to roundtrip.") |
| 24022 | (license license:expat))) |
| 24023 | |
| 24024 | (define-public python-future-fstrings |
| 24025 | (package |
| 24026 | (name "python-future-fstrings") |
| 24027 | (version "0.4.1") |
| 24028 | (source |
| 24029 | (origin |
| 24030 | (method url-fetch) |
| 24031 | (uri (pypi-uri "future_fstrings" version)) |
| 24032 | (sha256 |
| 24033 | (base32 |
| 24034 | "0ydxqz2dvns44g55p8ix2x18qkfk3aaz0m0dc70f3g6n8js35h47")))) |
| 24035 | (build-system python-build-system) |
| 24036 | (propagated-inputs |
| 24037 | (list python-tokenize-rt)) |
| 24038 | (home-page "https://github.com/asottile/future-fstrings") |
| 24039 | (synopsis "Backport of fstrings to Python < 3.6") |
| 24040 | (description |
| 24041 | "This package provides a UTF-8 compatible encoding |
| 24042 | @code{future_fstrings}, which performs source manipulation. It decodes the |
| 24043 | source bytes using the UTF-8 encoding and then rewrites Python 3.6 style |
| 24044 | @code{f} strings.") |
| 24045 | (license license:expat))) |
| 24046 | |
| 24047 | (define-public python-typed-ast |
| 24048 | (package |
| 24049 | (name "python-typed-ast") |
| 24050 | (version "1.5.1") |
| 24051 | (source |
| 24052 | (origin |
| 24053 | (method git-fetch) |
| 24054 | (uri (git-reference |
| 24055 | (url "https://github.com/python/typed_ast") |
| 24056 | (commit version))) |
| 24057 | (sha256 |
| 24058 | (base32 "1xfcs5246c8v5600aaa8zs7ii4sxb62q6r3sb2fgazyjx97wrxd9")) |
| 24059 | (file-name (git-file-name name version)))) |
| 24060 | (build-system python-build-system) |
| 24061 | (arguments |
| 24062 | `(#:phases |
| 24063 | (modify-phases %standard-phases |
| 24064 | (replace 'check |
| 24065 | (lambda _ |
| 24066 | (invoke "pytest")))))) |
| 24067 | (native-inputs (list python-pytest)) |
| 24068 | (home-page "https://github.com/python/typed_ast") |
| 24069 | (synopsis "Fork of Python @code{ast} modules with type comment support") |
| 24070 | (description "This package provides a parser similar to the standard |
| 24071 | @code{ast} library. Unlike @code{ast}, the parsers in @code{typed_ast} |
| 24072 | include PEP 484 type comments and are independent of the version of Python |
| 24073 | under which they are run. The @code{typed_ast} parsers produce the standard |
| 24074 | Python AST (plus type comments), and are both fast and correct, as they are |
| 24075 | based on the CPython 2.7 and 3.7 parsers.") |
| 24076 | ;; See the file "LICENSE" for the details. |
| 24077 | (license (list license:psfl |
| 24078 | license:asl2.0 |
| 24079 | license:expat)))) ;ast27/Parser/spark.py |
| 24080 | |
| 24081 | (define-public python-typer |
| 24082 | (package |
| 24083 | (name "python-typer") |
| 24084 | (version "0.6.1") |
| 24085 | (source |
| 24086 | (origin |
| 24087 | (method git-fetch) |
| 24088 | (uri (git-reference |
| 24089 | (url "https://github.com/tiangolo/typer") |
| 24090 | (commit version))) |
| 24091 | (file-name (git-file-name name version)) |
| 24092 | (sha256 |
| 24093 | (base32 "1knv353qhkl2imav3jfp6bgq47m8wkkqhq1dzmqg2sv8rsy7zgl7")))) |
| 24094 | (build-system pyproject-build-system) |
| 24095 | (arguments |
| 24096 | (list |
| 24097 | #:test-flags |
| 24098 | '(let ((disabled-tests (list "test_show_completion" |
| 24099 | "test_install_completion"))) |
| 24100 | (list "-k" (string-append "not " |
| 24101 | (string-join disabled-tests |
| 24102 | " and not ")))) |
| 24103 | #:phases |
| 24104 | #~(modify-phases %standard-phases |
| 24105 | ;; Unfortunately, this doesn't seem to be enough to fix these two |
| 24106 | ;; tests, but we'll patch this anyway. |
| 24107 | (add-after 'unpack 'patch-shell-reference |
| 24108 | (lambda _ |
| 24109 | (substitute* "tests/test_completion/test_completion.py" |
| 24110 | (("\"bash\"") (string-append "\"" (which "bash") "\"")) |
| 24111 | (("\"/bin/bash\"") |
| 24112 | (string-append "\"" (which "bash") "\""))))) |
| 24113 | (add-before 'check 'pre-check |
| 24114 | (lambda* (#:key tests? #:allow-other-keys) |
| 24115 | (when tests? |
| 24116 | (setenv "HOME" "/tmp") ; some tests need it |
| 24117 | ;; This is for completion tests |
| 24118 | (with-output-to-file "/tmp/.bashrc" |
| 24119 | (lambda _ (display "# dummy"))))))))) |
| 24120 | (propagated-inputs |
| 24121 | (list python-click)) |
| 24122 | (native-inputs |
| 24123 | (list python-coverage python-flit python-pytest python-rich |
| 24124 | python-shellingham)) |
| 24125 | (home-page "https://github.com/tiangolo/typer") |
| 24126 | (synopsis "Typer builds CLI based on Python type hints") |
| 24127 | (description |
| 24128 | "Typer is a library for building CLI applications. It's based on Python |
| 24129 | 3.6+ type hints.") |
| 24130 | ;; MIT license |
| 24131 | (license license:expat))) |
| 24132 | |
| 24133 | (define-public python-typeguard |
| 24134 | (package |
| 24135 | (name "python-typeguard") |
| 24136 | (version "2.13.3") |
| 24137 | (source |
| 24138 | (origin |
| 24139 | (method url-fetch) |
| 24140 | (uri (pypi-uri "typeguard" version)) |
| 24141 | (sha256 |
| 24142 | (base32 "1i5qzcyw2715h1g1hvj7fxykck2bkxyshpngjr3nfcx1lf6smv80")) |
| 24143 | (patches (search-patches "python-typeguard-python3.10.patch")))) |
| 24144 | (build-system python-build-system) |
| 24145 | (arguments |
| 24146 | (list |
| 24147 | #:phases |
| 24148 | #~(modify-phases %standard-phases |
| 24149 | (replace 'check |
| 24150 | (lambda* (#:key tests? #:allow-other-keys) |
| 24151 | (when tests? |
| 24152 | (invoke "pytest" "-vv" "-k" |
| 24153 | ;; XXX: These fail when installed as a library: |
| 24154 | ;; https://github.com/agronholm/typeguard/issues/176 |
| 24155 | "not usefixtures and not test_cached_module"))))))) |
| 24156 | (native-inputs |
| 24157 | (list python-mypy python-pytest python-typing-extensions)) |
| 24158 | (home-page "https://github.com/agronholm/typeguard") |
| 24159 | (synopsis "Run-time type checker for Python") |
| 24160 | (description |
| 24161 | "@code{typeguard} provides run-time type checking for functions defined |
| 24162 | with PEP 484 argument (and return) type annotations.") |
| 24163 | (license license:expat))) |
| 24164 | |
| 24165 | (define-public bpython |
| 24166 | (package |
| 24167 | (name "bpython") |
| 24168 | (version "0.24") |
| 24169 | (source |
| 24170 | (origin |
| 24171 | (method url-fetch) |
| 24172 | (uri (pypi-uri "bpython" version)) |
| 24173 | (sha256 |
| 24174 | (base32 "1g9xzl49skghd9q2a8b71gg1n97lfnj9in2kzcmzsj4cgbynywwq")))) |
| 24175 | (build-system python-build-system) |
| 24176 | (arguments |
| 24177 | `(#:phases |
| 24178 | (modify-phases %standard-phases |
| 24179 | (add-after 'unpack 'remove-failing-test |
| 24180 | (lambda _ |
| 24181 | ;; Remove failing test. FIXME: make it pass |
| 24182 | (delete-file "bpython/test/test_args.py") |
| 24183 | #t)) |
| 24184 | (add-after 'wrap 'add-aliases |
| 24185 | ;; for symmetry to bpython2, add symlinks bypthon3, bpdb3, etc. |
| 24186 | (lambda* (#:key outputs #:allow-other-keys) |
| 24187 | (let ((out (assoc-ref outputs "out"))) |
| 24188 | (for-each |
| 24189 | (lambda (old new) |
| 24190 | (symlink old (string-append out "/bin/" new))) |
| 24191 | '("bpython" "bpython-curses" "bpython-urwid" "bpdb") |
| 24192 | '("bpython3" "bpython3-curses" "bpython3-urwid" "bpdb3"))) |
| 24193 | #t))))) |
| 24194 | (propagated-inputs |
| 24195 | (list python-pygments |
| 24196 | python-requests |
| 24197 | python-curtsies |
| 24198 | python-greenlet |
| 24199 | python-cwcwidth |
| 24200 | python-pyxdg |
| 24201 | ;; optional dependencies |
| 24202 | python-urwid ; for bpython-urwid only |
| 24203 | python-watchdog |
| 24204 | python-jedi)) |
| 24205 | (native-inputs |
| 24206 | (list python-sphinx python-mock python-tox python-wheel)) |
| 24207 | (home-page "https://bpython-interpreter.org/") |
| 24208 | (synopsis "Fancy interface to the Python interpreter") |
| 24209 | (description "Bpython is a fancy interface to the Python |
| 24210 | interpreter. bpython's main features are |
| 24211 | |
| 24212 | @enumerate |
| 24213 | @item in-line syntax highlighting, |
| 24214 | @item readline-like autocomplete with suggestions displayed as you type, |
| 24215 | @item expected parameter list for any Python function, |
| 24216 | @item \"rewind\" function to pop the last line of code from memory and |
| 24217 | re-evaluate, |
| 24218 | @item send the code you've entered off to a pastebin, |
| 24219 | @item save the code you've entered to a file, and |
| 24220 | @item auto-indentation. |
| 24221 | @end enumerate") |
| 24222 | (license license:expat))) |
| 24223 | |
| 24224 | (define-public python-pyinotify |
| 24225 | (package |
| 24226 | (name "python-pyinotify") |
| 24227 | (version "0.9.6") |
| 24228 | (source (origin |
| 24229 | (method url-fetch) |
| 24230 | (uri (pypi-uri "pyinotify" version)) |
| 24231 | (sha256 |
| 24232 | (base32 |
| 24233 | "1x3i9wmzw33fpkis203alygfnrkcmq9w1aydcm887jh6frfqm6cw")))) |
| 24234 | (build-system python-build-system) |
| 24235 | (arguments `(#:tests? #f)) ;no tests |
| 24236 | (home-page "https://github.com/seb-m/pyinotify") |
| 24237 | (synopsis "Python library for monitoring inotify events") |
| 24238 | (description |
| 24239 | "@code{pyinotify} provides a Python interface for monitoring |
| 24240 | file system events on Linux.") |
| 24241 | (license license:expat))) |
| 24242 | |
| 24243 | |
| 24244 | (define-public python-more-itertools |
| 24245 | (package |
| 24246 | (name "python-more-itertools") |
| 24247 | (version "8.2.0") |
| 24248 | (source |
| 24249 | (origin |
| 24250 | (method url-fetch) |
| 24251 | (uri (pypi-uri "more-itertools" version)) |
| 24252 | (sha256 |
| 24253 | (base32 |
| 24254 | "01x5nwm1zxmnd06cllbdd095xxc2nd25ing1a726m2kd30rbkpdi")))) |
| 24255 | (build-system python-build-system) |
| 24256 | (home-page "https://github.com/erikrose/more-itertools") |
| 24257 | (synopsis "More routines for operating on iterables, beyond itertools") |
| 24258 | (description "Python's built-in @code{itertools} module implements a |
| 24259 | number of iterator building blocks inspired by constructs from APL, Haskell, |
| 24260 | and SML. @code{more-itertools} includes additional building blocks for |
| 24261 | working with iterables.") |
| 24262 | (license license:expat))) |
| 24263 | |
| 24264 | (define-public python-latexcodec |
| 24265 | (package |
| 24266 | (name "python-latexcodec") |
| 24267 | (version "2.0.1") |
| 24268 | (source |
| 24269 | (origin |
| 24270 | (method url-fetch) |
| 24271 | (uri (pypi-uri "latexcodec" version)) |
| 24272 | (sha256 |
| 24273 | (base32 "16pynfnn8y8xp55yp06i721fccv5dlx9ba6k5bzcwq9j6wf5b8ia")))) |
| 24274 | (build-system python-build-system) |
| 24275 | (propagated-inputs |
| 24276 | (list python-six)) |
| 24277 | (home-page "https://readthedocs.org/projects/latexcodec/") |
| 24278 | (synopsis "Work with LaTeX code in Python") |
| 24279 | (description "Lexer and codec to work with LaTeX code in Python.") |
| 24280 | (license license:expat))) |
| 24281 | |
| 24282 | (define-public python-pybloom-live |
| 24283 | (package |
| 24284 | (name "python-pybloom-live") |
| 24285 | (version "4.0.0") |
| 24286 | (source (origin |
| 24287 | (method url-fetch) |
| 24288 | (uri (pypi-uri "pybloom_live" version)) |
| 24289 | (sha256 |
| 24290 | (base32 |
| 24291 | "040i6bjqvl33j30v865shsk30s3h7f16pqwiaj5kig857dfmqm4r")))) |
| 24292 | (build-system pyproject-build-system) |
| 24293 | (propagated-inputs (list python-bitarray python-xxhash)) |
| 24294 | (native-inputs (list python-pytest)) |
| 24295 | (home-page "https://github.com/joseph-fox/python-bloomfilter") |
| 24296 | (synopsis "Bloom filter") |
| 24297 | (description "This package provides a scalable Bloom filter implemented in |
| 24298 | Python.") |
| 24299 | (license license:expat))) |
| 24300 | |
| 24301 | (define-public python-pybtex |
| 24302 | (package |
| 24303 | (name "python-pybtex") |
| 24304 | (version "0.24.0") |
| 24305 | (source |
| 24306 | (origin |
| 24307 | (method url-fetch) |
| 24308 | (uri (pypi-uri "pybtex" version)) |
| 24309 | (sha256 |
| 24310 | (base32 "0ma7sc10hk6caq5zghbk865vrlaynz7x5z630z0facqpnqssx3l1")))) |
| 24311 | (build-system python-build-system) |
| 24312 | (native-inputs |
| 24313 | (list python-pytest)) |
| 24314 | (propagated-inputs |
| 24315 | (list python-latexcodec python-pyyaml python-six)) |
| 24316 | (arguments |
| 24317 | (list |
| 24318 | #:phases #~(modify-phases %standard-phases |
| 24319 | (replace 'check |
| 24320 | (lambda* (#:key tests? #:allow-other-keys) |
| 24321 | (when tests? |
| 24322 | (invoke "pytest"))))))) |
| 24323 | (home-page "https://pybtex.org/") |
| 24324 | (synopsis "BibTeX-compatible bibliography processor") |
| 24325 | (description "Pybtex is a BibTeX-compatible bibliography processor written |
| 24326 | in Python. You can simply type pybtex instead of bibtex.") |
| 24327 | (license license:expat))) |
| 24328 | |
| 24329 | (define-public python-onetimepass |
| 24330 | (package |
| 24331 | (name "python-onetimepass") |
| 24332 | (version "1.0.1") |
| 24333 | (source |
| 24334 | (origin |
| 24335 | (method url-fetch) |
| 24336 | (uri (pypi-uri "onetimepass" version)) |
| 24337 | (sha256 |
| 24338 | (base32 "09vagxgbq78wvq4xbikmn2hpqqsa2i96kqsmphf7dqynfv0dlsd5")))) |
| 24339 | (build-system python-build-system) |
| 24340 | (propagated-inputs (list python-six)) |
| 24341 | (home-page "https://github.com/tadeck/onetimepass/") |
| 24342 | (synopsis "One-time password library") |
| 24343 | (description "Python one-time password library for HMAC-based (HOTP) and |
| 24344 | time-based (TOTP) passwords.") |
| 24345 | (license license:expat))) |
| 24346 | |
| 24347 | (define-public python-parso |
| 24348 | (package |
| 24349 | (name "python-parso") |
| 24350 | (version "0.8.3") |
| 24351 | (source |
| 24352 | (origin |
| 24353 | (method url-fetch) |
| 24354 | (uri (pypi-uri "parso" version)) |
| 24355 | (sha256 |
| 24356 | (base32 "185gkxq92kqiw2h5zp1cmyn04055x0lix4hmi5c077xm1clvw1wc")) |
| 24357 | (patches |
| 24358 | (search-patches "python-parso-unit-tests-in-3.10.patch")))) |
| 24359 | (native-inputs |
| 24360 | (list python-pytest)) |
| 24361 | (build-system python-build-system) |
| 24362 | (arguments |
| 24363 | `(#:phases |
| 24364 | (modify-phases %standard-phases |
| 24365 | (replace 'check |
| 24366 | (lambda* (#:key tests? #:allow-other-keys) |
| 24367 | (when tests? |
| 24368 | (invoke "pytest" "-vv"))))))) |
| 24369 | (home-page "https://github.com/davidhalter/parso") |
| 24370 | (synopsis "Python Parser") |
| 24371 | (description "Parso is a Python parser that supports error recovery and |
| 24372 | round-trip parsing for different Python versions (in multiple Python versions). |
| 24373 | Parso is also able to list multiple syntax errors in your Python file.") |
| 24374 | (license license:expat))) |
| 24375 | |
| 24376 | (define-public python-async-generator |
| 24377 | (package |
| 24378 | (name "python-async-generator") |
| 24379 | (version "1.10") |
| 24380 | (source |
| 24381 | (origin |
| 24382 | (method url-fetch) |
| 24383 | (uri (pypi-uri "async_generator" version)) |
| 24384 | (sha256 |
| 24385 | (base32 |
| 24386 | "0i11f6z6lix8ixi3vsk6s76zvvpmgrw6zjrcwjm0m4hjdh83vfvf")))) |
| 24387 | (build-system python-build-system) |
| 24388 | (native-inputs |
| 24389 | (list python-pytest)) |
| 24390 | (home-page "https://github.com/python-trio/async_generator") |
| 24391 | (synopsis "Async generators and context managers for Python 3.5+") |
| 24392 | (description "@code{async_generator} back-ports Python 3.6's native async |
| 24393 | generators and Python 3.7's context managers into Python 3.5.") |
| 24394 | ;; Dual licensed. |
| 24395 | (license (list license:expat license:asl2.0)))) |
| 24396 | |
| 24397 | (define-public python-async-timeout |
| 24398 | (package |
| 24399 | (name "python-async-timeout") |
| 24400 | (version "4.0.2") |
| 24401 | (source |
| 24402 | (origin |
| 24403 | (method url-fetch) |
| 24404 | (uri (pypi-uri "async-timeout" version)) |
| 24405 | (sha256 |
| 24406 | (base32 |
| 24407 | "05bbjz16n1a7m1s3lmcwri2x5rc7hnh6f2hdr2lbflnv1mjf2qr1")))) |
| 24408 | (build-system python-build-system) |
| 24409 | (home-page "https://github.com/aio-libs/async-timeout") |
| 24410 | (synopsis "Timeout context manager for asyncio programs") |
| 24411 | (description "@code{async-timeout} provides a timeout timeout context |
| 24412 | manager compatible with @code{asyncio}.") |
| 24413 | (license license:asl2.0))) |
| 24414 | |
| 24415 | (define-public python-glob2 |
| 24416 | (package |
| 24417 | (name "python-glob2") |
| 24418 | (version "0.7") |
| 24419 | (source |
| 24420 | (origin |
| 24421 | (method git-fetch) |
| 24422 | (uri (git-reference |
| 24423 | (url "https://github.com/miracle2k/python-glob2") |
| 24424 | (commit (string-append "v" version)))) |
| 24425 | (file-name (git-file-name name version)) |
| 24426 | (sha256 |
| 24427 | (base32 "160nh2ay9lw2hi0rixpzb2k87r6ql56k0j2cm87lqz8xc8zbw919")))) |
| 24428 | (build-system python-build-system) |
| 24429 | (home-page "https://github.com/miracle2k/python-glob2/") |
| 24430 | (synopsis "Extended Version of the python buildin glob module") |
| 24431 | (description "This is an extended version of the Python |
| 24432 | @url{http://docs.python.org/library/glob.html, built-in glob module} which |
| 24433 | adds: |
| 24434 | |
| 24435 | @itemize |
| 24436 | @item The ability to capture the text matched by glob patterns, and return |
| 24437 | those matches alongside the file names. |
| 24438 | @item A recursive @code{**} globbing syntax, akin for example to the |
| 24439 | @code{globstar} option of Bash. |
| 24440 | @item The ability to replace the file system functions used, in order to glob |
| 24441 | on virtual file systems. |
| 24442 | @item Compatible with Python 2 and Python 3 (tested with 3.3). |
| 24443 | @end itemize |
| 24444 | |
| 24445 | Glob2 currently based on the glob code from Python 3.3.1.") |
| 24446 | (license license:bsd-2))) |
| 24447 | |
| 24448 | (define-public python-gipc |
| 24449 | (package |
| 24450 | (name "python-gipc") |
| 24451 | (version "0.6.0") |
| 24452 | (source |
| 24453 | (origin |
| 24454 | (method url-fetch) |
| 24455 | (uri (pypi-uri "gipc" version ".zip")) |
| 24456 | (sha256 |
| 24457 | (base32 |
| 24458 | "0pd9by719qh882hqs6xpby61sn1x5h98hms5p2p8yqnycrf1s0h2")))) |
| 24459 | (build-system python-build-system) |
| 24460 | (native-inputs |
| 24461 | (list unzip)) |
| 24462 | (propagated-inputs |
| 24463 | (list python-gevent)) |
| 24464 | (home-page "https://gehrcke.de/gipc/") |
| 24465 | (synopsis "Child process management in the context of gevent") |
| 24466 | (description "Usage of Python's multiprocessing package in a |
| 24467 | gevent-powered application may raise problems. With @code{gipc}, |
| 24468 | process-based child processes can safely be created anywhere within a |
| 24469 | gevent-powered application.") |
| 24470 | (license license:expat))) |
| 24471 | |
| 24472 | (define-public python-beautifultable |
| 24473 | (package |
| 24474 | (name "python-beautifultable") |
| 24475 | (version "1.0.0") |
| 24476 | (source |
| 24477 | (origin |
| 24478 | (method url-fetch) |
| 24479 | (uri (pypi-uri "beautifultable" version)) |
| 24480 | (sha256 |
| 24481 | (base32 |
| 24482 | "0wwlbifcbpzy3wfv6yzsxncarsngzizmmxbn6cy5gazlcq7h4k5x")))) |
| 24483 | (build-system python-build-system) |
| 24484 | (propagated-inputs |
| 24485 | (list python-wcwidth)) |
| 24486 | (arguments |
| 24487 | `(#:phases |
| 24488 | (modify-phases %standard-phases |
| 24489 | (add-after 'unpack 'patch-setup.py |
| 24490 | (lambda _ |
| 24491 | (substitute* "setup.py" |
| 24492 | (("setup\\(") |
| 24493 | "setup(\n test_suite=\"test\","))))))) |
| 24494 | (home-page "https://github.com/pri22296/beautifultable") |
| 24495 | (synopsis "Print ASCII tables for terminals") |
| 24496 | (description "@code{python-beautifultable} provides a class for easily |
| 24497 | printing tabular data in a visually appealing ASCII format to a terminal. |
| 24498 | |
| 24499 | Features include, but are not limited to: |
| 24500 | @itemize |
| 24501 | @item Full customization of the look and feel of the table |
| 24502 | @item Row and column accessors. |
| 24503 | @item Full support for colors using ANSI sequences or any library. |
| 24504 | @item Plenty of predefined styles and option to create custom ones. |
| 24505 | @item Support for Unicode characters. |
| 24506 | @item Supports streaming table when data is slow to retrieve. |
| 24507 | @end itemize") |
| 24508 | (license license:expat))) |
| 24509 | |
| 24510 | (define-public python-globber |
| 24511 | (package |
| 24512 | (name "python-globber") |
| 24513 | (version "0.2.1") |
| 24514 | (source |
| 24515 | (origin |
| 24516 | (method git-fetch) |
| 24517 | (uri (git-reference |
| 24518 | (url "https://github.com/asharov/globber") |
| 24519 | (commit version))) |
| 24520 | (file-name (git-file-name name version)) |
| 24521 | (sha256 |
| 24522 | (base32 |
| 24523 | "055xf7ja7zjhxis0ab5fnfsx16fsvr5fvc6mixqybanwxh8sgfjk")))) |
| 24524 | (build-system python-build-system) |
| 24525 | (home-page "https://github.com/asharov/globber") |
| 24526 | (synopsis "Library for string matching with glob patterns") |
| 24527 | (description |
| 24528 | "Globber is a Python library for matching file names against glob patterns. |
| 24529 | In contrast to other glob-matching libraries, it matches arbitrary strings and |
| 24530 | doesn't require the matched names to be existing files. In addition, it |
| 24531 | supports the globstar @code{**} operator to match an arbitrary number of |
| 24532 | path components.") |
| 24533 | (license license:asl2.0))) |
| 24534 | |
| 24535 | (define-public python-git-hammer |
| 24536 | (package |
| 24537 | (name "python-git-hammer") |
| 24538 | (version "0.3.1") |
| 24539 | (source |
| 24540 | (origin |
| 24541 | (method git-fetch) |
| 24542 | (uri (git-reference |
| 24543 | (url "https://github.com/asharov/git-hammer") |
| 24544 | (commit version))) |
| 24545 | (file-name (git-file-name name version)) |
| 24546 | (sha256 |
| 24547 | (base32 |
| 24548 | "0f9xlk86ijzpdj25hr1q4wcy8k72v3w470ngwm9mpdkfj8ng84wr")))) |
| 24549 | (build-system python-build-system) |
| 24550 | (arguments |
| 24551 | `(#:phases |
| 24552 | (modify-phases %standard-phases |
| 24553 | (add-after 'unpack 'patch-setup.py |
| 24554 | (lambda _ |
| 24555 | (substitute* "setup.py" |
| 24556 | (("setup\\(") |
| 24557 | "setup(\n test_suite=\"test\","))))))) |
| 24558 | (propagated-inputs |
| 24559 | (list python-beautifultable |
| 24560 | python-dateutil |
| 24561 | python-gitpython |
| 24562 | python-globber |
| 24563 | python-matplotlib |
| 24564 | python-sqlalchemy |
| 24565 | python-sqlalchemy-utils)) |
| 24566 | (home-page "https://github.com/asharov/git-hammer") |
| 24567 | (synopsis "Provide statistics for git repositories") |
| 24568 | (description |
| 24569 | "Git Hammer is a statistics tool for projects in git repositories. |
| 24570 | Its major feature is tracking the number of lines authored by each person for every |
| 24571 | commit, but it also includes some other useful statistics.") |
| 24572 | (license license:asl2.0))) |
| 24573 | |
| 24574 | (define-public python-fusepy |
| 24575 | (package |
| 24576 | (name "python-fusepy") |
| 24577 | (version "2.0.4") |
| 24578 | (source |
| 24579 | (origin |
| 24580 | (method url-fetch) |
| 24581 | (uri (pypi-uri "fusepy" version)) |
| 24582 | (sha256 |
| 24583 | (base32 |
| 24584 | "0v5grm4zyf58hsplwsxfbihddw95lz9w8cy3rpzbyha287swgx8h")))) |
| 24585 | (build-system python-build-system) |
| 24586 | (arguments |
| 24587 | `(#:phases |
| 24588 | (modify-phases %standard-phases |
| 24589 | (add-before 'build 'set-library-file-name |
| 24590 | (lambda* (#:key inputs #:allow-other-keys) |
| 24591 | (let ((fuse (assoc-ref inputs "fuse"))) |
| 24592 | (substitute* "fuse.py" |
| 24593 | (("find_library\\('fuse'\\)") |
| 24594 | (string-append "'" fuse "/lib/libfuse.so'"))))))))) |
| 24595 | (propagated-inputs |
| 24596 | (list fuse-2)) |
| 24597 | (home-page "https://github.com/fusepy/fusepy") |
| 24598 | (synopsis "Simple ctypes bindings for FUSE") |
| 24599 | (description "Python module that provides a simple interface to FUSE and |
| 24600 | MacFUSE. The binding is created using the standard @code{ctypes} library.") |
| 24601 | (license license:isc))) |
| 24602 | |
| 24603 | (define-public python-fusepyng |
| 24604 | (package |
| 24605 | (name "python-fusepyng") |
| 24606 | (version "1.0.7") |
| 24607 | (source |
| 24608 | (origin |
| 24609 | (method url-fetch) |
| 24610 | (uri (pypi-uri "fusepyng" version)) |
| 24611 | (sha256 |
| 24612 | (base32 |
| 24613 | "17w9iw6m6zjbmnhs4ikd27pq4mb1nan6k4ahlwyz40463vw6wkwb")))) |
| 24614 | (build-system python-build-system) |
| 24615 | (arguments |
| 24616 | '(#:phases |
| 24617 | (modify-phases %standard-phases |
| 24618 | (add-after 'unpack 'set-libfuse-path |
| 24619 | (lambda* (#:key inputs #:allow-other-keys) |
| 24620 | (let ((fuse (assoc-ref inputs "fuse"))) |
| 24621 | (substitute* "fusepyng.py" |
| 24622 | (("os.environ.get\\('FUSE_LIBRARY_PATH'\\)") |
| 24623 | (string-append "\"" fuse "/lib/libfuse.so\""))))))))) |
| 24624 | (inputs |
| 24625 | (list fuse-2)) |
| 24626 | (propagated-inputs |
| 24627 | (list python-paramiko)) |
| 24628 | (home-page "https://github.com/rianhunter/fusepyng") |
| 24629 | (synopsis "Simple ctypes bindings for FUSE") |
| 24630 | (description "@code{fusepyng} is a Python module that provides a simple |
| 24631 | interface to FUSE on various operating systems. It's just one file and is |
| 24632 | implemented using @code{ctypes}.") |
| 24633 | (license license:isc))) |
| 24634 | |
| 24635 | (define-public python-update-checker |
| 24636 | (package |
| 24637 | (name "python-update-checker") |
| 24638 | (version "0.18.0") |
| 24639 | (source |
| 24640 | (origin |
| 24641 | (method url-fetch) |
| 24642 | (uri (pypi-uri "update-checker" version)) |
| 24643 | (sha256 |
| 24644 | (base32 "04yb5a9mi45ax50m2m0ih6gdvkk1j7gfmy83dd58i1f59axlabba")))) |
| 24645 | (build-system python-build-system) |
| 24646 | (propagated-inputs (list python-requests)) |
| 24647 | (native-inputs (list python-black python-flake8 python-pytest)) |
| 24648 | (home-page "https://github.com/bboe/update_checker") |
| 24649 | (synopsis "Python module that will check for package updates") |
| 24650 | (description "This package provides a Python module that will check for |
| 24651 | package updates.") |
| 24652 | (license license:bsd-2))) |
| 24653 | |
| 24654 | (define-public python-userspacefs |
| 24655 | (package |
| 24656 | (name "python-userspacefs") |
| 24657 | (version "2.0.5") |
| 24658 | (source |
| 24659 | (origin |
| 24660 | (method url-fetch) |
| 24661 | (uri (pypi-uri "userspacefs" version)) |
| 24662 | (sha256 |
| 24663 | (base32 |
| 24664 | "0v0qkdwfc61s2yiq7d7amin93x5biypfmi9pfhf8yj1rdpx5yvsx")))) |
| 24665 | (build-system python-build-system) |
| 24666 | (propagated-inputs |
| 24667 | (list python-fusepyng)) |
| 24668 | (home-page "https://github.com/rianhunter/userspacefs") |
| 24669 | (synopsis "User-space file systems for Python") |
| 24670 | (description |
| 24671 | "@code{userspacefs} is a library that allows you to easily write |
| 24672 | user-space file systems in Python.") |
| 24673 | (license license:gpl3+))) |
| 24674 | |
| 24675 | (define-public python-stone |
| 24676 | (package |
| 24677 | (name "python-stone") |
| 24678 | (version "3.2.1") |
| 24679 | (source |
| 24680 | (origin |
| 24681 | (method url-fetch) |
| 24682 | (uri (pypi-uri "stone" version)) |
| 24683 | (sha256 |
| 24684 | (base32 |
| 24685 | "0xby5mpsms7b2rv8j6mvxzmzz5i9ii01brb9ylxz6kiv2i08piwv")))) |
| 24686 | (build-system python-build-system) |
| 24687 | (arguments |
| 24688 | `(#:phases |
| 24689 | (modify-phases %standard-phases |
| 24690 | (add-after 'unpack 'change-version-requirements |
| 24691 | (lambda _ |
| 24692 | ;; Match the requirement in test/requirements.txt |
| 24693 | (substitute* "setup.py" |
| 24694 | (("pytest < 5") "pytest < 7")) |
| 24695 | ;; We don't care about a coverage report. |
| 24696 | (substitute* "test/requirements.txt" |
| 24697 | (("coverage.*") "coverage\n")))) |
| 24698 | (replace 'check |
| 24699 | (lambda* (#:key tests? #:allow-other-keys) |
| 24700 | (when tests? |
| 24701 | ;; These tests don't import currectly. |
| 24702 | (delete-file "test/test_js_client.py") |
| 24703 | (delete-file "test/test_tsd_types.py") |
| 24704 | (delete-file "test/test_python_gen.py") |
| 24705 | (invoke "pytest"))))))) |
| 24706 | (propagated-inputs |
| 24707 | (list python-ply python-six)) |
| 24708 | (native-inputs |
| 24709 | (list python-coverage python-mock python-pytest python-pytest-runner)) |
| 24710 | (home-page "https://github.com/dropbox/stone") |
| 24711 | (synopsis "Official Api Spec Language for Dropbox") |
| 24712 | (description |
| 24713 | "Stone is an interface description language (IDL) for APIs.") |
| 24714 | (license license:expat))) |
| 24715 | |
| 24716 | (define-public pybind11 |
| 24717 | (package |
| 24718 | (name "pybind11") |
| 24719 | (version "2.8.1") |
| 24720 | (source (origin |
| 24721 | (method git-fetch) |
| 24722 | (uri (git-reference |
| 24723 | (url "https://github.com/pybind/pybind11") |
| 24724 | (commit (string-append "v" version)))) |
| 24725 | (sha256 |
| 24726 | (base32 |
| 24727 | "10hrkrh78sk7k0ydw1ghmp7gvpwmkby0l2s0kf2iaj9sz0vijkhs")) |
| 24728 | (file-name (git-file-name name version)))) |
| 24729 | (build-system cmake-build-system) |
| 24730 | (native-inputs |
| 24731 | `(("python" ,python-wrapper) |
| 24732 | |
| 24733 | ;; The following dependencies are used for tests. |
| 24734 | ("python-pytest" ,python-pytest) |
| 24735 | ("catch" ,catch2-1) |
| 24736 | ("eigen" ,eigen))) |
| 24737 | (arguments |
| 24738 | `(#:configure-flags |
| 24739 | (list (string-append "-DCATCH_INCLUDE_DIR=" |
| 24740 | (assoc-ref %build-inputs "catch") |
| 24741 | "/include/catch")) |
| 24742 | |
| 24743 | #:phases (modify-phases %standard-phases |
| 24744 | (add-after 'install 'install-python |
| 24745 | (lambda* (#:key outputs #:allow-other-keys) |
| 24746 | (let ((out (assoc-ref outputs "out"))) |
| 24747 | (with-directory-excursion "../source" |
| 24748 | (setenv "PYBIND11_USE_CMAKE" "yes") |
| 24749 | (invoke "python" "setup.py" "install" |
| 24750 | "--single-version-externally-managed" |
| 24751 | "--root=/" |
| 24752 | (string-append "--prefix=" out))))))) |
| 24753 | |
| 24754 | #:test-target "check")) |
| 24755 | (home-page "https://github.com/pybind/pybind11/") |
| 24756 | (synopsis "Seamless operability between C++11 and Python") |
| 24757 | (description |
| 24758 | "@code{pybind11} is a lightweight header-only library that exposes C++ |
| 24759 | types in Python and vice versa, mainly to create Python bindings of existing |
| 24760 | C++ code. Its goals and syntax are similar to the @code{Boost.Python} |
| 24761 | library: to minimize boilerplate code in traditional extension modules by |
| 24762 | inferring type information using compile-time introspection.") |
| 24763 | (license license:bsd-3))) |
| 24764 | |
| 24765 | ;; This is needed for python-vaex-core. |
| 24766 | (define-public pybind11-2.3 |
| 24767 | (package |
| 24768 | (inherit pybind11) |
| 24769 | (name "pybind11") |
| 24770 | (version "2.3.0") |
| 24771 | (source (origin |
| 24772 | (method git-fetch) |
| 24773 | (uri (git-reference |
| 24774 | (url "https://github.com/pybind/pybind11") |
| 24775 | (commit (string-append "v" version)))) |
| 24776 | (sha256 |
| 24777 | (base32 |
| 24778 | "11b6dniri8m05spfd2a19irz82shf4sdca73566bniggrf3zclnf")) |
| 24779 | (file-name (git-file-name name version)))) |
| 24780 | (arguments |
| 24781 | (substitute-keyword-arguments (package-arguments pybind11) |
| 24782 | ((#:tests? tests? #false) |
| 24783 | #false))))) |
| 24784 | |
| 24785 | (define-public python-pooch |
| 24786 | (package |
| 24787 | (name "python-pooch") |
| 24788 | (version "1.3.0") |
| 24789 | (source |
| 24790 | (origin |
| 24791 | (method url-fetch) |
| 24792 | (uri (pypi-uri "pooch" version)) |
| 24793 | (sha256 |
| 24794 | (base32 "1618adsg9r8fsv422sv35z1i723q3a1iir5v7dv2sklh4pl4im1h")))) |
| 24795 | (build-system python-build-system) |
| 24796 | (arguments |
| 24797 | `(#:tests? #f)) ;requires online data |
| 24798 | (propagated-inputs |
| 24799 | (list python-appdirs python-packaging python-requests)) |
| 24800 | (home-page "https://github.com/fatiando/pooch") |
| 24801 | (synopsis "Manage your Python library's sample data files") |
| 24802 | (description |
| 24803 | "Pooch manages your Python library's sample data files: it automatically |
| 24804 | downloads and stores them in a local directory, with support for versioning |
| 24805 | and corruption checks.") |
| 24806 | (license license:bsd-3))) |
| 24807 | |
| 24808 | (define-public python-fasteners |
| 24809 | (package |
| 24810 | (name "python-fasteners") |
| 24811 | (version "0.15") |
| 24812 | (source |
| 24813 | (origin |
| 24814 | (method url-fetch) |
| 24815 | (uri (pypi-uri "fasteners" version)) |
| 24816 | (sha256 |
| 24817 | (base32 |
| 24818 | "1vzmz1xh38b84dv0f4hlp7arwmx8wjlih6lf964bpy8dnyk6s5rs")))) |
| 24819 | (build-system python-build-system) |
| 24820 | (propagated-inputs |
| 24821 | (list python-monotonic python-six)) |
| 24822 | (native-inputs |
| 24823 | (list python-testtools)) |
| 24824 | (home-page "https://github.com/harlowja/fasteners") |
| 24825 | (synopsis "Python package that provides useful locks") |
| 24826 | (description |
| 24827 | "This package provides a Python program that provides following locks: |
| 24828 | |
| 24829 | @itemize |
| 24830 | @item Locking decorator |
| 24831 | @item Reader-writer locks |
| 24832 | @item Inter-process locks |
| 24833 | @item Generic helpers |
| 24834 | @end itemize\n") |
| 24835 | (license license:asl2.0))) |
| 24836 | |
| 24837 | (define-public python-requests-file |
| 24838 | (package |
| 24839 | (name "python-requests-file") |
| 24840 | (version "1.5.1") |
| 24841 | (source |
| 24842 | (origin |
| 24843 | (method url-fetch) |
| 24844 | (uri (pypi-uri "requests-file" version)) |
| 24845 | (sha256 |
| 24846 | (base32 "13kx4k83i9zcv20h0fnmawwwdzhcmw1z97mqib1h379qsc445mq7")))) |
| 24847 | (build-system python-build-system) |
| 24848 | (arguments |
| 24849 | `(#:phases |
| 24850 | (modify-phases %standard-phases |
| 24851 | (replace 'check |
| 24852 | (lambda* (#:key tests? #:allow-other-keys) |
| 24853 | (when tests? |
| 24854 | (invoke "python" "tests/test_requests_file.py"))))))) |
| 24855 | (propagated-inputs |
| 24856 | (list python-requests python-six)) |
| 24857 | (home-page "https://github.com/dashea/requests-file") |
| 24858 | (synopsis "File transport adapter for Requests") |
| 24859 | (description |
| 24860 | "Requests-File is a transport adapter for use with the Requests Python |
| 24861 | library to allow local file system access via @code{file://} URLs.") |
| 24862 | (license license:asl2.0))) |
| 24863 | |
| 24864 | (define-public python-identify |
| 24865 | (package |
| 24866 | (name "python-identify") |
| 24867 | (version "1.4.25") |
| 24868 | (source |
| 24869 | (origin |
| 24870 | ;; There are no tests in the PyPI tarball. |
| 24871 | (method git-fetch) |
| 24872 | (uri (git-reference |
| 24873 | (url "https://github.com/chriskuehl/identify") |
| 24874 | (commit (string-append "v" version)))) |
| 24875 | (file-name (git-file-name name version)) |
| 24876 | (sha256 |
| 24877 | (base32 "1fqgci6skckcq0x5pnxh6k2qjzn1ndsrgha1j6wwv1ld4g9bd3hz")))) |
| 24878 | (build-system python-build-system) |
| 24879 | (arguments |
| 24880 | `(#:phases |
| 24881 | (modify-phases %standard-phases |
| 24882 | ;; system-error "utime" "~A" ("No such file or directory") |
| 24883 | (delete 'ensure-no-mtimes-pre-1980) |
| 24884 | (replace 'check |
| 24885 | (lambda* (#:key tests? #:allow-other-keys) |
| 24886 | (when tests? |
| 24887 | (invoke "pytest" "-vv"))))))) |
| 24888 | (native-inputs |
| 24889 | (list python-coverage python-pytest)) |
| 24890 | (propagated-inputs |
| 24891 | (list python-editdistance)) |
| 24892 | (home-page "https://github.com/chriskuehl/identify") |
| 24893 | (synopsis "File identification library for Python") |
| 24894 | (description |
| 24895 | "@code{identify} is a file identification library for Python. Given |
| 24896 | a file (or some information about a file), return a set of standardized tags |
| 24897 | identifying what the file is.") |
| 24898 | (license license:expat))) |
| 24899 | |
| 24900 | (define-public python-tldextract |
| 24901 | (package |
| 24902 | (name "python-tldextract") |
| 24903 | (version "3.3.0") |
| 24904 | (source |
| 24905 | (origin |
| 24906 | (method url-fetch) |
| 24907 | (uri (pypi-uri "tldextract" version)) |
| 24908 | (sha256 |
| 24909 | (base32 |
| 24910 | "1wac4yvcpgqjvls770mfx165amvy7gr00nnd2w24bqqwyamj9kdd")))) |
| 24911 | (build-system python-build-system) |
| 24912 | (native-inputs |
| 24913 | (list python-pytest python-responses python-setuptools-scm)) |
| 24914 | (propagated-inputs |
| 24915 | (list python-filelock python-idna python-requests python-requests-file)) |
| 24916 | (home-page |
| 24917 | "https://github.com/john-kurkowski/tldextract") |
| 24918 | (synopsis |
| 24919 | "Separate the TLD from the registered domain and subdomains of a URL") |
| 24920 | (description |
| 24921 | "TLDExtract accurately separates the TLD from the registered domain and |
| 24922 | subdomains of a URL, using the Public Suffix List. By default, this includes |
| 24923 | the public ICANN TLDs and their exceptions. It can optionally support the |
| 24924 | Public Suffix List's private domains as well.") |
| 24925 | (license license:bsd-3))) |
| 24926 | |
| 24927 | (define-public python-tldr |
| 24928 | (package |
| 24929 | (name "python-tldr") |
| 24930 | (version "3.1.0") |
| 24931 | (source |
| 24932 | (origin |
| 24933 | ;; There's no test in PyPI. |
| 24934 | (method git-fetch) |
| 24935 | (uri (git-reference |
| 24936 | (url "https://github.com/tldr-pages/tldr-python-client") |
| 24937 | (commit version))) |
| 24938 | (file-name (git-file-name name version)) |
| 24939 | (sha256 |
| 24940 | (base32 "1hxmprqg8c4cvs19n7f80f3y7jj74i8sc2dmq2gdjmsdrb54bbzc")))) |
| 24941 | (build-system python-build-system) |
| 24942 | (arguments |
| 24943 | (list #:phases |
| 24944 | #~(modify-phases %standard-phases |
| 24945 | (add-after 'build 'build-doc |
| 24946 | (lambda _ |
| 24947 | (invoke "make" "-C" "docs"))) |
| 24948 | (replace 'check |
| 24949 | (lambda* (#:key tests? #:allow-other-keys) |
| 24950 | (when tests? |
| 24951 | ;; This test fails. It tries to open a network socket. |
| 24952 | (invoke "pytest" "-vv" "-k" "not test_error_message"))))))) |
| 24953 | (native-inputs |
| 24954 | (list python-pytest python-pytest-runner python-sphinx-argparse)) |
| 24955 | (inputs |
| 24956 | (list python-argcomplete python-colorama python-termcolor python-shtab)) |
| 24957 | (home-page "https://github.com/tldr-pages/tldr-python-client") |
| 24958 | (synopsis "Python command-line client for tldr pages") |
| 24959 | (description "This package provides the @code{tldr} command allowing users |
| 24960 | to view @code{tldr} pages from a shell. The @code{tldr} pages are a community |
| 24961 | effort to simplify the man pages with practical examples.") |
| 24962 | (license license:expat))) ; MIT license |
| 24963 | |
| 24964 | (define-public python-nodeenv |
| 24965 | (package |
| 24966 | (name "python-nodeenv") |
| 24967 | (version "1.4.0") |
| 24968 | (source |
| 24969 | (origin |
| 24970 | ;; There's no tarball in PyPI. |
| 24971 | (method git-fetch) |
| 24972 | (uri (git-reference |
| 24973 | (url "https://github.com/ekalinin/nodeenv") |
| 24974 | (commit version))) |
| 24975 | (file-name (git-file-name name version)) |
| 24976 | (sha256 |
| 24977 | (base32 "0y443icx0w7jlzmxmmcm4q8dqfiwgafbb9cp8jpm68mbqxbz40a7")))) |
| 24978 | (build-system python-build-system) |
| 24979 | (arguments |
| 24980 | `(#:phases |
| 24981 | (modify-phases %standard-phases |
| 24982 | (replace 'check |
| 24983 | (lambda _ |
| 24984 | ;; This test fails. It tries to open a network socket. |
| 24985 | (invoke "pytest" "-vv" "-k" "not test_smoke")))))) |
| 24986 | (native-inputs |
| 24987 | (list python-coverage python-mock python-pytest)) |
| 24988 | (home-page "https://ekalinin.github.io/nodeenv/") |
| 24989 | (synopsis "Create isolated node.js environments") |
| 24990 | (description |
| 24991 | "Nodeenv (node.js virtual environment) is a tool to create isolated |
| 24992 | node.js environments. It creates an environment that has its own installation |
| 24993 | directories, that doesn't share libraries with other node.js virtual |
| 24994 | environments.") |
| 24995 | (license license:bsd-3))) |
| 24996 | |
| 24997 | (define-public python-pynamecheap |
| 24998 | (package |
| 24999 | (name "python-pynamecheap") |
| 25000 | (version "0.0.3") |
| 25001 | (source |
| 25002 | (origin |
| 25003 | (method url-fetch) |
| 25004 | (uri (pypi-uri "PyNamecheap" version)) |
| 25005 | (sha256 |
| 25006 | (base32 |
| 25007 | "0wkbwz208j8nfrsmzmclvxg22ymknn0mlz76wbdza9k2bx2zja6l")))) |
| 25008 | (build-system python-build-system) |
| 25009 | (propagated-inputs |
| 25010 | (list python-requests)) |
| 25011 | (home-page |
| 25012 | "https://github.com/Bemmu/PyNamecheap") |
| 25013 | (synopsis |
| 25014 | "Namecheap API client in Python") |
| 25015 | (description |
| 25016 | "PyNamecheap is a Namecheap API client in Python.") |
| 25017 | (license license:expat))) |
| 25018 | |
| 25019 | (define-public python-pynixutil |
| 25020 | (package |
| 25021 | (name "python-pynixutil") |
| 25022 | (version "0.5.0") |
| 25023 | (source (origin |
| 25024 | (method git-fetch) |
| 25025 | (uri (git-reference |
| 25026 | (url "https://github.com/nix-community/pynixutil") |
| 25027 | (commit version))) |
| 25028 | (file-name (git-file-name name version)) |
| 25029 | ;; Derivation test uses nix. |
| 25030 | (modules '((guix build utils))) |
| 25031 | (snippet '(delete-file "tests/test_drv.py")) |
| 25032 | (sha256 |
| 25033 | (base32 |
| 25034 | "1lnspcai7mqpv73bbd8kgyw63fxwgkwvfkl09b2bl5y2g2v7np6m")))) |
| 25035 | (build-system pyproject-build-system) |
| 25036 | (native-inputs (list poetry python-pytest)) |
| 25037 | (home-page "https://github.com/nix-community/pynixutil") |
| 25038 | (synopsis "Utility functions for working with data from Nix in Python") |
| 25039 | (description |
| 25040 | "@code{pynixutil} provides functions for base32 encoding/decoding and |
| 25041 | derivation parsing, namingly @code{b32decode()}, @code{b32encode()} and |
| 25042 | @code{drvparse()}.") |
| 25043 | (license license:expat))) |
| 25044 | |
| 25045 | (define-public python-dns-lexicon |
| 25046 | (package |
| 25047 | (name "python-dns-lexicon") |
| 25048 | (version "2.4.0") |
| 25049 | (source |
| 25050 | (origin |
| 25051 | (method url-fetch) |
| 25052 | (uri (pypi-uri "dns-lexicon" version)) |
| 25053 | (sha256 |
| 25054 | (base32 |
| 25055 | "0jdn3ns71bsybr7njgsqr9xlxsqh7zh6phn4ld0liazqdn2l5f6m")))) |
| 25056 | (build-system python-build-system) |
| 25057 | (arguments |
| 25058 | `(#:tests? #f)) ;requires internet access |
| 25059 | (propagated-inputs |
| 25060 | (list python-future python-pynamecheap python-requests |
| 25061 | python-tldextract python-urllib3)) |
| 25062 | (home-page "https://github.com/AnalogJ/lexicon") |
| 25063 | (synopsis |
| 25064 | "Manipulate DNS records on various DNS providers") |
| 25065 | (description |
| 25066 | "Lexicon provides a way to manipulate DNS records on multiple DNS |
| 25067 | providers in a standardized way. It has a CLI but it can also be used as a |
| 25068 | Python library. It was designed to be used in automation, specifically with |
| 25069 | Let's Encrypt.") |
| 25070 | (license license:expat))) |
| 25071 | |
| 25072 | (define-public python-cfgv |
| 25073 | (package |
| 25074 | (name "python-cfgv") |
| 25075 | (version "3.3.1") |
| 25076 | (source |
| 25077 | (origin |
| 25078 | ;; There are no tests in the PyPI tarball. |
| 25079 | (method git-fetch) |
| 25080 | (uri (git-reference |
| 25081 | (url "https://github.com/asottile/cfgv") |
| 25082 | (commit (string-append "v" version)))) |
| 25083 | (file-name (git-file-name name version)) |
| 25084 | (sha256 |
| 25085 | (base32 "1pci97cmn3v45sfch9s3lshidrl0309ls9byidic0l8drkwnkwcj")))) |
| 25086 | (build-system python-build-system) |
| 25087 | (arguments |
| 25088 | `(#:phases |
| 25089 | (modify-phases %standard-phases |
| 25090 | (replace 'check |
| 25091 | (lambda* (#:key tests? #:allow-other-keys) |
| 25092 | (when tests? |
| 25093 | (invoke "pytest" "-vv"))))))) |
| 25094 | (native-inputs |
| 25095 | (list python-pytest)) |
| 25096 | (home-page "https://github.com/asottile/cfgv") |
| 25097 | (synopsis "Configuration validation library") |
| 25098 | (description |
| 25099 | "This library helps to validate configuration files and produce human |
| 25100 | readable error messages.") |
| 25101 | (license license:expat))) |
| 25102 | |
| 25103 | (define-public python-commandlines |
| 25104 | (package |
| 25105 | (name "python-commandlines") |
| 25106 | (version "0.4.1") |
| 25107 | (source |
| 25108 | (origin |
| 25109 | (method url-fetch) |
| 25110 | (uri (pypi-uri "commandlines" version)) |
| 25111 | (sha256 |
| 25112 | (base32 |
| 25113 | "0r7xcr0knv02p4mswa2bng61nn8nbhhrs6kvdnb9bb3hhjvm1dl6")))) |
| 25114 | (build-system python-build-system) |
| 25115 | (home-page "https://github.com/chrissimpkins/commandlines") |
| 25116 | (synopsis "Command line argument to object parsing library") |
| 25117 | (description |
| 25118 | "@code{Commandlines} is a Python library for command line application |
| 25119 | development that supports command line argument parsing, command string |
| 25120 | validation testing and application logic.") |
| 25121 | (license license:expat))) |
| 25122 | |
| 25123 | ;; Make sure to upgrade python-llvmlite in (gnu packages llvm) together with |
| 25124 | ;; python-numba. They have a very unflexible relationship. |
| 25125 | (define-public python-numba |
| 25126 | (package |
| 25127 | (name "python-numba") |
| 25128 | (version "0.56.4") |
| 25129 | (source |
| 25130 | (origin |
| 25131 | (method url-fetch) |
| 25132 | (uri (pypi-uri "numba" version)) |
| 25133 | (sha256 |
| 25134 | (base32 |
| 25135 | "1vlnmirhay8gl36cxa94nvlgs41k9p7vdkp0xzbq65682bsgxn9j")))) |
| 25136 | (build-system python-build-system) |
| 25137 | (arguments |
| 25138 | `(#:phases |
| 25139 | (modify-phases %standard-phases |
| 25140 | (add-after 'unpack 'disable-proprietary-features |
| 25141 | (lambda _ |
| 25142 | (setenv "NUMBA_DISABLE_HSA" "1") |
| 25143 | (setenv "NUMBA_DISABLE_CUDA" "1"))) |
| 25144 | (add-after 'unpack 'disable-failing-tests |
| 25145 | (lambda _ |
| 25146 | ;; This one test fails because a deprecation warning is printed. |
| 25147 | (substitute* "numba/tests/test_import.py" |
| 25148 | (("def test_no_accidental_warnings") |
| 25149 | "def disabled_test_no_accidental_warnings")))) |
| 25150 | (replace 'check |
| 25151 | (lambda* (#:key tests? inputs outputs #:allow-other-keys) |
| 25152 | (when tests? |
| 25153 | (add-installed-pythonpath inputs outputs) |
| 25154 | ;; Something is wrong with the PYTHONPATH when running the |
| 25155 | ;; tests from the build directory, as it complains about not being |
| 25156 | ;; able to import certain modules. |
| 25157 | (with-directory-excursion "/tmp" |
| 25158 | (setenv "HOME" (getcwd)) |
| 25159 | (invoke "python3" "-m" "numba.runtests" "-v" "-m")))))))) |
| 25160 | (propagated-inputs |
| 25161 | (list python-llvmlite python-numpy python-singledispatch)) |
| 25162 | (native-inputs ;for tests |
| 25163 | (list python-jinja2 python-pygments)) |
| 25164 | (home-page "https://numba.pydata.org") |
| 25165 | (synopsis "Compile Python code using LLVM") |
| 25166 | (description "Numba gives you the power to speed up your applications with |
| 25167 | high performance functions written directly in Python. With a few |
| 25168 | annotations, array-oriented and math-heavy Python code can be just-in-time |
| 25169 | compiled to native machine instructions, similar in performance to C, C++ and |
| 25170 | Fortran, without having to switch languages or Python interpreters. |
| 25171 | |
| 25172 | Numba works by generating optimized machine code using the LLVM compiler |
| 25173 | infrastructure at import time, runtime, or statically (using the included pycc |
| 25174 | tool).") |
| 25175 | (license license:bsd-3))) |
| 25176 | |
| 25177 | (define-public python-numcodecs |
| 25178 | (package |
| 25179 | (name "python-numcodecs") |
| 25180 | (version "0.10.2") |
| 25181 | (source |
| 25182 | (origin |
| 25183 | (method url-fetch) |
| 25184 | (uri (pypi-uri "numcodecs" version)) |
| 25185 | (sha256 |
| 25186 | (base32 |
| 25187 | "1i2rvm1f23dapcf6w3mj4877jzq5f24bhfa0fafbv1nr7xmqr0r2")) |
| 25188 | (modules '((guix build utils))) |
| 25189 | (snippet |
| 25190 | '(begin |
| 25191 | (delete-file-recursively "c-blosc") |
| 25192 | (for-each delete-file '("numcodecs/blosc.c" |
| 25193 | "numcodecs/compat_ext.c" |
| 25194 | "numcodecs/lz4.c" |
| 25195 | "numcodecs/vlen.c" |
| 25196 | "numcodecs/zstd.c")))))) |
| 25197 | (build-system pyproject-build-system) |
| 25198 | (arguments |
| 25199 | (list |
| 25200 | #:phases |
| 25201 | '(modify-phases %standard-phases |
| 25202 | (add-after 'unpack 'disable-avx2 |
| 25203 | (lambda _ |
| 25204 | (setenv "DISABLE_NUMCODECS_AVX2" "1"))) |
| 25205 | (add-after 'unpack 'unbundle |
| 25206 | (lambda _ |
| 25207 | (substitute* "setup.py" |
| 25208 | (("sources=sources \\+ blosc_sources,") |
| 25209 | "sources=sources,") |
| 25210 | (("extra_compile_args=extra_compile_args") |
| 25211 | "extra_compile_args=list(base_compile_args)") |
| 25212 | (("'numcodecs.zstd',") |
| 25213 | "'numcodecs.zstd', libraries=['zstd'], ") |
| 25214 | (("'numcodecs.lz4',") |
| 25215 | "'numcodecs.lz4', libraries=['lz4'], ") |
| 25216 | (("'numcodecs.blosc',") |
| 25217 | "'numcodecs.blosc', libraries=['blosc'], ")))) |
| 25218 | (add-before 'check 'build-extensions |
| 25219 | (lambda _ |
| 25220 | ;; Cython extensions have to be built before running the tests. |
| 25221 | (invoke "python" "setup.py" "build_ext" "--inplace")))))) |
| 25222 | (inputs |
| 25223 | (list c-blosc lz4 zlib |
| 25224 | `(,zstd "lib"))) |
| 25225 | (propagated-inputs |
| 25226 | (list python-entrypoints |
| 25227 | python-numpy |
| 25228 | python-msgpack |
| 25229 | python-typing-extensions)) |
| 25230 | (native-inputs |
| 25231 | (list python-cython python-pytest python-setuptools-scm)) |
| 25232 | (home-page "https://github.com/zarr-developers/numcodecs") |
| 25233 | (synopsis "Buffer compression and transformation codecs") |
| 25234 | (description |
| 25235 | "This Python package provides buffer compression and transformation |
| 25236 | codecs for use in data storage and communication applications.") |
| 25237 | (license license:expat))) |
| 25238 | |
| 25239 | (define-public python-asciitree |
| 25240 | (package |
| 25241 | (name "python-asciitree") |
| 25242 | (version "0.3.3") |
| 25243 | (source |
| 25244 | (origin |
| 25245 | (method url-fetch) |
| 25246 | (uri (pypi-uri "asciitree" version)) |
| 25247 | (sha256 |
| 25248 | (base32 |
| 25249 | "0vhgri2m2xlnibhz4xwn4hpbc7xacisxjqrk6k5kyppq96vbk92a")))) |
| 25250 | (build-system python-build-system) |
| 25251 | (home-page "https://github.com/mbr/asciitree") |
| 25252 | (synopsis "Draws ASCII trees") |
| 25253 | (description "This package draws tree structures using characters.") |
| 25254 | (license license:expat))) |
| 25255 | |
| 25256 | (define-public python-zarr |
| 25257 | (package |
| 25258 | (name "python-zarr") |
| 25259 | (version "2.13.3") |
| 25260 | (source |
| 25261 | (origin |
| 25262 | (method url-fetch) |
| 25263 | (uri (pypi-uri "zarr" version)) |
| 25264 | (sha256 |
| 25265 | (base32 |
| 25266 | "135ls2q7zc98pk61a5cnh88j4hnnavcwasrswdjqyqvcc68b096v")))) |
| 25267 | (build-system python-build-system) |
| 25268 | (arguments |
| 25269 | `(#:phases |
| 25270 | (modify-phases %standard-phases |
| 25271 | (add-after 'unpack 'disable-service-tests |
| 25272 | (lambda _ |
| 25273 | (setenv "ZARR_TEST_ABS" "0") |
| 25274 | (setenv "ZARR_TEST_MONGO" "0") |
| 25275 | (setenv "ZARR_TEST_REDIS" "0") |
| 25276 | #t)) |
| 25277 | (replace 'check |
| 25278 | (lambda _ |
| 25279 | (invoke "pytest" "-vv" "-k" "not lmdb") |
| 25280 | #t))))) |
| 25281 | (propagated-inputs |
| 25282 | (list python-asciitree python-fasteners python-numcodecs |
| 25283 | python-numpy)) |
| 25284 | (native-inputs |
| 25285 | (list python-pytest python-setuptools-scm)) |
| 25286 | (home-page "https://github.com/zarr-developers/zarr-python") |
| 25287 | (synopsis "Chunked, compressed, N-dimensional arrays for Python") |
| 25288 | (description |
| 25289 | "This package provides an implementation of chunked, compressed, |
| 25290 | N-dimensional arrays for Python.") |
| 25291 | (license license:expat))) |
| 25292 | |
| 25293 | (define-public python-anndata |
| 25294 | (package |
| 25295 | (name "python-anndata") |
| 25296 | (version "0.8.0") |
| 25297 | (source |
| 25298 | (origin |
| 25299 | ;; The tarball from PyPi doesn't include tests. |
| 25300 | (method git-fetch) |
| 25301 | (uri (git-reference |
| 25302 | (url "https://github.com/theislab/anndata") |
| 25303 | (commit version))) |
| 25304 | (file-name (git-file-name name version)) |
| 25305 | (sha256 |
| 25306 | (base32 |
| 25307 | "0v7npqrg1rdm8jzw22a45c0mqrmsv05r3k88i3lhzi0pzzxca1i1")))) |
| 25308 | (build-system pyproject-build-system) |
| 25309 | (arguments |
| 25310 | (list |
| 25311 | #:test-flags |
| 25312 | '(list "-k" "not concatenation.rst") |
| 25313 | #:phases |
| 25314 | #~(modify-phases %standard-phases |
| 25315 | ;; Doctests require scanpy from (gnu packages bioinformatics) |
| 25316 | (add-after 'unpack 'disable-doctests |
| 25317 | (lambda _ |
| 25318 | (substitute* "pyproject.toml" |
| 25319 | (("--doctest-modules") "")))) |
| 25320 | (add-before 'build 'set-version |
| 25321 | (lambda _ |
| 25322 | (setenv "SETUPTOOLS_SCM_PRETEND_VERSION" #$version) |
| 25323 | (substitute* "anndata/_metadata.py" |
| 25324 | (("__version__ =.*") |
| 25325 | (string-append "__version__ = \"" #$version "\"\n"))) |
| 25326 | ;; ZIP does not support timestamps before 1980. |
| 25327 | (setenv "SOURCE_DATE_EPOCH" "315532800")))))) |
| 25328 | (propagated-inputs |
| 25329 | (list python-h5py |
| 25330 | python-importlib-metadata |
| 25331 | python-natsort |
| 25332 | python-numcodecs |
| 25333 | python-packaging |
| 25334 | python-pandas |
| 25335 | python-scipy |
| 25336 | python-scikit-learn |
| 25337 | python-zarr)) |
| 25338 | (native-inputs |
| 25339 | (list python-boltons |
| 25340 | python-joblib |
| 25341 | python-pytest |
| 25342 | python-toml |
| 25343 | python-flit |
| 25344 | python-setuptools-scm)) |
| 25345 | (home-page "https://github.com/theislab/anndata") |
| 25346 | (synopsis "Annotated data for data analysis pipelines") |
| 25347 | (description "Anndata is a package for simple (functional) high-level APIs |
| 25348 | for data analysis pipelines. In this context, it provides an efficient, |
| 25349 | scalable way of keeping track of data together with learned annotations and |
| 25350 | reduces the code overhead typically encountered when using a mostly |
| 25351 | object-oriented library such as @code{scikit-learn}.") |
| 25352 | (license license:bsd-3))) |
| 25353 | |
| 25354 | (define-public python-dill |
| 25355 | (package |
| 25356 | (name "python-dill") |
| 25357 | (version "0.3.6") |
| 25358 | (source |
| 25359 | (origin |
| 25360 | (method url-fetch) |
| 25361 | (uri (pypi-uri "dill" version)) |
| 25362 | (sha256 |
| 25363 | (base32 "0wr37zwyiprrv29jcc1hl5cla72faiwfs0mhvbxxhmkqd3rmbnz5")))) |
| 25364 | (build-system pyproject-build-system) |
| 25365 | (arguments |
| 25366 | `(#:phases |
| 25367 | (modify-phases %standard-phases |
| 25368 | (replace 'check |
| 25369 | (lambda* (#:key tests? #:allow-other-keys) |
| 25370 | (when tests? |
| 25371 | (with-directory-excursion "/tmp" |
| 25372 | (invoke "nosetests" "-v")))))))) |
| 25373 | (native-inputs |
| 25374 | (list python-nose)) |
| 25375 | (home-page "https://pypi.org/project/dill/") |
| 25376 | (synopsis "Serialize all of Python") |
| 25377 | (description "Dill extends Python's @code{pickle} module for serializing |
| 25378 | and de-serializing Python objects to the majority of the built-in Python |
| 25379 | types. Dill provides the user the same interface as the @code{pickle} module, |
| 25380 | and also includes some additional features. In addition to pickling Python |
| 25381 | objects, @code{dill} provides the ability to save the state of an interpreter |
| 25382 | session in a single command. Hence, it would be feasible to save a |
| 25383 | interpreter session, close the interpreter, ship the pickled file to another |
| 25384 | computer, open a new interpreter, unpickle the session and thus continue from |
| 25385 | the saved state of the original interpreter session.") |
| 25386 | (license license:bsd-3))) |
| 25387 | |
| 25388 | (define-public python-multiprocess |
| 25389 | (package |
| 25390 | (name "python-multiprocess") |
| 25391 | (version "0.70.14") |
| 25392 | (source |
| 25393 | (origin |
| 25394 | (method url-fetch) |
| 25395 | (uri (pypi-uri "multiprocess" version)) |
| 25396 | (sha256 |
| 25397 | (base32 |
| 25398 | "0splzd9w9yi42vl7b6mm99vb82jp2adhdrizw1xd4q125z0szp9y")))) |
| 25399 | (build-system pyproject-build-system) |
| 25400 | (arguments |
| 25401 | (list |
| 25402 | #:phases |
| 25403 | '(modify-phases %standard-phases |
| 25404 | (add-after 'unpack 'disable-broken-tests |
| 25405 | (lambda _ |
| 25406 | ;; The "wait_result" and "shared_memory..." tests are broken as |
| 25407 | ;; there is no keyboard interrupt. |
| 25408 | ;; |
| 25409 | ;; The "preload_resources" test fails as it cannot find |
| 25410 | ;; mp_preload.py. |
| 25411 | (substitute* "py3.10/multiprocess/tests/__init__.py" |
| 25412 | (("^(.*)def test_(\ |
| 25413 | wait_result|\ |
| 25414 | shared_memory_SharedMemoryServer_ignores_sigint|\ |
| 25415 | preload_resources\ |
| 25416 | )" line indent) |
| 25417 | (string-append indent |
| 25418 | "@unittest.skip(\"Disabled by Guix\")\n" |
| 25419 | line))))) |
| 25420 | (replace 'check |
| 25421 | (lambda* (#:key tests? #:allow-other-keys) |
| 25422 | (when tests? |
| 25423 | (invoke "python" "-m" "multiprocess.tests"))))))) |
| 25424 | (propagated-inputs |
| 25425 | (list python-dill)) |
| 25426 | (home-page "https://pypi.org/project/multiprocess/") |
| 25427 | (synopsis "Multiprocessing and multithreading in Python") |
| 25428 | (description |
| 25429 | "This package is a fork of the multiprocessing Python package, a package |
| 25430 | which supports the spawning of processes using the API of the standard |
| 25431 | library's @code{threading} module.") |
| 25432 | (license license:bsd-3))) |
| 25433 | |
| 25434 | (define-public python-multiprocessing-on-dill |
| 25435 | (package |
| 25436 | (name "python-multiprocessing-on-dill") |
| 25437 | (version "3.5.0a4") |
| 25438 | (source (origin |
| 25439 | (method url-fetch) |
| 25440 | (uri (pypi-uri "multiprocessing_on_dill" version)) |
| 25441 | (sha256 |
| 25442 | (base32 |
| 25443 | "1rs5a3hx1fcpfsxxkl5kx6g06c82wqjqgdqyny5l1ggl1wq0rmfn")))) |
| 25444 | (build-system python-build-system) |
| 25445 | (arguments |
| 25446 | (list |
| 25447 | #:phases |
| 25448 | #~(modify-phases %standard-phases |
| 25449 | (replace 'check |
| 25450 | (lambda* (#:key tests? #:allow-other-keys) |
| 25451 | (when tests? |
| 25452 | (invoke "pytest" "-vv"))))))) |
| 25453 | (propagated-inputs (list python-dill)) |
| 25454 | (native-inputs (list python-check-manifest python-pytest python-wheel)) |
| 25455 | (home-page "https://github.com/sixty-north/multiprocessing_on_dill") |
| 25456 | (synopsis "Multiprocessing using dill instead of pickle") |
| 25457 | (description |
| 25458 | "This package provides a friendly fork of multiprocessing which uses dill |
| 25459 | instead of pickle.") |
| 25460 | (license license:psfl))) |
| 25461 | |
| 25462 | (define-public python-toolrack |
| 25463 | (package |
| 25464 | (name "python-toolrack") |
| 25465 | (version "3.0.1") |
| 25466 | (source |
| 25467 | (origin |
| 25468 | (method git-fetch) |
| 25469 | (uri (git-reference |
| 25470 | (url "https://github.com/albertodonato/toolrack") |
| 25471 | (commit (string-append "v" version)))) |
| 25472 | (file-name (git-file-name name version)) |
| 25473 | (sha256 |
| 25474 | (base32 |
| 25475 | "0ych11b7nchnkhqgf7dgivbvn2lzafjsi7nhb1an5zjjyns39gpx")))) |
| 25476 | (build-system python-build-system) |
| 25477 | (arguments |
| 25478 | (list |
| 25479 | #:phases |
| 25480 | #~(modify-phases %standard-phases |
| 25481 | (add-after 'unpack 'patch-/bin/sh |
| 25482 | (lambda _ |
| 25483 | (substitute* "toolrack/aio/tests/test_process.py" |
| 25484 | (("/bin/sh") |
| 25485 | (which "sh"))))) |
| 25486 | (replace 'check |
| 25487 | (lambda* (#:key tests? #:allow-other-keys) |
| 25488 | (when tests? |
| 25489 | (invoke "pytest" "-vv" "--pyargs" "toolrack" |
| 25490 | "-k" |
| 25491 | (string-append |
| 25492 | ;; These tests fail for unknown reason comparing the |
| 25493 | ;; expected output of shell scripts. |
| 25494 | "not test_parse_stderr " |
| 25495 | "and not test_parse_no_ending_newline " |
| 25496 | "and not test_parse_stdout")))))))) |
| 25497 | (native-inputs (list python-pytest python-pytest-asyncio |
| 25498 | python-pytest-mock)) |
| 25499 | (home-page "https://github.com/albertodonato/toolrack") |
| 25500 | (synopsis "Collection of Python utility functions and classes") |
| 25501 | (description "This package provides a collection of miscellaneous utility |
| 25502 | functions and classes.") |
| 25503 | (license license:lgpl3+))) |
| 25504 | |
| 25505 | (define-public python-toolz |
| 25506 | (package |
| 25507 | (name "python-toolz") |
| 25508 | (version "0.11.2") |
| 25509 | (source |
| 25510 | (origin |
| 25511 | (method url-fetch) |
| 25512 | (uri (pypi-uri "toolz" version)) |
| 25513 | (sha256 |
| 25514 | (base32 |
| 25515 | "0cxwlh8dz8gq0l0bzchjnqqwhdp261nfd958ppqm518k2mg2scbb")))) |
| 25516 | (build-system python-build-system) |
| 25517 | (arguments |
| 25518 | `(#:phases |
| 25519 | (modify-phases %standard-phases |
| 25520 | (replace 'check |
| 25521 | (lambda* (#:key inputs outputs tests? #:allow-other-keys) |
| 25522 | (when tests? |
| 25523 | (add-installed-pythonpath inputs outputs) |
| 25524 | (invoke "python" "-m" "pytest" "--doctest-modules" |
| 25525 | "--pyargs" "toolz"))))))) |
| 25526 | (native-inputs |
| 25527 | (list python-pytest)) |
| 25528 | (home-page "https://github.com/pytoolz/toolz/") |
| 25529 | (synopsis "List processing tools and functional utilities") |
| 25530 | (description |
| 25531 | "This package provides a set of utility functions for iterators, |
| 25532 | functions, and dictionaries.") |
| 25533 | (license license:bsd-3))) |
| 25534 | |
| 25535 | (define-public python-cytoolz |
| 25536 | (package |
| 25537 | (name "python-cytoolz") |
| 25538 | (version "0.11.2") |
| 25539 | (source |
| 25540 | (origin |
| 25541 | (method url-fetch) |
| 25542 | (uri (pypi-uri "cytoolz" version)) |
| 25543 | (sha256 |
| 25544 | (base32 |
| 25545 | "1d12mgaippxxhn24w2hj0my3aqkx80fks5g4wzfdsvl0acqnc8za")) |
| 25546 | (modules '((guix build utils))) |
| 25547 | (snippet |
| 25548 | '(for-each delete-file (find-files "cytoolz" "\\.c$"))))) |
| 25549 | (build-system python-build-system) |
| 25550 | ;; FIXME: tests fail with "module 'cytoolz.curried' has no attribute |
| 25551 | ;; 'exceptions'" |
| 25552 | (arguments '(#:tests? #f)) |
| 25553 | (propagated-inputs |
| 25554 | (list python-toolz)) |
| 25555 | (native-inputs |
| 25556 | (list python-cython)) |
| 25557 | (home-page "https://github.com/pytoolz/cytoolz") |
| 25558 | (synopsis "High performance functional utilities") |
| 25559 | (description |
| 25560 | "The cytoolz package implements the same API as provided by toolz. The |
| 25561 | main differences are that @code{cytoolz} is faster and cytoolz offers a C API |
| 25562 | that is accessible to other projects developed in Cython.") |
| 25563 | (license license:bsd-3))) |
| 25564 | |
| 25565 | (define-public python-sortedcollections |
| 25566 | (package |
| 25567 | (name "python-sortedcollections") |
| 25568 | (version "2.1.0") |
| 25569 | (source |
| 25570 | (origin |
| 25571 | (method url-fetch) |
| 25572 | (uri (pypi-uri "sortedcollections" version)) |
| 25573 | (sha256 |
| 25574 | (base32 |
| 25575 | "1kfabpnjyjm5ml2zspry9jy3xq49aybchgaa4ahic2jqdjfn1sfq")))) |
| 25576 | (build-system python-build-system) |
| 25577 | (propagated-inputs |
| 25578 | (list python-sortedcontainers)) |
| 25579 | (arguments '(#:tests? #f)) ; Tests not included in release tarball. |
| 25580 | (home-page "https://www.grantjenks.com/docs/sortedcollections/") |
| 25581 | (synopsis "Python Sorted Collections") |
| 25582 | (description "Sorted Collections is a Python sorted collections library.") |
| 25583 | (license license:asl2.0))) |
| 25584 | |
| 25585 | (define-public python-sortedcontainers |
| 25586 | (package |
| 25587 | (name "python-sortedcontainers") |
| 25588 | (version "2.4.0") |
| 25589 | (source |
| 25590 | (origin |
| 25591 | (method url-fetch) |
| 25592 | (uri (pypi-uri "sortedcontainers" version)) |
| 25593 | (sha256 |
| 25594 | (base32 |
| 25595 | "126vpywl7aly6zir033a9indgyficlzl68qls61nn2y3djhabji5")))) |
| 25596 | (build-system python-build-system) |
| 25597 | (arguments |
| 25598 | ;; TODO: Circular dependency on pytest. |
| 25599 | '(#:tests? #f)) |
| 25600 | (home-page "https://grantjenks.com/docs/sortedcontainers/") |
| 25601 | (synopsis "Sorted List, Sorted Dict, Sorted Set") |
| 25602 | (description |
| 25603 | "This package provides a sorted collections library, written in |
| 25604 | pure-Python.") |
| 25605 | (license license:asl2.0))) |
| 25606 | |
| 25607 | (define python-cloudpickle-testpkg |
| 25608 | (package |
| 25609 | (name "python-cloudpickle-testpkg") |
| 25610 | (version "1.6.0") |
| 25611 | (source |
| 25612 | (origin |
| 25613 | ;; Archive on pypi does not include test infrastructure. |
| 25614 | (method git-fetch) |
| 25615 | (uri (git-reference |
| 25616 | (url "https://github.com/cloudpipe/cloudpickle") |
| 25617 | (commit (string-append "v" version)))) |
| 25618 | (file-name (git-file-name name version)) |
| 25619 | (sha256 |
| 25620 | (base32 |
| 25621 | "1584d21d4rcpryn8yfz0pjnjprk4zm367m0razdcz8cjbsh0dxp6")))) |
| 25622 | (build-system python-build-system) |
| 25623 | (arguments |
| 25624 | '(#:phases |
| 25625 | (modify-phases %standard-phases |
| 25626 | (add-after 'unpack 'chdir |
| 25627 | (lambda _ (chdir "tests/cloudpickle_testpkg")))))) |
| 25628 | (home-page "https://github.com/cloudpipe/cloudpickle") |
| 25629 | (synopsis "Extended pickling support for Python objects") |
| 25630 | (description |
| 25631 | "Cloudpickle makes it possible to serialize Python constructs not |
| 25632 | supported by the default pickle module from the Python standard library. It |
| 25633 | is especially useful for cluster computing where Python expressions are |
| 25634 | shipped over the network to execute on remote hosts, possibly close to the |
| 25635 | data.") |
| 25636 | (license license:bsd-3))) |
| 25637 | |
| 25638 | (define-public python-cloudpickle |
| 25639 | (package |
| 25640 | (inherit python-cloudpickle-testpkg) |
| 25641 | (name "python-cloudpickle") |
| 25642 | (build-system python-build-system) |
| 25643 | (arguments |
| 25644 | '(#:phases |
| 25645 | (modify-phases %standard-phases |
| 25646 | (replace 'check |
| 25647 | (lambda* (#:key tests? #:allow-other-keys) |
| 25648 | (if tests? |
| 25649 | (invoke "pytest" "-s" "-vv") |
| 25650 | (format #t "test suite not run~%"))))))) |
| 25651 | (native-inputs |
| 25652 | (list ;; For tests. |
| 25653 | python-cloudpickle-testpkg python-psutil python-pytest |
| 25654 | python-tornado-6)) |
| 25655 | (home-page "https://github.com/cloudpipe/cloudpickle") |
| 25656 | (synopsis "Extended pickling support for Python objects") |
| 25657 | (description |
| 25658 | "Cloudpickle makes it possible to serialize Python constructs not |
| 25659 | supported by the default pickle module from the Python standard library. It |
| 25660 | is especially useful for cluster computing where Python expressions are |
| 25661 | shipped over the network to execute on remote hosts, possibly close to the |
| 25662 | data.") |
| 25663 | (license license:bsd-3))) |
| 25664 | |
| 25665 | (define-public python-locket |
| 25666 | (package |
| 25667 | (name "python-locket") |
| 25668 | (version "1.0.0") |
| 25669 | (source |
| 25670 | (origin |
| 25671 | (method url-fetch) |
| 25672 | (uri (pypi-uri "locket" version)) |
| 25673 | (sha256 |
| 25674 | (base32 |
| 25675 | "0cm6290zm3ba62n2x2piy3s8d41hrmffda2nw18ggfwb582lq3aw")))) |
| 25676 | (build-system python-build-system) |
| 25677 | (home-page "https://github.com/mwilliamson/locket.py") |
| 25678 | (synopsis "File-based locks for Python") |
| 25679 | (description |
| 25680 | "Locket implements a lock that can be used by multiple processes provided |
| 25681 | they use the same path.") |
| 25682 | (license license:bsd-2))) |
| 25683 | |
| 25684 | (define-public python-blosc |
| 25685 | (package |
| 25686 | (name "python-blosc") |
| 25687 | (version "1.11.1") |
| 25688 | (source |
| 25689 | (origin |
| 25690 | (method url-fetch) |
| 25691 | (uri (pypi-uri "blosc" version)) |
| 25692 | (sha256 |
| 25693 | (base32 |
| 25694 | "0xmjs28sgpnb940zrhw010dq2m9d8a5h4fgnjyk6645fgfr1j8f2")) |
| 25695 | (snippet |
| 25696 | #~(begin (use-modules (guix build utils)) |
| 25697 | (delete-file-recursively "blosc/c-blosc"))))) |
| 25698 | (build-system python-build-system) |
| 25699 | (arguments |
| 25700 | (list #:phases |
| 25701 | #~(modify-phases %standard-phases |
| 25702 | (add-after 'unpack 'find-blosc |
| 25703 | (lambda* (#:key inputs #:allow-other-keys) |
| 25704 | (setenv "USE_SYSTEM_BLOSC" "1") |
| 25705 | (setenv "Blosc_ROOT" #$(this-package-input "c-blosc")))) |
| 25706 | (replace 'check |
| 25707 | (lambda* (#:key tests? #:allow-other-keys) |
| 25708 | (when tests? |
| 25709 | (invoke "python" "-m" "blosc.test"))))))) |
| 25710 | (propagated-inputs |
| 25711 | (list python-scikit-build python-numpy)) |
| 25712 | (inputs (list c-blosc)) |
| 25713 | (native-inputs (list cmake-minimal)) |
| 25714 | (home-page "https://github.com/blosc/python-blosc") |
| 25715 | (synopsis "Python wrapper for the Blosc data compressor library") |
| 25716 | (description "Blosc is a high performance compressor optimized for binary |
| 25717 | data. It has been designed to transmit data to the processor cache faster |
| 25718 | than the traditional, non-compressed, direct memory fetch approach via a |
| 25719 | @code{memcpy()} system call. |
| 25720 | |
| 25721 | Blosc works well for compressing numerical arrays that contains data with |
| 25722 | relatively low entropy, like sparse data, time series, grids with |
| 25723 | regular-spaced values, etc. |
| 25724 | |
| 25725 | This Python package wraps the Blosc library.") |
| 25726 | (license license:bsd-3))) |
| 25727 | |
| 25728 | (define-public python-partd |
| 25729 | (package |
| 25730 | (name "python-partd") |
| 25731 | (version "1.2.0") |
| 25732 | (source |
| 25733 | (origin |
| 25734 | (method url-fetch) |
| 25735 | (uri (pypi-uri "partd" version)) |
| 25736 | (sha256 |
| 25737 | (base32 |
| 25738 | "1sy3vdfyyx3bc5590zb7gwpsmimqz8m992x9hsydq8nmhixqjrxa")))) |
| 25739 | (build-system python-build-system) |
| 25740 | (propagated-inputs |
| 25741 | (list python-blosc |
| 25742 | python-locket |
| 25743 | python-numpy |
| 25744 | python-pandas |
| 25745 | python-pyzmq |
| 25746 | python-toolz)) |
| 25747 | (home-page "https://github.com/dask/partd/") |
| 25748 | (synopsis "Appendable key-value storage") |
| 25749 | (description "Partd stores key-value pairs. Values are raw bytes. We |
| 25750 | append on old values. Partd excels at shuffling operations.") |
| 25751 | (license license:bsd-3))) |
| 25752 | |
| 25753 | (define-public python-fsspec |
| 25754 | (package |
| 25755 | (name "python-fsspec") |
| 25756 | (version "2023.5.0") |
| 25757 | (source |
| 25758 | (origin |
| 25759 | (method git-fetch) |
| 25760 | (uri (git-reference |
| 25761 | (url "https://github.com/fsspec/filesystem_spec") |
| 25762 | (commit version))) |
| 25763 | (file-name (git-file-name name version)) |
| 25764 | (sha256 |
| 25765 | (base32 |
| 25766 | "0c0brw5s4330rj0yjcrqi56hanvaahn43854jai70qzqg1qvyl88")))) |
| 25767 | (build-system pyproject-build-system) |
| 25768 | (arguments |
| 25769 | (list |
| 25770 | #:phases |
| 25771 | #~(modify-phases %standard-phases |
| 25772 | (add-after 'unpack 'fix-version |
| 25773 | (lambda _ |
| 25774 | (substitute* "fsspec/__init__.py" |
| 25775 | (("__version__ = .*") |
| 25776 | (string-append "__version__ = \"" #$version "\""))) |
| 25777 | (substitute* "setup.py" |
| 25778 | (("versioneer.get_version\\(\\)") |
| 25779 | (string-append "\"" #$version "\"")))))) |
| 25780 | #:test-flags |
| 25781 | '(list |
| 25782 | ;; requires internet access |
| 25783 | "--ignore=fsspec/implementations/tests/test_dbfs.py"))) |
| 25784 | (propagated-inputs |
| 25785 | (list python-aiohttp python-libarchive-c python-requests python-tqdm)) |
| 25786 | (native-inputs |
| 25787 | (list python-pytest python-pytest-mock python-numpy)) |
| 25788 | (home-page "https://github.com/intake/filesystem_spec") |
| 25789 | (synopsis "File-system specification") |
| 25790 | (description "The purpose of this package is to produce a template or |
| 25791 | specification for a file-system interface, that specific implementations |
| 25792 | should follow, so that applications making use of them can rely on a common |
| 25793 | behavior and not have to worry about the specific internal implementation |
| 25794 | decisions with any given backend.") |
| 25795 | (license license:bsd-3))) |
| 25796 | |
| 25797 | ;; Note: Remember to update python-distributed when updating dask. |
| 25798 | (define-public python-dask |
| 25799 | (package |
| 25800 | (name "python-dask") |
| 25801 | (version "2023.7.0") |
| 25802 | (source |
| 25803 | (origin |
| 25804 | (method git-fetch) |
| 25805 | (uri (git-reference |
| 25806 | (url "https://github.com/dask/dask/") |
| 25807 | (commit "8523b3bae2ec0183d9d92cc536a3405f15189b7e"))) |
| 25808 | (file-name (git-file-name name version)) |
| 25809 | (sha256 |
| 25810 | (base32 "1x617m0jlc63v938kqga9mhflhac3aj1ylq5mkpf2g9pd9x2hcbz")))) |
| 25811 | (build-system pyproject-build-system) |
| 25812 | (arguments |
| 25813 | (list |
| 25814 | ;; Avoid coverage |
| 25815 | #:test-flags |
| 25816 | #~(list "-m" "not gpu and not slow and not network" |
| 25817 | "-k" (string-append |
| 25818 | ;; This one cannot be interrupted. |
| 25819 | "not test_interrupt" |
| 25820 | ;; This one expects a deprecation warning that never |
| 25821 | ;; comes. |
| 25822 | " and not test_RandomState_only_funcs") |
| 25823 | ;; Tests must run from the output directory, because otherwise |
| 25824 | ;; it complains about the difference between the target |
| 25825 | ;; directory embedded in the pyc files and the source directory |
| 25826 | ;; from which we run tests. |
| 25827 | (getcwd)) |
| 25828 | #:phases |
| 25829 | #~(modify-phases %standard-phases |
| 25830 | (add-after 'unpack 'versioneer |
| 25831 | (lambda _ |
| 25832 | ;; Our version of versioneer needs setup.cfg. This is adapted |
| 25833 | ;; from pyproject.toml. |
| 25834 | (with-output-to-file "setup.cfg" |
| 25835 | (lambda () |
| 25836 | (display "\ |
| 25837 | [versioneer] |
| 25838 | VCS = git |
| 25839 | style = pep440 |
| 25840 | versionfile_source = dask/_version.py |
| 25841 | versionfile_build = dask/_version.py |
| 25842 | tag_prefix = |
| 25843 | parentdir_prefix = dask- |
| 25844 | "))) |
| 25845 | (invoke "versioneer" "install") |
| 25846 | (substitute* "setup.py" |
| 25847 | (("versioneer.get_version\\(\\)") |
| 25848 | (string-append "\"" #$version "\""))))) |
| 25849 | (add-after 'unpack 'fix-pytest-config |
| 25850 | (lambda _ |
| 25851 | ;; This option is not supported by our version of pytest. |
| 25852 | (substitute* "pyproject.toml" |
| 25853 | (("--cov-config=pyproject.toml") "")))) |
| 25854 | (add-before 'check 'pre-check |
| 25855 | (lambda _ (chdir "/tmp")))))) |
| 25856 | (propagated-inputs |
| 25857 | (list python-cloudpickle |
| 25858 | python-fsspec |
| 25859 | python-importlib-metadata ;needed at runtime for dask/_compatibility.py |
| 25860 | python-numpy |
| 25861 | python-packaging |
| 25862 | python-pandas |
| 25863 | python-partd |
| 25864 | python-toolz |
| 25865 | python-pyyaml)) |
| 25866 | (native-inputs |
| 25867 | (list python-click |
| 25868 | python-importlib-metadata |
| 25869 | python-pytest python-pytest-runner python-pytest-rerunfailures |
| 25870 | python-versioneer)) |
| 25871 | (home-page "https://github.com/dask/dask/") |
| 25872 | (synopsis "Parallel computing with task scheduling") |
| 25873 | (description |
| 25874 | "Dask is a flexible parallel computing library for analytics. It |
| 25875 | consists of two components: dynamic task scheduling optimized for computation, |
| 25876 | and large data collections like parallel arrays, dataframes, and lists that |
| 25877 | extend common interfaces like NumPy, Pandas, or Python iterators to |
| 25878 | larger-than-memory or distributed environments. These parallel collections |
| 25879 | run on top of the dynamic task schedulers.") |
| 25880 | (license license:bsd-3))) |
| 25881 | |
| 25882 | (define-public python-ilinkedlist |
| 25883 | (package |
| 25884 | (name "python-ilinkedlist") |
| 25885 | (version "0.4.0") |
| 25886 | (source |
| 25887 | (origin |
| 25888 | (method url-fetch) |
| 25889 | (uri (pypi-uri "ilinkedlist" version)) |
| 25890 | (sha256 |
| 25891 | (base32 |
| 25892 | "0nrw4sr3afldrp7073hvc0rgdz282s0l819jdmj1i6nn05v33h0l")))) |
| 25893 | (build-system python-build-system) |
| 25894 | (native-inputs (list python-pytest)) |
| 25895 | (inputs (list python)) |
| 25896 | (home-page "https://github.com/luther9/ilinkedlist-py") |
| 25897 | (synopsis "Immutable linked list library") |
| 25898 | (description |
| 25899 | "This is a implementation of immutable linked lists for Python. It |
| 25900 | contains @code{nil} (the empty linked list) and a @code{Pair} class for nodes. |
| 25901 | Since a linked list is treated as immutable, it is hashable, and its length |
| 25902 | can be retrieved in constant time. Some of the terminology is inspired by |
| 25903 | LISP. It is possible to create an improper list by creating a @code{Pair} |
| 25904 | with a non-list @code{cdr}.") |
| 25905 | (license license:gpl3+))) |
| 25906 | |
| 25907 | (define-public python-readlike |
| 25908 | (package |
| 25909 | (name "python-readlike") |
| 25910 | (version "0.1.3") |
| 25911 | (source |
| 25912 | (origin |
| 25913 | (method url-fetch) |
| 25914 | (uri (pypi-uri "readlike" version)) |
| 25915 | (sha256 |
| 25916 | (base32 "027w8fvi50ksl57q0a7kb5zvmq8jxaawnviib1jdqw0p3igvm1j4")))) |
| 25917 | (build-system python-build-system) |
| 25918 | (home-page "https://github.com/jangler/readlike") |
| 25919 | (synopsis "GNU Readline-like line editing module") |
| 25920 | (description |
| 25921 | "This Python module provides line editing functions similar to the default |
| 25922 | Emacs-style ones of GNU Readline. Unlike the Python standard library's |
| 25923 | @code{readline} package, this one allows access to those capabilities in settings |
| 25924 | outside of a standard command-line interface. It is especially well-suited to |
| 25925 | interfacing with Urwid, due to a shared syntax for describing key inputs. |
| 25926 | |
| 25927 | Currently, all stateless Readline commands are implemented. Yanking and history |
| 25928 | are not supported.") |
| 25929 | (license license:expat))) |
| 25930 | |
| 25931 | (define-public python-reparser |
| 25932 | (package |
| 25933 | (name "python-reparser") |
| 25934 | (version "1.4.3") |
| 25935 | (source |
| 25936 | (origin |
| 25937 | (method url-fetch) |
| 25938 | (uri (pypi-uri "ReParser" version)) |
| 25939 | (sha256 |
| 25940 | (base32 "0nniqb69xr0fv7ydlmrr877wyyjb61nlayka7xr08vlxl9caz776")))) |
| 25941 | (build-system python-build-system) |
| 25942 | (home-page "https://github.com/xmikos/reparser") |
| 25943 | (synopsis "Simple lexer/parser for inline markup based on regular expressions") |
| 25944 | (description |
| 25945 | "This Python library provides a simple lexer/parser for inline markup based |
| 25946 | on regular expressions.") |
| 25947 | (license license:expat))) |
| 25948 | |
| 25949 | (define-public python-retrying |
| 25950 | (package |
| 25951 | (name "python-retrying") |
| 25952 | (version "1.3.3") |
| 25953 | (source |
| 25954 | (origin |
| 25955 | (method git-fetch) |
| 25956 | (uri (git-reference |
| 25957 | (url "https://github.com/rholder/retrying") |
| 25958 | (commit (string-append "v" version)))) |
| 25959 | (file-name (git-file-name name version)) |
| 25960 | (sha256 |
| 25961 | (base32 |
| 25962 | "1kqipkbdaw5s1xg0gi29awm03vp1x8dz24pjidgxagvkvrjpzhi7")))) |
| 25963 | (build-system python-build-system) |
| 25964 | (propagated-inputs |
| 25965 | (list python-six)) |
| 25966 | (home-page "https://github.com/rholder/retrying") |
| 25967 | (synopsis "Library for adding retry behavior") |
| 25968 | (description "Retrying is a general-purpose retrying library to simplify |
| 25969 | the task of adding retry behavior to just about anything. |
| 25970 | |
| 25971 | Features: |
| 25972 | |
| 25973 | @itemize |
| 25974 | @item Generic Decorator API. |
| 25975 | @item Specify stop condition (i.e. limit by number of attempts). |
| 25976 | @item Specify wait condition (i.e. exponential backoff sleeping between attempts). |
| 25977 | @item Customize retrying on Exceptions. |
| 25978 | @item Customize retrying on expected returned result. |
| 25979 | @end itemize") |
| 25980 | (license license:asl2.0))) |
| 25981 | |
| 25982 | (define-public python-precis-i18n |
| 25983 | (package |
| 25984 | (name "python-precis-i18n") |
| 25985 | (version "1.0.3") |
| 25986 | (source |
| 25987 | (origin |
| 25988 | (method url-fetch) |
| 25989 | (uri (pypi-uri "precis_i18n" version)) |
| 25990 | (sha256 |
| 25991 | (base32 |
| 25992 | "1qfb78zpx565vqkg0xhx75pna9sc35m370vpcz82982c8ix3ypyz")))) |
| 25993 | (build-system python-build-system) |
| 25994 | (home-page "https://github.com/byllyfish/precis_i18n") |
| 25995 | (synopsis "Implementation of the PRECIS framework") |
| 25996 | (description |
| 25997 | "This module implements the PRECIS Framework as described in RFC 8264, |
| 25998 | RFC 8265 and RFC 8266.") |
| 25999 | (license license:expat))) |
| 26000 | |
| 26001 | (define-public python-absl-py |
| 26002 | (package |
| 26003 | (name "python-absl-py") |
| 26004 | (version "1.4.0") |
| 26005 | (source |
| 26006 | (origin |
| 26007 | (method url-fetch) |
| 26008 | (uri (pypi-uri "absl-py" version)) |
| 26009 | (sha256 |
| 26010 | (base32 |
| 26011 | "0ga3b0m8lfsv1m3260p83lhis52yvz3d42q8gip4gfj823849hnj")))) |
| 26012 | (build-system pyproject-build-system) |
| 26013 | (home-page "https://github.com/abseil/abseil-py") |
| 26014 | (synopsis "Abseil Python common libraries") |
| 26015 | (description |
| 26016 | "This package provides the Abseil Python Common Libraries, a collection |
| 26017 | of Python libraries for building Python applications.") |
| 26018 | (license license:asl2.0))) |
| 26019 | |
| 26020 | (define-public python-astor |
| 26021 | (package |
| 26022 | (name "python-astor") |
| 26023 | (version "0.8.1") |
| 26024 | (source |
| 26025 | (origin |
| 26026 | (method url-fetch) |
| 26027 | (uri (pypi-uri "astor" version)) |
| 26028 | (sha256 |
| 26029 | (base32 |
| 26030 | "0ppscdzzvxpznclkmhhj53iz314x3pfv4yc7c6gwxqgljgdgyvka")))) |
| 26031 | (build-system python-build-system) |
| 26032 | ;; FIXME: There are two errors and two test failures. |
| 26033 | (arguments `(#:tests? #f)) |
| 26034 | (home-page "https://github.com/berkerpeksag/astor") |
| 26035 | (synopsis "Read and write Python ASTs") |
| 26036 | (description "Astor is designed to allow easy manipulation of Python |
| 26037 | source via the Abstract Syntax Tree.") |
| 26038 | (license license:bsd-3))) |
| 26039 | |
| 26040 | (define-public python-astunparse |
| 26041 | (package |
| 26042 | (name "python-astunparse") |
| 26043 | (version "1.6.3") |
| 26044 | (source |
| 26045 | (origin |
| 26046 | (method url-fetch) |
| 26047 | (uri (pypi-uri "astunparse" version)) |
| 26048 | (sha256 |
| 26049 | (base32 "0wh8jjvwafxc7rvbyb13cdwndkicm7cry1bd8p1q9l7has23mnas")))) |
| 26050 | (build-system python-build-system) |
| 26051 | (arguments '(#:tests? #f)) ; there are none |
| 26052 | (propagated-inputs |
| 26053 | (list python-six python-wheel)) |
| 26054 | (home-page "https://github.com/simonpercivall/astunparse") |
| 26055 | (synopsis "AST unparser for Python") |
| 26056 | (description "This package provides an AST unparser for Python. It is a |
| 26057 | factored out version of @code{unparse} found in the Python source |
| 26058 | distribution.") |
| 26059 | (license license:bsd-3))) |
| 26060 | |
| 26061 | (define-public python-gast |
| 26062 | (package |
| 26063 | (name "python-gast") |
| 26064 | (version "0.5.3") |
| 26065 | (source |
| 26066 | (origin |
| 26067 | (method url-fetch) |
| 26068 | (uri (pypi-uri "gast" version)) |
| 26069 | (sha256 |
| 26070 | (base32 "1sidaczriw54pfkj3523y9j9q2harrczc1qqgnfaylz641ca5gng")))) |
| 26071 | (build-system python-build-system) |
| 26072 | (arguments |
| 26073 | '(#:phases (modify-phases %standard-phases |
| 26074 | (replace 'check |
| 26075 | (lambda* (#:key tests? #:allow-other-keys) |
| 26076 | (when tests? |
| 26077 | (invoke "pytest" "-vv"))))))) |
| 26078 | (native-inputs |
| 26079 | (list python-pytest)) |
| 26080 | (propagated-inputs |
| 26081 | (list python-astunparse)) |
| 26082 | (home-page "https://github.com/serge-sans-paille/gast/") |
| 26083 | (synopsis "Generic Python AST that abstracts the underlying Python version") |
| 26084 | (description |
| 26085 | "GAST provides a compatibility layer between the AST of various Python |
| 26086 | versions, as produced by @code{ast.parse} from the standard @code{ast} |
| 26087 | module.") |
| 26088 | (license license:bsd-3))) |
| 26089 | |
| 26090 | (define-public python-wikidata |
| 26091 | (package |
| 26092 | (name "python-wikidata") |
| 26093 | (version "0.6.1") |
| 26094 | (source |
| 26095 | (origin |
| 26096 | (method url-fetch) |
| 26097 | (uri (pypi-uri "Wikidata" version)) |
| 26098 | (sha256 |
| 26099 | (base32 |
| 26100 | "08nlnydddfp1jj0cdmshvld1irzngbp3dij928wqsg9ziklm6mw9")))) |
| 26101 | (build-system python-build-system) |
| 26102 | (propagated-inputs |
| 26103 | (list python-babel)) |
| 26104 | (home-page "https://github.com/dahlia/wikidata") |
| 26105 | (synopsis "Wikidata client library") |
| 26106 | (description |
| 26107 | "This package provides a Python interface to |
| 26108 | @url{https://www.wikidata.org/, Wikidata}.") |
| 26109 | (properties '((upstream-name . "Wikidata"))) |
| 26110 | (license license:gpl3+))) |
| 26111 | |
| 26112 | (define-public python-doctest-ignore-unicode |
| 26113 | (package |
| 26114 | (name "python-doctest-ignore-unicode") |
| 26115 | (version "0.1.2") |
| 26116 | (source |
| 26117 | (origin |
| 26118 | (method url-fetch) |
| 26119 | (uri (pypi-uri "doctest-ignore-unicode" version)) |
| 26120 | (sha256 |
| 26121 | (base32 |
| 26122 | "1m9aa4qnyj21lbq4sbvmv1vcz7zksss4rz37ddf2hxv4hk8b547w")))) |
| 26123 | (build-system python-build-system) |
| 26124 | (native-inputs |
| 26125 | (list python-nose)) |
| 26126 | (home-page "https://github.com/gnublade/doctest-ignore-unicode") |
| 26127 | (synopsis "Ignore Unicode literal prefixes in doctests") |
| 26128 | (description |
| 26129 | "This package adds support for a flag to ignore Unicode literal prefixes |
| 26130 | in doctests.") |
| 26131 | (license license:asl2.0))) |
| 26132 | |
| 26133 | (define-public python-attr |
| 26134 | (package |
| 26135 | (name "python-attr") |
| 26136 | (version "0.3.1") |
| 26137 | (source |
| 26138 | (origin |
| 26139 | (method url-fetch) |
| 26140 | (uri (pypi-uri "attr" version)) |
| 26141 | (sha256 |
| 26142 | (base32 |
| 26143 | "0pbpskvxp5hzdvcaf766ljwpckshir8sf7z6jqji6zyib20594ch")))) |
| 26144 | (build-system python-build-system) |
| 26145 | (home-page "https://github.com/denis-ryzhkov/attr") |
| 26146 | (synopsis "Decorator for attributes of target function or class") |
| 26147 | (description "Simple decorator to set attributes of target function or |
| 26148 | class in a @acronym{DRY, Don't Repeat Yourself} way.") |
| 26149 | (license license:expat))) |
| 26150 | |
| 26151 | (define-public python-construct |
| 26152 | (package |
| 26153 | (name "python-construct") |
| 26154 | (version "2.10.68") |
| 26155 | (source |
| 26156 | (origin |
| 26157 | ;; There are no tests in the PyPI tarball. |
| 26158 | (method git-fetch) |
| 26159 | (uri (git-reference |
| 26160 | (url "https://github.com/construct/construct") |
| 26161 | (commit (string-append "v" version)))) |
| 26162 | (file-name (git-file-name name version)) |
| 26163 | (sha256 |
| 26164 | (base32 "1b59kq8scxhn9afqgmksk45n53gawylqm8gw3k0vmljg274xi7vf")))) |
| 26165 | (build-system python-build-system) |
| 26166 | (arguments |
| 26167 | (list #:phases |
| 26168 | #~(modify-phases %standard-phases |
| 26169 | (replace 'check |
| 26170 | (lambda* (#:key tests? #:allow-other-keys) |
| 26171 | (when tests? |
| 26172 | (invoke "pytest" "-v" "tests/"))))))) |
| 26173 | (native-inputs |
| 26174 | (list python-pytest python-pytest-benchmark)) |
| 26175 | (propagated-inputs |
| 26176 | (list python-arrow |
| 26177 | python-cloudpickle |
| 26178 | python-lz4 |
| 26179 | python-numpy |
| 26180 | python-ruamel.yaml)) |
| 26181 | (home-page "https://construct.readthedocs.io") |
| 26182 | (synopsis "Declarative and symmetrical parser and builder for binary data") |
| 26183 | (description |
| 26184 | "This package provides both simple, atomic constructs (such as |
| 26185 | integers of various sizes), as well as composite ones which allow you |
| 26186 | form hierarchical and sequential structures of increasing complexity. |
| 26187 | It features bit and byte granularity, easy debugging and testing, an |
| 26188 | easy-to-extend subclass system, and lots of primitive constructs to |
| 26189 | make your work easier.") |
| 26190 | (license license:expat))) |
| 26191 | |
| 26192 | (define-public python-outcome |
| 26193 | (package |
| 26194 | (name "python-outcome") |
| 26195 | (version "1.2.0") |
| 26196 | (source |
| 26197 | (origin |
| 26198 | (method url-fetch) |
| 26199 | (uri (pypi-uri "outcome" version)) |
| 26200 | (sha256 |
| 26201 | (base32 "0wi6bmsfn73aw1hbpa1nhhshlx9k2vxcl7kp3z7h78sxwhyvv0kg")))) |
| 26202 | (build-system python-build-system) |
| 26203 | (arguments |
| 26204 | `(#:phases |
| 26205 | (modify-phases %standard-phases |
| 26206 | (replace 'check |
| 26207 | (lambda* (#:key inputs outputs #:allow-other-keys) |
| 26208 | (add-installed-pythonpath inputs outputs) |
| 26209 | (invoke "pytest" "-vv")))))) |
| 26210 | (native-inputs |
| 26211 | (list python-pytest python-pytest-cov python-pytest-asyncio)) |
| 26212 | (propagated-inputs |
| 26213 | (list python-attrs)) |
| 26214 | (home-page "https://github.com/python-trio/outcome") |
| 26215 | (synopsis "Capture the outcome of Python function calls") |
| 26216 | (description |
| 26217 | "Capture the outcome of Python function calls. Extracted from the Trio |
| 26218 | project.") |
| 26219 | ;; Either license applies. |
| 26220 | (license (list license:expat license:asl2.0)))) |
| 26221 | |
| 26222 | (define-public python-trio |
| 26223 | (package |
| 26224 | (name "python-trio") |
| 26225 | (version "0.21.0") |
| 26226 | (source |
| 26227 | (origin |
| 26228 | (method url-fetch) |
| 26229 | (uri (pypi-uri "trio" version)) |
| 26230 | (sha256 |
| 26231 | (base32 "04qwzy4295ajxpns0hrmn3asma80sjpimzpb3i877vwynsvkjgsj")))) |
| 26232 | (build-system python-build-system) |
| 26233 | (arguments |
| 26234 | `(#:phases |
| 26235 | (modify-phases %standard-phases |
| 26236 | (add-after 'unpack 'patch-sleep |
| 26237 | (lambda _ |
| 26238 | (substitute* "trio/tests/test_subprocess.py" |
| 26239 | (("/bin/sleep") |
| 26240 | (which "sleep"))))) |
| 26241 | (add-before 'check 'change-home |
| 26242 | (lambda _ |
| 26243 | ;; Tests require a writable home. |
| 26244 | (setenv "HOME" "/tmp"))) |
| 26245 | (replace 'check |
| 26246 | (lambda* (#:key tests? #:allow-other-keys) |
| 26247 | (when tests? |
| 26248 | (invoke "pytest" "-vv" |
| 26249 | "-n" (number->string (parallel-job-count)) |
| 26250 | "-k" |
| 26251 | (string-append |
| 26252 | ;; This test times out. |
| 26253 | "not test_ki_protection_works" |
| 26254 | ;; Assertion errors. |
| 26255 | " and not test_guest_mode_ki" |
| 26256 | " and not test_run_in_trio_thread_ki" |
| 26257 | " and not test_simple_cancel_scope_usage_doesnt_create\ |
| 26258 | _cyclic_garbage" |
| 26259 | " and not test_nursery_cancel_doesnt_create_cyclic_garbage" |
| 26260 | " and not test_cancel_scope_exit_doesnt_create_cyclic_garbage" |
| 26261 | " and not test_locals_destroyed_promptly_on_cancel" |
| 26262 | " and not test_ipython_exc_handler" |
| 26263 | " and not test_for_leaking_fds" |
| 26264 | ;; Signals don’t work in the build sandbox. |
| 26265 | " and not test_open_signal_receiver" |
| 26266 | ;; These try to raise KeyboardInterrupt which does not work |
| 26267 | ;; in the build environment. |
| 26268 | " and not test_ki_self" |
| 26269 | " and not test_ki_wakes_us_up" |
| 26270 | ;; Failure in name resolution. |
| 26271 | " and not test_getnameinfo" |
| 26272 | " and not test_SocketType_resolve" |
| 26273 | ;; OSError: protocol not found. |
| 26274 | " and not test_getprotobyname" |
| 26275 | ;; EOFError: Ran out of input. |
| 26276 | " and not test_static_tool_sees_all_symbols") |
| 26277 | "trio/tests"))))))) |
| 26278 | (native-inputs |
| 26279 | (list python-astor |
| 26280 | python-ipython |
| 26281 | python-jedi |
| 26282 | python-pylint |
| 26283 | python-pyopenssl |
| 26284 | python-pytest |
| 26285 | python-pytest-xdist |
| 26286 | python-pytest-cov |
| 26287 | python-trustme)) |
| 26288 | (propagated-inputs |
| 26289 | (list python-async-generator |
| 26290 | python-attrs |
| 26291 | python-cffi |
| 26292 | python-exceptiongroup |
| 26293 | python-idna |
| 26294 | python-outcome |
| 26295 | python-sniffio |
| 26296 | python-sortedcontainers)) |
| 26297 | (home-page "https://github.com/python-trio/trio") |
| 26298 | (synopsis "Friendly Python library for async concurrency and I/O") |
| 26299 | (description |
| 26300 | "Trio strives to be a production-quality, async/await-native I/O library |
| 26301 | for Python. Like all async libraries, its main purpose is to help you write |
| 26302 | programs that do multiple things at the same time with parallelized I/O.") |
| 26303 | ;; Either license applies. |
| 26304 | (license (list license:expat license:asl2.0)))) |
| 26305 | |
| 26306 | (define-public python-trio-typing |
| 26307 | (package |
| 26308 | (name "python-trio-typing") |
| 26309 | (version "0.8.0") |
| 26310 | (source |
| 26311 | (origin |
| 26312 | (method url-fetch) |
| 26313 | (uri (pypi-uri "trio-typing" version)) |
| 26314 | (sha256 |
| 26315 | (base32 "15wa66cs165wawh4pi808ac43n67b8jqddi5ppdcbkj5gfi68hpi")))) |
| 26316 | (build-system pyproject-build-system) |
| 26317 | (native-inputs (list python-attrs python-pytest)) |
| 26318 | (propagated-inputs |
| 26319 | (list python-mypy python-mypy-extensions python-trio |
| 26320 | python-typing-extensions)) |
| 26321 | (home-page "https://github.com/python-trio/trio-typing") |
| 26322 | (synopsis "Static type checking support for Trio and related projects") |
| 26323 | (description |
| 26324 | "This package provides: |
| 26325 | |
| 26326 | @itemize |
| 26327 | @item PEP 561 typing stubs packages for the Trio project packages: |
| 26328 | |
| 26329 | @itemize |
| 26330 | @item trio (@code{trio-stubs}) |
| 26331 | @item outcome (@code{outcome-stubs}) |
| 26332 | @item async_generator (@code{async_generator-stubs}) |
| 26333 | @end itemize |
| 26334 | |
| 26335 | @item A package @code{trio_typing} containing types that Trio programs often |
| 26336 | want to refer to (@code{AsyncGenerator[Y, S]} and @code{TaskStatus[T])} and |
| 26337 | a mypy plugin that smooths over some limitations in the basic type hints. |
| 26338 | @end itemize") |
| 26339 | ;; Either license applies. |
| 26340 | (license (list license:expat license:asl2.0)))) |
| 26341 | |
| 26342 | (define-public python-trio-websocket |
| 26343 | (package |
| 26344 | (name "python-trio-websocket") |
| 26345 | (version "0.9.2") |
| 26346 | (source |
| 26347 | (origin |
| 26348 | (method git-fetch) ;no tests in pypi archive |
| 26349 | (uri (git-reference |
| 26350 | (url "https://github.com/HyperionGray/trio-websocket") |
| 26351 | (commit version))) |
| 26352 | (file-name (git-file-name name version)) |
| 26353 | (sha256 |
| 26354 | (base32 "1yk2ak991kbl30xg8ldpggack1lwkizd7s5cpr28ir34z8iyjnpi")))) |
| 26355 | (build-system python-build-system) |
| 26356 | (arguments |
| 26357 | `(#:phases |
| 26358 | (modify-phases %standard-phases |
| 26359 | (replace 'check |
| 26360 | (lambda* (#:key tests? #:allow-other-keys) |
| 26361 | (when tests? (invoke "pytest" "-vv"))))))) |
| 26362 | (native-inputs (list python-pytest python-pytest-trio python-trustme)) |
| 26363 | (propagated-inputs (list python-async-generator python-trio python-wsproto)) |
| 26364 | (home-page "https://github.com/HyperionGray/trio-websocket") |
| 26365 | (synopsis "WebSocket library for Trio") |
| 26366 | (description "This library implements both server and client aspects of |
| 26367 | the @url{https://tools.ietf.org/html/rfc6455, the WebSocket protocol}, |
| 26368 | striving for safety, correctness, and ergonomics. It is based on the |
| 26369 | @url{https://wsproto.readthedocs.io/en/latest/, wsproto project}, which is a |
| 26370 | @url{https://sans-io.readthedocs.io/, Sans-IO} state machine that implements |
| 26371 | the majority of the WebSocket protocol, including framing, codecs, and events. |
| 26372 | This library handles I/O using @url{https://trio.readthedocs.io/en/latest/, |
| 26373 | the Trio framework}.") |
| 26374 | (license license:expat))) |
| 26375 | |
| 26376 | (define-public python-humanize |
| 26377 | (package |
| 26378 | (name "python-humanize") |
| 26379 | (version "0.5.1") |
| 26380 | (source |
| 26381 | (origin |
| 26382 | (method url-fetch) |
| 26383 | (uri (pypi-uri "humanize" version)) |
| 26384 | (sha256 |
| 26385 | (base32 |
| 26386 | "06dvhm3k8lf2rayn1gxbd46y0fy1db26m3h9vrq7rb1ib08mfgx4")))) |
| 26387 | (arguments |
| 26388 | '(#:tests? #f)) ; tests not in pypi archive |
| 26389 | (build-system python-build-system) |
| 26390 | (home-page "https://github.com/jmoiron/humanize") |
| 26391 | (synopsis "Print numerical information in a human-readable form") |
| 26392 | (description "This package provides a Python module that displays numbers |
| 26393 | and dates in \"human readable\" forms. For example, it would display |
| 26394 | \"12345591313\" as \"12.3 billion\".") |
| 26395 | (license license:expat))) |
| 26396 | |
| 26397 | (define-public python-txaio |
| 26398 | (package |
| 26399 | (name "python-txaio") |
| 26400 | (version "18.8.1") |
| 26401 | (source |
| 26402 | (origin |
| 26403 | (method url-fetch) |
| 26404 | (uri (pypi-uri "txaio" version)) |
| 26405 | (sha256 |
| 26406 | (base32 |
| 26407 | "1zmpdph6zddgrnkkcykh6qk5s46l7s5mzfqrh82m4b5iffn61qv7")))) |
| 26408 | (build-system python-build-system) |
| 26409 | (propagated-inputs |
| 26410 | (list python-twisted python-six)) |
| 26411 | (home-page "https://github.com/crossbario/txaio") |
| 26412 | (synopsis "Compatibility layer between Python asyncio and Twisted") |
| 26413 | (description "Txaio provides a compatibility layer between the Python |
| 26414 | @code{asyncio} module and @code{Twisted}.") |
| 26415 | (license license:expat))) |
| 26416 | |
| 26417 | (define-public python-toolshed |
| 26418 | (package |
| 26419 | (name "python-toolshed") |
| 26420 | (version "0.4.6") |
| 26421 | (source |
| 26422 | (origin |
| 26423 | (method url-fetch) |
| 26424 | (uri (pypi-uri "toolshed" version)) |
| 26425 | (sha256 |
| 26426 | (base32 |
| 26427 | "14zvz51gzf9i1i3d1sj363ba4rksl6lcf4lz1arl8hpqgcbir8r3")))) |
| 26428 | (build-system python-build-system) |
| 26429 | (native-inputs |
| 26430 | (list python-nose)) |
| 26431 | (home-page "https://github.com/brentp/toolshed/") |
| 26432 | (synopsis "Collection of modules and functions for working with data") |
| 26433 | (description "This is a collection of well-tested, simple modules and |
| 26434 | functions that aim to reduce boilerplate when working with data.") |
| 26435 | (license license:bsd-2))) |
| 26436 | |
| 26437 | (define-public python-annoy |
| 26438 | (package |
| 26439 | (name "python-annoy") |
| 26440 | (version "1.15.1") |
| 26441 | (source |
| 26442 | (origin |
| 26443 | (method url-fetch) |
| 26444 | (uri (pypi-uri "annoy" version)) |
| 26445 | (sha256 |
| 26446 | (base32 |
| 26447 | "1rxn6snn0r32r07g45hdjhh8aa1xzx6fjrm8g62d8vzp46z7rzrp")))) |
| 26448 | (build-system python-build-system) |
| 26449 | (native-inputs |
| 26450 | (list python-nose)) |
| 26451 | (home-page "https://github.com/spotify/annoy/") |
| 26452 | (synopsis "Approximate nearest neighbors library") |
| 26453 | (description |
| 26454 | "Annoy is a C++ library with Python bindings to search for points in |
| 26455 | space that are close to a given query point. It also creates large read-only |
| 26456 | file-based data structures that are @code{mmap}ped into memory so that many |
| 26457 | processes may share the same data.") |
| 26458 | (license license:asl2.0))) |
| 26459 | |
| 26460 | (define-public python-croniter |
| 26461 | (package |
| 26462 | (name "python-croniter") |
| 26463 | (version "1.3.4") |
| 26464 | (source (origin |
| 26465 | (method url-fetch) |
| 26466 | (uri (pypi-uri "croniter" version)) |
| 26467 | (sha256 |
| 26468 | (base32 |
| 26469 | "1whbm26m9kpn0klgr9dqiqpp83ki9nhpxifaq9afcjw32rckcs9i")))) |
| 26470 | (build-system python-build-system) |
| 26471 | (propagated-inputs (list python-dateutil)) |
| 26472 | (home-page "https://github.com/kiorky/croniter") |
| 26473 | (synopsis "Iterate datetime objects with cron-like syntax") |
| 26474 | (description |
| 26475 | "@code{croniter} provides iteration for datetime object with cron-like |
| 26476 | format.") |
| 26477 | (license license:expat))) |
| 26478 | |
| 26479 | (define-public python-crontab |
| 26480 | (package |
| 26481 | (name "python-crontab") |
| 26482 | (version "2.5.1") |
| 26483 | (source |
| 26484 | (origin |
| 26485 | (method url-fetch) |
| 26486 | (uri (pypi-uri name version)) |
| 26487 | (sha256 |
| 26488 | (base32 "0cccrqc10r8781ba81x8r2frs3pl2m4hkm599k5358ak0xr7xgjb")))) |
| 26489 | (build-system python-build-system) |
| 26490 | (arguments |
| 26491 | ;; Comptability tests fail so they are disabled. |
| 26492 | `(#:tests? #f)) |
| 26493 | (inputs |
| 26494 | (list python-dateutil)) |
| 26495 | (home-page "https://gitlab.com/doctormo/python-crontab/") |
| 26496 | (synopsis "Module for reading and writing crontab files") |
| 26497 | (description "This Python module can read, write crontab files, and |
| 26498 | access the system cron automatically and simply using a direct API.") |
| 26499 | (license license:lgpl3+))) |
| 26500 | |
| 26501 | (define-public python-pylzma |
| 26502 | (package |
| 26503 | (name "python-pylzma") |
| 26504 | (version "0.5.0") |
| 26505 | (source |
| 26506 | (origin |
| 26507 | (method url-fetch) |
| 26508 | (uri (pypi-uri "pylzma" version)) |
| 26509 | (sha256 |
| 26510 | (base32 |
| 26511 | "074anvhyjgsv2iby2ql1ixfvjgmhnvcwjbdz8gk70xzkzcm1fx5q")))) |
| 26512 | (build-system python-build-system) |
| 26513 | (home-page "https://www.joachim-bauch.de/projects/pylzma/") |
| 26514 | (synopsis "Python bindings for the LZMA library by Igor Pavlov") |
| 26515 | (description "This package provides Python bindings for the LZMA library |
| 26516 | by Igor Pavlov.") |
| 26517 | (license license:lgpl2.1+))) |
| 26518 | |
| 26519 | (define-public python-ifaddr |
| 26520 | (package |
| 26521 | (name "python-ifaddr") |
| 26522 | (version "0.1.7") |
| 26523 | (source |
| 26524 | (origin |
| 26525 | (method url-fetch) |
| 26526 | (uri (pypi-uri "ifaddr" version)) |
| 26527 | (sha256 |
| 26528 | (base32 |
| 26529 | "150sxdlicwrphmhnv03ykxplyd2jdrxz0mikgnivavgilrn8m7hz")))) |
| 26530 | (build-system python-build-system) |
| 26531 | (arguments |
| 26532 | `(#:phases |
| 26533 | (modify-phases %standard-phases |
| 26534 | (replace 'check |
| 26535 | (lambda _ (invoke "nosetests")))))) |
| 26536 | (native-inputs |
| 26537 | (list python-nose)) |
| 26538 | (home-page "https://github.com/pydron/ifaddr") |
| 26539 | (synopsis "Network interface and IP address enumeration library") |
| 26540 | (description "This package provides a network interface and IP address |
| 26541 | enumeration library in Python.") |
| 26542 | (license license:expat))) |
| 26543 | |
| 26544 | (define-public python-zeroconf |
| 26545 | (package |
| 26546 | (name "python-zeroconf") |
| 26547 | (version "0.38.1") |
| 26548 | (source |
| 26549 | (origin |
| 26550 | (method git-fetch) ; no tests in PyPI release |
| 26551 | (uri (git-reference |
| 26552 | (url "https://github.com/jstasiak/python-zeroconf") |
| 26553 | (commit version))) |
| 26554 | (file-name (git-file-name name version)) |
| 26555 | (sha256 |
| 26556 | (base32 "1p1a0ywlg5sq0ilcphmz9h4kayscz0q1lyfk57j7mwxyx4gl9cpi")))) |
| 26557 | (build-system python-build-system) |
| 26558 | (arguments |
| 26559 | `(#:phases |
| 26560 | (modify-phases %standard-phases |
| 26561 | (replace 'check |
| 26562 | (lambda* (#:key inputs outputs tests? #:allow-other-keys) |
| 26563 | (when tests? |
| 26564 | (add-installed-pythonpath inputs outputs) |
| 26565 | (invoke "python" "-m" "pytest" "-k" |
| 26566 | (string-append |
| 26567 | ;; Networking isn't available for these tests. |
| 26568 | "not test_integration_with_listener_ipv6" |
| 26569 | " and not test_launch_and_close_v4_v6" |
| 26570 | " and not test_launch_and_close_context_manager" |
| 26571 | " and not test_launch_and_close" |
| 26572 | " and not test_close_multiple_times")))))))) |
| 26573 | (native-inputs |
| 26574 | (list python-pytest)) |
| 26575 | (propagated-inputs |
| 26576 | (list python-ifaddr)) |
| 26577 | (home-page "https://github.com/jstasiak/python-zeroconf") |
| 26578 | (synopsis "Pure Python mDNS service discovery") |
| 26579 | (description "Pure Python multicast DNS (mDNS) service discovery library |
| 26580 | (Bonjour/Avahi compatible).") |
| 26581 | (license license:lgpl2.1+))) |
| 26582 | |
| 26583 | (define-public python-bsddb3 |
| 26584 | (package |
| 26585 | (name "python-bsddb3") |
| 26586 | (version "6.2.9") |
| 26587 | (source |
| 26588 | (origin |
| 26589 | (method url-fetch) |
| 26590 | (uri (pypi-uri "bsddb3" version)) |
| 26591 | (sha256 |
| 26592 | (base32 "00bqdsfx8jgmfz5bgkx10nlw5bfsw11a86f91zkl53snvk45xl3h")))) |
| 26593 | (build-system python-build-system) |
| 26594 | (inputs |
| 26595 | (list bdb)) |
| 26596 | (arguments |
| 26597 | '(#:phases |
| 26598 | (modify-phases %standard-phases |
| 26599 | (add-after 'unpack 'configure-locations |
| 26600 | (lambda* (#:key inputs #:allow-other-keys) |
| 26601 | (setenv "BERKELEYDB_DIR" (assoc-ref inputs "bdb")) |
| 26602 | (setenv "YES_I_HAVE_THE_RIGHT_TO_USE_THIS_BERKELEY_DB_VERSION" "1") |
| 26603 | #t)) |
| 26604 | (replace 'check |
| 26605 | (lambda _ |
| 26606 | (invoke "python3" "test3.py" "-v")))))) |
| 26607 | (home-page "https://www.jcea.es/programacion/pybsddb.htm") |
| 26608 | (synopsis "Python bindings for Oracle Berkeley DB") |
| 26609 | (description |
| 26610 | "This module provides a nearly complete wrapping of the Oracle/Sleepycat |
| 26611 | C API for the Database Environment, Database, Cursor, Log Cursor, Sequence and |
| 26612 | Transaction objects, and each of these is exposed as a Python type in the |
| 26613 | bsddb3.db module. The database objects can use various access methods: btree, |
| 26614 | hash, recno, and queue. Complete support of Berkeley DB distributed |
| 26615 | transactions. Complete support for Berkeley DB Replication Manager. |
| 26616 | Complete support for Berkeley DB Base Replication. Support for RPC.") |
| 26617 | (license license:bsd-3))) |
| 26618 | |
| 26619 | (define-public python-dbfread |
| 26620 | (package |
| 26621 | (name "python-dbfread") |
| 26622 | (version "2.0.7") |
| 26623 | (source (origin |
| 26624 | (method url-fetch) |
| 26625 | (uri (pypi-uri "dbfread" version)) |
| 26626 | (sha256 |
| 26627 | (base32 |
| 26628 | "0gdpwdzf1fngsi6jrdyj4qdf6cr7gnnr3zp80dpkzbgz0spskj07")))) |
| 26629 | (build-system python-build-system) |
| 26630 | (native-inputs |
| 26631 | (list python-pytest)) |
| 26632 | (home-page "https://dbfread.readthedocs.io") |
| 26633 | (synopsis "Read DBF Files with Python") |
| 26634 | (description |
| 26635 | "This library reads DBF files and returns the data as native Python data |
| 26636 | types for further processing. It is primarily intended for batch jobs and |
| 26637 | one-off scripts.") |
| 26638 | (license license:expat))) |
| 26639 | |
| 26640 | (define-public python-cached-property |
| 26641 | (package |
| 26642 | (name "python-cached-property") |
| 26643 | (version "1.5.2") |
| 26644 | (source |
| 26645 | (origin |
| 26646 | (method url-fetch) |
| 26647 | (uri (pypi-uri "cached-property" version)) |
| 26648 | (sha256 |
| 26649 | (base32 |
| 26650 | "0c51i6yzg6dlq6zhk4c6nv33mg8gv05kkan36k9b5jzf71c7b9cz")))) |
| 26651 | (build-system python-build-system) |
| 26652 | (arguments |
| 26653 | `(#:phases |
| 26654 | (modify-phases %standard-phases |
| 26655 | ;; https://github.com/pydanny/cached-property/issues/131 |
| 26656 | ;; recent versions of freezegun break one test |
| 26657 | (add-after 'unpack 'disable-broken-test |
| 26658 | (lambda _ |
| 26659 | (substitute* "tests/test_cached_property.py" |
| 26660 | (("def test_threads_ttl_expiry\\(self\\)" m) |
| 26661 | (string-append "@unittest.skip(\"Disabled by Guix\")\n" |
| 26662 | " " m))) |
| 26663 | #t))))) |
| 26664 | (native-inputs |
| 26665 | (list python-freezegun)) |
| 26666 | (home-page |
| 26667 | "https://github.com/pydanny/cached-property") |
| 26668 | (synopsis |
| 26669 | "Decorator for caching properties in classes") |
| 26670 | (description |
| 26671 | "This package provides a decorator which makes caching |
| 26672 | time-or-computationally-expensive properties quick and easy and works in Python |
| 26673 | 2 or 3.") |
| 26674 | (license license:bsd-3))) |
| 26675 | |
| 26676 | (define-public python-folium |
| 26677 | (package |
| 26678 | (name "python-folium") |
| 26679 | (version "0.13.0") |
| 26680 | (source |
| 26681 | (origin |
| 26682 | ;; PyPI has a ".whl" file but not a proper source release. |
| 26683 | ;; Thus, fetch code from Git. |
| 26684 | (method git-fetch) |
| 26685 | (uri (git-reference |
| 26686 | (url "https://github.com/python-visualization/folium") |
| 26687 | (commit (string-append "v" version)))) |
| 26688 | (file-name (git-file-name name version)) |
| 26689 | (sha256 |
| 26690 | (base32 "00adpdi1890zzzg7ffp04hmx59igdcdpyqa129vnmwqh54b5a006")))) |
| 26691 | (build-system python-build-system) |
| 26692 | (propagated-inputs |
| 26693 | (list python-branca python-jinja2 python-numpy python-requests)) |
| 26694 | (native-inputs |
| 26695 | (list python-pytest)) |
| 26696 | (home-page "https://github.com/python-visualization/folium") |
| 26697 | (synopsis "Make beautiful maps with Leaflet.js & Python") |
| 26698 | (description "@code{folium} makes it easy to visualize data that’s been |
| 26699 | manipulated in Python on an interactive leaflet map. It enables both the |
| 26700 | binding of data to a map for @code{choropleth} visualizations as well as |
| 26701 | passing rich vector/raster/HTML visualizations as markers on the map. |
| 26702 | |
| 26703 | The library has a number of built-in tilesets from OpenStreetMap, Mapbox, and |
| 26704 | Stamen, and supports custom tilesets with Mapbox or Cloudmade API keys. It |
| 26705 | supports Image, Video, GeoJSON and TopoJSON overlays.") |
| 26706 | (license license:expat))) |
| 26707 | |
| 26708 | (define-public python-mercantile |
| 26709 | (package |
| 26710 | (name "python-mercantile") |
| 26711 | (version "1.2.1") |
| 26712 | (source |
| 26713 | (origin |
| 26714 | (method url-fetch) |
| 26715 | (uri (pypi-uri "mercantile" version)) |
| 26716 | (sha256 |
| 26717 | (base32 "0sxmndhzzrvss5irsgzfrk51k6jihwcb7661992mizdgbnqnsg7s")))) |
| 26718 | (build-system python-build-system) |
| 26719 | (propagated-inputs (list python-click)) |
| 26720 | (native-inputs |
| 26721 | (list python-check-manifest python-hypothesis python-pytest)) |
| 26722 | (home-page "https://github.com/mapbox/mercantile") |
| 26723 | (synopsis "Web mercator XYZ tile utilities") |
| 26724 | (description "The mercantile module provides @code{ul(xtile, ytile, zoom)} |
| 26725 | and @code{bounds(xtile, ytile, zoom)} functions that respectively return the |
| 26726 | upper left corner and bounding longitudes and latitudes for XYZ tiles, a |
| 26727 | @code{xy(lng, lat)} function that returns spherical mercator x and y |
| 26728 | coordinates, a @code{tile(lng, lat, zoom)} function that returns the tile |
| 26729 | containing a given point, and quadkey conversion functions |
| 26730 | @code{quadkey(xtile, ytile, zoom)} and @code{quadkey_to_tile(quadkey)} for |
| 26731 | translating between quadkey and tile coordinates.") |
| 26732 | (license license:bsd-3))) |
| 26733 | |
| 26734 | (define-public python-xyzservices |
| 26735 | (package |
| 26736 | (name "python-xyzservices") |
| 26737 | (version "2022.4.0") |
| 26738 | (source |
| 26739 | (origin |
| 26740 | (method url-fetch) |
| 26741 | (uri (pypi-uri "xyzservices" version)) |
| 26742 | (sha256 |
| 26743 | (base32 "1paxv4i0dws85md7csv7pf80jl3xh792mx8rxnsrk61ks3ivbsyg")))) |
| 26744 | (build-system python-build-system) |
| 26745 | (arguments |
| 26746 | '(#:phases |
| 26747 | (modify-phases %standard-phases |
| 26748 | (replace 'check |
| 26749 | (lambda* (#:key tests? #:allow-other-keys) |
| 26750 | (when tests? |
| 26751 | (invoke "pytest" "-vv"))))))) |
| 26752 | (native-inputs |
| 26753 | (list python-pytest python-mercantile python-requests)) |
| 26754 | (home-page "https://github.com/geopandas/xyzservices") |
| 26755 | (synopsis "Source of XYZ tiles providers") |
| 26756 | (description "@code{xyzservices} is a lightweight library providing a |
| 26757 | repository of available XYZ services offering raster basemap tiles. The |
| 26758 | repository is provided via Python API and as a compressed JSON file.") |
| 26759 | (license license:bsd-3))) |
| 26760 | |
| 26761 | (define-public jube |
| 26762 | (package |
| 26763 | ;; This is a command-line tool, so no "python-" prefix. |
| 26764 | (name "jube") |
| 26765 | (version "2.2.2") |
| 26766 | (source (origin |
| 26767 | (method url-fetch) |
| 26768 | (uri (string-append |
| 26769 | "http://apps.fz-juelich.de/jsc/jube/jube2/download.php?version=" |
| 26770 | version)) |
| 26771 | (sha256 |
| 26772 | (base32 |
| 26773 | "0xq4k1q63s1p6swgyp61vahlrd1fqmgbm0gm5kpj8ikwy0yc0nqk")) |
| 26774 | (file-name (string-append "jube-" version ".tar.gz")))) |
| 26775 | (build-system python-build-system) |
| 26776 | (home-page "https://apps.fz-juelich.de/jsc/jube/jube2/docu/index.html") |
| 26777 | (synopsis "Benchmarking environment") |
| 26778 | (description |
| 26779 | "JUBE helps perform and analyze benchmarks in a systematic way. For each |
| 26780 | benchmarked application, benchmark data is stored in a format that allows JUBE |
| 26781 | to deduct the desired information. This data can be parsed by automatic pre- |
| 26782 | and post-processing scripts that draw information and store it more densely |
| 26783 | for manual interpretation.") |
| 26784 | (license license:gpl3+))) |
| 26785 | |
| 26786 | (define-public python-pyroutelib3 |
| 26787 | (package |
| 26788 | (name "python-pyroutelib3") |
| 26789 | (version "1.3.post1") |
| 26790 | (source |
| 26791 | (origin |
| 26792 | (method url-fetch) |
| 26793 | (uri (pypi-uri "pyroutelib3" version)) |
| 26794 | (sha256 |
| 26795 | (base32 |
| 26796 | "1hpbydpn2alyswiajfbvhzq4c7f36vdmvxy91hgv8l1lb2g2vfrj")))) |
| 26797 | (build-system python-build-system) |
| 26798 | (propagated-inputs |
| 26799 | (list python-dateutil)) |
| 26800 | (home-page "https://github.com/MKuranowski/pyroutelib3") |
| 26801 | (synopsis "Library for simple routing on OSM data") |
| 26802 | (description "Library for simple routing on OSM data") |
| 26803 | (license license:gpl3+))) |
| 26804 | |
| 26805 | (define-public python-bibtexparser |
| 26806 | (package |
| 26807 | (name "python-bibtexparser") |
| 26808 | (version "1.4.0") |
| 26809 | (source (origin |
| 26810 | (method url-fetch) |
| 26811 | (uri (pypi-uri "bibtexparser" version)) |
| 26812 | (sha256 |
| 26813 | (base32 |
| 26814 | "1rmc178qqb8814v3pcfv4qgl8rxmkd11d56limkqmi776jyf4z6a")))) |
| 26815 | (build-system python-build-system) |
| 26816 | (propagated-inputs (list python-pyparsing)) |
| 26817 | (native-inputs (list python-future)) |
| 26818 | (home-page "https://github.com/sciunto-org/python-bibtexparser") |
| 26819 | (synopsis "Python library to parse BibTeX files") |
| 26820 | (description "BibtexParser is a Python library to parse BibTeX files.") |
| 26821 | (license (list license:bsd-3 license:lgpl3)))) |
| 26822 | |
| 26823 | (define-public python-distro |
| 26824 | (package |
| 26825 | (name "python-distro") |
| 26826 | (version "1.6.0") |
| 26827 | (source |
| 26828 | (origin |
| 26829 | (method url-fetch) |
| 26830 | (uri (pypi-uri "distro" version)) |
| 26831 | (sha256 |
| 26832 | (base32 |
| 26833 | "09441261dd3c8b2gv15vhw1cryzg60lmgpkk07v6hpwwkyhfbxc3")))) |
| 26834 | (build-system python-build-system) |
| 26835 | (native-inputs |
| 26836 | (list python-pytest)) |
| 26837 | (home-page "https://github.com/nir0s/distro") |
| 26838 | (synopsis |
| 26839 | "OS platform information API") |
| 26840 | (description |
| 26841 | "@code{distro} provides information about the OS distribution it runs on, |
| 26842 | such as a reliable machine-readable ID, or version information. |
| 26843 | |
| 26844 | It is the recommended replacement for Python's original |
| 26845 | `platform.linux_distribution` function (which will be removed in Python 3.8). |
| 26846 | @code{distro} also provides a command-line interface to output the platform |
| 26847 | information in various formats.") |
| 26848 | (license license:asl2.0))) |
| 26849 | |
| 26850 | (define-public python-cairosvg |
| 26851 | (package |
| 26852 | (name "python-cairosvg") |
| 26853 | (version "2.5.0") |
| 26854 | (source |
| 26855 | (origin |
| 26856 | (method url-fetch) |
| 26857 | (uri (pypi-uri "CairoSVG" version)) |
| 26858 | (sha256 |
| 26859 | (base32 "1ylsisha2cc4w0yydxwhy7idkfw1inl9fsipxsrm7vyby080vi9z")))) |
| 26860 | (build-system python-build-system) |
| 26861 | (arguments |
| 26862 | `(#:phases |
| 26863 | (modify-phases %standard-phases |
| 26864 | (replace 'check |
| 26865 | (lambda _ (invoke "pytest")))))) |
| 26866 | (propagated-inputs |
| 26867 | (list python-cairocffi python-cssselect2 python-defusedxml |
| 26868 | python-pillow python-tinycss2)) |
| 26869 | (native-inputs |
| 26870 | (list python-pytest-flake8 python-pytest-isort python-pytest-runner)) |
| 26871 | (home-page "https://cairosvg.org/") |
| 26872 | (synopsis "SVG to PDF/PS/PNG converter based on Cairo") |
| 26873 | (description "CairoSVG is a SVG converter based on Cairo. It can export |
| 26874 | SVG files to PDF, PostScript and PNG files. The main part of CairoSVG is a |
| 26875 | SVG parser, trying to follow the SVG 1.1 recommendation from the W3C. Once |
| 26876 | parsed, the result is drawn to a Cairo surface that can be exported to |
| 26877 | qvarious formats: PDF, PostScript, PNG and even SVG.") |
| 26878 | (license license:lgpl3+))) |
| 26879 | |
| 26880 | (define-public python-pyphen |
| 26881 | (package |
| 26882 | (name "python-pyphen") |
| 26883 | (version "0.10.0") |
| 26884 | (source |
| 26885 | (origin |
| 26886 | (method url-fetch) |
| 26887 | (uri (pypi-uri "Pyphen" version)) |
| 26888 | (sha256 |
| 26889 | (base32 "0a1iwrgs4hzwzz60q4i1813kbzimhm0i4q8grh8vqkxhnkgj36vi")))) |
| 26890 | (build-system python-build-system) |
| 26891 | ;; TODO: Use the Guix system hyphenation packages hyphen-* rather than the |
| 26892 | ;; embedded set provided by upstream - like Debian does. |
| 26893 | (home-page "https://github.com/Kozea/Pyphen") |
| 26894 | (synopsis "Pure Python module to hyphenate text") |
| 26895 | (description "Pyphen is a pure Python module to hyphenate text using |
| 26896 | existing Hunspell hyphenation dictionaries.") |
| 26897 | (license (list license:gpl2 license:lgpl2.1 license:mpl1.1)))) |
| 26898 | |
| 26899 | (define-public python-intelhex |
| 26900 | (package |
| 26901 | (name "python-intelhex") |
| 26902 | (version "2.3.0") |
| 26903 | (source |
| 26904 | (origin |
| 26905 | (method url-fetch) |
| 26906 | (uri (pypi-uri "intelhex" version)) |
| 26907 | (sha256 |
| 26908 | (base32 |
| 26909 | "14q04p6qs47ab9w55232ylrdn4wm9rswz36s6x999x0rlxhp6aw9")))) |
| 26910 | (build-system python-build-system) |
| 26911 | (home-page "https://pypi.org/project/IntelHex/") |
| 26912 | (synopsis "Python library for Intel HEX files manipulations") |
| 26913 | (description "The Intel HEX file format is widely used in microprocessors |
| 26914 | and microcontrollers area (embedded systems etc.) as the de facto standard for |
| 26915 | representation of code to be programmed into microelectronic devices. This |
| 26916 | package provides an intelhex Python library to read, write, create from |
| 26917 | scratch and manipulate data from Intel HEX file format. It also includes |
| 26918 | several convenience Python scripts, including \"classic\" hex2bin and bin2hex |
| 26919 | converters and more, those based on the library itself.") |
| 26920 | (license license:bsd-3))) |
| 26921 | |
| 26922 | (define-public python-interlap |
| 26923 | (package |
| 26924 | (name "python-interlap") |
| 26925 | (version "0.2.7") |
| 26926 | (source (origin |
| 26927 | (method url-fetch) |
| 26928 | (uri (pypi-uri "interlap" version)) |
| 26929 | (sha256 |
| 26930 | (base32 |
| 26931 | "1jbfh00bkrf0i5psa6n75rlgmqp5389xixa9j29w8rxhah6g7r1i")))) |
| 26932 | (build-system python-build-system) |
| 26933 | (home-page "https://brentp.github.io/interlap") |
| 26934 | (synopsis "Fast, simple interval overlap testing") |
| 26935 | (description "InterLap does fast interval overlap testing with a simple Python data |
| 26936 | structure.") |
| 26937 | (license license:expat))) |
| 26938 | |
| 26939 | (define-public python-pykwalify |
| 26940 | (package |
| 26941 | (name "python-pykwalify") |
| 26942 | (version "1.7.0") |
| 26943 | (source |
| 26944 | (origin |
| 26945 | (method url-fetch) |
| 26946 | (uri (pypi-uri "pykwalify" version)) |
| 26947 | (sha256 |
| 26948 | (base32 |
| 26949 | "1cnfzkg1b01f825ikpw2fhjclf9c8akxjfrbd1vc22x1lg2kk2vy")))) |
| 26950 | (build-system python-build-system) |
| 26951 | (arguments '(#:tests? #f)) ;missing dependencies |
| 26952 | (propagated-inputs |
| 26953 | (list python-dateutil python-docopt python-pyyaml)) |
| 26954 | (home-page "https://github.com/grokzen/pykwalify") |
| 26955 | (synopsis |
| 26956 | "Python lib/cli for JSON/YAML schema validation") |
| 26957 | (description |
| 26958 | "This package provides a parser, schema validator, and data binding tool |
| 26959 | for YAML and JSON.") |
| 26960 | (license license:expat))) |
| 26961 | |
| 26962 | (define-public python-dbusmock |
| 26963 | (package |
| 26964 | (name "python-dbusmock") |
| 26965 | (version "0.25.0") |
| 26966 | (source |
| 26967 | (origin |
| 26968 | (method url-fetch) |
| 26969 | (uri (pypi-uri "python-dbusmock" version)) |
| 26970 | (sha256 |
| 26971 | (base32 |
| 26972 | "1nwl0gzzds2g1w1gfxfzlgrkb5hr1rrdyn619ml25c6b1rjyfk3g")))) |
| 26973 | (build-system python-build-system) |
| 26974 | (arguments |
| 26975 | `(#:imported-modules (,@%python-build-system-modules |
| 26976 | (guix build syscalls)) |
| 26977 | #:modules ((guix build python-build-system) |
| 26978 | (guix build syscalls) |
| 26979 | (guix build utils) |
| 26980 | (ice-9 match)) |
| 26981 | #:phases |
| 26982 | (modify-phases %standard-phases |
| 26983 | (add-after 'unpack 'patch-paths |
| 26984 | (lambda* (#:key inputs #:allow-other-keys) |
| 26985 | (substitute* "tests/test_code.py" |
| 26986 | (("/bin/bash") (which "bash"))) |
| 26987 | (substitute* "dbusmock/testcase.py" |
| 26988 | (("'dbus-daemon'") |
| 26989 | (string-append "'" (assoc-ref inputs "dbus") |
| 26990 | "/bin/dbus-daemon'"))))) |
| 26991 | (replace 'check |
| 26992 | (lambda* (#:key tests? #:allow-other-keys) |
| 26993 | (when tests? |
| 26994 | (match (primitive-fork) |
| 26995 | (0 ;child process |
| 26996 | (set-child-subreaper!) |
| 26997 | ;; Use tini so that signals are properly handled and |
| 26998 | ;; doubly-forked processes get reaped; otherwise, |
| 26999 | ;; python-dbusmock would waste time polling for the dbus |
| 27000 | ;; processes it spawns to be reaped, in vain. |
| 27001 | (execlp "tini" "--" "pytest" "-vv")) |
| 27002 | (pid |
| 27003 | (match (waitpid pid) |
| 27004 | ((_ . status) |
| 27005 | (unless (zero? status) |
| 27006 | (error "`pytest' exited with status" |
| 27007 | status)))))))))))) |
| 27008 | (native-inputs |
| 27009 | (list dbus python-pytest tini which)) |
| 27010 | (inputs |
| 27011 | (list dbus)) |
| 27012 | (propagated-inputs |
| 27013 | (list python-dbus python-pygobject)) |
| 27014 | (home-page "https://github.com/martinpitt/python-dbusmock") |
| 27015 | (synopsis "Python library for mock D-Bus objects") |
| 27016 | (description "python-dbusmock allows for the easy creation of mock objects on |
| 27017 | D-Bus. This is useful for writing tests for software which talks to D-Bus |
| 27018 | services such as upower, systemd, logind, gnome-session or others, and it is |
| 27019 | hard (or impossible without root privileges) to set the state of the real |
| 27020 | services to what you expect in your tests.") |
| 27021 | (license license:lgpl3+))) |
| 27022 | |
| 27023 | (define-public python-jsonplus |
| 27024 | (package |
| 27025 | (name "python-jsonplus") |
| 27026 | (version "0.8.0") |
| 27027 | (home-page "https://github.com/randomir/jsonplus") |
| 27028 | (source (origin |
| 27029 | (method url-fetch) |
| 27030 | (uri (pypi-uri "jsonplus" version)) |
| 27031 | (sha256 |
| 27032 | (base32 |
| 27033 | "05yv3dw813zwas9snz124k2hki49y268b3mx0gj9w7v1nrjmglq1")))) |
| 27034 | (build-system python-build-system) |
| 27035 | ;; XXX: No tests on PyPI, and the repository has no tags. |
| 27036 | (arguments '(#:tests? #f)) |
| 27037 | (propagated-inputs |
| 27038 | (list python-dateutil python-simplejson python-sortedcontainers)) |
| 27039 | (synopsis "Serialize Python types to/from JSON") |
| 27040 | (description |
| 27041 | "This package provides functionality to serialize arbitrary data types |
| 27042 | to and from JSON. Common data types are implemented and it is easy to |
| 27043 | register custom encoders and decoders.") |
| 27044 | (license license:expat))) |
| 27045 | |
| 27046 | (define-public python-ujson |
| 27047 | (package |
| 27048 | (name "python-ujson") |
| 27049 | (version "5.7.0") |
| 27050 | (source |
| 27051 | (origin |
| 27052 | (method url-fetch) |
| 27053 | (uri (pypi-uri "ujson" version)) |
| 27054 | (sha256 |
| 27055 | (base32 |
| 27056 | "08vvyfyg4qvjy2vxrvc0qix5zmd0j6wd0icvmhc633xfvkayb277")) |
| 27057 | (modules '((guix build utils))) |
| 27058 | (snippet |
| 27059 | '(begin (delete-file-recursively "deps") #t)))) |
| 27060 | (build-system python-build-system) |
| 27061 | (arguments |
| 27062 | `(#:phases |
| 27063 | (modify-phases %standard-phases |
| 27064 | (add-after 'unpack 'link-to-system-double-conversion |
| 27065 | (lambda* (#:key inputs #:allow-other-keys) |
| 27066 | (let ((d-c (assoc-ref inputs "double-conversion"))) |
| 27067 | (substitute* "setup.py" |
| 27068 | (("./deps/double-conversion/double-conversion\"") |
| 27069 | (string-append d-c "/include/double-conversion\"")) |
| 27070 | (("-lstdc++" stdc) |
| 27071 | (string-append "-L" d-c "/lib\"," |
| 27072 | " \"-ldouble-conversion\"," |
| 27073 | " \"" stdc))) |
| 27074 | #t))) |
| 27075 | (replace 'check |
| 27076 | (lambda* (#:key inputs outputs #:allow-other-keys) |
| 27077 | (add-installed-pythonpath inputs outputs) |
| 27078 | (invoke "pytest")))))) |
| 27079 | (native-inputs |
| 27080 | (list double-conversion python-setuptools-scm python-pytest)) |
| 27081 | (home-page "https://github.com/ultrajson/ultrajson") |
| 27082 | (synopsis "Ultra fast JSON encoder and decoder for Python") |
| 27083 | (description |
| 27084 | "UltraJSON is an ultra fast JSON encoder and decoder written in pure C with |
| 27085 | bindings for Python 3.") |
| 27086 | (license license:bsd-3))) |
| 27087 | |
| 27088 | (define-public python-iocapture |
| 27089 | ;; The latest release is more than a year older than this commit. |
| 27090 | (let ((commit "fdc021c431d0840303908dfc3ca8769db383595c") |
| 27091 | (revision "1")) |
| 27092 | (package |
| 27093 | (name "python-iocapture") |
| 27094 | (version "0.1.2") |
| 27095 | (source |
| 27096 | (origin |
| 27097 | (method git-fetch) |
| 27098 | (uri (git-reference |
| 27099 | (url "https://github.com/oinume/iocapture") |
| 27100 | (commit commit))) |
| 27101 | (file-name (git-file-name name version)) |
| 27102 | (sha256 |
| 27103 | (base32 |
| 27104 | "1mkbhqibxvgwg0p7slr8dfraa3g2s6bsayladhax2jccwj4kcndz")))) |
| 27105 | (build-system python-build-system) |
| 27106 | (arguments |
| 27107 | `(#:phases |
| 27108 | (modify-phases %standard-phases |
| 27109 | (delete 'check) |
| 27110 | (add-after 'install 'check |
| 27111 | (lambda* (#:key inputs outputs #:allow-other-keys) |
| 27112 | (add-installed-pythonpath inputs outputs) |
| 27113 | (invoke "py.test" "-v" "tests") |
| 27114 | #t))))) |
| 27115 | (propagated-inputs |
| 27116 | (list python-flexmock python-pytest python-pytest-cov python-six)) |
| 27117 | (home-page "https://github.com/oinume/iocapture") |
| 27118 | (synopsis "Python capturing tool for stdout and stderr") |
| 27119 | (description |
| 27120 | "This package helps you to capture the standard out (stdout) and the |
| 27121 | standard error channel (stderr) in your program.") |
| 27122 | (license license:expat)))) |
| 27123 | |
| 27124 | (define-public python-anyio |
| 27125 | (package |
| 27126 | (name "python-anyio") |
| 27127 | (version "3.6.2") |
| 27128 | (source |
| 27129 | (origin |
| 27130 | (method url-fetch) |
| 27131 | (uri (pypi-uri "anyio" version)) |
| 27132 | (sha256 |
| 27133 | (base32 |
| 27134 | "08bljjq5xq0l9id36q3vvjgygirq7g7q2bs41hdg82p379khvsi5")))) |
| 27135 | (build-system python-build-system) |
| 27136 | (arguments |
| 27137 | `(#:phases |
| 27138 | (modify-phases %standard-phases |
| 27139 | (replace 'check |
| 27140 | (lambda* (#:key tests? #:allow-other-keys) |
| 27141 | (when tests? |
| 27142 | (invoke |
| 27143 | "pytest" "-vv" "-p" "no:asyncio" |
| 27144 | "-m" "not network" |
| 27145 | "-k" |
| 27146 | (string-append |
| 27147 | "not test_is_block_device" |
| 27148 | |
| 27149 | ;; These fail because of network (or specifically IPv6 |
| 27150 | ;; network) access (see: |
| 27151 | ;; https://github.com/agronholm/anyio/issues/417). |
| 27152 | " and not test_accept" |
| 27153 | " and not test_accept_after_close" |
| 27154 | " and not test_close_during_receive" |
| 27155 | " and not test_close_from_other_task" |
| 27156 | " and not test_concurrent_receive" |
| 27157 | " and not test_concurrent_send" |
| 27158 | " and not test_connect_tcp_with_tls" |
| 27159 | " and not test_connect_tcp_with_tls_cert_check_fail" |
| 27160 | " and not test_connection_refused" |
| 27161 | " and not test_extra_attributes" |
| 27162 | " and not test_getaddrinfo" |
| 27163 | " and not test_getnameinfo" |
| 27164 | " and not test_happy_eyeballs" |
| 27165 | " and not test_iterate" |
| 27166 | " and not test_receive_after_close" |
| 27167 | " and not test_receive_timeout" |
| 27168 | " and not test_reuse_port" |
| 27169 | " and not test_run_process" |
| 27170 | " and not test_send_after_close" |
| 27171 | " and not test_send_after_eof" |
| 27172 | " and not test_send_after_peer_closed" |
| 27173 | " and not test_send_eof" |
| 27174 | " and not test_send_large_buffer" |
| 27175 | " and not test_send_receive" |
| 27176 | " and not test_socket_options" |
| 27177 | " and not test_unretrieved_future_exception_server_crash")))))))) |
| 27178 | (propagated-inputs |
| 27179 | (list python-contextvars |
| 27180 | python-dataclasses |
| 27181 | python-idna |
| 27182 | python-sniffio |
| 27183 | python-typing-extensions)) |
| 27184 | (native-inputs |
| 27185 | (list python-contextlib2 |
| 27186 | python-coverage |
| 27187 | python-hypothesis |
| 27188 | python-mock |
| 27189 | python-pytest |
| 27190 | python-pytest-mock |
| 27191 | python-setuptools-scm |
| 27192 | python-trio |
| 27193 | python-trustme |
| 27194 | python-uvloop)) |
| 27195 | (home-page "https://github.com/agronholm/anyio") |
| 27196 | (synopsis "Compatibility layer for multiple asynchronous event loops") |
| 27197 | (description |
| 27198 | "AnyIO is an asynchronous networking and concurrency library that works |
| 27199 | on top of either asyncio or trio. It implements trio-like structured |
| 27200 | concurrency on top of asyncio, and works in harmony with the native SC of trio |
| 27201 | itself.") |
| 27202 | (license license:expat))) |
| 27203 | |
| 27204 | (define-public python-argh |
| 27205 | ;; There are 21 commits since the latest release containing important |
| 27206 | ;; improvements. |
| 27207 | (let ((commit "dcd3253f2994400a6a58a700c118c53765bc50a4") |
| 27208 | (revision "1")) |
| 27209 | (package |
| 27210 | (name "python-argh") |
| 27211 | (version (git-version "0.26.2" revision commit)) |
| 27212 | (source |
| 27213 | (origin |
| 27214 | (method git-fetch) |
| 27215 | (uri (git-reference |
| 27216 | (url "https://github.com/neithere/argh") |
| 27217 | (commit commit))) |
| 27218 | (file-name (git-file-name name version)) |
| 27219 | (sha256 |
| 27220 | (base32 |
| 27221 | "1p5h3dnpbsjmqrvil96s71asc6i3gpinmbrabqmwnrsxprz7r3ns")))) |
| 27222 | (build-system python-build-system) |
| 27223 | (arguments |
| 27224 | '(#:phases |
| 27225 | (modify-phases %standard-phases |
| 27226 | (add-after 'unpack 'patch-tests |
| 27227 | (lambda _ |
| 27228 | ;; Fix test failures on Python 3.9.9+. |
| 27229 | ;; Taken via <https://github.com/neithere/argh/issues/148>. |
| 27230 | (substitute* "test/test_integration.py" |
| 27231 | (("assert run\\(p, '(bar|orig-name|nest bar)', exit=True\\)\ |
| 27232 | \\.startswith\\('invalid choice'\\)" _ name) |
| 27233 | (string-append "assert 'invalid choice' in \ |
| 27234 | run(p, '" name "', exit=True)"))))) |
| 27235 | (replace 'check |
| 27236 | (lambda* (#:key tests? #:allow-other-keys) |
| 27237 | (when tests? |
| 27238 | (invoke "pytest" "-vv"))))))) |
| 27239 | (propagated-inputs |
| 27240 | (list python-iocapture python-mock python-pytest python-pytest-cov |
| 27241 | python-pytest-xdist)) |
| 27242 | (home-page "https://github.com/neithere/argh/") |
| 27243 | (synopsis "Argparse wrapper with natural syntax") |
| 27244 | (description |
| 27245 | "python-argh is a small library that provides several layers of |
| 27246 | abstraction on top of @code{python-argparse}. The layers can be mixed. It is |
| 27247 | always possible to declare a command with the highest possible (and least |
| 27248 | flexible) layer and then tune the behaviour with any of the lower layers |
| 27249 | including the native API of @code{python-argparse}.") |
| 27250 | (license license:lgpl3+)))) |
| 27251 | |
| 27252 | (define-public python-ppft |
| 27253 | (package |
| 27254 | (name "python-ppft") |
| 27255 | (version "1.6.6.1") |
| 27256 | (source |
| 27257 | (origin |
| 27258 | (method url-fetch) |
| 27259 | (uri (pypi-uri "ppft" version)) |
| 27260 | (sha256 |
| 27261 | (base32 |
| 27262 | "1z1invkhszc5d2mvgr221v7cszzifcc77mz0pv3wjp6x5q2768cy")))) |
| 27263 | (build-system python-build-system) |
| 27264 | (arguments '(#:tests? #f)) ; there are none |
| 27265 | (propagated-inputs |
| 27266 | (list python-six)) |
| 27267 | (home-page "https://pypi.org/project/ppft/") |
| 27268 | (synopsis "Fork of Parallel Python") |
| 27269 | (description |
| 27270 | "This package is a fork of Parallel Python. The Parallel Python |
| 27271 | module (@code{pp}) provides an easy and efficient way to create |
| 27272 | parallel-enabled applications for @dfn{symmetric multiprocessing} (SMP) |
| 27273 | computers and clusters. It features cross-platform portability and dynamic |
| 27274 | load balancing.") |
| 27275 | (license license:bsd-3))) |
| 27276 | |
| 27277 | (define-public python-pox |
| 27278 | (package |
| 27279 | (name "python-pox") |
| 27280 | (version "0.2.7") |
| 27281 | (source |
| 27282 | (origin |
| 27283 | (method url-fetch) |
| 27284 | (uri (pypi-uri "pox" version)) |
| 27285 | (sha256 |
| 27286 | (base32 |
| 27287 | "0y17ckc2p6i6709s279sjdj4q459mpcc38ymg9zv9y6vl6jf3bq6")))) |
| 27288 | (build-system python-build-system) |
| 27289 | (arguments |
| 27290 | `(#:phases |
| 27291 | (modify-phases %standard-phases |
| 27292 | (replace 'check |
| 27293 | (lambda _ |
| 27294 | (mkdir-p "/tmp/guix") |
| 27295 | (setenv "SHELL" "bash") |
| 27296 | (setenv "USERNAME" "guix") |
| 27297 | (setenv "HOME" "/tmp/guix") ; must end on USERNAME... |
| 27298 | (invoke "py.test" "-vv") |
| 27299 | #t))))) |
| 27300 | (native-inputs |
| 27301 | (list python-pytest which)) |
| 27302 | (home-page "https://pypi.org/project/pox/") |
| 27303 | (synopsis "Python utilities for file system exploration and automated builds") |
| 27304 | (description |
| 27305 | "Pox provides a collection of utilities for navigating and manipulating |
| 27306 | file systems. This module is designed to facilitate some of the low-level |
| 27307 | operating system interactions that are useful when exploring a file system on a |
| 27308 | remote host. Pox provides Python equivalents of several shell commands such |
| 27309 | as @command{which} and @command{find}. These commands allow automated |
| 27310 | discovery of what has been installed on an operating system, and where the |
| 27311 | essential tools are located.") |
| 27312 | (license license:bsd-3))) |
| 27313 | |
| 27314 | (define-public python-pathos |
| 27315 | (package |
| 27316 | (name "python-pathos") |
| 27317 | (version "0.2.5") |
| 27318 | (source |
| 27319 | (origin |
| 27320 | (method url-fetch) |
| 27321 | (uri (pypi-uri "pathos" version)) |
| 27322 | (sha256 |
| 27323 | (base32 |
| 27324 | "0in8hxdz7k081ijn6q94gr39ycy7363sx4zysmbwyvd7snqjrbi1")))) |
| 27325 | (build-system python-build-system) |
| 27326 | (arguments |
| 27327 | '(#:phases |
| 27328 | (modify-phases %standard-phases |
| 27329 | (replace 'check |
| 27330 | (lambda _ |
| 27331 | (invoke "python" "./tests/__main__.py")))))) |
| 27332 | (propagated-inputs |
| 27333 | (list python-dill python-multiprocess python-pox python-ppft)) |
| 27334 | (native-inputs |
| 27335 | (list python-pytest)) |
| 27336 | (home-page "https://pypi.org/project/pathos/") |
| 27337 | (synopsis |
| 27338 | "Parallel graph management and execution in heterogeneous computing") |
| 27339 | (description |
| 27340 | "Python-pathos is a framework for heterogeneous computing. It provides a |
| 27341 | consistent high-level interface for configuring and launching parallel |
| 27342 | computations across heterogeneous resources. Python-pathos provides configurable |
| 27343 | launchers for parallel and distributed computing, where each launcher contains |
| 27344 | the syntactic logic to configure and launch jobs in an execution environment.") |
| 27345 | (license license:bsd-3))) |
| 27346 | |
| 27347 | (define-public python-flit |
| 27348 | (package |
| 27349 | (name "python-flit") |
| 27350 | (version "3.8.0") ;same as python-flit-core |
| 27351 | (source |
| 27352 | (origin |
| 27353 | (method url-fetch) |
| 27354 | (uri (pypi-uri "flit" version)) |
| 27355 | (sha256 |
| 27356 | (base32 "0dz9sp2zlhkmk6sm5gapbbb30f7xq3n3jn5zxx5pkp25ppsaiwnh")))) |
| 27357 | (build-system pyproject-build-system) |
| 27358 | (arguments |
| 27359 | (list |
| 27360 | #:test-flags |
| 27361 | ;; These tests fail when FLIT_NO_NETWORK is set |
| 27362 | '(list "-k" "not test_invalid_classifier \ |
| 27363 | and not test_install_requires \ |
| 27364 | and not test_install_requires_extra \ |
| 27365 | and not test_validate_classifiers_private") |
| 27366 | #:phases |
| 27367 | #~(modify-phases %standard-phases |
| 27368 | (add-before 'check 'pre-check |
| 27369 | (lambda* (#:key tests? inputs outputs #:allow-other-keys) |
| 27370 | (when tests? |
| 27371 | (setenv "HOME" "/tmp") |
| 27372 | (setenv "FLIT_NO_NETWORK" "1"))))))) |
| 27373 | (propagated-inputs |
| 27374 | (list python-pypa-build |
| 27375 | python-tomli-w |
| 27376 | python-flit-core |
| 27377 | python-docutils |
| 27378 | python-requests)) |
| 27379 | (native-inputs |
| 27380 | (list python-responses |
| 27381 | python-pygments-github-lexers |
| 27382 | python-pytest |
| 27383 | python-pytest-cov |
| 27384 | python-sphinx |
| 27385 | python-sphinxcontrib-github-alt |
| 27386 | python-testpath)) |
| 27387 | (home-page "https://flit.readthedocs.io/") |
| 27388 | (synopsis "Simple packaging tool for simple packages") |
| 27389 | (description "Flit is a simple way to put Python packages and modules on |
| 27390 | PyPI. Flit packages a single importable module or package at a time, using |
| 27391 | the import name as the name on PyPI. All subpackages and data files within a |
| 27392 | package are included automatically.") |
| 27393 | (license license:bsd-3))) |
| 27394 | |
| 27395 | (define-public python-pathtools |
| 27396 | (package |
| 27397 | (name "python-pathtools") |
| 27398 | (version "0.1.2") |
| 27399 | (source |
| 27400 | (origin |
| 27401 | (method url-fetch) |
| 27402 | (uri (pypi-uri "pathtools" version)) |
| 27403 | (sha256 |
| 27404 | (base32 |
| 27405 | "1h7iam33vwxk8bvslfj4qlsdprdnwf8bvzhqh3jq5frr391cadbw")))) |
| 27406 | (build-system python-build-system) |
| 27407 | (home-page |
| 27408 | "https://github.com/gorakhargosh/pathtools") |
| 27409 | (synopsis "Path utilities for Python") |
| 27410 | (description "Pattern matching and various utilities for file systems |
| 27411 | paths.") |
| 27412 | (license license:expat))) |
| 27413 | |
| 27414 | (define-public python-fastentrypoints |
| 27415 | (package |
| 27416 | (name "python-fastentrypoints") |
| 27417 | (version "0.12") |
| 27418 | (source |
| 27419 | (origin |
| 27420 | (method url-fetch) |
| 27421 | (uri (pypi-uri "fastentrypoints" version)) |
| 27422 | (sha256 |
| 27423 | (base32 |
| 27424 | "02s1j8i2dzbpbwgq2a3fiqwm3cnmhii2qzc0k42l0rdxd4a4ya7z")))) |
| 27425 | (build-system python-build-system) |
| 27426 | (home-page |
| 27427 | "https://github.com/ninjaaron/fast-entry_points") |
| 27428 | (synopsis |
| 27429 | "Makes entry_points specified in setup.py load more quickly") |
| 27430 | (description |
| 27431 | "Using entry_points in your setup.py makes scripts that start really |
| 27432 | slowly because it imports pkg_resources. This package allows such setup |
| 27433 | scripts to load entry points more quickly.") |
| 27434 | (license license:bsd-3))) |
| 27435 | |
| 27436 | (define-public python-funcparserlib |
| 27437 | (package |
| 27438 | (name "python-funcparserlib") |
| 27439 | (version "1.0.1") |
| 27440 | (source |
| 27441 | (origin |
| 27442 | ;; Source tarball on PyPi lacks tests. |
| 27443 | (method git-fetch) |
| 27444 | (uri (git-reference |
| 27445 | (url "https://github.com/vlasovskikh/funcparserlib") |
| 27446 | (commit version))) |
| 27447 | (file-name (git-file-name name version)) |
| 27448 | (sha256 |
| 27449 | (base32 "0dw3i4fyf3j9h1l7xfgs99fc2w2axk6xqk0sdag43k444ss4hkrc")))) |
| 27450 | (build-system pyproject-build-system) |
| 27451 | (arguments |
| 27452 | '(#:phases |
| 27453 | (modify-phases %standard-phases |
| 27454 | (replace 'check |
| 27455 | (lambda* (#:key tests? #:allow-other-keys) |
| 27456 | (when tests? |
| 27457 | (invoke "python" "-m" "unittest" "discover" "-v"))))))) |
| 27458 | ;; ModuleNotFoundError: No module named 'poetry' |
| 27459 | (native-inputs (list python-poetry-core)) |
| 27460 | (home-page "https://github.com/vlasovskikh/funcparserlib") |
| 27461 | (synopsis |
| 27462 | "Recursive descent parsing library based on functional combinators") |
| 27463 | (description |
| 27464 | "This package is a recursive descent parsing library for Python based on |
| 27465 | functional combinators. Parser combinators are just higher-order functions |
| 27466 | that take parsers as their arguments and return them as result values.") |
| 27467 | (license license:expat))) |
| 27468 | |
| 27469 | (define-public python-speg |
| 27470 | (package |
| 27471 | (name "python-speg") |
| 27472 | (version "0.3") |
| 27473 | (source |
| 27474 | (origin |
| 27475 | (method url-fetch) |
| 27476 | (uri (pypi-uri "speg" version ".zip")) |
| 27477 | (sha256 |
| 27478 | (base32 "0w9y4jf4787dzhy6rvhwi0mpl0r8qkqmqmyv2hpwdpv8w53yzjqh")))) |
| 27479 | (arguments |
| 27480 | `(#:tests? #f)) ;FIXME: tests fail, not sure why |
| 27481 | (native-inputs |
| 27482 | (list unzip)) |
| 27483 | (build-system python-build-system) |
| 27484 | (home-page "https://github.com/avakar/speg") |
| 27485 | (synopsis "PEG-based parser interpreter with memoization") |
| 27486 | (description "This package is a PEG-based parser and interpreter with |
| 27487 | memoization.") |
| 27488 | (license license:expat))) |
| 27489 | |
| 27490 | (define-public python-cson |
| 27491 | (package |
| 27492 | (name "python-cson") |
| 27493 | (version "0.8") |
| 27494 | (source |
| 27495 | (origin |
| 27496 | (method url-fetch) |
| 27497 | (uri (pypi-uri "cson" version)) |
| 27498 | (sha256 |
| 27499 | (base32 "00cyvigg4npbph39ghkg77xbxisa6plf75vii24igxfizik0337f")))) |
| 27500 | (build-system python-build-system) |
| 27501 | (propagated-inputs |
| 27502 | (list python-speg)) |
| 27503 | (home-page "https://github.com/avakar/pycson") |
| 27504 | (synopsis "Parser for Coffeescript Object Notation (CSON)") |
| 27505 | (description "This package is a parser for Coffeescript Object |
| 27506 | Notation (CSON).") |
| 27507 | (license license:expat))) |
| 27508 | |
| 27509 | (define-public python-aionotify |
| 27510 | (package |
| 27511 | (name "python-aionotify") |
| 27512 | (version "0.2.0") |
| 27513 | (source |
| 27514 | (origin |
| 27515 | ;; Source tarball on PyPi lacks tests |
| 27516 | (method git-fetch) |
| 27517 | (uri (git-reference |
| 27518 | (url "https://github.com/rbarrois/aionotify") |
| 27519 | (commit (string-append "v" version)))) |
| 27520 | (file-name (git-file-name name version)) |
| 27521 | (sha256 |
| 27522 | (base32 "1sk9i8czxgsbrswsf1nlb4c82vgnlzi8zrvrxdip92w2z8hqh43y")) |
| 27523 | (patches (search-patches "python-aionotify-0.2.0-py3.8.patch")))) |
| 27524 | (build-system python-build-system) |
| 27525 | (home-page "https://github.com/rbarrois/aionotify") |
| 27526 | (synopsis "Asyncio-powered inotify library") |
| 27527 | (description |
| 27528 | "@code{aionotify} is a simple, asyncio-based inotify library.") |
| 27529 | (license license:bsd-3))) |
| 27530 | |
| 27531 | (define-public python-forbiddenfruit |
| 27532 | (package |
| 27533 | (name "python-forbiddenfruit") |
| 27534 | (version "0.1.3") |
| 27535 | (source |
| 27536 | (origin |
| 27537 | ;; Source tarball on PyPi lacks Makefile that builds and runs tests |
| 27538 | (method git-fetch) |
| 27539 | (uri (git-reference |
| 27540 | (url "https://github.com/clarete/forbiddenfruit") |
| 27541 | (commit version))) |
| 27542 | (file-name (git-file-name name version)) |
| 27543 | (sha256 |
| 27544 | (base32 "1fp2xvdqpi910j9r3q68x38phpxbm700gjdi2m2j5gs91xdnyyh2")))) |
| 27545 | (build-system python-build-system) |
| 27546 | (arguments |
| 27547 | '(#:phases |
| 27548 | (modify-phases %standard-phases |
| 27549 | (replace 'check |
| 27550 | (lambda _ |
| 27551 | (invoke "make" "SKIP_DEPS=1")))))) |
| 27552 | (native-inputs |
| 27553 | (list python-nose python-coverage)) |
| 27554 | (home-page "https://github.com/clarete/forbiddenfruit") |
| 27555 | (synopsis "Patch python built-in objects") |
| 27556 | (description "This project allows Python code to extend built-in types.") |
| 27557 | (license (list license:gpl3+ license:expat)))) |
| 27558 | |
| 27559 | (define-public python-k5test |
| 27560 | (package |
| 27561 | (name "python-k5test") |
| 27562 | (version "0.10.3") |
| 27563 | (source |
| 27564 | (origin |
| 27565 | (method url-fetch) |
| 27566 | (uri (pypi-uri "k5test" version)) |
| 27567 | (sha256 |
| 27568 | (base32 |
| 27569 | "07sp9hc6nkbgzywvr2ivcik03wibs6gmxm1k33l1b8v3mnyfx7cw")))) |
| 27570 | (build-system python-build-system) |
| 27571 | (propagated-inputs |
| 27572 | (list python-six |
| 27573 | ;; `which`, `kadmin.local` binaries called inside library |
| 27574 | which mit-krb5)) |
| 27575 | (native-inputs (list mit-krb5)) |
| 27576 | (arguments |
| 27577 | '(#:phases |
| 27578 | (modify-phases %standard-phases |
| 27579 | (add-after 'unpack 'apply-upstream-fixes |
| 27580 | (lambda* _ |
| 27581 | (substitute* "k5test/realm.py" |
| 27582 | ;; Upstream commit f6b302d94dbdce37a1b81cc3faeeac4dc637b0e9. |
| 27583 | (("'kadmin_local'") "'kadmin.local'") |
| 27584 | ;; Upstream commit 3aef84515cf3d1a171c66856c898d0a5cbbd03ea. |
| 27585 | (("\\.stop_daemon") "._stop_daemon"))))))) |
| 27586 | (home-page "https://github.com/pythongssapi/k5test") |
| 27587 | (synopsis "Library for setting up self-contained Kerberos 5 environments") |
| 27588 | (description |
| 27589 | "@code{k5test} is a library for setting up self-contained Kerberos 5 |
| 27590 | environments, and running Python unit tests inside those environments. It is |
| 27591 | based on the file of the same name found alongside the MIT Kerberos 5 unit |
| 27592 | tests.") |
| 27593 | (license license:isc))) |
| 27594 | |
| 27595 | (define-public python-gssapi |
| 27596 | (package |
| 27597 | (name "python-gssapi") |
| 27598 | (version "1.8.2") |
| 27599 | (source |
| 27600 | (origin |
| 27601 | (method url-fetch) |
| 27602 | (uri (pypi-uri "gssapi" version)) |
| 27603 | (sha256 |
| 27604 | (base32 |
| 27605 | "16n86nr19s95czvc1a9mdhs1kiq77qkcjp2c1rk5h4f93h10m3mp")))) |
| 27606 | (build-system python-build-system) |
| 27607 | (propagated-inputs |
| 27608 | (list python-decorator python-six)) |
| 27609 | (inputs |
| 27610 | (list mit-krb5)) |
| 27611 | ;; for tests |
| 27612 | (native-inputs |
| 27613 | (list python-parameterized python-k5test python-nose |
| 27614 | python-cython)) |
| 27615 | (home-page "https://github.com/pythongssapi/python-gssapi") |
| 27616 | (synopsis "Python GSSAPI Wrapper") |
| 27617 | (description |
| 27618 | "Python-GSSAPI provides both low-level and high level wrappers around the |
| 27619 | GSSAPI C libraries. While it focuses on the Kerberos mechanism, it should |
| 27620 | also be usable with other GSSAPI mechanisms.") |
| 27621 | (license license:isc))) |
| 27622 | |
| 27623 | (define-public python-check-manifest |
| 27624 | (package |
| 27625 | (name "python-check-manifest") |
| 27626 | (version "0.49") |
| 27627 | (source |
| 27628 | (origin |
| 27629 | (method url-fetch) |
| 27630 | (uri (pypi-uri "check-manifest" version)) |
| 27631 | (sha256 |
| 27632 | (base32 |
| 27633 | "05plc1835zz1w1k7wpf2n6jir71ds1w7nz3535lj5ks2am2419k4")))) |
| 27634 | (build-system pyproject-build-system) |
| 27635 | (arguments |
| 27636 | '(;; This test requires setting up a venv which does not work |
| 27637 | ;; properly in the build environment. |
| 27638 | #:test-flags '("-k" "not test_build_sdist_pep517_isolated") |
| 27639 | #:phases |
| 27640 | (modify-phases %standard-phases |
| 27641 | ;; Tests use git submodule commands over the file transport, which |
| 27642 | ;; has been disabled in git, see CVE-2022-39253. Enable these |
| 27643 | ;; commands to allow checks to succeed. |
| 27644 | (add-before 'check 'allow-git-submodule-add |
| 27645 | (lambda _ |
| 27646 | (setenv "HOME" "/tmp") |
| 27647 | (invoke "git" "config" "--global" |
| 27648 | "protocol.file.allow" "always")))))) |
| 27649 | (native-inputs |
| 27650 | (list git-minimal/pinned python-pytest)) |
| 27651 | (propagated-inputs |
| 27652 | (list python-pypa-build python-setuptools)) |
| 27653 | (home-page "https://github.com/mgedmin/check-manifest") |
| 27654 | (synopsis "Check MANIFEST.in in a Python source package for completeness") |
| 27655 | (description "Python package can include a MANIFEST.in file to help with |
| 27656 | sending package files to the Python Package Index. This package checks that |
| 27657 | file to ensure it completely and accurately describes your project.") |
| 27658 | (license license:expat))) |
| 27659 | |
| 27660 | (define-public python-android-stringslib |
| 27661 | (package |
| 27662 | (name "python-android-stringslib") |
| 27663 | (version "0.1.2") |
| 27664 | (source |
| 27665 | (origin |
| 27666 | (method git-fetch) |
| 27667 | (uri (git-reference |
| 27668 | (url "https://framagit.org/tyreunom/python-android-strings-lib") |
| 27669 | (commit (string-append "v" version)))) |
| 27670 | (file-name (git-file-name name version)) |
| 27671 | (sha256 |
| 27672 | (base32 |
| 27673 | "0gij55qzzq1h83kfpvhai1vf78kkhyvxa6l17m2nl24454lhfin4")))) |
| 27674 | (build-system python-build-system) |
| 27675 | (arguments |
| 27676 | `(#:tests? #f)) |
| 27677 | (home-page "https://framagit.org/tyreunom/python-android-strings-lib") |
| 27678 | (synopsis "Android strings.xml support") |
| 27679 | (description "Android Strings Lib provides support for android's strings.xml |
| 27680 | files. These files are used to translate strings in android apps.") |
| 27681 | (license license:expat))) |
| 27682 | |
| 27683 | (define-public python-watchdog |
| 27684 | (package |
| 27685 | (name "python-watchdog") |
| 27686 | (version "2.1.6") |
| 27687 | (source |
| 27688 | (origin |
| 27689 | (method url-fetch) |
| 27690 | (uri (pypi-uri "watchdog" version)) |
| 27691 | (sha256 |
| 27692 | (base32 "1rx2nyl0cyj0v4ja795cl3gi26577c5wg48syr3byz3ndkgpavm3")))) |
| 27693 | (build-system python-build-system) |
| 27694 | (arguments |
| 27695 | `(#:phases |
| 27696 | (modify-phases %standard-phases |
| 27697 | (replace 'check |
| 27698 | (lambda* (#:key inputs outputs tests? #:allow-other-keys) |
| 27699 | (when tests? |
| 27700 | (add-installed-pythonpath inputs outputs) |
| 27701 | (invoke "python" "-m" "pytest" "-k" |
| 27702 | ;; This test failed. |
| 27703 | "not test_kill_auto_restart"))))))) |
| 27704 | (propagated-inputs |
| 27705 | (list python-pathtools python-pyyaml)) |
| 27706 | (native-inputs |
| 27707 | (list python-pytest-cov python-pytest-timeout)) |
| 27708 | (home-page "https://github.com/gorakhargosh/watchdog") |
| 27709 | (synopsis "File system events monitoring") |
| 27710 | (description "This package provides a way to monitor file system events |
| 27711 | such as a file modification and trigger an action. This is similar to inotify, |
| 27712 | but portable.") |
| 27713 | (license license:asl2.0))) |
| 27714 | |
| 27715 | (define-public python-watchgod |
| 27716 | (package |
| 27717 | (name "python-watchgod") |
| 27718 | (version "0.8.1") |
| 27719 | (source |
| 27720 | (origin |
| 27721 | ;; There are no tests in the PyPI tarball. |
| 27722 | (method git-fetch) |
| 27723 | (uri (git-reference |
| 27724 | (url "https://github.com/samuelcolvin/watchgod") |
| 27725 | (commit (string-append "v" version)))) |
| 27726 | (file-name (git-file-name name version)) |
| 27727 | (sha256 |
| 27728 | (base32 "0zm9xd2qf3d74l67yv8j3zhhhvi0vp25vhkg46l9d7flh9m04qrp")))) |
| 27729 | (build-system pyproject-build-system) |
| 27730 | (arguments |
| 27731 | (list #:test-flags '(list "-o" "asyncio_mode=auto" |
| 27732 | ;; PytestUnraisableExceptionWarning |
| 27733 | "-k" "not test_watch_log and not test_awatch"))) |
| 27734 | (native-inputs |
| 27735 | (list python-anyio |
| 27736 | python-coverage |
| 27737 | python-pygments |
| 27738 | python-pytest |
| 27739 | python-pytest-asyncio |
| 27740 | python-pytest-cov |
| 27741 | python-pytest-mock |
| 27742 | python-pytest-sugar |
| 27743 | python-pytest-toolbox)) |
| 27744 | (home-page "https://github.com/samuelcolvin/watchgod") |
| 27745 | (synopsis "Simple, modern file watching and code reload in Python") |
| 27746 | (description |
| 27747 | "Simple, modern file watching and code reload in Python inspired by |
| 27748 | @code{watchdog}. Among the differences are a unified approach for each |
| 27749 | operating systems and an elegant approach to concurrency using threading.") |
| 27750 | (license license:expat))) |
| 27751 | |
| 27752 | (define-public python-wget |
| 27753 | (package |
| 27754 | (name "python-wget") |
| 27755 | (version "3.2") |
| 27756 | (source |
| 27757 | (origin |
| 27758 | (method url-fetch) |
| 27759 | (uri (pypi-uri "wget" version ".zip")) |
| 27760 | (sha256 |
| 27761 | (base32 |
| 27762 | "0qb0y7ipby42m4m7h0ipazpdyc3bn9xi46lvifcwwl5albn31rim")))) |
| 27763 | (build-system python-build-system) |
| 27764 | (native-inputs (list unzip)) |
| 27765 | (home-page "https://bitbucket.org/techtonik/python-wget/") |
| 27766 | (synopsis "Pure Python download utility") |
| 27767 | (description "The python-wget library provides an API to download files |
| 27768 | with features similar to the @command{wget} utility.") |
| 27769 | (license license:unlicense))) |
| 27770 | |
| 27771 | (define-public offlate |
| 27772 | (package |
| 27773 | (name "offlate") |
| 27774 | (version "0.6.1") |
| 27775 | (source |
| 27776 | (origin |
| 27777 | (method git-fetch) |
| 27778 | (uri (git-reference |
| 27779 | (url "https://framagit.org/tyreunom/offlate") |
| 27780 | (commit version))) |
| 27781 | (file-name (git-file-name name version)) |
| 27782 | (sha256 |
| 27783 | (base32 |
| 27784 | "1sx5cv8pamyw1m089b6x8ykaxdkx26jk9cblhbzlf0m3ckz52jik")))) |
| 27785 | (build-system python-build-system) |
| 27786 | (arguments |
| 27787 | ;; No tests |
| 27788 | `(#:tests? #f |
| 27789 | #:phases |
| 27790 | (modify-phases %standard-phases |
| 27791 | (add-before 'build 'generate-fonts |
| 27792 | (lambda _ |
| 27793 | (invoke "make" "fonts"))) |
| 27794 | (add-before 'build 'generate-translations |
| 27795 | (lambda _ |
| 27796 | (invoke "make" "update-langs")))))) |
| 27797 | (propagated-inputs |
| 27798 | (list python-android-stringslib |
| 27799 | python-dateutil |
| 27800 | python-gitlab |
| 27801 | python-lxml |
| 27802 | python-polib |
| 27803 | python-pycountry |
| 27804 | python-pyenchant |
| 27805 | python-pygit2 |
| 27806 | python-pygithub |
| 27807 | python-pyqt |
| 27808 | python-requests |
| 27809 | python-ruamel.yaml |
| 27810 | python-translate-toolkit |
| 27811 | python-translation-finder |
| 27812 | python-watchdog)) |
| 27813 | (native-inputs |
| 27814 | (list qttools-5 fontforge)) |
| 27815 | (home-page "https://framagit.org/tyreunom/offlate") |
| 27816 | (synopsis "Offline translation interface for online translation tools") |
| 27817 | (description "Offlate offers a unified interface for different translation |
| 27818 | file formats, as well as many different online translation platforms. You can |
| 27819 | use it to get work from online platforms, specialized such as the Translation |
| 27820 | Project, or not such a gitlab instance when your upstream doesn't use any |
| 27821 | dedicated platform. The tool proposes a unified interface for any format and |
| 27822 | an upload option to send your work back to the platform.") |
| 27823 | (license license:gpl3+))) |
| 27824 | |
| 27825 | (define-public python-titlecase |
| 27826 | (package |
| 27827 | (name "python-titlecase") |
| 27828 | (version "2.4") |
| 27829 | (source |
| 27830 | (origin |
| 27831 | (method url-fetch) |
| 27832 | (uri (pypi-uri "titlecase" version)) |
| 27833 | (sha256 |
| 27834 | (base32 |
| 27835 | "00h92jdpj108z4sb6dpayfblpax20698290jnbyi5z5iwk5974i6")))) |
| 27836 | (build-system python-build-system) |
| 27837 | (home-page "https://github.com/ppannuto/python-titlecase") |
| 27838 | (synopsis "Capitalize strings similar to book titles") |
| 27839 | (description |
| 27840 | "Python-Titlecase is a Python port of John Gruber's titlecase.pl. |
| 27841 | It capitalizes (predominantly English) strings in a way that is similar to |
| 27842 | book titles, using the New York Times Manual of Style to leave certain words |
| 27843 | lowercase.") |
| 27844 | (license license:expat))) |
| 27845 | |
| 27846 | (define-public python-pypng |
| 27847 | (package |
| 27848 | (name "python-pypng") |
| 27849 | (version "0.0.20") |
| 27850 | (source |
| 27851 | (origin |
| 27852 | (method url-fetch) |
| 27853 | (uri (pypi-uri "pypng" version)) |
| 27854 | (sha256 |
| 27855 | (base32 "02qpa22ls41vwsrzw9r9qhj1nhq05p03hb5473pay6y980s86chh")))) |
| 27856 | (build-system python-build-system) |
| 27857 | (home-page "https://github.com/drj11/pypng") |
| 27858 | (synopsis "Pure Python PNG image encoder/decoder") |
| 27859 | (description |
| 27860 | "The PyPNG module implements support for PNG images. It reads and writes |
| 27861 | PNG files with all allowable bit depths (1/2/4/8/16/24/32/48/64 bits per |
| 27862 | pixel) and colour combinations: greyscale (1/2/4/8/16 bit); RGB, RGBA, |
| 27863 | LA (greyscale with alpha) with 8/16 bits per channel; colour mapped |
| 27864 | images (1/2/4/8 bit). Adam7 interlacing is supported for reading and writing. |
| 27865 | A number of optional chunks can be specified (when writing) and |
| 27866 | understood (when reading): tRNS, bKGD, gAMA. |
| 27867 | |
| 27868 | PyPNG is not a high level toolkit for image processing (like PIL) and does not |
| 27869 | aim at being a replacement or competitor. Its strength lies in fine-grained |
| 27870 | extensive support of PNG features. It can also read and write Netpbm PAM |
| 27871 | files, with a focus on its use as an intermediate format for implementing |
| 27872 | custom PNG processing.") |
| 27873 | (license license:expat))) |
| 27874 | |
| 27875 | (define-public python-fuzzywuzzy |
| 27876 | (package |
| 27877 | (name "python-fuzzywuzzy") |
| 27878 | (version "0.18.0") |
| 27879 | (source |
| 27880 | (origin |
| 27881 | (method url-fetch) |
| 27882 | (uri (pypi-uri "fuzzywuzzy" version)) |
| 27883 | (sha256 |
| 27884 | (base32 |
| 27885 | "1s00zn75y2dkxgnbw8kl8dw4p1mc77cv78fwfa4yb0274s96w0a5")))) |
| 27886 | (build-system python-build-system) |
| 27887 | (native-inputs |
| 27888 | (list python-hypothesis python-pycodestyle python-pytest)) |
| 27889 | (propagated-inputs |
| 27890 | (list python-levenshtein)) |
| 27891 | (home-page "https://github.com/seatgeek/fuzzywuzzy") |
| 27892 | (synopsis "Fuzzy string matching in Python") |
| 27893 | (description "Approximate string matching using |
| 27894 | @emph{Levenshtein Distance} to calculate the differences between |
| 27895 | sequences.") |
| 27896 | (license license:gpl2))) |
| 27897 | |
| 27898 | (define-public python-block-tracing |
| 27899 | (package |
| 27900 | (name "python-block-tracing") |
| 27901 | (version "1.0.1") |
| 27902 | (source |
| 27903 | (origin |
| 27904 | (method url-fetch) |
| 27905 | (uri (pypi-uri "block_tracing" version)) |
| 27906 | (sha256 |
| 27907 | (base32 |
| 27908 | "0s2y729qr5rs7n506qfh8cssk8m2bi6k2y5vbrh2z3raf2d01alz")))) |
| 27909 | (build-system python-build-system) |
| 27910 | (arguments '(#:tests? #f)) ; no tests |
| 27911 | (home-page "https://github.com/rianhunter/block_tracing") |
| 27912 | (synopsis "Protect process memory") |
| 27913 | (description |
| 27914 | "@code{block_tracing} is a tiny Python library that can be used to |
| 27915 | prevent debuggers and other applications from inspecting the memory within |
| 27916 | your process.") |
| 27917 | (license license:expat))) |
| 27918 | |
| 27919 | (define-public python-gcovr |
| 27920 | (package |
| 27921 | (name "python-gcovr") |
| 27922 | (version "4.2") |
| 27923 | (source |
| 27924 | (origin |
| 27925 | (method url-fetch) |
| 27926 | (uri (pypi-uri "gcovr" version)) |
| 27927 | (sha256 |
| 27928 | (base32 |
| 27929 | "0gyady7x3v3l9fm1zan0idaggqqcm31y7g5vxk7h05p5h7f39bjs")))) |
| 27930 | (build-system python-build-system) |
| 27931 | (propagated-inputs |
| 27932 | (list python-lxml python-jinja2)) |
| 27933 | (home-page "https://gcovr.com/") |
| 27934 | (synopsis "Utility for generating code coverage results") |
| 27935 | (description |
| 27936 | "Gcovr provides a utility for managing the use of the GNU gcov |
| 27937 | utility and generating summarized code coverage results. It is inspired |
| 27938 | by the Python coverage.py package, which provides a similar utility for |
| 27939 | Python.") |
| 27940 | (license license:bsd-3))) |
| 27941 | |
| 27942 | (define-public python-owslib |
| 27943 | (package |
| 27944 | (name "python-owslib") |
| 27945 | (version "0.19.2") |
| 27946 | (source |
| 27947 | (origin |
| 27948 | (method url-fetch) |
| 27949 | (uri (pypi-uri "OWSLib" version)) |
| 27950 | (sha256 |
| 27951 | (base32 "0v8vg0naa9rywvd31cpq65ljbdclpsrx09788v4xj7lg10np8nk0")))) |
| 27952 | (build-system python-build-system) |
| 27953 | (arguments |
| 27954 | ;; TODO: package dependencies required for tests. |
| 27955 | '(#:tests? #f |
| 27956 | #:phases (modify-phases %standard-phases |
| 27957 | (delete 'sanity-check)))) |
| 27958 | (synopsis "Interface for Open Geospatial Consortium web service") |
| 27959 | (description |
| 27960 | "OWSLib is a Python package for client programming with Open Geospatial |
| 27961 | Consortium (OGC) web service (hence OWS) interface standards, and their related |
| 27962 | content models.") |
| 27963 | (home-page "https://geopython.github.io/OWSLib/") |
| 27964 | (license license:bsd-3))) |
| 27965 | |
| 27966 | (define-public python-docusign-esign |
| 27967 | (package |
| 27968 | (name "python-docusign-esign") |
| 27969 | (version "3.1.0") |
| 27970 | (source (origin |
| 27971 | (method url-fetch) |
| 27972 | (uri (pypi-uri "docusign_esign" version)) |
| 27973 | (sha256 |
| 27974 | (base32 |
| 27975 | "01f3h03vc97syjlmqyl7xa5j90pzgmwpspc5a0gra9saynnbkx37")))) |
| 27976 | (build-system python-build-system) |
| 27977 | ;; Testing requires undocumented setup changes, and so testing is disabled here. |
| 27978 | (arguments `(#:tests? #f)) |
| 27979 | (propagated-inputs |
| 27980 | (list python-certifi |
| 27981 | python-six |
| 27982 | python-dateutil |
| 27983 | python-urllib3 |
| 27984 | python-pyjwt |
| 27985 | python-cryptography |
| 27986 | python-nose)) |
| 27987 | (synopsis "DocuSign Python Client") |
| 27988 | (description "The Official DocuSign Python Client Library used to interact |
| 27989 | with the eSign REST API. Send, sign, and approve documents using this client.") |
| 27990 | (home-page "https://www.docusign.com/devcenter") |
| 27991 | (license license:expat))) |
| 27992 | |
| 27993 | (define-public python-xattr |
| 27994 | (package |
| 27995 | (name "python-xattr") |
| 27996 | (version "0.9.9") |
| 27997 | (source |
| 27998 | (origin |
| 27999 | (method url-fetch) |
| 28000 | (uri (pypi-uri "xattr" version)) |
| 28001 | (sha256 |
| 28002 | (base32 |
| 28003 | "0ipkfblyvp5hylahjkw9zss1ii9xnwjypr3b3ncv989szcg7xjq9")))) |
| 28004 | (build-system python-build-system) |
| 28005 | (propagated-inputs |
| 28006 | (list python-cffi)) |
| 28007 | (home-page "https://github.com/xattr/xattr") |
| 28008 | (synopsis |
| 28009 | "Python wrapper for extended file system attributes") |
| 28010 | (description "This package provides a Python wrapper for using extended |
| 28011 | file system attributes. Extended attributes extend the basic attributes of files |
| 28012 | and directories in the file system. They are stored as name:data pairs |
| 28013 | associated with file system objects (files, directories, symlinks, etc).") |
| 28014 | (license license:expat))) |
| 28015 | |
| 28016 | (define-public python-json-logger |
| 28017 | (package |
| 28018 | (name "python-json-logger") |
| 28019 | (version "0.1.11") |
| 28020 | (source |
| 28021 | (origin |
| 28022 | (method url-fetch) |
| 28023 | (uri (pypi-uri "python-json-logger" version)) |
| 28024 | (sha256 |
| 28025 | (base32 |
| 28026 | "10g2ya6nsvn5vxzvq2wb8q4d43i3d7756i5rxyjna6d0y9i138xp")))) |
| 28027 | (build-system python-build-system) |
| 28028 | (home-page |
| 28029 | "https://github.com/madzak/python-json-logger") |
| 28030 | (synopsis "JSON log formatter in Python") |
| 28031 | (description "This library allows standard Python logging to output log data |
| 28032 | as JSON objects. With JSON we can make our logs more readable by machines and |
| 28033 | we can stop writing custom parsers for syslog-type records.") |
| 28034 | (license license:bsd-3))) |
| 28035 | |
| 28036 | (define-public python-daiquiri |
| 28037 | (package |
| 28038 | (name "python-daiquiri") |
| 28039 | (version "2.1.1") |
| 28040 | (source |
| 28041 | (origin |
| 28042 | (method url-fetch) |
| 28043 | (uri (pypi-uri "daiquiri" version)) |
| 28044 | (sha256 |
| 28045 | (base32 |
| 28046 | "1qmank3c217ddiig3xr8ps0mqaydcp0q5a62in9a9g4zf72zjnqd")))) |
| 28047 | (build-system python-build-system) |
| 28048 | (propagated-inputs |
| 28049 | (list python-json-logger)) |
| 28050 | (native-inputs |
| 28051 | (list python-mock python-pytest python-setuptools-scm python-six)) |
| 28052 | (home-page "https://github.com/jd/daiquiri") |
| 28053 | (synopsis |
| 28054 | "Library to configure Python logging easily") |
| 28055 | (description "The daiquiri library provides an easy way to configure |
| 28056 | logging in Python. It also provides some custom formatters and handlers.") |
| 28057 | (license license:asl2.0))) |
| 28058 | |
| 28059 | (define-public python-pifpaf |
| 28060 | (package |
| 28061 | (name "python-pifpaf") |
| 28062 | (version "3.1.5") |
| 28063 | (source |
| 28064 | (origin |
| 28065 | (method url-fetch) |
| 28066 | (uri (pypi-uri "pifpaf" version)) |
| 28067 | (sha256 |
| 28068 | (base32 |
| 28069 | "19bdmxldc2m570isl7hbqgbb20si4sin7pi5fw8sv9py8dyv2s4n")))) |
| 28070 | (build-system python-build-system) |
| 28071 | (arguments |
| 28072 | '(#:phases |
| 28073 | (modify-phases %standard-phases |
| 28074 | (replace 'check |
| 28075 | (lambda _ |
| 28076 | (invoke "python" "setup.py" "testr" "--slowest" |
| 28077 | "--testr-args=until-failure")))))) |
| 28078 | (propagated-inputs |
| 28079 | (list python-click |
| 28080 | python-daiquiri |
| 28081 | python-fixtures |
| 28082 | python-jinja2 |
| 28083 | python-pbr |
| 28084 | python-psutil |
| 28085 | python-xattr)) |
| 28086 | (native-inputs |
| 28087 | (list python-mock python-os-testr python-requests |
| 28088 | python-testrepository python-testtools)) |
| 28089 | (home-page "https://github.com/jd/pifpaf") |
| 28090 | (synopsis "Tools and fixtures to manage daemons for testing in Python") |
| 28091 | (description "Pifpaf is a suite of fixtures and a command-line tool that |
| 28092 | starts and stops daemons for a quick throw-away usage. This is typically |
| 28093 | useful when needing these daemons to run integration testing. It originally |
| 28094 | evolved from its precursor @code{overtest}.") |
| 28095 | (license license:asl2.0))) |
| 28096 | |
| 28097 | (define-public python-pytest-check-links |
| 28098 | (package |
| 28099 | (name "python-pytest-check-links") |
| 28100 | (version "0.3.0") |
| 28101 | (source |
| 28102 | (origin |
| 28103 | (method url-fetch) |
| 28104 | ;; URI uses underscores |
| 28105 | (uri (pypi-uri "pytest_check_links" version)) |
| 28106 | (sha256 |
| 28107 | (base32 |
| 28108 | "12x3wmrdzm6wgk0vz02hb769h68nr49q47w5q1pj95pc89hsa34v")))) |
| 28109 | (build-system python-build-system) |
| 28110 | (propagated-inputs |
| 28111 | (list python-docutils |
| 28112 | python-html5lib |
| 28113 | python-nbconvert |
| 28114 | python-nbformat |
| 28115 | python-pytest |
| 28116 | python-six)) |
| 28117 | (native-inputs |
| 28118 | (list python-pbr-minimal)) |
| 28119 | (home-page "https://github.com/minrk/pytest-check-links") |
| 28120 | (synopsis "Check links in files") |
| 28121 | (description "This package provides a pytest plugin that checks URLs for |
| 28122 | HTML-containing files.") |
| 28123 | (license license:bsd-3))) |
| 28124 | |
| 28125 | (define-public python-json5 |
| 28126 | (package |
| 28127 | (name "python-json5") |
| 28128 | (version "0.8.5") |
| 28129 | (source |
| 28130 | (origin |
| 28131 | ;; sample.json5 is missing from PyPi source tarball |
| 28132 | (method git-fetch) |
| 28133 | (uri (git-reference |
| 28134 | (url "https://github.com/dpranke/pyjson5") |
| 28135 | (commit (string-append "v" version)))) |
| 28136 | (file-name (git-file-name name version)) |
| 28137 | (sha256 |
| 28138 | (base32 "0nyngj18jlkgvm1177lc3cj47wm4yh3dqigygvcvw7xkyryafsqn")))) |
| 28139 | (build-system python-build-system) |
| 28140 | (home-page "https://github.com/dpranke/pyjson5") |
| 28141 | (synopsis |
| 28142 | "Python implementation of the JSON5 data format") |
| 28143 | (description |
| 28144 | "JSON5 extends the JSON data interchange format to make it slightly more |
| 28145 | usable as a configuration language. This Python package implements parsing and |
| 28146 | dumping of JSON5 data structures.") |
| 28147 | (license license:asl2.0))) |
| 28148 | |
| 28149 | (define-public python-freetype-py |
| 28150 | (package |
| 28151 | (name "python-freetype-py") |
| 28152 | (version "2.3.0") |
| 28153 | (source |
| 28154 | (origin |
| 28155 | (method url-fetch) |
| 28156 | (uri (pypi-uri "freetype-py" version ".zip")) |
| 28157 | (sha256 |
| 28158 | (base32 "1l55wzy21jmdayjna29ahzxrf2fp68580978rs6kap1a4zilrdpr")))) |
| 28159 | (build-system python-build-system) |
| 28160 | (native-inputs |
| 28161 | (list python-setuptools-scm |
| 28162 | unzip)) |
| 28163 | (inputs (list freetype)) |
| 28164 | (arguments |
| 28165 | `(#:phases |
| 28166 | ;; Note: the pypi archive does not contain tests, but running the check |
| 28167 | ;; phase will at least test whether the module loads correctly. |
| 28168 | (modify-phases %standard-phases |
| 28169 | (add-before 'build 'embed-library-reference |
| 28170 | (lambda* (#:key inputs #:allow-other-keys) |
| 28171 | (substitute* "freetype/raw.py" |
| 28172 | (("^(filename = ).*" _ >) |
| 28173 | (string-append > "\"" (search-input-file inputs "/lib/libfreetype.so") |
| 28174 | "\"\n")))))))) |
| 28175 | (home-page "https://github.com/rougier/freetype-py") |
| 28176 | (synopsis "Freetype python bindings") |
| 28177 | (description "Freetype Python provides bindings for the FreeType |
| 28178 | library. Only the high-level API is bound.") |
| 28179 | (license license:bsd-3))) |
| 28180 | |
| 28181 | (define-public python-frozendict |
| 28182 | (package |
| 28183 | (name "python-frozendict") |
| 28184 | (version "2.3.4") |
| 28185 | (source |
| 28186 | (origin |
| 28187 | (method url-fetch) |
| 28188 | (uri (pypi-uri "frozendict" version)) |
| 28189 | (sha256 |
| 28190 | (base32 "0y3zn57i1q5192f7l4w2z2zsy3rrx50g563msaq954r58s1v3d0m")))) |
| 28191 | (build-system python-build-system) |
| 28192 | (home-page "https://github.com/Marco-Sulla/python-frozendict") |
| 28193 | (synopsis "Simple immutable mapping for Python") |
| 28194 | (description |
| 28195 | "@dfn{frozendict} is an immutable wrapper around dictionaries that |
| 28196 | implements the complete mapping interface. It can be used as a drop-in |
| 28197 | replacement for dictionaries where immutability is desired.") |
| 28198 | (license license:expat))) |
| 28199 | |
| 28200 | (define-public python-unpaddedbase64 |
| 28201 | (package |
| 28202 | (name "python-unpaddedbase64") |
| 28203 | (version "2.1.0") |
| 28204 | (source |
| 28205 | (origin |
| 28206 | (method url-fetch) |
| 28207 | (uri (pypi-uri "unpaddedbase64" version)) |
| 28208 | (sha256 |
| 28209 | (base32 "01ghlmw63fgslwj8j74vkpf1kqvr7a4agm6nyn89vqwx106ccwvj")))) |
| 28210 | (build-system python-build-system) |
| 28211 | (arguments |
| 28212 | `(#:phases |
| 28213 | (modify-phases %standard-phases |
| 28214 | (replace 'check |
| 28215 | (lambda* (#:key inputs tests? #:allow-other-keys) |
| 28216 | (when tests? |
| 28217 | (copy-recursively (string-append |
| 28218 | (assoc-ref inputs "tests") "/tests") |
| 28219 | "tests") |
| 28220 | (invoke "python" "-m" "pytest" "-vv"))))))) |
| 28221 | (native-inputs |
| 28222 | `(("python-pytest" ,python-pytest) |
| 28223 | ("tests" |
| 28224 | ;; The release on pypi comes without tests. We can't build from this |
| 28225 | ;; checkout, though, because installation requires an invocation of |
| 28226 | ;; poetry. |
| 28227 | ,(origin |
| 28228 | (method git-fetch) |
| 28229 | (uri (git-reference |
| 28230 | (url "https://github.com/matrix-org/python-unpaddedbase64") |
| 28231 | (commit (string-append "v" version)))) |
| 28232 | (file-name (git-file-name name version)) |
| 28233 | (sha256 |
| 28234 | (base32 |
| 28235 | "1n6har8pxv0mqb96lanzihp1xf76aa17jw3977drb1fgz947pnmz")))))) |
| 28236 | (home-page "https://github.com/matrix-org/python-unpaddedbase64") |
| 28237 | (synopsis "Encode and decode Base64 without “=” padding") |
| 28238 | (description |
| 28239 | "RFC 4648 specifies that Base64 should be padded to a multiple of 4 bytes |
| 28240 | using “=” characters. However this conveys no benefit so many protocols |
| 28241 | choose to use Base64 without the “=” padding.") |
| 28242 | (license license:asl2.0))) |
| 28243 | |
| 28244 | (define-public python-py-cpuinfo |
| 28245 | ;; This is the first commit where riscv64-linux support is available. |
| 28246 | ;; We can move back to pypi releases with the next release. |
| 28247 | (let ((commit "4d6987e5c30f2ebacb20781892c01329042cce60") |
| 28248 | (revision "1")) |
| 28249 | (package |
| 28250 | (name "python-py-cpuinfo") |
| 28251 | (version (git-version "8.0.0" revision commit)) |
| 28252 | (source |
| 28253 | (origin |
| 28254 | (method git-fetch) |
| 28255 | (uri (git-reference |
| 28256 | (url "https://github.com/workhorsy/py-cpuinfo") |
| 28257 | (commit commit))) |
| 28258 | (file-name (git-file-name name version)) |
| 28259 | (sha256 |
| 28260 | (base32 |
| 28261 | "0h5wi1bfcqqr1x3j1pa7dmkx7siprsyksbsy80fl2sdrrgpji0b0")))) |
| 28262 | (build-system python-build-system) |
| 28263 | (home-page "https://github.com/workhorsy/py-cpuinfo") |
| 28264 | (synopsis "Get CPU info with Python") |
| 28265 | (description |
| 28266 | "This Python module returns the CPU info by using the best sources of |
| 28267 | information for your operating system.") |
| 28268 | (license license:expat)))) |
| 28269 | |
| 28270 | (define-public python-canonicaljson |
| 28271 | (package |
| 28272 | (name "python-canonicaljson") |
| 28273 | (version "1.6.3") |
| 28274 | (source |
| 28275 | (origin |
| 28276 | (method url-fetch) |
| 28277 | (uri (pypi-uri "canonicaljson" version)) |
| 28278 | (sha256 |
| 28279 | (base32 "0j5lq191jkd483q6xzc16c9fahxf15lrv03mvah9ka3lq85pcnfa")))) |
| 28280 | (build-system pyproject-build-system) |
| 28281 | (arguments |
| 28282 | (list |
| 28283 | #:phases |
| 28284 | #~(modify-phases %standard-phases |
| 28285 | (add-after 'unpack 'loosen-requirements |
| 28286 | (lambda _ |
| 28287 | ;; Permit newer versions of setuptools_scm |
| 28288 | (substitute* "pyproject.toml" |
| 28289 | ((">= 2.0.0, <3") ">= 2.0.0"))))))) |
| 28290 | (native-inputs |
| 28291 | (list python-pypa-build python-pytest python-setuptools python-setuptools-scm)) |
| 28292 | (propagated-inputs |
| 28293 | (list python-six python-frozendict python-simplejson)) |
| 28294 | (home-page "https://github.com/matrix-org/python-canonicaljson") |
| 28295 | (synopsis "Canonical JSON") |
| 28296 | (description |
| 28297 | "Deterministically encode JSON. |
| 28298 | |
| 28299 | @itemize |
| 28300 | @item Encodes objects and arrays as RFC 7159 JSON. |
| 28301 | @item Sorts object keys so that you get the same result each time. |
| 28302 | @item Has no insignificant whitespace to make the output as small as possible. |
| 28303 | @item Escapes only the characters that must be escaped, U+0000 to |
| 28304 | U+0019 / U+0022 / U+0056, to keep the output as small as possible. |
| 28305 | @item Uses the shortest escape sequence for each escaped character. |
| 28306 | @item Encodes the JSON as UTF-8. |
| 28307 | @item Can encode frozendict immutable dictionaries. |
| 28308 | @end itemize") |
| 28309 | (license license:asl2.0))) |
| 28310 | |
| 28311 | (define-public python-signedjson |
| 28312 | (package |
| 28313 | (name "python-signedjson") |
| 28314 | (version "1.1.1") |
| 28315 | (source |
| 28316 | (origin |
| 28317 | (method url-fetch) |
| 28318 | (uri (pypi-uri "signedjson" version)) |
| 28319 | (sha256 |
| 28320 | (base32 "0280f8zyycsmd7iy65bs438flm7m8ffs1kcxfbvhi8hbazkqc19m")))) |
| 28321 | (build-system python-build-system) |
| 28322 | (propagated-inputs |
| 28323 | (list python-canonicaljson python-importlib-metadata python-pynacl |
| 28324 | python-typing-extensions python-unpaddedbase64)) |
| 28325 | (native-inputs |
| 28326 | (list python-setuptools-scm)) |
| 28327 | (home-page "https://github.com/matrix-org/python-signedjson") |
| 28328 | (synopsis "Sign JSON objects with ED25519 signatures") |
| 28329 | (description |
| 28330 | "Sign JSON objects with ED25519 signatures. |
| 28331 | |
| 28332 | @itemize |
| 28333 | @item More than one entity can sign the same object. |
| 28334 | @item Each entity can sign the object with more than one key making it easier to |
| 28335 | rotate keys |
| 28336 | @item ED25519 can be replaced with a different algorithm. |
| 28337 | @item Unprotected data can be added to the object under the @dfn{\"unsigned\"} |
| 28338 | key. |
| 28339 | @end itemize") |
| 28340 | (license license:asl2.0))) |
| 28341 | |
| 28342 | (define-public python-daemonize |
| 28343 | (package |
| 28344 | (name "python-daemonize") |
| 28345 | (version "2.5.0") |
| 28346 | (source |
| 28347 | (origin |
| 28348 | (method url-fetch) |
| 28349 | (uri (pypi-uri "daemonize" version)) |
| 28350 | (sha256 |
| 28351 | (base32 "1hwbl3gf9fdds9sc14zgjyjisjvxidrvqc11xlbb0b6jz17nw0nx")))) |
| 28352 | (build-system python-build-system) |
| 28353 | (home-page "https://github.com/thesharp/daemonize") |
| 28354 | (synopsis "Library for writing system daemons in Python") |
| 28355 | (description "Daemonize is a library for writing system daemons in Python.") |
| 28356 | (license license:expat))) |
| 28357 | |
| 28358 | (define-public python-pymacaroons |
| 28359 | (package |
| 28360 | (name "python-pymacaroons") |
| 28361 | (version "0.13.0") |
| 28362 | (source |
| 28363 | (origin |
| 28364 | (method url-fetch) |
| 28365 | (uri (pypi-uri "pymacaroons" version)) |
| 28366 | (sha256 |
| 28367 | (base32 "1f0357a6g1h96sk6wy030xmc1p4rd80a999qvxd28v7nlm1blsqy")))) |
| 28368 | (build-system python-build-system) |
| 28369 | (propagated-inputs |
| 28370 | (list python-six python-pynacl)) |
| 28371 | (home-page "https://github.com/ecordell/pymacaroons") |
| 28372 | (synopsis "Python Macaroon Library") |
| 28373 | (description |
| 28374 | "Macaroons, like cookies, are a form of bearer credential. Unlike opaque |
| 28375 | tokens, macaroons embed caveats that define specific authorization |
| 28376 | requirements for the target service, the service that issued the root macaroon |
| 28377 | and which is capable of verifying the integrity of macaroons it receives. |
| 28378 | |
| 28379 | Macaroons allow for delegation and attenuation of authorization. They are |
| 28380 | simple and fast to verify, and decouple authorization policy from the |
| 28381 | enforcement of that policy.") |
| 28382 | (license license:expat))) |
| 28383 | |
| 28384 | (define-public python-ldap3 |
| 28385 | (package |
| 28386 | (name "python-ldap3") |
| 28387 | (version "2.7") |
| 28388 | (home-page "https://github.com/cannatag/ldap3") |
| 28389 | (source |
| 28390 | (origin |
| 28391 | (method git-fetch) |
| 28392 | (uri (git-reference (url home-page) |
| 28393 | (commit (string-append "v" version)))) |
| 28394 | (file-name (git-file-name name version)) |
| 28395 | (sha256 |
| 28396 | (base32 "0xw9fkqld21xsvdpaqir8ccc2l805xnn9gxahsnl70xzp3mwl0xv")))) |
| 28397 | (build-system python-build-system) |
| 28398 | (arguments |
| 28399 | '(#:tests? #f ;TODO: Tests need a real LDAP server to run |
| 28400 | #:phases (modify-phases %standard-phases |
| 28401 | (replace 'check |
| 28402 | (lambda* (#:key tests? #:allow-other-keys) |
| 28403 | (when tests? |
| 28404 | (invoke "nosetests" "-s" "test")) |
| 28405 | #t))))) |
| 28406 | (native-inputs |
| 28407 | (list python-nose)) |
| 28408 | (propagated-inputs |
| 28409 | (list python-gssapi python-pyasn1)) |
| 28410 | (synopsis "Python LDAP client") |
| 28411 | (description |
| 28412 | "LDAP3 is a strictly RFC 4510 conforming LDAP V3 pure Python client |
| 28413 | library.") |
| 28414 | (license license:lgpl3+))) |
| 28415 | |
| 28416 | (define-public python-boltons |
| 28417 | (package |
| 28418 | (name "python-boltons") |
| 28419 | (version "23.0.0") |
| 28420 | (source |
| 28421 | (origin |
| 28422 | (method url-fetch) |
| 28423 | (uri (pypi-uri "boltons" version)) |
| 28424 | (sha256 |
| 28425 | (base32 |
| 28426 | "1c5lpqi74i55li0wvpyxnircj40na797x7447k53an2j54cafl4c")))) |
| 28427 | (build-system python-build-system) |
| 28428 | (home-page "https://github.com/mahmoud/boltons") |
| 28429 | (synopsis "Extensions to the Python standard library") |
| 28430 | (description |
| 28431 | "Boltons is a set of over 230 pure-Python utilities in the same spirit |
| 28432 | as — and yet conspicuously missing from — the standard library, including: |
| 28433 | |
| 28434 | @itemize |
| 28435 | @item Atomic file saving, bolted on with fileutils |
| 28436 | @item A highly-optimized OrderedMultiDict, in dictutils |
| 28437 | @item Two types of PriorityQueue, in queueutils |
| 28438 | @item Chunked and windowed iteration, in iterutils |
| 28439 | @item Recursive data structure iteration and merging, with iterutils.remap |
| 28440 | @item Exponential backoff functionality, including jitter, through |
| 28441 | iterutils.backoff |
| 28442 | @item A full-featured TracebackInfo type, for representing stack traces, in |
| 28443 | tbutils |
| 28444 | @end itemize") |
| 28445 | (license license:bsd-3))) |
| 28446 | |
| 28447 | (define-public python-eliot |
| 28448 | (package |
| 28449 | (name "python-eliot") |
| 28450 | (version "1.13.0") |
| 28451 | (source |
| 28452 | (origin |
| 28453 | (method url-fetch) |
| 28454 | (uri (pypi-uri "eliot" version)) |
| 28455 | (sha256 |
| 28456 | (base32 "1xzzhsjrrw430dc84vamf683bwp9i0nr86xf2iav6yla615ijq2p")))) |
| 28457 | (build-system python-build-system) |
| 28458 | (arguments |
| 28459 | `(#:phases |
| 28460 | (modify-phases %standard-phases |
| 28461 | (add-after 'unpack 'remove-journald-support |
| 28462 | (lambda _ |
| 28463 | (for-each delete-file |
| 28464 | '("eliot/tests/test_journald.py" |
| 28465 | "eliot/journald.py")) |
| 28466 | #t)) |
| 28467 | (add-after 'remove-journald-support 'remove-eliot-prettyprint-tests |
| 28468 | ;; remove command-line tool's tests. TODO eliot-prettyprint should |
| 28469 | ;; be installed and these tests should pass. |
| 28470 | (lambda _ |
| 28471 | (delete-file "eliot/tests/test_prettyprint.py") |
| 28472 | #t)) |
| 28473 | (add-after 'remove-eliot-prettyprint-tests 'remove-failing-tests |
| 28474 | (lambda _ |
| 28475 | ;; These tests started to fail after updating python-pandas to |
| 28476 | ;; 1.3.3 and python-dask to 2021.9.1. |
| 28477 | (substitute* "eliot/tests/test_validation.py" |
| 28478 | (("test_omitLoggerFromActionType") |
| 28479 | "_test_omitLoggerFromActionType") |
| 28480 | (("test_logCallsDefaultLoggerWrite") |
| 28481 | "_test_logCallsDefaultLoggerWrite")) |
| 28482 | #t))))) |
| 28483 | (propagated-inputs |
| 28484 | (list python-boltons python-pyrsistent python-six |
| 28485 | python-zope-interface)) |
| 28486 | (native-inputs |
| 28487 | (list python-black |
| 28488 | python-coverage |
| 28489 | python-dask |
| 28490 | python-flake8 |
| 28491 | python-hypothesis |
| 28492 | python-pytest |
| 28493 | python-setuptools |
| 28494 | python-sphinx |
| 28495 | python-sphinx-rtd-theme |
| 28496 | python-testtools |
| 28497 | python-twine |
| 28498 | python-twisted)) |
| 28499 | (home-page "https://github.com/itamarst/eliot/") |
| 28500 | (synopsis "Eliot: the logging system that tells you why it happened") |
| 28501 | (description |
| 28502 | "@dfn{eliot} is a Python logging system that outputs causal chains of |
| 28503 | actions: actions can spawn other actions, and eventually they either succeed |
| 28504 | or fail. The resulting logs tell you the story of what your software did: what |
| 28505 | happened, and what caused it.") |
| 28506 | (license license:asl2.0))) |
| 28507 | |
| 28508 | (define-public python-pem |
| 28509 | (package |
| 28510 | (name "python-pem") |
| 28511 | (version "20.1.0") |
| 28512 | (source |
| 28513 | (origin |
| 28514 | (method url-fetch) |
| 28515 | (uri (pypi-uri "pem" version)) |
| 28516 | (sha256 |
| 28517 | (base32 |
| 28518 | "1xh88ss279fprxnzd10dczmqwjhppbyvljm33zrg2mgybwd66qr7")))) |
| 28519 | (build-system python-build-system) |
| 28520 | (native-inputs |
| 28521 | (list python-certifi |
| 28522 | python-coverage |
| 28523 | python-pretend |
| 28524 | python-pyopenssl |
| 28525 | python-pytest |
| 28526 | python-sphinx |
| 28527 | python-twisted)) |
| 28528 | (home-page "https://pem.readthedocs.io/") |
| 28529 | (synopsis "Easy PEM file parsing in Python") |
| 28530 | (description |
| 28531 | "This package provides a Python module for parsing and splitting PEM files.") |
| 28532 | (license license:expat))) |
| 28533 | |
| 28534 | (define-public python-txsni |
| 28535 | ;; We need a few commits on top of 0.1.9 for compatibility with newer |
| 28536 | ;; Python and OpenSSL. |
| 28537 | (let ((commit "5014c141a7acef63e20fcf6c36fa07f0cd754ce1") |
| 28538 | (revision "0")) |
| 28539 | (package |
| 28540 | (name "python-txsni") |
| 28541 | (version (git-version "0.1.9" revision commit)) |
| 28542 | (home-page "https://github.com/glyph/txsni") |
| 28543 | (source |
| 28544 | (origin |
| 28545 | (method git-fetch) |
| 28546 | (uri (git-reference (url home-page) (commit commit))) |
| 28547 | (file-name (git-file-name name version)) |
| 28548 | (sha256 |
| 28549 | (base32 |
| 28550 | "0imfxx4yjj1lbq0n5ad45al3wvv4qv96sivnc1r51i66mxi658z8")))) |
| 28551 | (build-system python-build-system) |
| 28552 | (propagated-inputs |
| 28553 | (list python-pyopenssl python-service-identity python-twisted)) |
| 28554 | (synopsis "Run TLS servers with Twisted") |
| 28555 | (description |
| 28556 | "This package provides an easy-to-use SNI endpoint for use |
| 28557 | with the Twisted web framework.") |
| 28558 | (license license:expat)))) |
| 28559 | |
| 28560 | (define-public python-txacme |
| 28561 | (package |
| 28562 | (name "python-txacme") |
| 28563 | (version "0.9.2") |
| 28564 | (source |
| 28565 | (origin |
| 28566 | (method url-fetch) |
| 28567 | (uri (pypi-uri "txacme" version)) |
| 28568 | (sha256 |
| 28569 | (base32 "1cplx4llq7i508w6fgwjdv9di7rsz9k9irfmzdfbiz6q6a0ykf1d")))) |
| 28570 | (build-system python-build-system) |
| 28571 | (propagated-inputs |
| 28572 | (list python-acme |
| 28573 | python-attrs |
| 28574 | python-eliot |
| 28575 | python-josepy |
| 28576 | python-pem |
| 28577 | python-treq |
| 28578 | python-twisted |
| 28579 | python-txsni)) |
| 28580 | (native-inputs |
| 28581 | (list python-fixtures |
| 28582 | python-hypothesis |
| 28583 | python-mock |
| 28584 | python-service-identity |
| 28585 | python-testrepository |
| 28586 | python-testscenarios |
| 28587 | python-testtools)) |
| 28588 | (home-page "https://github.com/twisted/txacme") |
| 28589 | (synopsis "Twisted implexmentation of the ACME protocol") |
| 28590 | (description |
| 28591 | "ACME is Automatic Certificate Management Environment, a protocol that |
| 28592 | allows clients and certificate authorities to automate verification and |
| 28593 | certificate issuance. The ACME protocol is used by the free Let's Encrypt |
| 28594 | Certificate Authority. |
| 28595 | |
| 28596 | txacme is an implementation of the protocol for Twisted, the event-driven |
| 28597 | networking engine for Python.") |
| 28598 | (license license:expat))) |
| 28599 | |
| 28600 | (define-public python-pysaml2 |
| 28601 | (package |
| 28602 | (name "python-pysaml2") |
| 28603 | (version "6.5.1") |
| 28604 | (source |
| 28605 | (origin |
| 28606 | (method url-fetch) |
| 28607 | (uri (pypi-uri "pysaml2" version)) |
| 28608 | (sha256 |
| 28609 | (base32 |
| 28610 | "1xk2x0slz1f8cqv7vn77qx99xfd1mshhswiwrljk9m72w2m9iivd")))) |
| 28611 | (build-system python-build-system) |
| 28612 | (propagated-inputs |
| 28613 | (list python-cryptography |
| 28614 | python-dateutil |
| 28615 | python-defusedxml |
| 28616 | python-importlib-resources |
| 28617 | python-pyopenssl |
| 28618 | python-pytz |
| 28619 | python-requests |
| 28620 | python-six |
| 28621 | python-xmlschema)) |
| 28622 | (home-page "https://idpy.org") |
| 28623 | (synopsis "Python implementation of SAML Version 2 Standard") |
| 28624 | (description |
| 28625 | "PySAML2 is a pure python implementation of SAML Version 2 Standard. |
| 28626 | It contains all necessary pieces for building a SAML2 service provider or |
| 28627 | an identity provider. The distribution contains examples of both. |
| 28628 | |
| 28629 | This package was originally written to work in a WSGI environment, but |
| 28630 | there are extensions that allow you to use it with other frameworks.") |
| 28631 | (license license:asl2.0))) |
| 28632 | |
| 28633 | (define-public python-click-plugins |
| 28634 | (package |
| 28635 | (name "python-click-plugins") |
| 28636 | (version "1.1.1") |
| 28637 | (source |
| 28638 | (origin |
| 28639 | (method url-fetch) |
| 28640 | (uri (pypi-uri "click-plugins" version)) |
| 28641 | (sha256 |
| 28642 | (base32 "0jr6bxj67vg988vkm6nz8jj98v9lg46bn49lkhak3n598jbrkas6")))) |
| 28643 | (build-system python-build-system) |
| 28644 | (native-inputs |
| 28645 | (list python-pytest)) |
| 28646 | (propagated-inputs |
| 28647 | (list python-click)) |
| 28648 | (synopsis "Extension for Click to register external CLI commands") |
| 28649 | (description "This package provides n extension module for Click to |
| 28650 | register external CLI commands via setuptools entry-points.") |
| 28651 | (home-page "https://github.com/click-contrib/click-plugins") |
| 28652 | (license license:bsd-3))) |
| 28653 | |
| 28654 | (define-public python-diceware |
| 28655 | (package |
| 28656 | (name "python-diceware") |
| 28657 | (version "0.9.6") |
| 28658 | (source |
| 28659 | (origin |
| 28660 | (method url-fetch) |
| 28661 | (uri (pypi-uri "diceware" version)) |
| 28662 | (sha256 |
| 28663 | (base32 |
| 28664 | "0klb0ysybzlh2wihvir82hgq62v0jjmlcqklwajyms7c0p529yby")))) |
| 28665 | (build-system python-build-system) |
| 28666 | (native-inputs |
| 28667 | (list python-coverage python-pytest python-pytest-runner)) |
| 28668 | (home-page "https://github.com/ulif/diceware/") |
| 28669 | (synopsis "Generates memorable passphrases") |
| 28670 | (description "This package generates passphrases by concatenating words |
| 28671 | randomly picked from wordlists. It supports several sources of |
| 28672 | randomness (including real life dice) and different wordlists (including |
| 28673 | cryptographically signed ones).") |
| 28674 | (license license:gpl3+))) |
| 28675 | |
| 28676 | (define-public python-dictdiffer |
| 28677 | (package |
| 28678 | (name "python-dictdiffer") |
| 28679 | (version "0.9.0") |
| 28680 | (source (origin |
| 28681 | (method url-fetch) |
| 28682 | (uri (pypi-uri "dictdiffer" version)) |
| 28683 | (sha256 |
| 28684 | (base32 |
| 28685 | "0y3mk74qm2q9hsm37892i1wzn8bbdrvbs4nmnvqwq4z6pxgwzfhp")))) |
| 28686 | (build-system python-build-system) |
| 28687 | (arguments |
| 28688 | ;; XXX: The PyPI tarball lacks tests and the git repository |
| 28689 | ;; fails to determine version. |
| 28690 | '(#:tests? #f)) |
| 28691 | (native-inputs |
| 28692 | (list python-pytest-runner python-setuptools-scm)) |
| 28693 | (home-page "https://github.com/inveniosoftware/dictdiffer") |
| 28694 | (synopsis "Diff and patch Python dictionary objects") |
| 28695 | (description |
| 28696 | "Dictdiffer is a Python module that helps you to diff and patch |
| 28697 | dictionaries.") |
| 28698 | (license license:expat))) |
| 28699 | |
| 28700 | (define-public python-dictpath |
| 28701 | (package |
| 28702 | (name "python-dictpath") |
| 28703 | (version "0.1.3") |
| 28704 | (source |
| 28705 | (origin |
| 28706 | (method url-fetch) |
| 28707 | (uri (pypi-uri "dictpath" version)) |
| 28708 | (sha256 |
| 28709 | (base32 "1n4hq4wbgaw59bbb16nhkgg5wk8sl4iw940vjrgx4xmifqxxw73m")))) |
| 28710 | (build-system python-build-system) |
| 28711 | (native-inputs (list python-pytest python-pytest-cov python-pytest-flake8)) |
| 28712 | (home-page "https://github.com/p1c2u/pathable") |
| 28713 | (synopsis "Object-oriented path library for Python") |
| 28714 | (description "This object-oriented dictionary path Python library enables |
| 28715 | traversing resources like paths or accessing resources on demand with separate |
| 28716 | accessor layer.") |
| 28717 | (license license:asl2.0))) |
| 28718 | |
| 28719 | (define-public pyzo |
| 28720 | (package |
| 28721 | (name "pyzo") |
| 28722 | (version "4.12.8") |
| 28723 | (source |
| 28724 | (origin |
| 28725 | (method git-fetch) |
| 28726 | (uri (git-reference |
| 28727 | (url "https://github.com/pyzo/pyzo") |
| 28728 | (commit (string-append "v" version)))) |
| 28729 | (file-name (git-file-name name version)) |
| 28730 | (sha256 |
| 28731 | (base32 |
| 28732 | "036snpv6j63bv9z9mbq317qb43zwsj1m8vljra3c0kiakahp7cc3")))) |
| 28733 | (build-system python-build-system) |
| 28734 | (arguments |
| 28735 | `(#:phases |
| 28736 | (modify-phases %standard-phases |
| 28737 | (add-before 'check 'fix-home-directory |
| 28738 | (lambda _ |
| 28739 | ;; Tests fail with "Permission denied: '/homeless-shelter'". |
| 28740 | (setenv "HOME" "/tmp")))) |
| 28741 | ;; Tests fail with "Uncaught Python exception: python: undefined |
| 28742 | ;; symbol: objc_getClass". |
| 28743 | #:tests? #f)) |
| 28744 | (propagated-inputs |
| 28745 | (list python-pyqt)) |
| 28746 | (home-page "https://pyzo.org") |
| 28747 | (synopsis |
| 28748 | "Python IDE for scientific computing") |
| 28749 | (description |
| 28750 | "Pyzo is a Python IDE focused on interactivity and introspection, |
| 28751 | which makes it very suitable for scientific computing. Its practical |
| 28752 | design is aimed at simplicity and efficiency. |
| 28753 | |
| 28754 | It consists of two main components, the editor and the shell, and uses |
| 28755 | a set of pluggable tools to help the programmer in various ways. Some |
| 28756 | example tools are source structure, project manager, interactive help, |
| 28757 | workspace...") |
| 28758 | (license license:bsd-2))) |
| 28759 | |
| 28760 | (define-public python-osc |
| 28761 | (package |
| 28762 | (name "python-osc") |
| 28763 | (version "1.7.4") |
| 28764 | (source |
| 28765 | (origin |
| 28766 | (method url-fetch) |
| 28767 | (uri (pypi-uri "python-osc" version)) |
| 28768 | (sha256 |
| 28769 | (base32 |
| 28770 | "0cnh0z5lnng7fh48nmfaqqn8j25k13gkd4rhxd3m6sjqiix9s3vn")))) |
| 28771 | (build-system python-build-system) |
| 28772 | (home-page "https://github.com/attwad/python-osc") |
| 28773 | (synopsis "Open Sound Control server and client implementations") |
| 28774 | (description |
| 28775 | "@code{python-osc} is a pure Python library with no external |
| 28776 | dependencies. It implements the @uref{http://opensoundcontrol.org/spec-1_0, |
| 28777 | Open Sound Control 1.0} specification.") |
| 28778 | (license license:unlicense))) |
| 28779 | |
| 28780 | (define-public python-voluptuous |
| 28781 | (package |
| 28782 | (name "python-voluptuous") |
| 28783 | (version "0.11.7") |
| 28784 | (source |
| 28785 | (origin |
| 28786 | (method url-fetch) |
| 28787 | (uri (pypi-uri "voluptuous" version)) |
| 28788 | (sha256 |
| 28789 | (base32 |
| 28790 | "0mplkcpb5d8wjf8vk195fys4y6a3wbibiyf708imw33lphfk9g1a")))) |
| 28791 | (build-system python-build-system) |
| 28792 | (native-inputs |
| 28793 | (list python-nose)) |
| 28794 | (home-page "https://github.com/alecthomas/voluptuous") |
| 28795 | (synopsis "Python data validation library") |
| 28796 | (description |
| 28797 | "Voluptuous is a Python data validation library. It is primarily |
| 28798 | intended for validating data coming into Python as JSON, YAML, etc.") |
| 28799 | (license license:bsd-3))) |
| 28800 | |
| 28801 | (define-public python-cmd2 |
| 28802 | (package |
| 28803 | (name "python-cmd2") |
| 28804 | (version "2.3.3") |
| 28805 | (source |
| 28806 | (origin |
| 28807 | (method url-fetch) |
| 28808 | (uri (pypi-uri "cmd2" version)) |
| 28809 | (sha256 |
| 28810 | (base32 |
| 28811 | "0h1naik558qh48gx2iyy0a0khvw5fz0in69y84mbrhsm9nq7w3bm")))) |
| 28812 | (build-system python-build-system) |
| 28813 | (arguments |
| 28814 | '(#:phases |
| 28815 | (modify-phases %standard-phases |
| 28816 | (replace 'check |
| 28817 | (lambda* (#:key tests? #:allow-other-keys) |
| 28818 | (if tests? |
| 28819 | (invoke "pytest" "-vv" "-k" |
| 28820 | ;; These tests fail because no EDITOR is in PATH. |
| 28821 | "not test_find_editor_not_specified \ |
| 28822 | and not test_transcript") |
| 28823 | (format #t "test suite not run~%"))))))) |
| 28824 | (propagated-inputs |
| 28825 | (list python-attrs python-colorama python-pyperclip python-wcwidth)) |
| 28826 | (native-inputs |
| 28827 | (list python-invoke |
| 28828 | python-mock |
| 28829 | python-pytest |
| 28830 | python-pytest-cov |
| 28831 | python-pytest-mock |
| 28832 | python-setuptools-scm)) |
| 28833 | (home-page "https://github.com/python-cmd2/cmd2") |
| 28834 | (synopsis "Tool for building interactive command line applications") |
| 28835 | (description |
| 28836 | "Cmd2 is a tool for building interactive command line applications in |
| 28837 | Python. Its goal is to make it quick and easy for developers to build |
| 28838 | feature-rich and user-friendly interactive command line applications. It |
| 28839 | provides a simple API which is an extension of Python's built-in @code{cmd} |
| 28840 | module. @code{cmd2} provides a wealth of features on top of @code{cmd} to |
| 28841 | make your life easier and eliminates much of the boilerplate code which would |
| 28842 | be necessary when using @code{cmd}.") |
| 28843 | (license license:expat))) |
| 28844 | |
| 28845 | (define-public python-pytidylib |
| 28846 | (package |
| 28847 | (name "python-pytidylib") |
| 28848 | (version "0.3.2") |
| 28849 | (source (origin |
| 28850 | (method url-fetch) |
| 28851 | (uri (pypi-uri "pytidylib" version)) |
| 28852 | (sha256 |
| 28853 | (base32 |
| 28854 | "1wqa9dv5d7swka14rnky862hc7dgk2g3dhlrz57hdn3hb7bwic92")))) |
| 28855 | (build-system python-build-system) |
| 28856 | (arguments |
| 28857 | '(#:phases |
| 28858 | (modify-phases %standard-phases |
| 28859 | (add-after 'unpack 'fix-queue-import |
| 28860 | (lambda _ |
| 28861 | ;; Adjust Queue import for Python 3. Remove for versions >=0.4.0. |
| 28862 | (substitute* "tests/threadsafety.py" |
| 28863 | (("from Queue import Queue") |
| 28864 | "from queue import Queue")))) |
| 28865 | (add-before 'build 'qualify-libtidy |
| 28866 | (lambda* (#:key inputs #:allow-other-keys) |
| 28867 | (let ((libtidy (search-input-file inputs "/lib/libtidy.so"))) |
| 28868 | (substitute* "tidylib/tidy.py" |
| 28869 | (("ctypes\\.util\\.find_library\\('tidy'\\)") |
| 28870 | (format #f "'~a'" libtidy))) |
| 28871 | #t)))))) |
| 28872 | (inputs (list tidy-html)) |
| 28873 | (home-page "https://github.com/countergram/pytidylib") |
| 28874 | (synopsis "Python wrapper for HTML Tidy library") |
| 28875 | (description |
| 28876 | "PyTidyLib is a Python package that wraps the HTML Tidy library. This |
| 28877 | allows you, from Python code, to “fix” invalid (X)HTML markup.") |
| 28878 | (license license:expat))) |
| 28879 | |
| 28880 | (define-public python-mujson |
| 28881 | (package |
| 28882 | (name "python-mujson") |
| 28883 | (version "1.4") |
| 28884 | (source |
| 28885 | (origin |
| 28886 | (method url-fetch) |
| 28887 | (uri (pypi-uri "mujson" version)) |
| 28888 | (sha256 |
| 28889 | (base32 |
| 28890 | "0wbj6r8yzsdx2b0kbldlkznr1a9nn33za2q9x3g0hbg420dwzn97")))) |
| 28891 | (build-system python-build-system) |
| 28892 | (home-page "https://github.com/mattgiles/mujson") |
| 28893 | (synopsis "Use the fastest JSON functions available at import time") |
| 28894 | (description "This package selects the fastest JSON functions available |
| 28895 | at import time.") |
| 28896 | (license license:expat))) |
| 28897 | |
| 28898 | (define-public python-bashlex |
| 28899 | (package |
| 28900 | (name "python-bashlex") |
| 28901 | (version "0.14") |
| 28902 | (source |
| 28903 | (origin |
| 28904 | (method url-fetch) |
| 28905 | (uri (pypi-uri "bashlex" version)) |
| 28906 | (sha256 |
| 28907 | (base32 |
| 28908 | "1z9g96fgsfpdwawp4sb5x6hbdhmda7kgmcrqlf9xx4bs1f8f14js")))) |
| 28909 | (build-system python-build-system) |
| 28910 | (arguments |
| 28911 | `(#:phases |
| 28912 | (modify-phases %standard-phases |
| 28913 | (add-before 'build 'pregenerate-yacc-tables |
| 28914 | (lambda _ |
| 28915 | ;; parser.py caches tables, which attempts to write to site lib |
| 28916 | ;; see https://github.com/idank/bashlex/issues/51 |
| 28917 | (invoke "python" "-c" "import bashlex")))))) |
| 28918 | (home-page |
| 28919 | "https://github.com/idank/bashlex") |
| 28920 | (synopsis "Python parser for bash") |
| 28921 | (description "@code{bashlex} is a Python port of the parser used |
| 28922 | internally by GNU bash. |
| 28923 | |
| 28924 | For the most part it's transliterated from C, the major differences are: |
| 28925 | |
| 28926 | @itemize |
| 28927 | @item it does not execute anything |
| 28928 | @item it is reentrant |
| 28929 | @item it generates a complete AST |
| 28930 | @end itemize |
| 28931 | ") |
| 28932 | (license license:gpl3+))) |
| 28933 | |
| 28934 | (define-public python-jinxed |
| 28935 | (package |
| 28936 | (name "python-jinxed") |
| 28937 | (version "1.0.0") |
| 28938 | (source |
| 28939 | (origin |
| 28940 | (method url-fetch) |
| 28941 | (uri (pypi-uri "jinxed" version)) |
| 28942 | (sha256 |
| 28943 | (base32 |
| 28944 | "1n7vl03rhjd0xhjgbjlh8x9f8yfbhamcwkgvs4jg7g5qj8f0wk89")))) |
| 28945 | (build-system python-build-system) |
| 28946 | (arguments |
| 28947 | '(#:phases |
| 28948 | (modify-phases %standard-phases |
| 28949 | (add-before 'check 'set-environment-variables |
| 28950 | (lambda* (#:key inputs #:allow-other-keys) |
| 28951 | (let ((ncurses (assoc-ref inputs "ncurses"))) |
| 28952 | (setenv "TERM" "LINUX") |
| 28953 | (setenv "TERMINFO" (string-append ncurses "/share/terminfo")) |
| 28954 | #t)))) |
| 28955 | #:tests? #f)) ; _curses.error: setupterm: could not find terminal |
| 28956 | (native-inputs |
| 28957 | (list ncurses)) |
| 28958 | (home-page "https://github.com/Rockhopper-Technologies/jinxed") |
| 28959 | (synopsis "Jinxed Terminal Library") |
| 28960 | (description |
| 28961 | "Jinxed is an implementation of a subset of the Python curses library.") |
| 28962 | (license license:mpl2.0))) |
| 28963 | |
| 28964 | (define-public python-svgutils |
| 28965 | (package |
| 28966 | (name "python-svgutils") |
| 28967 | (version "0.3.4") |
| 28968 | (source |
| 28969 | (origin |
| 28970 | (method url-fetch) |
| 28971 | (uri (pypi-uri "svgutils" version)) |
| 28972 | (sha256 |
| 28973 | (base32 |
| 28974 | "0lz0w2ajdvwd269a7ppnzawmx8px0116j0nx8xvhlihxrd28zx4y")))) |
| 28975 | (build-system python-build-system) |
| 28976 | (propagated-inputs |
| 28977 | (list python-lxml)) |
| 28978 | (home-page "https://svgutils.readthedocs.io") |
| 28979 | (synopsis "Python SVG editor") |
| 28980 | (description "This is an utility package that helps with editing and |
| 28981 | concatenating SVG files. It is especially directed at scientists preparing |
| 28982 | final figures for submission to journals. So far it supports arbitrary |
| 28983 | placement and scaling of SVG figures and adding markers, such as labels.") |
| 28984 | (license license:expat))) |
| 28985 | |
| 28986 | (define-public python-blessed |
| 28987 | (package |
| 28988 | (name "python-blessed") |
| 28989 | (version "1.20.0") |
| 28990 | (source |
| 28991 | (origin |
| 28992 | (method url-fetch) |
| 28993 | (uri (pypi-uri "blessed" version)) |
| 28994 | (sha256 |
| 28995 | (base32 |
| 28996 | "103ng3ap33xs6i7606q3k6rwvjva9l7qi8j7vw08y13ffkw6gp9c")) |
| 28997 | (snippet |
| 28998 | ;; Don't get hung up on Windows test failures. |
| 28999 | '(delete-file "blessed/win_terminal.py")))) |
| 29000 | (build-system pyproject-build-system) |
| 29001 | (arguments |
| 29002 | (list |
| 29003 | ;; Avoid python-pytest-coverage |
| 29004 | #:test-flags '(list "-c /dev/null"))) |
| 29005 | (propagated-inputs (list python-six python-wcwidth)) |
| 29006 | (native-inputs (list python-pytest)) |
| 29007 | (home-page "https://github.com/jquast/blessed") |
| 29008 | (synopsis "Wrapper around terminal capabilities") |
| 29009 | (description |
| 29010 | "Blessed is a thin, practical wrapper around terminal styling, screen |
| 29011 | positioning, and keyboard input.") |
| 29012 | (license license:expat))) |
| 29013 | |
| 29014 | (define-public python-readme-renderer |
| 29015 | (package |
| 29016 | (name "python-readme-renderer") |
| 29017 | (version "34.0") |
| 29018 | (source |
| 29019 | (origin |
| 29020 | (method url-fetch) |
| 29021 | (uri (pypi-uri "readme_renderer" version)) |
| 29022 | (sha256 |
| 29023 | (base32 |
| 29024 | "1c75h9znffc2lh4j56yg23l5ifj5l8fbdq3kfigi8vbh45zx3d6z")))) |
| 29025 | (build-system python-build-system) |
| 29026 | (arguments |
| 29027 | '(#:phases (modify-phases %standard-phases |
| 29028 | (add-after 'unpack 'loosen-cmarkgfm-dependency |
| 29029 | (lambda _ |
| 29030 | ;; Permit newer versions of cmarkgfm. |
| 29031 | (substitute* "setup.py" |
| 29032 | (("cmarkgfm>=0\\.5\\.0,<0\\.7\\.0") |
| 29033 | "cmarkgfm>=0.5.0")))) |
| 29034 | (replace 'check |
| 29035 | (lambda* (#:key tests? #:allow-other-keys) |
| 29036 | (when tests? |
| 29037 | ;; The GFM tests fail due to slight differences in the |
| 29038 | ;; generated vs expected HTML due to using a more |
| 29039 | ;; recent bleach version (see: |
| 29040 | ;; https://github.com/pypa/readme_renderer/issues/234). |
| 29041 | (invoke "pytest" "-vv" "-k" "not GFM"))))))) |
| 29042 | (propagated-inputs |
| 29043 | (list python-bleach python-docutils python-pygments |
| 29044 | |
| 29045 | ;; Optional dependencies. |
| 29046 | python-cmarkgfm)) ;required by postorius |
| 29047 | (native-inputs |
| 29048 | (list python-mock python-pytest)) |
| 29049 | (home-page "https://github.com/pypa/readme_renderer") |
| 29050 | (synopsis "Render README files in Warehouse") |
| 29051 | (description |
| 29052 | "Readme Renderer is a library that will safely render arbitrary README |
| 29053 | files into HTML. It is designed to be used in Warehouse to render the |
| 29054 | @code{long_description} for packages. It can handle Markdown, reStructuredText, |
| 29055 | and plain text.") |
| 29056 | (license license:asl2.0))) |
| 29057 | |
| 29058 | (define-public python-lazr-delegates |
| 29059 | (package |
| 29060 | (name "python-lazr-delegates") |
| 29061 | (version "2.0.4") |
| 29062 | (source |
| 29063 | (origin |
| 29064 | (method url-fetch) |
| 29065 | (uri (pypi-uri "lazr.delegates" version)) |
| 29066 | (sha256 |
| 29067 | (base32 |
| 29068 | "1rdnl85j9ayp8n85l0ciip621j9dcziz5qnmv2m7krgwgcn31vfx")))) |
| 29069 | (build-system python-build-system) |
| 29070 | (arguments |
| 29071 | '(#:phases |
| 29072 | (modify-phases %standard-phases |
| 29073 | (replace 'check |
| 29074 | (lambda* (#:key tests? #:allow-other-keys) |
| 29075 | (when tests? (invoke "nosetests"))))))) |
| 29076 | (native-inputs |
| 29077 | (list python-nose)) |
| 29078 | (propagated-inputs |
| 29079 | (list python-zope-interface)) |
| 29080 | (home-page "https://launchpad.net/lazr.delegates") |
| 29081 | (synopsis "Easily write objects that delegate behavior") |
| 29082 | (description |
| 29083 | "The @code{lazr.delegates} package makes it easy to write objects that |
| 29084 | delegate behavior to another object. The new object adds some property or |
| 29085 | behavior on to the other object, while still providing the underlying interface, |
| 29086 | and delegating behavior.") |
| 29087 | (license license:lgpl3))) |
| 29088 | |
| 29089 | (define-public python-lazr-config |
| 29090 | (package |
| 29091 | (name "python-lazr-config") |
| 29092 | (version "2.2.3") |
| 29093 | (source |
| 29094 | (origin |
| 29095 | (method url-fetch) |
| 29096 | (uri (pypi-uri "lazr.config" version)) |
| 29097 | (sha256 |
| 29098 | (base32 |
| 29099 | "1qdbrzl61q7cjhbnxvw9y3frcr935y7diwy15xrwcv9ynvw76jmp")))) |
| 29100 | (build-system python-build-system) |
| 29101 | (arguments |
| 29102 | '(#:phases |
| 29103 | (modify-phases %standard-phases |
| 29104 | (replace 'check |
| 29105 | (lambda _ |
| 29106 | (invoke "python" "-s" "-m" "nose" "-P" "lazr")))))) |
| 29107 | (native-inputs |
| 29108 | (list python-nose)) |
| 29109 | (propagated-inputs |
| 29110 | (list python-lazr-delegates python-zope-interface)) |
| 29111 | (home-page "https://launchpad.net/lazr.config") |
| 29112 | (synopsis "Create configuration schemas and process and validate configurations") |
| 29113 | (description |
| 29114 | "The LAZR config system is typically used to manage process configuration. |
| 29115 | Process configuration is for saying how things change when we run systems on |
| 29116 | different machines, or under different circumstances. This system uses ini-like |
| 29117 | file format of section, keys, and values. The config file supports inheritance |
| 29118 | to minimize duplication of information across files. The format supports schema |
| 29119 | validation.") |
| 29120 | (license license:lgpl3))) |
| 29121 | |
| 29122 | (define-public python-flufl-bounce |
| 29123 | (package |
| 29124 | (name "python-flufl-bounce") |
| 29125 | (version "4.0") |
| 29126 | (source |
| 29127 | (origin |
| 29128 | (method url-fetch) |
| 29129 | (uri (pypi-uri "flufl.bounce" version)) |
| 29130 | (sha256 |
| 29131 | (base32 |
| 29132 | "0c9qc2l47lyqnpwskp6vvi7m3jqh6hx42v6d35dgxh3fjzmlll15")))) |
| 29133 | (build-system python-build-system) |
| 29134 | (arguments |
| 29135 | (list #:phases |
| 29136 | #~(modify-phases %standard-phases |
| 29137 | (replace 'check |
| 29138 | (lambda* (#:key tests? inputs outputs #:allow-other-keys) |
| 29139 | (when tests? |
| 29140 | (with-directory-excursion |
| 29141 | (string-append (site-packages inputs outputs) "/flufl") |
| 29142 | (invoke "python" "-m" "nose2" "-v")))))))) |
| 29143 | (propagated-inputs |
| 29144 | (list python-atpublic python-zope-interface)) |
| 29145 | (native-inputs |
| 29146 | (list python-flufl-testing python-nose2)) |
| 29147 | (home-page "https://fluflbounce.readthedocs.io/en/latest/") |
| 29148 | (synopsis "Email bounce detectors") |
| 29149 | (description "The @code{flufl.bounce} library provides a set of heuristics |
| 29150 | and an API for detecting the original bouncing email addresses from a bounce |
| 29151 | message. Many formats found in the wild are supported, as are VERP and |
| 29152 | RFC 3464.") |
| 29153 | (license (list license:asl2.0 |
| 29154 | license:lgpl3)))) ; only for setup_headers.py |
| 29155 | |
| 29156 | (define-public python-flufl-i18n |
| 29157 | (package |
| 29158 | (name "python-flufl-i18n") |
| 29159 | (version "3.0") |
| 29160 | (source |
| 29161 | (origin |
| 29162 | (method url-fetch) |
| 29163 | (uri (pypi-uri "flufl.i18n" version)) |
| 29164 | (sha256 |
| 29165 | (base32 |
| 29166 | "1flwpn1xhgc957zj3zxw92dhdjh0lsy0hdvzq32dzqpsajfsvq1r")))) |
| 29167 | (build-system python-build-system) |
| 29168 | (propagated-inputs |
| 29169 | (list python-atpublic)) |
| 29170 | (home-page "https://flufli18n.readthedocs.io") |
| 29171 | (synopsis "API for Python internationalization") |
| 29172 | (description |
| 29173 | "This package provides a high-level, convenient API for managing |
| 29174 | internationalization/translation contexts in Python applications. There is a |
| 29175 | simple API for single-context applications, such as command line scripts which |
| 29176 | only need to translate into one language during the entire course of their |
| 29177 | execution. There is a more flexible, but still convenient API for multi-context |
| 29178 | applications, such as servers, which may need to switch language contexts for |
| 29179 | different tasks.") |
| 29180 | (license license:asl2.0))) |
| 29181 | |
| 29182 | (define-public python-flufl-lock |
| 29183 | (package |
| 29184 | (name "python-flufl-lock") |
| 29185 | (version "4.0") |
| 29186 | (source |
| 29187 | (origin |
| 29188 | (method url-fetch) |
| 29189 | (uri (pypi-uri "flufl.lock" version)) |
| 29190 | (sha256 |
| 29191 | (base32 |
| 29192 | "055941zyma3wfx25jhm8wcsghpv3jc3iwi1gdrdjhzcnfhn62lxq")))) |
| 29193 | (build-system python-build-system) |
| 29194 | (propagated-inputs |
| 29195 | (list python-atpublic python-psutil)) |
| 29196 | (home-page "https://flufllock.readthedocs.io") |
| 29197 | (synopsis "NFS-safe file locking with timeouts for POSIX systems") |
| 29198 | (description |
| 29199 | "The @dfn{flufl.lock} package provides NFS-safe file locking with |
| 29200 | timeouts for POSIX systems. It is similar to the @code{O_EXCL} option of the |
| 29201 | @code{open} system call but uses a lockfile. Lock objects support lock-breaking |
| 29202 | and have a maximum lifetime built-in.") |
| 29203 | (license (list license:asl2.0 |
| 29204 | license:lgpl3)))) ; only for setup_helpers.py |
| 29205 | |
| 29206 | (define-public python-flufl-testing |
| 29207 | (package |
| 29208 | (name "python-flufl-testing") |
| 29209 | (version "0.8") |
| 29210 | (source |
| 29211 | (origin |
| 29212 | (method url-fetch) |
| 29213 | (uri (pypi-uri "flufl.testing" version)) |
| 29214 | (sha256 |
| 29215 | (base32 |
| 29216 | "1nkm95mhcfhl4x5jgs6y97ikszaxsfh07nyawsih6cxxm6l62641")))) |
| 29217 | (build-system python-build-system) |
| 29218 | (arguments '(#:tests? #f)) ;no tests |
| 29219 | (home-page "https://gitlab.com/warsaw/flufl.testing") |
| 29220 | (synopsis "Collection of test tool plugins") |
| 29221 | (description |
| 29222 | "This package contains a small collection of test tool plugins for |
| 29223 | @code{nose2} and @code{flake8}.") |
| 29224 | (license license:asl2.0))) |
| 29225 | |
| 29226 | (define-public python-devtools |
| 29227 | (package |
| 29228 | (name "python-devtools") |
| 29229 | (version "0.6") |
| 29230 | (source |
| 29231 | (origin |
| 29232 | (method git-fetch) |
| 29233 | (uri (git-reference |
| 29234 | (url "https://github.com/samuelcolvin/python-devtools") |
| 29235 | (commit (string-append "v" version)))) |
| 29236 | (file-name (git-file-name name version)) |
| 29237 | (sha256 |
| 29238 | (base32 "15zczdcm90wl54c68f1qjb05nkd5bjsc9xjl3lk4frs7k7wkmrvp")))) |
| 29239 | (build-system python-build-system) |
| 29240 | (native-inputs |
| 29241 | (list python-pytest python-pytest-mock)) |
| 29242 | (propagated-inputs |
| 29243 | (list python-pygments)) |
| 29244 | (arguments |
| 29245 | `(#:phases (modify-phases %standard-phases |
| 29246 | (replace 'check |
| 29247 | (lambda _ |
| 29248 | (invoke "pytest") |
| 29249 | #t))))) |
| 29250 | (home-page "https://github.com/samuelcolvin/python-devtools") |
| 29251 | (synopsis "Debug command and development tools") |
| 29252 | (description |
| 29253 | "This package provides a debug print command and other development tools. |
| 29254 | It adds a simple and readable way to print stuff during development.") |
| 29255 | (license license:expat))) |
| 29256 | |
| 29257 | (define-public python-dateparser |
| 29258 | (package |
| 29259 | (name "python-dateparser") |
| 29260 | (version "1.1.3") |
| 29261 | (source |
| 29262 | (origin |
| 29263 | (method url-fetch) |
| 29264 | (uri (pypi-uri "dateparser" version)) |
| 29265 | (sha256 |
| 29266 | (base32 |
| 29267 | "19fbgq1zrwx10kljmdbs3p0y2m2xsgww20pqzw4kv6161zipsymf")))) |
| 29268 | (build-system pyproject-build-system) |
| 29269 | (propagated-inputs |
| 29270 | (list python-dateutil python-pytz python-regex python-ruamel.yaml |
| 29271 | python-tzlocal)) |
| 29272 | (native-inputs |
| 29273 | (list python-flake8 python-pytest python-parameterized tzdata-for-tests)) |
| 29274 | (arguments |
| 29275 | `(#:phases |
| 29276 | (modify-phases %standard-phases |
| 29277 | (add-before 'check 'set-check-environment |
| 29278 | (lambda* (#:key inputs #:allow-other-keys) |
| 29279 | (setenv "TZ" "UTC") |
| 29280 | (setenv "TZDIR" |
| 29281 | (search-input-directory inputs |
| 29282 | "share/zoneinfo")))) |
| 29283 | (add-before 'check 'delete-failing-tests |
| 29284 | (lambda _ |
| 29285 | (with-directory-excursion "tests" |
| 29286 | (for-each delete-file |
| 29287 | '("test_dateparser_data_integrity.py" |
| 29288 | "test_hijri.py" |
| 29289 | "test_jalali.py" |
| 29290 | "test_language_detect.py")))))))) |
| 29291 | (home-page "https://github.com/scrapinghub/dateparser") |
| 29292 | (synopsis |
| 29293 | "Date parsing library designed to parse dates from HTML pages") |
| 29294 | (description |
| 29295 | "@code{python-dateparser} provides modules to easily parse localized |
| 29296 | dates in almost any string formats commonly found on web pages.") |
| 29297 | (license license:bsd-3))) |
| 29298 | |
| 29299 | (define-public python-dparse |
| 29300 | (package |
| 29301 | (name "python-dparse") |
| 29302 | (version "0.5.1") |
| 29303 | (source |
| 29304 | (origin |
| 29305 | (method url-fetch) |
| 29306 | (uri (pypi-uri "dparse" version)) |
| 29307 | (sha256 |
| 29308 | (base32 |
| 29309 | "0rzkg3nymsbwdjc0ms2bsajkda02jipwyp3xk97qj71f21lz3dd1")))) |
| 29310 | (build-system python-build-system) |
| 29311 | (native-inputs |
| 29312 | (list python-pytest)) |
| 29313 | (propagated-inputs |
| 29314 | (list python-packaging python-pyyaml python-toml)) |
| 29315 | (home-page "https://github.com/pyupio/dparse") |
| 29316 | (synopsis "Parser for Python dependency files") |
| 29317 | (description "This package provides a parser for Python dependency files.") |
| 29318 | (license license:expat))) |
| 29319 | |
| 29320 | (define-public python-dpath |
| 29321 | (package |
| 29322 | (name "python-dpath") |
| 29323 | (version "2.0.1") |
| 29324 | (source |
| 29325 | (origin |
| 29326 | (method url-fetch) |
| 29327 | (uri (pypi-uri "dpath" version)) |
| 29328 | (sha256 |
| 29329 | (base32 |
| 29330 | "1ymi9ssk7i0mx3mviplf4csfvzibdd6wyj4qzj6s487n9xgnp85y")))) |
| 29331 | (build-system python-build-system) |
| 29332 | (native-inputs |
| 29333 | (list python-hypothesis python-mock python-nose)) |
| 29334 | (arguments |
| 29335 | '(#:phases |
| 29336 | (modify-phases %standard-phases |
| 29337 | (replace 'check |
| 29338 | (lambda* (#:key inputs outputs #:allow-other-keys) |
| 29339 | (add-installed-pythonpath inputs outputs) |
| 29340 | ;; This invokation is taken from tox.ini. |
| 29341 | (invoke "nosetests" "-d" "-v" "tests/")))))) |
| 29342 | (home-page "https://github.com/akesterson/dpath-python") |
| 29343 | (synopsis "File-system-like pathing and searching for dictionaries") |
| 29344 | (description |
| 29345 | "@code{python-dpath} is a library for accessing and searching |
| 29346 | dictionaries via /slashed/paths ala xpath. |
| 29347 | |
| 29348 | Basically it lets you glob over a dictionary as if it were a file system. It |
| 29349 | allows you to specify globs (ala the bash eglob syntax, through some advanced |
| 29350 | fnmatch.fnmatch magic) to access dictionary elements, and provides some |
| 29351 | facility for filtering those results.") |
| 29352 | (license license:expat))) |
| 29353 | |
| 29354 | (define-public python-safety |
| 29355 | (package |
| 29356 | (name "python-safety") |
| 29357 | (version "1.9.0") |
| 29358 | (source |
| 29359 | (origin |
| 29360 | (method url-fetch) |
| 29361 | (uri (pypi-uri "safety" version)) |
| 29362 | (sha256 |
| 29363 | (base32 |
| 29364 | "1j801xsxfzavjbzhhc934awvnk1b7jc0qsw3jp3ys0241mlj1gr3")))) |
| 29365 | (build-system python-build-system) |
| 29366 | (arguments |
| 29367 | `(#:phases |
| 29368 | (modify-phases %standard-phases |
| 29369 | (add-after 'unpack 'disable-tests |
| 29370 | (lambda _ |
| 29371 | (substitute* "tests/test_safety.py" |
| 29372 | ;; requires network |
| 29373 | (("def test_check_live") "def _test_check_live")) |
| 29374 | #t))))) |
| 29375 | (propagated-inputs |
| 29376 | (list python-click python-dparse python-packaging python-requests)) |
| 29377 | (home-page "https://github.com/pyupio/safety") |
| 29378 | (synopsis "Check installed dependencies for known vulnerabilities") |
| 29379 | (description "Safety checks installed dependencies for known vulnerabilities. |
| 29380 | By default it uses the open Python vulnerability database Safety DB.") |
| 29381 | (license license:expat))) |
| 29382 | |
| 29383 | (define-public python-pypandoc |
| 29384 | (package |
| 29385 | (name "python-pypandoc") |
| 29386 | (version "1.7.5") |
| 29387 | (source |
| 29388 | (origin |
| 29389 | (method url-fetch) |
| 29390 | (uri (pypi-uri "pypandoc" version)) |
| 29391 | (sha256 |
| 29392 | (base32 |
| 29393 | "0l6a8ngzpx363q2jskxxkx6psfhqrvc4js80dmn16r3vw6m2cb40")))) |
| 29394 | (build-system python-build-system) |
| 29395 | (inputs |
| 29396 | (list pandoc python-pandocfilters)) |
| 29397 | (propagated-inputs |
| 29398 | `(("wheel" ,python-wheel))) |
| 29399 | (native-inputs |
| 29400 | `(("texlive" ,(texlive-updmap.cfg (list texlive-lm texlive-xcolor))))) |
| 29401 | (arguments |
| 29402 | `(#:phases |
| 29403 | (modify-phases %standard-phases |
| 29404 | (add-before 'check 'disable-tests |
| 29405 | (lambda _ |
| 29406 | ;; Disable test requiring network access |
| 29407 | (substitute* "tests.py" |
| 29408 | (("test_basic_conversion_from_http_url") |
| 29409 | "skip_test_basic_conversion_from_http_url")) |
| 29410 | #t))))) |
| 29411 | (home-page "https://github.com/bebraw/pypandoc") |
| 29412 | (synopsis "Python wrapper for pandoc") |
| 29413 | (description "pypandoc is a thin Python wrapper around pandoc |
| 29414 | and pandoc-citeproc.") |
| 29415 | (license license:expat))) |
| 29416 | |
| 29417 | (define-public python-rnc2rng |
| 29418 | (package |
| 29419 | (name "python-rnc2rng") |
| 29420 | (version "2.6.6") |
| 29421 | (source |
| 29422 | (origin |
| 29423 | (method url-fetch) |
| 29424 | (uri (pypi-uri "rnc2rng" version)) |
| 29425 | (sha256 |
| 29426 | (base32 |
| 29427 | "1wbqvz2bhq2f5kqi7q2q3m9y5vs9rj970zhnjh502pvvhmbx20as")))) |
| 29428 | (build-system python-build-system) |
| 29429 | (propagated-inputs |
| 29430 | (list python-rply)) |
| 29431 | (arguments |
| 29432 | `(#:phases (modify-phases %standard-phases |
| 29433 | (replace 'check |
| 29434 | (lambda _ |
| 29435 | (invoke "python" "test.py")))))) |
| 29436 | (home-page "https://github.com/djc/rnc2rng") |
| 29437 | (synopsis "Convert RELAX NG Compact to regular syntax") |
| 29438 | (description |
| 29439 | "This package provides the @command{rnc2rng} command-line tool as well as |
| 29440 | a Python library to convert RELAX NG schemata in Compact syntax (rnc) to |
| 29441 | equivalent schemata in the XML-based default RELAX NG syntax.") |
| 29442 | (license license:expat))) |
| 29443 | |
| 29444 | (define-public python-telethon |
| 29445 | (package |
| 29446 | (name "python-telethon") |
| 29447 | (version "1.17.5") |
| 29448 | (source |
| 29449 | (origin |
| 29450 | (method git-fetch) |
| 29451 | (uri (git-reference |
| 29452 | (url "https://github.com/LonamiWebs/Telethon") |
| 29453 | (commit (string-append "v" version)))) |
| 29454 | (file-name (git-file-name name version)) |
| 29455 | (sha256 |
| 29456 | (base32 "0l9fhdrq576vllgi9aam45xzw5xi6jhgdv5zz8i4ygssdp7cm8jl")))) |
| 29457 | (build-system python-build-system) |
| 29458 | (arguments |
| 29459 | '(#:phases |
| 29460 | (modify-phases %standard-phases |
| 29461 | (replace 'check |
| 29462 | (lambda* (#:key tests? #:allow-other-keys) |
| 29463 | (when tests? |
| 29464 | (invoke "py.test" "-v")) |
| 29465 | #t))))) |
| 29466 | (propagated-inputs |
| 29467 | (list python-rsa python-pyaes)) |
| 29468 | (native-inputs |
| 29469 | (list python-pytest python-pytest-asyncio python-pytest-trio)) |
| 29470 | (home-page "https://docs.telethon.dev") |
| 29471 | (synopsis "Full-featured Telegram client library for Python 3") |
| 29472 | (description "This library is designed to make it easy to write Python |
| 29473 | programs that can interact with Telegram.") |
| 29474 | (license license:expat))) |
| 29475 | |
| 29476 | (define-public python-citeproc-py |
| 29477 | (package |
| 29478 | (name "python-citeproc-py") |
| 29479 | (version "0.5.1") |
| 29480 | (source |
| 29481 | (origin |
| 29482 | (method url-fetch) |
| 29483 | (uri (pypi-uri "citeproc-py" version)) |
| 29484 | (sha256 |
| 29485 | (base32 |
| 29486 | "00aaff50jy4j0nakdzq9258z1gzrac9baarli2ymgspj88jg5968")))) |
| 29487 | (build-system python-build-system) |
| 29488 | (propagated-inputs |
| 29489 | (list python-lxml python-rnc2rng)) |
| 29490 | (home-page |
| 29491 | "https://github.com/brechtm/citeproc-py") |
| 29492 | (synopsis "Citations and bibliography formatter") |
| 29493 | (description |
| 29494 | "Citeproc-py is a CSL processor for Python. It aims to implement the |
| 29495 | CSL 1.0.1 specification. citeproc-py can output styled citations and |
| 29496 | bibliographies in a number of different output formats. Currently supported |
| 29497 | are plain text, reStructuredText and HTML.") |
| 29498 | (license license:bsd-2))) |
| 29499 | |
| 29500 | (define-public python-inform |
| 29501 | (package |
| 29502 | (name "python-inform") |
| 29503 | (version "1.23.0") |
| 29504 | (source |
| 29505 | (origin |
| 29506 | (method url-fetch) |
| 29507 | (uri (pypi-uri "inform" version)) |
| 29508 | (sha256 |
| 29509 | (base32 |
| 29510 | "0dvc5klbnbryrvspp45nmlg02g40j7xspcz7lqsm0c0dj0z29zdz")))) |
| 29511 | (build-system python-build-system) |
| 29512 | (arguments |
| 29513 | `(#:tests? #f)) ; PyPI tarball lacks tests |
| 29514 | (native-inputs |
| 29515 | (list python-hypothesis python-pytest-cov python-pytest-runner)) |
| 29516 | (propagated-inputs |
| 29517 | (list python-arrow python-six)) |
| 29518 | (home-page "https://inform.readthedocs.io") |
| 29519 | (synopsis "Print & logging utilities for communicating with user") |
| 29520 | (description |
| 29521 | "Inform is designed to display messages from programs that are typically run from |
| 29522 | a console. It provides a collection of ‘print’ functions that allow you to simply and |
| 29523 | cleanly print different types of messages.") |
| 29524 | (license license:gpl3+))) |
| 29525 | |
| 29526 | (define-public python-nestedtext |
| 29527 | (package |
| 29528 | (name "python-nestedtext") |
| 29529 | (version "1.0.0") |
| 29530 | (source |
| 29531 | (origin |
| 29532 | (method url-fetch) |
| 29533 | (uri (pypi-uri "nestedtext" version)) |
| 29534 | (sha256 |
| 29535 | (base32 |
| 29536 | "0xjx863n7yd1xmkwhy48lhmqrmlzgbx3civhk386hvrzyq4sx148")))) |
| 29537 | (build-system python-build-system) |
| 29538 | (arguments |
| 29539 | `(#:tests? #f)) ; PyPI tarball lacks tests |
| 29540 | (propagated-inputs |
| 29541 | (list python-inform)) |
| 29542 | (home-page "https://nestedtext.org") |
| 29543 | (synopsis "Human readable and writable data interchange format") |
| 29544 | (description |
| 29545 | "NestedText is a file format for holding data that is to be entered, edited, or |
| 29546 | viewed by people. It allows data to be organized into a nested collection of |
| 29547 | dictionaries, lists, and strings. In this way it is similar to JSON and YAML, but |
| 29548 | without the complexity and risk of YAML and without the syntactic clutter of JSON. |
| 29549 | NestedText is both simple and natural. Only a small number of concepts and rules must |
| 29550 | be kept in mind when creating it. It is easily created, modified, or viewed with |
| 29551 | a text editor and easily understood and used by both programmers and non-programmers.") |
| 29552 | (license license:expat))) ; MIT license |
| 29553 | |
| 29554 | (define-public python-nest-asyncio |
| 29555 | (package |
| 29556 | (name "python-nest-asyncio") |
| 29557 | (version "1.5.5") |
| 29558 | (source |
| 29559 | (origin |
| 29560 | (method url-fetch) |
| 29561 | (uri (pypi-uri "nest_asyncio" version)) |
| 29562 | (sha256 |
| 29563 | (base32 |
| 29564 | "0rbdw7lry66yj13hh4w63yzflnapdal1ffl237k8nsa2v4f2jhp4")))) |
| 29565 | (build-system python-build-system) |
| 29566 | (home-page "https://github.com/erdewit/nest_asyncio") |
| 29567 | (synopsis "Patch asyncio to allow nested event loops") |
| 29568 | (description |
| 29569 | "By design @code{asyncio} does not allow its event loop to be nested. |
| 29570 | This presents a practical problem: when in an environment where the event loop |
| 29571 | is already running it's impossible to run tasks and wait for the result. This |
| 29572 | module patches @code{asyncio} to allow nested use of @code{asyncio.run} and |
| 29573 | @code{loop.run_until_complete}.") |
| 29574 | (license license:bsd-3))) |
| 29575 | |
| 29576 | (define-public python-simpervisor |
| 29577 | (package |
| 29578 | (name "python-simpervisor") |
| 29579 | (version "0.4") |
| 29580 | (source |
| 29581 | (origin |
| 29582 | ;; Tests not included in release. |
| 29583 | (method git-fetch) |
| 29584 | (uri (git-reference |
| 29585 | (url "https://github.com/yuvipanda/simpervisor") |
| 29586 | (commit (string-append "v" version)))) |
| 29587 | (file-name (git-file-name name version)) |
| 29588 | (sha256 |
| 29589 | (base32 "1brsisx7saf4ic0dih1n5y7rbdbwn1ywv9pl32bch3061r46prvv")))) |
| 29590 | (build-system python-build-system) |
| 29591 | (arguments |
| 29592 | `(#:tests? #f ; Test suite can't find aiohttp. |
| 29593 | #:phases |
| 29594 | (modify-phases %standard-phases |
| 29595 | (replace 'check |
| 29596 | (lambda* (#:key inputs outputs tests? #:allow-other-keys) |
| 29597 | (when tests? |
| 29598 | (add-installed-pythonpath inputs outputs) |
| 29599 | (invoke "pytest" "--maxfail" "3" "--verbose")) |
| 29600 | #t))))) |
| 29601 | (native-inputs |
| 29602 | (list python-aiohttp python-pytest python-pytest-asyncio)) |
| 29603 | (home-page "https://github.com/yuvipanda/simpervisor") |
| 29604 | (synopsis "Simple async process supervisor") |
| 29605 | (description |
| 29606 | "This package provides a simple async process supervisor in Python.") |
| 29607 | (license license:bsd-3))) |
| 29608 | |
| 29609 | (define-public python-parallel |
| 29610 | (package |
| 29611 | (name "python-parallel") |
| 29612 | (version "1.6.4.4") |
| 29613 | (source |
| 29614 | (origin |
| 29615 | (method url-fetch) |
| 29616 | (uri (string-append |
| 29617 | "https://www.parallelpython.com/downloads/pp/pp-" |
| 29618 | version ".zip")) |
| 29619 | (sha256 |
| 29620 | (base32 |
| 29621 | "1mzk4yabxj6r149fswhis18hd8dnag5sj8i4wb06450zq3pi8dh7")))) |
| 29622 | (native-inputs |
| 29623 | (list unzip)) |
| 29624 | (propagated-inputs |
| 29625 | (list python-six)) |
| 29626 | (build-system python-build-system) |
| 29627 | (arguments '(#:tests? #f)) ; No test suite. |
| 29628 | (home-page "https://www.parallelpython.com") |
| 29629 | (synopsis "Parallel and distributed programming for Python") |
| 29630 | (description "Parallel Python module (PP) provides an easy and efficient |
| 29631 | way to create parallel-enabled applications for SMP computers and clusters. |
| 29632 | PP module features cross-platform portability and dynamic load balancing. |
| 29633 | Thus applications written with PP will parallelize efficiently even on |
| 29634 | heterogeneous and multi-platform clusters (including clusters running other |
| 29635 | applications with variable CPU loads).") |
| 29636 | (license license:bsd-3))) |
| 29637 | |
| 29638 | (define-public python-djvulibre |
| 29639 | (package |
| 29640 | (name "python-djvulibre") |
| 29641 | (version "0.8.6") |
| 29642 | (source |
| 29643 | (origin |
| 29644 | (method url-fetch) |
| 29645 | (uri (pypi-uri "python-djvulibre" version)) |
| 29646 | (sha256 |
| 29647 | (base32 "089smpq29ll0z37lnq26r2f72d31i33xm9fw9pc6hlcsm6nbjbiv")))) |
| 29648 | (build-system python-build-system) |
| 29649 | (native-inputs |
| 29650 | (list ghostscript pkg-config python-nose)) |
| 29651 | (inputs |
| 29652 | (list djvulibre python-cython)) |
| 29653 | (arguments |
| 29654 | `(#:phases |
| 29655 | (modify-phases %standard-phases |
| 29656 | (add-after 'unpack 'fix-tests |
| 29657 | (lambda _ |
| 29658 | ;; Unit tests try to load the 'dllpath.py' and fail, because it |
| 29659 | ;; doesn't make sense on GNU/Linux. |
| 29660 | (delete-file "djvu/dllpath.py") |
| 29661 | #t))))) |
| 29662 | (synopsis "Python bindings for DjVuLibre") |
| 29663 | (description "This is a set of Python bindings for the DjVuLibre library.") |
| 29664 | (home-page "https://jwilk.net/software/python-djvulibre") |
| 29665 | (license license:gpl2))) |
| 29666 | |
| 29667 | (define-public python-version |
| 29668 | ;; No version tags available in the git repo; just using bare commit instead. |
| 29669 | (let ((commit "5232eea250ab72cc5cb72b0b75efb35d2192b906") |
| 29670 | (revision "1")) |
| 29671 | (package |
| 29672 | (name "python-version") |
| 29673 | (version (git-version "0.0.2" revision commit)) |
| 29674 | (source (origin |
| 29675 | (method git-fetch) |
| 29676 | (uri (git-reference |
| 29677 | (url "https://gitlab.com/halfak/python_version") |
| 29678 | (commit commit))) |
| 29679 | (file-name (git-file-name name version)) |
| 29680 | (sha256 |
| 29681 | (base32 |
| 29682 | "0w210559ypdynlj9yn40m9awzkaknwrf682i99hswl7h66sdgh0h")))) |
| 29683 | (build-system python-build-system) |
| 29684 | (home-page "https://gitlab.com/halfak/python_version") |
| 29685 | (synopsis "Python version checking utility") |
| 29686 | (description |
| 29687 | "This package provides a simple utility for checking the python version.") |
| 29688 | (license license:expat)))) |
| 29689 | |
| 29690 | (define-public python-versioneer |
| 29691 | (package |
| 29692 | (name "python-versioneer") |
| 29693 | (version "0.21") |
| 29694 | (source |
| 29695 | (origin |
| 29696 | (method url-fetch) |
| 29697 | (uri (pypi-uri "versioneer" version)) |
| 29698 | (sha256 |
| 29699 | (base32 |
| 29700 | "084fglxafbzvf1vbkzfajvs9qwnvjwwn8pxql9nrlpyipv5xpwk4")) |
| 29701 | (patches (search-patches "python-versioneer-guix-support.patch")))) |
| 29702 | (build-system python-build-system) |
| 29703 | (home-page |
| 29704 | "https://github.com/python-versioneer/python-versioneer") |
| 29705 | (synopsis |
| 29706 | "Version-string management for VCS-controlled trees") |
| 29707 | (description |
| 29708 | "@code{versioneer} is a tool for managing a recorded version number in |
| 29709 | distutils-based python projects. The goal is to remove the tedious and |
| 29710 | error-prone \"update the embedded version string\" step from your release |
| 29711 | process.") |
| 29712 | (license license:public-domain))) |
| 29713 | |
| 29714 | (define-public python-gamera |
| 29715 | (package |
| 29716 | (name "python-gamera") |
| 29717 | (version "4.0.0") |
| 29718 | (source |
| 29719 | (origin |
| 29720 | (method url-fetch) |
| 29721 | (uri (string-append "https://gamera.informatik.hsnr.de/download/" |
| 29722 | "gamera-" version ".tar.gz")) |
| 29723 | (sha256 |
| 29724 | (base32 "0fhlwbvpm3k54n4aa1y6qd348jqrb54ak9p0ic16drx7f07dsq05")) |
| 29725 | (modules '((guix build utils))) |
| 29726 | (snippet |
| 29727 | '(begin |
| 29728 | ;; Remove bundled libraries. |
| 29729 | (for-each delete-file-recursively |
| 29730 | '("src/libpng-1.2.5" |
| 29731 | "src/libtiff" |
| 29732 | "src/zlib-1.2.8")))))) |
| 29733 | (build-system python-build-system) |
| 29734 | (arguments |
| 29735 | `(#:phases |
| 29736 | (modify-phases %standard-phases |
| 29737 | (add-after 'unpack 'disable-wx-support |
| 29738 | (lambda _ |
| 29739 | (substitute* "setup.py" |
| 29740 | (("no_wx = False") |
| 29741 | "no_wx = True")))) |
| 29742 | (replace 'check |
| 29743 | (lambda* (#:key tests? #:allow-other-keys) |
| 29744 | (when tests? |
| 29745 | ;; Some tests require a writable HOME directory and test |
| 29746 | ;; directory. |
| 29747 | (setenv "HOME" "/tmp") |
| 29748 | (mkdir "tests/tmp") ;the code assumes this directory exists |
| 29749 | ;; (for-each make-file-writable (find-files "tests")) |
| 29750 | (with-directory-excursion "tests" |
| 29751 | (invoke "pytest" "-vv" |
| 29752 | ;; This test causes gamera/gendoc.py to be loaded, |
| 29753 | ;; which fails due to the missing docutils, pygments |
| 29754 | ;; and silvercity (very old, unpackaged) libraries. |
| 29755 | "--ignore" "test_plugins.py" |
| 29756 | ;; This test triggers a segfault (see: |
| 29757 | ;; https://github.com/hsnr-gamera/gamera-4/issues/47). |
| 29758 | "--ignore" "test_rle.py")))))))) |
| 29759 | (native-inputs (list python-pytest)) |
| 29760 | (inputs (list libpng libtiff zlib)) |
| 29761 | (synopsis "Framework for building document analysis applications") |
| 29762 | (description |
| 29763 | "Gamera is a toolkit for building document image recognition systems.") |
| 29764 | (home-page "https://gamera.informatik.hsnr.de/") |
| 29765 | (license license:gpl2+))) |
| 29766 | |
| 29767 | (define-public python-contextvars |
| 29768 | (package |
| 29769 | (name "python-contextvars") |
| 29770 | (version "2.4") |
| 29771 | (source |
| 29772 | (origin |
| 29773 | (method url-fetch) |
| 29774 | (uri (pypi-uri "contextvars" version)) |
| 29775 | (sha256 |
| 29776 | (base32 |
| 29777 | "17n3w8c20kgkgc6khaafdhhlcdj4bzman4paxqsl7harma59137k")))) |
| 29778 | (build-system python-build-system) |
| 29779 | (propagated-inputs |
| 29780 | (list python-immutables)) |
| 29781 | (home-page |
| 29782 | "https://github.com/MagicStack/contextvars") |
| 29783 | (synopsis "PEP 567 Backport") |
| 29784 | (description "This package implements a backport of Python 3.7 |
| 29785 | @code{contextvars} module (see PEP 567) for Python 3.6.") |
| 29786 | (license license:asl2.0))) |
| 29787 | |
| 29788 | (define-public python-aiofiles |
| 29789 | (package |
| 29790 | (name "python-aiofiles") |
| 29791 | (version "23.1.0") |
| 29792 | (source |
| 29793 | (origin |
| 29794 | (method url-fetch) |
| 29795 | (uri (pypi-uri "aiofiles" version)) |
| 29796 | (sha256 |
| 29797 | (base32 |
| 29798 | "0d8n79slihf1lkbh2m6yw51rlq6n6vssljsdacbdpq0rkbglglpd")))) |
| 29799 | (build-system python-build-system) |
| 29800 | (home-page "https://github.com/Tinche/aiofiles") |
| 29801 | (synopsis "File support for @code{asyncio}") |
| 29802 | (description "@code{python-aiofiles} is a library for handling local |
| 29803 | disk files in asyncio applications.") |
| 29804 | (license license:asl2.0))) |
| 29805 | |
| 29806 | (define-public python-pyre-extensions |
| 29807 | (package |
| 29808 | (name "python-pyre-extensions") |
| 29809 | (version "0.0.18") |
| 29810 | (source |
| 29811 | (origin |
| 29812 | (method url-fetch) |
| 29813 | (uri (pypi-uri "pyre-extensions" version)) |
| 29814 | (sha256 |
| 29815 | (base32 |
| 29816 | "0c5cbbqrfyjwakdh3kbwxis6mbrbwky1z1fqslgszgpcj4g43q30")))) |
| 29817 | (build-system python-build-system) |
| 29818 | (propagated-inputs |
| 29819 | (list python-typing-extensions python-typing-inspect)) |
| 29820 | (home-page "https://pyre-check.org") |
| 29821 | (synopsis |
| 29822 | "Type system extensions for use with @code{python-pyre}") |
| 29823 | (description |
| 29824 | "@code{python-pyre-extensions} defines extensions to the standard |
| 29825 | @code{typing} module that are supported by the Pyre typechecker.") |
| 29826 | (license license:expat))) |
| 29827 | |
| 29828 | (define-public python-dataclasses |
| 29829 | (package |
| 29830 | (name "python-dataclasses") |
| 29831 | (version "0.8") |
| 29832 | (source |
| 29833 | (origin |
| 29834 | (method url-fetch) |
| 29835 | (uri (pypi-uri "dataclasses" version)) |
| 29836 | (sha256 |
| 29837 | (base32 |
| 29838 | "15sc12nrc7gxwb30vfa6frzdnpmbap9ibi1fr1yrbkra6izhcyc4")))) |
| 29839 | (build-system python-build-system) |
| 29840 | (home-page |
| 29841 | "https://github.com/ericvsmith/dataclasses") |
| 29842 | (synopsis |
| 29843 | "Backport of the @code{dataclasses} module for Python 3.6") |
| 29844 | (description |
| 29845 | "This is an implementation of PEP 557, Data Classes. It is a |
| 29846 | backport of the @code{dataclasses} module for Python 3.6.") |
| 29847 | (license license:asl2.0))) |
| 29848 | |
| 29849 | (define-public python-pywatchman |
| 29850 | (package |
| 29851 | (name "python-pywatchman") |
| 29852 | (version "1.4.1") |
| 29853 | (source |
| 29854 | (origin |
| 29855 | (method url-fetch) |
| 29856 | (uri (pypi-uri "pywatchman" version)) |
| 29857 | (sha256 |
| 29858 | (base32 |
| 29859 | "1yf2gm20wc3djpb5larxii3l55xxby0il2ns3q0v1byyfnr7w16h")))) |
| 29860 | (build-system python-build-system) |
| 29861 | (arguments |
| 29862 | `(#:tests? #f)) ;there are none |
| 29863 | (home-page |
| 29864 | "https://facebook.github.io/watchman/") |
| 29865 | (synopsis "Watchman client for python") |
| 29866 | (description "@code{python-pywatchman} is a library to connect and |
| 29867 | query Watchman to discover file changes.") |
| 29868 | (license license:bsd-3))) |
| 29869 | |
| 29870 | (define-public python-roundrobin |
| 29871 | (package |
| 29872 | (name "python-roundrobin") |
| 29873 | (version "0.0.2") |
| 29874 | (source (origin |
| 29875 | (method url-fetch) |
| 29876 | (uri (pypi-uri "roundrobin" version)) |
| 29877 | (sha256 |
| 29878 | (base32 "1akwhvfyi0120zg2xkhfc6jwfkirz5x90yyvw06bndhaaxwcnc5c")))) |
| 29879 | (build-system python-build-system) |
| 29880 | (arguments '(#:tests? #f)) ;no tests on PyPI and no tags in repo |
| 29881 | (home-page "https://github.com/linnik/roundrobin") |
| 29882 | (synopsis "Collection of roundrobin utilities") |
| 29883 | (description |
| 29884 | "This package provides a collection of utilities for round-robin |
| 29885 | distribution in Python.") |
| 29886 | (license license:expat))) |
| 29887 | |
| 29888 | (define-public python-helpdev |
| 29889 | (package |
| 29890 | (name "python-helpdev") |
| 29891 | (version "0.7.1") |
| 29892 | (source |
| 29893 | (origin |
| 29894 | (method url-fetch) |
| 29895 | (uri (pypi-uri "helpdev" version)) |
| 29896 | (sha256 |
| 29897 | (base32 |
| 29898 | "0gfvj28i82va7c264jl2p4cdsl3lpf9fpb9cyjnis55crfdafqmv")))) |
| 29899 | (build-system python-build-system) |
| 29900 | (arguments |
| 29901 | `(#:phases |
| 29902 | (modify-phases %standard-phases |
| 29903 | (replace 'check |
| 29904 | (lambda* (#:key inputs outputs tests? #:allow-other-keys) |
| 29905 | (when tests? |
| 29906 | (add-installed-pythonpath inputs outputs) |
| 29907 | (invoke "pytest" "tests")) |
| 29908 | #t))))) |
| 29909 | (propagated-inputs |
| 29910 | (list python-importlib-metadata)) |
| 29911 | (native-inputs |
| 29912 | (list python-pytest)) |
| 29913 | (home-page "https://gitlab.com/dpizetta/helpdev") |
| 29914 | (synopsis |
| 29915 | "Extract information about the Python environment easily") |
| 29916 | (description |
| 29917 | "Helpdev is a library to easily extract information about the Python |
| 29918 | environment.") |
| 29919 | (license license:expat))) |
| 29920 | |
| 29921 | (define-public python-logutils |
| 29922 | (package |
| 29923 | (name "python-logutils") |
| 29924 | (version "0.3.5") |
| 29925 | (source |
| 29926 | (origin |
| 29927 | (method url-fetch) |
| 29928 | (uri (pypi-uri "logutils" version)) |
| 29929 | (sha256 |
| 29930 | (base32 |
| 29931 | "10lsi5wv5ysnvf9ya4ncbix6mmipnv5067sf2cglc2f2sljql1dw")))) |
| 29932 | (build-system python-build-system) |
| 29933 | (home-page "https://bitbucket.org/vinay.sajip/logutils/") |
| 29934 | (synopsis "Logging utilities") |
| 29935 | (description "This package provides a set of handlers for the Python |
| 29936 | standard library logging package. Some of these handlers are out-of-scope |
| 29937 | for the standard library, and so they are packaged here. Others are updated |
| 29938 | versions which have appeared in recent Python releases, but are usable with |
| 29939 | older versions of Python and so are packaged here.") |
| 29940 | (license license:bsd-3))) |
| 29941 | |
| 29942 | (define-public python-loguru |
| 29943 | (package |
| 29944 | (name "python-loguru") |
| 29945 | (version "0.7.0") |
| 29946 | (source (origin |
| 29947 | (method url-fetch) |
| 29948 | (uri (pypi-uri "loguru" version)) |
| 29949 | (sha256 |
| 29950 | (base32 |
| 29951 | "1q83kr9zwwxchgyzf8gc6wi68ch5391mwzfxb5wlvs3axly0a4hn")))) |
| 29952 | (build-system pyproject-build-system) |
| 29953 | (arguments |
| 29954 | (list |
| 29955 | #:test-flags |
| 29956 | ;; All of these fail with: error: Cannot find implementation or library |
| 29957 | ;; stub for module named "loguru" |
| 29958 | '(list "--ignore=tests/typesafety/test_logger.yml"))) |
| 29959 | (propagated-inputs (list python-colorama)) |
| 29960 | (native-inputs (list python-colorama |
| 29961 | python-freezegun |
| 29962 | python-mypy |
| 29963 | python-pre-commit |
| 29964 | python-pytest |
| 29965 | python-pytest-cov |
| 29966 | python-pytest-mypy-plugins |
| 29967 | python-sphinx |
| 29968 | python-sphinx-autobuild |
| 29969 | python-sphinx-rtd-theme |
| 29970 | python-tox)) |
| 29971 | (home-page "https://github.com/Delgan/loguru") |
| 29972 | (synopsis "Python logging made (stupidly) simple") |
| 29973 | (description "Python logging made (stupidly) simple") |
| 29974 | (license license:expat))) |
| 29975 | |
| 29976 | (define-public python-helper |
| 29977 | (package |
| 29978 | (name "python-helper") |
| 29979 | (version "2.5.0") |
| 29980 | (source (origin |
| 29981 | (method url-fetch) |
| 29982 | (uri (pypi-uri "helper" version)) |
| 29983 | (sha256 |
| 29984 | (base32 |
| 29985 | "1d2j64wgbggzv5rhvil10zndp2w78wa5np5w0psj122ws9qr9wsa")))) |
| 29986 | (build-system python-build-system) |
| 29987 | (native-inputs |
| 29988 | (list python-mock)) |
| 29989 | (propagated-inputs |
| 29990 | (list python-logutils python-pyyaml)) |
| 29991 | (home-page "https://github.com/gmr/helper") |
| 29992 | (synopsis "Library for writing configurable applications and daemons") |
| 29993 | (description |
| 29994 | "This package provides procedures for quickly writing configurable |
| 29995 | applications and daemons.") |
| 29996 | (license license:bsd-3))) |
| 29997 | |
| 29998 | (define-public python-qtsass |
| 29999 | (package |
| 30000 | (name "python-qtsass") |
| 30001 | (version "0.3.0") |
| 30002 | (source |
| 30003 | (origin |
| 30004 | ;; There are no tests in the PyPI tarball. |
| 30005 | (method git-fetch) |
| 30006 | (uri (git-reference |
| 30007 | (url "https://github.com/spyder-ide/qtsass/") |
| 30008 | (commit (string-append "v" version)))) |
| 30009 | (file-name (git-file-name name version)) |
| 30010 | (sha256 |
| 30011 | (base32 "09s04aa14d8jqbh71clrb5y7vcmkxlp94mwmvzrkxahry3bk03cb")))) |
| 30012 | (build-system python-build-system) |
| 30013 | (arguments |
| 30014 | `(#:test-target "pytest" |
| 30015 | #:phases |
| 30016 | (modify-phases %standard-phases |
| 30017 | ;; Tests need to read and write files. |
| 30018 | (add-before 'check 'make-git-checkout-writable |
| 30019 | (lambda _ |
| 30020 | (for-each make-file-writable (find-files ".")) |
| 30021 | #t))))) |
| 30022 | (native-inputs |
| 30023 | (list python-pytest python-pytest-cov python-pytest-runner)) |
| 30024 | (propagated-inputs |
| 30025 | (list python-libsass)) |
| 30026 | (home-page "https://github.com/spyder-ide/qtsass") |
| 30027 | (synopsis "Compile SCSS files to valid Qt stylesheets") |
| 30028 | (description |
| 30029 | "Besides being used in web development, CSS is also the way to stylize |
| 30030 | Qt-based desktop applications. However, Qt's CSS has a few variations that |
| 30031 | prevent the direct use of SASS compiler. |
| 30032 | |
| 30033 | The purpose of this tool is to fill the gap between SASS and Qt-CSS by |
| 30034 | handling those variations.") |
| 30035 | (license license:expat))) |
| 30036 | |
| 30037 | (define-public python-qdarkstyle |
| 30038 | (package |
| 30039 | (name "python-qdarkstyle") |
| 30040 | (version "2.8.1") |
| 30041 | (source |
| 30042 | (origin |
| 30043 | (method url-fetch) |
| 30044 | (uri (pypi-uri "QDarkStyle" version)) |
| 30045 | (sha256 |
| 30046 | (base32 |
| 30047 | "0883vzg35fzpyl1aiijzpfcdfvpq5vi325w0m7xkx7nxplh02fym")))) |
| 30048 | (build-system python-build-system) |
| 30049 | (arguments |
| 30050 | `(;; Fails unable to detect valid Qt bindings even when |
| 30051 | ;; added as native-inputs. |
| 30052 | #:tests? #f)) |
| 30053 | (propagated-inputs |
| 30054 | (list python-helpdev python-qtpy)) |
| 30055 | (home-page |
| 30056 | "https://github.com/ColinDuquesnoy/QDarkStyleSheet") |
| 30057 | (synopsis |
| 30058 | "Complete dark stylesheet for Python and Qt applications") |
| 30059 | (description "QDarkStyle is the most complete dark stylesheet for Python and |
| 30060 | Qt applications.") |
| 30061 | (license license:expat))) |
| 30062 | |
| 30063 | (define-public python-bitstring |
| 30064 | (package |
| 30065 | (name "python-bitstring") |
| 30066 | (version "3.1.7") |
| 30067 | (source |
| 30068 | (origin |
| 30069 | (method url-fetch) |
| 30070 | (uri (pypi-uri "bitstring" version)) |
| 30071 | (sha256 |
| 30072 | (base32 |
| 30073 | "0jl6192dwrlm5ybkbh7ywmyaymrc3cmz9y07nm7qdli9n9rfpwzx")))) |
| 30074 | (build-system python-build-system) |
| 30075 | (arguments |
| 30076 | `(#:phases |
| 30077 | (modify-phases %standard-phases |
| 30078 | (replace 'check |
| 30079 | (lambda* (#:key tests? inputs outputs #:allow-other-keys) |
| 30080 | (when tests? |
| 30081 | (add-installed-pythonpath inputs outputs) |
| 30082 | (with-directory-excursion "test" |
| 30083 | (invoke "pytest"))) |
| 30084 | #t))))) |
| 30085 | (native-inputs |
| 30086 | (list python-pytest)) |
| 30087 | (home-page "https://github.com/scott-griffiths/bitstring") |
| 30088 | (synopsis |
| 30089 | "Simple construction, analysis and modification of binary data") |
| 30090 | (description |
| 30091 | "Bitstring is a library for simple construction, analysis and modification |
| 30092 | of binary data.") |
| 30093 | (license license:expat))) |
| 30094 | |
| 30095 | (define-public python-confuse |
| 30096 | (package |
| 30097 | (name "python-confuse") |
| 30098 | (version "1.5.0") |
| 30099 | (source |
| 30100 | (origin |
| 30101 | (method url-fetch) |
| 30102 | (uri (pypi-uri "confuse" version)) |
| 30103 | (sha256 |
| 30104 | (base32 |
| 30105 | "0bh2kyj8wd7h9gg4nsvrbykl5ly0f70f0wi3fbm204b1f0fcmywj")))) |
| 30106 | (build-system python-build-system) |
| 30107 | (propagated-inputs |
| 30108 | (list python-pyyaml)) |
| 30109 | (home-page "https://github.com/beetbox/confuse") |
| 30110 | (synopsis "Painless YAML configuration") |
| 30111 | (description "Confuse is a configuration library for Python that uses |
| 30112 | YAML. It takes care of defaults, overrides, type checking, command-line |
| 30113 | integration, human-readable errors, and standard OS-specific locations.") |
| 30114 | (license license:expat))) |
| 30115 | |
| 30116 | (define-public python-reflink |
| 30117 | (package |
| 30118 | (name "python-reflink") |
| 30119 | (version "0.2.1") |
| 30120 | (source |
| 30121 | (origin |
| 30122 | (method url-fetch) |
| 30123 | (uri (pypi-uri "reflink" version)) |
| 30124 | (sha256 |
| 30125 | (base32 |
| 30126 | "0fkf3sd958g9hvr3jwlhnhqqzrwxljrc3grsf3yknh94vf13a9f9")))) |
| 30127 | (build-system python-build-system) |
| 30128 | (arguments |
| 30129 | `(#:tests? #false)) ; almost all tests want to run mkfs.btrfs |
| 30130 | (propagated-inputs |
| 30131 | (list python-cffi)) |
| 30132 | (native-inputs |
| 30133 | (list python-pytest python-pytest-runner)) |
| 30134 | (home-page "https://gitlab.com/rubdos/pyreflink") |
| 30135 | (synopsis "Python wrapper around reflink system call") |
| 30136 | (description |
| 30137 | "Python reflink wraps around platform specific @code{reflink} |
| 30138 | implementations.") |
| 30139 | (license license:expat))) |
| 30140 | |
| 30141 | (define-public python-retry |
| 30142 | (package |
| 30143 | (name "python-retry") |
| 30144 | (version "0.9.2") |
| 30145 | (source (origin |
| 30146 | (method url-fetch) |
| 30147 | (uri (pypi-uri "retry" version)) |
| 30148 | (sha256 |
| 30149 | (base32 "197v6qrh6858bhzzrjgk2zdqrybppymb1lsvdxnm1i39kfwsigzq")))) |
| 30150 | (build-system python-build-system) |
| 30151 | (arguments |
| 30152 | (list #:phases |
| 30153 | #~(modify-phases %standard-phases |
| 30154 | (replace 'check |
| 30155 | (lambda* (#:key tests? #:allow-other-keys) |
| 30156 | (when tests? (invoke "pytest" "-vv"))))))) |
| 30157 | (native-inputs (list python-pbr python-pytest)) |
| 30158 | (propagated-inputs (list python-decorator python-py)) |
| 30159 | (home-page "https://github.com/invl/retry") |
| 30160 | (synopsis "Retry decorator") |
| 30161 | (description |
| 30162 | "@code{retry} is an easy to use retry decorator for Python. It can be |
| 30163 | used to retry a function a given number of times.") |
| 30164 | (license license:asl2.0))) |
| 30165 | |
| 30166 | (define-public python-pivy |
| 30167 | (package |
| 30168 | (name "python-pivy") |
| 30169 | (version "0.6.5") |
| 30170 | (source |
| 30171 | (origin |
| 30172 | (method git-fetch) |
| 30173 | (uri (git-reference |
| 30174 | (url "https://github.com/coin3d/pivy") |
| 30175 | (commit version))) |
| 30176 | (file-name (git-file-name name version)) |
| 30177 | (sha256 |
| 30178 | (base32 "0vids7sxk8w5vr73xdnf8xdci71a7syl6cd35aiisppbqyyfmykx")))) |
| 30179 | (build-system python-build-system) |
| 30180 | (arguments |
| 30181 | `(;; The test suite fails due to an import cycle between 'pivy' and '_coin' |
| 30182 | #:tests? #f |
| 30183 | #:phases |
| 30184 | (modify-phases %standard-phases |
| 30185 | (add-after 'unpack 'patch-cmake-include-dirs |
| 30186 | (lambda _ |
| 30187 | ;; Patch buildsystem to respect Coin3D include directory |
| 30188 | (substitute* "CMakeLists.txt" |
| 30189 | (("\\$\\{SoQt_INCLUDE_DIRS}") |
| 30190 | "${Coin_INCLUDE_DIR};${SoQt_INCLUDE_DIRS}")) |
| 30191 | #t))))) |
| 30192 | (native-inputs |
| 30193 | (list cmake swig)) |
| 30194 | (inputs |
| 30195 | (list python-wrapper |
| 30196 | qtbase-5 |
| 30197 | libxi |
| 30198 | libice |
| 30199 | soqt |
| 30200 | glew |
| 30201 | coin3D)) |
| 30202 | (home-page "https://github.com/coin3d/pivy") |
| 30203 | (synopsis "Python bindings to Coin3D") |
| 30204 | (description |
| 30205 | "Pivy provides python bindings for Coin, a 3D graphics library with an |
| 30206 | Application Programming Interface based on the Open Inventor 2.1 API.") |
| 30207 | (license license:isc))) |
| 30208 | |
| 30209 | (define-public python-crayons |
| 30210 | (package |
| 30211 | (name "python-crayons") |
| 30212 | (version "0.4.0") |
| 30213 | (source |
| 30214 | (origin |
| 30215 | (method url-fetch) |
| 30216 | (uri (pypi-uri "crayons" version)) |
| 30217 | (sha256 |
| 30218 | (base32 |
| 30219 | "0gw106k4b6y8mw7pp52awxyplj2bwvwk315k4sywzwh0g1abfcxx")))) |
| 30220 | (build-system python-build-system) |
| 30221 | (propagated-inputs |
| 30222 | (list python-colorama)) |
| 30223 | (home-page "https://github.com/MasterOdin/crayons") |
| 30224 | (synopsis "TextUI colors for Python") |
| 30225 | (description "This package gives you colored strings for the terminal. |
| 30226 | Crayons automatically wraps a given string in the foreground color and |
| 30227 | restores the original state after the string is printed.") |
| 30228 | (license license:expat))) |
| 30229 | |
| 30230 | (define-public python-sane |
| 30231 | (package |
| 30232 | (name "python-sane") |
| 30233 | (version "2.9.1") |
| 30234 | (source |
| 30235 | (origin |
| 30236 | (method url-fetch) |
| 30237 | (uri (pypi-uri name version)) |
| 30238 | (sha256 |
| 30239 | (base32 |
| 30240 | "1pi597z94n2mkd821ln52fq0g727n2jxfskf280ip3kf7jw8w294")))) |
| 30241 | (build-system python-build-system) |
| 30242 | (native-inputs |
| 30243 | (list python-pytest)) |
| 30244 | (inputs |
| 30245 | (list sane-backends)) |
| 30246 | (home-page "https://github.com/python-pillow/Sane") |
| 30247 | (synopsis "Python interface to the SANE scanner") |
| 30248 | (description "This package provides Python interface to the SANE scanner |
| 30249 | and frame grabber interface.") |
| 30250 | (license (license:non-copyleft |
| 30251 | ;; Yet another variant of the X/MIT license. |
| 30252 | "https://github.com/python-pillow/Sane/blob/master/COPYING")))) |
| 30253 | |
| 30254 | (define-public python-scikit-build |
| 30255 | (package |
| 30256 | (name "python-scikit-build") |
| 30257 | (version "0.17.6") |
| 30258 | (source |
| 30259 | (origin |
| 30260 | (method url-fetch) |
| 30261 | (uri (pypi-uri "scikit_build" version)) |
| 30262 | (sha256 |
| 30263 | (base32 "17awdvpzj4bn50gk4gmj20r2xcjr5y8lfl2bk582di1pdfim26mm")))) |
| 30264 | (build-system pyproject-build-system) |
| 30265 | (arguments |
| 30266 | (list |
| 30267 | #:phases |
| 30268 | #~(modify-phases %standard-phases |
| 30269 | (add-after 'unpack 'patch-cmake-executable |
| 30270 | (lambda* (#:key inputs #:allow-other-keys) |
| 30271 | (substitute* "skbuild/constants.py" |
| 30272 | (("^(CMAKE_DEFAULT_EXECUTABLE = ).*" _ head) |
| 30273 | (format #f "~a ~s~%" head |
| 30274 | (search-input-file inputs "bin/cmake")))))) |
| 30275 | (replace 'check |
| 30276 | (lambda* (#:key tests? #:allow-other-keys) |
| 30277 | (when tests? |
| 30278 | ;; These tests attempt to pull dependencies from the Internet. |
| 30279 | (delete-file "tests/test_distribution.py") |
| 30280 | (delete-file "tests/test_pep518.py") |
| 30281 | ;; The tests marked as "isolate" are tests that require access |
| 30282 | ;; to the network. |
| 30283 | (invoke "pytest" "-vv" "-m" "not isolated" |
| 30284 | "-n" (number->string (parallel-job-count)) |
| 30285 | "-k" (string-append |
| 30286 | ;; These tests attempt to write to read-only |
| 30287 | ;; Python install directory. |
| 30288 | "not test_install_command " |
| 30289 | "and not test_test_command " |
| 30290 | "and not test_hello_develop " |
| 30291 | ;; These sdist-related tests fail for unknown |
| 30292 | ;; reasons (see: |
| 30293 | ;; https://github.com/scikit-build/scikit-build/issues/689). |
| 30294 | "and not test_hello_sdist_with_base " |
| 30295 | "and not test_manifest_in_sdist " |
| 30296 | "and not test_hello_sdist " |
| 30297 | "and not test_sdist_with_symlinks " |
| 30298 | ;; These are not parallel safe and fail |
| 30299 | ;; nondeterministically (see: |
| 30300 | ;; https://github.com/scikit-build/scikit-build/issues/711). |
| 30301 | "and not test_generator_cleanup " |
| 30302 | "and not test_generator_selection ")))))))) |
| 30303 | (native-inputs |
| 30304 | (list cmake-minimal |
| 30305 | gfortran |
| 30306 | git-minimal/pinned ;for tests |
| 30307 | ninja |
| 30308 | python-coverage |
| 30309 | python-cython |
| 30310 | python-hatchling |
| 30311 | python-hatch-fancy-pypi-readme |
| 30312 | python-hatch-vcs |
| 30313 | python-mock |
| 30314 | python-packaging |
| 30315 | python-path |
| 30316 | python-pytest |
| 30317 | python-pytest-cov |
| 30318 | python-pytest-mock |
| 30319 | python-pytest-virtualenv |
| 30320 | python-pytest-xdist |
| 30321 | python-requests |
| 30322 | python-setuptools-scm |
| 30323 | python-virtualenv)) |
| 30324 | (propagated-inputs |
| 30325 | (list python-distro python-packaging python-tomli python-wheel)) |
| 30326 | (home-page "https://github.com/scikit-build/scikit-build") |
| 30327 | (synopsis "Build system generator for Python C/C++/Fortran/Cython extensions") |
| 30328 | (description "Scikit-build is an improved build system generator for |
| 30329 | CPython C/C++/Fortran/Cython extensions. It has support for additional |
| 30330 | compilers, build systems, cross compilation, and locating dependencies and |
| 30331 | determining their build requirements. The scikit-build package is |
| 30332 | fundamentally just glue between the @code{setuptools} Python module and |
| 30333 | CMake.") |
| 30334 | (license license:expat))) |
| 30335 | |
| 30336 | (define-public python-screenkey |
| 30337 | (package |
| 30338 | (name "python-screenkey") |
| 30339 | (version "1.4") |
| 30340 | (source |
| 30341 | (origin |
| 30342 | (method git-fetch) |
| 30343 | (uri (git-reference |
| 30344 | (url "https://gitlab.com/screenkey/screenkey") |
| 30345 | (commit (string-append "v" version)))) |
| 30346 | (file-name (git-file-name name version)) |
| 30347 | (sha256 |
| 30348 | (base32 |
| 30349 | "1rfngmkh01g5192pi04r1fm7vsz6hg9k3qd313sn9rl9xkjgp11l")))) |
| 30350 | (build-system python-build-system) |
| 30351 | (arguments |
| 30352 | `(#:phases |
| 30353 | (modify-phases %standard-phases |
| 30354 | (add-after 'unpack 'fix-dlopen-paths |
| 30355 | (lambda* (#:key inputs outputs #:allow-other-keys) |
| 30356 | (let* ((x11 (assoc-ref inputs "libx11")) |
| 30357 | (xtst (assoc-ref inputs "libxtst"))) |
| 30358 | (substitute* "Screenkey/xlib.py" |
| 30359 | (("libX11.so.6") |
| 30360 | (string-append x11 "/lib/libX11.so.6"))) |
| 30361 | (substitute* "Screenkey/xlib.py" |
| 30362 | (("libXtst.so.6") |
| 30363 | (string-append xtst "/lib/libXtst.so.6"))) |
| 30364 | #t))) |
| 30365 | (add-after 'install 'wrap-screenkey |
| 30366 | (lambda* (#:key outputs #:allow-other-keys) |
| 30367 | (wrap-program |
| 30368 | (string-append (assoc-ref outputs "out") "/bin/screenkey") |
| 30369 | `("GUIX_PYTHONPATH" ":" prefix (,(getenv "GUIX_PYTHONPATH"))) |
| 30370 | `("GI_TYPELIB_PATH" |
| 30371 | ":" prefix (,(getenv "GI_TYPELIB_PATH"))))))))) |
| 30372 | (inputs |
| 30373 | (list python-distutils-extra |
| 30374 | python-tokenize-rt |
| 30375 | libx11 |
| 30376 | libxtst |
| 30377 | gtk+ |
| 30378 | python-pygobject |
| 30379 | python-pycairo |
| 30380 | python-setuptools-git |
| 30381 | python-babel)) |
| 30382 | (home-page "https://www.thregr.org/~wavexx/software/screenkey/") |
| 30383 | (synopsis |
| 30384 | "Screencast tool to display pressed keys") |
| 30385 | (description |
| 30386 | "Screenkey is a screencast tool to display your keys inspired by |
| 30387 | Screenflick.") |
| 30388 | (license license:gpl3+))) |
| 30389 | |
| 30390 | (define-public python-jinja2-cli |
| 30391 | (package |
| 30392 | (name "python-jinja2-cli") |
| 30393 | (version "0.7.0") |
| 30394 | (source |
| 30395 | (origin |
| 30396 | (method url-fetch) |
| 30397 | (uri (pypi-uri "jinja2-cli" version)) |
| 30398 | (sha256 |
| 30399 | (base32 |
| 30400 | "0vikx7v6fbvww6kfrv0k5a24jyv3ak7nindg60906pdd1m9qvkcw")))) |
| 30401 | (build-system python-build-system) |
| 30402 | (propagated-inputs |
| 30403 | (list python-jinja2)) |
| 30404 | (native-inputs |
| 30405 | (list python-flake8 python-jinja2 python-pytest)) |
| 30406 | (home-page "https://github.com/mattrobenolt/jinja2-cli") |
| 30407 | (synopsis "Command-line interface to Jinja2") |
| 30408 | (description |
| 30409 | "This package provides a command-line interface (CLI) to the Jinja2 |
| 30410 | template engine.") |
| 30411 | (license license:bsd-3))) |
| 30412 | |
| 30413 | (define-public python-readability |
| 30414 | (package |
| 30415 | (name "python-readability") |
| 30416 | (version "0.3.1") |
| 30417 | (source |
| 30418 | (origin |
| 30419 | (method url-fetch) |
| 30420 | (uri (pypi-uri "readability" version)) |
| 30421 | (sha256 |
| 30422 | (base32 |
| 30423 | "1b8gq3g2zwvx0aivvdg56cc0bn7xw6f2v6psmxdx9aiipkw0s0zr")))) |
| 30424 | (build-system python-build-system) |
| 30425 | (home-page |
| 30426 | "https://github.com/andreasvc/readability/") |
| 30427 | (synopsis |
| 30428 | "Measure the readability of a given text using surface |
| 30429 | characteristics") |
| 30430 | (description |
| 30431 | "This package provides a Python library that is an implementation of |
| 30432 | traditional readability measures based on simple surface |
| 30433 | characteristics. These measures are basically linear regressions based on the |
| 30434 | number of words, syllables, and sentences.") |
| 30435 | (license license:asl2.0))) |
| 30436 | |
| 30437 | (define-public python-readability-lxml |
| 30438 | (package |
| 30439 | (name "python-readability-lxml") |
| 30440 | (version "0.8.1") |
| 30441 | (source (origin |
| 30442 | (method git-fetch) |
| 30443 | (uri (git-reference |
| 30444 | (url "https://github.com/buriy/python-readability") |
| 30445 | (commit (string-append "v" version)))) |
| 30446 | (file-name (git-file-name name version)) |
| 30447 | (sha256 |
| 30448 | (base32 |
| 30449 | "13nfy2v0pbbf62jn9qwgi489gg97hbb22q6w3f78mnvjxd2m19rh")) |
| 30450 | (snippet |
| 30451 | #~(begin (delete-file "readability/compat/two.py"))))) |
| 30452 | (build-system python-build-system) |
| 30453 | (arguments |
| 30454 | (list |
| 30455 | #:phases |
| 30456 | #~(modify-phases %standard-phases |
| 30457 | (replace 'check |
| 30458 | (lambda* (#:key tests? #:allow-other-keys) |
| 30459 | (when tests? |
| 30460 | (invoke "python" "-m" "pytest" "-v" "tests/"))))))) |
| 30461 | (propagated-inputs (list python-chardet python-cssselect python-lxml)) |
| 30462 | (native-inputs (list python-timeout-decorator python-pytest)) |
| 30463 | (home-page "http://github.com/buriy/python-readability") |
| 30464 | (synopsis "HTML to text parser") |
| 30465 | (description |
| 30466 | "This package provides classes and function that strip gratuitous markup |
| 30467 | from web pages to make them easier to read.") |
| 30468 | (license license:asl2.0))) |
| 30469 | |
| 30470 | (define-public python-listparser |
| 30471 | (package |
| 30472 | (name "python-listparser") |
| 30473 | (version "0.18") |
| 30474 | (source |
| 30475 | (origin |
| 30476 | (method url-fetch) |
| 30477 | (uri (pypi-uri "listparser" version)) |
| 30478 | (sha256 |
| 30479 | (base32 |
| 30480 | "0hdqs1mmayw1r8yla43hgb4d9y3zqs5483vgf8j9ygczkd2wrq2b")))) |
| 30481 | (build-system python-build-system) |
| 30482 | (home-page |
| 30483 | "https://github.com/kurtmckee/listparser") |
| 30484 | (synopsis |
| 30485 | "Parse subscription lists in Python") |
| 30486 | (description |
| 30487 | "This package provides a Python library that can parse OPML, FOAF, and |
| 30488 | iGoogle subscription lists.") |
| 30489 | (license license:expat))) |
| 30490 | |
| 30491 | (define-public python-smartypants |
| 30492 | (package |
| 30493 | (name "python-smartypants") |
| 30494 | (version "2.0.1") |
| 30495 | (source |
| 30496 | (origin |
| 30497 | ;; There's no source tarball for 2.0.1 on PyPI. |
| 30498 | (method git-fetch) |
| 30499 | (uri (git-reference |
| 30500 | (url "https://github.com/leohemsted/smartypants.py") |
| 30501 | (commit (string-append "v" version)))) |
| 30502 | (file-name (git-file-name name version)) |
| 30503 | (sha256 |
| 30504 | (base32 "00p1gnb9pzb3svdq3c5b9b332gsp50wrqqa39gj00m133zadanjp")))) |
| 30505 | (build-system python-build-system) |
| 30506 | (arguments |
| 30507 | '(#:phases |
| 30508 | (modify-phases %standard-phases |
| 30509 | (replace 'check |
| 30510 | ;; Its `setup.py test` doesn't report failure with exit status, so |
| 30511 | ;; we use `nose` instead. |
| 30512 | (lambda _ |
| 30513 | (invoke "nosetests" "-v" "--exclude=^load_tests$")))))) |
| 30514 | (native-inputs |
| 30515 | ;; For tests. |
| 30516 | (list python-docutils python-nose python-pygments)) |
| 30517 | (home-page "https://github.com/leohemsted/smartypants.py") |
| 30518 | (synopsis "Translate punctuation characters into smart quotes") |
| 30519 | (description |
| 30520 | "@command{smartpants} can perform the following transformations: |
| 30521 | @enumerate |
| 30522 | @item Straight quotes ( \" and ' ) into \"curly\" quote HTML entities |
| 30523 | @item Backticks-style quotes (``like this'') into \"curly\" quote HTML |
| 30524 | entities |
| 30525 | @item Dashes (-- and ---) into en- and em-dash entities |
| 30526 | @item Three consecutive dots (... or . . .) into an ellipsis entity |
| 30527 | @end enumerate") |
| 30528 | (license license:bsd-3))) |
| 30529 | |
| 30530 | (define-public python-typogrify |
| 30531 | (package |
| 30532 | (name "python-typogrify") |
| 30533 | (version "2.0.7") |
| 30534 | (source (origin |
| 30535 | (method url-fetch) |
| 30536 | (uri (pypi-uri "typogrify" version)) |
| 30537 | (sha256 |
| 30538 | (base32 |
| 30539 | "0f6b2gnnxjbx1fbmkcscc6qjr4hi78kwm1wx4b766ha3va66dr4b")))) |
| 30540 | (build-system python-build-system) |
| 30541 | (arguments |
| 30542 | '(#:phases |
| 30543 | (modify-phases %standard-phases |
| 30544 | (replace 'check |
| 30545 | (lambda _ |
| 30546 | (invoke "nosetests" "-v")))))) |
| 30547 | (propagated-inputs |
| 30548 | (list python-smartypants)) |
| 30549 | (native-inputs |
| 30550 | ;; For tests. |
| 30551 | (list python-nose)) |
| 30552 | (home-page "https://github.com/mintchaos/typogrify") |
| 30553 | (synopsis "Filters to transform text into typographically-improved HTML") |
| 30554 | (description |
| 30555 | "@code{typogrify} provides a set of custom filters that automatically |
| 30556 | apply various transformations to plain text in order to yield |
| 30557 | typographically-improved HTML. While often used in conjunction with Jinja and |
| 30558 | Django template systems, the filters can be used in any environment.") |
| 30559 | (license license:bsd-3))) |
| 30560 | |
| 30561 | (define-public python-ld |
| 30562 | (package |
| 30563 | (name "python-ld") |
| 30564 | (version "0.5.0") |
| 30565 | (source |
| 30566 | (origin |
| 30567 | (method url-fetch) |
| 30568 | (uri (pypi-uri "ld" version)) |
| 30569 | (sha256 |
| 30570 | (base32 |
| 30571 | "1k4ydp5rgkv4985v459kcl06i1igjm1ywvh2vkbi9ck1zyyri1z5")))) |
| 30572 | (build-system python-build-system) |
| 30573 | (propagated-inputs |
| 30574 | (list python-six)) |
| 30575 | (home-page "https://github.com/nir0s/ld") |
| 30576 | (synopsis "OS platform information API") |
| 30577 | (description |
| 30578 | "The ld package provides information about the GNU/Linux distribution it |
| 30579 | runs on, such as a reliable machine-readable ID, or version information.") |
| 30580 | (license license:asl2.0))) |
| 30581 | |
| 30582 | (define-public python-quicktions |
| 30583 | (package |
| 30584 | (name "python-quicktions") |
| 30585 | (version "1.11") |
| 30586 | (source |
| 30587 | (origin |
| 30588 | (method url-fetch) |
| 30589 | (uri (pypi-uri "quicktions" version)) |
| 30590 | (sha256 |
| 30591 | (base32 |
| 30592 | "1px21a6x527i1bsr2p6bbf3jziqpvd1vjkvvzh13gsy4iip0yvzn")) |
| 30593 | (modules '((guix build utils))) |
| 30594 | (snippet |
| 30595 | '(begin |
| 30596 | ;; This file is generated by Cython. |
| 30597 | (delete-file "src/quicktions.c") #t)))) |
| 30598 | (build-system python-build-system) |
| 30599 | (arguments |
| 30600 | `(#:phases |
| 30601 | (modify-phases %standard-phases |
| 30602 | (add-before 'build 'cythonize-sources |
| 30603 | (lambda _ |
| 30604 | (with-directory-excursion "src" |
| 30605 | (invoke "cython" "quicktions.pyx")))) |
| 30606 | (replace 'check |
| 30607 | (lambda* (#:key tests? inputs outputs #:allow-other-keys) |
| 30608 | (when tests? |
| 30609 | (add-installed-pythonpath inputs outputs) |
| 30610 | (invoke "pytest")) |
| 30611 | #t))))) |
| 30612 | (native-inputs |
| 30613 | (list python-cython python-pytest)) |
| 30614 | (home-page "https://github.com/scoder/quicktions") |
| 30615 | (synopsis "Fast fractions data type for rational numbers") |
| 30616 | (description |
| 30617 | "This package provides fast fractions data type for rational numbers. It |
| 30618 | is the cythonized version of @code{fractions.Fraction}.") |
| 30619 | (license license:psfl))) |
| 30620 | |
| 30621 | (define-public python-pathvalidate |
| 30622 | (package |
| 30623 | (name "python-pathvalidate") |
| 30624 | (version "2.4.1") |
| 30625 | (source |
| 30626 | (origin |
| 30627 | (method url-fetch) |
| 30628 | (uri (pypi-uri "pathvalidate" version)) |
| 30629 | (sha256 |
| 30630 | (base32 "0s14ycjgb44lxr2wg8lrq3b7kybmmrbf7yqz47xrqgn2gr6dk6rw")))) |
| 30631 | (build-system python-build-system) |
| 30632 | (arguments |
| 30633 | '(#:tests? #f)) |
| 30634 | ;; Tests disabled because of circular dependencies. |
| 30635 | ;; pathvalidate tests depend on pytest-md-report, which |
| 30636 | ;; depends on pathvalidate. |
| 30637 | (native-inputs |
| 30638 | (list python-allpairspy python-click python-faker python-pytest)) |
| 30639 | (home-page "https://github.com/thombashi/pathvalidate") |
| 30640 | (synopsis "Sanitize strings representing paths") |
| 30641 | (description |
| 30642 | "@code{pathvalidate} is a Python library to sanitize/validate strings |
| 30643 | representing paths or filenames.") |
| 30644 | (license license:expat))) |
| 30645 | |
| 30646 | (define-public python-escapism |
| 30647 | (package |
| 30648 | (name "python-escapism") |
| 30649 | (version "1.0.1") |
| 30650 | (source |
| 30651 | (origin |
| 30652 | (method url-fetch) |
| 30653 | (uri (pypi-uri "escapism" version)) |
| 30654 | (sha256 |
| 30655 | (base32 |
| 30656 | "1v74243wifcwhj5zkdiispxc9kb1xvnfzilg8bq308pjnkgnn9bk")))) |
| 30657 | (build-system python-build-system) |
| 30658 | (home-page "https://github.com/minrk/escapism") |
| 30659 | (synopsis "Simple, generic library for escaping strings") |
| 30660 | (description |
| 30661 | "This Python library provides a programming interface to, given a set of |
| 30662 | safe characters and an escape character, escape safe strings and unescape the |
| 30663 | result.") |
| 30664 | (license license:expat))) |
| 30665 | |
| 30666 | (define-public python-recommonmark |
| 30667 | (package |
| 30668 | (name "python-recommonmark") |
| 30669 | (version "0.7.1") |
| 30670 | (source |
| 30671 | (origin |
| 30672 | (method url-fetch) |
| 30673 | (uri (pypi-uri "recommonmark" version)) |
| 30674 | (sha256 |
| 30675 | (base32 |
| 30676 | "0rvdd2ikdr0yg6cx6594fdzn53cmdc0g0i6qsbcdq8i2kxjdpd5x")))) |
| 30677 | (build-system python-build-system) |
| 30678 | (propagated-inputs |
| 30679 | (list python-commonmark python-docutils python-sphinx)) |
| 30680 | (arguments |
| 30681 | '(#:phases (modify-phases %standard-phases |
| 30682 | (add-after 'unpack 'delete-test-sphinx |
| 30683 | (lambda* (#:key outputs #:allow-other-keys) |
| 30684 | (let* ((out (assoc-ref outputs "out"))) |
| 30685 | (delete-file "tests/test_sphinx.py"))))))) |
| 30686 | (home-page "https://github.com/readthedocs/recommonmark") |
| 30687 | (synopsis "Docutils-compatibility bridge to CommonMark") |
| 30688 | (description |
| 30689 | "This package provides a docutils-compatibility bridge to CommonMark that |
| 30690 | lets you write CommonMark inside of Docutils & Sphinx projects.") |
| 30691 | (license license:expat))) |
| 30692 | |
| 30693 | (define-public python-redo |
| 30694 | ;; The latest release isn't tagged: |
| 30695 | ;; https://github.com/mozilla-releng/redo/issues/76 |
| 30696 | (let ((commit "50cfe8e3656f253f9e51df3a998530351d2d9a8c") |
| 30697 | (revision "0")) |
| 30698 | (package |
| 30699 | (name "python-redo") |
| 30700 | (version (git-version "2.0.4" revision commit)) |
| 30701 | (source |
| 30702 | (origin |
| 30703 | (method git-fetch) ; There are no tests in the PyPI release. |
| 30704 | (uri (git-reference |
| 30705 | (url "https://github.com/mozilla-releng/redo") |
| 30706 | (commit commit))) |
| 30707 | (file-name (git-file-name name version)) |
| 30708 | (sha256 |
| 30709 | (base32 "0xpylx97qr4ikdhsr208ri41007mpp57a4n8mmlmlqmdljmsdpdb")))) |
| 30710 | (build-system python-build-system) |
| 30711 | (native-inputs |
| 30712 | (list python-mock |
| 30713 | python-pytest)) |
| 30714 | (arguments |
| 30715 | (list #:phases |
| 30716 | #~(modify-phases %standard-phases |
| 30717 | (replace 'check |
| 30718 | (lambda* (#:key tests? #:allow-other-keys) |
| 30719 | (when tests? |
| 30720 | ;; The project uses tox to run the tests via pytest. |
| 30721 | (invoke "pytest"))))))) |
| 30722 | (home-page "https://github.com/mozilla-releng/redo") |
| 30723 | (synopsis "Utilities to retry Python callables") |
| 30724 | (description "Redo provides various means to add seamless ability to |
| 30725 | retry to any Python callable.") |
| 30726 | (license license:mpl2.0)))) |
| 30727 | |
| 30728 | (define-public python-pyhull |
| 30729 | (package |
| 30730 | (name "python-pyhull") |
| 30731 | (version "2015.2.1") |
| 30732 | (source |
| 30733 | (origin |
| 30734 | (method url-fetch) |
| 30735 | (uri (pypi-uri "pyhull" version)) |
| 30736 | (sha256 |
| 30737 | (base32 |
| 30738 | "091sph52c4yk1jlm5w8xidxpzbia9r7s42bnb23q4m4b56ihmzyj")))) |
| 30739 | (build-system python-build-system) |
| 30740 | (propagated-inputs |
| 30741 | (list python-numpy)) |
| 30742 | (home-page "https://github.com/materialsvirtuallab/pyhull") |
| 30743 | (synopsis "Python wrapper to Qhull") |
| 30744 | (description |
| 30745 | "This package provides a Python wrapper to @uref{http://www.qhull.org/, |
| 30746 | Qhull} for the computation of the convex hull, Delaunay triangulation, and |
| 30747 | Voronoi diagram.") |
| 30748 | (license license:expat))) |
| 30749 | |
| 30750 | (define-public python-opcodes |
| 30751 | ;; There are no tags in this repo, but 'opcodes/__init__.py' specifies a |
| 30752 | ;; version number, which is what we use here. |
| 30753 | (let ((commit "0f7c7d63f5e13ce5a89d9acc3934f1b6e247ec1f")) |
| 30754 | (package |
| 30755 | (name "python-opcodes") |
| 30756 | (version "0.3.14") ;from 'opcodes/__init__.py' |
| 30757 | (home-page "https://github.com/Maratyszcza/Opcodes") |
| 30758 | (source (origin |
| 30759 | (method git-fetch) |
| 30760 | (uri (git-reference (url home-page) (commit commit))) |
| 30761 | (file-name (git-file-name name version)) |
| 30762 | (sha256 |
| 30763 | (base32 |
| 30764 | "1fvxkr83gfl9f0ikd2wl2lzazzya2qz1hk4yn2a0pq742brbwpys")))) |
| 30765 | (build-system python-build-system) |
| 30766 | (synopsis "Database of processor instructions and opcodes") |
| 30767 | (description |
| 30768 | "This project documents instruction sets in a format convenient for |
| 30769 | tools development. An instruction set is represented by three files: |
| 30770 | |
| 30771 | @itemize |
| 30772 | @item an XML file that describes instructions; |
| 30773 | @item an XSD file that describes the structure of the XML file; |
| 30774 | @item a Python module that reads the XML file and represents it as a set of |
| 30775 | Python objects; |
| 30776 | @end itemize |
| 30777 | |
| 30778 | It currently provides descriptions for most user-mode x86, x86_64, and k1om |
| 30779 | instructions up to AVX-512 and SHA (including 3dnow!+, XOP, FMA3, FMA4, TBM |
| 30780 | and BMI2).") |
| 30781 | (license license:bsd-2)))) |
| 30782 | |
| 30783 | (define-public python-peachpy |
| 30784 | ;; There is no tag in this repo. |
| 30785 | (let ((commit "913d74c35a6b1d330e90bfc055208ce5b06b35a0") |
| 30786 | (version "0.2.0") ;from 'peachpy/__init__.py' |
| 30787 | (revision "2")) |
| 30788 | (package |
| 30789 | (name "python-peachpy") |
| 30790 | (version (git-version version revision commit)) |
| 30791 | (home-page "https://github.com/Maratyszcza/PeachPy") |
| 30792 | (source (origin |
| 30793 | (method git-fetch) |
| 30794 | (uri (git-reference (url home-page) (commit commit))) |
| 30795 | (file-name (git-file-name name version)) |
| 30796 | (sha256 |
| 30797 | (base32 |
| 30798 | "1wnqxspxsacw4556q0b9fbw11nhrkgn6gs8g43jdnpa35f3z9kb6")) |
| 30799 | (patches (search-patches "python-peachpy-determinism.patch")))) |
| 30800 | (build-system python-build-system) |
| 30801 | (arguments |
| 30802 | '(#:phases (modify-phases %standard-phases |
| 30803 | (replace 'check |
| 30804 | (lambda* (#:key tests? #:allow-other-keys) |
| 30805 | (when tests? |
| 30806 | (invoke "nosetests"))))))) |
| 30807 | (native-inputs |
| 30808 | (list python-nose python-rednose python-setuptools)) |
| 30809 | (propagated-inputs |
| 30810 | (list python-six python-opcodes)) |
| 30811 | (synopsis "Efficient assembly code generation in Python") |
| 30812 | (description |
| 30813 | "PeachPy is a Python framework for writing high-performance assembly kernels. |
| 30814 | PeachPy aims to simplify writing optimized assembly kernels while preserving |
| 30815 | all optimization opportunities of traditional assembly. |
| 30816 | |
| 30817 | PeachPy can generate ELF, MS-COFF, Mach-O object files, and assembly listings |
| 30818 | for the Go language tool chain; it adapts to different calling conventions and |
| 30819 | application binary interfaces (ABIs); it takes care of register allocation; it |
| 30820 | supports x86_64 instructions up to AVX-512 and SHA.") |
| 30821 | (license license:bsd-2)))) |
| 30822 | |
| 30823 | (define-public python-sgmllib3k |
| 30824 | (let ((commit "799964676f35349ca2dd04503e34c2b3ad522c0d") |
| 30825 | (revision "1")) |
| 30826 | (package |
| 30827 | (name "python-sgmllib3k") |
| 30828 | (version |
| 30829 | (git-version "1.0.0" revision commit)) |
| 30830 | (source |
| 30831 | (origin |
| 30832 | (method git-fetch) |
| 30833 | (uri (git-reference |
| 30834 | (url "https://github.com/hsoft/sgmllib") |
| 30835 | (commit commit))) |
| 30836 | (file-name (git-file-name name version)) |
| 30837 | (sha256 |
| 30838 | (base32 |
| 30839 | "0bzf6pv85dzfxfysm6zbj8m40hp0xzr9h8qlk4hp3nmy88rznqvr")) |
| 30840 | (patches (search-patches "python-sgmllib3k-assertions.patch")))) |
| 30841 | (build-system python-build-system) |
| 30842 | (home-page "https://github.com/hsoft/sgmllib") |
| 30843 | (synopsis "Python 3 port of sgmllib") |
| 30844 | (description "This package provides an unmaintained port of sgmllib to |
| 30845 | Python 3. It is used to parse text files formatted in @acronym{SGML,Standard |
| 30846 | Generalized Mark-up Language}.") |
| 30847 | (license license:bsd-3)))) |
| 30848 | |
| 30849 | (define-public python-cwcwidth |
| 30850 | (package |
| 30851 | (name "python-cwcwidth") |
| 30852 | (version "0.1.4") |
| 30853 | (source |
| 30854 | (origin |
| 30855 | (method url-fetch) |
| 30856 | (uri (pypi-uri "cwcwidth" version)) |
| 30857 | (sha256 |
| 30858 | (base32 |
| 30859 | "1azrphpkcyggg38xvkfb9dpc4xmmm90p02kf8dkqd4d6j5w96aj8")))) |
| 30860 | (build-system python-build-system) |
| 30861 | (native-inputs |
| 30862 | (list python-cython python-pytest python-setuptools-scm python-toml |
| 30863 | python-wheel)) |
| 30864 | (home-page |
| 30865 | "https://github.com/sebastinas/cwcwidth") |
| 30866 | (synopsis "Python bindings for wc(s)width") |
| 30867 | (description "This package provides bindings for wcwidth and wcswidth |
| 30868 | functions defined in POSIX.1-2001 and POSIX.1-2008.") |
| 30869 | (license license:expat))) |
| 30870 | |
| 30871 | (define-public python-pyan3 |
| 30872 | (package |
| 30873 | (name "python-pyan3") |
| 30874 | (version "1.2.0") |
| 30875 | (source |
| 30876 | (origin |
| 30877 | ;; Source tarball on PyPI lacks tests. |
| 30878 | (method git-fetch) |
| 30879 | (uri (git-reference |
| 30880 | (url "https://github.com/Technologicat/pyan") |
| 30881 | (commit (string-append "v" version)))) |
| 30882 | (file-name (git-file-name name version)) |
| 30883 | (sha256 |
| 30884 | (base32 |
| 30885 | "1367x25rcy2y8f0x9c2dbxl2qgdln3arr7ddyzybz2c28g6jrv5z")) |
| 30886 | (patches (search-patches "python-pyan3-fix-positional-arguments.patch" |
| 30887 | "python-pyan3-fix-absolute-path-bug.patch")))) |
| 30888 | (build-system python-build-system) |
| 30889 | (arguments |
| 30890 | `(#:phases |
| 30891 | (modify-phases %standard-phases |
| 30892 | (replace 'check |
| 30893 | (lambda* (#:key tests? #:allow-other-keys) |
| 30894 | (when tests? |
| 30895 | ;; Extend PYTHONPATH so the built package will be found. |
| 30896 | (setenv "GUIX_PYTHONPATH" |
| 30897 | (string-append (getcwd) ":" (getenv "GUIX_PYTHONPATH"))) |
| 30898 | (invoke "pytest"))))))) |
| 30899 | (native-inputs |
| 30900 | (list python-pytest python-pytest-cov python-wheel)) |
| 30901 | (propagated-inputs |
| 30902 | (list python-jinja2)) |
| 30903 | (home-page "https://github.com/Technologicat/pyan") |
| 30904 | (synopsis "Offline call graph generator for Python 3") |
| 30905 | (description "Pyan takes one or more Python source files, performs |
| 30906 | a (rather superficial) static analysis, and constructs a directed graph of the |
| 30907 | objects in the combined source, and how they define or use each other. The |
| 30908 | graph can be output for rendering by GraphViz or yEd.") |
| 30909 | (license license:gpl2))) |
| 30910 | |
| 30911 | (define-public python-multipledispatch |
| 30912 | (package |
| 30913 | (name "python-multipledispatch") |
| 30914 | (version "0.6.0") |
| 30915 | (source |
| 30916 | (origin |
| 30917 | (method url-fetch) |
| 30918 | (uri (pypi-uri "multipledispatch" version)) |
| 30919 | (sha256 |
| 30920 | (base32 |
| 30921 | "1slblghfjg9fdi9zpd7gmrkvfbv20nrdgnrymcnbky8bzm8i9ax7")))) |
| 30922 | (build-system python-build-system) |
| 30923 | (propagated-inputs (list python-six)) |
| 30924 | (home-page "https://github.com/mrocklin/multipledispatch/") |
| 30925 | (synopsis "Multiple dispatch for Python based on pattern matching") |
| 30926 | (description "This library provides an efficient mechanism for overloading |
| 30927 | function implementations based on the types of the arguments.") |
| 30928 | (license license:bsd-3))) |
| 30929 | |
| 30930 | (define-public python-logical-unification |
| 30931 | (package |
| 30932 | (name "python-logical-unification") |
| 30933 | (version "0.4.3") |
| 30934 | (source |
| 30935 | (origin |
| 30936 | (method url-fetch) |
| 30937 | (uri (pypi-uri "logical-unification" version)) |
| 30938 | (sha256 |
| 30939 | (base32 |
| 30940 | "0j57953hi7kg2rl0163vzjzsvzdyjimnklhx6idf5vaqqf1d3p1j")))) |
| 30941 | (build-system python-build-system) |
| 30942 | (propagated-inputs |
| 30943 | (list python-multipledispatch python-toolz)) |
| 30944 | (home-page "https://github.com/pythological/unification/") |
| 30945 | (synopsis "Logical unification in Python for solving symbolic expressions") |
| 30946 | (description "This library provides algorithms and data types for solving |
| 30947 | symbolic expressions in pure Python using the technique of logical unification.") |
| 30948 | (license license:bsd-3))) |
| 30949 | |
| 30950 | (define-public python-cons |
| 30951 | (package |
| 30952 | (name "python-cons") |
| 30953 | (version "0.4.2") |
| 30954 | (source |
| 30955 | (origin |
| 30956 | (method url-fetch) |
| 30957 | (uri (pypi-uri "cons" version)) |
| 30958 | (sha256 |
| 30959 | (base32 |
| 30960 | "0w9giq196wps7mbm47c4shdzs5yvwvqajqzkim2p92i51sm5qgvm")))) |
| 30961 | (build-system python-build-system) |
| 30962 | (native-inputs |
| 30963 | (list python-pytest python-toml)) |
| 30964 | (propagated-inputs |
| 30965 | (list python-logical-unification)) |
| 30966 | (home-page "https://github.com/pythological/python-cons") |
| 30967 | (synopsis "Cons cell data structures and related algorithms for Python") |
| 30968 | (description |
| 30969 | "This library implements algorithms and data structures for Lisp-style |
| 30970 | cons cells in Python.") |
| 30971 | (license license:lgpl3+))) |
| 30972 | |
| 30973 | (define-public python-etuples |
| 30974 | (package |
| 30975 | (name "python-etuples") |
| 30976 | (version "0.3.3") |
| 30977 | (source |
| 30978 | (origin |
| 30979 | (method url-fetch) |
| 30980 | (uri (pypi-uri "etuples" version)) |
| 30981 | (sha256 |
| 30982 | (base32 |
| 30983 | "0jhfyp177v37rl0i7wqfx7q6s5qkz027hl283d1x8d0vm3w0zqc8")))) |
| 30984 | (build-system python-build-system) |
| 30985 | (propagated-inputs |
| 30986 | (list python-cons python-multipledispatch)) |
| 30987 | (home-page "https://github.com/pythological/etuples") |
| 30988 | (synopsis "S-expressions in Python") |
| 30989 | (description |
| 30990 | "This library implements eval'able S-expression in Python using tuple-like objects.") |
| 30991 | (license license:asl2.0))) |
| 30992 | |
| 30993 | (define-public python-minikanren |
| 30994 | (package |
| 30995 | (name "python-minikanren") |
| 30996 | (version "1.0.1") |
| 30997 | (source |
| 30998 | (origin |
| 30999 | (method git-fetch) |
| 31000 | (uri (git-reference |
| 31001 | (url "https://github.com/pythological/kanren") |
| 31002 | (commit (string-append "v" version)))) |
| 31003 | (file-name (git-file-name name version)) |
| 31004 | (sha256 |
| 31005 | (base32 "0g7wfj5hxalwz7k1301nsjqhjpzsif1bj6wjm2x2kavlm2ypv9jc")))) |
| 31006 | (build-system python-build-system) |
| 31007 | (arguments |
| 31008 | '(#:phases (modify-phases %standard-phases |
| 31009 | (replace 'check |
| 31010 | (lambda* (#:key tests? #:allow-other-keys) |
| 31011 | (when tests? |
| 31012 | (invoke "python" "-m" "pytest" "-v" "tests/" "kanren/")) |
| 31013 | #t))))) |
| 31014 | (native-inputs |
| 31015 | (list python-coveralls |
| 31016 | python-pydocstyle |
| 31017 | python-pytest |
| 31018 | python-pytest-cov |
| 31019 | python-pylint |
| 31020 | python-black |
| 31021 | python-sympy |
| 31022 | python-versioneer |
| 31023 | python-coverage)) |
| 31024 | (propagated-inputs |
| 31025 | (list python-toolz python-cons python-multipledispatch |
| 31026 | python-etuples python-logical-unification)) |
| 31027 | (home-page "https://github.com/pythological/kanren") |
| 31028 | (synopsis "Relational logic programming in pure Python") |
| 31029 | (description |
| 31030 | "The minikanren library provides an algorithmic core for computer algebra |
| 31031 | systems in Python.") |
| 31032 | (license license:bsd-3))) |
| 31033 | |
| 31034 | (define-public python-dotenv |
| 31035 | (package |
| 31036 | (name "python-dotenv") |
| 31037 | (version "0.20.0") |
| 31038 | (source |
| 31039 | (origin |
| 31040 | (method url-fetch) |
| 31041 | (uri (pypi-uri "python-dotenv" version)) |
| 31042 | (sha256 |
| 31043 | (base32 "13s9imfd0k4d7b1qy5wfqzw5vyj6rhmcrccsdz1l4g39b55b1qxp")))) |
| 31044 | (build-system python-build-system) |
| 31045 | (arguments |
| 31046 | `(#:phases |
| 31047 | (modify-phases %standard-phases |
| 31048 | (replace 'check |
| 31049 | (lambda* (#:key tests? inputs outputs #:allow-other-keys) |
| 31050 | (when tests? |
| 31051 | (add-installed-pythonpath inputs outputs) |
| 31052 | (setenv "PATH" (string-append (getenv "PATH") ":" |
| 31053 | (assoc-ref outputs "out") "/bin")) |
| 31054 | ;; Skip the ipython tests. |
| 31055 | (delete-file "tests/test_ipython.py") |
| 31056 | (invoke "python" "-m" "pytest"))))))) |
| 31057 | (propagated-inputs |
| 31058 | (list python-click)) |
| 31059 | (native-inputs |
| 31060 | (list python-mock python-pytest python-sh)) |
| 31061 | (home-page "https://saurabh-kumar.com/python-dotenv/") |
| 31062 | (synopsis "Setup environment variables according to .env files") |
| 31063 | (description |
| 31064 | "This package provides the @code{python-dotenv} Python module to read |
| 31065 | key-value pairs from a @code{.env} file and set them as environment variables.") |
| 31066 | (license license:bsd-3))) |
| 31067 | |
| 31068 | (define-public python-dotenv-0.13.0 |
| 31069 | (package (inherit python-dotenv) |
| 31070 | (name "python-dotenv") |
| 31071 | (version "0.13.0") |
| 31072 | (source |
| 31073 | (origin |
| 31074 | (method url-fetch) |
| 31075 | (uri (pypi-uri "python-dotenv" version)) |
| 31076 | (sha256 |
| 31077 | (base32 |
| 31078 | "0x5dagmfn31phrbxlwacw3s4w5vibv8fxqc62nqcdvdhjsy0k69v")))))) |
| 31079 | |
| 31080 | (define-public date2name |
| 31081 | (let ((commit "6c8f37277e8ec82aa50f90b8921422be30c4e798") |
| 31082 | (revision "1")) |
| 31083 | (package |
| 31084 | (name "date2name") |
| 31085 | (version (git-version "0.0" revision commit)) |
| 31086 | (source |
| 31087 | (origin |
| 31088 | (method git-fetch) |
| 31089 | (uri (git-reference |
| 31090 | (url "https://github.com/novoid/date2name") |
| 31091 | (commit commit))) |
| 31092 | (file-name (git-file-name name version)) |
| 31093 | (sha256 |
| 31094 | (base32 |
| 31095 | "1vq96b7n16d932nyfhnzwdwxff0zrqanidmwr4cxj2p67ad9y3w7")))) |
| 31096 | (build-system python-build-system) |
| 31097 | (arguments |
| 31098 | `(#:tests? #f ; no tests |
| 31099 | #:phases |
| 31100 | (modify-phases %standard-phases |
| 31101 | (delete 'build) |
| 31102 | (replace 'install |
| 31103 | (lambda* (#:key outputs #:allow-other-keys) |
| 31104 | (let* ((bindir (string-append (assoc-ref outputs "out") "/bin")) |
| 31105 | (binary (string-append bindir "/date2name"))) |
| 31106 | (mkdir-p bindir) |
| 31107 | (copy-file "date2name/__init__.py" binary) |
| 31108 | (chmod binary #o555))))))) |
| 31109 | (synopsis "Handling time-stamps and date-stamps in file names") |
| 31110 | (description "By default, date2name gets the modification time of matching |
| 31111 | files and directories and adds a datestamp in standard ISO 8601+ format |
| 31112 | YYYY-MM-DD at the beginning of the file or directory name.") |
| 31113 | (home-page "https://github.com/novoid/date2name") |
| 31114 | (license license:gpl3+)))) |
| 31115 | |
| 31116 | (define-public python-braintree |
| 31117 | (package |
| 31118 | (name "python-braintree") |
| 31119 | (version "4.12.0") |
| 31120 | (source |
| 31121 | (origin |
| 31122 | (method url-fetch) |
| 31123 | (uri (pypi-uri "braintree" version)) |
| 31124 | (sha256 |
| 31125 | (base32 "19kli85q18p80nsn8fm4ql6axpr7bllfqg5chv2ywhr8zr8bssll")))) |
| 31126 | (build-system python-build-system) |
| 31127 | (propagated-inputs |
| 31128 | (list python-requests)) |
| 31129 | (home-page |
| 31130 | "https://developers.braintreepayments.com/python/sdk/server/overview") |
| 31131 | (synopsis "Braintree Python Library") |
| 31132 | (description "The Braintree Python SDK provides integration access to the |
| 31133 | Braintree Gateway. Braintree is a US-based payments service provider.") |
| 31134 | (license license:expat))) |
| 31135 | |
| 31136 | (define-public python-markuppy |
| 31137 | (package |
| 31138 | (name "python-markuppy") |
| 31139 | (version "1.14") |
| 31140 | (source |
| 31141 | (origin |
| 31142 | (method url-fetch) |
| 31143 | (uri (pypi-uri "MarkupPy" version)) |
| 31144 | (sha256 |
| 31145 | (base32 "0pqdmpxbr8iq22b4css2gz5z6s01ddpzyj25x27kgbs2lp0f5phs")))) |
| 31146 | (build-system python-build-system) |
| 31147 | (home-page "https://github.com/tylerbakke/MarkupPy") |
| 31148 | (synopsis "Pythonic HTML/XML generator") |
| 31149 | (description "This Python module attempts to make it easier to generate |
| 31150 | HTML/XML from a Python program in an intuitive, lightweight, customizable and |
| 31151 | pythonic way.") |
| 31152 | (license license:expat))) |
| 31153 | |
| 31154 | (define-public python-tablib |
| 31155 | (package |
| 31156 | (name "python-tablib") |
| 31157 | (version "3.0.0") |
| 31158 | (source |
| 31159 | (origin |
| 31160 | (method url-fetch) |
| 31161 | (uri (pypi-uri "tablib" version)) |
| 31162 | (sha256 |
| 31163 | (base32 "03f1z6jq6rf67gwhbm9ma4rydm8h447a5nh5lcs5l8jg8l4aqg7q")))) |
| 31164 | (build-system python-build-system) |
| 31165 | (arguments |
| 31166 | '(#:phases |
| 31167 | (modify-phases %standard-phases |
| 31168 | (replace 'check |
| 31169 | (lambda* (#:key tests? #:allow-other-keys) |
| 31170 | (when tests? |
| 31171 | (setenv "GUIX_PYTHONPATH" |
| 31172 | (string-append (getcwd) "/build/lib:" |
| 31173 | (getenv "GUIX_PYTHONPATH"))) |
| 31174 | (invoke "pytest"))))))) |
| 31175 | (native-inputs |
| 31176 | (list python-pandas ;; required for test-suite |
| 31177 | python-pytest python-pytest-cov python-setuptools-scm)) |
| 31178 | (propagated-inputs |
| 31179 | (list python-markuppy |
| 31180 | python-odfpy |
| 31181 | python-openpyxl |
| 31182 | python-pyyaml |
| 31183 | python-tabulate |
| 31184 | python-xlrd |
| 31185 | python-xlwt)) |
| 31186 | (home-page "https://tablib.readthedocs.io") |
| 31187 | (synopsis "Format agnostic tabular data library") |
| 31188 | (description "@code{tablib} is a format-agnostic tabular dataset library, |
| 31189 | written in Python. Supported output formats are Excel (Sets + Books), |
| 31190 | JSON (Sets + Books), YAML (Sets + Books), HTML (Sets), Jira (Sets), |
| 31191 | TSV (Sets), ODS (Sets), CSV (Sets), and DBF (Sets). |
| 31192 | |
| 31193 | @code{tablib} also supports Pandas DataFrames (Sets). Anyhow, since pandas is |
| 31194 | quite huge, this Guix package doesn't depend on pandas. In case, just also |
| 31195 | install @code{python-pandas}.") |
| 31196 | (license license:expat))) |
| 31197 | |
| 31198 | (define-public python-csb43 |
| 31199 | (package |
| 31200 | (name "python-csb43") |
| 31201 | (version "0.9.1") |
| 31202 | (source |
| 31203 | (origin |
| 31204 | (method url-fetch) |
| 31205 | (uri (pypi-uri "csb43" version)) |
| 31206 | (sha256 |
| 31207 | (base32 "0r0csl9npncnkfafg3rg6xr38d1qr0sxvq7wn7mg9bq41hvvh1si")))) |
| 31208 | (build-system python-build-system) |
| 31209 | (native-inputs |
| 31210 | (list python-lxml)) |
| 31211 | (propagated-inputs |
| 31212 | (list python-pycountry python-pyyaml python-tablib)) |
| 31213 | (home-page "https://bitbucket.org/wmj/csb43") |
| 31214 | (synopsis "Tools for converting from the Spanish banks' format CSB norm |
| 31215 | 43 (CSB43)") |
| 31216 | (description "This package provides tools to convert files in the format |
| 31217 | used by multiple Spanish banks (standard 43 of the Spanish Banking Council |
| 31218 | [CSB43] / Spanish Banking Association [AEB43]) to other formats. |
| 31219 | |
| 31220 | Supported output formats are: OFX, HomeBank CSV, HTML, JSON, ODS (OpenDocument |
| 31221 | spreadsheet), CSV, TSV, XLS, XLSX (Microsoft Excel spreadsheet), and YAML.") |
| 31222 | (license license:lgpl3))) |
| 31223 | |
| 31224 | (define-public python-febelfin-coda |
| 31225 | (package |
| 31226 | (name "python-febelfin-coda") |
| 31227 | (version "0.2.0") |
| 31228 | (source |
| 31229 | (origin |
| 31230 | (method url-fetch) |
| 31231 | (uri (pypi-uri "febelfin-coda" version)) |
| 31232 | (sha256 |
| 31233 | (base32 "1isnf87gxlvfbmackv7b2c978vmnj7ij0v4svhyjl8pbb9hwjsvm")))) |
| 31234 | (build-system python-build-system) |
| 31235 | (home-page "https://coda.b2ck.com/") |
| 31236 | (synopsis "Module to parse Belgian CODA files") |
| 31237 | (description "This package provides a module to parse Coded statement of |
| 31238 | account (CODA) files as defined be the Belgian Febelfin bank standard.") |
| 31239 | (license license:bsd-3))) |
| 31240 | |
| 31241 | (define-public python-ofxparse |
| 31242 | (package |
| 31243 | (name "python-ofxparse") |
| 31244 | (version "0.21") |
| 31245 | (source |
| 31246 | (origin |
| 31247 | (method url-fetch) |
| 31248 | (uri (pypi-uri "ofxparse" version)) |
| 31249 | (sha256 |
| 31250 | (base32 "19y4sp5l9jqiqzzlbqdfiab42qx7d84n4xm4s7jfq397666vcyh5")))) |
| 31251 | (build-system python-build-system) |
| 31252 | (arguments |
| 31253 | '(#:phases |
| 31254 | (modify-phases %standard-phases |
| 31255 | (replace 'check |
| 31256 | (lambda* (#:key tests? #:allow-other-keys) |
| 31257 | (when tests? |
| 31258 | (invoke "nosetests" "-v"))))))) |
| 31259 | (native-inputs |
| 31260 | (list python-nose)) |
| 31261 | (propagated-inputs |
| 31262 | (list python-beautifulsoup4 python-lxml python-six)) |
| 31263 | (home-page "http://sites.google.com/site/ofxparse") |
| 31264 | (synopsis "Tools for working with the OFX (Open Financial Exchange) file |
| 31265 | format") |
| 31266 | (description "@code{ofxparse} is a parser for Open Financial |
| 31267 | Exchange (.ofx) format files. OFX files are available from almost any online |
| 31268 | banking site, so they work well if you want to pull together your finances |
| 31269 | from multiple sources. Online trading accounts also often provide account |
| 31270 | statements in OFX files.") |
| 31271 | (license license:expat))) |
| 31272 | |
| 31273 | (define-public python-rfc3339-validator |
| 31274 | (package |
| 31275 | (name "python-rfc3339-validator") |
| 31276 | (version "0.1.4") |
| 31277 | (source |
| 31278 | (origin |
| 31279 | (method url-fetch) |
| 31280 | (uri (pypi-uri "rfc3339_validator" version)) |
| 31281 | (sha256 |
| 31282 | (base32 "0srg0b89aikzinw72s433994k5gv5lfyarq1adhas11kz6yjm2hk")))) |
| 31283 | (build-system python-build-system) |
| 31284 | (native-inputs (list python-hypothesis |
| 31285 | python-pytest |
| 31286 | python-pytest-runner |
| 31287 | python-strict-rfc3339)) |
| 31288 | (propagated-inputs (list python-six)) |
| 31289 | (home-page "https://github.com/naimetti/rfc3339-validator") |
| 31290 | (synopsis "Python RFC3339 validator") |
| 31291 | (description "This package provides a pure Python RFC3339 validator.") |
| 31292 | (license license:expat))) |
| 31293 | |
| 31294 | (define-public python-strict-rfc3339 |
| 31295 | (package |
| 31296 | (name "python-strict-rfc3339") |
| 31297 | (version "0.7") |
| 31298 | (source |
| 31299 | (origin |
| 31300 | (method git-fetch) ;no tests in pypi release |
| 31301 | (uri (git-reference |
| 31302 | (url "https://github.com/danielrichman/strict-rfc3339") |
| 31303 | (commit (string-append "version-" version)))) |
| 31304 | (file-name (git-file-name name version)) |
| 31305 | (sha256 |
| 31306 | (base32 |
| 31307 | "0b12bh9v9gwkm89kxbidxw2z81lg8fx1v5fzgs313v1wgx6qb09p")))) |
| 31308 | (build-system python-build-system) |
| 31309 | (arguments |
| 31310 | (list |
| 31311 | #:phases |
| 31312 | #~(modify-phases %standard-phases |
| 31313 | (replace 'check |
| 31314 | (lambda* (#:key tests? #:allow-other-keys) |
| 31315 | (when tests? |
| 31316 | (invoke "pytest" "-vv" |
| 31317 | ;; The timestamp to local offset tests fail due to |
| 31318 | ;; missing timezone data (see: |
| 31319 | ;; https://github.com/danielrichman/strict-rfc3339/issues/9). |
| 31320 | "-k" "not LocalOffset"))))))) |
| 31321 | (native-inputs (list python-pytest)) |
| 31322 | (home-page "https://github.com/danielrichman/strict-rfc3339") |
| 31323 | (synopsis "RFC3339 procedures library") |
| 31324 | (description "The @code{strict_rfc3339} Python module provides strict, |
| 31325 | simple, lightweight RFC3339 procedures. It enables or aims to: |
| 31326 | @itemize |
| 31327 | @item Convert UNIX timestamps to and from RFC3339. |
| 31328 | @item Produce RFC3339 strings with a UTC offset (Z) or with the offset that |
| 31329 | the C time module reports is the local timezone offset. |
| 31330 | @item Be simple with minimal dependencies/libraries. |
| 31331 | @item Avoid timezones as much as possible. |
| 31332 | @item Be very strict and follow RFC3339. |
| 31333 | @end itemize") |
| 31334 | (license license:gpl3+))) |
| 31335 | |
| 31336 | (define-public python-stripe |
| 31337 | (package |
| 31338 | (name "python-stripe") |
| 31339 | (version "2.60.0") |
| 31340 | (source |
| 31341 | (origin |
| 31342 | (method url-fetch) |
| 31343 | (uri (pypi-uri "stripe" version)) |
| 31344 | (sha256 |
| 31345 | (base32 "0258lzh4qikhinfggnlfh5aklcvg7lrvl8giqrh0yf0l61wvfrl9")))) |
| 31346 | (build-system python-build-system) |
| 31347 | (arguments |
| 31348 | '(#:tests? #f)) ;; tests require network |
| 31349 | (propagated-inputs |
| 31350 | (list python-requests)) |
| 31351 | (home-page "https://github.com/stripe/stripe-python") |
| 31352 | (synopsis "Python bindings for the Stripe financial services' API") |
| 31353 | (description "This package provides access to the Stripe financial |
| 31354 | services' API. It includes a pre-defined set of classes for API resources |
| 31355 | that initialize themselves dynamically from API responses which makes it |
| 31356 | compatible with a wide range of versions of the Stripe API.") |
| 31357 | (license license:expat))) |
| 31358 | |
| 31359 | (define-public python-platformdirs |
| 31360 | (package |
| 31361 | (name "python-platformdirs") |
| 31362 | (version "2.4.1") |
| 31363 | (source |
| 31364 | (origin |
| 31365 | (method url-fetch) |
| 31366 | (uri (pypi-uri "platformdirs" version)) |
| 31367 | (sha256 |
| 31368 | (base32 "1njz0h4iky8iglrb85cd07hpa3lp1a2dfr934dj65hxwzvfk61j4")))) |
| 31369 | (build-system python-build-system) |
| 31370 | (arguments |
| 31371 | '(#:phases (modify-phases %standard-phases |
| 31372 | (replace 'check |
| 31373 | (lambda* (#:key tests? #:allow-other-keys) |
| 31374 | (when tests? |
| 31375 | (invoke "pytest" "-vv"))))))) |
| 31376 | (native-inputs |
| 31377 | (list python-appdirs python-pytest python-pytest-mock |
| 31378 | python-setuptools-scm)) |
| 31379 | (home-page "https://github.com/platformdirs/platformdirs") |
| 31380 | (synopsis "Determine the appropriate platform-specific directories") |
| 31381 | (description "When writing applications, finding the right location to |
| 31382 | store user data and configuration varies per platform. Even for |
| 31383 | single-platform apps, there may by plenty of nuances in figuring out the right |
| 31384 | location. This small Python module determines the appropriate |
| 31385 | platform-specific directories, e.g. the ``user data dir''.") |
| 31386 | (license license:expat))) |
| 31387 | |
| 31388 | (define-public python-json2html |
| 31389 | (package |
| 31390 | (name "python-json2html") |
| 31391 | (version "1.3.0") |
| 31392 | (source |
| 31393 | ;; There are no tests in the PyPI tarball. |
| 31394 | (origin |
| 31395 | (method git-fetch) |
| 31396 | (uri (git-reference |
| 31397 | (url "https://github.com/softvar/json2html") |
| 31398 | (commit (string-append "v" version)))) |
| 31399 | (file-name (git-file-name name version)) |
| 31400 | (sha256 |
| 31401 | (base32 "1ncypljnl5y8lsxy6ibcqy412kx3mzxl4ajg67568hvq98kv1sb3")))) |
| 31402 | (build-system python-build-system) |
| 31403 | (arguments |
| 31404 | '(#:phases |
| 31405 | (modify-phases %standard-phases |
| 31406 | (replace 'check |
| 31407 | (lambda* (#:key tests? inputs outputs #:allow-other-keys) |
| 31408 | (when tests? |
| 31409 | (add-installed-pythonpath inputs outputs) |
| 31410 | (invoke "python" "test/run_tests.py"))))))) |
| 31411 | (home-page "https://github.com/softvar/json2html") |
| 31412 | (synopsis "Convert JSON to HTML table") |
| 31413 | (description "@code{python-json2html} is a python module to convert JSON |
| 31414 | into a human readable HTML table representation.") |
| 31415 | (license license:expat))) |
| 31416 | |
| 31417 | (define-public python-face |
| 31418 | (package |
| 31419 | (name "python-face") |
| 31420 | (version "20.1.1") |
| 31421 | (source |
| 31422 | (origin |
| 31423 | (method url-fetch) |
| 31424 | (uri (pypi-uri "face" version)) |
| 31425 | (sha256 |
| 31426 | (base32 "0gpd9f0rmbv3rd2szi2na37l29fabkwazikjrxc6wca1lddwlnbx")))) |
| 31427 | (build-system python-build-system) |
| 31428 | (arguments |
| 31429 | '(#:phases |
| 31430 | (modify-phases %standard-phases |
| 31431 | (replace 'check |
| 31432 | (lambda* (#:key tests? inputs outputs #:allow-other-keys) |
| 31433 | (when tests? |
| 31434 | ;; Make installed package available for running the tests. |
| 31435 | (add-installed-pythonpath inputs outputs) |
| 31436 | (invoke "pytest" "-v"))))))) |
| 31437 | (native-inputs |
| 31438 | (list python-pytest)) |
| 31439 | (propagated-inputs |
| 31440 | (list python-boltons)) |
| 31441 | (home-page "https://github.com/mahmoud/face") |
| 31442 | (synopsis "CLI parsing and dispatching microframework") |
| 31443 | (description "@code{python-face} is a Pythonic microframework for building |
| 31444 | command-line applications. |
| 31445 | |
| 31446 | @itemize |
| 31447 | @item First-class subcommand support |
| 31448 | @item Powerful middleware architecture |
| 31449 | @item Separate parser layer |
| 31450 | @item Built-in flagfile support |
| 31451 | @item Handy testing utilities |
| 31452 | @item Themeable help display |
| 31453 | @end itemize") |
| 31454 | (license license:bsd-3))) |
| 31455 | |
| 31456 | (define-public python-glom |
| 31457 | (package |
| 31458 | (name "python-glom") |
| 31459 | (version "20.11.0") |
| 31460 | (source |
| 31461 | (origin |
| 31462 | (method url-fetch) |
| 31463 | (uri (pypi-uri "glom" version)) |
| 31464 | (sha256 |
| 31465 | (base32 "04pba09vdr3qjvqvy14g60fscdsi35chbbyqpczdp76cpir101al")))) |
| 31466 | (build-system python-build-system) |
| 31467 | (arguments |
| 31468 | '(#:phases |
| 31469 | (modify-phases %standard-phases |
| 31470 | (replace 'check |
| 31471 | (lambda* (#:key tests? inputs outputs #:allow-other-keys) |
| 31472 | (when tests? |
| 31473 | ;; Make installed executable available for running the tests. |
| 31474 | (setenv "PATH" |
| 31475 | (string-append (assoc-ref outputs "out") "/bin" |
| 31476 | ":" (getenv "PATH"))) |
| 31477 | (invoke "pytest" "-v"))))))) |
| 31478 | (native-inputs |
| 31479 | (list python-pytest python-pyyaml)) |
| 31480 | (propagated-inputs |
| 31481 | (list python-attrs python-boltons python-face)) |
| 31482 | (home-page "https://github.com/mahmoud/glom") |
| 31483 | (synopsis "Declaratively restructure data") |
| 31484 | (description "Real applications have real data, and real data |
| 31485 | nests---objects inside of objects inside of lists of objects. glom is a new |
| 31486 | and powerful way to handle real-world data, featuring: |
| 31487 | |
| 31488 | @itemize |
| 31489 | @item Path-based access to nested data structures |
| 31490 | @item Readable, meaningful error messages |
| 31491 | @item Declarative data transformation, using lightweight, Pythonic specifications |
| 31492 | @item Built-in data exploration and debugging features |
| 31493 | @end itemize") |
| 31494 | (license license:bsd-3))) |
| 31495 | |
| 31496 | (define-public python-box |
| 31497 | (package |
| 31498 | (name "python-box") |
| 31499 | (version "5.3.0") |
| 31500 | (source |
| 31501 | (origin |
| 31502 | (method url-fetch) |
| 31503 | (uri (pypi-uri "python-box" version)) |
| 31504 | (sha256 |
| 31505 | (base32 |
| 31506 | "0jhrdif57khx2hsw1q6a9x42knwcvq8ijgqyq1jmll6y6ifyzm2f")))) |
| 31507 | (build-system python-build-system) |
| 31508 | (propagated-inputs |
| 31509 | (list python-msgpack python-ruamel.yaml python-toml)) |
| 31510 | (home-page "https://github.com/cdgriffith/Box") |
| 31511 | (synopsis "Advanced Python dictionaries with dot notation access") |
| 31512 | (description |
| 31513 | "This package provides the @code{python-box} Python module. |
| 31514 | It implements advanced Python dictionaries with dot notation access.") |
| 31515 | (license license:expat))) |
| 31516 | |
| 31517 | (define-public python-fields |
| 31518 | (package |
| 31519 | (name "python-fields") |
| 31520 | (version "5.0.0") |
| 31521 | (source |
| 31522 | (origin |
| 31523 | (method url-fetch) |
| 31524 | (uri (pypi-uri "fields" version)) |
| 31525 | (sha256 |
| 31526 | (base32 "09sppvhhkhkv9zc9g994m53z15v92csxwcf42ggkaknlv01smm1i")))) |
| 31527 | (build-system python-build-system) |
| 31528 | (home-page "https://python-fields.readthedocs.io/") |
| 31529 | (synopsis "Python container class boilerplate killer") |
| 31530 | (description "Avoid repetetive boilerplate code in Python classes.") |
| 31531 | (license license:bsd-3))) |
| 31532 | |
| 31533 | (define-public python-aspectlib |
| 31534 | (package |
| 31535 | (name "python-aspectlib") |
| 31536 | (version "1.5.2") |
| 31537 | (source |
| 31538 | (origin |
| 31539 | (method url-fetch) |
| 31540 | (uri (pypi-uri "aspectlib" version)) |
| 31541 | (sha256 |
| 31542 | (base32 "1am4ycf292zbmgz791z393v63w7qrynf8q5p9db2wwf2qj1fqxfj")))) |
| 31543 | (build-system python-build-system) |
| 31544 | (propagated-inputs (list python-fields)) |
| 31545 | (home-page "https://github.com/ionelmc/python-aspectlib") |
| 31546 | (synopsis |
| 31547 | "Python monkey-patching and decorators") |
| 31548 | (description |
| 31549 | "This package provides an aspect-oriented programming, monkey-patch |
| 31550 | and decorators library. It is useful when changing behavior in existing |
| 31551 | code is desired. It includes tools for debugging and testing: |
| 31552 | simple mock/record and a complete capture/replay framework.") |
| 31553 | (license license:bsd-2))) |
| 31554 | |
| 31555 | (define-public python-ijson |
| 31556 | (package |
| 31557 | (name "python-ijson") |
| 31558 | (version "3.1.4") |
| 31559 | (source |
| 31560 | (origin |
| 31561 | (method url-fetch) |
| 31562 | (uri (pypi-uri "ijson" version)) |
| 31563 | (sha256 |
| 31564 | (base32 "1sp463ywj4jv5cp6hsv2qwiima30d09xsabxb2dyq5b17jp0640x")))) |
| 31565 | (arguments |
| 31566 | `(#:phases |
| 31567 | (modify-phases %standard-phases |
| 31568 | ;; the tests run by the default setup.py require yajl 1.x, |
| 31569 | ;; but we have 2.x. yajl 1.x support is going to be removed |
| 31570 | ;; anyway, so use pytest to avoid running the yajl1-related |
| 31571 | ;; tests. See: https://github.com/ICRAR/ijson/issues/55 |
| 31572 | (replace 'check |
| 31573 | (lambda* (#:key tests? #:allow-other-keys) |
| 31574 | (when tests? |
| 31575 | (invoke "pytest" "-vv"))))))) |
| 31576 | (inputs |
| 31577 | ;; yajl is optional, but compiling with it makes faster |
| 31578 | ;; backends available to ijson: |
| 31579 | (list yajl)) |
| 31580 | (native-inputs |
| 31581 | (list python-pytest)) |
| 31582 | (build-system python-build-system) |
| 31583 | (home-page "https://github.com/ICRAR/ijson") |
| 31584 | (synopsis "Iterative JSON parser with Python iterator interfaces") |
| 31585 | (description |
| 31586 | "Ijson is an iterative JSON parser with standard Python iterator |
| 31587 | interfaces.") |
| 31588 | (license license:bsd-3))) |
| 31589 | |
| 31590 | (define-public python-ordered-set |
| 31591 | (package |
| 31592 | (name "python-ordered-set") |
| 31593 | (version "4.1.0") |
| 31594 | (source |
| 31595 | (origin |
| 31596 | (method url-fetch) |
| 31597 | (uri (pypi-uri "ordered-set" version)) |
| 31598 | (sha256 |
| 31599 | (base32 "1a34fg3r3480nfm6652kyqql3lwixf8jirzdja9camvnr128wjk9")))) |
| 31600 | (build-system python-build-system) |
| 31601 | (arguments |
| 31602 | (list #:phases |
| 31603 | #~(modify-phases %standard-phases |
| 31604 | (replace 'check |
| 31605 | (lambda* (#:key tests? #:allow-other-keys) |
| 31606 | (when tests? |
| 31607 | (invoke "pytest" "-vv"))))))) |
| 31608 | (native-inputs (list python-cython python-pytest)) |
| 31609 | (home-page "https://github.com/simonpercivall/orderedset") |
| 31610 | (synopsis "Ordered Set implementation in Cython") |
| 31611 | (description "This library provides an @code{OrderedSet} data type that |
| 31612 | works like a regular set, but remembers insertion order. It supports the full |
| 31613 | Python @code{set} interface.") |
| 31614 | (license license:asl2.0))) |
| 31615 | |
| 31616 | (define-public python-orgparse |
| 31617 | (package |
| 31618 | (name "python-orgparse") |
| 31619 | (version "0.3.0") |
| 31620 | (source |
| 31621 | (origin |
| 31622 | (method url-fetch) |
| 31623 | (uri (pypi-uri "orgparse" version)) |
| 31624 | (sha256 |
| 31625 | (base32 "14iv4pg3rma9560plg0w943x04mr2cmrssda43y2d1x9acrd2n71")))) |
| 31626 | (build-system python-build-system) |
| 31627 | (arguments |
| 31628 | `(#:phases |
| 31629 | (modify-phases %standard-phases |
| 31630 | (replace 'check |
| 31631 | (lambda* (#:key tests? #:allow-other-keys) |
| 31632 | (when tests? |
| 31633 | (invoke "pytest" "-vv" "orgparse/tests"))))))) |
| 31634 | (native-inputs |
| 31635 | (list python-pytest python-setuptools-scm)) |
| 31636 | (home-page "https://github.com/karlicoss/orgparse") |
| 31637 | (synopsis "Emacs Org mode parser in Python") |
| 31638 | (description |
| 31639 | "This package is a Python module for reading Emacs Org mode files.") |
| 31640 | (license license:bsd-3))) |
| 31641 | |
| 31642 | (define-public dynaconf |
| 31643 | (package |
| 31644 | (name "dynaconf") |
| 31645 | (version "3.1.7") |
| 31646 | (source |
| 31647 | (origin |
| 31648 | (method git-fetch) |
| 31649 | (uri |
| 31650 | (git-reference |
| 31651 | (url "https://github.com/rochacbruno/dynaconf") |
| 31652 | (commit version))) |
| 31653 | (file-name (git-file-name name version)) |
| 31654 | (sha256 |
| 31655 | (base32 |
| 31656 | "0pjyjsdzairpn5vq8nzddhxwxmr18grn272nj31wcy2ipwdl3c3h")) |
| 31657 | (patches (search-patches "dynaconf-unvendor-deps.patch")) |
| 31658 | (modules '((guix build utils))) |
| 31659 | (snippet '(begin |
| 31660 | ;; Remove vendored dependencies |
| 31661 | (let ((unvendor '("click" "dotenv" "ruamel" "toml"))) |
| 31662 | (with-directory-excursion "dynaconf/vendor" |
| 31663 | (for-each delete-file-recursively unvendor)) |
| 31664 | (with-directory-excursion "dynaconf/vendor_src" |
| 31665 | (for-each delete-file-recursively unvendor))))))) |
| 31666 | (build-system python-build-system) |
| 31667 | (arguments |
| 31668 | `(#:phases |
| 31669 | (modify-phases %standard-phases |
| 31670 | (add-after 'unpack 'patch-for-click-8 |
| 31671 | (lambda _ |
| 31672 | (substitute* "dynaconf/cli.py" |
| 31673 | (("click.get_os_args\\()") ;deprecated from Click 8.1+ |
| 31674 | "sys.argv[1:]")))) |
| 31675 | (replace 'check |
| 31676 | (lambda* (#:key tests? outputs #:allow-other-keys) |
| 31677 | (when tests? |
| 31678 | ;; These tests depend on hvac and a live Vault process. |
| 31679 | (delete-file "tests/test_vault.py") |
| 31680 | (invoke "make" "test_only"))))))) |
| 31681 | (propagated-inputs |
| 31682 | (list python-click python-configobj python-dotenv-0.13.0 |
| 31683 | python-ruamel.yaml python-toml)) |
| 31684 | (native-inputs |
| 31685 | (list python-django python-flask python-pytest python-pytest-cov |
| 31686 | python-pytest-mock)) |
| 31687 | (home-page "https://www.dynaconf.com/") |
| 31688 | (synopsis "The dynamic configurator for your Python project") |
| 31689 | (description |
| 31690 | "This package provides @code{dynaconf} the dynamic configurator manager for |
| 31691 | your Python project. It provides features such as: |
| 31692 | |
| 31693 | @itemize |
| 31694 | @item Inspired by the @url{https://12factor.net/config, 12-factor application guide}; |
| 31695 | @item Settings management (default values, validation, parsing, templating); |
| 31696 | @item Protection of sensitive information (passwords/tokens); |
| 31697 | @item Multiple file formats @code{toml|yaml|json|ini|py} and also customizable |
| 31698 | loaders; |
| 31699 | @item Full support for environment variables to override existing settings |
| 31700 | (dotenv support included); |
| 31701 | @item Optional layered system for multiple environments @code{[default, |
| 31702 | development, testing, production]}; |
| 31703 | @item Built-in support for Hashicorp Vault and Redis as settings and secrets storage; |
| 31704 | @item Built-in extensions for Django and Flask web frameworks; |
| 31705 | @item CLI for common operations such as @code{init, list, write, validate, export}. |
| 31706 | @end itemize") |
| 31707 | (license license:expat))) |
| 31708 | |
| 31709 | (define-public python-pudb |
| 31710 | (package |
| 31711 | (name "python-pudb") |
| 31712 | (version "2022.1.3") |
| 31713 | (source (origin |
| 31714 | (method url-fetch) |
| 31715 | (uri (pypi-uri "pudb" version)) |
| 31716 | (sha256 |
| 31717 | (base32 |
| 31718 | "0jk61qgacvwy6zkz1f55jawax4ggb1aawy6w3wnfkzqrkvd3ms2q")))) |
| 31719 | (build-system python-build-system) |
| 31720 | (arguments |
| 31721 | `(#:phases (modify-phases %standard-phases |
| 31722 | (add-before 'check 'fix-read-only-home |
| 31723 | (lambda _ |
| 31724 | (setenv "HOME" "/tmp"))) |
| 31725 | (replace 'check |
| 31726 | (lambda* (#:key tests? #:allow-other-keys) |
| 31727 | (when tests? |
| 31728 | (invoke "pytest" "-vv"))))))) |
| 31729 | (native-inputs (list python-pytest python-pytest-mock python-numpy)) |
| 31730 | (propagated-inputs (list python-jedi python-pygments python-urwid |
| 31731 | python-urwid-readline)) |
| 31732 | (home-page "https://documen.tician.de/pudb/") |
| 31733 | (synopsis "Console-based Python debugger") |
| 31734 | (description |
| 31735 | "@command{pudb} is a full-screen, console-based Python debugger providing |
| 31736 | all the niceties of modern GUI-based debuggers in a more lightweight and |
| 31737 | keyboard-friendly package.") |
| 31738 | (license license:expat))) |
| 31739 | |
| 31740 | (define-public pudb |
| 31741 | (deprecated-package "pudb" python-pudb)) |
| 31742 | |
| 31743 | (define-public python-iwlib |
| 31744 | (package |
| 31745 | (name "python-iwlib") |
| 31746 | (version "1.7.0") |
| 31747 | (source |
| 31748 | (origin |
| 31749 | (method url-fetch) |
| 31750 | (uri (pypi-uri "iwlib" version)) |
| 31751 | (sha256 |
| 31752 | (base32 "18bd35wn7zclalpqbry42pf7bjrdggxkkw58mc0k1vkhg9czc1d8")))) |
| 31753 | (build-system python-build-system) |
| 31754 | (inputs |
| 31755 | (list wireless-tools)) |
| 31756 | (propagated-inputs (list python-cffi)) |
| 31757 | (home-page "https://github.com/nhoad/python-iwlib") |
| 31758 | (synopsis "Python module to interface with iwlib") |
| 31759 | (description |
| 31760 | "This package provides a Python interface to iw wireless tools.") |
| 31761 | (license license:gpl2))) |
| 31762 | |
| 31763 | (define-public python-pdoc3 |
| 31764 | (package |
| 31765 | (name "python-pdoc3") |
| 31766 | (version "0.10.0") |
| 31767 | (source |
| 31768 | (origin |
| 31769 | (method url-fetch) |
| 31770 | (uri (pypi-uri "pdoc3" version)) |
| 31771 | (sha256 |
| 31772 | (base32 "1dz4hw10ngidzg9cjvflc8nlrwrjbb3ijhmaw4w6f039p6yff8jz")) |
| 31773 | (patches |
| 31774 | (search-patches "python-pdoc3-tests.patch")))) |
| 31775 | (build-system python-build-system) |
| 31776 | (native-inputs |
| 31777 | (list python-setuptools-git python-setuptools-scm)) |
| 31778 | (propagated-inputs (list python-mako python-markdown)) |
| 31779 | (home-page "https://pdoc3.github.io/pdoc/") |
| 31780 | (synopsis "Auto-generate API documentation for Python projects") |
| 31781 | (description |
| 31782 | "This package auto-generates API documentation from Python projects |
| 31783 | already existing modules and objects docstrings.") |
| 31784 | (license license:agpl3+))) |
| 31785 | |
| 31786 | (define-public python-piexif |
| 31787 | (package |
| 31788 | (name "python-piexif") |
| 31789 | (version "1.1.3") |
| 31790 | (source |
| 31791 | (origin |
| 31792 | (method url-fetch) |
| 31793 | (uri (pypi-uri "piexif" version ".zip")) |
| 31794 | (sha256 |
| 31795 | (base32 "06sz58q4mrw472p8fbnq7wsj8zpi5js5r8phm2hiwfmz0v33bjw3")) |
| 31796 | (patches |
| 31797 | (search-patches "python-piexif-fix-tests-with-pillow-7.2.patch")))) |
| 31798 | (build-system python-build-system) |
| 31799 | (native-inputs |
| 31800 | (list unzip python-pillow)) |
| 31801 | (home-page "https://github.com/hMatoba/Piexif") |
| 31802 | (synopsis "Simplify exif manipulations with Python") |
| 31803 | (description "Piexif simplifies interacting with EXIF data in |
| 31804 | Python. It includes the tools necessary for extracting, creating, |
| 31805 | manipulating, converting and writing EXIF data to JPEG, WebP and TIFF files.") |
| 31806 | (license license:expat))) |
| 31807 | |
| 31808 | (define-public python-pyrss2gen |
| 31809 | (package |
| 31810 | (name "python-pyrss2gen") |
| 31811 | (version "1.1") |
| 31812 | (source |
| 31813 | (origin |
| 31814 | (method url-fetch) |
| 31815 | (uri (pypi-uri "PyRSS2Gen" version)) |
| 31816 | (sha256 |
| 31817 | (base32 "1rvf5jw9hknqz02rp1vg8abgb1lpa0bc65l7ylmlillqx7bswq3r")))) |
| 31818 | (build-system python-build-system) |
| 31819 | (home-page "http://dalkescientific.com/Python/PyRSS2Gen.html") |
| 31820 | (synopsis "Generate RSS 2.0 feeds using a Python data structure") |
| 31821 | (description "PyRSS2Gen is the interface to generate RSS 2.0 feeds. |
| 31822 | PyRSS2Gen builds the feed up by using a XML generator.") |
| 31823 | (license license:bsd-3))) |
| 31824 | |
| 31825 | (define-public python-yapsy |
| 31826 | (package |
| 31827 | (name "python-yapsy") |
| 31828 | (version "1.12.2") |
| 31829 | (source |
| 31830 | (origin |
| 31831 | (method url-fetch) |
| 31832 | (uri (pypi-uri "Yapsy" version)) |
| 31833 | (sha256 |
| 31834 | (base32 "12rznbnswfw0w7qfbvmmffr9r317gl1rqg36nijwzsklkjgks4fq")))) |
| 31835 | (build-system python-build-system) |
| 31836 | (home-page "https://yapsy.sourceforge.net") |
| 31837 | (synopsis "Simple plugin system for Python applications") |
| 31838 | (description "Yapsy, or Yet Another Plugin SYstem, is a small library |
| 31839 | implementing the core mechanisms needed to build a plugin system into a wider |
| 31840 | application. |
| 31841 | |
| 31842 | The main purpose is to depend only on Python's standard libraries and to |
| 31843 | implement only the basic functionalities needed to detect, load and keep track |
| 31844 | of several plugins.") |
| 31845 | (license license:bsd-3))) |
| 31846 | |
| 31847 | (define-public python-doit |
| 31848 | (package |
| 31849 | (name "python-doit") |
| 31850 | (version "0.34.0") |
| 31851 | (source |
| 31852 | (origin |
| 31853 | (method url-fetch) |
| 31854 | (uri (pypi-uri "doit" version)) |
| 31855 | (sha256 |
| 31856 | (base32 "0bf0m9n0hyjvjpv051zd26725j8jr23gyvc37v3kkadwbh8dxwcf")))) |
| 31857 | (build-system python-build-system) |
| 31858 | (propagated-inputs |
| 31859 | (list python-cloudpickle python-pyinotify)) |
| 31860 | (native-inputs |
| 31861 | (list python-pytest)) |
| 31862 | (home-page "https://pydoit.org") |
| 31863 | (synopsis "Automation tool to execute any kind of task in a build-tools |
| 31864 | fashion") |
| 31865 | (description "doit is an automation tool that brings the power of |
| 31866 | build-tools to execute any kind of task. |
| 31867 | |
| 31868 | A task describes some computation to be done (actions), and contains some |
| 31869 | extra meta-data. The actions can be external programs or Python functions. A |
| 31870 | single task may define more than one action.doit uses the task’s meta-data |
| 31871 | to: |
| 31872 | |
| 31873 | @itemize |
| 31874 | @item cache task results |
| 31875 | @item correct execution order |
| 31876 | @item parallel execution |
| 31877 | @item powerful dependency system |
| 31878 | @end itemize") |
| 31879 | (license license:expat))) |
| 31880 | |
| 31881 | (define-public python-phpserialize |
| 31882 | (package |
| 31883 | (name "python-phpserialize") |
| 31884 | (version "1.3") |
| 31885 | (source |
| 31886 | (origin |
| 31887 | (method url-fetch) |
| 31888 | (uri (pypi-uri "phpserialize" version)) |
| 31889 | (sha256 |
| 31890 | (base32 "19qgkb9z4zjbjxlpwh2w6pxkz2j3iymnydi69jl0jg905lqjsrxz")))) |
| 31891 | (build-system python-build-system) |
| 31892 | (arguments |
| 31893 | (list |
| 31894 | ;; tests missing in pypi archive, anhow they are quite simple and not worth any hassle |
| 31895 | #:tests? #f)) |
| 31896 | (home-page "http://github.com/mitsuhiko/phpserialize") |
| 31897 | (synopsis "Python port of the serialize and unserialize functions of PHP") |
| 31898 | (description |
| 31899 | "This package provides a port of the serialize and unserialize functions of PHP for Python") |
| 31900 | (license license:bsd-3))) |
| 31901 | |
| 31902 | (define-public nikola |
| 31903 | (package |
| 31904 | (name "nikola") |
| 31905 | (version "8.2.2") |
| 31906 | (source |
| 31907 | (origin |
| 31908 | (method url-fetch) |
| 31909 | (uri (pypi-uri "Nikola" version)) |
| 31910 | (sha256 |
| 31911 | (base32 "1h96y4sfypp2fbqxa8xrqch5f7r3srm2ly222k9w2n143h2spx4m")))) |
| 31912 | (build-system python-build-system) |
| 31913 | (propagated-inputs |
| 31914 | (list python-babel |
| 31915 | python-blinker |
| 31916 | python-dateutil |
| 31917 | python-docutils |
| 31918 | python-doit |
| 31919 | python-jinja2 ;; for themes |
| 31920 | python-lxml |
| 31921 | python-mako |
| 31922 | python-markdown |
| 31923 | python-natsort |
| 31924 | python-notebook ;; for ipynb |
| 31925 | python-phpserialize ;; for wordpress import |
| 31926 | python-piexif |
| 31927 | python-pillow |
| 31928 | python-pygments |
| 31929 | python-pyrss2gen |
| 31930 | python-requests |
| 31931 | python-ruamel.yaml ;; for YAML metadata |
| 31932 | python-toml |
| 31933 | python-unidecode |
| 31934 | python-yapsy)) |
| 31935 | (native-inputs |
| 31936 | (list python-coverage |
| 31937 | python-flake8 |
| 31938 | python-freezegun |
| 31939 | python-pytest |
| 31940 | python-pytest-cov)) |
| 31941 | (arguments |
| 31942 | (list |
| 31943 | #:phases |
| 31944 | #~(modify-phases %standard-phases |
| 31945 | (replace 'check |
| 31946 | (lambda* (#:key tests? #:allow-other-keys) |
| 31947 | (when tests? |
| 31948 | (invoke "pytest" "tests" "--no-cov" |
| 31949 | "-k" "not test_compiling_markdown[hilite]"))))))) |
| 31950 | (home-page "https://getnikola.com/") |
| 31951 | (synopsis "Modular, fast and simple static website and blog generator") |
| 31952 | (description "Nikola generates static websites and blogs. Out of the box, |
| 31953 | it supports reStructuredText, Markdown, IPython (Jupyter) Notebooks and HTML, |
| 31954 | and has plugins for many other formats.") |
| 31955 | (license license:expat))) |
| 31956 | |
| 31957 | (define-public nbss-upload |
| 31958 | (package |
| 31959 | (name "nbss-upload") |
| 31960 | (version "0.1") |
| 31961 | (source |
| 31962 | (origin |
| 31963 | (method url-fetch) |
| 31964 | (uri (pypi-uri "nbss-upload" version)) |
| 31965 | (sha256 |
| 31966 | (base32 "0jhyfm7w2ssknmh9789fmpnf79xr7sxbdcjwak6hfha6qparvk38")))) |
| 31967 | (build-system python-build-system) |
| 31968 | (propagated-inputs |
| 31969 | (list python-requests)) |
| 31970 | (arguments |
| 31971 | `(#:tests? #f)) ;no tests |
| 31972 | (home-page "https://github.com/notebook-sharing-space/nbss-upload") |
| 31973 | (synopsis "Upload notebooks to a notebooksharing.space instance") |
| 31974 | (description |
| 31975 | "Upload notebooks as @code{.ipynb}, @code{.rmd}, and @code{.html} to a |
| 31976 | notebooksharing.space instance.") |
| 31977 | (license license:bsd-3))) |
| 31978 | |
| 31979 | (define-public python-reedsolo |
| 31980 | (package |
| 31981 | (name "python-reedsolo") |
| 31982 | (version "1.5.4") |
| 31983 | (source |
| 31984 | (origin |
| 31985 | (method url-fetch) |
| 31986 | (uri (pypi-uri "reedsolo" version)) |
| 31987 | (sha256 |
| 31988 | (base32 "09q15ji9iac3nmmxrcdvz8ynldvvqanqy3hs6q3cp327hgf5rcmq")))) |
| 31989 | (build-system python-build-system) |
| 31990 | (home-page "https://github.com/tomerfiliba/reedsolomon") |
| 31991 | (synopsis "Pure-Python Reed Solomon encoder/decoder") |
| 31992 | (description "A pure-python universal errors-and-erasures Reed-Solomon |
| 31993 | Codec, based on the tutorial at Wikiversity. This is a burst-type |
| 31994 | implementation, so that it supports any Galois field higher than 2^3, |
| 31995 | but not binary streams.") |
| 31996 | (license license:public-domain))) |
| 31997 | |
| 31998 | (define-public python-esprima |
| 31999 | (package |
| 32000 | (name "python-esprima") |
| 32001 | (version "4.0.1") |
| 32002 | (source |
| 32003 | (origin |
| 32004 | (method url-fetch) |
| 32005 | (uri (pypi-uri "esprima" version)) |
| 32006 | (sha256 |
| 32007 | (base32 "1vi32g991lxcxzmncfiszh8m9bwkh4887szskkdi0a9wdn3imnq8")))) |
| 32008 | (build-system python-build-system) |
| 32009 | (home-page "https://github.com/Kronuz/esprima-python") |
| 32010 | (synopsis |
| 32011 | "ECMAScript parsing infrastructure for analysis in Python") |
| 32012 | (description |
| 32013 | "This package provides ECMAScript parsing infrastructure for |
| 32014 | multipurpose analysis in Python.") |
| 32015 | (license license:bsd-3))) |
| 32016 | |
| 32017 | (define-public python-types-dataclasses |
| 32018 | (package |
| 32019 | (name "python-types-dataclasses") |
| 32020 | (version "0.6.1") |
| 32021 | (source (origin |
| 32022 | (method url-fetch) |
| 32023 | (uri (pypi-uri "types-dataclasses" version)) |
| 32024 | (sha256 |
| 32025 | (base32 |
| 32026 | "1mq6qd365m8ml889zl5dxj9kncjv71iq1d1fvgj59y0ixlpm6s35")))) |
| 32027 | (build-system python-build-system) |
| 32028 | (home-page "https://github.com/python/typeshed") |
| 32029 | (synopsis "Typing stubs for dataclasses") |
| 32030 | (description |
| 32031 | "This package provides a collection of library stubs for Python, with |
| 32032 | static types.") |
| 32033 | (license license:asl2.0))) |
| 32034 | |
| 32035 | (define-public python-types-docutils |
| 32036 | (package |
| 32037 | (name "python-types-docutils") |
| 32038 | (version "0.18.2") |
| 32039 | (source |
| 32040 | (origin |
| 32041 | (method url-fetch) |
| 32042 | (uri (pypi-uri "types-docutils" version)) |
| 32043 | (sha256 |
| 32044 | (base32 "14ypv0x6fk1pjw0bvvr1lkb2g6dvq2pwvbd5b5pzjl6182fhmaim")))) |
| 32045 | (build-system python-build-system) |
| 32046 | (home-page "https://github.com/python/typeshed") |
| 32047 | (synopsis "Typing stubs for docutils") |
| 32048 | (description "This package provides a collection of library stubs for |
| 32049 | Python, with static types.") |
| 32050 | (license license:asl2.0))) |
| 32051 | |
| 32052 | (define-public python-types-requests |
| 32053 | (package |
| 32054 | (name "python-types-requests") |
| 32055 | (version "2.30.0.0") |
| 32056 | (source (origin |
| 32057 | (method url-fetch) |
| 32058 | (uri (pypi-uri "types-requests" version)) |
| 32059 | (sha256 |
| 32060 | (base32 |
| 32061 | "0cas3cjkhrvsz2rmqnhqiihy9j79wxi9xbih8jk0p9r48c2q3iyy")))) |
| 32062 | (build-system pyproject-build-system) |
| 32063 | (propagated-inputs (list python-types-urllib3)) |
| 32064 | (home-page "https://github.com/python/typeshed") |
| 32065 | (synopsis "Typing stubs for requests") |
| 32066 | (description "This package provides typing stubs for requests.") |
| 32067 | (license license:asl2.0))) |
| 32068 | |
| 32069 | (define-public python-types-setuptools |
| 32070 | (package |
| 32071 | (name "python-types-setuptools") |
| 32072 | (version "67.6.0.5") |
| 32073 | (source (origin |
| 32074 | (method url-fetch) |
| 32075 | (uri (pypi-uri "types-setuptools" version)) |
| 32076 | (sha256 |
| 32077 | (base32 |
| 32078 | "0qlrxgl4mz6hs8z4qnl91hsa8mqcfm6397s3s3j21imxqxk8ww1s")))) |
| 32079 | (build-system python-build-system) |
| 32080 | (home-page "https://github.com/python/typeshed") |
| 32081 | (synopsis "Typing stubs for setuptools") |
| 32082 | (description "This package provides typing stubs for setuptools.") |
| 32083 | (license license:asl2.0))) |
| 32084 | |
| 32085 | (define-public python-types-urllib3 |
| 32086 | (package |
| 32087 | (name "python-types-urllib3") |
| 32088 | (version "1.26.25.12") |
| 32089 | (source (origin |
| 32090 | (method url-fetch) |
| 32091 | (uri (pypi-uri "types-urllib3" version)) |
| 32092 | (sha256 |
| 32093 | (base32 |
| 32094 | "0zcipjdnbnc8ymk8mh9n5mypa0qr03rqj98lbmahldcdrrap6md1")))) |
| 32095 | (build-system pyproject-build-system) |
| 32096 | (home-page "https://github.com/python/typeshed") |
| 32097 | (synopsis "Typing stubs for urllib3") |
| 32098 | (description "This package provides typing stubs for urllib3.") |
| 32099 | (license license:asl2.0))) |
| 32100 | |
| 32101 | (define-public python-typeshed-client |
| 32102 | (package |
| 32103 | (name "python-typeshed-client") |
| 32104 | (version "2.3.0") |
| 32105 | (source (origin |
| 32106 | (method url-fetch) |
| 32107 | (uri (pypi-uri "typeshed_client" version)) |
| 32108 | (sha256 |
| 32109 | (base32 |
| 32110 | "1vdwp1jjg27b22qxgm49v21nb8vm1iki3bfsm0fnq2rsz5alfwz2")))) |
| 32111 | (build-system pyproject-build-system) |
| 32112 | (propagated-inputs (list python-importlib-resources)) |
| 32113 | (home-page "https://github.com/JelleZijlstra/typeshed_client") |
| 32114 | (synopsis "Library for accessing stubs in typeshed") |
| 32115 | (description |
| 32116 | "This package provides a library for accessing stubs in typeshed.") |
| 32117 | (license license:expat))) |
| 32118 | |
| 32119 | (define-public python-psycopg2-binary |
| 32120 | (package |
| 32121 | (name "python-psycopg2-binary") |
| 32122 | (version "2.9.3") |
| 32123 | (source (origin |
| 32124 | (method url-fetch) |
| 32125 | (uri (pypi-uri "psycopg2-binary" version)) |
| 32126 | (sha256 |
| 32127 | (base32 |
| 32128 | "0kpaxg3lg5wg5ww5kxmzi2z2d7arsx13ci915d8a2pf17lqza7bn")))) |
| 32129 | (build-system python-build-system) |
| 32130 | (inputs (list postgresql)) |
| 32131 | (arguments |
| 32132 | ;; Tests are disable because they need a live instance of PostgreSQL. |
| 32133 | '(#:tests? #f)) |
| 32134 | (home-page "https://psycopg.org/") |
| 32135 | (synopsis "PostgreSQL database adapter for Python") |
| 32136 | (description |
| 32137 | "Psycopg is a PostgreSQL database adapter for the Python programming |
| 32138 | language. Its main features are the complete implementation of the Python DB |
| 32139 | API 2.0 specification and the thread safety (several threads can share the |
| 32140 | same connection). It was designed for heavily multi-threaded applications |
| 32141 | that create and destroy lots of cursors and make a large number of concurrent |
| 32142 | @code{INSERT}s or @code{UPDATE}s. |
| 32143 | |
| 32144 | Psycopg 2 is mostly implemented in C as a libpq wrapper, resulting in |
| 32145 | being both efficient and secure. It features client-side and |
| 32146 | server-side cursors, asynchronous communication and notifications, |
| 32147 | @code{COPY TO}/@code{COPY FROM} support. Many Python types are supported |
| 32148 | out-of-the-box and adapted to matching PostgreSQL data types; |
| 32149 | adaptation can be extended and customized thanks to a flexible objects |
| 32150 | adaptation system. |
| 32151 | |
| 32152 | Psycopg 2 is both Unicode and Python 3 friendly.") |
| 32153 | (license license:lgpl3+))) |
| 32154 | |
| 32155 | (define-public python-pyfuse3 |
| 32156 | (package |
| 32157 | (name "python-pyfuse3") |
| 32158 | (version "3.2.1") |
| 32159 | (source |
| 32160 | (origin |
| 32161 | (method url-fetch) |
| 32162 | (uri (pypi-uri "pyfuse3" version)) |
| 32163 | (sha256 |
| 32164 | (base32 "0cvybynv9igssfa4l13q09gb6m7afmwk34wsbq8jk14sqpd4dl92")))) |
| 32165 | (build-system python-build-system) |
| 32166 | (native-inputs (list pkg-config)) |
| 32167 | (inputs (list fuse)) |
| 32168 | (propagated-inputs (list python-pytest-trio)) |
| 32169 | (home-page "https://github.com/libfuse/pyfuse3") |
| 32170 | (synopsis "Python bindings to FUSE 3") |
| 32171 | (description "This package provides Python 3 bindings for libfuse 3 with |
| 32172 | async I/O support.") |
| 32173 | (license license:gpl2+))) |
| 32174 | |
| 32175 | (define-public python-ansicolors |
| 32176 | (package |
| 32177 | (name "python-ansicolors") |
| 32178 | (version "1.1.8") |
| 32179 | (source |
| 32180 | (origin |
| 32181 | (method url-fetch) |
| 32182 | (uri (pypi-uri "ansicolors" version ".zip")) |
| 32183 | (sha256 |
| 32184 | (base32 "1q3jqglkq4z0f6nkkn8bswcwqg012i2grrc27kabr8286dg4zycr")))) |
| 32185 | (build-system python-build-system) |
| 32186 | (native-inputs |
| 32187 | (list python-tox |
| 32188 | python-pytest-cov |
| 32189 | unzip)) |
| 32190 | (home-page "https://github.com/jonathaneunice/colors/") |
| 32191 | (synopsis "ANSI colors for Python") |
| 32192 | (description |
| 32193 | "This package adds ANSI colors and decorations to your strings.") |
| 32194 | (license license:isc))) |
| 32195 | |
| 32196 | (define-public python-types-freezegun |
| 32197 | (package |
| 32198 | (name "python-types-freezegun") |
| 32199 | (version "1.1.8") |
| 32200 | (source |
| 32201 | (origin |
| 32202 | (method url-fetch) |
| 32203 | (uri (pypi-uri "types-freezegun" version)) |
| 32204 | (sha256 |
| 32205 | (base32 "08g926s8343zwq140zcfwly3qfgmahm7lp0vgb3ics549b2hifzl")))) |
| 32206 | (build-system python-build-system) |
| 32207 | (home-page "https://github.com/python/typeshed") |
| 32208 | (synopsis "Typing stubs for @code{freezegun}") |
| 32209 | (description "This package contains typing stubs for for @code{freezegun}, a |
| 32210 | very small subset the Python stubs contained in the complete @code{typeshed} |
| 32211 | collection.") |
| 32212 | (license license:asl2.0))) |
| 32213 | |
| 32214 | (define-public python-types-protobuf |
| 32215 | (package |
| 32216 | (name "python-types-protobuf") |
| 32217 | (version "3.20.1") |
| 32218 | (source (origin |
| 32219 | (method url-fetch) |
| 32220 | (uri (pypi-uri "types-protobuf" version)) |
| 32221 | (sha256 |
| 32222 | (base32 |
| 32223 | "000f8n6d4ilihiaf590k73rx3327jh8ima5q5dpxlwz3frj45qrn")))) |
| 32224 | (build-system python-build-system) |
| 32225 | (home-page "https://github.com/python/typeshed") |
| 32226 | (synopsis "Typing stubs for @code{protobuf}") |
| 32227 | (description "This package contains typing stubs for @code{protobuf}, a |
| 32228 | very small subset the Python stubs contained in the complete @code{typeshed} |
| 32229 | collection.") |
| 32230 | (license license:asl2.0))) |
| 32231 | |
| 32232 | (define-public python-types-pytz |
| 32233 | (package |
| 32234 | (name "python-types-pytz") |
| 32235 | (version "2021.3.6") |
| 32236 | (source |
| 32237 | (origin |
| 32238 | (method url-fetch) |
| 32239 | (uri (pypi-uri "types-pytz" version)) |
| 32240 | (sha256 |
| 32241 | (base32 "14yr5hg2ww8s4a0mz2bkd549fv8qgm538fnzxvqv92ld1pcpym3l")))) |
| 32242 | (build-system python-build-system) |
| 32243 | (home-page "https://github.com/python/typeshed") |
| 32244 | (synopsis "Typing stubs for pytz") |
| 32245 | (description "This package contains typing stubs for @code{pytz}, a very |
| 32246 | small subset the Python stubs contained in the complete @code{typeshed} |
| 32247 | collection.") |
| 32248 | (license license:asl2.0))) |
| 32249 | |
| 32250 | (define-public python-types-toml |
| 32251 | (package |
| 32252 | (name "python-types-toml") |
| 32253 | (version "0.10.5") |
| 32254 | (source |
| 32255 | (origin |
| 32256 | (method url-fetch) |
| 32257 | (uri (pypi-uri "types-toml" version)) |
| 32258 | (sha256 |
| 32259 | (base32 "10400bd3yv6rjfnq8galskkbpqz1sfx9sfgr5qwvw04270x4cjgr")))) |
| 32260 | (build-system python-build-system) |
| 32261 | (home-page "https://github.com/python/typeshed") |
| 32262 | (synopsis "Typing stubs for TOML") |
| 32263 | (description "This package contains typing stubs for TOML, a very small |
| 32264 | subset the Python stubs contained in the complete @code{typeshed} |
| 32265 | collection.") |
| 32266 | (license license:asl2.0))) |
| 32267 | |
| 32268 | (define-public python-types-ujson |
| 32269 | (package |
| 32270 | (name "python-types-ujson") |
| 32271 | (version "4.2.1") |
| 32272 | (source (origin |
| 32273 | (method url-fetch) |
| 32274 | (uri (pypi-uri "types-ujson" version)) |
| 32275 | (sha256 |
| 32276 | (base32 |
| 32277 | "0k9n9hsq4k2zaakdwbkcsvi7m8d3mv2y9yl6f171y58ld4qpcxcy")))) |
| 32278 | (build-system python-build-system) |
| 32279 | (home-page "https://github.com/python/typeshed") |
| 32280 | (synopsis "Typing stubs for ujson") |
| 32281 | (description |
| 32282 | "This is a PEP 561 type stub package for the ujson package. It can be |
| 32283 | used by type-checking tools like mypy, PyCharm, pytype etc. to check code that |
| 32284 | uses ujson.") |
| 32285 | (license license:asl2.0))) |
| 32286 | |
| 32287 | (define-public python-stltools |
| 32288 | (package |
| 32289 | (name "python-stltools") |
| 32290 | (version "2022.01.20") |
| 32291 | (source (origin |
| 32292 | (method git-fetch) |
| 32293 | (uri (git-reference |
| 32294 | (url "https://github.com/rsmith-nl/stltools") |
| 32295 | (commit version))) |
| 32296 | (file-name (git-file-name name version)) |
| 32297 | (sha256 |
| 32298 | (base32 |
| 32299 | "1k6dhszza4lpy46qffaqx5zr70ikfqqysbacy7zabnrvz09fd4rs")))) |
| 32300 | (build-system python-build-system) |
| 32301 | (arguments |
| 32302 | `(#:use-setuptools? #f |
| 32303 | #:phases |
| 32304 | (modify-phases %standard-phases |
| 32305 | (delete 'build) |
| 32306 | (replace 'install |
| 32307 | (lambda* (#:key inputs outputs #:allow-other-keys) |
| 32308 | (let ((moddir (string-append (site-packages inputs outputs) "/stltools")) |
| 32309 | (bindir (string-append (assoc-ref outputs "out") "/bin"))) |
| 32310 | (copy-recursively "stltools" moddir) |
| 32311 | (mkdir-p bindir) |
| 32312 | (for-each |
| 32313 | (lambda (script) |
| 32314 | (let ((source (string-append script ".py")) |
| 32315 | (target (string-append bindir "/" script))) |
| 32316 | (copy-file source target) |
| 32317 | (chmod target #o555))) |
| 32318 | '("stl2pov" "stl2ps" "stl2pdf" "stlinfo"))))) |
| 32319 | (replace 'check |
| 32320 | (lambda* (#:key tests? #:allow-other-keys) |
| 32321 | (when tests? |
| 32322 | (invoke "py.test" "-v"))))))) |
| 32323 | (propagated-inputs (list python-pycairo)) |
| 32324 | (native-inputs (list python-pytest)) |
| 32325 | (home-page "https://github.com/rsmith-nl/stltools") |
| 32326 | (synopsis "Python modules and scripts for handling STL files") |
| 32327 | (description "This package consists of Python modules and scripts for |
| 32328 | manipulating stereolithography (STL) files. It can convert STL files into |
| 32329 | POV-ray meshes, PDF and PostScript. The Python modules allow for reading and |
| 32330 | writing STL files. It supports both the text and binary forms of STL.") |
| 32331 | (license license:expat))) |
| 32332 | |
| 32333 | (define-public python-multipart |
| 32334 | (package |
| 32335 | (name "python-multipart") |
| 32336 | (version "0.0.5") |
| 32337 | (source (origin |
| 32338 | (method url-fetch) |
| 32339 | (uri (pypi-uri "python-multipart" version)) |
| 32340 | (sha256 |
| 32341 | (base32 |
| 32342 | "0hzshd665rl1bkwvaj9va4j3gs8nmb478fbvligx20663xhmzfzp")))) |
| 32343 | (build-system python-build-system) |
| 32344 | (propagated-inputs (list python-six)) |
| 32345 | (native-inputs (list python-pyyaml python-mock python-pytest-cov)) |
| 32346 | (arguments |
| 32347 | `(#:phases (modify-phases %standard-phases |
| 32348 | ;; There is a bug in the test_suit specification. |
| 32349 | (add-after 'unpack 'patch-test-suite |
| 32350 | (lambda _ |
| 32351 | ;; Make compatible with PyYAML 6. |
| 32352 | (substitute* "multipart/tests/test_multipart.py" |
| 32353 | (("yaml.load") |
| 32354 | "yaml.safe_load")) |
| 32355 | (substitute* "setup.py" |
| 32356 | (("test_suite = 'multipart.tests.suite'") |
| 32357 | "test_suite = 'multipart.tests.test_multipart.suite'")) |
| 32358 | ;; Needed by PyYAML 6.0. |
| 32359 | (substitute* "multipart/tests/test_multipart.py" |
| 32360 | (("yaml_data = yaml.load\\(f\\)") |
| 32361 | "yaml_data = yaml.load(f, Loader=yaml.SafeLoader)"))))))) |
| 32362 | (home-page "https://github.com/andrew-d/python-multipart") |
| 32363 | (synopsis "Streaming multipart parser for Python") |
| 32364 | (description |
| 32365 | "This package provides a streaming multipart parser for Python.") |
| 32366 | (license license:asl2.0))) |
| 32367 | |
| 32368 | (define-public python-aiopg |
| 32369 | (package |
| 32370 | (name "python-aiopg") |
| 32371 | (version "1.3.3") |
| 32372 | (source (origin |
| 32373 | (method url-fetch) |
| 32374 | (uri (pypi-uri "aiopg" version)) |
| 32375 | (sha256 |
| 32376 | (base32 |
| 32377 | "1mwmypsfzh8adjbyvf7kqv9h3k1kf5ykhi1g3ahw4wqdxaj6nz2l")))) |
| 32378 | (build-system python-build-system) |
| 32379 | (native-inputs (list python-sqlalchemy)) |
| 32380 | (propagated-inputs (list python-async-timeout python-psycopg2-binary)) |
| 32381 | (home-page "https://aiopg.readthedocs.io") |
| 32382 | (synopsis "Postgres integration with asyncio") |
| 32383 | (description |
| 32384 | "aiopg is a library for accessing a PostgreSQL |
| 32385 | database from the asyncio (PEP-3156/tulip) framework. It wraps |
| 32386 | asynchronous features of the Psycopg database driver.") |
| 32387 | (license license:bsd-3))) |
| 32388 | |
| 32389 | (define-public python-verspec |
| 32390 | (package |
| 32391 | (name "python-verspec") |
| 32392 | (version "0.1.0") |
| 32393 | (source (origin |
| 32394 | (method url-fetch) |
| 32395 | (uri (pypi-uri "verspec" version)) |
| 32396 | (sha256 |
| 32397 | (base32 |
| 32398 | "07n06wv85fm4vl1ird2mja0823js3x322wgs9gdnq1djjyk4ql64")))) |
| 32399 | (build-system python-build-system) |
| 32400 | (native-inputs (list python-coverage python-flake8 python-mypy |
| 32401 | python-pretend python-pytest)) |
| 32402 | (arguments |
| 32403 | `(#:phases (modify-phases %standard-phases |
| 32404 | (replace 'check |
| 32405 | (lambda* (#:key tests? inputs outputs #:allow-other-keys) |
| 32406 | (when tests? |
| 32407 | (add-installed-pythonpath inputs outputs) |
| 32408 | (invoke "touch" "test/__init__.py") |
| 32409 | (invoke "pytest"))))))) |
| 32410 | (home-page "https://github.com/jimporter/verspec") |
| 32411 | (synopsis "Flexible version handling for Python") |
| 32412 | (description |
| 32413 | "This Python library handles software versions and specifiers. It is |
| 32414 | adapted from the @code{packaging} package.") |
| 32415 | (license (list license:bsd-2 license:asl2.0)))) |
| 32416 | |
| 32417 | (define-public python-shtab |
| 32418 | (package |
| 32419 | (name "python-shtab") |
| 32420 | (version "1.5.3") |
| 32421 | (source |
| 32422 | (origin |
| 32423 | (method url-fetch) |
| 32424 | (uri (pypi-uri "shtab" version)) |
| 32425 | (sha256 |
| 32426 | (base32 "127mymfm7r0hddk2vknqq34fj6dirj6ip990i3g4isx0lsd7pnsc")))) |
| 32427 | (build-system python-build-system) |
| 32428 | (native-inputs |
| 32429 | (list bash |
| 32430 | python-pytest |
| 32431 | python-pytest-cov |
| 32432 | python-pytest-timeout |
| 32433 | python-setuptools-scm |
| 32434 | python-wheel)) |
| 32435 | (arguments |
| 32436 | `(#:phases |
| 32437 | (modify-phases %standard-phases |
| 32438 | (replace |
| 32439 | 'check |
| 32440 | (lambda* (#:key tests? inputs outputs #:allow-other-keys) |
| 32441 | (when tests? |
| 32442 | (add-installed-pythonpath inputs outputs) |
| 32443 | (invoke "pytest"))))))) |
| 32444 | (home-page "https://github.com/iterative/shtab") |
| 32445 | (synopsis "Automagic shell tab completion for Python CLI applications") |
| 32446 | (description |
| 32447 | "This package automatically generates shell tab completion scripts for |
| 32448 | Python CLI apps.") |
| 32449 | (license license:asl2.0))) |
| 32450 | |
| 32451 | (define-public python-style |
| 32452 | (package |
| 32453 | (name "python-style") |
| 32454 | (version "1.1.6") |
| 32455 | (source |
| 32456 | (origin |
| 32457 | (method url-fetch) |
| 32458 | (uri (pypi-uri "style" version)) |
| 32459 | (sha256 |
| 32460 | (base32 "1dcfb578v9mrwh92rgms87gql0gp4vgj6l9hpgyfg0wbd3rh3bfh")))) |
| 32461 | (build-system python-build-system) |
| 32462 | (home-page "https://github.com/lmittmann/style") |
| 32463 | (synopsis "Terminal string styling") |
| 32464 | (description |
| 32465 | "@code{python-style} is a simple terminal string styling package. Its API is |
| 32466 | a port of the chalk package for javascript.") |
| 32467 | (license license:expat))) |
| 32468 | |
| 32469 | (define-public python-sre-yield |
| 32470 | (package |
| 32471 | (name "python-sre-yield") |
| 32472 | (version "1.2") |
| 32473 | (source |
| 32474 | (origin |
| 32475 | (method url-fetch) |
| 32476 | (uri (pypi-uri "sre_yield" version)) |
| 32477 | (sha256 |
| 32478 | (base32 |
| 32479 | "12kv3mvdr22g2v9wfr5aabh1f58s817dbh8mrlfzxzxs7hm1lkz9")))) |
| 32480 | (build-system python-build-system) |
| 32481 | (native-inputs (list python-nose)) |
| 32482 | (home-page "https://github.com/google/sre_yield") |
| 32483 | (synopsis "Expands a regular expression to its possible matches") |
| 32484 | (description |
| 32485 | "The goal of sre_yield is to efficiently generate all values that can |
| 32486 | match a given regular expression, or count possible matches efficiently. It |
| 32487 | uses the parsed regular expression, so you get a much more accurate result |
| 32488 | than trying to just split strings.") |
| 32489 | (license license:asl2.0))) |
| 32490 | |
| 32491 | (define-public python-srsly |
| 32492 | (package |
| 32493 | (name "python-srsly") |
| 32494 | (version "2.4.7") |
| 32495 | (source (origin |
| 32496 | (method url-fetch) |
| 32497 | (uri (pypi-uri "srsly" version)) |
| 32498 | (sha256 |
| 32499 | (base32 |
| 32500 | "022x0djlkl6pgh9yrd4avlai1n6y4hxm9l1xnb6630kpi12wrhlk")))) |
| 32501 | (build-system pyproject-build-system) |
| 32502 | (arguments |
| 32503 | (list |
| 32504 | #:phases |
| 32505 | #~(modify-phases %standard-phases |
| 32506 | (add-before 'check 'build-extensions |
| 32507 | (lambda _ |
| 32508 | ;; Cython extensions have to be built before running the tests. |
| 32509 | (invoke "python" "setup.py" "build_ext" "--inplace")))))) |
| 32510 | (propagated-inputs (list python-catalogue)) |
| 32511 | (native-inputs |
| 32512 | (list python-cython |
| 32513 | python-pytest |
| 32514 | python-pytest-timeout |
| 32515 | python-mock |
| 32516 | python-numpy |
| 32517 | python-psutil)) |
| 32518 | (home-page "https://github.com/explosion/srsly") |
| 32519 | (synopsis "Serialization utilities for Python") |
| 32520 | (description "This package bundles some of the best Python serialization |
| 32521 | libraries into one standalone package, with a high-level API that makes it |
| 32522 | easy to write code that's correct across platforms and Pythons.") |
| 32523 | (license license:expat))) |
| 32524 | |
| 32525 | (define-public python-pyperf |
| 32526 | (package |
| 32527 | (name "python-pyperf") |
| 32528 | (version "2.3.1") |
| 32529 | (source |
| 32530 | (origin |
| 32531 | (method url-fetch) |
| 32532 | (uri (pypi-uri "pyperf" version)) |
| 32533 | (sha256 |
| 32534 | (base32 "189qf9wdbig0fk4n3bavx8acgdbay5lllfvw48jvbfaafb7y5hja")))) |
| 32535 | (build-system python-build-system) |
| 32536 | (arguments |
| 32537 | '(#:phases |
| 32538 | (modify-phases %standard-phases |
| 32539 | (add-after 'unpack 'fix-tests |
| 32540 | (lambda _ |
| 32541 | ;; Some of these tests fail with: |
| 32542 | ;; |
| 32543 | ;; ModuleNotFoundError: No module named 'pyperf' |
| 32544 | ;; |
| 32545 | ;; even when calling ‘add-installed-pythonpath’ in the ‘check’ |
| 32546 | ;; phase. |
| 32547 | (delete-file "pyperf/tests/test_examples.py"))) |
| 32548 | (replace 'check |
| 32549 | (lambda* (#:key tests? #:allow-other-keys) |
| 32550 | (when tests? |
| 32551 | ;; From tox.ini's ‘testenv.commands’. |
| 32552 | (invoke "python" "-bb" "-Wd" |
| 32553 | "-m" "unittest" "discover" |
| 32554 | "-s" "pyperf/tests/" "-v"))))))) |
| 32555 | (native-inputs |
| 32556 | (list python-psutil)) |
| 32557 | (home-page "https://github.com/psf/pyperf") |
| 32558 | (synopsis "Toolkit for running Python benchmarks") |
| 32559 | (description "The Python @code{pyperf} module is a toolkit for writing, |
| 32560 | running and analyzing benchmarks. It features a simple API that can: |
| 32561 | |
| 32562 | @itemize |
| 32563 | @item automatically calibrate a benchmark for a time budget; |
| 32564 | @item spawn multiple worker processes; |
| 32565 | @item compute the mean and standard deviation; |
| 32566 | @item detect if a benchmark result seems unstable; |
| 32567 | @item store benchmark results in JSON format; |
| 32568 | @item support multiple units: seconds, bytes and integer. |
| 32569 | @end itemize") |
| 32570 | (license license:expat))) |
| 32571 | |
| 32572 | (define-public python-pydispatcher |
| 32573 | (package |
| 32574 | (name "python-pydispatcher") |
| 32575 | (version "2.0.5") |
| 32576 | (source |
| 32577 | (origin |
| 32578 | (method url-fetch) |
| 32579 | (uri (pypi-uri "PyDispatcher" version)) |
| 32580 | (sha256 |
| 32581 | (base32 "1bswbmhlbqdxlgbxlb6xrlm4k253sg8nvpl1whgsys8p3fg0cw2m")))) |
| 32582 | (build-system python-build-system) |
| 32583 | (arguments |
| 32584 | `(#:phases |
| 32585 | (modify-phases %standard-phases |
| 32586 | (replace 'check |
| 32587 | (lambda* (#:key tests? #:allow-other-keys) |
| 32588 | (when tests? |
| 32589 | (invoke "pytest"))))))) |
| 32590 | (native-inputs (list python-pytest)) |
| 32591 | (home-page "https://pydispatcher.sourceforge.net") |
| 32592 | (synopsis "Multi-producer-multi-consumer signal dispatching mechanism") |
| 32593 | (description "PyDispatcher is an enhanced version of Patrick K. O’Brien’s |
| 32594 | original @code{dispatcher.py} module. It provides the Python programmer with |
| 32595 | a robust mechanism for event routing within various application contexts. |
| 32596 | |
| 32597 | Included in the package are the robustapply and saferef modules, which |
| 32598 | provide the ability to selectively apply arguments to callable objects |
| 32599 | and to reference instance methods using weak-references.") |
| 32600 | (license license:bsd-3))) |
| 32601 | |
| 32602 | (define-public python-pyee |
| 32603 | (package |
| 32604 | (name "python-pyee") |
| 32605 | (version "9.0.4") |
| 32606 | (source |
| 32607 | (origin |
| 32608 | (method url-fetch) |
| 32609 | (uri (pypi-uri "pyee" version)) |
| 32610 | (sha256 |
| 32611 | (base32 "0cjbxbqr9f8bn2h3ra69d550qj2r1hmsgrh5nx31ywmwia9c8w17")))) |
| 32612 | (build-system python-build-system) |
| 32613 | (propagated-inputs (list python-typing-extensions)) |
| 32614 | (native-inputs (list python-twisted python-trio)) |
| 32615 | (home-page "https://github.com/jfhbrook/pyee") |
| 32616 | (synopsis "Emit events with Python") |
| 32617 | (description |
| 32618 | "This package provides a port of node.js's EventEmitter to python. |
| 32619 | Additionally, it includes a number of subclasses useful for implementing async |
| 32620 | and threaded programming in python, such as async/await.") |
| 32621 | (license license:expat))) |
| 32622 | |
| 32623 | (define-public python-queuelib |
| 32624 | (package |
| 32625 | (name "python-queuelib") |
| 32626 | (version "1.6.2") |
| 32627 | (source |
| 32628 | (origin |
| 32629 | (method url-fetch) |
| 32630 | (uri (pypi-uri "queuelib" version)) |
| 32631 | (sha256 |
| 32632 | (base32 "1lpwq8wx3025i14y5h0hbald2ypbarf081pql6cqcak4y9kp482b")))) |
| 32633 | (build-system python-build-system) |
| 32634 | (native-inputs (list python-pytest)) |
| 32635 | (home-page "https://github.com/scrapy/queuelib") |
| 32636 | (synopsis |
| 32637 | "Collection of persistent (disk-based) and non-persistent (memory-based) queues") |
| 32638 | (description "Queuelib is a Python library that implements object |
| 32639 | collections which are stored in memory or persisted to disk, provide a |
| 32640 | simple API, and run fast. |
| 32641 | |
| 32642 | Queuelib provides collections for queues (FIFO), stacks (LIFO), queues |
| 32643 | sorted by priority and queues that are emptied in a round-robin |
| 32644 | fashion.") |
| 32645 | (license license:bsd-3))) |
| 32646 | |
| 32647 | (define-public python-posix-ipc |
| 32648 | (package |
| 32649 | (name "python-posix-ipc") |
| 32650 | (version "1.0.5") |
| 32651 | (source |
| 32652 | (origin |
| 32653 | ;; The source distributed on PyPI is prebuild. |
| 32654 | (method git-fetch) |
| 32655 | (uri (git-reference |
| 32656 | (url "https://github.com/osvenskan/posix_ipc") |
| 32657 | (commit (string-append "rel" version)))) |
| 32658 | (file-name (git-file-name name version)) |
| 32659 | (sha256 |
| 32660 | (base32 "17y4d0pmvp199c5hbs602ailhlh9f9zv89kmpbd8jhyl6rgaxsvs")))) |
| 32661 | (build-system python-build-system) |
| 32662 | (arguments |
| 32663 | (list #:phases |
| 32664 | #~(modify-phases %standard-phases |
| 32665 | (add-after 'unpack 'patch-cc-path |
| 32666 | (lambda _ |
| 32667 | (substitute* "prober.py" |
| 32668 | (("cmd = .cc") |
| 32669 | (string-append "cmd = \"" #$(cc-for-target))))))))) |
| 32670 | (home-page "https://semanchuk.com/philip/posix_ipc/") |
| 32671 | (synopsis "POSIX IPC primitives for Python") |
| 32672 | (description |
| 32673 | "This package provides POSIX IPC primitives - semaphores, shared memory and |
| 32674 | message queues for Python.") |
| 32675 | (license license:bsd-3))) ; BSD like Copyright (c) 2018, Philip Semanchuk |
| 32676 | |
| 32677 | (define-public python-itemadapter |
| 32678 | (package |
| 32679 | (name "python-itemadapter") |
| 32680 | (version "0.8.0") |
| 32681 | (source |
| 32682 | (origin |
| 32683 | (method url-fetch) |
| 32684 | (uri (pypi-uri "itemadapter" version)) |
| 32685 | (sha256 |
| 32686 | (base32 "1aa898gjgwy3axxfrgsh4kdvhp6n6wz3ccdishq0gh8azf2q8xbp")))) |
| 32687 | (build-system python-build-system) |
| 32688 | (home-page "https://github.com/scrapy/itemadapter") |
| 32689 | (synopsis "Common interface for data container classes") |
| 32690 | (description "The ItemAdapter class is a wrapper for data container |
| 32691 | objects, providing a common interface to handle objects of different |
| 32692 | types in an uniform manner, regardless of their underlying implementation. |
| 32693 | |
| 32694 | Currently supported types are: |
| 32695 | @itemize |
| 32696 | @item scrapy.item.Item |
| 32697 | @item dict |
| 32698 | @item dataclass-based classes |
| 32699 | @item attrs-based classes |
| 32700 | @item pydantic-based classes |
| 32701 | @end itemize |
| 32702 | |
| 32703 | Additionally, interaction with arbitrary types is supported by |
| 32704 | implementing a pre-defined interface.") |
| 32705 | (license license:bsd-3))) |
| 32706 | |
| 32707 | (define-public python-itemloaders |
| 32708 | (package |
| 32709 | (name "python-itemloaders") |
| 32710 | (version "1.1.0") |
| 32711 | (source |
| 32712 | (origin |
| 32713 | (method url-fetch) |
| 32714 | (uri (pypi-uri "itemloaders" version)) |
| 32715 | (sha256 |
| 32716 | (base32 "0j2aw4ipalj208594x80blpgkh1i63gqqa4nb67b823av9hirn11")))) |
| 32717 | (build-system pyproject-build-system) |
| 32718 | (native-inputs (list python-pytest)) |
| 32719 | (propagated-inputs |
| 32720 | (list python-itemadapter python-jmespath python-parsel python-w3lib)) |
| 32721 | (home-page "https://github.com/scrapy/itemloaders") |
| 32722 | (synopsis "Base library for scrapy's ItemLoader") |
| 32723 | (description "Itemloaders is a library that helps you collect data |
| 32724 | from HTML and XML sources. It comes in handy to extract data from web |
| 32725 | pages, as it supports data extraction using CSS and XPath Selectors. |
| 32726 | |
| 32727 | It’s specially useful when you need to standardize the data from many |
| 32728 | sources. For example, it allows you to have all your casting and |
| 32729 | parsing rules in a single place.") |
| 32730 | (license license:bsd-3))) |
| 32731 | |
| 32732 | (define-public python-iteround |
| 32733 | (package |
| 32734 | (name "python-iteround") |
| 32735 | (version "1.0.4") |
| 32736 | ;; PyPI only has wheels. |
| 32737 | (source (origin |
| 32738 | (method git-fetch) |
| 32739 | (uri (git-reference |
| 32740 | (url "https://github.com/cgdeboer/iteround") |
| 32741 | (commit (string-append "v" version)))) |
| 32742 | (file-name (git-file-name name version)) |
| 32743 | (sha256 |
| 32744 | (base32 "1irw4sqrsgpc0ibxdv1hlx0d0jr1fqs48bj6mpfylzqkag9ywlfj")))) |
| 32745 | (build-system pyproject-build-system) |
| 32746 | (native-inputs |
| 32747 | (list python-pytest)) |
| 32748 | (home-page "https://github.com/cgdeboer/iteround") |
| 32749 | (synopsis "Sum-safe rounding for Iterables") |
| 32750 | (description "Iteround is a standard library sum-safe rounding library for |
| 32751 | Python iterables (lists, tuples, dicts).") |
| 32752 | (license license:expat))) |
| 32753 | |
| 32754 | (define-public python-hypy-utils |
| 32755 | (package |
| 32756 | (name "python-hypy-utils") |
| 32757 | (version "1.0.6") |
| 32758 | (source (origin |
| 32759 | (method url-fetch) |
| 32760 | (uri (pypi-uri "hypy_utils" version)) |
| 32761 | (sha256 |
| 32762 | (base32 |
| 32763 | "05csk0x8ivavq88x457cq5hwjcdirfbkzj7bbg5qgnpnf2dxxhiw")))) |
| 32764 | (build-system python-build-system) |
| 32765 | (home-page "https://github.com/hykilpikonna/HyPyUtils") |
| 32766 | (synopsis "Python utility functions for HyDEV") |
| 32767 | (description "This module provides Python utility functions for modifying |
| 32768 | and setting the color of terminal output, via HyDEV.") |
| 32769 | (license license:expat))) |
| 32770 | |
| 32771 | (define-public python-mike |
| 32772 | (package |
| 32773 | (name "python-mike") |
| 32774 | (version "1.1.2") |
| 32775 | (source (origin |
| 32776 | (method url-fetch) |
| 32777 | (uri (pypi-uri "mike" version)) |
| 32778 | (sha256 |
| 32779 | (base32 |
| 32780 | "0yxp816x7s948xsd0fifvq9shg01xdxlifd9rzf5y2rd9iwz3hsn")))) |
| 32781 | (build-system python-build-system) |
| 32782 | (native-inputs |
| 32783 | (list python-coverage python-flake8 python-shtab)) |
| 32784 | (propagated-inputs |
| 32785 | (list python-jinja2 python-mkdocs python-pyyaml python-verspec)) |
| 32786 | (home-page "https://github.com/jimporter/mike") |
| 32787 | (synopsis "Manage multiple versions of MkDocs-powered documentation") |
| 32788 | (description |
| 32789 | "This package provides a Python utility to easily deploy multiple |
| 32790 | versions of MkDocs-powered docs to a Git branch. It is suitable for deploying |
| 32791 | to Github via gh-pages.") |
| 32792 | (license license:bsd-3))) |
| 32793 | |
| 32794 | (define-public python-arpeggio |
| 32795 | (package |
| 32796 | (name "python-arpeggio") |
| 32797 | (version "2.0.0") |
| 32798 | (source (origin |
| 32799 | (method url-fetch) |
| 32800 | (uri (pypi-uri "Arpeggio" version)) |
| 32801 | (sha256 |
| 32802 | (base32 |
| 32803 | "0ggdsck1wpladd5bh9drhkmm86bblgk2wagrhn3sdf4v04wkic6n")))) |
| 32804 | (build-system python-build-system) |
| 32805 | (native-inputs (list python-coverage |
| 32806 | python-coveralls |
| 32807 | python-flake8 |
| 32808 | python-mike |
| 32809 | python-mkdocs |
| 32810 | python-pytest |
| 32811 | python-pytest-runner |
| 32812 | python-twine |
| 32813 | python-wheel)) |
| 32814 | (home-page "https://github.com/textX/Arpeggio") |
| 32815 | (synopsis "Packrat parser interpreter for Python") |
| 32816 | (description |
| 32817 | "This Python library provides a recursive descent parser with backtracking |
| 32818 | and memoization (a.k.a. packrat parser). Arpeggio grammars are based on PEG |
| 32819 | formalism. Arpeggio's main use is a foundation for a toolchain for DSL |
| 32820 | development but it can be used for all sorts of general purpose parsing.") |
| 32821 | (license license:expat))) |
| 32822 | |
| 32823 | (define-public python-flatten-json |
| 32824 | (package |
| 32825 | (name "python-flatten-json") |
| 32826 | (version "0.1.13") |
| 32827 | (source |
| 32828 | (origin |
| 32829 | (method url-fetch) |
| 32830 | (uri (pypi-uri "flatten_json" version)) |
| 32831 | (sha256 |
| 32832 | (base32 "007m28gfs7pmz2rqqjxpial6skzw26hrfi8vrdy9agi9x0rj6dgf")))) |
| 32833 | (build-system python-build-system) |
| 32834 | (propagated-inputs (list python-six)) |
| 32835 | (home-page "https://github.com/amirziai/flatten") |
| 32836 | (synopsis "Flatten JSON objects") |
| 32837 | (description |
| 32838 | "The @code{flatten_json} Python library flattens the hierarchy in your |
| 32839 | object, which can be useful if you want to force your objects into a table.") |
| 32840 | (license license:expat))) |
| 32841 | |
| 32842 | (define-public python-deepdiff |
| 32843 | (package |
| 32844 | (name "python-deepdiff") |
| 32845 | (version "6.3.0") |
| 32846 | (source (origin |
| 32847 | (method url-fetch) |
| 32848 | (uri (pypi-uri "deepdiff" version)) |
| 32849 | (sha256 |
| 32850 | (base32 |
| 32851 | "0i5nnb3nppi2vgbhiakpxiagyhx7l1f50hzcl8fcgica4bkz2fva")))) |
| 32852 | (build-system pyproject-build-system) |
| 32853 | (propagated-inputs (list python-ordered-set)) |
| 32854 | (native-inputs |
| 32855 | (list python-click |
| 32856 | python-dateutil |
| 32857 | python-jsonpickle |
| 32858 | python-mock |
| 32859 | python-numpy |
| 32860 | python-pytest |
| 32861 | python-pyyaml)) |
| 32862 | (home-page "https://github.com/seperman/deepdiff") |
| 32863 | (synopsis "Deep difference and search of any Python object/data") |
| 32864 | (description |
| 32865 | "This package provides tools for computing deep differences and searching |
| 32866 | of any Python object/data. Recreate objects by adding adding deltas to each |
| 32867 | other.") |
| 32868 | (license license:expat))) |
| 32869 | |
| 32870 | (define-public python-deepmerge |
| 32871 | (package |
| 32872 | (name "python-deepmerge") |
| 32873 | (version "1.0.1") |
| 32874 | (source |
| 32875 | (origin |
| 32876 | (method url-fetch) |
| 32877 | (uri (pypi-uri "deepmerge" version)) |
| 32878 | (sha256 |
| 32879 | (base32 "06hagzg8ccmjzqvszdxb52jgx5il8a1jdz41n4dpkyyjsfg7fi2b")))) |
| 32880 | (build-system pyproject-build-system) |
| 32881 | (arguments |
| 32882 | (list |
| 32883 | #:phases |
| 32884 | #~(modify-phases %standard-phases |
| 32885 | (add-before 'build 'set-version |
| 32886 | (lambda _ |
| 32887 | (setenv "SETUPTOOLS_SCM_PRETEND_VERSION" #$version)))))) |
| 32888 | (native-inputs |
| 32889 | (list python-setuptools-scm |
| 32890 | python-pytest)) |
| 32891 | (home-page "https://deepmerge.readthedocs.io/en/latest/") |
| 32892 | (synopsis "Merge nested data structures") |
| 32893 | (description |
| 32894 | "The @code{deep-merge} Python library provides a toolset to deeply merge |
| 32895 | nested data structures in Python like lists and dictionaries.") |
| 32896 | (license license:expat))) |
| 32897 | |
| 32898 | (define-public python-murmurhash3 |
| 32899 | (package |
| 32900 | (name "python-murmurhash3") |
| 32901 | (version "2.3.5") |
| 32902 | (source (origin |
| 32903 | (method url-fetch) |
| 32904 | (uri (pypi-uri "murmurhash3" version)) |
| 32905 | (sha256 |
| 32906 | (base32 |
| 32907 | "1gdzys1212dx70byz07ipknbw1awbqskh6aznlkm85js8b8qfczm")))) |
| 32908 | (build-system python-build-system) |
| 32909 | (native-inputs (list python-cython python-pytest)) |
| 32910 | (inputs (list python)) |
| 32911 | (arguments |
| 32912 | (list #:modules |
| 32913 | '((ice-9 ftw) (ice-9 match) |
| 32914 | (guix build utils) |
| 32915 | (guix build python-build-system)) |
| 32916 | #:phases |
| 32917 | #~(modify-phases %standard-phases |
| 32918 | (add-after 'unpack 'set-source-file-times-to-1980 |
| 32919 | (lambda _ |
| 32920 | (let ((circa-1980 (* 10 366 24 60 60))) |
| 32921 | (ftw "." |
| 32922 | (lambda (file stat flag) |
| 32923 | (utime file circa-1980 circa-1980) #t)))))))) |
| 32924 | (home-page "https://github.com/veegee/mmh3") |
| 32925 | (synopsis "Python wrapper for MurmurHash (MurmurHash3)") |
| 32926 | (description |
| 32927 | "@code{murmurhash3} is a Python library for MurmurHash (MurmurHash3), a set |
| 32928 | of fast and robust hash functions. This library is a Python extension module |
| 32929 | written in C.") |
| 32930 | (license license:public-domain))) |
| 32931 | |
| 32932 | (define-public python-murmurhash |
| 32933 | (package |
| 32934 | (name "python-murmurhash") |
| 32935 | (version "1.0.7") |
| 32936 | (source (origin |
| 32937 | (method url-fetch) |
| 32938 | (uri (pypi-uri "murmurhash" version)) |
| 32939 | (sha256 |
| 32940 | (base32 |
| 32941 | "0vwkn98c703nvsigl2nz99rax2pafkx3djjfkgc49jiipmp3j2k3")))) |
| 32942 | (build-system python-build-system) |
| 32943 | (native-inputs (list python-cython python-pytest)) |
| 32944 | (inputs (list python python-murmurhash3)) |
| 32945 | (arguments |
| 32946 | (list #:modules |
| 32947 | '((ice-9 ftw) (ice-9 match) |
| 32948 | (guix build utils) |
| 32949 | (guix build python-build-system)) |
| 32950 | #:phases |
| 32951 | #~(modify-phases %standard-phases |
| 32952 | (add-after 'unpack 'set-source-file-times-to-1980 |
| 32953 | (lambda _ |
| 32954 | (let ((circa-1980 (* 10 366 24 60 60))) |
| 32955 | (ftw "." |
| 32956 | (lambda (file stat flag) |
| 32957 | (utime file circa-1980 circa-1980) #t)))))))) |
| 32958 | (home-page "https://github.com/explosion/murmurhash") |
| 32959 | (synopsis "Cython bindings for MurmurHash2") |
| 32960 | (description "This package provides Cython bindings for MurmurHash2.") |
| 32961 | (license license:expat))) |
| 32962 | |
| 32963 | ;; Scooby requires for its test suite a ‘pyvips’ package that is missing its |
| 32964 | ;; VIPS dependency. |
| 32965 | (define python-pyvips-for-python-scooby |
| 32966 | (package |
| 32967 | (inherit python-pyvips) |
| 32968 | (name "python-pyvips-for-python-scooby") |
| 32969 | (arguments |
| 32970 | (substitute-keyword-arguments (package-arguments python-pyvips) |
| 32971 | ((#:phases phases) |
| 32972 | #~(modify-phases #$phases |
| 32973 | (delete 'fix-paths) |
| 32974 | ;; The checks won't succeed without VIPS. |
| 32975 | (delete 'check) |
| 32976 | (delete 'sanity-check))))) |
| 32977 | (inputs |
| 32978 | (modify-inputs (package-inputs python-pyvips) |
| 32979 | (delete "vips"))) |
| 32980 | (synopsis "pyvips for Scooby's test suite"))) |
| 32981 | |
| 32982 | (define-public python-scooby |
| 32983 | (package |
| 32984 | (name "python-scooby") |
| 32985 | (version "0.5.12") |
| 32986 | (source |
| 32987 | ;; The PyPI tarball does not contain the tests. |
| 32988 | (origin |
| 32989 | (method git-fetch) |
| 32990 | (uri (git-reference |
| 32991 | (url "https://github.com/banesullivan/scooby") |
| 32992 | (commit (string-append "v" version)))) |
| 32993 | (file-name (git-file-name name version)) |
| 32994 | (sha256 |
| 32995 | (base32 "1gkpmz8wl3jg8ylf1na35308sznw2g9wx33zqlyq5i2gpy2ml9mw")))) |
| 32996 | (build-system python-build-system) |
| 32997 | (native-inputs |
| 32998 | (list python-beautifulsoup4 |
| 32999 | python-numpy |
| 33000 | python-pytest |
| 33001 | python-pytest-cov |
| 33002 | python-pyvips-for-python-scooby |
| 33003 | python-scipy)) |
| 33004 | (propagated-inputs |
| 33005 | (list python-psutil)) |
| 33006 | (arguments |
| 33007 | '(#:phases |
| 33008 | (modify-phases %standard-phases |
| 33009 | (add-after 'unpack 'fix-tests |
| 33010 | (lambda _ |
| 33011 | (substitute* "tests/test_scooby.py" |
| 33012 | ;; The test suite uses the no-version PyPI package |
| 33013 | ;; (https://pypi.org/project/no-version/), |
| 33014 | ;; but it doesn't seem worth packaging in Guix just for this. |
| 33015 | (("scooby\\.report\\.VERSION_NOT_FOUND") |
| 33016 | "scooby.report.MODULE_NOT_FOUND") |
| 33017 | (("^ +import no_version # noqa.*") "")))) |
| 33018 | (replace 'check |
| 33019 | (lambda* (#:key tests? #:allow-other-keys) |
| 33020 | (when tests? |
| 33021 | (invoke "pytest"))))))) |
| 33022 | (home-page "https://github.com/banesullivan/scooby") |
| 33023 | (synopsis "Report hardware information and Python package versions") |
| 33024 | (description |
| 33025 | "The Scooby package reports the following information about the currently |
| 33026 | running system: |
| 33027 | |
| 33028 | @itemize |
| 33029 | @item operating system name; |
| 33030 | @item hardware information including machine type (e.g., @samp{i386}, |
| 33031 | @samp{x86_64}, etc.), CPU count and total RAM; |
| 33032 | @item Python environment (e.g., Python, IPython, etc.); |
| 33033 | @item file system name; |
| 33034 | @item Python version; |
| 33035 | @item versions of specified Python packages. |
| 33036 | @end itemize |
| 33037 | |
| 33038 | It can generate reports as HTML tables or plain text lists. |
| 33039 | |
| 33040 | Scooby has no required dependencies, and only few optional dependencies.") |
| 33041 | (license license:expat))) |
| 33042 | |
| 33043 | (define-public python-cymem |
| 33044 | (package |
| 33045 | (name "python-cymem") |
| 33046 | (version "2.0.6") |
| 33047 | (source (origin |
| 33048 | (method url-fetch) |
| 33049 | (uri (pypi-uri "cymem" version)) |
| 33050 | (sha256 |
| 33051 | (base32 |
| 33052 | "0pkyy60zk9654sj991w111p1l0m8wvz36nslw96x6nb9h6sjb5qn")))) |
| 33053 | (build-system python-build-system) |
| 33054 | (native-inputs |
| 33055 | (list python-cython |
| 33056 | python-pytest)) |
| 33057 | (inputs |
| 33058 | (list python)) |
| 33059 | (arguments |
| 33060 | (list |
| 33061 | #:modules '((ice-9 ftw) |
| 33062 | (ice-9 match) |
| 33063 | (guix build utils) |
| 33064 | (guix build python-build-system)) |
| 33065 | #:phases |
| 33066 | #~(modify-phases %standard-phases |
| 33067 | (add-after 'unpack 'set-source-file-times-to-1980 |
| 33068 | ;; XXX One of the tests uses a ZIP library to pack up some of the |
| 33069 | ;; source tree, and fails with "ZIP does not support timestamps |
| 33070 | ;; before 1980". Work around this by setting the file times in the |
| 33071 | ;; source tree to sometime in early 1980. |
| 33072 | (lambda _ |
| 33073 | (let ((circa-1980 (* 10 366 24 60 60))) |
| 33074 | (ftw "." (lambda (file stat flag) |
| 33075 | (utime file circa-1980 circa-1980) |
| 33076 | #t)))))))) |
| 33077 | (home-page "https://github.com/explosion/cymem") |
| 33078 | (synopsis "Cython memory pool for RAII-style memory management") |
| 33079 | (description |
| 33080 | "Cymem provides two small memory-management helpers for Cython. They make it |
| 33081 | easy to tie memory to a Python object's life-cycle, so that the memory is freed |
| 33082 | when the object is garbage collected.") |
| 33083 | (license license:expat))) |
| 33084 | |
| 33085 | (define-public python-preshed |
| 33086 | (package |
| 33087 | (name "python-preshed") |
| 33088 | (version "3.0.6") |
| 33089 | (source (origin |
| 33090 | (method url-fetch) |
| 33091 | (uri (pypi-uri "preshed" version)) |
| 33092 | (sha256 |
| 33093 | (base32 |
| 33094 | "0akpydd23xqxx9d04drsnw9140rb3cv07r1zpzqz5wm0lf47afzv")))) |
| 33095 | (build-system python-build-system) |
| 33096 | (native-inputs (list python-cython python-cymem python-pytest)) |
| 33097 | (inputs (list python python-cymem python-murmurhash)) |
| 33098 | (arguments |
| 33099 | (list #:modules |
| 33100 | '((ice-9 ftw) (ice-9 match) |
| 33101 | (guix build utils) |
| 33102 | (guix build python-build-system)) |
| 33103 | #:phases |
| 33104 | #~(modify-phases %standard-phases |
| 33105 | (add-after 'unpack 'set-source-file-times-to-1980 |
| 33106 | (lambda _ |
| 33107 | (let ((circa-1980 (* 10 366 24 60 60))) |
| 33108 | (ftw "." |
| 33109 | (lambda (file stat flag) |
| 33110 | (utime file circa-1980 circa-1980) #t)))))))) |
| 33111 | (home-page "https://github.com/explosion/preshed") |
| 33112 | (synopsis "Cython hash tables that assume keys are pre-hashed") |
| 33113 | (description |
| 33114 | "Simple but high performance Cython hash table mapping pre-randomized keys |
| 33115 | to void* values.") |
| 33116 | (license license:expat))) |
| 33117 | |
| 33118 | (define-public python-catalogue |
| 33119 | (package |
| 33120 | (name "python-catalogue") |
| 33121 | (version "2.0.7") |
| 33122 | (source (origin |
| 33123 | (method url-fetch) |
| 33124 | (uri (pypi-uri "catalogue" version)) |
| 33125 | (sha256 |
| 33126 | (base32 |
| 33127 | "0srdxiil2xys8q1gpc1nvzhvis3a33d8a7amk2i1rlpbg6p36pak")))) |
| 33128 | (build-system python-build-system) |
| 33129 | (native-inputs (list python-pytest)) |
| 33130 | (inputs (list python python-zipp python-typing-extensions python-mypy)) |
| 33131 | (home-page "https://github.com/explosion/catalogue") |
| 33132 | (synopsis "Lightweight function registries for your library") |
| 33133 | (description |
| 33134 | "\"catalogue\" is a tiny, zero-dependencies library that |
| 33135 | makes it easy to add function (or object) registries to your code. Function |
| 33136 | registries are helpful when you have objects that need to be both easily |
| 33137 | serializable and fully customizable. Instead of passing a function into your |
| 33138 | object, you pass in an identifier name, which the object can use to lookup the |
| 33139 | function from the registry. This makes the object easy to serialize, because the |
| 33140 | name is a simple string. If you instead saved the function, you'd have to use |
| 33141 | Pickle for serialization, which has many drawbacks.") |
| 33142 | (license license:expat))) |
| 33143 | |
| 33144 | (define-public python-wasabi |
| 33145 | (package |
| 33146 | (name "python-wasabi") |
| 33147 | (version "0.9.1") |
| 33148 | (source (origin |
| 33149 | (method url-fetch) |
| 33150 | (uri (pypi-uri "wasabi" version)) |
| 33151 | (sha256 |
| 33152 | (base32 |
| 33153 | "1kwqfalq7qxs9f7xb2m055g01qpbznyzxl7sjnzjdvvhkczg39md")))) |
| 33154 | (build-system python-build-system) |
| 33155 | (native-inputs (list python-pytest)) |
| 33156 | (home-page "https://github.com/ines/wasabi") |
| 33157 | (synopsis "Console printing and formatting toolkit") |
| 33158 | (description |
| 33159 | "This package provides a lightweight console printing and formatting |
| 33160 | toolkit for Python.") |
| 33161 | (license license:expat))) |
| 33162 | |
| 33163 | (define-public python-srt |
| 33164 | (package |
| 33165 | (name "python-srt") |
| 33166 | (version "3.5.2") |
| 33167 | (source (origin |
| 33168 | (method url-fetch) |
| 33169 | (uri (pypi-uri "srt" version)) |
| 33170 | (sha256 |
| 33171 | (base32 |
| 33172 | "0l24710spxarijmv3h7iicvx0lv6m3d4xg77nd9kyv8jwifav93s")))) |
| 33173 | (build-system python-build-system) |
| 33174 | (home-page "https://github.com/cdown/srt") |
| 33175 | (synopsis "SRT parsing library") |
| 33176 | (description |
| 33177 | "This package provides a Python library for parsing, modifying, and |
| 33178 | composing subtitles in the SRT file format.") |
| 33179 | (license license:expat))) |
| 33180 | |
| 33181 | (define-public python-gatt |
| 33182 | (package |
| 33183 | (name "python-gatt") |
| 33184 | (version "0.2.7") |
| 33185 | (source (origin |
| 33186 | (method url-fetch) |
| 33187 | (uri (pypi-uri "gatt" version)) |
| 33188 | (sha256 |
| 33189 | (base32 |
| 33190 | "0fjf066jixk30fr8xwfalwfnhqpr56yv0cccyypnx2qp9bi9svb2")))) |
| 33191 | (propagated-inputs (list python-dbus python-pygobject)) |
| 33192 | (build-system python-build-system) |
| 33193 | (home-page "https://github.com/getsenic/gatt-python") |
| 33194 | (synopsis "Bluetooth GATT SDK for Python") |
| 33195 | (description "The Bluetooth @acronym{GATT, Generic ATTribute Profile} |
| 33196 | @acronym{SDK, Software Development Kit} for Python helps you implement and |
| 33197 | communicate with any Bluetooth Low Energy device that has a GATT |
| 33198 | profile. It supports: |
| 33199 | |
| 33200 | @itemize @bullet |
| 33201 | @item Discovering nearby Bluetooth Low Energy devices |
| 33202 | @item Connecting and disconnecting devices |
| 33203 | @item Implementing your custom GATT profile |
| 33204 | @item Accessing all GATT services |
| 33205 | @item Accessing all GATT characteristics |
| 33206 | @item Reading characteristic values |
| 33207 | @item Writing characteristic values |
| 33208 | @item Subscribing for characteristic value change notifications |
| 33209 | @end itemize |
| 33210 | |
| 33211 | Currently, Linux is the only platform supported by this library.") |
| 33212 | (license license:expat))) |
| 33213 | |
| 33214 | (define-public python-clrprint |
| 33215 | (package |
| 33216 | (name "python-clrprint") |
| 33217 | (version "2.0.1") |
| 33218 | (source (origin |
| 33219 | (method url-fetch) |
| 33220 | (uri (pypi-uri "clrprint" version)) |
| 33221 | (sha256 |
| 33222 | (base32 |
| 33223 | "0xfn8d1by2w7pjiji887qljk1avn4fylbnz1mj28gysm5g0zvy43")))) |
| 33224 | (build-system python-build-system) |
| 33225 | (arguments '(#:tests? #f)) ;there are no tests |
| 33226 | (propagated-inputs (list python-colorama python-termcolor)) |
| 33227 | (home-page "https://github.com/AbhijithAJ/clrprint") |
| 33228 | (synopsis "Print colorful output in the terminal") |
| 33229 | (description "@code{clrprint} is developed to print colorful output in the |
| 33230 | terminal. It has red, blue, green, yellow, purple and black/white (default) |
| 33231 | colors.") |
| 33232 | (license license:expat))) |
| 33233 | |
| 33234 | (define-public python-musical-scales |
| 33235 | (package |
| 33236 | (name "python-musical-scales") |
| 33237 | (version "1.0.1") |
| 33238 | (source (origin |
| 33239 | (method url-fetch) |
| 33240 | (uri (pypi-uri "musical-scales" version)) |
| 33241 | (sha256 |
| 33242 | (base32 |
| 33243 | "1ckn8n37i7b65h0i385ycn0w8sg9na0iabz0kmhxxc1wj0hddkw9")))) |
| 33244 | (build-system python-build-system) |
| 33245 | (native-inputs (list python-wheel)) |
| 33246 | (home-page "https://github.com/hmillerbakewell/musical-scale") |
| 33247 | (synopsis "Retrieve a scale based on a given mode and starting note") |
| 33248 | (description |
| 33249 | "Retrieve a scale based on a given mode and starting note. |
| 33250 | Information about these scales can be |
| 33251 | @url{https://en.wikipedia.org/wiki/List_of_musical_scales_and_modes, found on |
| 33252 | Wikipedia}.") |
| 33253 | (license license:expat))) |
| 33254 | |
| 33255 | (define-public python-langcodes |
| 33256 | (package |
| 33257 | (name "python-langcodes") |
| 33258 | (version "3.3.0") |
| 33259 | (source (origin |
| 33260 | (method url-fetch) |
| 33261 | (uri (pypi-uri "langcodes" version)) |
| 33262 | (sha256 |
| 33263 | (base32 |
| 33264 | "1xkyh3qdcigb18qiimbwl2669y22hhdmd89mqcd270c7lbahfkbr")))) |
| 33265 | (build-system python-build-system) |
| 33266 | (native-inputs (list python-pytest)) |
| 33267 | (home-page "https://github.com/rspeer/langcodes") |
| 33268 | (synopsis "Python library for working with language codes") |
| 33269 | (description |
| 33270 | "This package provides a Python library for working with and comparing |
| 33271 | language codes. |
| 33272 | |
| 33273 | @code{python-langcodes} implements @url{http://tools.ietf.org/html/bcp47, BCP |
| 33274 | 47}, the IETF Best Current Practices on Tags for Identifying Languages. BCP |
| 33275 | 47 is also known as RFC 5646. It subsumes ISO 639 and is backward compatible |
| 33276 | with it, and it also implements recommendations from the |
| 33277 | @url{http://cldr.unicode.org/, Unicode CLDR}. |
| 33278 | |
| 33279 | @code{python-langcodes} can also refer to a database of language properties |
| 33280 | and names, built from Unicode CLDR and the IANA subtag registry, if you |
| 33281 | install @code{python-language-data}.") |
| 33282 | (license license:expat))) |
| 33283 | |
| 33284 | (define-public python-geomet |
| 33285 | (package |
| 33286 | (name "python-geomet") |
| 33287 | (version "0.3.0") |
| 33288 | (source (origin |
| 33289 | (method url-fetch) |
| 33290 | (uri (pypi-uri "geomet" version)) |
| 33291 | (sha256 |
| 33292 | (base32 |
| 33293 | "06rfvadx5dr5xrgsc5bsmqil9c9kff6i13xl988gy0gfg0cl2lnb")))) |
| 33294 | (build-system python-build-system) |
| 33295 | (propagated-inputs (list python-click python-six)) |
| 33296 | (home-page "https://github.com/geomet/geomet") |
| 33297 | (synopsis "Convert GeoJSON to WKT/WKB (Well-Known Text/Binary) or |
| 33298 | GeoPackage Binary") |
| 33299 | (description "This package provides utilities and functions for converting |
| 33300 | GeoJSON to WKT/WKB (Well-Known Text/Binary) or GeoPackage Binary, and vice |
| 33301 | versa. Extended WKB/WKT are also supported.") |
| 33302 | (license license:asl2.0))) |
| 33303 | |
| 33304 | (define-public python-cogapp |
| 33305 | (package |
| 33306 | (name "python-cogapp") |
| 33307 | (version "3.3.0") |
| 33308 | (source (origin |
| 33309 | (method url-fetch) |
| 33310 | (uri (pypi-uri "cogapp" version)) |
| 33311 | (sha256 |
| 33312 | (base32 |
| 33313 | "1c0xx3p3lzrlyqhmccyq9c50f8v9pqk2992gb4nl50h2yy1m3s8v")))) |
| 33314 | (build-system pyproject-build-system) |
| 33315 | (native-inputs (list python-pytest)) |
| 33316 | (home-page "https://nedbatchelder.com/code/cog") |
| 33317 | (synopsis "Content generation tool that leverages Python") |
| 33318 | (description "Cog is a file generation tool. It allows using pieces of |
| 33319 | Python code as generators in your source files to generate arbitrary text.") |
| 33320 | (license license:expat))) |
| 33321 | |
| 33322 | (define-public python-bsdiff4 |
| 33323 | (package |
| 33324 | (name "python-bsdiff4") |
| 33325 | (version "1.2.2") |
| 33326 | (home-page "https://github.com/ilanschnell/bsdiff4") |
| 33327 | (source (origin |
| 33328 | (method git-fetch) |
| 33329 | (uri (git-reference |
| 33330 | (url home-page) |
| 33331 | (commit version))) |
| 33332 | (file-name (git-file-name name version)) |
| 33333 | (sha256 |
| 33334 | (base32 |
| 33335 | "1fa0vkmbr0a9xifq7i5gfcf7ifn739i1fdij8awynm299fsqvvhx")))) |
| 33336 | (build-system python-build-system) |
| 33337 | (synopsis "Binary diff and patch using the BSDIFF4 format") |
| 33338 | (description "This package provides a Python library for the @code{bsdiff} |
| 33339 | binary diff utility. It also provides two command-line tools, @code{bsdiff4} |
| 33340 | and @code{bspatch4}.") |
| 33341 | (license license:bsd-2))) |
| 33342 | |
| 33343 | (define-public python-mpv |
| 33344 | (package |
| 33345 | (name "python-mpv") |
| 33346 | (version "1.0.1") |
| 33347 | (source |
| 33348 | (origin |
| 33349 | ;; python-mpv from pypi does not include the tests directory. |
| 33350 | (method git-fetch) |
| 33351 | (uri (git-reference |
| 33352 | (url "https://github.com/jaseg/python-mpv") |
| 33353 | (commit (string-append "v" version)))) |
| 33354 | (file-name (git-file-name name version)) |
| 33355 | (sha256 |
| 33356 | (base32 |
| 33357 | "10w6j3n62ap45sf6q487kz8z6g58sha37i14fa2hhng794z7a8jh")) |
| 33358 | (modules '((guix build utils))) |
| 33359 | (snippet |
| 33360 | #~(begin |
| 33361 | ;; One of the tests never completes, so neutering it using |
| 33362 | ;; early return allows other test to run without issue. |
| 33363 | (substitute* "tests/test_mpv.py" |
| 33364 | ;; Note the typo in "prooperty" - this was fixed later in |
| 33365 | ;; upstream but has no effect on whether the tests hangs or not. |
| 33366 | (("test_wait_for_prooperty_event_overflow.*" line) |
| 33367 | ;; The long whitespace between \n and return is to match the |
| 33368 | ;; identation level, which is significant in python. |
| 33369 | (string-append line "\n return\n"))))))) |
| 33370 | (build-system python-build-system) |
| 33371 | (arguments |
| 33372 | (list #:phases |
| 33373 | #~(modify-phases %standard-phases |
| 33374 | (add-before 'build 'patch-reference-to-mpv |
| 33375 | (lambda* (#:key inputs #:allow-other-keys) |
| 33376 | ;; Without an absolute path it is not able find and |
| 33377 | ;; load the libmpv library. |
| 33378 | (substitute* "mpv.py" |
| 33379 | (("sofile = .*") |
| 33380 | (string-append "sofile = \"" |
| 33381 | (search-input-file inputs "/lib/libmpv.so") |
| 33382 | "\"\n"))))) |
| 33383 | (add-before 'check 'prepare-for-tests |
| 33384 | (lambda _ |
| 33385 | ;; Fontconfig throws errors when it has no cache dir to use. |
| 33386 | (setenv "XDG_CACHE_HOME" (getcwd)) |
| 33387 | ;; Some tests fail without a writable and readable HOME. |
| 33388 | (setenv "HOME" (getcwd))))))) |
| 33389 | (native-inputs |
| 33390 | (list python-xvfbwrapper)) ; needed for tests only |
| 33391 | (inputs (list mpv)) |
| 33392 | (propagated-inputs (list python-pillow)) ; for raw screenshots |
| 33393 | (home-page "https://github.com/jaseg/python-mpv") |
| 33394 | (synopsis "Python interface to the mpv media player") |
| 33395 | (description |
| 33396 | "python-mpv is a ctypes-based python interface to the mpv media player. |
| 33397 | It gives you more or less full control of all features of the player, just |
| 33398 | as the lua interface does.") |
| 33399 | ;; From the project's README: |
| 33400 | ;; python-mpv inherits the underlying libmpv's license, which can be either |
| 33401 | ;; GPLv2 or later (default) or LGPLv2.1 or later. For details, see the mpv |
| 33402 | ;; copyright page. |
| 33403 | (license license:gpl2+))) |
| 33404 | |
| 33405 | (define-public python-biblib |
| 33406 | (let ((upstream-version "0.1.0") |
| 33407 | (commit "ab0e857b9198fe425ec9b02fcc293b5d9fd0c406") |
| 33408 | (revision "1")) |
| 33409 | (package |
| 33410 | (name "python-biblib") |
| 33411 | (version (git-version upstream-version revision commit)) |
| 33412 | (source |
| 33413 | (origin |
| 33414 | (method git-fetch) |
| 33415 | (uri (git-reference |
| 33416 | (url "https://github.com/aclements/biblib") |
| 33417 | (commit commit))) |
| 33418 | (sha256 |
| 33419 | (base32 "1ym1gwxys9gl5a7fjs6xh5z9w50pnq4z3rs6fx7kpv78hlrbjlip")) |
| 33420 | (file-name (git-file-name name version)))) |
| 33421 | (build-system python-build-system) |
| 33422 | (home-page "https://github.com/aclements/biblib") |
| 33423 | (synopsis "BibTeX parsing and transformation library") |
| 33424 | (description |
| 33425 | "Biblib provides a simple, standalone Python 3 package for parsing |
| 33426 | BibTeX bibliographic databases, as well as algorithms for manipulating BibTeX |
| 33427 | entries in BibTeX-y ways. Biblib's parser is derived directly from the WEB |
| 33428 | source code for BibTeX and hence (barring bugs in translation) should be fully |
| 33429 | compatible with BibTeX's own parser.") |
| 33430 | ;; N.B. It seems the parser was translated from WEB by hand: this |
| 33431 | ;; package does not contain any generated files. |
| 33432 | (license license:expat)))) |
| 33433 | |
| 33434 | (define-public python-i3ipc |
| 33435 | (package |
| 33436 | (name "python-i3ipc") |
| 33437 | (version "2.2.1") |
| 33438 | (source (origin |
| 33439 | (method git-fetch) |
| 33440 | (uri (git-reference |
| 33441 | (url "https://github.com/altdesktop/i3ipc-python") |
| 33442 | (commit (string-append "v" version)))) |
| 33443 | (file-name (git-file-name name version)) |
| 33444 | (sha256 |
| 33445 | (base32 |
| 33446 | "13bzs9dcv27czpnnbgz7a037lm8h991c8gk0qzzk5mq5yak24715")))) |
| 33447 | (build-system python-build-system) |
| 33448 | (arguments (list #:tests? #f)) ;FIXME: some tests are unable to run |
| 33449 | (propagated-inputs (list python-xlib)) |
| 33450 | (home-page "https://github.com/altdesktop/i3ipc-python") |
| 33451 | (synopsis "Python library for controlling i3 and Sway") |
| 33452 | (description |
| 33453 | "This package provides a Python library for controlling the i3 and Sway |
| 33454 | window managers.") |
| 33455 | (license license:bsd-3))) |
| 33456 | |
| 33457 | (define-public i3-autotiling |
| 33458 | (package |
| 33459 | (name "i3-autotiling") |
| 33460 | (version "1.8") |
| 33461 | (source (origin |
| 33462 | (method git-fetch) |
| 33463 | (uri (git-reference |
| 33464 | (url "https://github.com/nwg-piotr/autotiling") |
| 33465 | (commit (string-append "v" version)))) |
| 33466 | (file-name (git-file-name name version)) |
| 33467 | (sha256 |
| 33468 | (base32 |
| 33469 | "1nsm0gd45ys4ghlzrvjrf0lvcyhvpx58lz8gg325a762wn5a4a72")))) |
| 33470 | (build-system python-build-system) |
| 33471 | (arguments (list #:tests? #f)) ;no tests |
| 33472 | (native-inputs (list python-wheel)) |
| 33473 | (propagated-inputs (list python-i3ipc)) |
| 33474 | (home-page "https://github.com/nwg-piotr/autotiling") |
| 33475 | (synopsis "Automatically tile windows in i3 and Sway") |
| 33476 | (description |
| 33477 | "Script for Sway and i3 to automatically switch the horizontal/vertical |
| 33478 | window split orientation.") |
| 33479 | (license license:gpl3))) |
| 33480 | |
| 33481 | (define-public python-cyclic |
| 33482 | (package |
| 33483 | (name "python-cyclic") |
| 33484 | (version "1.0.0") |
| 33485 | (source (origin |
| 33486 | ;; Use git, as there are some test files missing from the PyPI |
| 33487 | ;; release, see https://github.com/neurobin/cyclic/issues/1 |
| 33488 | (method git-fetch) |
| 33489 | (uri (git-reference |
| 33490 | (url "https://github.com/neurobin/cyclic") |
| 33491 | ;; Release is not tagged on github, see |
| 33492 | ;; https://github.com/neurobin/cyclic/issues/2 |
| 33493 | (commit "bf616c47ea49a43500ea55a1e6f4890323be0679"))) |
| 33494 | (file-name (git-file-name name version)) |
| 33495 | (sha256 |
| 33496 | (base32 |
| 33497 | "0r8zzjdv70fpxssxps62rlgpii8fr9gh8gykdygqn6mkdnfjwgjc")))) |
| 33498 | (build-system python-build-system) |
| 33499 | (home-page "https://github.com/neurobin/cyclic") |
| 33500 | (synopsis "Handle cyclic relations") |
| 33501 | (description "This package handles cyclic relations compared by value.") |
| 33502 | (license license:bsd-3))) |
| 33503 | |
| 33504 | (define-public python-rcslice |
| 33505 | (package |
| 33506 | (name "python-rcslice") |
| 33507 | (version "1.1.0") |
| 33508 | (source (origin |
| 33509 | ;; Use git, as there are some test files missing from the PyPI |
| 33510 | ;; release, see https://github.com/neurobin/rcslice/issues/1 |
| 33511 | (method git-fetch) |
| 33512 | (uri (git-reference |
| 33513 | (url "https://github.com/neurobin/rcslice") |
| 33514 | ;; Releases are not tagged on github, see |
| 33515 | ;; https://github.com/neurobin/rcslice/issues/2 |
| 33516 | (commit "1e1ef42cd262db76b67ded430630d5b499790f42"))) |
| 33517 | (file-name (git-file-name name version)) |
| 33518 | (sha256 |
| 33519 | (base32 |
| 33520 | "1lmhcgghh60kvdlx0cin1phhgfy9jivc6l0mb4ibnpa1x1md0zvv")))) |
| 33521 | (build-system python-build-system) |
| 33522 | (home-page "https://github.com/neurobin/rcslice") |
| 33523 | (synopsis "Slice a list of sliceables") |
| 33524 | (description "This package provides Python module to slice a list of |
| 33525 | sliceables (1 indexed, both start and end index are inclusive). Helps to |
| 33526 | slice file content line by line or column by column or a combination of |
| 33527 | both.") |
| 33528 | (license license:bsd-3))) |
| 33529 | |
| 33530 | (define-public python-types-orjson |
| 33531 | (package |
| 33532 | (name "python-types-orjson") |
| 33533 | (version "3.6.2") |
| 33534 | (source (origin |
| 33535 | (method url-fetch) |
| 33536 | (uri (pypi-uri "types-orjson" version)) |
| 33537 | (sha256 |
| 33538 | (base32 |
| 33539 | "0f66lf2qrl9d4vad42db3dmnzv89h4rr05r5zxx5qcl6kb3zr6ng")))) |
| 33540 | (build-system python-build-system) |
| 33541 | (home-page "https://github.com/python/typeshed") |
| 33542 | (synopsis "Typing stubs for orjson") |
| 33543 | (description "This is a PEP 561 type stub package for the @code{orjson} |
| 33544 | package. It can be used by type-checking tools like mypy, PyCharm, pytype |
| 33545 | etc. to check code that uses @code{orjson}.") |
| 33546 | (license license:asl2.0))) |
| 33547 | |
| 33548 | (define-public python-nanoid |
| 33549 | ;; There are no tests on PyPi. |
| 33550 | (let ((commit "061f9a598f310b0e2e91b9ed6ce725a22770da64") |
| 33551 | (revision "0")) |
| 33552 | (package |
| 33553 | (name "python-nanoid") |
| 33554 | (version "2.0.0") |
| 33555 | (source |
| 33556 | (origin |
| 33557 | (method git-fetch) |
| 33558 | (uri |
| 33559 | (git-reference |
| 33560 | (url "https://github.com/puyuan/py-nanoid") |
| 33561 | (commit commit))) |
| 33562 | (file-name (git-file-name name commit)) |
| 33563 | (sha256 |
| 33564 | (base32 "0y1bcw0h27g8rkqq7cp33ywn0i0lp0q3rjixzkh4191y1dp9yf8s")))) |
| 33565 | (build-system python-build-system) |
| 33566 | (native-inputs (list python-pytest)) |
| 33567 | (arguments |
| 33568 | '(#:phases |
| 33569 | (modify-phases %standard-phases |
| 33570 | (replace 'check |
| 33571 | (lambda* (#:key tests? inputs outputs #:allow-other-keys) |
| 33572 | (when tests? |
| 33573 | (invoke "pytest"))))))) |
| 33574 | (home-page "https://github.com/puyuan/py-nanoid") |
| 33575 | (synopsis "Unique string ID generator") |
| 33576 | (description |
| 33577 | "This package provides a tiny, secure, URL-friendly, unique string ID |
| 33578 | generator for Python.") |
| 33579 | (license license:expat)))) |
| 33580 | |
| 33581 | (define-public python-misskey |
| 33582 | (package |
| 33583 | (name "python-misskey") |
| 33584 | (version "4.1.0") |
| 33585 | (source (origin |
| 33586 | (method git-fetch) |
| 33587 | (uri (git-reference |
| 33588 | (url "https://github.com/YuzuRyo61/Misskey.py") |
| 33589 | (commit (string-append "v" version)))) |
| 33590 | (file-name (git-file-name name version)) |
| 33591 | (sha256 |
| 33592 | (base32 |
| 33593 | "0rma8pdsjsy00cg76q6q4qki4xpldykmz1m6dl3w2bjjxfhlbaz5")))) |
| 33594 | (build-system python-build-system) |
| 33595 | (arguments (list #:tests? #f)) ;needs network |
| 33596 | (propagated-inputs (list python-requests)) |
| 33597 | (home-page "https://misskeypy.readthedocs.io") |
| 33598 | (synopsis "Python bindings for Misskey's API") |
| 33599 | (description |
| 33600 | "This package provides access to Misskey's API. Misskey is a SNS |
| 33601 | platform using the ActivityPub protocol.") |
| 33602 | (license license:expat))) |
| 33603 | |
| 33604 | (define-public python-lief |
| 33605 | (package |
| 33606 | (name "python-lief") |
| 33607 | (version "0.12.3") |
| 33608 | (source (origin |
| 33609 | (method git-fetch) |
| 33610 | (uri (git-reference |
| 33611 | (url "https://github.com/lief-project/LIEF") |
| 33612 | (commit version))) |
| 33613 | (file-name (git-file-name name version)) |
| 33614 | (sha256 |
| 33615 | (base32 |
| 33616 | "11i6hqmcjh56y554kqhl61698n9v66j2qk1c1g63mv2w07h2z661")))) |
| 33617 | (build-system python-build-system) |
| 33618 | (native-inputs (list cmake)) |
| 33619 | (arguments |
| 33620 | (list |
| 33621 | #:tests? #f ;needs network |
| 33622 | #:phases #~(modify-phases %standard-phases |
| 33623 | (replace 'build |
| 33624 | (lambda _ |
| 33625 | (invoke |
| 33626 | "python" "setup.py" "--sdk" "build" |
| 33627 | (string-append |
| 33628 | "-j" (number->string (parallel-job-count))))))))) |
| 33629 | (home-page "https://github.com/lief-project/LIEF") |
| 33630 | (synopsis "Library to instrument executable formats") |
| 33631 | (description |
| 33632 | "@code{python-lief} is a cross platform library which can parse, modify |
| 33633 | and abstract ELF, PE and MachO formats.") |
| 33634 | (license license:asl2.0))) |
| 33635 | |
| 33636 | (define-public python-eris |
| 33637 | (package |
| 33638 | (name "python-eris") |
| 33639 | (version "0.0.2") |
| 33640 | (source (origin |
| 33641 | (method url-fetch) |
| 33642 | (uri (pypi-uri "eris" version)) |
| 33643 | (sha256 |
| 33644 | (base32 |
| 33645 | "16wbmahmfzdzrsjbn8jzi79vhghrzvvlcgnym20q0v3p3i4x47pq")))) |
| 33646 | (build-system python-build-system) |
| 33647 | (propagated-inputs (list python-pycryptodome)) |
| 33648 | (home-page "https://codeberg.org/eris/python-eris") |
| 33649 | (synopsis "Python implementation of ERIS") |
| 33650 | (description |
| 33651 | "Python implementation of the @acronym{ERIS, Encoding for Robust Immutable |
| 33652 | Storage}.") |
| 33653 | (license license:lgpl3+))) |
| 33654 | |
| 33655 | (define-public shrinkwrap |
| 33656 | (package |
| 33657 | (name "shrinkwrap") |
| 33658 | (version "0.1.0") |
| 33659 | (source (origin |
| 33660 | (method git-fetch) |
| 33661 | (uri (git-reference |
| 33662 | (url "https://github.com/fzakaria/shrinkwrap") |
| 33663 | (commit (string-append "v" version)))) |
| 33664 | (file-name (git-file-name name version)) |
| 33665 | (modules '((guix build utils))) |
| 33666 | (snippet '(substitute* "pyproject.toml" |
| 33667 | (("lief = \"0\\.12\\.0\"") "lief = \"*\""))) |
| 33668 | (sha256 |
| 33669 | (base32 |
| 33670 | "1f3qrygj16y767q2c7pn9j6m95ggcmj9s5cx9v92ygygly4mr3jp")))) |
| 33671 | (build-system pyproject-build-system) |
| 33672 | (native-inputs |
| 33673 | (list python-click |
| 33674 | python-poetry-core |
| 33675 | python-pypa-build |
| 33676 | python-pytest)) |
| 33677 | (inputs (list python-lief python-sh)) |
| 33678 | (home-page "https://github.com/fzakaria/shrinkwrap") |
| 33679 | (synopsis "Emboss needed dependencies on the top level executable") |
| 33680 | (description |
| 33681 | "@code{shrinkwrap} is a tool which will discover all transitive dynamic |
| 33682 | shared objects, and lift them up to the executable referenced by absolute |
| 33683 | path.") |
| 33684 | (license license:expat))) |
| 33685 | |
| 33686 | (define-public staticsite |
| 33687 | (package |
| 33688 | (name "staticsite") |
| 33689 | (version "2.3") |
| 33690 | (source (origin |
| 33691 | (method git-fetch) |
| 33692 | (uri (git-reference |
| 33693 | (url "https://github.com/spanezz/staticsite") |
| 33694 | (commit (string-append "v" version)))) |
| 33695 | (file-name (git-file-name name version)) |
| 33696 | (sha256 |
| 33697 | (base32 |
| 33698 | "1rhr25xydvnlrrcz389j3f6nknmczm5x11cagrji1qww70piwy08")))) |
| 33699 | (build-system pyproject-build-system) |
| 33700 | (arguments |
| 33701 | (list |
| 33702 | #:phases |
| 33703 | #~(modify-phases %standard-phases |
| 33704 | (add-after 'unpack 'use-themes-in-output |
| 33705 | (lambda _ |
| 33706 | (substitute* "staticsite/global_settings.py" |
| 33707 | (("/usr/share/staticsite") #$output)))) |
| 33708 | (add-after 'install 'install-themes |
| 33709 | (lambda _ |
| 33710 | (let ((themedir (string-append #$output "/themes"))) |
| 33711 | (copy-recursively "themes" themedir))))))) |
| 33712 | (native-inputs |
| 33713 | (list perl-image-exiftool |
| 33714 | python-dateutil |
| 33715 | python-docutils |
| 33716 | python-jinja2 |
| 33717 | python-markdown |
| 33718 | python-pillow |
| 33719 | python-pyinotify |
| 33720 | python-pytz |
| 33721 | python-pyyaml |
| 33722 | python-ruamel.yaml |
| 33723 | python-slugify |
| 33724 | python-tornado |
| 33725 | tzdata-for-tests)) |
| 33726 | (home-page "https://github.com/spanezz/staticsite") |
| 33727 | (synopsis "Static site generator") |
| 33728 | (description "Statistic is a static site generator based on Markdown and |
| 33729 | Jinja2.") |
| 33730 | (license (list license:gpl3+ license:expat)))) |
| 33731 | |
| 33732 | (define-public python-pymonad |
| 33733 | (package |
| 33734 | (name "python-pymonad") |
| 33735 | (version "2.4.0") |
| 33736 | ;; The tests are incomplete in the PyPI archive. |
| 33737 | (source (origin |
| 33738 | (method git-fetch) |
| 33739 | (uri (git-reference |
| 33740 | (url "https://github.com/jasondelaat/pymonad") |
| 33741 | (commit (string-append "v" version)))) |
| 33742 | (file-name (git-file-name name version)) |
| 33743 | (sha256 |
| 33744 | (base32 |
| 33745 | "0ci1mpydldiyg9qv6d19ljhfh7wxlrl2k4mlvqd9bm7dqvpdjsx7")))) |
| 33746 | (build-system python-build-system) |
| 33747 | (arguments |
| 33748 | `(#:phases |
| 33749 | (modify-phases %standard-phases |
| 33750 | (replace 'check |
| 33751 | (lambda* (#:key tests? #:allow-other-keys) |
| 33752 | (when tests? |
| 33753 | (invoke "./run_tests.sh"))))))) |
| 33754 | (home-page "https://github.com/jasondelaat/pymonad") |
| 33755 | (synopsis "Monadic style functional programming for Python") |
| 33756 | (description "@code{python-pymonad} implements data structures typically |
| 33757 | available in purely functional or functional first programming languages such |
| 33758 | as Haskell and F#. Included are |
| 33759 | |
| 33760 | @itemize |
| 33761 | @item Monad and Monoid data types with several common monads such as Maybe and |
| 33762 | State |
| 33763 | @item Useful tools such as the @code{@@curry} decorator for defining curried |
| 33764 | functions |
| 33765 | @item Type annotations to help ensure correct usage |
| 33766 | @end itemize") |
| 33767 | (license license:bsd-3))) |
| 33768 | |
| 33769 | (define-public python-markdown-strings |
| 33770 | (package |
| 33771 | (name "python-markdown-strings") |
| 33772 | (version "3.3.0") |
| 33773 | (source (origin |
| 33774 | (method git-fetch) |
| 33775 | (uri (git-reference |
| 33776 | (url "https://github.com/awesmubarak/markdown_strings.git") |
| 33777 | (commit (string-append "v" version)))) |
| 33778 | (file-name (git-file-name name version)) |
| 33779 | (sha256 |
| 33780 | (base32 |
| 33781 | "0064ni7s3k8hqw61wi9m31icxp61f8adhija2qsp46hclcwx7vz2")))) |
| 33782 | (build-system python-build-system) |
| 33783 | (propagated-inputs (list python-lxml python-six)) |
| 33784 | (home-page "https://github.com/awesmubarak/markdown_strings") |
| 33785 | (synopsis "Python library to create markdown-formatted text") |
| 33786 | (description "This package allows the programmatic creation of |
| 33787 | markdown-compliant strings.") |
| 33788 | (license license:expat))) |
| 33789 | |
| 33790 | (define-public python-zbarlight |
| 33791 | (package |
| 33792 | (name "python-zbarlight") |
| 33793 | (version "3.0") |
| 33794 | (source (origin |
| 33795 | (method url-fetch) |
| 33796 | (uri (pypi-uri "zbarlight" version)) |
| 33797 | (sha256 |
| 33798 | (base32 |
| 33799 | "1v5c9bim8af6g8kgxp2dhm96n5vkr8sqi56w0bdh1xy49v03lw3g")))) |
| 33800 | (build-system pyproject-build-system) |
| 33801 | (propagated-inputs (list python-pillow)) |
| 33802 | (inputs (list zbar)) |
| 33803 | (home-page "https://github.com/Polyconseil/zbarlight") |
| 33804 | (synopsis "Simple Python wrapper for the zbar barcode library") |
| 33805 | (description "Zbarlight is a simple wrapper for the zbar library. It can |
| 33806 | read all zbar supported codes.") |
| 33807 | (license license:bsd-3))) |
| 33808 | |
| 33809 | (define-public python-zeroc-ice |
| 33810 | (package |
| 33811 | (name "python-zeroc-ice") |
| 33812 | (version "3.7.9") |
| 33813 | (source (origin |
| 33814 | (method url-fetch) |
| 33815 | (uri (pypi-uri "zeroc-ice" version)) |
| 33816 | (sha256 |
| 33817 | (base32 |
| 33818 | "0bqkrjxp2fbz34x3wxkxji39kxinypzg8q2994sibiay29mpipxb")))) |
| 33819 | (build-system pyproject-build-system) |
| 33820 | (inputs (list openssl)) |
| 33821 | (home-page "https://zeroc.com") |
| 33822 | (synopsis "RPC framework") |
| 33823 | (description |
| 33824 | "Ice is a comprehensive RPC framework. Ice helps you network your |
| 33825 | software by taking care of all interactions with low-level network programming |
| 33826 | interfaces.") |
| 33827 | (license license:gpl2))) |
| 33828 | |
| 33829 | (define-public python-zeroc-ice-3.6 |
| 33830 | (package |
| 33831 | (inherit python-zeroc-ice) |
| 33832 | (version "3.6.5") |
| 33833 | (source (origin |
| 33834 | (method url-fetch) |
| 33835 | (uri (pypi-uri "zeroc-ice" version)) |
| 33836 | (sha256 |
| 33837 | (base32 |
| 33838 | "0mikjfvq26kh8asnn9v55z41pap4c5ypymqnwwi4xkavc3mzyda2")))))) |
| 33839 | |
| 33840 | ;;; |
| 33841 | ;;; Avoid adding new packages to the end of this file. To reduce the chances |
| 33842 | ;;; of a merge conflict, place them above by existing packages with similar |
| 33843 | ;;; functionality or similar names. |
| 33844 | ;;; |