| 1 | ;;; GNU Guix --- Functional package management for GNU |
| 2 | ;;; Copyright © 2013 Nikita Karetnikov <[email protected]> |
| 3 | ;;; Copyright © 2013-2026 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, 2024 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-2026 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-2026 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-2023 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–2024, 2026 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, 2025 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-2025 Nicolas Goaziou <[email protected]> |
| 53 | ;;; Copyright © 2018 Oleg Pykhalov <[email protected]> |
| 54 | ;;; Copyright © 2018, 2019, 2021, 2023 Clément Lassieur <[email protected]> |
| 55 | ;;; Copyright © 2018-2026 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 [email protected] <[email protected]> |
| 60 | ;;; Copyright © 2019, 2020 Brett Gilio <[email protected]> |
| 61 | ;;; Copyright © 2019 Sam <[email protected]> |
| 62 | ;;; Copyright © 2019, 2023 Jack Hill <[email protected]> |
| 63 | ;;; Copyright © 2019-2023, Guillaume Le Vaillant <[email protected]> |
| 64 | ;;; Copyright © 2019, 2020 Alex Griffin <[email protected]> |
| 65 | ;;; Copyright © 2019, 2020, 2021, 2022, 2023 Pierre Langlois <[email protected]> |
| 66 | ;;; Copyright © 2019 Jacob MacDonald <[email protected]> |
| 67 | ;;; Copyright © 2019-2021, 2023, 2024, 2026 Giacomo Leidi <[email protected]> |
| 68 | ;;; Copyright © 2019 Wiktor Żelazny <[email protected]> |
| 69 | ;;; Copyright © 2019, 2020, 2021, 2022, 2026 Tanguy Le Carrour <[email protected]> |
| 70 | ;;; Copyright © 2019, 2021-2023 Mădălin Ionel Patrașcu <[email protected]> |
| 71 | ;;; Copyright © 2020 Riku Viitanen <[email protected]> |
| 72 | ;;; Copyright © 2020 Jakub Kądziołka <[email protected]> |
| 73 | ;;; Copyright © 2020 sirgazil <[email protected]> |
| 74 | ;;; Copyright © 2020 Sebastian Schott <[email protected]> |
| 75 | ;;; Copyright © 2020 Alexandros Theodotou <[email protected]> |
| 76 | ;;; Copyright © 2020 Josh Marshall <[email protected]> |
| 77 | ;;; Copyright © 2020 Lars-Dominik Braun <[email protected]> |
| 78 | ;;; Copyright © 2020 Alex ter Weele <[email protected]> |
| 79 | ;;; Copyright © 2020, 2022 Matthew James Kraai <[email protected]> |
| 80 | ;;; Copyright © 2020 Ryan Prior <[email protected]> |
| 81 | ;;; Copyright © 2020 Josh Holland <[email protected]> |
| 82 | ;;; Copyright © 2020 Yuval Kogman <[email protected]> |
| 83 | ;;; Copyright © 2020, 2022 Michael Rohleder <[email protected]> |
| 84 | ;;; Copyright © 2020, 2021, 2022, 2023, 2024, 2025 Vinicius Monego <[email protected]> |
| 85 | ;;; Copyright © 2020 Guy Fleury Iteriteka <[email protected]> |
| 86 | ;;; Copyright © 2020 Hendursaga <[email protected]> |
| 87 | ;;; Copyright © 2020 Malte Frank Gerdes <[email protected]> |
| 88 | ;;; Copyright © 2020 Joseph LaFreniere <[email protected]> |
| 89 | ;;; Copyright © 2020 Tim Gesthuizen <[email protected]> |
| 90 | ;;; Copyright © 2020, 2021 Bonface Munyoki Kilyungi <[email protected]> |
| 91 | ;;; Copyright © 2020 Ekaitz Zarraga <[email protected]> |
| 92 | ;;; Copyright © 2020 Diego N. Barbato <[email protected]> |
| 93 | ;;; Copyright © 2020 Liliana Marie Prikler <[email protected]> |
| 94 | ;;; Copyright © 2019 Kristian Trandem <[email protected]> |
| 95 | ;;; Copyright © 2020, 2021, 2024, 2025 Zheng Junjie <[email protected]> |
| 96 | ;;; Copyright © 2020 EuAndreh <[email protected]> |
| 97 | ;;; Copyright © 2021, 2022 Morgan Smith <[email protected]> |
| 98 | ;;; Copyright © 2021-2026 Sharlatan Hellseher <[email protected]> |
| 99 | ;;; Copyright © 2021 Ellis Kenyő <[email protected]> |
| 100 | ;;; Copyright © 2021 LibreMiami <[email protected]> |
| 101 | ;;; Copyright © 2021 Mathieu Othacehe <[email protected]> |
| 102 | ;;; Copyright © 2021 Xinglu Chen <[email protected]> |
| 103 | ;;; Copyright © 2021 Raghav Gururajan <[email protected]> |
| 104 | ;;; Copyright © 2021, 2023-2025 jgart <[email protected]> |
| 105 | ;;; Copyright © 2021 Danial Behzadi <[email protected]> |
| 106 | ;;; Copyright © 2021 Maxime Devos <[email protected]> |
| 107 | ;;; Copyright © 2021 Hugo Lecomte <[email protected]> |
| 108 | ;;; Copyright © 2021 Franck Pérignon <[email protected]> |
| 109 | ;;; Copyright © 2021, 2022 Petr Hodina <[email protected]> |
| 110 | ;;; Copyright © 2021 Simon Streit <[email protected]> |
| 111 | ;;; Copyright © 2021 Stefan Reichör <[email protected]> |
| 112 | ;;; Copyright © 2021, 2022, 2023 Daniel Meißner <[email protected]> |
| 113 | ;;; Copyright © 2021, 2022 Pradana Aumars <[email protected]> |
| 114 | ;;; Copyright © 2021–2024, 2026 Felix Gruber <[email protected]> |
| 115 | ;;; Copyright © 2021 Sébastien Lerique <[email protected]> |
| 116 | ;;; Copyright © 2021 Raphaël Mélotte <[email protected]> |
| 117 | ;;; Copyright © 2021 ZmnSCPxj <[email protected]> |
| 118 | ;;; Copyright © 2021 Filip Lajszczak <[email protected]> |
| 119 | ;;; Copyright © 2021 Greg Hogan <[email protected]> |
| 120 | ;;; Copyright © 2022, 2023 John Kehayias <[email protected]> |
| 121 | ;;; Copyright © 2022 Aleksandr Vityazev <[email protected]> |
| 122 | ;;; Copyright © 2022, 2024-2026 Evgeny Pisemsky <[email protected]> |
| 123 | ;;; Copyright © 2022 drozdov <[email protected]> |
| 124 | ;;; Copyright © 2022 Peter Polidoro <[email protected]> |
| 125 | ;;; Copyright © 2022, 2023 Wamm K. D. <[email protected]> |
| 126 | ;;; Copyright © 2022 Jai Vetrivelan <[email protected]> |
| 127 | ;;; Copyright © 2022-2025 Artyom V. Poptsov <[email protected]> |
| 128 | ;;; Copyright © 2022, 2023 Paul A. Patience <[email protected]> |
| 129 | ;;; Copyright © 2022 Jean-Pierre De Jesus DIAZ <[email protected]> |
| 130 | ;;; Copyright © 2022 Philip McGrath <[email protected]> |
| 131 | ;;; Copyright © 2022 Marek Felšöci <[email protected]> |
| 132 | ;;; Copyright © 2022 Hilton Chain <[email protected]> |
| 133 | ;;; Copyright © 2022 Tomasz Jeneralczyk <[email protected]> |
| 134 | ;;; Copyright © 2022 Mathieu Laparie <[email protected]> |
| 135 | ;;; Copyright © 2022 Garek Dyszel <[email protected]> |
| 136 | ;;; Copyright © 2022 Baptiste Strazzulla <[email protected]> |
| 137 | ;;; Copyright © 2022-2025 Nicolas Graves <[email protected]> |
| 138 | ;;; Copyright © 2023 Gabriel Wicki <[email protected]> |
| 139 | ;;; Copyright © 2023 Amade Nemes <[email protected]> |
| 140 | ;;; Copyright © 2023 Bruno Victal <[email protected]> |
| 141 | ;;; Copyright © 2023 Lu Hui <[email protected]> |
| 142 | ;;; Copyright © 2023 Jean-Pierre De Jesus DIAZ <[email protected]> |
| 143 | ;;; Copyright © 2023 Kaelyn Takata <[email protected]> |
| 144 | ;;; Copyright © 2023 dan <[email protected]> |
| 145 | ;;; Copyright © 2023 Dominik Delgado Steuter <[email protected]> |
| 146 | ;;; Copyright © 2023 Ivan Vilata-i-Balaguer <[email protected]> |
| 147 | ;;; Copyright © 2023 Ontje Lünsdorf <[email protected]> |
| 148 | ;;; Copyright © 2023, 2025 gemmaro <[email protected]> |
| 149 | ;;; Copyright © 2023 Parnikkapore <[email protected]> |
| 150 | ;;; Copyright © 2023 Foundation Devices, Inc. <[email protected]> |
| 151 | ;;; Copyright © c4droid <[email protected]> |
| 152 | ;;; Copyright © 2023, 2024, 2025 Janneke Nieuwenhuizen <[email protected]> |
| 153 | ;;; Copyright © 2023 Attila Lendvai <[email protected]> |
| 154 | ;;; Copyright © 2023, 2024 Troy Figiel <[email protected]> |
| 155 | ;;; Copyright © 2023 Adam Faiz <[email protected]> |
| 156 | ;;; Copyright © 2023 Wiktor Żelazny <[email protected]> |
| 157 | ;;; Copyright © 2023-2026 Spencer King <[email protected]> |
| 158 | ;;; Copyright © 2024 Timothee Mathieu <[email protected]> |
| 159 | ;;; Copyright © 2024 Ian Eure <[email protected]> |
| 160 | ;;; Copyright © 2024 Adriel Dumas--Jondeau <[email protected]> |
| 161 | ;;; Copyright © 2024 Navid Afkhami <[email protected]> |
| 162 | ;;; Copyright © 2024 TakeV <[email protected]> |
| 163 | ;;; Copyright © 2024, 2025 David Elsing <[email protected]> |
| 164 | ;;; Copyright © 2024 Rick Huijzer <[email protected]> |
| 165 | ;;; Copyright © 2024 Peter Kannewitz <[email protected]> |
| 166 | ;;; Copyright © 2024 Aaron Covrig <[email protected]> |
| 167 | ;;; Copyright © 2024 Markku Korkeala <[email protected]> |
| 168 | ;;; Copyright © 2025 Jordan Moore <[email protected]> |
| 169 | ;;; Copyright © 2025 Dariqq <[email protected]> |
| 170 | ;;; Copyright © 2025-2026 Nguyễn Gia Phong <[email protected]> |
| 171 | ;;; Copyright © 2025, 2026 Cayetano Santos <[email protected]> |
| 172 | ;;; Copyright © 2025 Jake Forster <[email protected]> |
| 173 | ;;; Copyright © 2025 Luis Felipe López Acevedo <[email protected]> |
| 174 | ;;; Copyright © 2025 Josep Bigorra <[email protected]> |
| 175 | ;;; Copyright © 2025 Matthias Riße <[email protected]> |
| 176 | ;;; Copyright © 2025 Ghislain Vaillant <[email protected]> |
| 177 | ;;; Copyright © 2025 Allan Adair <[email protected]> |
| 178 | ;;; Copyright © 2025-2026 Hennadii Stepanov <[email protected]> |
| 179 | ;;; Copyright © 2025 Luca Kredel <[email protected]> |
| 180 | ;;; Copyright © 2025 Isidor Zeuner <[email protected]> |
| 181 | ;;; Copyright © 2025 Andy Tai <[email protected]> |
| 182 | ;;; Copyright © 2026 Daniel Khodabakhsh <[email protected]> |
| 183 | ;;; Copyright © 2026 Akiyoshi Suda <[email protected]> |
| 184 | ;;; Copyright © 2026 Sughosha <[email protected]> |
| 185 | ;;; Copyright © 2026 orahcio <[email protected]> |
| 186 | ;;; Copyright © 2026 John Dawson <[email protected]> |
| 187 | ;;; Copyright © 2026 Kevin Deldycke <[email protected]> |
| 188 | ;;; Copyright © 2026 Ryan Desfosses <[email protected]> |
| 189 | ;;; Copyright © 2026 nick <[email protected]> |
| 190 | ;;; Copyright © 2026 Mattia Bunel <[email protected]> |
| 191 | ;;; |
| 192 | ;;; This file is part of GNU Guix. |
| 193 | ;;; |
| 194 | ;;; GNU Guix is free software; you can redistribute it and/or modify it |
| 195 | ;;; under the terms of the GNU General Public License as published by |
| 196 | ;;; the Free Software Foundation; either version 3 of the License, or (at |
| 197 | ;;; your option) any later version. |
| 198 | ;;; |
| 199 | ;;; GNU Guix is distributed in the hope that it will be useful, but |
| 200 | ;;; WITHOUT ANY WARRANTY; without even the implied warranty of |
| 201 | ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 202 | ;;; GNU General Public License for more details. |
| 203 | ;;; |
| 204 | ;;; You should have received a copy of the GNU General Public License |
| 205 | ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. |
| 206 | |
| 207 | (define-module (gnu packages python-xyz) |
| 208 | #:use-module (gnu packages algebra) |
| 209 | #:use-module (gnu packages attr) |
| 210 | #:use-module (gnu packages autotools) |
| 211 | #:use-module (gnu packages backup) |
| 212 | #:use-module (gnu packages base) |
| 213 | #:use-module (gnu packages bash) |
| 214 | #:use-module (gnu packages bdw-gc) |
| 215 | #:use-module (gnu packages bioinformatics) |
| 216 | #:use-module (gnu packages boost) |
| 217 | #:use-module (gnu packages build-tools) |
| 218 | #:use-module (gnu packages c) |
| 219 | #:use-module (gnu packages check) |
| 220 | #:use-module (gnu packages cmake) |
| 221 | #:use-module (gnu packages compression) |
| 222 | #:use-module (gnu packages cpp) |
| 223 | #:use-module (gnu packages crypto) |
| 224 | #:use-module (gnu packages databases) |
| 225 | #:use-module (gnu packages dbm) |
| 226 | #:use-module (gnu packages dictionaries) |
| 227 | #:use-module (gnu packages digest) |
| 228 | #:use-module (gnu packages django) |
| 229 | #:use-module (gnu packages djvu) |
| 230 | #:use-module (gnu packages dns) |
| 231 | #:use-module (gnu packages documentation) |
| 232 | #:use-module (gnu packages duckdb) |
| 233 | #:use-module (gnu packages elf) |
| 234 | #:use-module (gnu packages emulators) |
| 235 | #:use-module (gnu packages enchant) |
| 236 | #:use-module (gnu packages file) |
| 237 | #:use-module (gnu packages fonts) |
| 238 | #:use-module (gnu packages fontutils) |
| 239 | #:use-module (gnu packages freedesktop) |
| 240 | #:use-module (gnu packages gcc) |
| 241 | #:use-module (gnu packages gdb) |
| 242 | #:use-module (gnu packages geo) |
| 243 | #:use-module (gnu packages ghostscript) |
| 244 | #:use-module (gnu packages glib) |
| 245 | #:use-module (gnu packages gnome) |
| 246 | #:use-module (gnu packages gnupg) |
| 247 | #:use-module (gnu packages graphviz) |
| 248 | #:use-module (gnu packages gsasl) |
| 249 | #:use-module (gnu packages gtk) |
| 250 | #:use-module (gnu packages guile-xyz) |
| 251 | #:use-module (gnu packages haskell-xyz) |
| 252 | #:use-module (gnu packages icu4c) |
| 253 | #:use-module (gnu packages image) |
| 254 | #:use-module (gnu packages image-processing) |
| 255 | #:use-module (gnu packages imagemagick) |
| 256 | #:use-module (gnu packages inkscape) |
| 257 | #:use-module (gnu packages iso-codes) |
| 258 | #:use-module (gnu packages java) |
| 259 | #:use-module (gnu packages javascript) |
| 260 | #:use-module (gnu packages jupyter) |
| 261 | #:use-module (gnu packages kerberos) |
| 262 | #:use-module (gnu packages less) |
| 263 | #:use-module (gnu packages libevent) |
| 264 | #:use-module (gnu packages libffi) |
| 265 | #:use-module (gnu packages libusb) |
| 266 | #:use-module (gnu packages linux) |
| 267 | #:use-module (gnu packages llvm) |
| 268 | #:use-module (gnu packages machine-learning) |
| 269 | #:use-module (gnu packages man) |
| 270 | #:use-module (gnu packages markup) |
| 271 | #:use-module (gnu packages maths) |
| 272 | #:use-module (gnu packages messaging) |
| 273 | #:use-module (gnu packages monitoring) |
| 274 | #:use-module (gnu packages mpi) |
| 275 | #:use-module (gnu packages multiprecision) |
| 276 | #:use-module (gnu packages ncurses) |
| 277 | #:use-module (gnu packages networking) |
| 278 | #:use-module (gnu packages node) |
| 279 | #:use-module (gnu packages node-xyz) |
| 280 | #:use-module (gnu packages nss) |
| 281 | #:use-module (gnu packages openstack) |
| 282 | #:use-module (gnu packages pcre) |
| 283 | #:use-module (gnu packages pdf) |
| 284 | #:use-module (gnu packages perl) |
| 285 | #:use-module (gnu packages photo) |
| 286 | #:use-module (gnu packages pkg-config) |
| 287 | #:use-module (gnu packages protobuf) |
| 288 | #:use-module (gnu packages python) |
| 289 | #:use-module (gnu packages python-build) |
| 290 | #:use-module (gnu packages python-check) |
| 291 | #:use-module (gnu packages python-compression) |
| 292 | #:use-module (gnu packages python-crypto) |
| 293 | #:use-module (gnu packages python-science) |
| 294 | #:use-module (gnu packages python-web) |
| 295 | #:use-module (gnu packages qt) |
| 296 | #:use-module (gnu packages rdf) |
| 297 | #:use-module (gnu packages readline) |
| 298 | #:use-module (gnu packages regex) |
| 299 | #:use-module (gnu packages rpc) |
| 300 | #:use-module (gnu packages rust) |
| 301 | #:use-module (gnu packages scanner) |
| 302 | #:use-module (gnu packages search) |
| 303 | #:use-module (gnu packages serialization) |
| 304 | #:use-module (gnu packages shells) |
| 305 | #:use-module (gnu packages specifications) |
| 306 | #:use-module (gnu packages sphinx) |
| 307 | #:use-module (gnu packages ssh) |
| 308 | #:use-module (gnu packages statistics) |
| 309 | #:use-module (gnu packages task-management) |
| 310 | #:use-module (gnu packages tcl) |
| 311 | #:use-module (gnu packages tex) |
| 312 | #:use-module (gnu packages texinfo) |
| 313 | #:use-module (gnu packages time) |
| 314 | #:use-module (gnu packages tls) |
| 315 | #:use-module (gnu packages tree-sitter) |
| 316 | #:use-module (gnu packages valgrind) |
| 317 | #:use-module (gnu packages version-control) |
| 318 | #:use-module (gnu packages video) |
| 319 | #:use-module (gnu packages web) |
| 320 | #:use-module (gnu packages wxwidgets) |
| 321 | #:use-module (gnu packages xdisorg) |
| 322 | #:use-module (gnu packages xml) |
| 323 | #:use-module (gnu packages xorg) |
| 324 | #:use-module (gnu packages) |
| 325 | #:use-module (guix build-system cargo) |
| 326 | #:use-module (guix build-system cmake) |
| 327 | #:use-module (guix build-system copy) |
| 328 | #:use-module (guix build-system gnu) |
| 329 | #:use-module (guix build-system meson) |
| 330 | #:use-module (guix build-system pyproject) |
| 331 | #:use-module (guix deprecation) |
| 332 | #:use-module (guix download) |
| 333 | #:use-module (guix gexp) |
| 334 | #:use-module (guix git-download) |
| 335 | #:use-module (guix hg-download) |
| 336 | #:use-module ((guix licenses) #:prefix license:) |
| 337 | #:use-module (guix packages) |
| 338 | #:use-module (guix utils) |
| 339 | #:use-module (ice-9 match) |
| 340 | #:use-module (srfi srfi-1) |
| 341 | #:use-module (srfi srfi-26)) |
| 342 | |
| 343 | (define-public python-aenum |
| 344 | (package |
| 345 | (name "python-aenum") |
| 346 | (version "3.1.17") |
| 347 | (source |
| 348 | (origin |
| 349 | (method git-fetch) |
| 350 | (uri (git-reference |
| 351 | (url "https://github.com/ethanfurman/aenum") |
| 352 | (commit version))) |
| 353 | (file-name (git-file-name name version)) |
| 354 | (sha256 |
| 355 | (base32 "0nygn64ydkvlpz9hw1f26z8w1dk7bws8qsirwkxyfw99vpbzlz3v")))) |
| 356 | (build-system pyproject-build-system) |
| 357 | (arguments |
| 358 | (list |
| 359 | #:phases |
| 360 | #~(modify-phases %standard-phases |
| 361 | (add-after 'unpack 'fix |
| 362 | (lambda _ |
| 363 | (substitute* "aenum/_py2.py" |
| 364 | (("raise exc.*") |
| 365 | "raise exc.with_traceback(tb)"))))) |
| 366 | #:tests? #f)) ;no tests |
| 367 | (native-inputs (list python-setuptools)) |
| 368 | (home-page "https://github.com/ethanfurman/aenum") |
| 369 | (synopsis |
| 370 | "Support for advanced enumerations, namedtuples and namedconstants") |
| 371 | (description |
| 372 | "AEnum is a set of symbolic names (members) bound to unique, constant |
| 373 | values. Within an enumeration, the members can be compared by identity, and |
| 374 | the enumeration itself can be iterated over. There is built-in support for |
| 375 | unique values, multiple values, auto-numbering, and suspension of aliasing |
| 376 | (members with the same value are not identical), plus the ability to have |
| 377 | values automatically bound to attributes.") |
| 378 | (license license:bsd-3))) |
| 379 | |
| 380 | (define-public python-accumulation-tree |
| 381 | ;; Only minor releases (0.x) are tagged, not patch versions. |
| 382 | (let ((commit "3617051f952ce12385c015be8e3d052d1883f17a") |
| 383 | (revision "0")) |
| 384 | (package |
| 385 | (name "python-accumulation-tree") |
| 386 | (version (git-version "0.6.4" revision commit)) |
| 387 | (source |
| 388 | (origin |
| 389 | (method git-fetch) |
| 390 | (uri (git-reference |
| 391 | (url "https://github.com/tkluck/accumulation_tree") |
| 392 | (commit commit))) |
| 393 | (file-name (git-file-name name version)) |
| 394 | (sha256 |
| 395 | (base32 "0bgqy07rpiyz60y8nfh8mha38l650x25l4bbbv6fx42czw7kzhbx")) |
| 396 | (modules '((guix build utils))) |
| 397 | (snippet ;use src layout for isolated tests |
| 398 | #~(let* ((src "src/") |
| 399 | (old "accumulation_tree/") |
| 400 | (new (string-append src old))) |
| 401 | (mkdir src) |
| 402 | (rename-file old new) |
| 403 | (substitute* "setup.py" |
| 404 | (("packages=" all) |
| 405 | (string-append "package_dir={'': '" src "'}, " all)) |
| 406 | ((old) |
| 407 | new)))))) |
| 408 | (build-system pyproject-build-system) |
| 409 | (arguments |
| 410 | (list #:test-backend #~'custom |
| 411 | #:test-flags #~'("-m" "doctest" "README.md" "tests.md"))) |
| 412 | (native-inputs (list python-cloudpickle python-cython python-setuptools)) |
| 413 | (home-page "https://github.com/tkluck/accumulation_tree") |
| 414 | (synopsis "Red-black tree with fast value accumulation in a key range") |
| 415 | (description |
| 416 | "This Python package implements a red-black tree which also stores |
| 417 | partial aggregations at each node, making getting aggregations |
| 418 | of key range slices an O(log(N)) operation. |
| 419 | |
| 420 | This data structure is very similar to a binary indexed tree, |
| 421 | with heap allocation instead of a flat array to represent a tree.") |
| 422 | (license license:expat)))) |
| 423 | |
| 424 | (define-public python-anaconda-cli-base |
| 425 | (package |
| 426 | (name "python-anaconda-cli-base") |
| 427 | (version "0.8.2") |
| 428 | (source |
| 429 | (origin |
| 430 | (method git-fetch) |
| 431 | (uri (git-reference |
| 432 | (url "https://github.com/anaconda/anaconda-cli-base") |
| 433 | (commit (string-append "v" version)))) |
| 434 | (file-name (git-file-name name version)) |
| 435 | (sha256 |
| 436 | (base32 "1vsbxcgn05d7mlwl17f0bfq25lydl7i8n4x0a95hmjdl45n1q9wx")))) |
| 437 | (build-system pyproject-build-system) |
| 438 | (arguments |
| 439 | (list |
| 440 | #:test-flags |
| 441 | #~(list "--deselect=tests/test_cli.py::test_cli_version" |
| 442 | "--deselect=tests/test_cli.py::test_load_plugin"))) |
| 443 | (native-inputs |
| 444 | (list python-hatch-vcs |
| 445 | python-hatchling |
| 446 | python-pytest |
| 447 | python-pytest-mock |
| 448 | python-setuptools-scm |
| 449 | python-types-requests)) |
| 450 | (propagated-inputs |
| 451 | (list python-click |
| 452 | python-packaging |
| 453 | python-pydantic |
| 454 | python-pydantic-settings |
| 455 | python-readchar |
| 456 | python-rich |
| 457 | python-tomli |
| 458 | python-tomlkit |
| 459 | python-typer)) |
| 460 | (home-page "https://anaconda.github.io/anaconda-cli-base/") |
| 461 | (synopsis "Base CLI entrypoint Anaconda CLI plugins") |
| 462 | (description |
| 463 | "This package provides a base CLI entrypoint supporting Anaconda CLI plugins.") |
| 464 | (license license:bsd-3))) |
| 465 | |
| 466 | (define-public python-annexremote |
| 467 | (package |
| 468 | (name "python-annexremote") |
| 469 | (version "1.6.6") |
| 470 | (source |
| 471 | (origin |
| 472 | (method git-fetch) |
| 473 | (uri (git-reference |
| 474 | (url "https://github.com/Lykos153/AnnexRemote") |
| 475 | (commit (string-append "v" version)))) |
| 476 | (file-name (git-file-name name version)) |
| 477 | (sha256 |
| 478 | (base32 "0fhd712z143mvsidlwhnq951cvkbfcpybbim3fiyn6r3l1r46a25")))) |
| 479 | (build-system pyproject-build-system) |
| 480 | (native-inputs |
| 481 | (list python-pytest |
| 482 | python-setuptools |
| 483 | python-setuptools-scm)) |
| 484 | (home-page "https://github.com/Lykos153/AnnexRemote") |
| 485 | (synopsis "Helper module to easily develop git-annex special remotes") |
| 486 | (description |
| 487 | "This package provides a helper module to develop special remotes for |
| 488 | git-annex. AnnexRemote implements the line-based external special remote |
| 489 | protocol of git-annex, while leaving the behavior of the remote up to the |
| 490 | user.") |
| 491 | (license license:gpl3))) |
| 492 | |
| 493 | (define-public python-annotated-doc |
| 494 | (package |
| 495 | (name "python-annotated-doc") |
| 496 | (version "0.0.4") |
| 497 | (source |
| 498 | (origin |
| 499 | (method git-fetch) |
| 500 | (uri (git-reference |
| 501 | (url "https://github.com/fastapi/annotated-doc") |
| 502 | (commit version))) |
| 503 | (file-name (git-file-name name version)) |
| 504 | (sha256 |
| 505 | (base32 "13fh58q1a8kvrx1kjgr6qmd09jhikxc7wlyccajpfz657ipjif9v")))) |
| 506 | (build-system pyproject-build-system) |
| 507 | (native-inputs |
| 508 | (list python-pytest |
| 509 | python-pdm-backend)) |
| 510 | (home-page "https://github.com/fastapi/annotated-doc") |
| 511 | (synopsis "Annotated for some Python objects") |
| 512 | (description |
| 513 | "This package implements a functionality for document parameters, class |
| 514 | attributes, return types, and variables inline, with |
| 515 | Annotated.") |
| 516 | (license license:expat))) |
| 517 | |
| 518 | (define-public python-archspec |
| 519 | (package |
| 520 | (name "python-archspec") |
| 521 | (version "0.2.5") |
| 522 | (source |
| 523 | (origin |
| 524 | (method git-fetch) |
| 525 | (uri (git-reference |
| 526 | (url "https://github.com/archspec/archspec") |
| 527 | (commit (string-append "v" version)) |
| 528 | (recursive? #t))) |
| 529 | (file-name (git-file-name name version)) |
| 530 | (sha256 |
| 531 | (base32 "0pdqdyzwy75fmcv4ncvar57r3zvfbnqgsya6dgfkzjfd0wvwby05")))) |
| 532 | (build-system pyproject-build-system) |
| 533 | (native-inputs |
| 534 | (list python-jsonschema |
| 535 | python-poetry-core |
| 536 | python-pytest)) |
| 537 | (home-page "https://github.com/archspec/archspec") |
| 538 | (synopsis "Library to query system architecture") |
| 539 | (description |
| 540 | "Archspec offers human-readable labels for system architecture aspects. |
| 541 | These aspects include CPU, network fabrics, etc. In addition, it offers |
| 542 | APIs to detect, query, and compare them.") |
| 543 | (license license:expat))) |
| 544 | |
| 545 | (define-public python-astar |
| 546 | ;; The Git repository has no tag. |
| 547 | (let ((commit "b48388f5fa7dc1e5069ff85b05f0ad72ea8d5e93") |
| 548 | (revision "0")) |
| 549 | (package |
| 550 | (name "python-astar") |
| 551 | (version (git-version "0.99" revision commit)) |
| 552 | (source |
| 553 | (origin |
| 554 | (method git-fetch) |
| 555 | (uri (git-reference |
| 556 | (url "https://github.com/jrialland/python-astar") |
| 557 | (commit commit))) |
| 558 | (file-name (git-file-name name version)) |
| 559 | (sha256 |
| 560 | (base32 "1gc4r3xmvw7hgqfadr2cz024ywbzmfak319cdkahd3dzpvyh404q")))) |
| 561 | (build-system pyproject-build-system) |
| 562 | ;; Despite pytest being listed in tool.poetry.group.dev.dependencies, |
| 563 | ;; the test suite has been written for unittest. |
| 564 | (native-inputs (list python-poetry-core)) |
| 565 | (home-page "https://github.com/jrialland/python-astar") |
| 566 | (synopsis "Implementation of the A* search algorithm") |
| 567 | (description |
| 568 | "The @code{astar} Python package provide a generic implementation |
| 569 | of the A* graph traversal and pathfinding algorithm.") |
| 570 | (license license:bsd-3)))) |
| 571 | |
| 572 | (define-public python-asyncclick |
| 573 | (package |
| 574 | (name "python-asyncclick") |
| 575 | (version "8.3.0.3") |
| 576 | (source |
| 577 | (origin |
| 578 | (method url-fetch) |
| 579 | (uri (pypi-uri "asyncclick" version)) |
| 580 | (sha256 |
| 581 | (base32 "1i8jb2mir9gflw9pram720diq6fb2yn8pjja1m1q3arzq64zl993")))) |
| 582 | (build-system pyproject-build-system) |
| 583 | ;; tests: 1418 passed, 21 skipped, 1 xfailed |
| 584 | (native-inputs |
| 585 | (list less |
| 586 | python-flit-core |
| 587 | python-pytest |
| 588 | python-trio)) |
| 589 | (propagated-inputs |
| 590 | (list python-anyio)) |
| 591 | (home-page "https://github.com/python-trio/asyncclick") |
| 592 | (synopsis "Python composable command line utility, trio-compatible version ") |
| 593 | (description |
| 594 | "AsyncClick is a fork of Click that works well with anyio, Trio, or |
| 595 | asyncio.") |
| 596 | (license license:bsd-3))) |
| 597 | |
| 598 | (define-public python-asyncstdlib |
| 599 | (package |
| 600 | (name "python-asyncstdlib") |
| 601 | (version "3.13.0") |
| 602 | (source |
| 603 | (origin |
| 604 | (method url-fetch) |
| 605 | (uri (pypi-uri "asyncstdlib" version)) |
| 606 | (sha256 |
| 607 | (base32 "0cxms50gygrvp4n4rk5xxhnl6k7nsrhhixdyk6xk70hi9ysgz9pj")))) |
| 608 | (build-system pyproject-build-system) |
| 609 | (native-inputs (list python-flit-core python-pytest)) |
| 610 | (home-page "https://asyncstdlib.readthedocs.io") |
| 611 | (synopsis "Compatibility layer between the Python stdlib and @code{async} |
| 612 | callables") |
| 613 | (description |
| 614 | "The @code{asyncstdlib} library re-implements functions and classes of |
| 615 | the Python standard library to make them compatible with @code{async} |
| 616 | callables, iterables and context managers. It is fully agnostic to |
| 617 | @code{async} event loops and seamlessly works with @code{asyncio}, third-party |
| 618 | libraries such as @code{trio}, as well as any custom @code{async} event |
| 619 | loop.") |
| 620 | (license license:expat))) |
| 621 | |
| 622 | (define-public python-awesomeversion |
| 623 | (package |
| 624 | (name "python-awesomeversion") |
| 625 | (version "24.6.0") |
| 626 | (source |
| 627 | (origin |
| 628 | (method git-fetch) |
| 629 | (uri (git-reference |
| 630 | (url "https://github.com/ludeeus/awesomeversion") |
| 631 | (commit version))) |
| 632 | (file-name (git-file-name name version)) |
| 633 | (sha256 |
| 634 | (base32 "1kvzhhd2ah0sadlsp5xs3qbiknixq4xwhk3yb6kmhcdl2zcbi4cn")) |
| 635 | (modules '((guix build utils))) |
| 636 | (snippet #~(substitute* "pyproject.toml" |
| 637 | (("version = \"0\"") |
| 638 | (format #f "version = \"~a\"" #$version)))))) |
| 639 | (build-system pyproject-build-system) |
| 640 | (native-inputs |
| 641 | (list python-poetry-core |
| 642 | python-pytest |
| 643 | python-pytest-snapshot)) |
| 644 | (home-page "https://github.com/ludeeus/awesomeversion") |
| 645 | (synopsis "Create and compare version objects") |
| 646 | (description |
| 647 | "This package provides a way to make anything a version object, and |
| 648 | compare against a vast section of other version formats.") |
| 649 | (license license:expat))) |
| 650 | |
| 651 | (define-public python-awkward-cpp |
| 652 | (package |
| 653 | (name "python-awkward-cpp") |
| 654 | ;; TODO: any higher versions need pybind11 >= 3, see: |
| 655 | ;; <https://codeberg.org/guix/guix/pulls/4696>. |
| 656 | (version "47") |
| 657 | (source |
| 658 | (origin |
| 659 | (method url-fetch) |
| 660 | (uri (pypi-uri "awkward_cpp" version)) |
| 661 | (sha256 |
| 662 | (base32 "03wm649lzr1vgp99d303p53m1ybaf655mpvy30rapv8hd2bz8v37")))) |
| 663 | (build-system pyproject-build-system) |
| 664 | ;; tests: 22304 passed, 524 skipped |
| 665 | (native-inputs |
| 666 | (list cmake-minimal |
| 667 | pybind11-2 |
| 668 | python-pytest |
| 669 | python-scikit-build-core)) |
| 670 | (propagated-inputs |
| 671 | (list python-numpy)) |
| 672 | (home-page "https://awkward-array.org/") |
| 673 | (synopsis "CPU kernels and compiled extensions for Awkward Array") |
| 674 | (description "Awkward CPP provides precompiled routines for the awkward |
| 675 | package. It is not useful on its own, only as a dependency for awkward.") |
| 676 | (license license:bsd-3))) |
| 677 | |
| 678 | (define-public python-awkward |
| 679 | (package |
| 680 | (name "python-awkward") |
| 681 | (version "2.8.5") |
| 682 | (source |
| 683 | (origin |
| 684 | (method url-fetch) |
| 685 | (uri (pypi-uri "awkward" version)) |
| 686 | (sha256 |
| 687 | (base32 "12bw8hkxnx4pkwamih933c5syrjg1pyql288b7h190mr1d24k42b")))) |
| 688 | (build-system pyproject-build-system) |
| 689 | (arguments |
| 690 | (list |
| 691 | ;; tests: 2798 passed, 156 skipped |
| 692 | #:test-flags |
| 693 | ;; CUDA is and requires proprietary software. |
| 694 | #~(list "--ignore=tests-cuda-kernels/" |
| 695 | "--ignore=tests-cuda/"))) |
| 696 | (native-inputs |
| 697 | (list python-hatch-fancy-pypi-readme |
| 698 | python-hatchling |
| 699 | python-pytest)) |
| 700 | (propagated-inputs |
| 701 | (list python-awkward-cpp |
| 702 | python-fsspec |
| 703 | python-importlib-metadata |
| 704 | python-numpy |
| 705 | python-packaging)) |
| 706 | (home-page "https://awkward-array.org/") |
| 707 | (synopsis "Manipulate JSON-like data with NumPy-like idioms") |
| 708 | (description "Awkward Array is a library for nested, variable-sized data, |
| 709 | including arbitrary-length lists, records, mixed types, and missing data, |
| 710 | using NumPy-like idioms.") |
| 711 | (license license:bsd-3))) |
| 712 | |
| 713 | (define-public python-bracex |
| 714 | (package |
| 715 | (name "python-bracex") |
| 716 | (version "2.6") |
| 717 | (source |
| 718 | (origin |
| 719 | (method git-fetch) |
| 720 | (uri (git-reference |
| 721 | (url "https://github.com/facelessuser/bracex") |
| 722 | (commit version))) |
| 723 | (file-name (git-file-name name version)) |
| 724 | (sha256 |
| 725 | (base32 "1j717bsjr3ms4snzrbv4izbblcwgdk1lzxzi2cjhr9365zgz4kdk")))) |
| 726 | (build-system pyproject-build-system) |
| 727 | (native-inputs |
| 728 | (list python-hatchling |
| 729 | python-pytest)) |
| 730 | (home-page "https://facelessuser.github.io/bracex/") |
| 731 | (synopsis "Bash-style brace expansion for Python") |
| 732 | (description |
| 733 | "Bracex is a brace expansion library for Python that implements |
| 734 | Bash-style brace expansion. It can generate strings from patterns like |
| 735 | @code{@{a,b,c@}} or @code{@{1..10@}}.") |
| 736 | (license license:expat))) |
| 737 | |
| 738 | (define-public python-bresenham |
| 739 | (package |
| 740 | (name "python-bresenham") |
| 741 | (version "0.2.1") |
| 742 | (source |
| 743 | (origin |
| 744 | (method git-fetch) |
| 745 | (uri (git-reference |
| 746 | (url "https://github.com/encukou/bresenham") |
| 747 | (commit (string-append "v" version)))) |
| 748 | (file-name (git-file-name name version)) |
| 749 | (sha256 |
| 750 | (base32 "07h04l50y35rhp13mqis61d1dkd7426q1gdfy5hd6rcgcfv15kxd")))) |
| 751 | (build-system pyproject-build-system) |
| 752 | (native-inputs |
| 753 | (list python-pytest |
| 754 | python-setuptools |
| 755 | python-wheel)) |
| 756 | (home-page "https://github.com/encukou/bresenham") |
| 757 | (synopsis "Implementation of Bresenham's line drawing algorithm") |
| 758 | (description |
| 759 | "This package provides a Python implementation of |
| 760 | @url{https://en.wikipedia.org/wiki/Bresenham's_line_algorithm, Bresenham's |
| 761 | line drawing algorithm}.") |
| 762 | (license license:expat))) |
| 763 | |
| 764 | (define-public python-cachey |
| 765 | (package |
| 766 | (name "python-cachey") |
| 767 | (version "0.2.1") |
| 768 | (source |
| 769 | (origin |
| 770 | (method git-fetch) |
| 771 | (uri (git-reference |
| 772 | (url "https://github.com/dask/cachey/") |
| 773 | (commit version))) |
| 774 | (file-name (git-file-name name version)) |
| 775 | (sha256 |
| 776 | (base32 "12rkn4cvdwlpjhlmyxi1glvn1nzlx147xs96h9k6pbgbwyxaci75")))) |
| 777 | (build-system pyproject-build-system) |
| 778 | (native-inputs |
| 779 | (list python-pytest |
| 780 | python-setuptools)) |
| 781 | (propagated-inputs |
| 782 | (list python-heapdict)) |
| 783 | (home-page "https://github.com/dask/cachey/") |
| 784 | (synopsis "Caching based on computation time and storage space") |
| 785 | (description |
| 786 | "This package provides a Python module for caching mindful of |
| 787 | computation/storage costs.") |
| 788 | (license license:bsd-3))) |
| 789 | |
| 790 | (define-public python-catalogus |
| 791 | (package |
| 792 | (name "python-catalogus") |
| 793 | (version "0.1.0") |
| 794 | (source |
| 795 | (origin |
| 796 | (method git-fetch) |
| 797 | (uri (git-reference |
| 798 | (url "https://github.com/breezy-team/catalogus") |
| 799 | (commit (string-append "v" version)))) |
| 800 | (file-name (git-file-name name version)) |
| 801 | (sha256 |
| 802 | (base32 "0l34anf0h4rcsimq78q6y1s2m91605pxwpzfzxr2vh2hl45sy4w5")))) |
| 803 | (build-system pyproject-build-system) |
| 804 | (native-inputs |
| 805 | (list python-pytest |
| 806 | python-setuptools |
| 807 | python-setuptools-scm)) |
| 808 | (home-page "https://github.com/breezy-team/catalogus") |
| 809 | (synopsis "Classes to provide name-to-object registry-like support") |
| 810 | (description |
| 811 | "This package provides classes to provide name-to-object registry-like |
| 812 | support.") |
| 813 | (license license:gpl2+))) |
| 814 | |
| 815 | (define-public python-catppuccin |
| 816 | (package |
| 817 | (name "python-catppuccin") |
| 818 | (version "2.5.0") |
| 819 | (source |
| 820 | (origin |
| 821 | (method url-fetch) |
| 822 | (uri (pypi-uri "catppuccin" version)) |
| 823 | (sha256 |
| 824 | (base32 "0d38gjn6661pb9jl4bg6l698aw4llir44xacrg8nj8xw6nzz6d9h")))) |
| 825 | (build-system pyproject-build-system) |
| 826 | (native-inputs |
| 827 | (list python-hatchling python-pytest |
| 828 | ;; These are optional dependencies but required for tests. |
| 829 | python-matplotlib python-pygments python-rich)) |
| 830 | (home-page "https://github.com/catppuccin/python") |
| 831 | (synopsis "Pastel palette for Python libraries") |
| 832 | (description "Catppuccin for Python is a soothing pastel palette for Python |
| 833 | libraries. It aims to be the middle ground between low and high contrast |
| 834 | themes. It also includes themes for IPython, Matplotlib, Pygments and Rich.") |
| 835 | (license license:expat))) |
| 836 | |
| 837 | (define-public python-calmjs-parse |
| 838 | (package |
| 839 | (name "python-calmjs-parse") |
| 840 | (version "1.3.3") |
| 841 | (source |
| 842 | (origin |
| 843 | (method git-fetch) |
| 844 | (uri (git-reference |
| 845 | (url "https://github.com/calmjs/calmjs.parse/") |
| 846 | (commit version))) |
| 847 | (file-name (git-file-name name version)) |
| 848 | (sha256 |
| 849 | (base32 "08dmi4chamk5dbdpvrc0nb09iybfhj3wqwxgffiqnkj7030qhqb8")))) |
| 850 | (build-system pyproject-build-system) |
| 851 | ;; tests: 797 passed, 1 warning |
| 852 | (native-inputs (list python-pytest python-setuptools)) |
| 853 | (propagated-inputs (list python-ply)) |
| 854 | (home-page "https://github.com/calmjs/calmjs.parse/") |
| 855 | (synopsis "Parsers for ECMA standards") |
| 856 | (description |
| 857 | "@code{Calmjs-parse} is a collection of helper libraries for |
| 858 | understanding ECMA script.") |
| 859 | (license license:expat))) |
| 860 | |
| 861 | (define-public python-chameleon |
| 862 | (package |
| 863 | (name "python-chameleon") |
| 864 | (version "4.6.0") |
| 865 | (source |
| 866 | (origin |
| 867 | (method url-fetch) |
| 868 | (uri (pypi-uri "Chameleon" version)) |
| 869 | (sha256 |
| 870 | (base32 "06qwg3sk26m53b1sl8b798scik7klkx53vijs7d8mwzpyqlxf34i")))) |
| 871 | (build-system pyproject-build-system) |
| 872 | (native-inputs |
| 873 | (list python-pytest |
| 874 | python-setuptools)) |
| 875 | (home-page "https://chameleon.readthedocs.io") |
| 876 | (synopsis "Fast HTML/XML Template Compiler") |
| 877 | (description |
| 878 | "Chameleon is an HTML/XML template engine for Python. It uses the page |
| 879 | templates language.") |
| 880 | ;; Project is duo licensed, see: LICENSE.txt. |
| 881 | (license (list license:zpl2.1 |
| 882 | license:psfl)))) |
| 883 | |
| 884 | (define-public python-click-extra |
| 885 | (package |
| 886 | (name "python-click-extra") |
| 887 | (version "8.8.1") |
| 888 | (source |
| 889 | (origin |
| 890 | (method git-fetch) |
| 891 | (uri (git-reference |
| 892 | (url "https://github.com/kdeldycke/click-extra") |
| 893 | (commit (string-append "v" version)))) |
| 894 | (file-name (git-file-name name version)) |
| 895 | (sha256 |
| 896 | (base32 "0i22as7f22qhnp69c7zwdh7k4pzl45ywa0hdj71j0n07lqdmdqc7")))) |
| 897 | (build-system pyproject-build-system) |
| 898 | (arguments |
| 899 | (list |
| 900 | ;; Upstream uses uv-build which is not yet available in Guix. |
| 901 | #:build-backend "setuptools.build_meta" |
| 902 | ;; tets: 3659 passed, 509 skipped, 4 deselected, 4 xfailed, 1267 warnings |
| 903 | #:test-flags |
| 904 | ;; Skip the network tests. |
| 905 | #~(list "-m" "not network" |
| 906 | ;; Prevent adding python-sphinx into scope. |
| 907 | (string-append "--deselect=tests/test_blocks.py" |
| 908 | "::test_blocks_reexported_from_sphinx_package")))) |
| 909 | (native-inputs |
| 910 | ;; Optional libraries imported at module level by the test suite. |
| 911 | (list python-hjson |
| 912 | python-jsonschema |
| 913 | python-pygments |
| 914 | python-pytest |
| 915 | python-pytest-httpserver |
| 916 | python-pyyaml |
| 917 | python-requests |
| 918 | python-setuptools |
| 919 | python-tomlkit |
| 920 | python-xmltodict)) |
| 921 | (propagated-inputs |
| 922 | (list python-boltons |
| 923 | python-click |
| 924 | python-cloup |
| 925 | python-deepmerge |
| 926 | python-extra-platforms |
| 927 | python-tabulate |
| 928 | python-wcmatch |
| 929 | python-wcwidth)) |
| 930 | (home-page "https://kdeldycke.github.io/click-extra/") |
| 931 | (synopsis "Drop-in replacement for Click to build colorful CLIs") |
| 932 | (description |
| 933 | "Click Extra extends the Click framework with colored help screens, |
| 934 | configuration file support, table rendering, and platform detection. It |
| 935 | serves as a drop-in replacement adding features for user-friendly command-line |
| 936 | interfaces.") |
| 937 | (license license:gpl2+))) |
| 938 | |
| 939 | (define-public python-comrak |
| 940 | (package |
| 941 | (name "python-comrak") |
| 942 | (version "0.0.16") |
| 943 | (source |
| 944 | (origin |
| 945 | (method url-fetch) |
| 946 | (uri (pypi-uri "comrak" version)) |
| 947 | (sha256 |
| 948 | (base32 "1nzr1d957vac16kvy4si3hykx5cbcm73vpy94nm74rf66hgpx8m3")))) |
| 949 | (build-system pyproject-build-system) |
| 950 | (arguments |
| 951 | (list |
| 952 | #:imported-modules (append %cargo-build-system-modules |
| 953 | %pyproject-build-system-modules) |
| 954 | #:modules '(((guix build cargo-build-system) #:prefix cargo:) |
| 955 | (guix build pyproject-build-system) |
| 956 | (guix build utils)) |
| 957 | #:phases |
| 958 | #~(modify-phases %standard-phases |
| 959 | (add-after 'unpack 'prepare-cargo-build-system |
| 960 | (lambda args |
| 961 | (for-each (lambda (phase) |
| 962 | (format #t "Running cargo phase: ~a~%" phase) |
| 963 | (apply (assoc-ref cargo:%standard-phases phase) |
| 964 | #:cargo-target #$(cargo-triplet) |
| 965 | args)) |
| 966 | '(prepare-rust-crates |
| 967 | unpack-rust-crates |
| 968 | configure |
| 969 | check-for-pregenerated-files |
| 970 | patch-cargo-checksums))))))) |
| 971 | (native-inputs |
| 972 | (append |
| 973 | (list maturin |
| 974 | python-pytest |
| 975 | rust |
| 976 | `(,rust "cargo")) |
| 977 | (or (and=> (%current-target-system) |
| 978 | (compose list make-rust-sysroot)) |
| 979 | '()))) |
| 980 | (inputs (cargo-inputs 'python-comrak)) |
| 981 | (home-page "https://github.com/lmmx/comrak") |
| 982 | (synopsis "Python bindings for the Comrak Rust library") |
| 983 | (description |
| 984 | "This package provides Python bindings for the Comrak Rust library, a |
| 985 | fast @code{CommonMark/GFM} parser.") |
| 986 | (license license:expat))) |
| 987 | |
| 988 | (define-public python-conda-content-trust |
| 989 | (package |
| 990 | (name "python-conda-content-trust") |
| 991 | (version "0.2.0") |
| 992 | (source |
| 993 | (origin |
| 994 | (method git-fetch) |
| 995 | (uri (git-reference |
| 996 | (url "https://github.com/conda/conda-content-trust") |
| 997 | (commit version))) |
| 998 | (file-name (git-file-name name version)) |
| 999 | (sha256 |
| 1000 | (base32 "1yvfwm7i18sfvgdasibdgnghvj5w5p4hr6i37v0cspwmkczgna7z")))) |
| 1001 | (build-system pyproject-build-system) |
| 1002 | (arguments |
| 1003 | (list |
| 1004 | #:test-flags |
| 1005 | ;; XXX: Not packaged yet: |
| 1006 | ;; <https://github.com/secure-systems-lab/securesystemslib>. |
| 1007 | ;; |
| 1008 | ;; ImportError: The securesystemslib library is required, which appears |
| 1009 | ;; to be unavailable. |
| 1010 | #~(list #$@(map (lambda (test) (string-append "--deselect=" |
| 1011 | "tests/test_root.py::" |
| 1012 | test)) |
| 1013 | (list "test_sign_root_metadata_dict_via_gpg" |
| 1014 | "test_sign_root_metadata_via_gpg" |
| 1015 | "test_gpg_pubkey_in_ssl_format"))))) |
| 1016 | (native-inputs |
| 1017 | (list python-hatch-vcs |
| 1018 | python-hatchling |
| 1019 | python-pytest)) |
| 1020 | (propagated-inputs |
| 1021 | (list python-cryptography)) |
| 1022 | (home-page "https://github.com/conda/conda-content-trust") |
| 1023 | (synopsis "Signing and verification tools for Conda") |
| 1024 | (description |
| 1025 | "This package implements a functionalit of signing and verification tools |
| 1026 | for Conda. @url{https://theupdateframework.io/, Based on The Update |
| 1027 | Framework (TUF)}, conda-content-trust is intended to ensure that when users in |
| 1028 | the conda ecosystem obtain a package or data about that package, they can know |
| 1029 | whether or not it is trustworthy (e.g. originally comes from a reliable source |
| 1030 | and has not been tampered with). A basic library and basic CLI are included |
| 1031 | to provide signing, verification, and trust delegation functionality.") |
| 1032 | (license license:bsd-3))) |
| 1033 | |
| 1034 | (define-public python-conda-inject |
| 1035 | (package |
| 1036 | (name "python-conda-inject") |
| 1037 | (version "1.3.2") |
| 1038 | (source |
| 1039 | (origin |
| 1040 | (method git-fetch) |
| 1041 | (uri (git-reference |
| 1042 | (url "https://github.com/koesterlab/conda-inject") |
| 1043 | (commit (string-append "v" version)))) |
| 1044 | (file-name (git-file-name name version)) |
| 1045 | (sha256 |
| 1046 | (base32 "1aig9l676wc2sjb20y7rdqf0hfcfjhh92yfiy82mf7kfnv7rp3rk")))) |
| 1047 | (build-system pyproject-build-system) |
| 1048 | (arguments |
| 1049 | (list #:tests? #f)) ; tests require setting up Conda |
| 1050 | (native-inputs |
| 1051 | (list python-poetry-core)) |
| 1052 | (propagated-inputs |
| 1053 | (list python-pyyaml)) |
| 1054 | (home-page "https://github.com/koesterlab/conda-inject") |
| 1055 | (synopsis "Inject a conda environment into the current python environment") |
| 1056 | (description |
| 1057 | "This package provides helper functions for injecting a conda |
| 1058 | environment into the current python environment (by modifying @code{sys.path}, |
| 1059 | without actually changing the current python environment).") |
| 1060 | (license license:expat))) |
| 1061 | |
| 1062 | (define-public python-copydetect |
| 1063 | (package |
| 1064 | (name "python-copydetect") |
| 1065 | (version "0.5.0") |
| 1066 | (source |
| 1067 | (origin |
| 1068 | (method git-fetch) |
| 1069 | (uri (git-reference |
| 1070 | (url "https://github.com/blingenf/copydetect") |
| 1071 | (commit version))) |
| 1072 | (sha256 |
| 1073 | (base32 "0hp9994bbnzp79xxprgwsbgc0w06sb4n82nghl90w1z9zbvwn6gz")))) |
| 1074 | (build-system pyproject-build-system) |
| 1075 | (propagated-inputs (list python-jinja2 |
| 1076 | python-matplotlib |
| 1077 | python-numpy |
| 1078 | python-pygments |
| 1079 | python-tqdm)) |
| 1080 | (native-inputs (list python-setuptools |
| 1081 | python-pytest |
| 1082 | python-wheel)) |
| 1083 | (home-page "https://github.com/blingenf/copydetect") |
| 1084 | (synopsis "Code plagiarism detection tool") |
| 1085 | (description "Copydetect is a tool to detect likely instances of plagiarism |
| 1086 | based on the winnowing algorithm. It takes a list of directories as input and |
| 1087 | generates an HTML report displaying copied slices as output.") |
| 1088 | (license license:expat))) |
| 1089 | |
| 1090 | (define-public python-couleur |
| 1091 | (package |
| 1092 | (name "python-couleur") |
| 1093 | (version "0.7.4") |
| 1094 | (source |
| 1095 | (origin |
| 1096 | (method url-fetch) |
| 1097 | (uri (pypi-uri "couleur" version)) |
| 1098 | (sha256 |
| 1099 | (base32 "1fk175k6l8isx43jmh7n7xyzb18ysdixzr74dxqqhpyd5sbsb5hy")))) |
| 1100 | (build-system pyproject-build-system) |
| 1101 | (arguments (list #:tests? #f)) ;no tests in PyPI, tests depend on Nose |
| 1102 | (native-inputs |
| 1103 | (list python-setuptools |
| 1104 | python-wheel)) |
| 1105 | (home-page "https://github.com/gabrielfalcao/couleur") |
| 1106 | (synopsis "ANSI terminal tool for Python") |
| 1107 | (description |
| 1108 | "This package provides an ANSI terminal tool for Python, colored shell |
| 1109 | and other handy fancy features.") |
| 1110 | (license license:lgpl3+))) |
| 1111 | |
| 1112 | (define-public python-crc |
| 1113 | (package |
| 1114 | (name "python-crc") |
| 1115 | (version "7.1.0") |
| 1116 | (source |
| 1117 | (origin |
| 1118 | (method git-fetch) |
| 1119 | (uri (git-reference |
| 1120 | (url "https://github.com/Nicoretti/crc/") |
| 1121 | (commit version))) |
| 1122 | (file-name (git-file-name name version)) |
| 1123 | (sha256 |
| 1124 | (base32 "1b9164z6v3ng5s8564a0gjdzqws6zf5aqvk6mnzw7ysk6d5rbb9r")))) |
| 1125 | (build-system pyproject-build-system) |
| 1126 | (native-inputs |
| 1127 | (list python-poetry-core |
| 1128 | python-pytest |
| 1129 | python-wheel)) |
| 1130 | (home-page "https://nicoretti.github.io/crc/") |
| 1131 | (synopsis "Pure Python CRC library") |
| 1132 | (description |
| 1133 | "This library computes and verifies @acronym{Cyclic Redundancy Check, |
| 1134 | CRC} checksums, using predefined and custom CRC configurations. |
| 1135 | |
| 1136 | Configurations: |
| 1137 | @table @asis |
| 1138 | @item CRC8 |
| 1139 | CCITT AUTOSAR SAEJ1850 SAEJ1850_ZERO BLUETOOTH MAXIM-DOW |
| 1140 | @item CRC16 |
| 1141 | XMODEM GSM PROFIBUS MODBUS IBM-3740 KERMIT |
| 1142 | @item CRC32 |
| 1143 | CRC32 AUTOSAR BZIP2 POSIX |
| 1144 | @item CRC64 |
| 1145 | CRC64 |
| 1146 | @end table") |
| 1147 | (license license:bsd-2))) |
| 1148 | |
| 1149 | (define-public python-cron-converter |
| 1150 | (package |
| 1151 | (name "python-cron-converter") |
| 1152 | (version "1.3.1") |
| 1153 | (source |
| 1154 | (origin |
| 1155 | (method git-fetch) |
| 1156 | (uri (git-reference |
| 1157 | (url "https://github.com/Sonic0/cron-converter") |
| 1158 | (commit (string-append "v" version)))) |
| 1159 | (file-name (git-file-name name version)) |
| 1160 | (sha256 |
| 1161 | (base32 "0k5svwh9g6fxjx567iwjysq8x07cmy8qfwpk0pm0jjrgr42w9l6c")))) |
| 1162 | (build-system pyproject-build-system) |
| 1163 | (arguments |
| 1164 | (list #:test-backend #~'unittest |
| 1165 | #:test-flags #~(list "discover" "--verbose" "tests/unit"))) |
| 1166 | (native-inputs |
| 1167 | (list python-dateutil |
| 1168 | python-setuptools)) |
| 1169 | (propagated-inputs |
| 1170 | (list python-dateutil)) |
| 1171 | (home-page "https://github.com/Sonic0/cron-converter") |
| 1172 | (synopsis "Cron string parser and scheduler for Python") |
| 1173 | (description |
| 1174 | "Cron-converter provides a Cron string parser (from string/lists to |
| 1175 | string/lists) and iteration for the datetime object with a cron like format.") |
| 1176 | (license license:expat))) |
| 1177 | |
| 1178 | (define-public python-curtsies |
| 1179 | (package |
| 1180 | (name "python-curtsies") |
| 1181 | (version "0.4.3") |
| 1182 | (source |
| 1183 | (origin |
| 1184 | (method url-fetch) |
| 1185 | (uri (pypi-uri "curtsies" version)) |
| 1186 | (sha256 |
| 1187 | (base32 "09c8c4vssm2zkq017xj99vhcrisfva4nkz92w8dly4jjz7xhyahh")))) |
| 1188 | (build-system pyproject-build-system) |
| 1189 | (native-inputs |
| 1190 | (list python-pyte |
| 1191 | python-pytest |
| 1192 | python-setuptools |
| 1193 | python-wheel)) |
| 1194 | (propagated-inputs |
| 1195 | (list python-blessed |
| 1196 | python-cwcwidth)) |
| 1197 | (home-page "https://github.com/bpython/curtsies") |
| 1198 | (synopsis "Library for curses-like terminal interaction with colored strings") |
| 1199 | (description |
| 1200 | "Curtsies is a Python library for interacting with the terminal. It |
| 1201 | features string-like objects which carry formatting information, per-line |
| 1202 | fullscreen terminal rendering, and keyboard input event reporting.") |
| 1203 | (license license:expat))) |
| 1204 | |
| 1205 | (define-public python-customtkinter |
| 1206 | (package |
| 1207 | (name "python-customtkinter") |
| 1208 | (version "5.2.2") |
| 1209 | (source |
| 1210 | (origin |
| 1211 | (method git-fetch) |
| 1212 | (uri (git-reference |
| 1213 | (url "https://github.com/TomSchimansky/CustomTkinter") |
| 1214 | (commit (string-append "v" version)))) |
| 1215 | (file-name (git-file-name name version)) |
| 1216 | (sha256 |
| 1217 | (base32 "0vma6x8zg7d5h2ggphi6m7bnqzskxysi9rcpkr6rrgylfrsv03fn")))) |
| 1218 | (build-system pyproject-build-system) |
| 1219 | (arguments |
| 1220 | (list |
| 1221 | #:phases |
| 1222 | #~(modify-phases %standard-phases |
| 1223 | (add-before 'check 'start-xorg-server |
| 1224 | (lambda _ |
| 1225 | (setenv "HOME" "/tmp") |
| 1226 | ;; The test suite requires a running X server. |
| 1227 | (system "Xvfb :99 -screen 0 1024x768x24 &") |
| 1228 | (setenv "DISPLAY" ":99.0"))) |
| 1229 | (replace 'check |
| 1230 | (lambda* (#:key tests? #:allow-other-keys) |
| 1231 | (when tests? |
| 1232 | (with-directory-excursion "test" |
| 1233 | (invoke "python" "unit_tests/test_all.py")))))))) |
| 1234 | (propagated-inputs |
| 1235 | (list (list python "tk") |
| 1236 | python-darkdetect |
| 1237 | python-packaging)) |
| 1238 | (native-inputs |
| 1239 | (list python-setuptools |
| 1240 | xorg-server-for-tests)) |
| 1241 | (home-page "https://customtkinter.tomschimansky.com") |
| 1242 | (synopsis |
| 1243 | "Python @acronym{User Interface, UI} library based on Tkinter") |
| 1244 | (description |
| 1245 | "CustomTkinter provides fully customizable widgets, created and used |
| 1246 | like normal Tkinter widgets, which can also be used in combination with normal |
| 1247 | Tkinter elements.") |
| 1248 | (license license:expat))) |
| 1249 | |
| 1250 | (define-public python-cyclopts |
| 1251 | (package |
| 1252 | (name "python-cyclopts") |
| 1253 | (version "4.14.0") |
| 1254 | (source |
| 1255 | (origin |
| 1256 | (method git-fetch) |
| 1257 | (uri (git-reference |
| 1258 | (url "https://github.com/BrianPugh/cyclopts") |
| 1259 | (commit (string-append "v" version)))) |
| 1260 | (file-name (git-file-name name version)) |
| 1261 | (sha256 |
| 1262 | (base32 "0wbhlpdl7higrgwd45si48l5k1kgjms6f4lzqd6y9qmbfsx0x48l")))) |
| 1263 | (build-system pyproject-build-system) |
| 1264 | (arguments |
| 1265 | (list |
| 1266 | ;; tests: 2194 passed, 95 skipped, 69 deselected, 3 warnings |
| 1267 | #:test-flags |
| 1268 | #~(list #$@(map (lambda (test) (string-append "--deselect=" |
| 1269 | "tests/completion/" |
| 1270 | "test_bash.py::" |
| 1271 | test)) |
| 1272 | (list "test_list_path_multi_positional_default_case" |
| 1273 | "test_eq_form_path_completion" |
| 1274 | "test_bash_path_completion_reflects_caller_cwd")) |
| 1275 | "--deselect=tests/completion/test_behavior.py::test_behavior"))) |
| 1276 | (native-inputs |
| 1277 | (list python-docutils |
| 1278 | python-hatch-vcs |
| 1279 | python-hatchling |
| 1280 | python-mkdocs |
| 1281 | python-pexpect |
| 1282 | python-pydantic |
| 1283 | python-pytest |
| 1284 | python-pytest-mock |
| 1285 | python-pyyaml |
| 1286 | python-sphinx |
| 1287 | python-syrupy |
| 1288 | python-toml |
| 1289 | python-trio)) |
| 1290 | (propagated-inputs |
| 1291 | (list python-attrs |
| 1292 | python-docstring-parser |
| 1293 | python-rich |
| 1294 | python-rich-rst |
| 1295 | python-tomli |
| 1296 | python-typing-extensions)) |
| 1297 | (home-page "https://github.com/BrianPugh/cyclopts") |
| 1298 | (synopsis "Intuitive, easy CLIs based on type hints") |
| 1299 | (description |
| 1300 | "Cyclopts is a modern, easy-to-use command-line interface (CLI) framework |
| 1301 | that aims to provide an intuitive & efficient developer experience.") |
| 1302 | (license license:asl2.0))) |
| 1303 | |
| 1304 | (define-public python-darkdetect |
| 1305 | (package |
| 1306 | (name "python-darkdetect") |
| 1307 | (version "0.8.0") |
| 1308 | (source |
| 1309 | (origin |
| 1310 | (method url-fetch) |
| 1311 | (uri (pypi-uri "darkdetect" version)) |
| 1312 | (sha256 |
| 1313 | (base32 "1cgqgpz36dfn7hsqc29ha9pmxmzdjlwdq9aclkgbagi6f08qwhmm")))) |
| 1314 | (build-system pyproject-build-system) |
| 1315 | (arguments |
| 1316 | (list |
| 1317 | #:tests? #f)) ;no tests in PyPI or Git. |
| 1318 | (native-inputs (list python-setuptools)) |
| 1319 | (home-page "https://github.com/albertosottile/darkdetect") |
| 1320 | (synopsis "Detect OS dark mode from Python") |
| 1321 | (description |
| 1322 | "This package allows to detect if the user is using Dark Mode.") |
| 1323 | (license license:bsd-3))) |
| 1324 | |
| 1325 | (define-public python-dbus-deviation |
| 1326 | (package |
| 1327 | (name "python-dbus-deviation") |
| 1328 | (version "0.6.1") |
| 1329 | (source |
| 1330 | (origin |
| 1331 | (method url-fetch) |
| 1332 | (uri (pypi-uri "dbus-deviation" version)) |
| 1333 | (sha256 |
| 1334 | (base32 "18xp1s6k2x08d7a4ksh4dwf3sikvkdycylfz4lkmv213wbpqhsz0")))) |
| 1335 | (build-system pyproject-build-system) |
| 1336 | (arguments |
| 1337 | (list |
| 1338 | #:phases |
| 1339 | #~(modify-phases %standard-phases |
| 1340 | (add-after 'unpack 'patch-sources |
| 1341 | ;; See: <https://github.com/pwithnall/dbus-deviation/issues/22>. |
| 1342 | (lambda _ |
| 1343 | (with-directory-excursion "dbusapi/tests" |
| 1344 | (substitute* '("test_interfaceparser.py" "test_ast.py") |
| 1345 | (("assertEquals") "assertEqual")))))))) |
| 1346 | (propagated-inputs (list python-lxml)) |
| 1347 | (native-inputs (list python-pytest python-setuptools)) |
| 1348 | (home-page "https://tecnocode.co.uk/dbus-deviation/") |
| 1349 | (synopsis "D-Bus introspection XML parser") |
| 1350 | (description "The @{dbus-deviation} library and utility parses D-Bus |
| 1351 | introspection XML and processes it in various ways. For example, it can |
| 1352 | represent a parsed D-Bus API XML description as an @acronym{AST, abstract |
| 1353 | syntax tree}, or calculate the differences between two D-Bus APIs.") |
| 1354 | (license license:lgpl2.1+))) |
| 1355 | |
| 1356 | (define-public python-decopatch |
| 1357 | (package |
| 1358 | (name "python-decopatch") |
| 1359 | (version "1.4.10") |
| 1360 | (source |
| 1361 | (origin |
| 1362 | (method url-fetch) |
| 1363 | (uri (pypi-uri "decopatch" version)) |
| 1364 | (sha256 |
| 1365 | (base32 "082pnnc7a1d7rk40k7m72w7kw8dk7g8m3yzq4cn1hl217z4ljzwm")))) |
| 1366 | (build-system pyproject-build-system) |
| 1367 | (arguments |
| 1368 | (list #:tests? #f)) ;XXX: cycles with python-pytest-cases |
| 1369 | (native-inputs |
| 1370 | (list python-setuptools |
| 1371 | python-setuptools-scm)) |
| 1372 | (propagated-inputs |
| 1373 | (list python-makefun)) |
| 1374 | (home-page "https://github.com/smarie/python-decopatch") |
| 1375 | (synopsis "Create decorators easily in Python") |
| 1376 | (description |
| 1377 | "This package provide implements a functionality to simplify writing |
| 1378 | decorators in Python.") |
| 1379 | (license license:bsd-3))) |
| 1380 | |
| 1381 | (define-public python-dek |
| 1382 | (package |
| 1383 | (name "python-dek") |
| 1384 | (version "1.6.0") |
| 1385 | (source |
| 1386 | (origin |
| 1387 | (method git-fetch) |
| 1388 | (uri (git-reference |
| 1389 | (url "https://github.com/rec/dek") |
| 1390 | (commit (string-append "v" version)))) |
| 1391 | (file-name (git-file-name name version)) |
| 1392 | (sha256 |
| 1393 | (base32 "14y4d1vv9w13ng12x0gk1y4gfqn2sqz91r6bf4019gpgr6kvqj8v")))) |
| 1394 | (build-system pyproject-build-system) |
| 1395 | (native-inputs (list python-hatchling python-pytest)) |
| 1396 | (propagated-inputs (list python-xmod)) |
| 1397 | (home-page "https://rec.github.io/dek/") |
| 1398 | (synopsis "The decorator-decorator") |
| 1399 | (description |
| 1400 | "This package implements a functionality to write a Python decorator |
| 1401 | which takes no parameters isn't hard.") |
| 1402 | (license license:expat))) |
| 1403 | |
| 1404 | (define-public python-discovery |
| 1405 | (package |
| 1406 | (name "python-discovery") |
| 1407 | (version "1.2.1") |
| 1408 | (source |
| 1409 | (origin |
| 1410 | (method git-fetch) |
| 1411 | (uri (git-reference |
| 1412 | (url "https://github.com/tox-dev/python-discovery") |
| 1413 | (commit version))) |
| 1414 | (file-name (git-file-name name version)) |
| 1415 | (sha256 |
| 1416 | (base32 "0zshaiar80h5zzbgv05z74kj8y4dgc96hwqfj2gziwdpcyl3rapp")))) |
| 1417 | (build-system pyproject-build-system) |
| 1418 | (arguments |
| 1419 | (list |
| 1420 | #:test-flags |
| 1421 | ;; assert [] |
| 1422 | #~(list "--deselect=tests/test_discovery.py::test_get_paths_no_path_env"))) |
| 1423 | (native-inputs |
| 1424 | (list python-pytest |
| 1425 | python-pytest-mock |
| 1426 | python-hatchling |
| 1427 | python-hatch-vcs)) |
| 1428 | (propagated-inputs |
| 1429 | (list python-filelock |
| 1430 | python-platformdirs)) |
| 1431 | (home-page "https://github.com/tox-dev/python-discovery") |
| 1432 | (synopsis "Python interpreter discovery") |
| 1433 | (description |
| 1434 | "@code{python-discovery} is a library for discovering Python interpreters |
| 1435 | installed on the current machine which may have multiple Python versions from |
| 1436 | system packages, @code{pyenv}, @code{mise}, @code{asdf}, @code{uv}, or the |
| 1437 | Windows registry (PEP 514). This library finds the right one.") |
| 1438 | (license license:expat))) |
| 1439 | |
| 1440 | (define-public python-distance |
| 1441 | (let ((commit "ad7f9dc7e9b0e88a08d0cefd1442f4ab1dd1779b") |
| 1442 | (revision "0")) |
| 1443 | (package |
| 1444 | (name "python-distance") |
| 1445 | (version (git-version "0.1.3" revision commit)) |
| 1446 | (source |
| 1447 | (origin |
| 1448 | (method git-fetch) |
| 1449 | (uri (git-reference |
| 1450 | (url "https://github.com/doukremt/distance") |
| 1451 | (commit commit))) |
| 1452 | (file-name (git-file-name name version)) |
| 1453 | (sha256 |
| 1454 | (base32 "1vcn0506dy68xyjxdjsl75zzc4b8lmg2yxjgak4i35l7a97yzvwy")))) |
| 1455 | (build-system pyproject-build-system) |
| 1456 | (arguments |
| 1457 | (list #:test-backend #~'custom |
| 1458 | #:test-flags #~(list "tests/tests.py"))) |
| 1459 | (native-inputs (list python-setuptools)) |
| 1460 | (home-page "https://github.com/doukremt/distance") |
| 1461 | (synopsis "Utilities for comparing sequences") |
| 1462 | (description |
| 1463 | "This package provides helpers for computing similarities between |
| 1464 | arbitrary sequences. Included metrics are Levenshtein, Hamming, Jaccard, and |
| 1465 | Sorensen distance, plus some bonuses. All distance computations are |
| 1466 | implemented in pure Python, and most of them are also implemented in C.") |
| 1467 | (license license:gpl2+)))) |
| 1468 | |
| 1469 | (define-public python-docopt-ng |
| 1470 | (package |
| 1471 | (name "python-docopt-ng") |
| 1472 | (version "0.9.0") |
| 1473 | (source |
| 1474 | (origin |
| 1475 | (method git-fetch) |
| 1476 | (uri (git-reference |
| 1477 | (url "https://github.com/jazzband/docopt-ng") |
| 1478 | (commit version))) |
| 1479 | (file-name (git-file-name name version)) |
| 1480 | (sha256 |
| 1481 | (base32 "1vdh1amh8jkhll0ym1r72q1ddg8ds3pyx37kyw9abg1w3abh6ih8")))) |
| 1482 | (build-system pyproject-build-system) |
| 1483 | (native-inputs |
| 1484 | (list python-pdm-backend |
| 1485 | python-pytest-8)) |
| 1486 | (home-page "https://github.com/jazzband/docopt-ng") |
| 1487 | (synopsis "Humane command line arguments parser") |
| 1488 | (description |
| 1489 | "This package provides Jazzband-maintained fork of docopt, the humane |
| 1490 | command line arguments parser.") |
| 1491 | (license license:expat))) |
| 1492 | |
| 1493 | (define-public python-doi |
| 1494 | (package |
| 1495 | (name "python-doi") |
| 1496 | (version "0.2.0") |
| 1497 | (source |
| 1498 | (origin |
| 1499 | (method url-fetch) |
| 1500 | (uri (pypi-uri "python-doi" version)) |
| 1501 | (sha256 |
| 1502 | (base32 "16pxc7llqb14f2n5ccd88pz4sygwl51slssqm2g23g8rndpya09f")))) |
| 1503 | (build-system pyproject-build-system) |
| 1504 | (arguments |
| 1505 | (list #:test-flags |
| 1506 | #~(list "-vv" |
| 1507 | (string-append "-k not (test_validate_doi " |
| 1508 | "or test_get_real_url_from_doi)")))) |
| 1509 | (native-inputs |
| 1510 | (list python-pytest |
| 1511 | python-pytest-xdist |
| 1512 | python-setuptools |
| 1513 | python-sphinx |
| 1514 | python-sphinx-autobuild |
| 1515 | python-sphinx-rtd-theme)) |
| 1516 | (home-page "https://github.com/papis/python-doi") |
| 1517 | (synopsis "Python package to work with Document Object Identifier (doi)") |
| 1518 | (description |
| 1519 | "Python package to work with Document Object Identifier (doi).") |
| 1520 | (license license:gpl3))) |
| 1521 | |
| 1522 | (define-public python-domdf-python-tools |
| 1523 | (package |
| 1524 | (name "python-domdf-python-tools") |
| 1525 | (version "3.10.0") |
| 1526 | (source |
| 1527 | (origin |
| 1528 | (method url-fetch) |
| 1529 | (uri (pypi-uri "domdf_python_tools" version)) |
| 1530 | (sha256 |
| 1531 | (base32 "16727afn92bp6hj4hvp27scc5ldz1y27z9abbxgi9sgiyk90iqra")))) |
| 1532 | (build-system pyproject-build-system) |
| 1533 | (native-inputs (list python-hatch-requirements-txt)) |
| 1534 | (arguments (list #:tests? #f)) ;no tests in PyPI archive |
| 1535 | (propagated-inputs |
| 1536 | (list python-natsort |
| 1537 | python-typing-extensions)) |
| 1538 | (home-page "https://github.com/domdfcoding/domdf_python_tools") |
| 1539 | (synopsis "Helpful functions for Python") |
| 1540 | (description |
| 1541 | "This package provide helpful functions for Python's testing and |
| 1542 | packaging tasks.") |
| 1543 | (license license:expat))) |
| 1544 | |
| 1545 | (define-public python-donfig |
| 1546 | (package |
| 1547 | (name "python-donfig") |
| 1548 | (version "0.8.1.post1") |
| 1549 | (source |
| 1550 | (origin |
| 1551 | (method git-fetch) |
| 1552 | (uri (git-reference |
| 1553 | (url "https://github.com/pytroll/donfig") |
| 1554 | (commit (string-append "v" version)))) |
| 1555 | (file-name (git-file-name name version)) |
| 1556 | (sha256 |
| 1557 | (base32 "0hp6v9lh4gaym48ljvpb00cgcwssj306ypyszha2rlwb7mkknmj6")))) |
| 1558 | (build-system pyproject-build-system) |
| 1559 | (native-inputs |
| 1560 | (list python-cloudpickle |
| 1561 | python-pytest |
| 1562 | python-setuptools |
| 1563 | python-versioneer)) |
| 1564 | (propagated-inputs |
| 1565 | (list python-pyyaml)) |
| 1566 | (home-page "https://github.com/pytroll/donfig") |
| 1567 | (synopsis "Python package for configuring a python package") |
| 1568 | (description |
| 1569 | "Donfig is a Python library meant to make configuration easier for other |
| 1570 | python packages. Donfig can be configured programmatically, by environment |
| 1571 | variables, or from YAML files in standard locations. The below examples show |
| 1572 | the basics of using donfig.") |
| 1573 | (license license:expat))) |
| 1574 | |
| 1575 | (define-public python-duet |
| 1576 | (package |
| 1577 | (name "python-duet") |
| 1578 | (version "0.2.9") |
| 1579 | (source |
| 1580 | (origin |
| 1581 | (method git-fetch) |
| 1582 | (uri (git-reference |
| 1583 | (url "https://github.com/google/duet") |
| 1584 | (commit (string-append "v" version)))) |
| 1585 | (file-name (git-file-name name version)) |
| 1586 | (sha256 |
| 1587 | (base32 "1y1jkhlhhdg0bvlv65xqarhr86sph25zj5c7nshrrv8351973ciz")))) |
| 1588 | (build-system pyproject-build-system) |
| 1589 | (native-inputs (list python-pytest python-setuptools)) |
| 1590 | (home-page "https://github.com/google/duet") |
| 1591 | (synopsis "Simple future-based async library for Python") |
| 1592 | (description |
| 1593 | "This package provides a simple @code{Future}-based async library for |
| 1594 | Python. Duet uses a structured concurrency approach to async programming, |
| 1595 | relying on the @code{Future} interface for parallelism. Duet also provides |
| 1596 | a way to run async/await coroutines around those @code{Future}s. Unlike most |
| 1597 | async libraries, duet is re-entrant.") |
| 1598 | (license license:asl2.0))) |
| 1599 | |
| 1600 | (define-public python-encutils |
| 1601 | (package |
| 1602 | (name "python-encutils") |
| 1603 | (version "1.0.0") |
| 1604 | (source |
| 1605 | (origin |
| 1606 | (method git-fetch) |
| 1607 | (uri (git-reference |
| 1608 | (url "https://github.com/coherent-oss/encutils") |
| 1609 | (commit (string-append "v" version)))) |
| 1610 | (file-name (git-file-name name version)) |
| 1611 | (sha256 |
| 1612 | (base32 "09q2rnlnkfw0pjg95can05xf8z4x5ighbckxnzkccz1f0z2y8xrc")) |
| 1613 | (snippet |
| 1614 | #~(begin |
| 1615 | ;; Upstream is badly packaged, prepare to use Flit-core build |
| 1616 | ;; backend. |
| 1617 | (use-modules (guix build utils)) |
| 1618 | (mkdir "encutils") |
| 1619 | (rename-file "__init__.py" "encutils/__init__.py"))))) |
| 1620 | (build-system pyproject-build-system) |
| 1621 | (arguments |
| 1622 | (list |
| 1623 | #:phases |
| 1624 | #~(modify-phases %standard-phases |
| 1625 | (add-after 'unpack 'prepare-python-module-with-flit |
| 1626 | (lambda _ |
| 1627 | (call-with-output-file "pyproject.toml" |
| 1628 | (lambda (port) |
| 1629 | (format port "[build-system] |
| 1630 | requires = ['flit_core'] |
| 1631 | build-backend = 'flit_core.buildapi' |
| 1632 | [project] |
| 1633 | name = ~s |
| 1634 | version = ~s |
| 1635 | description = ~s |
| 1636 | [tool.flit.module] |
| 1637 | name = ~s~%" |
| 1638 | "encutils" |
| 1639 | #$version |
| 1640 | #$(package-description this-package) |
| 1641 | "encutils")))))))) |
| 1642 | (propagated-inputs (list python-chardet)) |
| 1643 | (native-inputs (list python-flit-core python-pytest)) |
| 1644 | (home-page "https://github.com/coherent-oss/encutils") |
| 1645 | (synopsis "Encoding detection collection for Python") |
| 1646 | (description |
| 1647 | "This package provides a collection of helper functions to detect |
| 1648 | encodings of text files (like HTML, XHTML, XML, CSS, etc.) retrieved via HTTP, |
| 1649 | file or string.") |
| 1650 | ;; See: <https://github.com/coherent-oss/encutils/issues/1>. |
| 1651 | (license license:lgpl3+))) |
| 1652 | |
| 1653 | (define-public python-envs |
| 1654 | (package |
| 1655 | (name "python-envs") |
| 1656 | (version "1.4") |
| 1657 | (source |
| 1658 | (origin |
| 1659 | (method url-fetch) |
| 1660 | (uri (pypi-uri "envs" version)) |
| 1661 | (sha256 |
| 1662 | (base32 "160358zskyg6g606lndjcv7yd2nv5f7ca14y55lds72xk333b14x")))) |
| 1663 | (build-system pyproject-build-system) |
| 1664 | (arguments |
| 1665 | (list #:test-backend #~'unittest)) |
| 1666 | (native-inputs |
| 1667 | (list python-packaging python-poetry-core)) |
| 1668 | (propagated-inputs |
| 1669 | (list python-click python-jinja2 python-terminaltables)) |
| 1670 | (home-page "https://github.com/capless/envs") |
| 1671 | (synopsis "Easy access of environment variables from Python") |
| 1672 | (description |
| 1673 | "This package implements a functionality to access of environment |
| 1674 | variables from Python with support for strings, booleans, list, tuples, and |
| 1675 | dicts.") |
| 1676 | (license license:asl2.0))) |
| 1677 | |
| 1678 | (define-public python-eval-type-backport |
| 1679 | (package |
| 1680 | (name "python-eval-type-backport") |
| 1681 | (version "0.4.0") |
| 1682 | (source |
| 1683 | (origin |
| 1684 | (method git-fetch) |
| 1685 | (uri (git-reference |
| 1686 | (url "https://github.com/alexmojaki/eval_type_backport") |
| 1687 | (commit (string-append "v" version)))) |
| 1688 | (file-name (git-file-name name version)) |
| 1689 | (sha256 |
| 1690 | (base32 "0ygbmsfyxis62xipcag8z2avl0bwpiwy83hbaghl5kq0s1m396la")))) |
| 1691 | (build-system pyproject-build-system) |
| 1692 | (native-inputs |
| 1693 | (list python-pytest python-setuptools python-setuptools-scm)) |
| 1694 | (home-page "https://github.com/alexmojaki/eval_type_backport") |
| 1695 | (synopsis "Letting older Python versions use newer typing features") |
| 1696 | (description |
| 1697 | "This package makes runtime typing inspection with the typing module |
| 1698 | possible with newer syntax in older Python versions. Specifically, this |
| 1699 | transforms @code{X | Y} into @code{typing.Union[X, Y]} and @code{list[X]} into |
| 1700 | @code{typing.List[X]} etc. (for all the types made generic in PEP 585) if the |
| 1701 | original syntax is not supported in the current Python version.") |
| 1702 | (license license:expat))) |
| 1703 | |
| 1704 | (define-public python-exitcode |
| 1705 | (package |
| 1706 | (name "python-exitcode") |
| 1707 | (version "0.1.0") |
| 1708 | (source |
| 1709 | (origin |
| 1710 | (method url-fetch) |
| 1711 | (uri (pypi-uri "exitcode" version)) |
| 1712 | (sha256 |
| 1713 | (base32 "01yybyi4pkvvf4382p28gh4lkxrcyl5vcx2xk95nbsb8011f37mw")))) |
| 1714 | (build-system pyproject-build-system) |
| 1715 | (arguments |
| 1716 | (list #:tests? #f)) ; no tests in PyPI or Git |
| 1717 | (native-inputs |
| 1718 | (list python-poetry-core |
| 1719 | python-setuptools)) |
| 1720 | (home-page "https://github.com/rumpelsepp/exitcode") |
| 1721 | (synopsis "Preferred system exit codes as defined by sysexits.h") |
| 1722 | (description |
| 1723 | "This package implements a preferred system exit codes as defined by |
| 1724 | @url{https://man.openbsd.org/sysexits, sysexits.h}. This library is inspired by |
| 1725 | Rust's @url{https://docs.rs/exitcode, exitcode}.") |
| 1726 | (license license:expat))) |
| 1727 | |
| 1728 | (define-public python-exrex |
| 1729 | (package |
| 1730 | (name "python-exrex") |
| 1731 | (version "0.12.0") |
| 1732 | (source |
| 1733 | (origin |
| 1734 | (method git-fetch) |
| 1735 | (uri (git-reference |
| 1736 | (url "https://github.com/asciimoo/exrex") |
| 1737 | (commit (string-append "v" version)))) |
| 1738 | (file-name (git-file-name name version)) |
| 1739 | (sha256 |
| 1740 | (base32 "0lvhkxfrpgi7g6lzp97m1hqzkn5aa9yr544jff2ya2w49c5flg81")))) |
| 1741 | (build-system pyproject-build-system) |
| 1742 | (arguments (list #:test-backend #~'custom |
| 1743 | #:test-flags #~'("tests.py"))) |
| 1744 | (native-inputs (list python-setuptools)) |
| 1745 | (home-page "https://github.com/asciimoo/exrex") |
| 1746 | (synopsis "Irregular methods for regular expressions") |
| 1747 | (description |
| 1748 | "Exrex is a command line tool and Python module that generates all, |
| 1749 | or random, matching strings to a given regular expression.") |
| 1750 | (license license:agpl3+))) |
| 1751 | |
| 1752 | (define-public python-extra-platforms |
| 1753 | (package |
| 1754 | (name "python-extra-platforms") |
| 1755 | (version "13.6.0") |
| 1756 | (source |
| 1757 | (origin |
| 1758 | (method git-fetch) |
| 1759 | (uri (git-reference |
| 1760 | (url "https://github.com/kdeldycke/extra-platforms") |
| 1761 | (commit (string-append "v" version)))) |
| 1762 | (file-name (git-file-name name version)) |
| 1763 | (sha256 |
| 1764 | (base32 "0h9bg8dn5zzcm0nnn5wvnc7yrwlglg5yvbxfzwkg4vm123l72zsa")))) |
| 1765 | (build-system pyproject-build-system) |
| 1766 | (arguments |
| 1767 | (list |
| 1768 | #:build-backend "setuptools.build_meta" |
| 1769 | ;; Skip the network tests. |
| 1770 | #:test-flags #~(list "-m" "not network"))) |
| 1771 | (native-inputs |
| 1772 | (list python-pytest |
| 1773 | python-setuptools)) |
| 1774 | (home-page "https://kdeldycke.github.io/extra-platforms/") |
| 1775 | (synopsis "Detection of architectures, platforms, and OS families") |
| 1776 | (description |
| 1777 | "Extra Platforms detects and identifies operating systems, platforms, |
| 1778 | architectures, and OS families. It groups them by family for conditional |
| 1779 | logic in cross-platform applications.") |
| 1780 | (license license:asl2.0))) |
| 1781 | |
| 1782 | (define-public python-ezdxf |
| 1783 | (package |
| 1784 | (name "python-ezdxf") |
| 1785 | (version "1.3.5") |
| 1786 | (source |
| 1787 | (origin |
| 1788 | (method git-fetch) |
| 1789 | (uri (git-reference |
| 1790 | (url "https://github.com/mozman/ezdxf") |
| 1791 | (commit (string-append "v" version)))) |
| 1792 | (sha256 |
| 1793 | (base32 "14rb99dakzzpdflnsw2wr2y0s28fhqz4dp78mi823457bdpv18ix")))) |
| 1794 | (build-system pyproject-build-system) |
| 1795 | (native-inputs (list python-cython python-pillow python-pytest |
| 1796 | python-setuptools unzip)) |
| 1797 | (propagated-inputs (list python-fonttools python-numpy python-pyparsing |
| 1798 | python-typing-extensions)) |
| 1799 | (home-page "https://ezdxf.mozman.at/") |
| 1800 | (synopsis "Python library to read and write DXF drawings") |
| 1801 | (description "ezdxf is a Python package to create new DXF files and |
| 1802 | read/modify/write existing DXF files.") |
| 1803 | (license license:expat))) |
| 1804 | |
| 1805 | (define-public python-fastnumbers |
| 1806 | (package |
| 1807 | (name "python-fastnumbers") |
| 1808 | (version "5.1.1") |
| 1809 | (source |
| 1810 | (origin |
| 1811 | (method url-fetch) |
| 1812 | (uri (pypi-uri "fastnumbers" version)) |
| 1813 | (sha256 |
| 1814 | (base32 "0jzsylarbckivx762rxmc9syn7a6hqq3xhp5xnpfsln0rlhs0gqq")))) |
| 1815 | (build-system pyproject-build-system) |
| 1816 | (native-inputs |
| 1817 | (list python-numpy |
| 1818 | python-pytest |
| 1819 | python-setuptools |
| 1820 | python-setuptools-scm)) |
| 1821 | (home-page "https://github.com/SethMMorton/fastnumbers") |
| 1822 | (synopsis "Super-fast and clean conversions to numbers") |
| 1823 | (description |
| 1824 | "This package provides provides drop-in replacements for the Python |
| 1825 | built-in @code{int} and @code{float} that are on par or faster with the Python |
| 1826 | equivalents.") |
| 1827 | (license license:expat))) |
| 1828 | |
| 1829 | (define-public python-findpython |
| 1830 | (package |
| 1831 | (name "python-findpython") |
| 1832 | (version "0.7.0") |
| 1833 | (source |
| 1834 | (origin |
| 1835 | (method url-fetch) |
| 1836 | (uri (pypi-uri "findpython" version)) |
| 1837 | (sha256 |
| 1838 | (base32 "1p3kqr00sym0yaddsbaw1gf7nslfnscnd050q6ipj9rmfry68ccb")))) |
| 1839 | (build-system pyproject-build-system) |
| 1840 | (native-inputs |
| 1841 | (list python-pdm-backend |
| 1842 | python-pytest)) |
| 1843 | (propagated-inputs |
| 1844 | (list python-packaging |
| 1845 | python-platformdirs)) |
| 1846 | (home-page "https://github.com/frostming/findpython") |
| 1847 | (synopsis "Find Python versions the system") |
| 1848 | (description |
| 1849 | "This package provides a utility to find Python versions on the current |
| 1850 | system.") |
| 1851 | (license license:expat))) |
| 1852 | |
| 1853 | (define-public python-flexcache |
| 1854 | (package |
| 1855 | (name "python-flexcache") |
| 1856 | (version "0.3") |
| 1857 | (source |
| 1858 | (origin |
| 1859 | (method git-fetch) |
| 1860 | (uri (git-reference |
| 1861 | (url "https://github.com/hgrecco/flexcache") |
| 1862 | (commit version))) |
| 1863 | (file-name (git-file-name name version)) |
| 1864 | (sha256 |
| 1865 | (base32 "08b1i79q6gxcn6c5gkgscwjnzwlwaaz9vmlgrr7z9kbindxx61ih")))) |
| 1866 | (build-system pyproject-build-system) |
| 1867 | (native-inputs |
| 1868 | (list python-pytest |
| 1869 | python-setuptools |
| 1870 | python-setuptools-scm)) |
| 1871 | (propagated-inputs |
| 1872 | (list python-typing-extensions)) |
| 1873 | (home-page "https://github.com/hgrecco/flexcache") |
| 1874 | (synopsis "Caching transformed versions of a source object") |
| 1875 | (description |
| 1876 | "This package implements a functionality to cache on disk the result of |
| 1877 | expensive calculations. It was started as part of |
| 1878 | @url{https://github.com/hgrecco/pint, Pint}, the Python units package.") |
| 1879 | (license license:bsd-3))) |
| 1880 | |
| 1881 | (define-public python-flexparser |
| 1882 | (package |
| 1883 | (name "python-flexparser") |
| 1884 | (version "0.4") |
| 1885 | (source |
| 1886 | (origin |
| 1887 | (method git-fetch) |
| 1888 | (uri (git-reference |
| 1889 | (url "https://github.com/hgrecco/flexparser") |
| 1890 | (commit version))) |
| 1891 | (file-name (git-file-name name version)) |
| 1892 | (sha256 |
| 1893 | (base32 "1aj6b2a5w0z814x4gr8z4lmpf4ivp41gikx998lkk7rbdgh2kryh")))) |
| 1894 | (build-system pyproject-build-system) |
| 1895 | (native-inputs |
| 1896 | (list python-pytest |
| 1897 | python-setuptools |
| 1898 | python-setuptools-scm)) |
| 1899 | (propagated-inputs |
| 1900 | (list python-typing-extensions)) |
| 1901 | (home-page "https://github.com/hgrecco/flexparser") |
| 1902 | (synopsis "Parsing made fun ... using typing") |
| 1903 | (description "This project provides a typed parser. It was started as |
| 1904 | part of @url{https://github.com/hgrecco/pint, Pint}, the Python units |
| 1905 | package. ") |
| 1906 | (license license:bsd-3))) |
| 1907 | |
| 1908 | (define-public python-fortranformat |
| 1909 | (package |
| 1910 | (name "python-fortranformat") |
| 1911 | (version "2.0.3") |
| 1912 | (source |
| 1913 | (origin |
| 1914 | (method git-fetch) |
| 1915 | (uri (git-reference |
| 1916 | (url "https://github.com/brendanarnold/py-fortranformat") |
| 1917 | (commit (string-append "v" version)))) |
| 1918 | (file-name (git-file-name name version)) |
| 1919 | (sha256 |
| 1920 | (base32 "0k4lpj72a6zy1m5855w6b127q8h20c1xfr0x3gasqbkqqz65kli6")))) |
| 1921 | (build-system pyproject-build-system) |
| 1922 | (native-inputs |
| 1923 | (list python-poetry-core |
| 1924 | python-pytest)) |
| 1925 | (home-page "https://github.com/brendanarnold/py-fortranformat") |
| 1926 | (synopsis "FORTRAN format interpreter for Python") |
| 1927 | (description |
| 1928 | "This package mimics FORTRAN textual IO in Python - generates text from a |
| 1929 | Python list of variables or will read a line of text into Python variables |
| 1930 | according to the FORTRAN format statement passed.") |
| 1931 | (license license:expat))) |
| 1932 | |
| 1933 | (define-public python-gest-api |
| 1934 | (package |
| 1935 | (name "python-gest-api") |
| 1936 | (version "0.1") |
| 1937 | (source |
| 1938 | (origin |
| 1939 | (method url-fetch) |
| 1940 | (uri (pypi-uri "gest_api" version)) |
| 1941 | (sha256 |
| 1942 | (base32 "1a15glcwadq7zkp3dzrlbwj2k5xr1lad8xp9yzg8zarg0whjfwf5")))) |
| 1943 | (build-system pyproject-build-system) |
| 1944 | (native-inputs |
| 1945 | (list python-pytest |
| 1946 | python-setuptools)) |
| 1947 | (propagated-inputs |
| 1948 | (list python-pydantic)) |
| 1949 | (home-page "https://github.com/campa-consortium/gest-api") |
| 1950 | (synopsis "Standardization for generators") |
| 1951 | (description |
| 1952 | "This package provides a standard for generating test points and |
| 1953 | exchanging variables, objectives, and constraints in optimization problems. |
| 1954 | |
| 1955 | It is an effort to standardize the interface of the generators in optimization |
| 1956 | libraries such as: |
| 1957 | @itemize |
| 1958 | @item @url{https://github.com/ChristopherMayes/Xopt, Xopt} - flexible |
| 1959 | high-level optimization in Python |
| 1960 | @item @url{https://github.com/optimas-org/optimas, optimas} - optimization at |
| 1961 | scale, powered by @code{libEnsemble} |
| 1962 | @item @url{https://github.com/Libensemble/libensemble, libEnsemble} - a Python |
| 1963 | toolkit for coordinating asynchronous and dynamic ensembles of calculations |
| 1964 | @item @url{https://github.com/radiasoft/rsopt, rsopt} - flexible configuration |
| 1965 | and execution of large, black-box optimization problems |
| 1966 | @end itemize") |
| 1967 | (license license:bsd-3))) |
| 1968 | |
| 1969 | (define-public python-grapheme |
| 1970 | ;; 0.6.0 has not git tag, PyPI has no tests. use the latest commit on master |
| 1971 | ;; branch. |
| 1972 | (let ((commit "66f07ca02fc64a9ea2f9b4ad66593b226d473adb") |
| 1973 | (revision "0")) |
| 1974 | (package |
| 1975 | (name "python-grapheme") |
| 1976 | (version (git-version "0.6.0" revision commit)) |
| 1977 | (source |
| 1978 | (origin |
| 1979 | (method git-fetch) |
| 1980 | (uri (git-reference |
| 1981 | (url "https://github.com/alvinlindstam/grapheme") |
| 1982 | (commit commit))) |
| 1983 | (file-name (git-file-name name version)) |
| 1984 | (sha256 |
| 1985 | (base32 "0fqw6iymg7s8q1pfwijx0awcj1j55jppx7hfa5ci7y0c7x4jc8v9")))) |
| 1986 | (build-system pyproject-build-system) |
| 1987 | (native-inputs |
| 1988 | (list python-pytest |
| 1989 | python-setuptools)) |
| 1990 | (home-page "https://github.com/alvinlindstam/grapheme") |
| 1991 | (synopsis "Unicode grapheme helpers") |
| 1992 | (description |
| 1993 | "This package provides a functionality for working with user perceived |
| 1994 | characters. More specifically, string manipulation and calculation functions |
| 1995 | for working with grapheme cluster groups (graphemes) as defined by the |
| 1996 | @url{http://unicode.org/reports/tr29/, Unicode Standard Annex #29}.") |
| 1997 | (license license:expat)))) |
| 1998 | |
| 1999 | (define-public python-halo |
| 2000 | (package |
| 2001 | (name "python-halo") |
| 2002 | (version "0.0.31") |
| 2003 | (source |
| 2004 | (origin |
| 2005 | (method url-fetch) |
| 2006 | (uri (pypi-uri "halo" version)) |
| 2007 | (sha256 |
| 2008 | (base32 "1mn97h370ggbc9vi6x8r6akd5q8i512y6kid2nvm67g93r9a6rvv")))) |
| 2009 | (build-system pyproject-build-system) |
| 2010 | (arguments |
| 2011 | (list #:tests? #f)) ;no tests in PyPI archive, no tags in Git |
| 2012 | (native-inputs |
| 2013 | (list python-setuptools)) |
| 2014 | (propagated-inputs |
| 2015 | (list python-colorama |
| 2016 | python-log-symbols |
| 2017 | python-six |
| 2018 | python-spinners |
| 2019 | python-termcolor)) |
| 2020 | (home-page "https://github.com/manrajgrover/halo") |
| 2021 | (synopsis "Python library to display graphical spinners in the terminal") |
| 2022 | (description |
| 2023 | "Halo is a Python library to display graphical spinners in the terminal. |
| 2024 | It also supports IPython/Jupyter.") |
| 2025 | (license license:expat))) |
| 2026 | |
| 2027 | (define-public python-hatch-argparse-manpage |
| 2028 | (package |
| 2029 | (name "python-hatch-argparse-manpage") |
| 2030 | (version "1.0.0") |
| 2031 | (source |
| 2032 | (origin |
| 2033 | (method git-fetch) |
| 2034 | (uri (git-reference |
| 2035 | (url "https://github.com/damonlynch/hatch-argparse-manpage") |
| 2036 | (commit (string-append "v" version)))) |
| 2037 | (file-name (git-file-name name version)) |
| 2038 | (sha256 |
| 2039 | (base32 "1zhh3q7xfz9mvwdihjprw89g0ffl0m5xc6v24cskrm4j35wgmq25")))) |
| 2040 | (build-system pyproject-build-system) |
| 2041 | (arguments (list #:tests? #f)) ; No tests upstream. |
| 2042 | (native-inputs (list python-hatchling)) |
| 2043 | (propagated-inputs (list python-argparse-manpage python-rich)) |
| 2044 | (home-page "https://github.com/damonlynch/hatch-argparse-manpage") |
| 2045 | (synopsis "Hatch build hook plugin to generate manual pages") |
| 2046 | (description |
| 2047 | "This package provides a build hook plugin for Hatch to automatically |
| 2048 | bs generate a manual page from an ArgumentParser object, using argparse-manpage |
| 2049 | by Pavel Raiskup.") |
| 2050 | (license license:gpl3+))) |
| 2051 | |
| 2052 | (define-public python-hatch-cython |
| 2053 | (package |
| 2054 | (name "python-hatch-cython") |
| 2055 | (version "0.6.0") |
| 2056 | (source |
| 2057 | (origin |
| 2058 | (method git-fetch) |
| 2059 | (uri (git-reference |
| 2060 | (url "https://github.com/joshua-auchincloss/hatch-cython") |
| 2061 | (commit (string-append "v" version)))) |
| 2062 | (file-name (git-file-name name version)) |
| 2063 | (sha256 |
| 2064 | (base32 "0fczzvmg7i62p3wr2jayyl11p5q5cmwnyw79f0a6jv5d9xhaygpn")))) |
| 2065 | (build-system pyproject-build-system) |
| 2066 | (arguments |
| 2067 | (list |
| 2068 | #:test-flags #~(list "tests"))) |
| 2069 | (native-inputs |
| 2070 | (list python-hatchling |
| 2071 | python-numpy |
| 2072 | python-pytest |
| 2073 | python-toml)) |
| 2074 | (propagated-inputs |
| 2075 | (list python-cython |
| 2076 | python-hatchling |
| 2077 | python-setuptools)) |
| 2078 | (home-page "https://github.com/joshua-auchincloss/hatch-cython") |
| 2079 | (synopsis "Cython build hooks for Hatch") |
| 2080 | (description "This package provides a Cython build hooks for Hatch.") |
| 2081 | (license license:expat))) |
| 2082 | |
| 2083 | (define-public python-hatch-gettext |
| 2084 | (package |
| 2085 | (name "python-hatch-gettext") |
| 2086 | (version "1.1.0") |
| 2087 | (source |
| 2088 | (origin |
| 2089 | (method git-fetch) |
| 2090 | (uri (git-reference |
| 2091 | (url "https://github.com/damonlynch/hatch-gettext") |
| 2092 | (commit (string-append "v" version)))) |
| 2093 | (file-name (git-file-name name version)) |
| 2094 | (sha256 |
| 2095 | (base32 "0q35pscb6grwpdghxig8i0016gdsqn3jmcqi844yg9dcrvj4swwq")))) |
| 2096 | (build-system pyproject-build-system) |
| 2097 | (arguments (list #:tests? #f)) ; No tests upstream. |
| 2098 | (native-inputs (list python-hatchling)) |
| 2099 | (propagated-inputs (list python-rich)) |
| 2100 | (home-page "https://github.com/damonlynch/hatch-gettext") |
| 2101 | (synopsis "Hatch build hook plugin for GNU gettext") |
| 2102 | (description |
| 2103 | "This package provides a build hook plugin for Hatch that compiles |
| 2104 | bsmulti-lingual messages with GNU gettext's tools msgfmt.") |
| 2105 | (license license:gpl3+))) |
| 2106 | |
| 2107 | (define-public python-hatch-nodejs-version |
| 2108 | (package |
| 2109 | (name "python-hatch-nodejs-version") |
| 2110 | (version "0.4.0") |
| 2111 | (source |
| 2112 | (origin |
| 2113 | (method git-fetch) |
| 2114 | (uri (git-reference |
| 2115 | (url "https://github.com/agoose77/hatch-nodejs-version") |
| 2116 | (commit (string-append "v" version)))) |
| 2117 | (file-name (git-file-name name version)) |
| 2118 | (sha256 |
| 2119 | (base32 "00ik9yjc9329qq487lk0hs04jsj6l0adffb39l3711p1bhf3pv9r")))) |
| 2120 | (build-system pyproject-build-system) |
| 2121 | (propagated-inputs (list python-hatchling)) |
| 2122 | (native-inputs (list python-hatchling python-pytest)) |
| 2123 | (home-page "https://github.com/agoose77/hatch-nodejs-version") |
| 2124 | (synopsis "Hatch plugin for versioning from a package.json file") |
| 2125 | (description "This package provides a hatch plugin for fetching a version |
| 2126 | from a @code{package.json} file.") |
| 2127 | (license license:expat))) |
| 2128 | |
| 2129 | (define-public python-hatch-regex-commit |
| 2130 | (package |
| 2131 | (name "python-hatch-regex-commit") |
| 2132 | (version "0.0.4") |
| 2133 | (source |
| 2134 | (origin |
| 2135 | (method git-fetch) |
| 2136 | (uri (git-reference |
| 2137 | (url "https://github.com/frankie567/hatch-regex-commit") |
| 2138 | (commit (string-append "v" version)))) |
| 2139 | (file-name (git-file-name name version)) |
| 2140 | (sha256 |
| 2141 | (base32 "01ngfz2x49h323akksfhwlpp6hiy36ai5gnxfspd10g2rjm7gny5")))) |
| 2142 | (build-system pyproject-build-system) |
| 2143 | (arguments (list #:tests? #f)) ;test directory is empty |
| 2144 | (propagated-inputs (list python-hatchling)) |
| 2145 | (native-inputs (list python-hatchling)) |
| 2146 | (home-page "https://github.com/frankie567/hatch-regex-commit") |
| 2147 | (synopsis "Hatch plugin to create a commit and tag when bumping version") |
| 2148 | (description |
| 2149 | "This provides a plugin for Hatch that automatically creates a Git commit |
| 2150 | and tag after version bumping.") |
| 2151 | (license license:expat))) |
| 2152 | |
| 2153 | ;; TODO: Move to ci or task-runners, see: |
| 2154 | ;; <https://codeberg.org/guix/guix/issues/3096>. |
| 2155 | (define-public python-huey |
| 2156 | (package |
| 2157 | (name "python-huey") |
| 2158 | (version "2.5.3") |
| 2159 | (source |
| 2160 | (origin |
| 2161 | (method git-fetch) |
| 2162 | (uri (git-reference |
| 2163 | (url "https://github.com/coleifer/huey") |
| 2164 | (commit version))) |
| 2165 | (file-name (git-file-name name version)) |
| 2166 | (sha256 |
| 2167 | (base32 "189sin0k9imiddm10xa5llql3953p1jv6dqgxm78hy18qrlbkz02")))) |
| 2168 | (build-system pyproject-build-system) |
| 2169 | (arguments |
| 2170 | (list |
| 2171 | #:phases |
| 2172 | #~(modify-phases %standard-phases |
| 2173 | (add-after 'unpack 'remove-which |
| 2174 | (lambda _ |
| 2175 | (substitute* "huey/tests/test_kt_huey.py" |
| 2176 | (("^has_ktserver = sp.call\\(\\['which', 'ktserver'\\].*$") |
| 2177 | "has_ktserver = False")))) |
| 2178 | (replace 'check |
| 2179 | (lambda* (#:key tests? #:allow-other-keys) |
| 2180 | (when tests? |
| 2181 | (spawn "redis-server" '("redis-server")) |
| 2182 | (invoke "python3" "-m" "runtests" "--verbosity" "2"))))))) |
| 2183 | (native-inputs (list python-setuptools redis tzdata-for-tests)) |
| 2184 | (propagated-inputs (list python-redis)) |
| 2185 | (home-page "https://huey.readthedocs.io") |
| 2186 | (synopsis "Lightweight task queue for Python") |
| 2187 | (description |
| 2188 | "Huey is a lightweight task queue for Python applications. Huey |
| 2189 | supports: |
| 2190 | @itemize |
| 2191 | @item Redis, SQLite, file-system, or in-memory storage |
| 2192 | @item multi-process, multi-thread or greenlet task execution models |
| 2193 | @item scheduling tasks to execute at a given time, or after a given delay |
| 2194 | @item scheduling recurring tasks, like a crontab |
| 2195 | @item automatically retrying tasks that fail |
| 2196 | @item task prioritization |
| 2197 | @item task result storage |
| 2198 | @item task expiration |
| 2199 | @item task locking |
| 2200 | @item task pipelines and chains |
| 2201 | @end itemize") |
| 2202 | (license license:expat))) |
| 2203 | |
| 2204 | (define-public python-id |
| 2205 | (package |
| 2206 | (name "python-id") |
| 2207 | (version "1.5.0") |
| 2208 | (source |
| 2209 | (origin |
| 2210 | (method url-fetch) |
| 2211 | (uri (pypi-uri "id" version)) |
| 2212 | (sha256 |
| 2213 | (base32 "07acfgq7vmbz94p5axn9d40m8qjcgfllfkr4jz7dpfxcksjbhb19")))) |
| 2214 | (build-system pyproject-build-system) |
| 2215 | (native-inputs |
| 2216 | (list python-flit-core |
| 2217 | python-pretend |
| 2218 | python-pytest)) |
| 2219 | (propagated-inputs |
| 2220 | (list python-requests)) |
| 2221 | (home-page "https://github.com/di/id") |
| 2222 | (synopsis "Tool for generating OIDC identities") |
| 2223 | (description |
| 2224 | "This package provides a tool for generating @code{OIDC, OpenID Connect} |
| 2225 | identities.") |
| 2226 | (license license:asl2.0))) |
| 2227 | |
| 2228 | (define-public python-iniparse |
| 2229 | (package |
| 2230 | (name "python-iniparse") |
| 2231 | (version "0.5.1") |
| 2232 | (source |
| 2233 | (origin |
| 2234 | (method git-fetch) |
| 2235 | (uri (git-reference |
| 2236 | (url "https://github.com/candlepin/python-iniparse") |
| 2237 | (commit version))) |
| 2238 | (file-name (git-file-name name version)) |
| 2239 | (sha256 |
| 2240 | (base32 "0hh676j1yw7krwmzpaxl59bhl5g04dbbzbr84qryrw420npy2prp")))) |
| 2241 | (build-system pyproject-build-system) |
| 2242 | (arguments |
| 2243 | (list |
| 2244 | #:test-backend #~'custom |
| 2245 | #:test-flags #~(list "runtests.py") |
| 2246 | #:phases |
| 2247 | #~(modify-phases %standard-phases |
| 2248 | (add-before 'check 'disable-tests |
| 2249 | (lambda _ |
| 2250 | ;; XXX: Three tests failed to compare lists. |
| 2251 | (substitute* "tests/test_compat.py" |
| 2252 | (("test_read_returns_file_list") |
| 2253 | "disabled_test_read_returns_file_list"))))))) |
| 2254 | (native-inputs |
| 2255 | (list python-setuptools)) |
| 2256 | (home-page "https://github.com/candlepin/python-iniparse") |
| 2257 | (synopsis "Accessing and Modifying INI files") |
| 2258 | (description |
| 2259 | "iniparse is a INI parser for Python which is: |
| 2260 | @itemize |
| 2261 | @item Compatible with ConfigParser: Backward compatible implementations of |
| 2262 | ConfigParser, RawConfigParser, and SafeConfigParser are included that are |
| 2263 | API-compatible with the Python standard library. |
| 2264 | @item Preserves structure of INI files: Order of sections & options, |
| 2265 | indentation, comments, and blank lines are preserved as far as possible when |
| 2266 | data is updated. |
| 2267 | @item More convenient: Values can be accessed using dotted notation |
| 2268 | (@code{cfg.user.name}), or using container syntax |
| 2269 | (@code{cfg['user']['name']}). |
| 2270 | @end itemize") |
| 2271 | (license license:expat))) |
| 2272 | |
| 2273 | (define-public python-inotify |
| 2274 | (package |
| 2275 | (name "python-inotify") |
| 2276 | (version "0.2.12") |
| 2277 | (source |
| 2278 | (origin |
| 2279 | (method git-fetch) |
| 2280 | (uri (git-reference |
| 2281 | (url "https://github.com/dsoprea/PyInotify") |
| 2282 | (commit version))) |
| 2283 | (file-name (git-file-name name version)) |
| 2284 | (sha256 |
| 2285 | (base32 "1n1rqpzk70ap2i4zk2k0znz407i909y2001v65agy7y30apjzb67")))) |
| 2286 | (build-system pyproject-build-system) |
| 2287 | (arguments |
| 2288 | (list |
| 2289 | #:phases |
| 2290 | #~(modify-phases %standard-phases |
| 2291 | (add-after 'unpack 'fix-requirements |
| 2292 | (lambda _ |
| 2293 | (substitute* "inotify/resources/requirements.txt" |
| 2294 | (("build") |
| 2295 | ""))))))) |
| 2296 | (native-inputs (list python-pytest python-setuptools)) |
| 2297 | (propagated-inputs (list python-pyasyncore)) |
| 2298 | (home-page "https://github.com/dsoprea/PyInotify") |
| 2299 | (synopsis "Linux filesystem activity monitor library for Python") |
| 2300 | (description |
| 2301 | "This package provides an efficient and elegant inotify (Linux filesystem |
| 2302 | activity monitor) library for Python.") |
| 2303 | (license license:gpl2))) |
| 2304 | |
| 2305 | (define-public python-intervaltree |
| 2306 | (package |
| 2307 | (name "python-intervaltree") |
| 2308 | (version "3.1.0") |
| 2309 | (source |
| 2310 | (origin |
| 2311 | (method url-fetch) |
| 2312 | (uri (pypi-uri "intervaltree" version)) |
| 2313 | (sha256 |
| 2314 | (base32 |
| 2315 | "0bcm6c6r4ck9nfj9xwz4rm2swc5lrjvmw3lyl6rgj639jf41nawh")))) |
| 2316 | (build-system pyproject-build-system) |
| 2317 | (arguments |
| 2318 | `(#:phases |
| 2319 | (modify-phases %standard-phases |
| 2320 | ;; pytest seems to have a check to make sure the user is testing |
| 2321 | ;; their checked-out code and not an installed, potentially |
| 2322 | ;; out-of-date copy. This is harmless here, since we just installed |
| 2323 | ;; the package, so we disable the check to avoid skipping tests |
| 2324 | ;; entirely. |
| 2325 | (add-before 'check 'import-mismatch-error-workaround |
| 2326 | (lambda _ |
| 2327 | (setenv "PY_IGNORE_IMPORTMISMATCH" "1") |
| 2328 | #t))))) |
| 2329 | (propagated-inputs |
| 2330 | (list python-sortedcontainers)) |
| 2331 | (native-inputs |
| 2332 | (list python-setuptools python-pytest)) |
| 2333 | (home-page "https://github.com/chaimleib/intervaltree") |
| 2334 | (synopsis "Editable interval tree data structure") |
| 2335 | (description |
| 2336 | "This package provides a mutable, self-balancing interval tree |
| 2337 | implementation for Python. Queries may be by point, by range overlap, or by |
| 2338 | range envelopment. This library was designed to allow tagging text and time |
| 2339 | intervals, where the intervals include the lower bound but not the upper |
| 2340 | bound.") |
| 2341 | (license license:asl2.0))) |
| 2342 | |
| 2343 | (define-public python-jschon |
| 2344 | (package |
| 2345 | (name "python-jschon") |
| 2346 | (version "0.11.1") |
| 2347 | (source |
| 2348 | (origin |
| 2349 | (method git-fetch) |
| 2350 | (uri (git-reference |
| 2351 | (url "https://github.com/marksparkza/jschon/") |
| 2352 | (commit (string-append "v" version)) |
| 2353 | (recursive? #t))) ;required for tests |
| 2354 | (sha256 |
| 2355 | (base32 "0javlbq83ffy98kinhl7i17ja00917856yg55qlbn8048lhc9sxq")) |
| 2356 | (file-name (git-file-name name version)))) |
| 2357 | (build-system pyproject-build-system) |
| 2358 | (propagated-inputs |
| 2359 | (list python-rfc3986)) |
| 2360 | (native-inputs |
| 2361 | (list python-coverage |
| 2362 | python-hypothesis |
| 2363 | python-pytest |
| 2364 | python-pytest-benchmark |
| 2365 | python-pytest-httpserver |
| 2366 | python-requests |
| 2367 | python-setuptools)) |
| 2368 | (home-page "https://jschon.readthedocs.io/") |
| 2369 | (synopsis "Object-oriented JSON Schema implementation for Python") |
| 2370 | (description |
| 2371 | "This package provides a JSON toolkit for Python developers.") |
| 2372 | (license license:expat))) |
| 2373 | |
| 2374 | (define-public python-jsonpath-ng |
| 2375 | (package |
| 2376 | (name "python-jsonpath-ng") |
| 2377 | (version "1.7.0" ) |
| 2378 | (source |
| 2379 | (origin |
| 2380 | (method git-fetch) |
| 2381 | (uri (git-reference |
| 2382 | (url "https://github.com/h2non/jsonpath-ng") |
| 2383 | (commit (string-append "v" version)))) |
| 2384 | (file-name (git-file-name name version)) |
| 2385 | (sha256 |
| 2386 | (base32 "0z0qm5sgzal0qzml2fmc9h5nim8m3x6sz55gqhcd9c2jrq8jmwmi")))) |
| 2387 | (build-system pyproject-build-system) |
| 2388 | (native-inputs |
| 2389 | (list python-pytest |
| 2390 | python-setuptools)) |
| 2391 | (propagated-inputs |
| 2392 | (list python-ply)) |
| 2393 | (home-page "https://github.com/h2non/jsonpath-ng") |
| 2394 | (synopsis "JSONPath Next-Generation") |
| 2395 | (description |
| 2396 | "This package provides a final implementation of @code{JSONPath} for |
| 2397 | Python that aims to be standard compliant, including arithmetic and binary |
| 2398 | comparison operators, as defined in the original |
| 2399 | @url{http://goessner.net/articles/JsonPath/, JSONPath} proposal.") |
| 2400 | (license license:asl2.0))) |
| 2401 | |
| 2402 | (define-public python-json-log-formatter |
| 2403 | (package |
| 2404 | (name "python-json-log-formatter") |
| 2405 | (version "1.2.1") |
| 2406 | (source |
| 2407 | (origin |
| 2408 | (method git-fetch) |
| 2409 | (uri (git-reference |
| 2410 | (url "https://github.com/marselester/json-log-formatter") |
| 2411 | (commit (string-append "v" version)))) |
| 2412 | (file-name (git-file-name name version)) |
| 2413 | (sha256 |
| 2414 | (base32 "0xpsv3a5cvwpggqyjkkr59z8wl8n44zkhpwqjnnn7cshb9skvkz1")))) |
| 2415 | (build-system pyproject-build-system) |
| 2416 | (arguments (list #:test-flags #~(list "-s" "tests.py"))) |
| 2417 | (native-inputs |
| 2418 | (list python-django-minimal |
| 2419 | python-pytest |
| 2420 | python-setuptools |
| 2421 | python-simplejson |
| 2422 | python-ujson)) |
| 2423 | (home-page "https://github.com/marselester/json-log-formatter") |
| 2424 | (synopsis "JSON log formatter") |
| 2425 | (description "The library helps you to store logs in JSON format.") |
| 2426 | (license license:expat))) |
| 2427 | |
| 2428 | (define-public python-keeper-secrets-manager-core |
| 2429 | ;; released from a monorepo with other packages following various versioning |
| 2430 | ;; schemes. This commit was selected because some failing tests were fixed |
| 2431 | ;; since the most recent release of the Python SDK packages. |
| 2432 | (let ((commit "2c9a63d433721dee129a3647077d59bb243b52ec") |
| 2433 | (revision "0")) |
| 2434 | (package |
| 2435 | (name "python-keeper-secrets-manager-core") |
| 2436 | (version (git-version "17.0.0" revision commit)) |
| 2437 | (source |
| 2438 | (origin |
| 2439 | (method git-fetch) |
| 2440 | (uri (git-reference |
| 2441 | (url "https://github.com/Keeper-Security/secrets-manager") |
| 2442 | (commit commit))) |
| 2443 | (file-name (git-file-name name version)) |
| 2444 | (sha256 |
| 2445 | (base32 "1mqx0xv28xyljd4s7wwi154h8v22ayi8k337afhhw0pg2c8150pp")))) |
| 2446 | (build-system pyproject-build-system) |
| 2447 | (arguments |
| 2448 | (list |
| 2449 | #:phases |
| 2450 | #~(modify-phases %standard-phases |
| 2451 | (add-after 'unpack 'chdir |
| 2452 | (lambda _ |
| 2453 | (chdir "sdk/python/core")))))) |
| 2454 | (propagated-inputs |
| 2455 | (list python-cryptography |
| 2456 | python-importlib-metadata |
| 2457 | python-requests)) |
| 2458 | (native-inputs |
| 2459 | (list python-pytest |
| 2460 | python-setuptools)) |
| 2461 | (home-page "https://github.com/Keeper-Security/secrets-manager") |
| 2462 | (synopsis "Keeper Secrets Manager for Python SDK") |
| 2463 | (description |
| 2464 | "The Keeper Secrets Manager Python SDK provides access to |
| 2465 | @url{https://www.keepersecurity.com/secrets-manager.html, Keeper Secrets |
| 2466 | Management} services.") |
| 2467 | (license license:expat)))) |
| 2468 | |
| 2469 | (define-public python-keeper-secrets-manager-helper |
| 2470 | ;; released alongside keeper-secrets-manager-core, but with a different |
| 2471 | ;; versioning scheme. |
| 2472 | (let ((commit "2c9a63d433721dee129a3647077d59bb243b52ec") |
| 2473 | (revision "0")) |
| 2474 | (package |
| 2475 | (name "python-keeper-secrets-manager-helper") |
| 2476 | (version (git-version "1.0.6" revision commit)) |
| 2477 | (source |
| 2478 | (origin |
| 2479 | (method git-fetch) |
| 2480 | (uri (git-reference |
| 2481 | (url "https://github.com/Keeper-Security/secrets-manager") |
| 2482 | (commit commit))) |
| 2483 | (file-name (git-file-name name version)) |
| 2484 | (sha256 |
| 2485 | (base32 "1mqx0xv28xyljd4s7wwi154h8v22ayi8k337afhhw0pg2c8150pp")))) |
| 2486 | (build-system pyproject-build-system) |
| 2487 | (arguments |
| 2488 | (list |
| 2489 | #:phases |
| 2490 | #~(modify-phases %standard-phases |
| 2491 | (add-after 'unpack 'chdir |
| 2492 | (lambda _ |
| 2493 | (chdir "sdk/python/helper")))))) |
| 2494 | (propagated-inputs |
| 2495 | (list python-iso8601 |
| 2496 | python-keeper-secrets-manager-core |
| 2497 | python-pyyaml)) |
| 2498 | (native-inputs |
| 2499 | (list python-pytest |
| 2500 | python-setuptools)) |
| 2501 | (home-page "https://github.com/Keeper-Security/secrets-manager") |
| 2502 | (synopsis "Keeper Secrets Manager for Python SDK helper for managing records") |
| 2503 | (description |
| 2504 | "Keeper Secrets Manager SDK helper is for creating and managing secret |
| 2505 | records. It is intended to be used with @code{keeper-secrets-manager-core}.") |
| 2506 | (license license:expat)))) |
| 2507 | |
| 2508 | (define-public python-language-data |
| 2509 | (package |
| 2510 | (name "python-language-data") |
| 2511 | (version "1.3.0") |
| 2512 | (source |
| 2513 | (origin |
| 2514 | (method url-fetch) |
| 2515 | (uri (pypi-uri "language_data" version)) |
| 2516 | (sha256 |
| 2517 | (base32 "1v6pp8z2wxj3hafl62hbx8sbinpp9cr0r7y80rfi8mcmlf5fy03n")))) |
| 2518 | (build-system pyproject-build-system) |
| 2519 | (native-inputs |
| 2520 | (list python-pytest |
| 2521 | python-setuptools |
| 2522 | python-setuptools-scm)) |
| 2523 | (propagated-inputs |
| 2524 | (list python-marisa-trie)) |
| 2525 | (home-page "https://github.com/georgkrause/language_data") |
| 2526 | (synopsis "Supplementary data about languages used by the langcodes module") |
| 2527 | (description |
| 2528 | "language_data is a supplement to the langcodes module, for working with |
| 2529 | standardized codes for human languages. It stores the more bulky and |
| 2530 | hard-to-index data about languages, particularly what they are named in |
| 2531 | various languages.") |
| 2532 | (license license:expat))) |
| 2533 | |
| 2534 | (define-public python-log-symbols |
| 2535 | (package |
| 2536 | (name "python-log-symbols") |
| 2537 | (version "0.0.14") |
| 2538 | (source |
| 2539 | (origin |
| 2540 | (method url-fetch) |
| 2541 | (uri (pypi-uri "log_symbols" version)) |
| 2542 | (sha256 |
| 2543 | (base32 "0mh5d0igw33libfmbsr1ri1p1y644p36nwaa2w6kzrd8w5pvq2yg")))) |
| 2544 | (build-system pyproject-build-system) |
| 2545 | (arguments |
| 2546 | (list #:tests? #f)) ;no tests in PyPI archive, tests depend on Nose |
| 2547 | (native-inputs |
| 2548 | (list python-setuptools)) |
| 2549 | (propagated-inputs |
| 2550 | (list python-colorama)) |
| 2551 | (home-page "https://github.com/manrajgrover/py-log-symbols") |
| 2552 | (synopsis "Python library with graphical symbols for logging on the terminal") |
| 2553 | (description |
| 2554 | "This package provides a Python library with graphical symbols that can |
| 2555 | be displayed on the terminal, with color if possible, for logging purposes.") |
| 2556 | (license license:expat))) |
| 2557 | |
| 2558 | (define-public python-lsprotocol |
| 2559 | (package |
| 2560 | (name "python-lsprotocol") |
| 2561 | (version "2025.0.0") |
| 2562 | (source |
| 2563 | (origin |
| 2564 | (method git-fetch) |
| 2565 | (uri (git-reference |
| 2566 | (url "https://github.com/microsoft/lsprotocol") |
| 2567 | (commit version))) |
| 2568 | (file-name (git-file-name name version)) |
| 2569 | (sha256 |
| 2570 | (base32 "0m5c2wd7f3i1ipdf0lqhfmgi7d9jw6sa49pvx8828r83r0f9gd8f")))) |
| 2571 | (build-system pyproject-build-system) |
| 2572 | (arguments |
| 2573 | (list |
| 2574 | #:tests? #f ;no tests for Python package |
| 2575 | #:phases |
| 2576 | #~(modify-phases %standard-phases |
| 2577 | (add-after 'unpack 'cd-packages-python |
| 2578 | (lambda _ |
| 2579 | (chdir "packages/python")))))) |
| 2580 | (native-inputs |
| 2581 | (list python-flit-core)) |
| 2582 | (propagated-inputs |
| 2583 | (list python-attrs |
| 2584 | python-cattrs)) |
| 2585 | (home-page "https://github.com/microsoft/lsprotocol") |
| 2586 | (synopsis "Python types for Language Server Protocol.") |
| 2587 | (description |
| 2588 | "@code{lsprotocol} is a Python implementation of object types used in |
| 2589 | the Language Server Protocol (LSP). This repository contains the code |
| 2590 | generator and the generated types for LSP.") |
| 2591 | (license license:expat))) |
| 2592 | |
| 2593 | (define-public python-marisa-trie |
| 2594 | (package |
| 2595 | (name "python-marisa-trie") |
| 2596 | (version "1.3.1") |
| 2597 | (source |
| 2598 | (origin |
| 2599 | (method url-fetch) |
| 2600 | (uri (pypi-uri "marisa_trie" version)) |
| 2601 | (sha256 |
| 2602 | (base32 "0nzq9yc3qdpnnvhi9zlp6vcpk6id5lx3943pm7zgir1h5z8py44p")))) |
| 2603 | (build-system pyproject-build-system) |
| 2604 | (native-inputs |
| 2605 | (list python-cython |
| 2606 | python-hypothesis |
| 2607 | python-pytest |
| 2608 | python-readme-renderer |
| 2609 | python-setuptools)) |
| 2610 | (home-page "https://github.com/pytries/marisa-trie") |
| 2611 | (synopsis "Static memory-efficient Trie-like structures for Python") |
| 2612 | (description |
| 2613 | "This package provides static memory-efficient and fast Trie-like structures |
| 2614 | for Python.") |
| 2615 | (license license:expat))) |
| 2616 | |
| 2617 | (define-public python-materialyoucolor |
| 2618 | (package |
| 2619 | (name "python-materialyoucolor") |
| 2620 | (version "3.0.2") |
| 2621 | (source |
| 2622 | (origin |
| 2623 | (method git-fetch) |
| 2624 | (uri (git-reference |
| 2625 | (url "https://github.com/T-Dynamos/materialyoucolor-python") |
| 2626 | (commit (string-append "v" version)))) |
| 2627 | (file-name (git-file-name name version)) |
| 2628 | (sha256 |
| 2629 | (base32 "1yxz05g681zpvxzfcvp4dwayq8hjvw773n4lixkhgxkvvan5hah8")))) |
| 2630 | (build-system pyproject-build-system) |
| 2631 | (arguments |
| 2632 | (list #:test-backend #~'custom |
| 2633 | #:test-flags #~(list "tests/test_all.py"))) |
| 2634 | (propagated-inputs (list python-pillow)) |
| 2635 | (native-inputs (list pybind11 python-psutil python-rich python-setuptools)) |
| 2636 | (home-page "https://github.com/T-Dynamos/materialyoucolor-python") |
| 2637 | (synopsis "Material You color generation algorithms") |
| 2638 | (description |
| 2639 | "@code{python-materialyoucolor} provides a tool that generates harmonious |
| 2640 | color palettes from the dominant colors of an image, based on the |
| 2641 | @uref{https://m3.material.io/styles/color/system/overview, Material color |
| 2642 | system}.") |
| 2643 | (license license:expat))) |
| 2644 | |
| 2645 | (define-public python-menuinst |
| 2646 | (package |
| 2647 | (name "python-menuinst") |
| 2648 | (version "2.4.1") |
| 2649 | (source |
| 2650 | (origin |
| 2651 | (method git-fetch) |
| 2652 | (uri (git-reference |
| 2653 | (url "https://github.com/conda/menuinst") |
| 2654 | (commit version))) |
| 2655 | (file-name (git-file-name name version)) |
| 2656 | (sha256 |
| 2657 | (base32 "0606j3mwpcj4rqj8mifnrdqqhp8dqf802kagqkp7mmi2wffly27w")))) |
| 2658 | (build-system pyproject-build-system) |
| 2659 | (arguments |
| 2660 | (list |
| 2661 | #:tests? #f)) ;tests need conda |
| 2662 | (native-inputs |
| 2663 | (list python-setuptools |
| 2664 | python-setuptools-scm)) |
| 2665 | (home-page "https://conda.github.io/menuinst/") |
| 2666 | (synopsis "Cross platform menu item installation") |
| 2667 | (description |
| 2668 | "This package provides cross platform menu item installation for conda |
| 2669 | packages.") |
| 2670 | (license license:bsd-3))) |
| 2671 | |
| 2672 | (define-public python-multiplex |
| 2673 | (package |
| 2674 | (name "python-multiplex") |
| 2675 | (version "0.6.1") |
| 2676 | (source |
| 2677 | (origin |
| 2678 | (method git-fetch) ;no tests in PyPI archive |
| 2679 | (uri (git-reference |
| 2680 | (url "https://github.com/dankilman/multiplex") |
| 2681 | (commit version))) |
| 2682 | (file-name (git-file-name name version)) |
| 2683 | (sha256 |
| 2684 | (base32 "1a662liqhiya47i6vrz3q03w08viqg3wj5j3g58mz175hcdcmmmv")))) |
| 2685 | (build-system pyproject-build-system) |
| 2686 | (native-inputs |
| 2687 | (list python-poetry-core |
| 2688 | python-pytest |
| 2689 | python-pytest-asyncio)) |
| 2690 | (propagated-inputs |
| 2691 | (list python-aiofiles |
| 2692 | python-aiostream |
| 2693 | python-click |
| 2694 | python-easy-ansi-0.3 |
| 2695 | python-pyte)) |
| 2696 | (home-page "https://github.com/dankilman/multiplex") |
| 2697 | (synopsis "Parallel stream of outputs from multiple processes") |
| 2698 | (description |
| 2699 | "This package provides a functionality to view output of multiple |
| 2700 | processes, in parallel, in the console, with an interactive TUI.") |
| 2701 | (license license:expat))) |
| 2702 | |
| 2703 | (define-public python-nrepl |
| 2704 | (package |
| 2705 | (name "python-nrepl") |
| 2706 | (version "0.3.4") |
| 2707 | (source |
| 2708 | (origin |
| 2709 | (method git-fetch) |
| 2710 | (uri (git-reference |
| 2711 | (url "https://git.sr.ht/~ngraves/nrepl-python") |
| 2712 | (commit version))) |
| 2713 | (file-name (git-file-name name version)) |
| 2714 | (sha256 |
| 2715 | (base32 "12fi4ilkslh9rg5dilqknrr6sm2rhs2v91xhyfi432f0dp5920lp")))) |
| 2716 | (build-system pyproject-build-system) |
| 2717 | (arguments |
| 2718 | (list |
| 2719 | #:test-flags |
| 2720 | #~(list "--numprocesses" (number->string (parallel-job-count))))) |
| 2721 | (native-inputs |
| 2722 | (list python-flit-core |
| 2723 | python-pytest |
| 2724 | python-pytest-asyncio |
| 2725 | python-pytest-xdist)) |
| 2726 | (propagated-inputs |
| 2727 | (list python-fastbencode |
| 2728 | python-gevent |
| 2729 | python-ipython)) |
| 2730 | (home-page "https://git.sr.ht/~ngraves/nrepl-python") |
| 2731 | (synopsis "NREPL server for Python") |
| 2732 | (description |
| 2733 | "This package provides an implementation of the @url{https://nrepl.org, |
| 2734 | NREPL} protocol for Python.") |
| 2735 | (license license:gpl3+))) |
| 2736 | |
| 2737 | (define-public python-num2words |
| 2738 | (package |
| 2739 | (name "python-num2words") |
| 2740 | (version "0.5.14") |
| 2741 | (source |
| 2742 | (origin |
| 2743 | (method git-fetch) |
| 2744 | (uri (git-reference |
| 2745 | (url "https://github.com/savoirfairelinux/num2words") |
| 2746 | (commit (string-append "v" version)))) |
| 2747 | (file-name (git-file-name name version)) |
| 2748 | (sha256 |
| 2749 | (base32 "1h52kgh1h4q9nkkplpwix2xs6f6wwvlxq09clznr2589xv39iqlz")))) |
| 2750 | (build-system pyproject-build-system) |
| 2751 | (arguments |
| 2752 | (list |
| 2753 | #:test-flags |
| 2754 | #~(list "--ignore" "tests/test_cli.py"))) ;Requires delegator.py. |
| 2755 | (native-inputs (list python-pytest python-setuptools)) |
| 2756 | (propagated-inputs (list python-docopt)) |
| 2757 | (home-page "https://github.com/savoirfairelinux/num2words") |
| 2758 | (synopsis "Convert numbers to words in multiple languages") |
| 2759 | (description |
| 2760 | "@code{num2words} is a library that converts numbers like 42 to words like |
| 2761 | forty-two. It supports multiple languages, and can even generate ordinal |
| 2762 | numbers like forty-second.") |
| 2763 | (license license:lgpl2.1))) |
| 2764 | |
| 2765 | (define-public python-orderly-set |
| 2766 | (package |
| 2767 | (name "python-orderly-set") |
| 2768 | (version "5.5.0") |
| 2769 | (source |
| 2770 | (origin |
| 2771 | (method url-fetch) |
| 2772 | (uri (pypi-uri "orderly_set" version)) |
| 2773 | (sha256 |
| 2774 | (base32 "1kp64m0nabhhb0zxr4f8idrmniraahnfwq41gx7adbyqwk48awg8")))) |
| 2775 | (build-system pyproject-build-system) |
| 2776 | (native-inputs (list python-flit-core python-pytest)) |
| 2777 | (home-page "https://github.com/seperman/orderly-set") |
| 2778 | (synopsis "Multiple implementations of Ordered Set") |
| 2779 | (description "Orderly Set is a package containing multiple implementations |
| 2780 | of Ordered Set.") |
| 2781 | (license license:expat))) |
| 2782 | |
| 2783 | (define-public python-packageurl |
| 2784 | (package |
| 2785 | (name "python-packageurl") |
| 2786 | (version "0.17.6") |
| 2787 | (source |
| 2788 | (origin |
| 2789 | (method git-fetch) |
| 2790 | (uri (git-reference |
| 2791 | (url "https://github.com/package-url/packageurl-python") |
| 2792 | (commit (string-append "v" version)))) |
| 2793 | (file-name (git-file-name name version)) |
| 2794 | (sha256 |
| 2795 | (base32 "03b6nf6jxzcbgkmqdp3bsl2lvzszqiaiqfwk88cnpvqbgq67lafb")) |
| 2796 | (modules '((guix build utils))) |
| 2797 | ;; Remove bundled virtualenv and license files used only for |
| 2798 | ;; development; not needed at build or runtime. |
| 2799 | (snippet '(delete-file-recursively "thirdparty")))) |
| 2800 | (build-system pyproject-build-system) |
| 2801 | (arguments |
| 2802 | (list #:test-flags |
| 2803 | ;; test_purl_spec.py reads JSON fixtures from the 'spec' git |
| 2804 | ;; submodule at import time; skip it when the submodule is absent. |
| 2805 | #~(list "--ignore=tests/test_purl_spec.py"))) |
| 2806 | (native-inputs |
| 2807 | (list python-pytest |
| 2808 | python-setuptools)) |
| 2809 | (home-page "https://www.packageurl.org") |
| 2810 | (synopsis "Package URL parser and builder") |
| 2811 | (description |
| 2812 | "This library parses and builds Package URLs (purls) as defined in the |
| 2813 | purl specification. It provides a @code{PackageURL} class for creating, |
| 2814 | parsing, and normalizing package URL strings across different package |
| 2815 | management ecosystems.") |
| 2816 | (license license:expat))) |
| 2817 | |
| 2818 | (define-public python-pandocfilters |
| 2819 | (package |
| 2820 | (name "python-pandocfilters") |
| 2821 | (version "1.5.1") |
| 2822 | (source |
| 2823 | (origin |
| 2824 | (method url-fetch) |
| 2825 | (uri (pypi-uri "pandocfilters" version)) |
| 2826 | (sha256 |
| 2827 | (base32 "17lknixjja23jczlv8afgfky94m4gwl7wc36iczw1sz4brallaq0")))) |
| 2828 | (build-system pyproject-build-system) |
| 2829 | (arguments |
| 2830 | (list #:tests? #f)) ;require pandoc to run tests |
| 2831 | (native-inputs |
| 2832 | (list python-setuptools)) |
| 2833 | (home-page "https://github.com/jgm/pandocfilters") |
| 2834 | (synopsis "Python module for writing Pandoc filters") |
| 2835 | (description "Pandoc is a powerful utility to transform various |
| 2836 | input formats into a wide range of output formats. To alter the |
| 2837 | exported output document, Pandoc allows the usage of filters, which |
| 2838 | are pipes that read a JSON serialization of the Pandoc AST from stdin, |
| 2839 | transform it in some way, and write it to stdout. It allows therefore |
| 2840 | to alter the processing of Pandoc's supported input formats, for |
| 2841 | instance one can add new syntax elements to markdown, etc. |
| 2842 | |
| 2843 | This package provides Python bindings.") |
| 2844 | (license license:bsd-3))) |
| 2845 | |
| 2846 | (define-public python-panflute |
| 2847 | (package |
| 2848 | (name "python-panflute") |
| 2849 | (version "2.3.1") |
| 2850 | (source |
| 2851 | (origin |
| 2852 | (method url-fetch) |
| 2853 | (uri (pypi-uri "panflute" version)) |
| 2854 | (sha256 |
| 2855 | (base32 "07wg5md93jcdkpiqljwr3p1xzvm6nf7vbiay0bp84fgg6hmd06sz")))) |
| 2856 | (build-system pyproject-build-system) |
| 2857 | (arguments |
| 2858 | (list #:tests? #f)) ;require pandoc to run tests |
| 2859 | (native-inputs |
| 2860 | (list python-setuptools)) |
| 2861 | (propagated-inputs |
| 2862 | (list python-click |
| 2863 | python-pyyaml)) |
| 2864 | (home-page "http://scorreia.com/software/panflute/") |
| 2865 | (synopsis "Pythonic Pandoc filters") |
| 2866 | (description |
| 2867 | "Panflute is a Python package that makes Pandoc filters fun to write. |
| 2868 | It is a pythonic alternative to John MacFarlane's pandocfilters, from which it |
| 2869 | is heavily inspired.") |
| 2870 | (license license:bsd-3))) |
| 2871 | |
| 2872 | (define-public python-pastel |
| 2873 | (package |
| 2874 | (name "python-pastel") |
| 2875 | (version "0.2.1") |
| 2876 | (source |
| 2877 | (origin |
| 2878 | (method git-fetch) |
| 2879 | (uri (git-reference |
| 2880 | (url "https://github.com/sdispater/pastel") |
| 2881 | (commit version))) |
| 2882 | (file-name (git-file-name name version)) |
| 2883 | (sha256 |
| 2884 | (base32 "1lwip9qaqfacgwnl5ykr0846y1nky228k7h7vzrgyqj1viapprsv")))) |
| 2885 | (build-system pyproject-build-system) |
| 2886 | (arguments |
| 2887 | (list |
| 2888 | #:test-flags |
| 2889 | #~(list "pastel" "tests/") |
| 2890 | #:phases |
| 2891 | #~(modify-phases %standard-phases |
| 2892 | (add-after 'unpack 'use-poetry-core |
| 2893 | (lambda _ |
| 2894 | ;; Patch to use the core poetry API. |
| 2895 | (substitute* "pyproject.toml" |
| 2896 | (("poetry.masonry.api") "poetry.core.masonry.api"))))))) |
| 2897 | (native-inputs (list python-poetry-core python-pytest)) |
| 2898 | (home-page "https://github.com/sdispater/pastel") |
| 2899 | (synopsis "Library to colorize strings in your terminal") |
| 2900 | (description |
| 2901 | "Pastel is a simple library to help you colorize strings in your |
| 2902 | terminal.") |
| 2903 | (license license:expat))) |
| 2904 | |
| 2905 | (define-public python-pathlib-abc |
| 2906 | (package |
| 2907 | (name "python-pathlib-abc") |
| 2908 | (version "0.5.0") |
| 2909 | (source |
| 2910 | (origin |
| 2911 | (method url-fetch) |
| 2912 | (uri (pypi-uri "pathlib_abc" version)) |
| 2913 | (sha256 |
| 2914 | (base32 "1hy2rscq3msbpjs17jbhsqjs800kcnv2w1n425yh1ly609a9x726")))) |
| 2915 | (build-system pyproject-build-system) |
| 2916 | (native-inputs (list python-pytest python-hatchling)) |
| 2917 | (home-page "https://github.com/barneygale/pathlib-abc") |
| 2918 | (synopsis "Python base classes for rich path objects") |
| 2919 | (description |
| 2920 | "This package is a preview of pathlib functionality planned for a future |
| 2921 | release of Python; specifically, it provides three ABCs that can be used to |
| 2922 | implement path classes for non-local filesystems") |
| 2923 | (license license:psfl))) |
| 2924 | |
| 2925 | ;; XXX: It's for [email protected], remove when no longer required. |
| 2926 | (define-public python-pathlib-abc-for-python-pathy |
| 2927 | (hidden-package |
| 2928 | (package |
| 2929 | (inherit python-pathlib-abc) |
| 2930 | (version "0.1.1") |
| 2931 | (source |
| 2932 | (origin |
| 2933 | (method url-fetch) |
| 2934 | (uri (pypi-uri "pathlib_abc" version)) |
| 2935 | (sha256 |
| 2936 | (base32 "1gjsj7r331i54kbisy0zz1h9icx1hv6n97jaj5s7f3wvj7fpnkh8"))))))) |
| 2937 | |
| 2938 | (define-public python-pbs-installer |
| 2939 | (package |
| 2940 | (name "python-pbs-installer") |
| 2941 | (version "2025.09.18") |
| 2942 | (source |
| 2943 | (origin |
| 2944 | (method git-fetch) |
| 2945 | (uri (git-reference |
| 2946 | (url "https://github.com/frostming/pbs-installer") |
| 2947 | (commit version))) |
| 2948 | (file-name (git-file-name name version)) |
| 2949 | (sha256 |
| 2950 | (base32 "0f5gpr4xp71d46vk2ggbb31bhagj4drf1ijl1lg1jd1apimr0jkf")))) |
| 2951 | (build-system pyproject-build-system) |
| 2952 | (arguments |
| 2953 | (list |
| 2954 | #:tests? #f ;no tests provided |
| 2955 | #:phases |
| 2956 | #~(modify-phases %standard-phases |
| 2957 | (add-before 'build 'set-version |
| 2958 | (lambda _ |
| 2959 | (setenv "PDM_BUILD_SCM_VERSION" #$version)))))) |
| 2960 | (native-inputs |
| 2961 | (list python-pdm-backend |
| 2962 | python-pytest)) |
| 2963 | (propagated-inputs |
| 2964 | (list python-httpx |
| 2965 | python-zstandard)) |
| 2966 | (home-page "https://github.com/frostming/pbs-installer") |
| 2967 | (synopsis "Installer for Python Build Standalone") |
| 2968 | (description |
| 2969 | "This package implements an installer for |
| 2970 | @url{https://github.com/astral-sh/python-build-standalone, Python Build |
| 2971 | Standalone}.") |
| 2972 | (license license:expat))) |
| 2973 | |
| 2974 | (define-public python-phply |
| 2975 | (package |
| 2976 | (name "python-phply") |
| 2977 | (version "1.2.6") |
| 2978 | (source |
| 2979 | (origin |
| 2980 | (method url-fetch) |
| 2981 | (uri (pypi-uri "phply" version)) |
| 2982 | (sha256 |
| 2983 | (base32 "05s9v2q6b2r0i65zfw4jf1nzb619zgw0anl08ls7ll2z516pf9qb")))) |
| 2984 | (build-system pyproject-build-system) |
| 2985 | (native-inputs |
| 2986 | (list python-pytest |
| 2987 | python-setuptools)) |
| 2988 | (propagated-inputs |
| 2989 | (list python-ply)) |
| 2990 | (home-page "https://github.com/viraptor/phply") |
| 2991 | (synopsis "PHP parser written in Python using PLY") |
| 2992 | (description |
| 2993 | "@code{phply} is a parser for the PHP programming language written using |
| 2994 | PLY,a Lex/YACC-style parser generator toolkit for Python.") |
| 2995 | (license license:bsd-3))) |
| 2996 | |
| 2997 | (define-public python-puccinialin |
| 2998 | (package |
| 2999 | (name "python-puccinialin") |
| 3000 | (version "0.1.5") |
| 3001 | (source |
| 3002 | (origin |
| 3003 | (method url-fetch) |
| 3004 | (uri (pypi-uri "puccinialin" version)) |
| 3005 | (sha256 |
| 3006 | (base32 "00nnqcvvyn10zxkhgzcfn8czwvdzm0vh5z16plb0dxspccd69dmv")))) |
| 3007 | (build-system pyproject-build-system) |
| 3008 | (arguments |
| 3009 | (list #:tests? #f)) ;no tests in PyPI or Git |
| 3010 | (native-inputs |
| 3011 | (list python-hatchling)) |
| 3012 | (propagated-inputs |
| 3013 | (list python-httpx |
| 3014 | python-platformdirs |
| 3015 | python-tqdm)) |
| 3016 | (home-page "https://github.com/konstin/puccinialin") |
| 3017 | (synopsis "Helper for bootstrapping Rust-based build back-ends for Python") |
| 3018 | (description |
| 3019 | "This tool helps to install Rust into a temporary directory, allowing |
| 3020 | support of Rust-based Python builds. Cargo and rustc are installed into a |
| 3021 | cache directory, to avoid modifying the host's environment, and further |
| 3022 | activated using a set of environment variables.") |
| 3023 | (license (list license:expat license:asl2.0)))) |
| 3024 | |
| 3025 | (define-public python-py010parser |
| 3026 | (package |
| 3027 | (name "python-py010parser") |
| 3028 | (version "0.1.18") |
| 3029 | (source |
| 3030 | (origin |
| 3031 | (method git-fetch) |
| 3032 | (uri (git-reference |
| 3033 | (url "https://github.com/d0c-s4vage/py010parser") |
| 3034 | (commit (string-append "v" version)))) |
| 3035 | (file-name (git-file-name name version)) |
| 3036 | (sha256 (base32 "0yiyal9vxrni2yy3f6fwpndxz4kih6pwm9ikgrmhx4nq0fkb68m3")) |
| 3037 | (modules '((guix build utils))) |
| 3038 | (snippet #~(begin |
| 3039 | ;; Unbundle ply. |
| 3040 | (substitute* "requirements.txt" |
| 3041 | (("^six\\>.*") "")) |
| 3042 | (substitute* "setup.py" |
| 3043 | (("(packages += \\['py010parser').*\\]" all first) |
| 3044 | (string-append first "]"))) |
| 3045 | (delete-file-recursively "py010parser/ply") |
| 3046 | (substitute* (find-files "py010parser" "\\.py$") |
| 3047 | ((" .*\\.ply\\>") " ply")) |
| 3048 | ;; Avoid regenerating the lex table. |
| 3049 | (substitute* '("py010parser/__init__.py" |
| 3050 | "py010parser/c_parser.py") |
| 3051 | (("(lex_optimize=)[A-Za-z]+(,)" all open close) |
| 3052 | (string-append open "False" close))) |
| 3053 | (substitute* '("py010parser/__init__.py" |
| 3054 | "setup.py") |
| 3055 | (("\\{\\{VERSION\\}\\}") #$version)) |
| 3056 | (substitute* "setup.cfg" |
| 3057 | (("description-file") "description_file")))))) |
| 3058 | (build-system pyproject-build-system) |
| 3059 | (arguments (list #:test-backend #~'unittest |
| 3060 | #:test-flags #~'("discover" "tests"))) |
| 3061 | (propagated-inputs (list python-regex python-ply)) |
| 3062 | (native-inputs (list python-setuptools)) |
| 3063 | (home-page "https://github.com/d0c-s4vage/py010parser") |
| 3064 | (synopsis "Parser of 010 editor's template") |
| 3065 | (description |
| 3066 | "@code{py010parser} is a Python library for parsing templates |
| 3067 | for the Sweetscape 010 binary-format editor.") |
| 3068 | (license license:bsd-3))) |
| 3069 | |
| 3070 | (define-public python-pyasynchat |
| 3071 | (package |
| 3072 | (name "python-pyasynchat") |
| 3073 | (version "1.0.5") |
| 3074 | (source |
| 3075 | (origin |
| 3076 | (method git-fetch) |
| 3077 | (uri (git-reference |
| 3078 | (url "https://github.com/simonrob/pyasynchat") |
| 3079 | (commit (string-append "v" version)))) |
| 3080 | (file-name (git-file-name name version)) |
| 3081 | (sha256 |
| 3082 | (base32 "1fsxr7rv662wwlpq8fklj8z6g0x9f693l0mk1qhib5v5xni99698")))) |
| 3083 | (build-system pyproject-build-system) |
| 3084 | (native-inputs |
| 3085 | (list python-pytest |
| 3086 | python-setuptools)) |
| 3087 | (propagated-inputs |
| 3088 | (list python-pyasyncore)) |
| 3089 | (home-page "https://github.com/simonrob/pyasynchat") |
| 3090 | (synopsis "Make asynchat available for Python 3.12 onwards") |
| 3091 | (description |
| 3092 | "This package contains the |
| 3093 | @url{https://docs.python.org/3.11/library/asynchat.html, asynchat} module as |
| 3094 | found in Python versions prior to 3.12. It is provided so that existing code |
| 3095 | relying on @code{import asynchat} is able to continue being used without |
| 3096 | significant refactoring.") |
| 3097 | (license license:psfl))) |
| 3098 | |
| 3099 | (define-public python-pyasyncore |
| 3100 | (package |
| 3101 | (name "python-pyasyncore") |
| 3102 | (version "1.0.5") |
| 3103 | (source |
| 3104 | (origin |
| 3105 | (method git-fetch) |
| 3106 | (uri (git-reference |
| 3107 | (url "https://github.com/simonrob/pyasyncore") |
| 3108 | (commit (string-append "v" version)))) |
| 3109 | (file-name (git-file-name name version)) |
| 3110 | (sha256 |
| 3111 | (base32 "11fk83w9dwnwhg5z1524w6h021yvn0aqn2hsf929yzyk0rmsr6c2")))) |
| 3112 | (build-system pyproject-build-system) |
| 3113 | (native-inputs (list python-pytest python-setuptools)) |
| 3114 | (home-page "https://github.com/simonrob/pyasyncore") |
| 3115 | (synopsis "Make asyncore available for Python 3.12 onwards") |
| 3116 | (description |
| 3117 | "This package contains the |
| 3118 | @url{https://docs.python.org/3.11/library/asyncore.html, asyncore} module as |
| 3119 | found in Python versions prior to 3.12. It is provided so that existing code |
| 3120 | relying on @code{import asyncore} is able to continue being used without |
| 3121 | significant refactoring.") |
| 3122 | (license license:psfl))) |
| 3123 | |
| 3124 | (define-public python-pyconify |
| 3125 | (package |
| 3126 | (name "python-pyconify") |
| 3127 | (version "0.2.1") |
| 3128 | (source |
| 3129 | (origin |
| 3130 | (method git-fetch) |
| 3131 | (uri (git-reference |
| 3132 | (url "https://github.com/pyapp-kit/pyconify") |
| 3133 | (commit (string-append "v" version)))) |
| 3134 | (file-name (git-file-name name version)) |
| 3135 | (sha256 |
| 3136 | (base32 "19amhlha8n9fh9sq4iy1rpasmcagslxbvbjlnv012zndcca22mk6")))) |
| 3137 | (build-system pyproject-build-system) |
| 3138 | (arguments |
| 3139 | (list #:tests? #f)) ;require netwok access |
| 3140 | (native-inputs |
| 3141 | (list python-hatch-vcs |
| 3142 | python-hatchling)) |
| 3143 | (propagated-inputs |
| 3144 | (list python-requests)) |
| 3145 | (home-page "https://github.com/pyapp-kit/pyconify") |
| 3146 | (synopsis "Python wrapper for the Iconify API") |
| 3147 | (description |
| 3148 | "This packge provides a Python wrapper for the |
| 3149 | @url{https://github.com/iconify, Iconify} API. Iconify is a versatile icon |
| 3150 | framework that includes 100+ icon sets with more than 100,000 icons from |
| 3151 | FontAwesome, Material Design Icons, DashIcons, Feather Icons, EmojiOne, Noto |
| 3152 | Emoji and many other open source icon sets.") |
| 3153 | (license license:bsd-3))) |
| 3154 | |
| 3155 | (define-public python-pygls |
| 3156 | (package |
| 3157 | (name "python-pygls") |
| 3158 | (version "2.0.0") |
| 3159 | (source |
| 3160 | (origin |
| 3161 | (method git-fetch) |
| 3162 | (uri (git-reference |
| 3163 | (url "https://github.com/openlawlibrary/pygls") |
| 3164 | (commit (string-append "v" version)))) |
| 3165 | (file-name (git-file-name name version)) |
| 3166 | (sha256 |
| 3167 | (base32 "1y1adnmr4w4c3zk1lzk21fdz9ab9c1az7acm1rz262h0q7bwl0km")))) |
| 3168 | (build-system pyproject-build-system) |
| 3169 | ;; tests: 265 passed, 8 skipped |
| 3170 | (native-inputs |
| 3171 | (list python-pytest |
| 3172 | python-pytest-asyncio |
| 3173 | python-poetry-core)) |
| 3174 | (propagated-inputs |
| 3175 | (list python-attrs |
| 3176 | python-cattrs |
| 3177 | python-lsprotocol)) |
| 3178 | (home-page "https://github.com/openlawlibrary/pygls") |
| 3179 | (synopsis "Pythonic generic language server") |
| 3180 | (description |
| 3181 | "This package provides a pythonic generic language server (pronounced |
| 3182 | like pie glass').") |
| 3183 | (license license:asl2.0))) |
| 3184 | |
| 3185 | (define-public python-pyls-spyder |
| 3186 | (package |
| 3187 | (name "python-pyls-spyder") |
| 3188 | (version "0.4.0") |
| 3189 | (source |
| 3190 | (origin |
| 3191 | (method git-fetch) |
| 3192 | (uri (git-reference |
| 3193 | (url "https://github.com/spyder-ide/pyls-spyder") |
| 3194 | (commit (string-append "v" version)))) |
| 3195 | (file-name (git-file-name name version)) |
| 3196 | (sha256 |
| 3197 | (base32 "11ajbsia60d4c9s6m6rbvaqp1d69fcdbq6a98lkzkkzv2b9pdhkk")))) |
| 3198 | (build-system pyproject-build-system) |
| 3199 | (propagated-inputs (list python-lsp-server)) |
| 3200 | (native-inputs (list python-pytest python-setuptools)) |
| 3201 | (home-page "https://github.com/spyder-ide/pyls-spyder") |
| 3202 | (synopsis "Spyder extensions for @code{python-lsp-server}") |
| 3203 | (description "This package provides Spyder-specific extras for the |
| 3204 | Language Server Protocol (LSP) on Python, such as document symbol searching |
| 3205 | and others.") |
| 3206 | (license license:expat))) |
| 3207 | |
| 3208 | (define-public python-pylsp-rope |
| 3209 | (package |
| 3210 | (name "python-pylsp-rope") |
| 3211 | (version "0.1.17") |
| 3212 | (source |
| 3213 | (origin |
| 3214 | (method git-fetch) |
| 3215 | (uri (git-reference |
| 3216 | (url "https://github.com/python-rope/pylsp-rope") |
| 3217 | (commit version))) |
| 3218 | (file-name (git-file-name name version)) |
| 3219 | (sha256 |
| 3220 | (base32 "1mgmlqv75z6cpqqak4vqprrgdhxa4b2ll56zijjx9bkn0rjr4jc0")))) |
| 3221 | (build-system pyproject-build-system) |
| 3222 | (native-inputs |
| 3223 | (list python-pytest |
| 3224 | python-setuptools)) |
| 3225 | (propagated-inputs |
| 3226 | (list python-lsp-server |
| 3227 | python-rope)) |
| 3228 | (home-page "https://github.com/python-rope/pylsp-rope") |
| 3229 | (synopsis |
| 3230 | "Extended refactoring capabilities for Python LSP Server using Rope") |
| 3231 | (description |
| 3232 | "This plugs in to Python LSP Server, adding code actions that refactor |
| 3233 | using Rope.") |
| 3234 | (license license:expat))) |
| 3235 | |
| 3236 | (define-public python-pypydispatcher |
| 3237 | (package |
| 3238 | (name "python-pypydispatcher") |
| 3239 | (version "2.1.2") |
| 3240 | (source |
| 3241 | (origin |
| 3242 | (method url-fetch) |
| 3243 | (uri (pypi-uri "PyPyDispatcher" version)) |
| 3244 | (sha256 |
| 3245 | (base32 "1wihj7xgq5fk91li0id6a311lyrnmq7ch8rbr9dm7lprrzgwbgmn")))) |
| 3246 | (build-system pyproject-build-system) |
| 3247 | (native-inputs |
| 3248 | (list python-pytest |
| 3249 | python-setuptools |
| 3250 | python-setuptools-scm)) |
| 3251 | (home-page "https://github.com/scrapy/pypydispatcher") |
| 3252 | (synopsis "Multi-producer-multi-consumer signal dispatching mechanism") |
| 3253 | (description |
| 3254 | "This package implements a functionality of pulti-producer-multi-consumer |
| 3255 | signal dispatching mechanism. It's a fork of |
| 3256 | http://pydispatcher.sourceforge.net/ with PyPy support.") |
| 3257 | (license license:bsd-3))) |
| 3258 | |
| 3259 | (define-public python-pyread-eagle |
| 3260 | (package |
| 3261 | (name "python-pyread-eagle") |
| 3262 | (version "1.0.3") |
| 3263 | (source |
| 3264 | (origin |
| 3265 | (method git-fetch) |
| 3266 | (uri (git-reference |
| 3267 | (url "https://github.com/kyleaoman/pyread_eagle") |
| 3268 | (commit version))) |
| 3269 | (file-name (git-file-name name version)) |
| 3270 | (sha256 |
| 3271 | (base32 "0x8j5wkp46hbfccm88c7dmf8ak488llv1748i2g94npic2rx8yd4")))) |
| 3272 | (build-system pyproject-build-system) |
| 3273 | (arguments |
| 3274 | ;; TODO: Tests need additional test data, see tests/test_regions.py. |
| 3275 | (list #:tests? #f)) |
| 3276 | (native-inputs |
| 3277 | (list python-setuptools)) |
| 3278 | (propagated-inputs |
| 3279 | (list python-h5py |
| 3280 | python-numpy)) |
| 3281 | (home-page "https://github.com/kyleaoman/pyread_eagle") |
| 3282 | (synopsis "Read routines for Eagle HDF5 snapshots for Python") |
| 3283 | (description |
| 3284 | "This package provides a pure-python port of |
| 3285 | @url{https://github.com/jchelly/read_eagle, J. Helly's read_eagle}.") |
| 3286 | (license license:gpl3))) |
| 3287 | |
| 3288 | (define-public python-pyserial-asyncio-fast |
| 3289 | (package |
| 3290 | (name "python-pyserial-asyncio-fast") |
| 3291 | (version "0.16") |
| 3292 | (source |
| 3293 | (origin |
| 3294 | (method git-fetch) |
| 3295 | (uri (git-reference |
| 3296 | (url |
| 3297 | "https://github.com/home-assistant-libs/pyserial-asyncio-fast") |
| 3298 | (commit version))) |
| 3299 | (file-name (git-file-name name version)) |
| 3300 | (sha256 |
| 3301 | (base32 "1chnqa895rhnl0ygbspp5xmxw60vsvyybk2z93pvxjsm4m574hkc")))) |
| 3302 | (build-system pyproject-build-system) |
| 3303 | (arguments |
| 3304 | (list |
| 3305 | #:test-backend |
| 3306 | #~'unittest)) |
| 3307 | (native-inputs (list python-setuptools)) |
| 3308 | (propagated-inputs (list python-pyserial)) |
| 3309 | (home-page "https://github.com/home-assistant-libs/pyserial-asyncio-fast") |
| 3310 | (synopsis "Fast asyncio extension package for pyserial") |
| 3311 | (description |
| 3312 | "Async I/O extension package for the Python Serial Port Extension. |
| 3313 | This version implements eager writes like cpython asyncio selector_events does. |
| 3314 | This can significantly reduce overhead since the asyncio writer is no longer |
| 3315 | added and removed frequently. |
| 3316 | |
| 3317 | This package is a fork of unmaintained package @code{pyserial-asyncio} |
| 3318 | @url{https://github.com/pyserial/pyserial-asyncio}.") |
| 3319 | (license license:bsd-3))) |
| 3320 | |
| 3321 | (define-public python-pyte |
| 3322 | (package |
| 3323 | (name "python-pyte") |
| 3324 | (version "0.8.2") |
| 3325 | (source |
| 3326 | (origin |
| 3327 | (method git-fetch) |
| 3328 | (uri (git-reference |
| 3329 | (url "https://github.com/selectel/pyte") |
| 3330 | (commit version))) |
| 3331 | (file-name (git-file-name name version)) |
| 3332 | (sha256 |
| 3333 | (base32 "1cdhnl6rp4kcbs3s766519k80pf5ma18mgv6cyidf4nbgysjavmv")))) |
| 3334 | (build-system pyproject-build-system) |
| 3335 | (propagated-inputs (list python-wcwidth)) |
| 3336 | (native-inputs (list python-pytest python-setuptools python-wheel)) |
| 3337 | (home-page "https://pyte.readthedocs.io/") |
| 3338 | (synopsis "Simple VTXXX-compatible terminal emulator") |
| 3339 | (description "@code{pyte} is an in-memory VTxxx-compatible terminal |
| 3340 | emulator. @var{VTxxx} stands for a series of video terminals, developed by |
| 3341 | DEC between 1970 and 1995. The first and probably most famous one was the |
| 3342 | VT100 terminal, which is now a de-facto standard for all virtual terminal |
| 3343 | emulators. |
| 3344 | |
| 3345 | pyte is a fork of vt102, which was an incomplete pure Python implementation |
| 3346 | of VT100 terminal.") |
| 3347 | (license license:lgpl3+))) |
| 3348 | |
| 3349 | (define-public python-pytokens |
| 3350 | (package |
| 3351 | (name "python-pytokens") |
| 3352 | (version "0.4.1") |
| 3353 | (source |
| 3354 | (origin |
| 3355 | (method git-fetch) |
| 3356 | (uri (git-reference |
| 3357 | (url "https://github.com/tusharsadhwani/pytokens") |
| 3358 | (commit version))) |
| 3359 | (file-name (git-file-name name version)) |
| 3360 | (sha256 |
| 3361 | (base32 "0j5ip72ldyazgznbwxzmrp4j4hwlk2x9yvzdk5yaivnkknhqxq0c")))) |
| 3362 | (build-system pyproject-build-system) |
| 3363 | (arguments |
| 3364 | (list |
| 3365 | #:phases |
| 3366 | #~(modify-phases %standard-phases |
| 3367 | (add-before 'build 'build-with-cython |
| 3368 | (lambda _ |
| 3369 | (setenv "PYTOKENS_USE_MYPYC" "0")))))) |
| 3370 | (native-inputs |
| 3371 | (list python-cython |
| 3372 | python-pytest |
| 3373 | python-setuptools)) |
| 3374 | (home-page "https://github.com/tusharsadhwani/pytokens") |
| 3375 | (synopsis "Spec compliant Python 3.14+ tokenizer") |
| 3376 | (description |
| 3377 | "This package provides a Fast, spec compliant Python 3.14+ tokenizer that |
| 3378 | runs on older Pythons.") |
| 3379 | (license license:expat))) |
| 3380 | |
| 3381 | (define-public python-pyuca |
| 3382 | (package |
| 3383 | (name "python-pyuca") |
| 3384 | (version "1.2") |
| 3385 | (source |
| 3386 | (origin |
| 3387 | (method git-fetch) |
| 3388 | (uri (git-reference |
| 3389 | (url "https://github.com/jtauber/pyuca") |
| 3390 | (commit (string-append "v" version)))) |
| 3391 | (file-name (git-file-name name version)) |
| 3392 | (sha256 |
| 3393 | (base32 "1zi301f1kpzcnkgd90ax8f1xhylcxy2c9fy3ym4pwc9mzbxs9198")))) |
| 3394 | (build-system pyproject-build-system) |
| 3395 | (arguments |
| 3396 | (list #:tests? #f)) ; there are no tests |
| 3397 | (native-inputs (list python-setuptools)) |
| 3398 | (home-page "https://github.com/jtauber/pyuca") |
| 3399 | (synopsis "Python implementation of the Unicode Collation Algorithm") |
| 3400 | (description "This package provides a Python implementation of the |
| 3401 | @url{http://unicode.org/reports/tr10/, Unicode Collation Algorithm}.") |
| 3402 | (license license:expat))) |
| 3403 | |
| 3404 | (define-public python-pyxdameraulevenshtein |
| 3405 | (package |
| 3406 | (name "python-pyxdameraulevenshtein") |
| 3407 | (version "1.8.0") |
| 3408 | (source |
| 3409 | (origin |
| 3410 | (method git-fetch) |
| 3411 | (uri (git-reference |
| 3412 | (url "https://github.com/lanl/pyxDamerauLevenshtein") |
| 3413 | (commit (string-append "v" version)))) |
| 3414 | (file-name (git-file-name name version)) |
| 3415 | (sha256 |
| 3416 | (base32 "1qmmpgf8qxv5pfnqp328qqsj34jvyc63w8659xx18d8405agcjdr")))) |
| 3417 | (build-system pyproject-build-system) |
| 3418 | (native-inputs (list python-cython python-pytest python-setuptools)) |
| 3419 | (home-page "https://github.com/lanl/pyxDamerauLevenshtein") |
| 3420 | (synopsis "Damerau-Levenshtein edit distance algorithm") |
| 3421 | (description |
| 3422 | "@code{pyxDamerauLevenshtein} implements the Damerau-Levenshtein (DL) |
| 3423 | edit distance algorithm for Python in Cython for high performance.") |
| 3424 | (license license:bsd-3))) |
| 3425 | |
| 3426 | (define-public python-qrcodegen |
| 3427 | (package |
| 3428 | (name "python-qrcodegen") |
| 3429 | (version "1.8.0") |
| 3430 | (source |
| 3431 | (origin |
| 3432 | (method git-fetch) |
| 3433 | (uri (git-reference |
| 3434 | (url "https://github.com/nayuki/QR-Code-generator") |
| 3435 | (commit (string-append "v" version)))) |
| 3436 | (sha256 |
| 3437 | (base32 "0dk9ci5gchxa8gh0hyhlj3d5jwxqlnfm85xyp791ldaia14bkj39")))) |
| 3438 | (build-system pyproject-build-system) |
| 3439 | (arguments |
| 3440 | (list |
| 3441 | #:tests? #f ;no tests |
| 3442 | #:phases |
| 3443 | #~(modify-phases %standard-phases |
| 3444 | (add-before 'build 'chdir |
| 3445 | (lambda _ |
| 3446 | (chdir "python")))))) |
| 3447 | (native-inputs (list python-setuptools)) |
| 3448 | (home-page "https://www.nayuki.io/page/qr-code-generator-library") |
| 3449 | (synopsis "QR Code generator") |
| 3450 | (description |
| 3451 | "@code{python-qrcodegen} is a QR code generator library in Python.") |
| 3452 | (license license:expat))) |
| 3453 | |
| 3454 | (define-public python-rectpack |
| 3455 | (package |
| 3456 | (name "python-rectpack") |
| 3457 | (version "0.2.2") |
| 3458 | (source |
| 3459 | (origin |
| 3460 | (method git-fetch) |
| 3461 | (uri (git-reference |
| 3462 | (url "https://github.com/secnot/rectpack/") |
| 3463 | (commit version))) |
| 3464 | (file-name (git-file-name name version)) |
| 3465 | (sha256 |
| 3466 | (base32 "0y6nzpqny2knlq5g53wdnrznv10xv21rbzmlbq5xgf92gi7i6kci")))) |
| 3467 | (build-system pyproject-build-system) |
| 3468 | (arguments (list #:test-backend #~'unittest)) |
| 3469 | (native-inputs (list python-setuptools)) |
| 3470 | (home-page "https://github.com/secnot/rectpack/") |
| 3471 | (synopsis "2D Rectangle packing Python library") |
| 3472 | (description "Rectpack is a collection of heuristic algorithms for solving |
| 3473 | the 2D knapsack or bin packing problem, consisting on packing a set of |
| 3474 | rectangles into the smallest number of bins.") |
| 3475 | (license license:asl2.0))) |
| 3476 | |
| 3477 | (define-public python-refleak |
| 3478 | (package |
| 3479 | (name "python-refleak") |
| 3480 | (version "0.2.2") |
| 3481 | (source |
| 3482 | (origin |
| 3483 | (method git-fetch) |
| 3484 | (uri (git-reference |
| 3485 | (url "https://github.com/mne-tools/refleak") |
| 3486 | (commit (string-append "v" version)))) |
| 3487 | (file-name (git-file-name name version)) |
| 3488 | (sha256 |
| 3489 | (base32 "1851pxcbvdab1wq64drkw873mis9yqrvamsv0cxj7p6p4l7nfj4h")))) |
| 3490 | (build-system pyproject-build-system) |
| 3491 | (native-inputs (list python-pytest python-setuptools python-setuptools-scm)) |
| 3492 | (home-page "https://github.com/mne-tools/refleak") |
| 3493 | (synopsis "Track down reference leaks in Python") |
| 3494 | (description |
| 3495 | "This package provides a library to find out what is still holding a |
| 3496 | reference to an object that should be dead. It is used to track down reference |
| 3497 | leaks in @code{MNE-Python}, @code{PyVista} and @code{pyvistaqt}.") |
| 3498 | (license license:bsd-3))) |
| 3499 | |
| 3500 | (define-public python-represent |
| 3501 | (package |
| 3502 | (name "python-represent") |
| 3503 | (version "2.1") |
| 3504 | (source |
| 3505 | (origin |
| 3506 | (method url-fetch) |
| 3507 | (uri (pypi-uri "Represent" version)) |
| 3508 | (sha256 |
| 3509 | (base32 "1b5wbnkjirscfqwcb6ik8klky0ajm4qs2yvabqxnpfp72if02b8b")))) |
| 3510 | (build-system pyproject-build-system) |
| 3511 | (native-inputs |
| 3512 | ;; XXX This might be too much for testing, maybe switch them off as it's |
| 3513 | ;; a simple middleware library. |
| 3514 | (list python-ipython |
| 3515 | python-pytest |
| 3516 | python-rich |
| 3517 | python-setuptools)) |
| 3518 | (home-page "https://github.com/RazerM/represent") |
| 3519 | (synopsis "Create @code{__repr__} automatically or declaratively for Python") |
| 3520 | (description |
| 3521 | "This package implements a functionality to generate Python |
| 3522 | @code{__repr__} methods automatically or declaratively.") |
| 3523 | (license license:expat))) |
| 3524 | |
| 3525 | (define-public python-rich-argparse |
| 3526 | (package |
| 3527 | (name "python-rich-argparse") |
| 3528 | (version "1.8.0") |
| 3529 | (source |
| 3530 | (origin |
| 3531 | (method git-fetch) |
| 3532 | (uri (git-reference |
| 3533 | (url "https://github.com/hamdanal/rich-argparse") |
| 3534 | (commit (string-append "v" version)))) |
| 3535 | (file-name (git-file-name name version)) |
| 3536 | (sha256 |
| 3537 | (base32 |
| 3538 | "0kz77mv9grlqpjzqvmslqyl86xk40ync9g5ihp6kziw2gwk71vyd")))) |
| 3539 | (build-system pyproject-build-system) |
| 3540 | (native-inputs |
| 3541 | (list python-pytest |
| 3542 | python-hatchling)) |
| 3543 | (propagated-inputs |
| 3544 | (list python-rich)) |
| 3545 | (home-page "https://github.com/hamdanal/rich-argparse") |
| 3546 | (synopsis "Format argparse and optparse help using rich") |
| 3547 | (description |
| 3548 | "This package improves the look and readability of argparse's help while |
| 3549 | requiring minimal changes to the code.") |
| 3550 | (license license:expat))) |
| 3551 | |
| 3552 | (define-public python-rich-rst |
| 3553 | (package |
| 3554 | (name "python-rich-rst") |
| 3555 | (version "2.0.1") |
| 3556 | (source |
| 3557 | (origin |
| 3558 | (method git-fetch) |
| 3559 | (uri (git-reference |
| 3560 | (url "https://github.com/wasi-master/rich-rst") |
| 3561 | (commit (string-append "v" version)))) |
| 3562 | (file-name (git-file-name name version)) |
| 3563 | (sha256 |
| 3564 | (base32 "1in5rjzgxyjaqj1vqq8mrcwxxm00whqd2bw8lqs717alxw3f4ygf")))) |
| 3565 | (build-system pyproject-build-system) |
| 3566 | (native-inputs |
| 3567 | (list python-pytest |
| 3568 | python-setuptools)) |
| 3569 | (propagated-inputs |
| 3570 | (list python-pygments |
| 3571 | python-rich)) |
| 3572 | (home-page "https://wasi-master.github.io/rich-rst") |
| 3573 | (synopsis "Beautiful reStructuredText renderer for Rich") |
| 3574 | (description |
| 3575 | "This package turns @url{https://docutils.sourceforge.io/rst.html, reST} |
| 3576 | documents into @url{https://rich.readthedocs.io/en/latest/, Rich} |
| 3577 | renderables.") |
| 3578 | (license license:expat))) |
| 3579 | |
| 3580 | (define-public python-roman-numerals |
| 3581 | (package |
| 3582 | (name "python-roman-numerals") |
| 3583 | (version "3.1.0") |
| 3584 | (source |
| 3585 | (origin |
| 3586 | (method url-fetch) |
| 3587 | (uri (pypi-uri "roman_numerals" version)) |
| 3588 | (sha256 |
| 3589 | (base32 "0l956dwchx6hjncax2kh7xdk8ymfz90jhrxkpmhx6jwd3vy3ckiq")))) |
| 3590 | (build-system pyproject-build-system) |
| 3591 | (native-inputs (list python-flit-core python-pytest)) |
| 3592 | (home-page "https://pypi.org/project/roman-numbers/") |
| 3593 | (synopsis "Python library to manipulate Roman numerals") |
| 3594 | (description "This package provides a Python library to manipulate |
| 3595 | well-formed Roman numerals.") |
| 3596 | (license license:expat))) |
| 3597 | |
| 3598 | (define-public python-runs |
| 3599 | (package |
| 3600 | (name "python-runs") |
| 3601 | (version "1.3.0") |
| 3602 | (source |
| 3603 | (origin |
| 3604 | (method git-fetch) |
| 3605 | (uri (git-reference |
| 3606 | (url "https://github.com/rec/runs") |
| 3607 | (commit (string-append "v" version)))) |
| 3608 | (file-name (git-file-name name version)) |
| 3609 | (sha256 |
| 3610 | (base32 "0grzfnamxgnpvf3m0c139sknyj31vsvcplvcng6maq60xvnqrbw1")))) |
| 3611 | (build-system pyproject-build-system) |
| 3612 | (arguments |
| 3613 | (list |
| 3614 | #:test-flags |
| 3615 | ;; Expecting ".git". |
| 3616 | #~(list "--deselect=test/test_runs.py::TestRunsActual::test_many"))) |
| 3617 | (native-inputs (list python-pytest python-tdir python-uv-build)) |
| 3618 | (propagated-inputs (list python-xmod)) |
| 3619 | (home-page "https://github.com/rec/runs") |
| 3620 | (synopsis "Run a block of text as a subprocess") |
| 3621 | (description |
| 3622 | "@code{runs} has improved versions of @code{call()}, @code{check_call()}, |
| 3623 | @code{check_output()}, and @code{run()} from Python's subprocess module that |
| 3624 | handle multiple commands and blocks of text, fix some defects, and add some |
| 3625 | features.") |
| 3626 | (license license:expat))) |
| 3627 | |
| 3628 | (define-public python-rush |
| 3629 | (package |
| 3630 | (name "python-rush") |
| 3631 | (version "2021.04.0") |
| 3632 | (source |
| 3633 | (origin |
| 3634 | (method git-fetch) |
| 3635 | (uri (git-reference |
| 3636 | (url "https://github.com/sigmavirus24/rush") |
| 3637 | (commit version))) |
| 3638 | (file-name (git-file-name name version)) |
| 3639 | (sha256 |
| 3640 | (base32 "0brqjw34n14rij58giwyqlagjnp11npvsrlwrqj5pbn7rmgd2mhx")))) |
| 3641 | (build-system pyproject-build-system) |
| 3642 | (arguments |
| 3643 | (list |
| 3644 | #:test-flags |
| 3645 | ;; E ValueError: Redis URL must specify one of the following schemes |
| 3646 | ;; (redis://, rediss://, unix://) |
| 3647 | #~(list "-k" (string-append "not test_valid_url[redis://]" |
| 3648 | " and not test_valid_url[rediss://]")))) |
| 3649 | (native-inputs |
| 3650 | (list python-mock |
| 3651 | python-redis |
| 3652 | python-rfc3986 |
| 3653 | python-pytest |
| 3654 | python-setuptools)) |
| 3655 | (propagated-inputs |
| 3656 | (list python-attrs)) |
| 3657 | (home-page "https://github.com/sigmavirus24/rush") |
| 3658 | (synopsis "Throttling and rate-limiting algorithms for Python") |
| 3659 | (description |
| 3660 | "This package provides is a small collection of algorithms that can be |
| 3661 | reused when throttling user interactions with a resource (e.g., an API).") |
| 3662 | (license license:expat))) |
| 3663 | |
| 3664 | (define-public python-rustworkx |
| 3665 | (package |
| 3666 | (name "python-rustworkx") |
| 3667 | (version "0.17.1") |
| 3668 | (source |
| 3669 | (origin |
| 3670 | (method git-fetch) |
| 3671 | (uri (git-reference |
| 3672 | (url "https://github.com/Qiskit/rustworkx") |
| 3673 | (commit version))) |
| 3674 | (file-name (git-file-name name version)) |
| 3675 | (sha256 |
| 3676 | (base32 "0sr0wrfb9wzxcljhb7swwgk2hdxqjfmcfj785jq624mx14kqc4k8")))) |
| 3677 | (build-system pyproject-build-system) |
| 3678 | (arguments |
| 3679 | (list |
| 3680 | #:test-flags #~(list "--test-path" "tests") |
| 3681 | #:imported-modules (append %cargo-build-system-modules |
| 3682 | %pyproject-build-system-modules) |
| 3683 | #:modules '(((guix build cargo-build-system) |
| 3684 | #:prefix cargo:) |
| 3685 | (guix build pyproject-build-system) |
| 3686 | (guix build utils)) |
| 3687 | #:phases |
| 3688 | #~(modify-phases %standard-phases |
| 3689 | (add-after 'unpack 'prepare-cargo-build-system |
| 3690 | (lambda args |
| 3691 | (for-each |
| 3692 | (lambda (phase) |
| 3693 | (format #t "Running cargo phase: ~a~%" phase) |
| 3694 | (apply (assoc-ref cargo:%standard-phases phase) |
| 3695 | #:cargo-target #$(cargo-triplet) args)) |
| 3696 | '(unpack-rust-crates |
| 3697 | configure |
| 3698 | check-for-pregenerated-files |
| 3699 | patch-cargo-checksums)))) |
| 3700 | (add-before 'check 'pre-check |
| 3701 | (lambda _ |
| 3702 | ;; Delete the source directory to avoid interference. |
| 3703 | (delete-file-recursively "rustworkx") |
| 3704 | ;; Matplotlib needs to be able to write its configuration file |
| 3705 | ;; somewhere. |
| 3706 | (setenv "MPLCONFIGDIR" "/tmp") |
| 3707 | ;; For fontconfig. |
| 3708 | (setenv "XDG_CACHE_HOME" "/tmp")))))) |
| 3709 | (propagated-inputs (list python-numpy)) |
| 3710 | (native-inputs |
| 3711 | (append (list graphviz |
| 3712 | python-matplotlib |
| 3713 | python-networkx |
| 3714 | python-pillow |
| 3715 | python-setuptools |
| 3716 | python-setuptools-rust |
| 3717 | python-stestr |
| 3718 | rust |
| 3719 | `(,rust "cargo")) |
| 3720 | (or (and=> (%current-target-system) |
| 3721 | (compose list make-rust-sysroot)) |
| 3722 | '()))) |
| 3723 | (inputs (cargo-inputs 'python-rustworkx)) |
| 3724 | (home-page "https://www.rustworkx.org") |
| 3725 | (synopsis "High performance graph library for Python") |
| 3726 | (description |
| 3727 | "@code{rustworkx} is a Python package for working with graphs and complex |
| 3728 | networks. It enables the creation, interaction with, and study of graphs and |
| 3729 | networks.") |
| 3730 | (license license:asl2.0))) |
| 3731 | |
| 3732 | (define-public python-safety-schemas |
| 3733 | (package |
| 3734 | (name "python-safety-schemas") |
| 3735 | (version "0.0.19") |
| 3736 | (source |
| 3737 | (origin |
| 3738 | (method url-fetch) |
| 3739 | (uri (pypi-uri "safety_schemas" version)) |
| 3740 | (sha256 |
| 3741 | (base32 "13dany62q262l08441aps815nz42k9mcd3lgjs5z592j91nz10a7")))) |
| 3742 | (build-system pyproject-build-system) |
| 3743 | (arguments |
| 3744 | (list |
| 3745 | #:test-flags |
| 3746 | #~(list "-k" (string-join |
| 3747 | ;; These tests are failing for unknown reasons. |
| 3748 | ;; (AssertionError). |
| 3749 | (list "not test_model[ConfigModel-ConfigModel]" |
| 3750 | "test_model[MetadataModel-MetadataModel]" |
| 3751 | "test_model[PolicyFileModel-PolicyFileModel]" |
| 3752 | "test_model[ProjectModel-ProjectModel]" |
| 3753 | "test_model[ReportModel-ReportModel]") |
| 3754 | " and not ")))) |
| 3755 | (propagated-inputs (list python-dparse |
| 3756 | python-packaging |
| 3757 | python-pydantic |
| 3758 | python-ruamel.yaml |
| 3759 | python-typing-extensions)) |
| 3760 | (native-inputs (list python-deepdiff python-hatchling python-pytest)) |
| 3761 | ;; Source code is not yet published outside of PyPI: |
| 3762 | ;; https://github.com/pyupio/safety/issues/494 |
| 3763 | (home-page "https://pypi.org/project/safety-schemas/") |
| 3764 | (synopsis "Schemas for Safety tools") |
| 3765 | (description "This package contains models and schemas used by Safety.") |
| 3766 | (license license:expat))) |
| 3767 | |
| 3768 | (define-public python-scverse-misc |
| 3769 | (package |
| 3770 | (name "python-scverse-misc") |
| 3771 | (version "0.1.1") |
| 3772 | (source |
| 3773 | (origin |
| 3774 | (method git-fetch) |
| 3775 | (uri (git-reference |
| 3776 | (url "https://github.com/scverse/scverse-misc") |
| 3777 | (commit (string-append "v" version)))) |
| 3778 | (file-name (git-file-name name version)) |
| 3779 | (sha256 |
| 3780 | (base32 "14gqrafilfzlc9rydz90rifs48icqvdqa80qsfsmhrwv25mwwjry")))) |
| 3781 | (build-system pyproject-build-system) |
| 3782 | (arguments |
| 3783 | (list |
| 3784 | #:test-flags |
| 3785 | ;; Optinal tests, Pydantic fails to validate inputs. |
| 3786 | #~(list "--deselect=tests/settings/test_runtime.py::test_dotenv[2]" |
| 3787 | "--deselect=tests/settings/test_runtime.py::test_dotenv[4]"))) |
| 3788 | (native-inputs |
| 3789 | (list python-hatch-vcs |
| 3790 | python-hatchling |
| 3791 | python-pytest |
| 3792 | python-pyyaml)) |
| 3793 | (propagated-inputs |
| 3794 | (list python-session-info2 |
| 3795 | python-typing-extensions |
| 3796 | ;; [optional] |
| 3797 | python-dotenv |
| 3798 | python-pydantic-settings)) |
| 3799 | (home-page "https://github.com/scverse/scverse-misc") |
| 3800 | (synopsis "Miscellaneous utility code used by scverse packages") |
| 3801 | (description |
| 3802 | "This package provides miscellaneous utility code used by scverse |
| 3803 | packages.") |
| 3804 | (license license:bsd-3))) |
| 3805 | |
| 3806 | (define-public python-senf |
| 3807 | (package |
| 3808 | (name "python-senf") |
| 3809 | (version "1.5.1") |
| 3810 | (source |
| 3811 | (origin |
| 3812 | (method git-fetch) |
| 3813 | (uri (git-reference |
| 3814 | (url "https://github.com/quodlibet/senf") |
| 3815 | (commit (string-append "v" version)))) |
| 3816 | (file-name (git-file-name name version)) |
| 3817 | (sha256 |
| 3818 | (base32 "023zqvrxdpss9r6bmp5arhy7bhr8j0qzgzwy04gydcbxhg2kh6nq")))) |
| 3819 | (build-system pyproject-build-system) |
| 3820 | (arguments |
| 3821 | (list |
| 3822 | #:test-flags |
| 3823 | ;; These tests fail due to various home fetching methods during build. |
| 3824 | '(list "--deselect" "tests/test_api.py::test_getuserdir" |
| 3825 | "--deselect" "tests/test_api.py::test_expanduser_user"))) |
| 3826 | (native-inputs (list python-pytest python-setuptools)) |
| 3827 | (home-page "https://github.com/quodlibet/senf") |
| 3828 | (synopsis "Text, bytes and paths conversion functions for Python") |
| 3829 | (description "Senf introduces a new platform native string type called |
| 3830 | fsnative. It adds functions to convert text, bytes and paths to and from that |
| 3831 | new type and helper functions to integrate it nicely with the Python |
| 3832 | stdlib.") |
| 3833 | (license license:expat))) |
| 3834 | |
| 3835 | (define-public python-session-info2 |
| 3836 | (package |
| 3837 | (name "python-session-info2") |
| 3838 | (version "0.2") |
| 3839 | (source |
| 3840 | (origin |
| 3841 | (method url-fetch) |
| 3842 | (uri (pypi-uri "session_info2" version)) |
| 3843 | (sha256 |
| 3844 | (base32 "0xs1mcdz0hf626m3421ryv4f7b5rixz2hm8x88czx2i9196x69g9")))) |
| 3845 | (build-system pyproject-build-system) |
| 3846 | (arguments |
| 3847 | (list |
| 3848 | #:test-flags |
| 3849 | #~(list "--deselect=tests/test_synthetic.py::test_gpu" |
| 3850 | ;; Tests require Jupyter Client. |
| 3851 | "--ignore=tests/test_subprocess.py"))) |
| 3852 | (native-inputs |
| 3853 | (list python-hatch-docstring-description |
| 3854 | python-hatch-vcs |
| 3855 | python-hatchling |
| 3856 | python-pytest |
| 3857 | python-pytest-asyncio)) |
| 3858 | (home-page "https://session-info2.readthedocs.io/") |
| 3859 | (synopsis "Print versions of imported packages") |
| 3860 | (description |
| 3861 | "This package implements a functionality to print versions of imported |
| 3862 | Python packages.") |
| 3863 | (license license:mpl2.0))) |
| 3864 | |
| 3865 | (define-public python-show-in-file-manager |
| 3866 | (package |
| 3867 | (name "python-show-in-file-manager") |
| 3868 | (version "1.1.6") |
| 3869 | (source |
| 3870 | (origin |
| 3871 | (method git-fetch) |
| 3872 | (uri (git-reference |
| 3873 | (url "https://github.com/damonlynch/showinfilemanager") |
| 3874 | (commit (string-append "v" version)))) |
| 3875 | (file-name (git-file-name name version)) |
| 3876 | (sha256 |
| 3877 | (base32 "08vlrkhjjk1fklbgfrpnc6gz1gpzny90r53rr68ni3j8ld7p7vra")))) |
| 3878 | (build-system pyproject-build-system) |
| 3879 | (arguments (list #:tests? #f)) ;no tests upstream |
| 3880 | (native-inputs |
| 3881 | (list python-hatch-argparse-manpage python-hatchling python-pytest)) |
| 3882 | (propagated-inputs |
| 3883 | (list python-packaging python-pyxdg)) |
| 3884 | (home-page "https://github.com/damonlynch/showinfilemanager") |
| 3885 | (synopsis "Open the system file manager and select files in it") |
| 3886 | (description |
| 3887 | "Show in File Manager is a Python package to open the system file manager |
| 3888 | and optionally select files in it. The point is not to open the files, but to |
| 3889 | select them in the file manager, thereby highlighting the files and allowing |
| 3890 | the user to quickly do something with them.") |
| 3891 | (license license:expat))) |
| 3892 | |
| 3893 | (define-public python-shxparser |
| 3894 | (package |
| 3895 | (name "python-shxparser") |
| 3896 | (version "0.0.2") |
| 3897 | (source |
| 3898 | (origin |
| 3899 | (method url-fetch) |
| 3900 | (uri (pypi-uri "shxparser" version)) |
| 3901 | (sha256 |
| 3902 | (base32 "0w7j5ywskandp91v74966pw1pvq9d5zrx5gkjcn84xi8wsyf8hc5")))) |
| 3903 | (build-system pyproject-build-system) |
| 3904 | (arguments (list #:test-backend #~'unittest)) |
| 3905 | (native-inputs |
| 3906 | (list python-svgelements python-setuptools)) |
| 3907 | (home-page "https://github.com/tatarize/shxparser") |
| 3908 | (synopsis "SHX line font parser") |
| 3909 | (description |
| 3910 | "This is a pure python parser for SHX Hershey font files that are an |
| 3911 | AutoCad format which can encode single line fonts. This format is used for |
| 3912 | many CNC and laser operations.") |
| 3913 | (license license:expat))) |
| 3914 | |
| 3915 | (define-public python-simplify-polyline |
| 3916 | (package |
| 3917 | (name "python-simplify-polyline") |
| 3918 | (version "0.1.0") |
| 3919 | (source |
| 3920 | (origin |
| 3921 | (method url-fetch) |
| 3922 | (uri (pypi-uri "simplify_polyline" version)) |
| 3923 | (sha256 |
| 3924 | (base32 "08f6bvwbg04z19pirq4ynsiq89yhbzqh9g6zbnp9fvdnmics7hgw")))) |
| 3925 | (build-system pyproject-build-system) |
| 3926 | (native-inputs |
| 3927 | (list python-pytest |
| 3928 | python-setuptools |
| 3929 | python-setuptools-scm |
| 3930 | python-wheel)) |
| 3931 | (propagated-inputs |
| 3932 | (list python-numpy)) |
| 3933 | (home-page "https://github.com/ShayHill/simplify_polyline") |
| 3934 | (synopsis "Simplify an open or closed polyline") |
| 3935 | (description |
| 3936 | "This package implements functionality to work with plyline. |
| 3937 | Features: |
| 3938 | @itemize |
| 3939 | @item Visvalingham-Whyatt - removes the smallest triangles formed by |
| 3940 | three consecutive points in a polyline or polygon |
| 3941 | @item Douglas-Peucker - gives a better representation of the convex hull |
| 3942 | @end itemize") |
| 3943 | (license license:expat))) |
| 3944 | |
| 3945 | (define-public python-siphash24 |
| 3946 | (package |
| 3947 | (name "python-siphash24") |
| 3948 | (version "1.8") |
| 3949 | (source |
| 3950 | (origin |
| 3951 | (method git-fetch) |
| 3952 | (uri (git-reference |
| 3953 | (url "https://github.com/dnicolodi/python-siphash24/") |
| 3954 | (commit (string-append "v" version)))) |
| 3955 | (file-name (git-file-name name version)) |
| 3956 | (sha256 |
| 3957 | (base32 "0i75mrm2w10njxqb3g1kp9v8r5d22a0v8vc68v0k8c7l3ncf0lp7")))) |
| 3958 | (build-system pyproject-build-system) |
| 3959 | (arguments |
| 3960 | (list |
| 3961 | #:test-backend #~'custom |
| 3962 | #:test-flags #~(list "test.py") |
| 3963 | #:phases |
| 3964 | #~(modify-phases %standard-phases |
| 3965 | (add-after 'unpack 'patch-pyproject |
| 3966 | (lambda _ |
| 3967 | (substitute* "pyproject.toml" |
| 3968 | ;; meson-python: error: Field `project.license` has an invalid |
| 3969 | ;; type, expecting a dictionary of strings (got `Apache-2.0 OR |
| 3970 | ;; LGPL-2.1-or-later`) |
| 3971 | (("^license = .*") |
| 3972 | "license = {text = \"Apache-2.0 OR LGPL-2.1-or-later\"}\n"))))))) |
| 3973 | (native-inputs |
| 3974 | (list pkg-config |
| 3975 | python-meson |
| 3976 | python-pytest)) |
| 3977 | (inputs |
| 3978 | (list c-siphash)) |
| 3979 | (home-page "https://github.com/dnicolodi/python-siphash24/") |
| 3980 | (synopsis "Streaming-capable SipHash-1-3 and SipHash-2-4 Implementation") |
| 3981 | (description |
| 3982 | "This package provides a C-based implementation of |
| 3983 | @url{https://cr.yp.to/siphash/siphash-20120918.pdf, SipHash} with an interface |
| 3984 | compatible with the hash functions provided by the hashlib standard library |
| 3985 | module. SipHash-1-3 and SipHash-2-4 variants are currently implemented.") |
| 3986 | ;; They are in LICENSES directory: |
| 3987 | (license (list license:asl2.0 |
| 3988 | license:lgpl2.1+)))) |
| 3989 | |
| 3990 | (define-public python-snakesay |
| 3991 | (package |
| 3992 | (name "python-snakesay") |
| 3993 | (version "0.10.4") |
| 3994 | (source |
| 3995 | (origin |
| 3996 | (method git-fetch) |
| 3997 | (uri (git-reference |
| 3998 | (url "https://github.com/pythonanywhere/snakesay") |
| 3999 | (commit (string-append "v" version)))) |
| 4000 | (file-name (git-file-name name version)) |
| 4001 | (sha256 |
| 4002 | (base32 "06p776nf2v5r9643i6f7hv8z984bjiz0k6z9whzla6b2y637mk93")))) |
| 4003 | (build-system pyproject-build-system) |
| 4004 | (native-inputs (list python-pytest python-uv-build)) |
| 4005 | (home-page "https://github.com/pythonanywhere/snakesay") |
| 4006 | (synopsis "Like @command{cowsay} but with Python flavor") |
| 4007 | (description |
| 4008 | "This package provides a simple ASCII art pictures generator of a |
| 4009 | Snake with a message.") |
| 4010 | (license license:expat))) |
| 4011 | |
| 4012 | (define-public python-jaconv |
| 4013 | (package |
| 4014 | (name "python-jaconv") |
| 4015 | ;; Last release is not tagged. |
| 4016 | (properties '((commit . "d4273468279536adb5375ffbfcd34578c6a95b70") |
| 4017 | (revision . "0"))) |
| 4018 | (version (git-version "0.4.0" |
| 4019 | (assoc-ref properties 'revision) |
| 4020 | (assoc-ref properties 'commit))) |
| 4021 | (source |
| 4022 | (origin |
| 4023 | (method git-fetch) |
| 4024 | (uri (git-reference |
| 4025 | (url "https://github.com/ikegami-yukino/jaconv") |
| 4026 | (commit (assoc-ref properties 'commit)))) |
| 4027 | (file-name (git-file-name name version)) |
| 4028 | (sha256 |
| 4029 | (base32 "00lvkr6jsm2h70658hly5w81ybkfp3x0rmgzpcn0s52d4n4m21fb")))) |
| 4030 | (build-system pyproject-build-system) |
| 4031 | (native-inputs (list python-setuptools python-pynose)) |
| 4032 | (home-page "https://github.com/ikegami-yukino/jaconv") |
| 4033 | (synopsis |
| 4034 | "Pure-Python Japanese character interconverter for Hiragana, Katakana, |
| 4035 | Hankaku, Zenkaku") |
| 4036 | (description |
| 4037 | "jaconv (Japanese Converter) is interconverter for Hiragana, Katakana, |
| 4038 | Hankaku (half-width character) and Zenkaku (full-width character)") |
| 4039 | (license license:expat))) |
| 4040 | |
| 4041 | (define-public python-janus |
| 4042 | (package |
| 4043 | (name "python-janus") |
| 4044 | (version "1.0.0") |
| 4045 | (source |
| 4046 | (origin |
| 4047 | (method url-fetch) |
| 4048 | (uri (pypi-uri "janus" version)) |
| 4049 | (sha256 |
| 4050 | (base32 "04hnrdcf03g1s0x3sr72sh9gnszz6kyfsl9dg8a4n0zvvhn6z5yz")))) |
| 4051 | (build-system pyproject-build-system) |
| 4052 | (native-inputs |
| 4053 | (list python-pytest python-pytest-asyncio |
| 4054 | python-setuptools python-wheel)) |
| 4055 | (propagated-inputs (list python-typing-extensions)) |
| 4056 | (home-page "https://github.com/aio-libs/janus/") |
| 4057 | (synopsis |
| 4058 | "Sync-async queue to interoperate between asyncio tasks and classic threads") |
| 4059 | (description |
| 4060 | "Mixed sync-async queue, supposed to be used for communicating between |
| 4061 | classic synchronous (threaded) code and asynchronous (in terms of |
| 4062 | @url{https://docs.python.org/3/library/asyncio.html,asyncio}) one. Like |
| 4063 | @url{https://en.wikipedia.org/wiki/Janus,Janus god} the queue object from the |
| 4064 | library has two faces: synchronous and asynchronous interface. Synchronous is |
| 4065 | fully compatible with |
| 4066 | @url{https://docs.python.org/3/library/queue.html,standard queue}, |
| 4067 | asynchronous one follows |
| 4068 | @url{https://docs.python.org/3/library/asyncio-queue.html,asyncio queue |
| 4069 | design}.") |
| 4070 | (license license:asl2.0))) |
| 4071 | |
| 4072 | (define-public python-concurrent-log-handler |
| 4073 | (package |
| 4074 | (name "python-concurrent-log-handler") |
| 4075 | (version "0.9.25") |
| 4076 | ;; No tests in the PyPI tarball. |
| 4077 | (source |
| 4078 | (origin |
| 4079 | (method git-fetch) |
| 4080 | (uri (git-reference |
| 4081 | (url "https://github.com/Preston-Landers/concurrent-log-handler") |
| 4082 | (commit version))) |
| 4083 | (file-name (git-file-name name version)) |
| 4084 | (sha256 |
| 4085 | (base32 "0jp4zkm0idfdsrq3jzb52iqfkh6xzm7sacz1sa34ffnkyqdk3xzh")))) |
| 4086 | (build-system pyproject-build-system) |
| 4087 | (arguments |
| 4088 | (list |
| 4089 | ;; XXX: Tests are broken, no new version fixing them yet. |
| 4090 | #:tests? #f)) |
| 4091 | (native-inputs |
| 4092 | (list python-hatchling)) |
| 4093 | (propagated-inputs |
| 4094 | (list python-portalocker)) |
| 4095 | (home-page "https://github.com/Preston-Landers/concurrent-log-handler") |
| 4096 | (synopsis |
| 4097 | "Additional log handler for Python's standard @code{logging} package") |
| 4098 | (description |
| 4099 | "This package provides an additional log handler for Python's standard |
| 4100 | @code{logging} package (PEP 282). This handler will write log events to a log |
| 4101 | file which is rotated when the log file reaches a certain size. Multiple |
| 4102 | processes can safely write to the same log file concurrently and rotated logs |
| 4103 | can be gzipped if desired. An optional threaded queue logging handler is |
| 4104 | provided to perform logging in the background.") |
| 4105 | (license license:asl2.0))) |
| 4106 | |
| 4107 | (define-public python-lazy |
| 4108 | (package |
| 4109 | (name "python-lazy") |
| 4110 | (version "1.6") |
| 4111 | (source |
| 4112 | (origin |
| 4113 | (method url-fetch) |
| 4114 | (uri (pypi-uri "lazy" version)) |
| 4115 | (sha256 |
| 4116 | (base32 "1sfk1v54dyjxvilcxf9vlnypc5z0mg0i2inb117k5s09qx7349vi")))) |
| 4117 | (build-system pyproject-build-system) |
| 4118 | (native-inputs (list python-pytest python-setuptools python-wheel)) |
| 4119 | (home-page "https://github.com/stefanholek/lazy") |
| 4120 | (synopsis "Lazy attributes for Python objects") |
| 4121 | (description "This package provides a decorator to create lazy |
| 4122 | attributes.") |
| 4123 | (license license:bsd-2))) |
| 4124 | |
| 4125 | (define-public python-logfury |
| 4126 | (package |
| 4127 | (name "python-logfury") |
| 4128 | (version "1.0.1") |
| 4129 | (source |
| 4130 | (origin |
| 4131 | (method url-fetch) |
| 4132 | (uri (pypi-uri "logfury" version)) |
| 4133 | (sha256 |
| 4134 | (base32 "09kanw1iv61hgmd858xkc9kck8ia91qdyb954i4m7bdrxan5s2hk")))) |
| 4135 | (build-system pyproject-build-system) |
| 4136 | (native-inputs |
| 4137 | (list python-pytest |
| 4138 | python-setuptools |
| 4139 | python-setuptools-scm |
| 4140 | python-testfixtures |
| 4141 | python-wheel)) |
| 4142 | (home-page "https://github.com/reef-technologies/logfury/") |
| 4143 | (synopsis "Logging of method calls for python libraries") |
| 4144 | (description |
| 4145 | "Logfury is a tool for python library maintainers. It allows for |
| 4146 | responsible, low-boilerplate logging of method calls.") |
| 4147 | (license license:bsd-3))) |
| 4148 | |
| 4149 | (define-public python-logzero |
| 4150 | (package |
| 4151 | (name "python-logzero") |
| 4152 | (version "1.7.0") |
| 4153 | (source |
| 4154 | (origin |
| 4155 | (method git-fetch) |
| 4156 | (uri (git-reference |
| 4157 | (url "https://github.com/metachris/logzero") |
| 4158 | (commit (string-append "v" version)))) |
| 4159 | (file-name (git-file-name name version)) |
| 4160 | (sha256 |
| 4161 | (base32 "1i9c0kynyjws5c24ga0sbidyfww3w5fy98gs67xsyfz4nr7w84b3")))) |
| 4162 | (build-system pyproject-build-system) |
| 4163 | (native-inputs (list python-pytest python-setuptools)) |
| 4164 | (home-page "https://github.com/metachris/logzero") |
| 4165 | (synopsis "Robust and effective logging for Python") |
| 4166 | (description |
| 4167 | "@code{logzero} provides a fully configured Python logger object for |
| 4168 | easy logging and rotating to a console or a file.") |
| 4169 | (license license:expat))) |
| 4170 | |
| 4171 | (define-public python-logbook |
| 4172 | (package |
| 4173 | (name "python-logbook") |
| 4174 | (version "1.8.2") |
| 4175 | (source |
| 4176 | (origin |
| 4177 | (method url-fetch) |
| 4178 | (uri (pypi-uri "logbook" version)) |
| 4179 | (sha256 |
| 4180 | (base32 "0afk1nmvj9fp3igzmxa4a048fm21sa4aw1z2ix8jzvs62ry7j6bd")))) |
| 4181 | (build-system pyproject-build-system) |
| 4182 | (native-inputs |
| 4183 | (list python-brotli |
| 4184 | python-cython |
| 4185 | python-pytest |
| 4186 | python-setuptools |
| 4187 | python-wheel)) |
| 4188 | (home-page "https://github.com/getlogbook/logbook") |
| 4189 | (synopsis "Logbook is a logging replacement for Python") |
| 4190 | (description |
| 4191 | "Logbook is a logging system for Python that replaces the standard |
| 4192 | library’s logging module. It was designed with both complex and simple |
| 4193 | applications in mind and the idea to make logging fun.") |
| 4194 | (license license:bsd-3))) |
| 4195 | |
| 4196 | (define-public python-databind-core |
| 4197 | (package |
| 4198 | (name "python-databind-core") |
| 4199 | (version "4.4.2") |
| 4200 | (source |
| 4201 | (origin |
| 4202 | (method url-fetch) |
| 4203 | (uri (pypi-uri "databind.core" version)) |
| 4204 | (sha256 |
| 4205 | (base32 "130hr19kbzizx9n2q7cwfzfk20ii3cqmqjrzb16psnafll303k2d")) |
| 4206 | (snippet |
| 4207 | #~(begin (use-modules (guix build utils)) |
| 4208 | ;; The problem with python-typing-extensions >= 4.7 is only |
| 4209 | ;; with python-3.7. |
| 4210 | (substitute* "pyproject.toml" |
| 4211 | ((",<4.7.*") "\"\n")))))) |
| 4212 | (build-system pyproject-build-system) |
| 4213 | (arguments |
| 4214 | (list |
| 4215 | #:phases |
| 4216 | #~(modify-phases %standard-phases |
| 4217 | (add-after 'install 'fix-name |
| 4218 | (lambda* (#:key inputs outputs #:allow-other-keys) |
| 4219 | (let* ((sitedir (site-packages inputs outputs)) |
| 4220 | (dist-info |
| 4221 | (string-append sitedir "/databind_core-" #$version ".dist-info"))) |
| 4222 | (substitute* (string-append dist-info "/METADATA") |
| 4223 | (("Name: databind-core") |
| 4224 | "Name: databind.core")) |
| 4225 | (substitute* (string-append dist-info "/RECORD") |
| 4226 | (("databind_core") "databind.core")) |
| 4227 | (rename-file dist-info |
| 4228 | (string-append sitedir |
| 4229 | "/databind.core-" |
| 4230 | #$version ".dist-info")))))))) |
| 4231 | (propagated-inputs |
| 4232 | (list python-deprecated |
| 4233 | python-nr-date |
| 4234 | python-nr-stream |
| 4235 | python-typeapi |
| 4236 | python-typing-extensions)) |
| 4237 | (native-inputs |
| 4238 | (list python-poetry-core python-pytest)) |
| 4239 | (home-page "https://niklasrosenstein.github.io/python-databind/core/") |
| 4240 | (synopsis |
| 4241 | "Library for de-/serializing Python dataclasses") |
| 4242 | (description |
| 4243 | "Databind is a library inspired by jackson-databind to de-/serialize |
| 4244 | Python dataclasses.") |
| 4245 | (license license:expat))) |
| 4246 | |
| 4247 | (define-public python-databind-json |
| 4248 | (package |
| 4249 | (name "python-databind-json") |
| 4250 | (version "4.4.2") |
| 4251 | (source |
| 4252 | (origin |
| 4253 | (method url-fetch) |
| 4254 | (uri (pypi-uri "databind.json" version)) |
| 4255 | (sha256 |
| 4256 | (base32 "1lm864d7arfq0pw64hyc83bwn1z94wjg7a22q1xf0qkjynqs70gg")) |
| 4257 | (snippet |
| 4258 | #~(begin (use-modules (guix build utils)) |
| 4259 | ;; The problem with python-typing-extensions >= 4.7 is only |
| 4260 | ;; with python-3.7. |
| 4261 | (substitute* "pyproject.toml" |
| 4262 | ((",<4.7.*") "\"\n")))))) |
| 4263 | (build-system pyproject-build-system) |
| 4264 | (arguments |
| 4265 | (list |
| 4266 | #:phases |
| 4267 | #~(modify-phases %standard-phases |
| 4268 | (add-after 'install 'fix-name |
| 4269 | (lambda* (#:key inputs outputs #:allow-other-keys) |
| 4270 | (let* ((sitedir (site-packages inputs outputs)) |
| 4271 | (dist-info |
| 4272 | (string-append sitedir "/databind_json-" #$version ".dist-info"))) |
| 4273 | (substitute* (string-append dist-info "/METADATA") |
| 4274 | (("Name: databind-json") |
| 4275 | "Name: databind.json")) |
| 4276 | (substitute* (string-append dist-info "/RECORD") |
| 4277 | (("databind_json") "databind.json")) |
| 4278 | (rename-file dist-info |
| 4279 | (string-append sitedir |
| 4280 | "/databind.json-" |
| 4281 | #$version ".dist-info")))))))) |
| 4282 | (propagated-inputs |
| 4283 | (list python-databind-core python-nr-date |
| 4284 | python-typeapi python-typing-extensions)) |
| 4285 | (native-inputs (list python-poetry-core python-pytest)) |
| 4286 | (home-page "https://niklasrosenstein.github.io/python-databind/json/") |
| 4287 | (synopsis |
| 4288 | "De-/serialize Python dataclasses to or from JSON payloads") |
| 4289 | (description |
| 4290 | "The @code{databind.json} package implements the de-/serialization to or |
| 4291 | from JSON payloads using the @code{databind.core} framework.") |
| 4292 | (license license:expat))) |
| 4293 | |
| 4294 | (define-public python-docspec |
| 4295 | (package |
| 4296 | (name "python-docspec") |
| 4297 | (version "2.2.1") |
| 4298 | (source |
| 4299 | (origin |
| 4300 | (method url-fetch) |
| 4301 | (uri (pypi-uri "docspec" version)) |
| 4302 | (sha256 |
| 4303 | (base32 "1zqmdrc6k8pprra8p3wpzq2ml2gph1cfjmsyg07f8b8fvizffm28")))) |
| 4304 | (build-system pyproject-build-system) |
| 4305 | (arguments (list #:tests? #false)) ;there are none |
| 4306 | (propagated-inputs |
| 4307 | (list python-databind-core |
| 4308 | python-databind-json |
| 4309 | python-deprecated)) |
| 4310 | (native-inputs |
| 4311 | (list python-poetry-core)) |
| 4312 | (home-page "https://github.com/NiklasRosenstein/python-docspec") |
| 4313 | (synopsis "Represent API documentation of programming languages") |
| 4314 | (description |
| 4315 | "Docspec is a JSON object specification for representing API |
| 4316 | documentation of programming languages.") |
| 4317 | (license license:expat))) |
| 4318 | |
| 4319 | (define-public python-docspec-python |
| 4320 | (package |
| 4321 | (name "python-docspec-python") |
| 4322 | (version "2.2.1") |
| 4323 | (source |
| 4324 | (origin |
| 4325 | (method url-fetch) |
| 4326 | (uri (pypi-uri "docspec_python" version)) |
| 4327 | (sha256 |
| 4328 | (base32 "0n8m52vxmlvkj7p5jmd4rfdks65rrp4q4vzak44y6kbg9l5qa6y4")))) |
| 4329 | (build-system pyproject-build-system) |
| 4330 | (arguments |
| 4331 | (list #:tests? #false)) ;there are none |
| 4332 | (propagated-inputs (list python-docspec python-nr-util)) |
| 4333 | (native-inputs (list python-poetry-core)) |
| 4334 | (home-page "https://github.com/NiklasRosenstein/docspec/") |
| 4335 | (synopsis "Produce docspec data from Python source code") |
| 4336 | (description |
| 4337 | "This package provides a parser based on @code{lib2to3} producing |
| 4338 | @code{docspec} data from Python source code.") |
| 4339 | (license license:expat))) |
| 4340 | |
| 4341 | (define-public python-fqdn |
| 4342 | (package |
| 4343 | (name "python-fqdn") |
| 4344 | (version "1.5.1") |
| 4345 | (source |
| 4346 | (origin |
| 4347 | (method git-fetch) |
| 4348 | (uri (git-reference |
| 4349 | (url "https://github.com/ypcrts/fqdn") |
| 4350 | (commit (string-append "v" version)))) |
| 4351 | (file-name (git-file-name name version)) |
| 4352 | (sha256 |
| 4353 | (base32 "1cfxpvlvfi9s20v93m3rgw7jn6ybc5ga5rwxhrap59zwd9crsh2g")))) |
| 4354 | (build-system pyproject-build-system) |
| 4355 | (native-inputs |
| 4356 | (list python-pytest |
| 4357 | python-setuptools)) |
| 4358 | (home-page "https://github.com/ypcrts/fqdn") |
| 4359 | (synopsis "Validate domain names against RFC 1123") |
| 4360 | (description |
| 4361 | "This package validates fully-qualified domain names against RFC 1123, so |
| 4362 | that they are acceptable to modern bowsers") |
| 4363 | (license license:mpl2.0))) |
| 4364 | |
| 4365 | (define-public python-fire |
| 4366 | (package |
| 4367 | (name "python-fire") |
| 4368 | (version "0.7.0") |
| 4369 | (source |
| 4370 | (origin |
| 4371 | (method url-fetch) |
| 4372 | (uri (pypi-uri "fire" version)) |
| 4373 | (sha256 |
| 4374 | (base32 "1pswm79gi51p596zmfvaskx0i15znbr610yws5dgdsing7q505cn")))) |
| 4375 | (build-system pyproject-build-system) |
| 4376 | (propagated-inputs (list python-termcolor)) |
| 4377 | (native-inputs (list python-pytest python-setuptools python-wheel)) |
| 4378 | (synopsis "Library for automatically generating command line interfaces") |
| 4379 | (description |
| 4380 | "Fire is a library for automatically generating command line interfaces |
| 4381 | from absolutely any Python object. The following are the advantages: |
| 4382 | @itemize |
| 4383 | @item A simple way to create a CLI in Python. |
| 4384 | @item A helpful tool for developing and debugging Python code. |
| 4385 | @item Helps with exploring existing code or turning other people's code into a |
| 4386 | command line interface. |
| 4387 | @item Makes transitioning between Bash and Python easier. |
| 4388 | @item Makes using a Python REPL easier by setting up the REPL with the modules |
| 4389 | and variables you'll need already imported and created. |
| 4390 | @end itemize") |
| 4391 | (home-page "https://github.com/google/python-fire") |
| 4392 | (license license:asl2.0))) |
| 4393 | |
| 4394 | (define-public python-fit-nbinom |
| 4395 | (package |
| 4396 | (name "python-fit-nbinom") |
| 4397 | (version "1.1") |
| 4398 | (source (origin |
| 4399 | (method url-fetch) |
| 4400 | (uri (pypi-uri "fit_nbinom" version)) |
| 4401 | (sha256 |
| 4402 | (base32 |
| 4403 | "12v8l5i35vjbpvh5i4lw29ys6vpr3z7pysyrx33hxaq09zr015mx")))) |
| 4404 | (build-system pyproject-build-system) |
| 4405 | (arguments |
| 4406 | (list |
| 4407 | #:tests? #false ;there are none |
| 4408 | #:phases |
| 4409 | '(modify-phases %standard-phases |
| 4410 | (add-after 'unpack 'remove-invalid-syntax |
| 4411 | (lambda _ |
| 4412 | (substitute* "setup.py" |
| 4413 | ((".\\*\"") "\""))))))) |
| 4414 | (propagated-inputs (list python-numpy python-scipy)) |
| 4415 | (native-inputs (list python-setuptools python-wheel)) |
| 4416 | (home-page "https://github.com/joachimwolff/fit_nbinom") |
| 4417 | (synopsis "Negative binomial maximum likelihood estimator") |
| 4418 | (description "This package provides an implementation in Python using |
| 4419 | scipy and numpy of negative binomial maximum likelihood estimation.") |
| 4420 | (license license:gpl3+))) |
| 4421 | |
| 4422 | (define-public python-docrep |
| 4423 | (package |
| 4424 | (name "python-docrep") |
| 4425 | (version "0.3.2") |
| 4426 | (source (origin |
| 4427 | (method url-fetch) |
| 4428 | (uri (pypi-uri "docrep" version)) |
| 4429 | (sha256 |
| 4430 | (base32 |
| 4431 | "0523jrzjj29kxpdllmfhrfj9kysi9mphp2m7ippjkn5b07i1g2pd")))) |
| 4432 | (build-system pyproject-build-system) |
| 4433 | (propagated-inputs (list python-six)) |
| 4434 | (native-inputs (list python-pytest python-setuptools python-wheel)) |
| 4435 | (home-page "https://github.com/Chilipp/docrep") |
| 4436 | (synopsis "Python package for docstring repetition") |
| 4437 | (description "Docrep is the documentation repetition module. This module |
| 4438 | targets developers that develop complex and nested Python APIs and helps them |
| 4439 | to create a well-documented piece of software.") |
| 4440 | (license license:asl2.0))) |
| 4441 | |
| 4442 | (define-public python-dotmap |
| 4443 | (package |
| 4444 | (name "python-dotmap") |
| 4445 | (version "1.3.30") |
| 4446 | (source |
| 4447 | (origin |
| 4448 | (method url-fetch) |
| 4449 | (uri (pypi-uri "dotmap" version)) |
| 4450 | (sha256 |
| 4451 | (base32 "0s5kb2v7jd0narz6m6jcicak3h5pw290wz21cdsv8pq77y9sf8aq")))) |
| 4452 | (build-system pyproject-build-system) |
| 4453 | (arguments (list #:test-backend #~'unittest)) |
| 4454 | (native-inputs (list python-setuptools)) |
| 4455 | (home-page "https://github.com/drgrib/dotmap") |
| 4456 | (synopsis "Ordered, dynamically-expandable dot-access dictionary") |
| 4457 | (description |
| 4458 | "DotMap is a dot-access dictionary subclass that has dynamic |
| 4459 | hierarchy creation, can be initialized with keys, can be initialized from a |
| 4460 | dictionary, can be convert to a dictionary, and is ordered by insertion.") |
| 4461 | (license license:expat))) |
| 4462 | |
| 4463 | (define-public python-dotty-dict |
| 4464 | (package |
| 4465 | (name "python-dotty-dict") |
| 4466 | (version "1.3.1") |
| 4467 | (source |
| 4468 | (origin |
| 4469 | (method git-fetch) |
| 4470 | (uri (git-reference |
| 4471 | (url "https://github.com/pawelzny/dotty_dict") |
| 4472 | (commit (string-append "v" version)))) |
| 4473 | (sha256 |
| 4474 | (base32 "0rs83pglkgb4sfnk09rskg8c53hvl7mkjw4vfgl5xc8z13vyi3li")))) |
| 4475 | (build-system pyproject-build-system) |
| 4476 | (native-inputs |
| 4477 | (list python-poetry-core |
| 4478 | python-pytest |
| 4479 | python-setuptools)) |
| 4480 | (home-page "https://github.com/pawelzny/dotty_dict") |
| 4481 | (synopsis "Python library for accessing dictionaries using a dot syntax") |
| 4482 | (description "This package provides a library that wraps the traditional |
| 4483 | Python dictionaries and provides a syntax to access nested dictionaries values |
| 4484 | using a dot syntax, for example: @code{dictionary['deeply.nested.key']}.") |
| 4485 | (license license:expat))) |
| 4486 | |
| 4487 | (define-public python-affine |
| 4488 | (package |
| 4489 | (name "python-affine") |
| 4490 | (version "2.4.0") |
| 4491 | (source (origin |
| 4492 | (method url-fetch) |
| 4493 | (uri (pypi-uri "affine" version)) |
| 4494 | (sha256 |
| 4495 | (base32 |
| 4496 | "1shyvajayyzbkp9dihb4mz835jnkp0kqqbyjfqci6v43da6q2kd2")))) |
| 4497 | (build-system pyproject-build-system) |
| 4498 | (propagated-inputs (list python-flake8 |
| 4499 | python-pytest python-pytest-cov)) |
| 4500 | (native-inputs (list python-flit-core)) |
| 4501 | (home-page "https://github.com/rasterio/affine") |
| 4502 | (synopsis "Matrices describing affine transformation of the plane") |
| 4503 | (description "This is a package for matrices describing the affine |
| 4504 | transformation of the plane.") |
| 4505 | (license license:bsd-3))) |
| 4506 | |
| 4507 | (define-public python-argopt |
| 4508 | (package |
| 4509 | (name "python-argopt") |
| 4510 | (version "0.9.1") |
| 4511 | (source |
| 4512 | (origin |
| 4513 | (method url-fetch) |
| 4514 | (uri (pypi-uri "argopt" version)) |
| 4515 | (sha256 |
| 4516 | (base32 "03kpzdz8ib3szq8dpbr63jv0za4rpwal9iwpr3xhyqpzyiwhcy19")))) |
| 4517 | (build-system pyproject-build-system) |
| 4518 | (native-inputs |
| 4519 | (list python-pytest |
| 4520 | python-pytest-timeout |
| 4521 | python-setuptools |
| 4522 | python-setuptools-scm |
| 4523 | python-wheel)) |
| 4524 | (home-page "https://github.com/casperdcl/argopt") |
| 4525 | (synopsis "Generate a command-line interface from a docstring") |
| 4526 | (description |
| 4527 | "This package provides tools to define a command line interface |
| 4528 | from a docstring rather than the other way around.") |
| 4529 | (license license:mpl2.0))) |
| 4530 | |
| 4531 | (define-public python-array-api-compat |
| 4532 | (package |
| 4533 | (name "python-array-api-compat") |
| 4534 | (version "1.12.0") |
| 4535 | (source |
| 4536 | (origin |
| 4537 | (method url-fetch) |
| 4538 | (uri (pypi-uri "array_api_compat" version)) |
| 4539 | (sha256 |
| 4540 | (base32 "0x7r1ni9zpg68yz76dfza07q3pgwxjx15h5p4jn57pjhyqawcnsq")))) |
| 4541 | (build-system pyproject-build-system) |
| 4542 | ;; Tests would require all supported array libraries, including pytorch |
| 4543 | (arguments (list #:tests? #false)) |
| 4544 | (native-inputs |
| 4545 | (list python-setuptools)) |
| 4546 | (home-page "https://data-apis.org/array-api-compat/") |
| 4547 | (synopsis "Array API compatibility wrapper for NumPy et al") |
| 4548 | (description |
| 4549 | "This package provides a wrapper around @code{NumPy} and other array |
| 4550 | libraries to make them compatible with the Array API standard") |
| 4551 | (license license:expat))) |
| 4552 | |
| 4553 | (define-public python-array-api-strict |
| 4554 | (package |
| 4555 | (name "python-array-api-strict") |
| 4556 | (version "2.5") |
| 4557 | (source |
| 4558 | (origin |
| 4559 | (method url-fetch) |
| 4560 | (uri (pypi-uri "array_api_strict" version)) |
| 4561 | (sha256 |
| 4562 | (base32 "1ig116ld5k8wx82ahld4l7qcb0d4s5s4f4a0nrflrh3hzabyarvp")))) |
| 4563 | (build-system pyproject-build-system) |
| 4564 | (arguments |
| 4565 | (list |
| 4566 | ;; tests: 585 passed, 2 deselected |
| 4567 | #:test-flags |
| 4568 | ;; hypothesis.errors.InvalidArgument: |
| 4569 | ;; xp.__array_api_version__='2025.12', but it must be a valid version |
| 4570 | ;; string ('2021.12', '2022.12', '2023.12', '2024.12'). If the standard |
| 4571 | ;; version you want is not available, please ensure you're using the |
| 4572 | ;; latest version of Hypothesis, then open an issue if one doesn't |
| 4573 | ;; already exist. |
| 4574 | #~(list "--ignore=array_api_strict/tests/test_set_functions.py" |
| 4575 | ;; ModuleNotFoundError: No module named 'numpy', not sure why? |
| 4576 | "-k" (string-append "not test_disabled_extensions" |
| 4577 | " and not test_environment_variables")))) |
| 4578 | (native-inputs |
| 4579 | (list python-hypothesis |
| 4580 | python-pytest |
| 4581 | python-setuptools |
| 4582 | python-setuptools-scm)) |
| 4583 | (propagated-inputs |
| 4584 | (list python-numpy)) |
| 4585 | (home-page "https://data-apis.org/array-api-strict/") |
| 4586 | (synopsis "Strict implementation of the Python array API") |
| 4587 | (description |
| 4588 | "@code{array_api_strict} is a strict, minimal implementation of the |
| 4589 | @url{https://data-apis.org/array-api/latest/, Python array API}. |
| 4590 | |
| 4591 | The purpose of array-api-strict is to provide an implementation of the array |
| 4592 | API for consuming libraries to test against so they can be completely sure |
| 4593 | their usage of the array API is portable.") |
| 4594 | (license license:bsd-3))) |
| 4595 | |
| 4596 | (define-public python-cachedir-tag |
| 4597 | (package |
| 4598 | (name "python-cachedir-tag") |
| 4599 | (version "0.0.4") |
| 4600 | (source |
| 4601 | (origin |
| 4602 | (method git-fetch) |
| 4603 | (uri (git-reference |
| 4604 | (url "https://github.com/moreati/python-cachedir-tag") |
| 4605 | (commit (string-append "v" version)))) |
| 4606 | (file-name (git-file-name name version)) |
| 4607 | (sha256 |
| 4608 | (base32 "1s78j7ppangzglcc1pwkg0i4bvv47iyx3k4dpxn209sdy2554xqj")))) |
| 4609 | (build-system pyproject-build-system) |
| 4610 | (arguments '(#:tests? #f)) ;no test |
| 4611 | (native-inputs (list python-setuptools)) |
| 4612 | (home-page "https://github.com/moreati/python-cachedir-tag") |
| 4613 | (synopsis |
| 4614 | "Handle @file{CACHEDIR.TAG} in cache directories") |
| 4615 | (description |
| 4616 | "This library handles @url{https://bford.info/cachedir, CACHEDIR.TAG}, |
| 4617 | a file llowing any arbitrary directory to be marked as a cache directory.") |
| 4618 | (license license:expat))) |
| 4619 | |
| 4620 | (define-public python-cachetools |
| 4621 | (package |
| 4622 | (name "python-cachetools") |
| 4623 | (version "6.1.0") |
| 4624 | (source |
| 4625 | (origin |
| 4626 | (method url-fetch) |
| 4627 | (uri (pypi-uri "cachetools" version)) |
| 4628 | (sha256 |
| 4629 | (base32 "11s5ajy31r08228nd2sbv9jdir3vs584khxawwydnj18742g9i5l")))) |
| 4630 | (build-system pyproject-build-system) |
| 4631 | (native-inputs |
| 4632 | (list python-pytest |
| 4633 | python-setuptools |
| 4634 | python-wheel)) |
| 4635 | (home-page "https://github.com/tkem/cachetools/") |
| 4636 | (synopsis "Extensible memoizing collections and decorators") |
| 4637 | (description "This module provides various memoizing collections and |
| 4638 | decorators, including variants of the Python standard library's |
| 4639 | @code{lru_cache} function decorator.") |
| 4640 | (license license:expat))) |
| 4641 | |
| 4642 | (define-public python-cachetools-5 |
| 4643 | (package |
| 4644 | (inherit python-cachetools) |
| 4645 | (version "5.5.2") |
| 4646 | (source |
| 4647 | (origin |
| 4648 | (method url-fetch) |
| 4649 | (uri (pypi-uri "cachetools" version)) |
| 4650 | (sha256 |
| 4651 | (base32 "1m20wqipm50zvcgs3z2xksb96qwx1xc1jbhvaxcnglkmj6m1qrhs")))))) |
| 4652 | |
| 4653 | (define-public python-colorclass |
| 4654 | (package |
| 4655 | (name "python-colorclass") |
| 4656 | (version "2.2.2") |
| 4657 | (source |
| 4658 | (origin |
| 4659 | (method git-fetch) |
| 4660 | (uri (git-reference |
| 4661 | (url "https://github.com/matthewdeanmartin/colorclass") |
| 4662 | (commit (string-append "v" version)))) |
| 4663 | (file-name (git-file-name name version)) |
| 4664 | (sha256 |
| 4665 | (base32 "1ylj167lfh8yzms30qrkiznv6737hdxra5lk8mhijcjm3hi1cl9l")))) |
| 4666 | (build-system pyproject-build-system) |
| 4667 | (arguments |
| 4668 | (list |
| 4669 | #:test-flags |
| 4670 | #~(list "-k" "not test_piped") ; Unclear why this test fails. |
| 4671 | #:phases |
| 4672 | #~(modify-phases %standard-phases |
| 4673 | (add-after 'unpack 'use-poetry-core |
| 4674 | (lambda _ |
| 4675 | ;; Patch to use the core poetry API. |
| 4676 | (substitute* "pyproject.toml" |
| 4677 | (("poetry.masonry.api") "poetry.core.masonry.api"))))))) |
| 4678 | (native-inputs (list python-poetry-core python-pytest)) |
| 4679 | (home-page "https://github.com/matthewdeanmartin/colorclass") |
| 4680 | (synopsis "Colorful console applications with Python") |
| 4681 | (description |
| 4682 | "This package provides an ANSI color text library for Python. It |
| 4683 | provides automatic coloring for dark or light terminals.") |
| 4684 | (license license:expat))) |
| 4685 | |
| 4686 | (define-public python-colorcet |
| 4687 | (package |
| 4688 | (name "python-colorcet") |
| 4689 | (version "3.1.1a1") |
| 4690 | (source |
| 4691 | (origin |
| 4692 | (method url-fetch) |
| 4693 | (uri (pypi-uri "colorcet" version)) |
| 4694 | (sha256 |
| 4695 | (base32 "1h15wdgha1cpj5a9p2dy9d8qdqnl5j1a0ylc7wilcfhvnfzcgp08")))) |
| 4696 | (build-system pyproject-build-system) |
| 4697 | (native-inputs (list python-nbval |
| 4698 | python-packaging |
| 4699 | python-pytest |
| 4700 | python-pytest-mpl |
| 4701 | python-setuptools |
| 4702 | python-setuptools-scm)) |
| 4703 | (home-page "https://colorcet.holoviz.org/") |
| 4704 | (synopsis "Collection of perceptually uniform colormaps") |
| 4705 | (description "Colorcet is a collection of perceptually accurate 256-color |
| 4706 | colormaps for use with Python plotting programs like Bokeh, Matplotlib, |
| 4707 | HoloViews, and Datashader.") |
| 4708 | (license license:cc-by4.0))) |
| 4709 | |
| 4710 | (define-public python-colored |
| 4711 | (package |
| 4712 | (name "python-colored") |
| 4713 | (version "2.3.0") |
| 4714 | (source (origin |
| 4715 | (method git-fetch) |
| 4716 | (uri (git-reference |
| 4717 | (url "https://gitlab.com/dslackw/colored") |
| 4718 | (commit version))) |
| 4719 | (file-name (git-file-name name version)) |
| 4720 | (sha256 |
| 4721 | (base32 |
| 4722 | "00332xdjw5fcj5wx848693355nvlgcf8qmpwkvz3rngfg1q5bxa6")))) |
| 4723 | (build-system pyproject-build-system) |
| 4724 | (arguments |
| 4725 | (list |
| 4726 | #:phases |
| 4727 | #~(modify-phases %standard-phases |
| 4728 | (add-before 'check 'pre-check |
| 4729 | (lambda _ |
| 4730 | ;; Tests expect ANSI escape codes for colors. |
| 4731 | (setenv "FORCE_COLOR" "1")))))) |
| 4732 | (native-inputs (list python-flit-core python-pytest)) |
| 4733 | (home-page "https://gitlab.com/dslackw/colored") |
| 4734 | (synopsis "Simple library for color and formatting to terminal") |
| 4735 | (description "This is a very simple Python library for color and |
| 4736 | formatting in the terminal. It comes with a collection of color codes and |
| 4737 | names for 256 color terminal setups.") |
| 4738 | (license license:expat))) |
| 4739 | |
| 4740 | (define-public python-colored-traceback |
| 4741 | ;; No tags in upstream repository. |
| 4742 | (let ((commit "98e6dea7111f7681db823c518f18026374a832b9") |
| 4743 | (revision "0")) |
| 4744 | (package |
| 4745 | (name "python-colored-traceback") |
| 4746 | (version (git-version "0.4.2" revision commit)) |
| 4747 | (source |
| 4748 | (origin |
| 4749 | (method git-fetch) |
| 4750 | (uri (git-reference |
| 4751 | (url "https://github.com/staticshock/colored-traceback.py") |
| 4752 | (commit commit))) |
| 4753 | (file-name (git-file-name name version)) |
| 4754 | (sha256 |
| 4755 | (base32 "19d5mpwk7398b8fjh6abnr96wz70vf5vb4p207r8sny748rwx451")))) |
| 4756 | (build-system pyproject-build-system) |
| 4757 | (arguments |
| 4758 | ;; Tests are incompatible with current python version. |
| 4759 | (list #:tests? #f)) |
| 4760 | (propagated-inputs (list python-colorama python-pygments)) |
| 4761 | (native-inputs (list python-setuptools python-wheel)) |
| 4762 | (home-page "https://github.com/staticshock/colored-traceback.py") |
| 4763 | (synopsis "Automatically color uncaught exception tracebacks") |
| 4764 | (description "This package provides python utilities to automatically |
| 4765 | color uncaught exception tracebacks.") |
| 4766 | (license license:isc)))) |
| 4767 | |
| 4768 | (define-public python-colorful |
| 4769 | (package |
| 4770 | (name "python-colorful") |
| 4771 | (version "0.5.8") |
| 4772 | (source |
| 4773 | (origin |
| 4774 | (method git-fetch) |
| 4775 | (uri (git-reference |
| 4776 | (url "https://github.com/timofurrer/colorful") |
| 4777 | (commit (string-append "v" version)))) |
| 4778 | (file-name (git-file-name name version)) |
| 4779 | (sha256 |
| 4780 | (base32 "00ag7h9g4v06japcva70sqibb9k49jrxq97nq3bi16b2y16mafwz")))) |
| 4781 | (build-system pyproject-build-system) |
| 4782 | (native-inputs |
| 4783 | (list python-pytest |
| 4784 | python-setuptools)) |
| 4785 | (propagated-inputs |
| 4786 | (list python-colorama)) |
| 4787 | (home-page "http://github.com/timofurrer/colorful") |
| 4788 | (synopsis "Terminal string styling") |
| 4789 | (description "Colorful provides an array of text styles, that can be used |
| 4790 | as functions or string constants to form colored terminal output.") |
| 4791 | (license license:expat))) |
| 4792 | |
| 4793 | (define-public python-colorthief |
| 4794 | (package |
| 4795 | (name "python-colorthief") |
| 4796 | (version "0.2.1") |
| 4797 | (source |
| 4798 | (origin |
| 4799 | (method url-fetch) |
| 4800 | (uri (pypi-uri "colorthief" version)) |
| 4801 | (sha256 |
| 4802 | (base32 "08bjsmmkihyksms2vgndslln02rvw56lkxz28d39qrnxbg4v1707")))) |
| 4803 | (build-system pyproject-build-system) |
| 4804 | (arguments |
| 4805 | (list #:tests? #f)) ;no tests in PyPI or Git |
| 4806 | (native-inputs (list python-setuptools)) |
| 4807 | (propagated-inputs (list python-pillow)) |
| 4808 | (home-page "https://github.com/fengsp/color-thief-py") |
| 4809 | (synopsis "Grab the color palette of an image") |
| 4810 | (description |
| 4811 | "This package provides methods to determine the dominant color |
| 4812 | of an image, as well as constructing a representative color palette.") |
| 4813 | (license license:bsd-3))) |
| 4814 | |
| 4815 | (define-public python-construct-classes |
| 4816 | (package |
| 4817 | (name "python-construct-classes") |
| 4818 | (version "0.1.2") |
| 4819 | (source |
| 4820 | (origin |
| 4821 | (method git-fetch) |
| 4822 | (uri (git-reference |
| 4823 | (url "https://github.com/matejcik/construct-classes") |
| 4824 | (commit (string-append "v" version)))) |
| 4825 | (file-name (git-file-name name version)) |
| 4826 | (sha256 |
| 4827 | (base32 "0fmr8nfg543lyqk4164a52jb6lwpq98radicbkhhdfckq9lib2wp")))) |
| 4828 | (build-system pyproject-build-system) |
| 4829 | (propagated-inputs |
| 4830 | (list python-construct)) |
| 4831 | (native-inputs |
| 4832 | (list python-poetry-core |
| 4833 | python-pytest)) |
| 4834 | (home-page "https://github.com/matejcik/construct-classes") |
| 4835 | (synopsis "Parse binary structs into dataclasses") |
| 4836 | (description "This package provides a parser to parse binary structs |
| 4837 | into dataclasses.") |
| 4838 | (license license:expat))) |
| 4839 | |
| 4840 | (define-public python-contourpy |
| 4841 | (package |
| 4842 | (name "python-contourpy") |
| 4843 | (version "1.3.3") |
| 4844 | (source |
| 4845 | (origin |
| 4846 | (method url-fetch) |
| 4847 | (uri (pypi-uri "contourpy" version)) |
| 4848 | (sha256 |
| 4849 | (base32 "1078vg1lha4z8adrfnpr68sdqmjdn0ml74d4pk804191bcai4gh8")))) |
| 4850 | (build-system pyproject-build-system) |
| 4851 | (arguments |
| 4852 | (list |
| 4853 | ;; tests: 1746 passed, 17 skipped, 750 deselected, 1 warning |
| 4854 | #:test-flags |
| 4855 | ;; To prevent adding Matplotlib reducing closure size, and break cycle. |
| 4856 | #~(list "-m" "not image" |
| 4857 | ;; Tests that pass but avoided for load reasons. |
| 4858 | "-k" "not test_filled_random_big and not test_lines_random_big"))) |
| 4859 | (native-inputs |
| 4860 | (list pybind11-2 |
| 4861 | python-meson |
| 4862 | python-pytest |
| 4863 | python-wurlitzer)) |
| 4864 | (propagated-inputs |
| 4865 | (list python-numpy)) |
| 4866 | (home-page "https://contourpy.readthedocs.io/") |
| 4867 | (synopsis |
| 4868 | "Python library for calculating contours of 2D quadrilateral grids") |
| 4869 | (description |
| 4870 | "ContourPy is a Python library for calculating contours of 2D |
| 4871 | quadrilateral grids. It is written in C++11 and wrapped using pybind11.") |
| 4872 | (license license:bsd-3))) |
| 4873 | |
| 4874 | (define-public python-lunr |
| 4875 | (package |
| 4876 | (name "python-lunr") |
| 4877 | (version "0.8.0") |
| 4878 | (source |
| 4879 | (origin |
| 4880 | (method url-fetch) |
| 4881 | (uri |
| 4882 | (pypi-uri "lunr" version)) |
| 4883 | (sha256 |
| 4884 | (base32 "0a426nngs8h2mhqm60rwywxh2vb6snrip47w9fhpglkqjl2zav5l")))) |
| 4885 | (build-system pyproject-build-system) |
| 4886 | (arguments |
| 4887 | (list |
| 4888 | #:test-flags |
| 4889 | '(list "-k" "not TestLanguageSupport" |
| 4890 | "--ignore-glob=tests/acceptance_tests/*"))) |
| 4891 | (native-inputs |
| 4892 | (list python-hatch-fancy-pypi-readme |
| 4893 | python-hatchling |
| 4894 | python-pytest |
| 4895 | python-pytest-timeout)) |
| 4896 | (propagated-inputs |
| 4897 | (list python-nltk)) |
| 4898 | (home-page "https://github.com/yeraydiazdiaz/lunr.py") |
| 4899 | (synopsis "Full-text search library") |
| 4900 | (description "This package provides python library for full-text search. |
| 4901 | It indexes documents and provides a search interface for retrieving documents |
| 4902 | that best match text queries.") |
| 4903 | (license license:expat))) |
| 4904 | |
| 4905 | (define-public python-mdit-py-plugins |
| 4906 | (package |
| 4907 | (name "python-mdit-py-plugins") |
| 4908 | (version "0.5.0") |
| 4909 | (source (origin |
| 4910 | (method git-fetch) ;for tests |
| 4911 | (uri (git-reference |
| 4912 | (url "https://github.com/executablebooks/mdit-py-plugins") |
| 4913 | (commit (string-append "v" version)))) |
| 4914 | (file-name (git-file-name name version)) |
| 4915 | (sha256 |
| 4916 | (base32 |
| 4917 | "1l3g3686lh2w1bmfd8n2qxsn4ipa7byyd57556d63caaiyxkl19i")))) |
| 4918 | (build-system pyproject-build-system) |
| 4919 | (propagated-inputs |
| 4920 | (list python-markdown-it-py |
| 4921 | python-attrs)) |
| 4922 | (native-inputs |
| 4923 | (list python-flit-core |
| 4924 | python-pytest |
| 4925 | python-pytest-regressions)) |
| 4926 | (home-page "https://github.com/executablebooks/mdit-py-plugins") |
| 4927 | (synopsis "Collection of plugins for markdown-it-py") |
| 4928 | (description "This package contains a collection of plugins for |
| 4929 | @code{markdown-it-py} like: |
| 4930 | @enumerate |
| 4931 | @item amsmath, |
| 4932 | @item attrs, |
| 4933 | @item container, |
| 4934 | @item definition list, |
| 4935 | @item dollarmath, |
| 4936 | @item field list, |
| 4937 | @item footnote, |
| 4938 | @item textmath, and |
| 4939 | @item wordcount. |
| 4940 | @end enumerate") |
| 4941 | (license license:expat))) |
| 4942 | |
| 4943 | (define-public python-mdurl |
| 4944 | (package |
| 4945 | (name "python-mdurl") |
| 4946 | (version "0.1.2") |
| 4947 | (source |
| 4948 | (origin |
| 4949 | (method git-fetch) |
| 4950 | (uri (git-reference |
| 4951 | (url "https://github.com/executablebooks/mdurl") |
| 4952 | (commit version))) |
| 4953 | (file-name (git-file-name name version)) |
| 4954 | (sha256 |
| 4955 | (base32 "0csc777q42jzv4zgdzxmwp8xqlb92ws1jvj09m2smh4klw67q5f3")))) |
| 4956 | (build-system pyproject-build-system) |
| 4957 | (native-inputs (list python-flit-core python-pytest)) |
| 4958 | (home-page "https://github.com/executablebooks/mdurl") |
| 4959 | (synopsis "Markdown URL utilities") |
| 4960 | (description |
| 4961 | "This package implements a Python port of the JavaScript @code{mdurl}.") |
| 4962 | (license license:expat))) |
| 4963 | |
| 4964 | (define-public python-mkdocs |
| 4965 | (package |
| 4966 | (name "python-mkdocs") |
| 4967 | (version "1.6.1") |
| 4968 | (source |
| 4969 | (origin |
| 4970 | (method git-fetch) |
| 4971 | (uri (git-reference |
| 4972 | (url "https://github.com/mkdocs/mkdocs") |
| 4973 | (commit version))) |
| 4974 | (file-name (git-file-name name version)) |
| 4975 | (sha256 |
| 4976 | (base32 "02gllyq6myvgmqqsmj3il4f48bsvd617dwg62qx832bnbn0qw115")))) |
| 4977 | (build-system pyproject-build-system) |
| 4978 | (arguments |
| 4979 | (list |
| 4980 | ;; tests: 687 passed |
| 4981 | #:test-backend #~'unittest |
| 4982 | #:test-flags |
| 4983 | #~(list "discover" "-s" "mkdocs" "-p" "*tests.py") |
| 4984 | #:phases |
| 4985 | #~(modify-phases %standard-phases |
| 4986 | ;; XXX: Not ideal, but a few tests fail and it's not straightforward |
| 4987 | ;; to run tests with pytest (and thus ignore them selectively). |
| 4988 | (add-before 'check 'delete-failing-tests |
| 4989 | (lambda _ |
| 4990 | (delete-file "mkdocs/tests/cli_tests.py")))))) |
| 4991 | (native-inputs |
| 4992 | (list python-hatchling |
| 4993 | python-setuptools)) |
| 4994 | (propagated-inputs |
| 4995 | (list python-click |
| 4996 | python-ghp-import |
| 4997 | python-jinja2 |
| 4998 | python-markdown |
| 4999 | python-markupsafe |
| 5000 | python-mergedeep |
| 5001 | python-mkdocs-get-deps |
| 5002 | python-packaging |
| 5003 | python-pathspec |
| 5004 | python-pyyaml |
| 5005 | python-pyyaml-env-tag |
| 5006 | python-watchdog |
| 5007 | ;; [optional] |
| 5008 | python-babel)) |
| 5009 | (home-page "https://www.mkdocs.org") |
| 5010 | (synopsis "Project documentation with Markdown") |
| 5011 | (description |
| 5012 | "MkDocs is a static site generator geared towards building project |
| 5013 | documentation. Documentation source files are written in Markdown, and |
| 5014 | configured with a single YAML configuration file.") |
| 5015 | (license license:bsd-3))) |
| 5016 | |
| 5017 | (define-public python-mkdocs-get-deps |
| 5018 | (package |
| 5019 | (name "python-mkdocs-get-deps") |
| 5020 | (version "0.2.0") |
| 5021 | (source |
| 5022 | (origin |
| 5023 | (method git-fetch) |
| 5024 | (uri (git-reference |
| 5025 | (url "https://github.com/mkdocs/get-deps") |
| 5026 | (commit (string-append "v" version)))) |
| 5027 | (file-name (git-file-name name version)) |
| 5028 | (sha256 |
| 5029 | (base32 "0f5ibliw1ccqgydsin27bb7sl7haca09s24xywhmg1cqhm4nda0d")))) |
| 5030 | (build-system pyproject-build-system) |
| 5031 | (native-inputs |
| 5032 | (list python-pytest |
| 5033 | python-hatchling)) |
| 5034 | (propagated-inputs |
| 5035 | (list python-mergedeep |
| 5036 | python-platformdirs |
| 5037 | python-pyyaml)) |
| 5038 | (home-page "https://github.com/mkdocs/get-deps") |
| 5039 | (synopsis "MkDocs extension to list dependencies according to a mkdocs.yml") |
| 5040 | (description |
| 5041 | "This package provides an @code{MkDocs} extension that lists all dependencies |
| 5042 | according to a mkdocs.yml file. This command guesses the Python dependencies |
| 5043 | that a MkDocs site requires in order to build. It simply prints the PyPI |
| 5044 | packages that need to be installed.") |
| 5045 | (license license:expat))) |
| 5046 | |
| 5047 | (define-public python-mkdocs-markdownextradata-plugin |
| 5048 | (package |
| 5049 | (name "python-mkdocs-markdownextradata-plugin") |
| 5050 | (version "0.2.5") |
| 5051 | (source |
| 5052 | (origin |
| 5053 | (method git-fetch) |
| 5054 | (uri (git-reference |
| 5055 | (url "https://github.com/rosscdh/mkdocs-markdownextradata-plugin") |
| 5056 | (commit version))) |
| 5057 | (file-name (git-file-name name version)) |
| 5058 | (sha256 |
| 5059 | (base32 "1a3868s9m7pzyfncpjbjsa9vw5nihssl2v47pxj7h6qa67kvlk3g")))) |
| 5060 | (build-system pyproject-build-system) |
| 5061 | (native-inputs (list python-pytest python-setuptools)) |
| 5062 | (propagated-inputs (list python-mkdocs python-pyyaml)) |
| 5063 | (home-page "https://github.com/rosscdh/mkdocs-markdownextradata-plugin/") |
| 5064 | (synopsis "Inject extra variables into the MkDocs markdown template") |
| 5065 | (description |
| 5066 | "This package provides a MkDocs plugin that injects the mkdocs.yml extra |
| 5067 | variables into the markdown template.") |
| 5068 | (license license:expat))) |
| 5069 | |
| 5070 | (define-public python-docstring-to-markdown |
| 5071 | (package |
| 5072 | (name "python-docstring-to-markdown") |
| 5073 | (version "0.15") |
| 5074 | (source |
| 5075 | (origin |
| 5076 | (method url-fetch) |
| 5077 | (uri (pypi-uri "docstring-to-markdown" version)) |
| 5078 | (sha256 |
| 5079 | (base32 "0gdpabnyl1kyy0cjrnph6xl4fyhgim50a1amsaqq3hahki6i2ip1")))) |
| 5080 | (build-system pyproject-build-system) |
| 5081 | (native-inputs |
| 5082 | (list python-pytest |
| 5083 | python-setuptools)) |
| 5084 | (home-page "https://github.com/python-lsp/docstring-to-markdown") |
| 5085 | (synopsis "On the fly conversion of Python docstrings to markdown") |
| 5086 | (description |
| 5087 | "This module can convert Python docstrings to Markdown. It can recognise |
| 5088 | reStructuredText inside docstrings and convert multiple of its features to |
| 5089 | Markdown. It also includes initial support for Google-formatted docstrings.") |
| 5090 | (license license:lgpl2.1+))) |
| 5091 | |
| 5092 | (define-public python-pdoc |
| 5093 | (package |
| 5094 | (name "python-pdoc") |
| 5095 | (version "13.0.1") |
| 5096 | (source (origin |
| 5097 | (method git-fetch) |
| 5098 | (uri (git-reference |
| 5099 | (url "https://github.com/mitmproxy/pdoc") |
| 5100 | (commit (string-append "v" version)))) |
| 5101 | (file-name (git-file-name name version)) |
| 5102 | (sha256 |
| 5103 | (base32 |
| 5104 | "0gxkw607nrd67ck4w8jri9vfrm5g60qvp8b134m8zkiphbxjnx0l")))) |
| 5105 | (build-system pyproject-build-system) |
| 5106 | (native-inputs (list python-pytest python-jinja2 python-pygments |
| 5107 | python-setuptools python-wheel)) |
| 5108 | (arguments |
| 5109 | (list |
| 5110 | ;; Some tests fail, presumably because of slight version mismatches of |
| 5111 | ;; the dependencies. |
| 5112 | #:test-flags |
| 5113 | '(list "-k" (string-append "not test_var_with_raising_repr and " |
| 5114 | "not test_smoke[mock] and " |
| 5115 | "not test_snapshots[html")))) |
| 5116 | (home-page "https://pdoc.dev/") |
| 5117 | (synopsis "API documentation for Python projects") |
| 5118 | (description "pdoc auto-generates API documentation that follows your |
| 5119 | project's Python module hierarchy. It requires no configuration, has |
| 5120 | first-class support for type annotations, cross-links between identifiers, |
| 5121 | comes with an integrated live-reloading web server, uses customizable HTML |
| 5122 | templates, understands numpydoc and Google-style docstrings.") |
| 5123 | (license license:unlicense))) |
| 5124 | |
| 5125 | (define-public python-py4j |
| 5126 | (package |
| 5127 | (name "python-py4j") |
| 5128 | (version "0.10.9.7") |
| 5129 | (source (origin |
| 5130 | (method url-fetch) |
| 5131 | (uri (pypi-uri "py4j" version)) |
| 5132 | (sha256 |
| 5133 | (base32 |
| 5134 | "1fwdx92cdaiviradksfyygg05g1fpc3x2lf65bv5rnispcam6vhb")))) |
| 5135 | (build-system pyproject-build-system) |
| 5136 | (arguments (list #:tests? #f)) ; Requires a running JVM? |
| 5137 | (native-inputs (list python-setuptools)) |
| 5138 | (home-page "https://www.py4j.org/") |
| 5139 | (synopsis "Dynamically access arbitrary Java objects from Python") |
| 5140 | (description |
| 5141 | "This package enables Python programs to dynamically access arbitrary |
| 5142 | Java objects.") |
| 5143 | (license license:bsd-3))) |
| 5144 | |
| 5145 | (define-public python-pymdown-extensions |
| 5146 | (package |
| 5147 | (name "python-pymdown-extensions") |
| 5148 | (version "10.16.1") |
| 5149 | (source |
| 5150 | (origin |
| 5151 | (method git-fetch) |
| 5152 | (uri (git-reference |
| 5153 | (url "https://github.com/facelessuser/pymdown-extensions") |
| 5154 | (commit version))) |
| 5155 | (file-name (git-file-name name version)) |
| 5156 | (sha256 |
| 5157 | (base32 "0r36nk1ppq1wrgb1lcy9asp9872xr0gbhxrjw7dpa8lp6m7nqb9k")))) |
| 5158 | (build-system pyproject-build-system) |
| 5159 | ;; XXX: A lot of HTML tests fail with negligible discrepancies. |
| 5160 | (arguments |
| 5161 | (list #:tests? #f)) |
| 5162 | (native-inputs (list python-hatchling python-pytest python-pyyaml)) |
| 5163 | (propagated-inputs (list python-markdown)) |
| 5164 | (home-page "https://github.com/facelessuser/pymdown-extensions") |
| 5165 | (synopsis "Extension pack for Python Markdown") |
| 5166 | (description |
| 5167 | "PyMdown Extensions is a collection of extensions for Python Markdown. |
| 5168 | All extensions are found under the module namespace of pymdownx.") |
| 5169 | (license license:expat))) |
| 5170 | |
| 5171 | (define-public python-plotext |
| 5172 | (package |
| 5173 | (name "python-plotext") |
| 5174 | (version "5.2.8") |
| 5175 | (source (origin |
| 5176 | (method url-fetch) |
| 5177 | (uri (pypi-uri "plotext" version)) |
| 5178 | (sha256 |
| 5179 | (base32 |
| 5180 | "1gpy1z2i4vq1mcrhysxahz4339pbl9rzk58rf5m5gf5ym9xji6ii")))) |
| 5181 | (build-system pyproject-build-system) |
| 5182 | (arguments (list #:tests? #false)) ;there are none |
| 5183 | (native-inputs (list python-setuptools python-wheel)) |
| 5184 | (home-page "https://github.com/piccolomo/plotext") |
| 5185 | (synopsis "Plots in the terminal") |
| 5186 | (description "Plotext lets you plot directly to the terminal.") |
| 5187 | (license license:expat))) |
| 5188 | |
| 5189 | (define-public python-plotille |
| 5190 | (package |
| 5191 | (name "python-plotille") |
| 5192 | (version "5.0.0") |
| 5193 | (source |
| 5194 | (origin |
| 5195 | (method git-fetch) |
| 5196 | (uri (git-reference |
| 5197 | (url "https://github.com/tammoippen/plotille") |
| 5198 | (commit (string-append "v" version)))) |
| 5199 | (file-name (git-file-name name version)) |
| 5200 | (sha256 |
| 5201 | (base32 "0ys8ivsbiv58c8rsrk2m2n3sh2rq6qqaa2mhq0hacsgrvmvv0siz")) |
| 5202 | (modules '((guix build utils))) |
| 5203 | (snippet |
| 5204 | #~(begin |
| 5205 | ;; Without deleting ./imgs setuptools complains as follows: error: |
| 5206 | ;; Multiple top-level packages discovered in a flat-layout: |
| 5207 | ;; ['imgs', 'plotille']. |
| 5208 | (delete-file-recursively "./imgs"))))) |
| 5209 | (build-system pyproject-build-system) |
| 5210 | (native-inputs |
| 5211 | (list python-pytest |
| 5212 | python-mock |
| 5213 | python-pendulum |
| 5214 | python-pytest-mock |
| 5215 | python-setuptools |
| 5216 | python-wheel)) |
| 5217 | (home-page "https://github.com/tammoippen/plotille") |
| 5218 | (synopsis "Plot in the terminal using braille dots") |
| 5219 | (description |
| 5220 | "Plotille provides a figure class and graphing functions to create plots, |
| 5221 | scatter plots, histograms and heatmaps in the terminal using braille dots.") |
| 5222 | (license license:expat))) |
| 5223 | |
| 5224 | (define-public python-poetry-dynamic-versioning |
| 5225 | (package |
| 5226 | (name "python-poetry-dynamic-versioning") |
| 5227 | (version "1.9.1") |
| 5228 | (source |
| 5229 | (origin |
| 5230 | (method url-fetch) |
| 5231 | (uri (pypi-uri "poetry_dynamic_versioning" version)) |
| 5232 | (sha256 |
| 5233 | (base32 "0j6sm60x0w31kf5003v4dhp9sdz1i5n5qsfd8r4wm8ksh7gvkryn")))) |
| 5234 | (build-system pyproject-build-system) |
| 5235 | (arguments |
| 5236 | (list |
| 5237 | #:test-flags |
| 5238 | #~(list "--ignore=tests/test_integration.py" |
| 5239 | "-k" (string-join |
| 5240 | ;; Tests searching for VCS back end. |
| 5241 | (list "not test__get_version__defaults" |
| 5242 | "test__enable_in_doc__project_with_dynamic" |
| 5243 | "test__enable_in_doc__project_with_version" |
| 5244 | "test__get_version__format_jinja" |
| 5245 | "test__get_version__format_jinja_imports_with_module_and_item" |
| 5246 | "test__get_version__format_jinja_imports_with_module_only" |
| 5247 | "test__get_version__format_jinja_with_enforced_style") |
| 5248 | " and not ")))) |
| 5249 | (native-inputs |
| 5250 | (list python-poetry-core |
| 5251 | python-pytest)) |
| 5252 | (propagated-inputs |
| 5253 | (list python-dunamai |
| 5254 | python-jinja2 |
| 5255 | python-tomlkit)) |
| 5256 | (home-page "https://github.com/mtkennerly/poetry-dynamic-versioning") |
| 5257 | (synopsis "Poetry plugin enabling VCS tags dynamic versioning") |
| 5258 | (description |
| 5259 | "This package provides a build backend that patches Poetry Core to enable |
| 5260 | the versioning system in PEP 517 build frontends.") |
| 5261 | (license license:expat))) |
| 5262 | |
| 5263 | (define-public python-poetry-plugin-export |
| 5264 | (package |
| 5265 | (name "python-poetry-plugin-export") |
| 5266 | (version "1.10.0") |
| 5267 | (source |
| 5268 | (origin |
| 5269 | (method url-fetch) |
| 5270 | (uri (pypi-uri "poetry_plugin_export" version)) |
| 5271 | (sha256 |
| 5272 | (base32 "1w100731jnrv3nkbnbiginia8sd8ll0vrmljbn14m1yd4kwrvvr6")))) |
| 5273 | (build-system pyproject-build-system) |
| 5274 | (arguments |
| 5275 | (list |
| 5276 | #:tests? #f)) ;tests cycle with poetry |
| 5277 | (native-inputs |
| 5278 | (list python-poetry-core)) |
| 5279 | (propagated-inputs |
| 5280 | (list python-cachy |
| 5281 | python-pendulum |
| 5282 | python-poetry-core |
| 5283 | python-tomlkit)) |
| 5284 | (home-page "https://python-poetry.org/") |
| 5285 | (synopsis "Poetry plugin to export the dependencies to various formats") |
| 5286 | (description |
| 5287 | "Poetry plugin to export the dependencies to various formats.") |
| 5288 | (license license:expat))) |
| 5289 | |
| 5290 | (define-public python-portpicker |
| 5291 | (package |
| 5292 | (name "python-portpicker") |
| 5293 | (version "1.6.0") |
| 5294 | (source |
| 5295 | (origin |
| 5296 | (method url-fetch) |
| 5297 | (uri (pypi-uri "portpicker" version)) |
| 5298 | (sha256 |
| 5299 | (base32 "1yiisk4h8qliwf99khz3lszrpjf6km76fbhzg01fwrbgz7b7yl5x")))) |
| 5300 | (build-system pyproject-build-system) |
| 5301 | (arguments |
| 5302 | (list |
| 5303 | #:test-flags |
| 5304 | ;; This fails because portserver ends up in bin, not site-packages |
| 5305 | '(list "--ignore=src/tests/portserver_test.py"))) |
| 5306 | (propagated-inputs (list python-psutil)) |
| 5307 | (native-inputs (list python-pytest python-setuptools python-wheel |
| 5308 | net-tools)) |
| 5309 | (home-page "https://github.com/google/python_portpicker") |
| 5310 | (synopsis "Choose unique available network ports") |
| 5311 | (description |
| 5312 | "This package provides a library to choose unique available network |
| 5313 | ports.") |
| 5314 | (license license:asl2.0))) |
| 5315 | |
| 5316 | (define-public python-md-ulb-pwrap |
| 5317 | (package |
| 5318 | (name "python-md-ulb-pwrap") |
| 5319 | (version "0.1.3") |
| 5320 | (source |
| 5321 | (origin |
| 5322 | (method git-fetch) |
| 5323 | (uri (git-reference |
| 5324 | (url "https://github.com/mondeja/md-ulb-pwrap") |
| 5325 | (commit (string-append "v" version)))) |
| 5326 | (file-name (git-file-name name version)) |
| 5327 | (sha256 |
| 5328 | (base32 "08zqms8mz3m4kfsnjqapc8sjyjcaz82pq45lix6rjag67s0dhcn6")))) |
| 5329 | (build-system pyproject-build-system) |
| 5330 | (arguments |
| 5331 | (list |
| 5332 | #:imported-modules `(,@%cargo-build-system-modules |
| 5333 | ,@%pyproject-build-system-modules) |
| 5334 | #:modules '(((guix build cargo-build-system) #:prefix cargo:) |
| 5335 | (guix build pyproject-build-system) |
| 5336 | (guix build utils)) |
| 5337 | #:test-backend #~'custom |
| 5338 | #:test-flags #~(list "test.py") |
| 5339 | #:phases |
| 5340 | #~(modify-phases %standard-phases |
| 5341 | (add-after 'unpack 'prepare-cargo-build-system |
| 5342 | (lambda args |
| 5343 | (for-each |
| 5344 | (lambda (phase) |
| 5345 | (format #t "Running cargo phase: ~a~%" phase) |
| 5346 | (apply (assoc-ref cargo:%standard-phases phase) |
| 5347 | #:cargo-target #$(cargo-triplet) |
| 5348 | args)) |
| 5349 | '(unpack-rust-crates |
| 5350 | configure |
| 5351 | check-for-pregenerated-files |
| 5352 | patch-cargo-checksums)))) |
| 5353 | (add-after 'prepare-cargo-build-system 'chdir |
| 5354 | (lambda _ |
| 5355 | (chdir "python")))))) |
| 5356 | (native-inputs |
| 5357 | (append |
| 5358 | (list maturin |
| 5359 | python-pytest |
| 5360 | python-unicode-linebreak |
| 5361 | rust |
| 5362 | `(,rust "cargo")) |
| 5363 | (or (and=> (%current-target-system) |
| 5364 | (compose list make-rust-sysroot)) |
| 5365 | '()))) |
| 5366 | (inputs (cargo-inputs 'md_ulb_pwrap)) |
| 5367 | (home-page "https://github.com/mondeja/md-ulb-pwrap") |
| 5368 | (synopsis "Markdown paragraph wrapper") |
| 5369 | (description |
| 5370 | "This package provides a Markdown paragraph wrapper using Unicode Line |
| 5371 | Breaking Algorithm written in Rust with Python bindings.") |
| 5372 | (license license:expat))) |
| 5373 | |
| 5374 | (define-public python-mdx-gh-links |
| 5375 | (package |
| 5376 | (name "python-mdx-gh-links") |
| 5377 | (version "0.4") |
| 5378 | (source |
| 5379 | (origin |
| 5380 | (method url-fetch) |
| 5381 | (uri (pypi-uri "mdx_gh_links" version)) |
| 5382 | (sha256 |
| 5383 | (base32 "11inr9azx6c174yfikysbw0mx7mpjm03qdqr1am2a510mg1amma1")))) |
| 5384 | (build-system pyproject-build-system) |
| 5385 | (arguments (list #:tests? #f)) ;tests connect github |
| 5386 | (native-inputs (list python-setuptools)) |
| 5387 | (propagated-inputs (list python-markdown)) |
| 5388 | (home-page "https://github.com/Python-Markdown/github-links/") |
| 5389 | (synopsis "Python-Markdown extension adding support for shorthand links") |
| 5390 | (description "This package is an extension to Python-Markdown which adds |
| 5391 | support for shorthand links to GitHub users, repositories, issues and |
| 5392 | commits.") |
| 5393 | (license license:bsd-3))) |
| 5394 | |
| 5395 | (define-public python-mkdocs-material |
| 5396 | (package |
| 5397 | (name "python-mkdocs-material") |
| 5398 | (version "7.3.6") |
| 5399 | (source |
| 5400 | (origin |
| 5401 | (method git-fetch) |
| 5402 | (uri (git-reference |
| 5403 | (url "https://github.com/squidfunk/mkdocs-material") |
| 5404 | (commit version))) |
| 5405 | (file-name (git-file-name name version)) |
| 5406 | (sha256 |
| 5407 | (base32 "06ghwidcdqimx6jc6yz1zdbyc8rqklkwj5h5cxsihazh0f52fivk")) |
| 5408 | (modules '((guix build utils))) |
| 5409 | (snippet |
| 5410 | ;; TODO There are still bundled assets and minified JS. |
| 5411 | #~(delete-file-recursively "material/assets/javascripts/lunr/min")))) |
| 5412 | (build-system pyproject-build-system) |
| 5413 | (arguments |
| 5414 | (list |
| 5415 | #:tests? #f ; No tests. |
| 5416 | #:phases |
| 5417 | #~(let ((symlink-js |
| 5418 | (lambda (inputs) |
| 5419 | (for-each |
| 5420 | (lambda (lang) |
| 5421 | (let* ((filename (string-append "lunr." lang ".min.js")) |
| 5422 | (file (string-append "share/javascript/" filename))) |
| 5423 | (symlink (search-input-file inputs file) filename))) |
| 5424 | (list "ar" "da" "de" "es" "fi" "fr" "hu" "it" "ja" "multi" |
| 5425 | "nl" "no" "pt" "ro" "ru" "stemmer.support" "sv" "tr" |
| 5426 | "vi"))))) |
| 5427 | (modify-phases %standard-phases |
| 5428 | ;; Requirement mkdocs-material-extensions |
| 5429 | ;; in-turn requires mkdocs-material. This causes |
| 5430 | ;; circular dependency, so we remove this requirement. |
| 5431 | (add-after 'unpack 'patch-requirements |
| 5432 | (lambda _ |
| 5433 | (substitute* "requirements.txt" |
| 5434 | (("mkdocs-material-extensions.*$") |
| 5435 | "")))) |
| 5436 | (add-after 'ensure-no-mtimes-pre-1980 'inject-javascript-assets |
| 5437 | (lambda* (#:key inputs #:allow-other-keys) |
| 5438 | (mkdir-p "material/assets/javascripts/lunr/min") |
| 5439 | (with-directory-excursion "material/assets/javascripts/lunr/min" |
| 5440 | (symlink-js inputs)))) |
| 5441 | (add-after 'wrap 'replace-javascript-assets |
| 5442 | (lambda* (#:key inputs outputs #:allow-other-keys) |
| 5443 | (let* ((site (site-packages inputs outputs)) |
| 5444 | (js-assets (string-append site "/material/" |
| 5445 | "assets/javascripts"))) |
| 5446 | (with-directory-excursion js-assets |
| 5447 | (delete-file-recursively "lunr/min") |
| 5448 | (mkdir-p "lunr/min") |
| 5449 | (with-directory-excursion "lunr/min" |
| 5450 | (symlink-js inputs)))))))))) |
| 5451 | (native-inputs (list python-setuptools)) |
| 5452 | (inputs (list js-lunr-ar |
| 5453 | js-lunr-da |
| 5454 | js-lunr-de |
| 5455 | js-lunr-es |
| 5456 | js-lunr-fi |
| 5457 | js-lunr-fr |
| 5458 | js-lunr-hu |
| 5459 | js-lunr-it |
| 5460 | js-lunr-ja |
| 5461 | js-lunr-nl |
| 5462 | js-lunr-no |
| 5463 | js-lunr-pt |
| 5464 | js-lunr-ro |
| 5465 | js-lunr-ru |
| 5466 | js-lunr-sv |
| 5467 | js-lunr-tr |
| 5468 | js-lunr-vi |
| 5469 | js-lunr-multi |
| 5470 | js-lunr-stemmer-support)) |
| 5471 | (propagated-inputs |
| 5472 | (list python-markdown python-mkdocs python-pygments |
| 5473 | python-pymdown-extensions)) |
| 5474 | (home-page "https://squidfunk.github.io/mkdocs-material/") |
| 5475 | (synopsis "Material Design theme for MkDocs") |
| 5476 | (description "This package provides a theme plugin for the static site |
| 5477 | generator MkDocs.") |
| 5478 | (license license:expat))) |
| 5479 | |
| 5480 | (define-public python-nanobind |
| 5481 | (package |
| 5482 | (name "python-nanobind") |
| 5483 | (version "2.10.2") |
| 5484 | (source |
| 5485 | (origin |
| 5486 | (method url-fetch) |
| 5487 | (uri (pypi-uri "nanobind" version)) |
| 5488 | (sha256 |
| 5489 | (base32 "0sscrair34s1nj7vvybakirpgjsg9l6qic4wsvpas7vdrq89jl08")))) |
| 5490 | (build-system pyproject-build-system) |
| 5491 | (arguments |
| 5492 | (list |
| 5493 | ;; tests: 466 passed, 27 skipped |
| 5494 | #:phases |
| 5495 | #~(modify-phases %standard-phases |
| 5496 | (add-before 'build 'configure-cmake |
| 5497 | (lambda _ |
| 5498 | (invoke "cmake" "-S" "." "-B" "build" "-DNB_TEST_STABLE_ABI=ON"))) |
| 5499 | (add-after 'configure-cmake 'build-c++ |
| 5500 | (lambda _ |
| 5501 | (invoke "cmake" "--build" "build" "-j" "2"))) |
| 5502 | (add-before 'check 'pre-check |
| 5503 | (lambda _ (chdir "build")))))) |
| 5504 | (native-inputs |
| 5505 | (list cmake-minimal |
| 5506 | python-numpy |
| 5507 | python-pathspec |
| 5508 | python-pytest |
| 5509 | python-scikit-build-core |
| 5510 | python-scipy)) |
| 5511 | (inputs |
| 5512 | (list eigen)) |
| 5513 | (home-page "https://github.com/wjakob/nanobind/") |
| 5514 | (synopsis "Tiny and efficient C++/Python bindings") |
| 5515 | (description "Nanobind is a small binding library that exposes C++ types |
| 5516 | in Python and vice versa. It is reminiscent of @code{Boost.Python} and |
| 5517 | @code{pybind11} and uses near-identical syntax. In contrast to these existing |
| 5518 | tools, @code{nanobind} is more efficient: bindings compile in a shorter amount |
| 5519 | of time, produce smaller binaries, and have better runtime performance.") |
| 5520 | (license license:bsd-3))) |
| 5521 | |
| 5522 | (define-public python-nr-date |
| 5523 | (package |
| 5524 | (name "python-nr-date") |
| 5525 | (version "2.1.0") |
| 5526 | (source |
| 5527 | (origin |
| 5528 | (method url-fetch) |
| 5529 | (uri (pypi-uri "nr_date" version)) |
| 5530 | (sha256 |
| 5531 | (base32 "1rnjyykjp41mqz6h1vx18jblq97gi5m5x7dgasyaihnd7fhswhq6")))) |
| 5532 | (build-system pyproject-build-system) |
| 5533 | (arguments (list #:tests? #false)) ;there are none |
| 5534 | (native-inputs (list python-poetry-core)) |
| 5535 | (home-page "https://github.com/NiklasRosenstein/python-nr.date") |
| 5536 | (synopsis "Fast, regex-based date parsing library in plain Python") |
| 5537 | (description "This package provides a fast, regex-based date parsing |
| 5538 | library in pure Python.") |
| 5539 | (license license:expat))) |
| 5540 | |
| 5541 | (define-public python-nr-stream |
| 5542 | (package |
| 5543 | (name "python-nr-stream") |
| 5544 | (version "1.1.5") |
| 5545 | (source |
| 5546 | (origin |
| 5547 | (method url-fetch) |
| 5548 | (uri (pypi-uri "nr_stream" version)) |
| 5549 | (sha256 |
| 5550 | (base32 "0rag4vbjnalkyfcarx6yipn11ih2hmc3pfldava4c6n6pz31c0pb")))) |
| 5551 | (build-system pyproject-build-system) |
| 5552 | (arguments (list #:tests? #false)) ;there are none |
| 5553 | (native-inputs (list python-poetry-core)) |
| 5554 | (home-page "https://github.com/NiklasRosenstein/python-nr.stream") |
| 5555 | (synopsis "Stream and Optional classes for Python") |
| 5556 | (description "This package provides a @code{Stream} and @code{Optional} |
| 5557 | class.") |
| 5558 | (license license:expat))) |
| 5559 | |
| 5560 | (define-public python-nr-util |
| 5561 | (package |
| 5562 | (name "python-nr-util") |
| 5563 | (version "0.8.12") |
| 5564 | (source |
| 5565 | (origin |
| 5566 | (method url-fetch) |
| 5567 | (uri (pypi-uri "nr.util" version)) |
| 5568 | (sha256 |
| 5569 | (base32 "1x0l4811dskwrk83l2xzdcldx2iazlrx5wxkg41jz7fr6ch9qm54")))) |
| 5570 | (build-system pyproject-build-system) |
| 5571 | (arguments |
| 5572 | (list |
| 5573 | #:tests? #false ;there are none |
| 5574 | #:phases |
| 5575 | #~(modify-phases %standard-phases |
| 5576 | (add-after 'unpack 'patch-build-system |
| 5577 | (lambda _ |
| 5578 | (substitute* "pyproject.toml" |
| 5579 | (("^config =.*") "config = []\n")))) |
| 5580 | (add-after 'install 'fix-name |
| 5581 | (lambda* (#:key inputs outputs #:allow-other-keys) |
| 5582 | (let* ((sitedir (site-packages inputs outputs)) |
| 5583 | (dist-info |
| 5584 | (string-append sitedir "/nr_util-" #$version ".dist-info"))) |
| 5585 | (substitute* (string-append dist-info "/METADATA") |
| 5586 | (("Name: nr-util") |
| 5587 | "Name: nr.util")) |
| 5588 | (substitute* (string-append dist-info "/RECORD") |
| 5589 | (("nr_util") "nr.util")) |
| 5590 | (rename-file dist-info |
| 5591 | (string-append sitedir |
| 5592 | "/nr.util-" |
| 5593 | #$version ".dist-info")))))))) |
| 5594 | (propagated-inputs (list python-deprecated python-typing-extensions)) |
| 5595 | (native-inputs (list python-poetry-core)) |
| 5596 | (home-page "https://github.com/NiklasRosenstein/python-nr.util") |
| 5597 | (synopsis "General purpose Python utility library") |
| 5598 | (description "This package provides a general purpose Python utility |
| 5599 | library.") |
| 5600 | (license license:expat))) |
| 5601 | |
| 5602 | (define-public python-slicerator |
| 5603 | (package |
| 5604 | (name "python-slicerator") |
| 5605 | (version "1.1.0") |
| 5606 | (source |
| 5607 | (origin |
| 5608 | (method url-fetch) |
| 5609 | (uri (pypi-uri "slicerator" version)) |
| 5610 | (sha256 |
| 5611 | (base32 "0ik0bmh18zgffd9kx53254jp3yyih6zcmd8kfb080xnqbizhl0a4")))) |
| 5612 | (build-system pyproject-build-system) |
| 5613 | (native-inputs |
| 5614 | (list python-numpy |
| 5615 | python-pytest |
| 5616 | python-setuptools)) |
| 5617 | (home-page "https://github.com/soft-matter/slicerator") |
| 5618 | (synopsis "Lazy-loading, fancy-sliceable iterable") |
| 5619 | (description |
| 5620 | "This package provides a lazy-loading, fancy-sliceable iterable. Think |
| 5621 | of it like a generator that is \"reusable\" and has a length.") |
| 5622 | (license license:bsd-3))) |
| 5623 | |
| 5624 | (define-public python-pytelegrambotapi |
| 5625 | (package |
| 5626 | (name "python-pytelegrambotapi") |
| 5627 | (version "4.22.0") |
| 5628 | (source |
| 5629 | (origin |
| 5630 | (method git-fetch) |
| 5631 | (uri (git-reference |
| 5632 | (url "https://github.com/eternnoir/pyTelegramBotAPI") |
| 5633 | (commit version))) |
| 5634 | (file-name (git-file-name name version)) |
| 5635 | (sha256 |
| 5636 | (base32 "0mic9wk6xg7p2ca7b03fc19l86yc9bkciq7kp8l9xvzzzmg4rzw4")))) |
| 5637 | (build-system pyproject-build-system) |
| 5638 | (arguments |
| 5639 | (list |
| 5640 | #:phases |
| 5641 | #~(modify-phases %standard-phases |
| 5642 | (replace 'check |
| 5643 | (lambda* (#:key tests? #:allow-other-keys) |
| 5644 | (when tests? |
| 5645 | (with-directory-excursion "tests" |
| 5646 | (invoke "py.test")))))))) |
| 5647 | (propagated-inputs |
| 5648 | (list python-requests)) |
| 5649 | (native-inputs |
| 5650 | (list python-hatchling python-pytest)) |
| 5651 | (home-page "https://github.com/eternnoir/pyTelegramBotAPI") |
| 5652 | (synopsis "Python Telegram bot api") |
| 5653 | (description "This package provides a simple, but extensible Python |
| 5654 | implementation for the Telegram Bot API.") |
| 5655 | (license license:gpl2))) |
| 5656 | |
| 5657 | (define-public python-pytoolconfig |
| 5658 | (package |
| 5659 | (name "python-pytoolconfig") |
| 5660 | (version "1.3.1") |
| 5661 | (source |
| 5662 | (origin |
| 5663 | (method url-fetch) |
| 5664 | (uri (pypi-uri "pytoolconfig" version)) |
| 5665 | (sha256 |
| 5666 | (base32 "1bnvg9yiwp2fn0lvzhp1dd2mvrymxvjnasmbdap3i0hhdwdbvrji")))) |
| 5667 | (build-system pyproject-build-system) |
| 5668 | (arguments |
| 5669 | (list |
| 5670 | #:test-flags |
| 5671 | ;; Requires Sphinx. |
| 5672 | #~(list "--ignore=tests/test_documentation.py"))) |
| 5673 | (native-inputs |
| 5674 | (list python-pdm-backend |
| 5675 | python-pytest)) |
| 5676 | (propagated-inputs |
| 5677 | (list python-tomli |
| 5678 | python-packaging |
| 5679 | python-platformdirs)) |
| 5680 | (home-page "https://pypi.org/project/pytoolconfig/") |
| 5681 | (synopsis "Python tool configuration") |
| 5682 | (description "The goal of this project is to manage configuration for |
| 5683 | Python tools, such as rope and add support for a @file{pyproject.toml} |
| 5684 | configuration file.") |
| 5685 | (license license:lgpl3+))) |
| 5686 | |
| 5687 | (define-public python-pytooling |
| 5688 | (package |
| 5689 | (name "python-pytooling") |
| 5690 | (version "9.0.0") |
| 5691 | (source |
| 5692 | (origin |
| 5693 | (method git-fetch) |
| 5694 | (uri (git-reference |
| 5695 | (url "https://github.com/pyTooling/pyTooling/") |
| 5696 | (commit (string-append "v" version)))) |
| 5697 | (file-name (git-file-name name version)) |
| 5698 | (sha256 |
| 5699 | (base32 "19zbpy35bfcq3m49xd80qsy7f4b4r98dhv4vx76199a425n61932")))) |
| 5700 | (build-system pyproject-build-system) |
| 5701 | (arguments |
| 5702 | (list |
| 5703 | ;; Tests do not support linux-i686 system: Exception: Unknown |
| 5704 | ;; architecture 'linux-i686' for a native Linux. |
| 5705 | #:tests? (not (or (%current-target-system) |
| 5706 | (target-x86-32?))) |
| 5707 | #:test-flags |
| 5708 | #~(list |
| 5709 | "tests/unit" |
| 5710 | ;; These tests try to access the network. |
| 5711 | "--deselect=tests/unit/Dependency/Python.py::PyPI::test_SphinxReports" |
| 5712 | "--deselect=tests/unit/Dependency/Python.py::PyPI::test_pyTooling" |
| 5713 | "--deselect=tests/unit/Dependency/Python.py::PyPI::test_pyVersioning") |
| 5714 | #:phases |
| 5715 | #~(modify-phases %standard-phases |
| 5716 | (add-after 'unpack 'patch-git-bin-for-tests |
| 5717 | (lambda* (#:key inputs #:allow-other-keys) |
| 5718 | (substitute* (list "tests/unit/CLIAbstraction/Executable.py" |
| 5719 | "tests/unit/CLIAbstraction/Program.py") |
| 5720 | (("/usr/bin") |
| 5721 | (dirname (search-input-file inputs "/bin/git"))))))))) |
| 5722 | (native-inputs |
| 5723 | (list git-minimal/pinned |
| 5724 | python-aiohttp |
| 5725 | python-colorama |
| 5726 | python-pytest |
| 5727 | python-requests |
| 5728 | python-ruamel.yaml |
| 5729 | python-setuptools)) |
| 5730 | (home-page "https://pytooling.github.io/pyTooling/") |
| 5731 | (synopsis "Miscellaneous Python tools") |
| 5732 | (description |
| 5733 | "pyTooling is a collection of (abstract) data models, lacking classes, |
| 5734 | decorators, a new performance boosting meta-class, and enhanced exceptions. |
| 5735 | It also provides lots of helper functions---e.g., to ease the handling of |
| 5736 | package descriptions or to unify multiple existing APIs into a single API.") |
| 5737 | (license license:asl2.0))) |
| 5738 | |
| 5739 | (define-public python-colorlog |
| 5740 | (package |
| 5741 | (name "python-colorlog") |
| 5742 | (version "6.9.0") |
| 5743 | (source |
| 5744 | (origin |
| 5745 | (method url-fetch) |
| 5746 | (uri (pypi-uri "colorlog" version)) |
| 5747 | (sha256 |
| 5748 | (base32 "1hka1kf6p53hppv05xsa5byr4gasfaaq7r2g3x7gb51vp6hm9fmz")))) |
| 5749 | (build-system pyproject-build-system) |
| 5750 | (native-inputs |
| 5751 | (list python-pytest |
| 5752 | python-setuptools)) |
| 5753 | (home-page "https://github.com/borntyping/python-colorlog") |
| 5754 | (synopsis "Log formatting with colors for python") |
| 5755 | (description "The @code{colorlog.ColoredFormatter} is a formatter for use |
| 5756 | with Python's logging module that outputs records using terminal colors.") |
| 5757 | (license license:expat))) |
| 5758 | |
| 5759 | (define-public python-pyprind |
| 5760 | (package |
| 5761 | (name "python-pyprind") |
| 5762 | (version "2.11.3") |
| 5763 | (source |
| 5764 | (origin |
| 5765 | (method url-fetch) |
| 5766 | (uri (pypi-uri "PyPrind" version)) |
| 5767 | (sha256 |
| 5768 | (base32 "1gscnlvj37m421ch3akm3kddxqkrgbg5zrpwy2ky1j59w6vclzg3")))) |
| 5769 | (build-system pyproject-build-system) |
| 5770 | (native-inputs (list python-pytest python-setuptools)) |
| 5771 | (propagated-inputs (list python-psutil)) |
| 5772 | (home-page "https://github.com/rasbt/pyprind") |
| 5773 | (synopsis "Python Progress Bar and Percent Indicator Utility") |
| 5774 | (description |
| 5775 | "The PyPrind (Python Progress Indicator) module provides a progress bar |
| 5776 | and a percentage indicator object that let you track the progress of a loop |
| 5777 | structure or other iterative computation.") |
| 5778 | (license license:bsd-3))) |
| 5779 | |
| 5780 | (define-public python-gh-md-to-html |
| 5781 | (package |
| 5782 | (name "python-gh-md-to-html") |
| 5783 | (version "1.21.2") |
| 5784 | (source |
| 5785 | (origin |
| 5786 | (method url-fetch) |
| 5787 | (uri (pypi-uri "gh_md_to_html" version)) |
| 5788 | (sha256 |
| 5789 | (base32 "1cnaqnckpcrpc4b8ba18s5ds05w1yfiszcp7ql7pmx0jnrj25qax")))) |
| 5790 | (build-system pyproject-build-system) |
| 5791 | (arguments |
| 5792 | (list |
| 5793 | #:tests? #false ;there are none |
| 5794 | #:phases |
| 5795 | #~(modify-phases %standard-phases |
| 5796 | (add-after 'unpack 'relax-shellescape-requirement |
| 5797 | (lambda _ |
| 5798 | (substitute* "src/__init__.py" |
| 5799 | (("import shellescape") |
| 5800 | "import shlex") |
| 5801 | (("shellescape\\.quote") |
| 5802 | "shlex.quote")) |
| 5803 | (substitute* "setup.py" |
| 5804 | (("\"shellescape\",") |
| 5805 | ""))))))) |
| 5806 | (propagated-inputs |
| 5807 | (list python-beautifulsoup4 |
| 5808 | python-emoji-for-gh-md-to-html |
| 5809 | python-pillow |
| 5810 | python-requests |
| 5811 | python-webcolors)) |
| 5812 | (native-inputs (list python-setuptools)) |
| 5813 | (home-page "https://github.com/phseiff/github-flavored-markdown-to-html/") |
| 5814 | (synopsis "Github-flavored Markdown") |
| 5815 | (description |
| 5816 | "This package provides a feature-rich Github-flavored Markdown to HTML |
| 5817 | Python library and command line interface.") |
| 5818 | (license license:expat))) |
| 5819 | |
| 5820 | (define-public python-gfloat |
| 5821 | (package |
| 5822 | (name "python-gfloat") |
| 5823 | (version "0.5.2") |
| 5824 | (source |
| 5825 | (origin |
| 5826 | (method url-fetch) |
| 5827 | (uri (pypi-uri "gfloat" version)) |
| 5828 | (sha256 |
| 5829 | (base32 "143424fqap9bxxybj8l48a00kqqh7vih67ycy7cmkd38kb31zcai")))) |
| 5830 | (build-system pyproject-build-system) |
| 5831 | (arguments |
| 5832 | (list |
| 5833 | #:test-flags |
| 5834 | #~(list |
| 5835 | "--ignore=test/test_array_api.py" ;requires array_api_strict |
| 5836 | "--ignore=test/test_jax.py" ;requires python-jax |
| 5837 | "--ignore=test/test_microxcaling.py" ;requires torchao |
| 5838 | ;; Jupyter. |
| 5839 | "--ignore-glob=docs/source/*.ipynb"))) |
| 5840 | (propagated-inputs |
| 5841 | (list python-array-api-compat python-more-itertools python-numpy)) |
| 5842 | (native-inputs (list python-nbval |
| 5843 | python-ml-dtypes |
| 5844 | python-pytest |
| 5845 | python-pytorch |
| 5846 | python-setuptools |
| 5847 | openssl)) |
| 5848 | (home-page "https://github.com/graphcore-research/gfloat") |
| 5849 | (synopsis "Generic floating point handling in Python") |
| 5850 | (description |
| 5851 | "This package provides an implementation of generic floating point encode |
| 5852 | and decode logic in Python. It handles various current and proposed floating |
| 5853 | point types: |
| 5854 | |
| 5855 | @itemize |
| 5856 | @item IEEE 754: Binary16, Binary32 |
| 5857 | @item OCP Float8: E5M2, E4M3 |
| 5858 | @item IEEE WG P3109 |
| 5859 | @item OCP MX Formats: E2M1, M2M3, E3M2, E8M0, INT8, and the MX block formats. |
| 5860 | @end itemize") |
| 5861 | (license license:expat))) |
| 5862 | |
| 5863 | (define-public python-glymur |
| 5864 | (package |
| 5865 | (name "python-glymur") |
| 5866 | (version "0.14.8") |
| 5867 | (source |
| 5868 | (origin |
| 5869 | (method git-fetch) |
| 5870 | (uri (git-reference |
| 5871 | (url "https://github.com/quintusdias/glymur") |
| 5872 | (commit (string-append "v" version)))) |
| 5873 | (file-name (git-file-name name version)) |
| 5874 | (sha256 |
| 5875 | (base32 "0jhnr5p8lrycf9bn9p429rkc82aayc0bjf0pivk870a954br268h")))) |
| 5876 | (build-system pyproject-build-system) |
| 5877 | (arguments |
| 5878 | (list |
| 5879 | #:test-flags |
| 5880 | #~(list "--numprocesses" (number->string (parallel-job-count)) |
| 5881 | ;; Failing test due to inability of ctypes.util.find_library() |
| 5882 | ;; to determine library path, which is patched above. |
| 5883 | "--ignore=tests/test_config.py") |
| 5884 | #:phases |
| 5885 | #~(modify-phases %standard-phases |
| 5886 | (add-after 'unpack 'patch-library-locations |
| 5887 | (lambda* (#:key inputs #:allow-other-keys) |
| 5888 | ;; XXX: It's a workaround for Python inability to find the |
| 5889 | ;; .so libraries with ctypes.util.find_library() |
| 5890 | (substitute* '("glymur/config.py") |
| 5891 | (("path = find_library\\(libname\\)") |
| 5892 | (string-append |
| 5893 | "if libname == \"openjp2\":\n" |
| 5894 | " path = \"" |
| 5895 | (search-input-file inputs "/lib/libopenjp2.so") "\"\n" |
| 5896 | " elif libname == \"tiff\":\n" |
| 5897 | " path = \"" |
| 5898 | (search-input-file inputs "/lib/libtiff.so") "\"\n" |
| 5899 | " elif libname == \"c\":\n" |
| 5900 | " path = \"" |
| 5901 | (search-input-file inputs "/lib/libc.so.6") "\"\n")))))))) |
| 5902 | (native-inputs |
| 5903 | (list python-pytest |
| 5904 | python-pytest-xdist |
| 5905 | python-scikit-image |
| 5906 | python-setuptools)) |
| 5907 | (inputs |
| 5908 | (list openjpeg ; glymur/lib/openjp2.py |
| 5909 | libtiff)) ; glymur/lib/tiff.py |
| 5910 | (propagated-inputs |
| 5911 | (list python-lxml |
| 5912 | python-numpy |
| 5913 | python-pillow )) |
| 5914 | (home-page "https://github.com/quintusdias/glymur") |
| 5915 | (synopsis "Python interface to OpenJPEG and LibTIFF") |
| 5916 | (description |
| 5917 | "This package provides Python interface to the OpenJPEG library which |
| 5918 | allows one to read and write JPEG 2000 files") |
| 5919 | (license license:expat))) |
| 5920 | |
| 5921 | (define-public python-gphoto2 |
| 5922 | (package |
| 5923 | (name "python-gphoto2") |
| 5924 | (version "2.6.1") |
| 5925 | (source |
| 5926 | (origin |
| 5927 | (method git-fetch) ; no tests in PyPI |
| 5928 | (uri (git-reference |
| 5929 | (url "https://github.com/jim-easterbrook/python-gphoto2") |
| 5930 | (commit (string-append "v" version)))) |
| 5931 | (file-name (git-file-name name version)) |
| 5932 | (sha256 |
| 5933 | (base32 "08zwznl3f8j329db747jl2zrpqj58ml39in5gl2gqghw82ssi3gk")))) |
| 5934 | (build-system pyproject-build-system) |
| 5935 | (native-inputs |
| 5936 | (list pkg-config python-pytest python-setuptools python-wheel)) |
| 5937 | (inputs |
| 5938 | (list libgphoto2)) |
| 5939 | (home-page "https://github.com/jim-easterbrook/python-gphoto2") |
| 5940 | (synopsis "Python interface to libgphoto2") |
| 5941 | (description "@code{python-gphoto2} is a comprehensive Python interface |
| 5942 | (or binding) to @code{libgphoto2}. It is built using @code{SWIG} to |
| 5943 | automatically generate the interface code.") |
| 5944 | (license license:lgpl3+))) |
| 5945 | |
| 5946 | (define-public python-colour |
| 5947 | (package |
| 5948 | (name "python-colour") |
| 5949 | (version "0.1.5") |
| 5950 | (source |
| 5951 | (origin |
| 5952 | (method git-fetch) |
| 5953 | (uri (git-reference |
| 5954 | (url "https://github.com/vaab/colour") |
| 5955 | (commit version))) |
| 5956 | (file-name (git-file-name name version)) |
| 5957 | (sha256 |
| 5958 | (base32 "01k2n3zp6j0bws78vdy7i9d6m4lz3bm8z7d7lv1czks1d4aamnr2")) |
| 5959 | (patches (search-patches "python-colour-remove-d2to1.patch")))) |
| 5960 | (build-system pyproject-build-system) |
| 5961 | (arguments |
| 5962 | (list |
| 5963 | #:tests? #f ; No tests. |
| 5964 | #:phases |
| 5965 | #~(modify-phases %standard-phases |
| 5966 | (add-after 'unpack 'set-version |
| 5967 | (lambda _ |
| 5968 | (substitute* "autogen.sh" |
| 5969 | (("if ! \"\\$git\".*") |
| 5970 | "if false ; then\n") |
| 5971 | (("depends git grep") |
| 5972 | "depends grep") |
| 5973 | (("version=\\$\\(\"\\$git\" describe --tags\\)") |
| 5974 | (format #f "version=~s" #$version)))))))) |
| 5975 | (native-inputs (list python-setuptools)) |
| 5976 | (home-page "https://github.com/vaab/colour") |
| 5977 | (synopsis "Convert and manipulate various color representations") |
| 5978 | (description |
| 5979 | "This package provides a pythonic way to manipulate color representations |
| 5980 | (HSL, RVB,web, X11, ...).") |
| 5981 | (license license:expat))) |
| 5982 | |
| 5983 | (define-public python-rapidfuzz |
| 5984 | (package |
| 5985 | (name "python-rapidfuzz") |
| 5986 | (version "3.14.5") |
| 5987 | (source |
| 5988 | (origin |
| 5989 | (method git-fetch) |
| 5990 | (uri (git-reference |
| 5991 | (url "https://github.com/rapidfuzz/RapidFuzz") |
| 5992 | (commit (string-append "v" version)))) |
| 5993 | (file-name (git-file-name name version)) |
| 5994 | (sha256 |
| 5995 | (base32 "0ic219rfw4nlj9jp3idhxpk8vjlcw3x0xc23s36hf6gs41wxwpn0")))) |
| 5996 | (build-system pyproject-build-system) |
| 5997 | (native-inputs |
| 5998 | (list python-cython |
| 5999 | python-pandas-minimal |
| 6000 | python-pytest |
| 6001 | python-scikit-build-core |
| 6002 | rapidfuzz-cpp |
| 6003 | taskflow)) |
| 6004 | (home-page "https://github.com/rapidfuzz/RapidFuzz") |
| 6005 | (synopsis "Rapid fuzzy string matching") |
| 6006 | (description |
| 6007 | "RapidFuzz is a fast string matching library for Python and |
| 6008 | C++, which is using the string similarity calculations from FuzzyWuzzy.") |
| 6009 | (license license:expat))) |
| 6010 | |
| 6011 | (define-public python-easygui |
| 6012 | (package |
| 6013 | (name "python-easygui") |
| 6014 | (version "0.98.1") |
| 6015 | (source |
| 6016 | (origin |
| 6017 | (method git-fetch) |
| 6018 | (uri (git-reference |
| 6019 | (url "https://github.com/robertlugg/easygui") |
| 6020 | (commit version))) |
| 6021 | (file-name (git-file-name name version)) |
| 6022 | (sha256 |
| 6023 | (base32 "1vwd0dvldl993sp7b24h5yn269vykq7mmp9khdssqryfchfbajx6")))) |
| 6024 | (build-system pyproject-build-system) |
| 6025 | (arguments |
| 6026 | ;; XXX: There seem to be no tests upstream, although the package itself |
| 6027 | ;; seems to provide a lot of demo elements. |
| 6028 | (list #:tests? #f)) |
| 6029 | (native-inputs (list python-pytest python-setuptools)) |
| 6030 | (propagated-inputs (list `(,python "tk"))) |
| 6031 | (home-page "https://github.com/robertlugg/easygui") |
| 6032 | (synopsis "GUI programming module for Python") |
| 6033 | (description |
| 6034 | "EasyGUI is a module for easy GUI programming in Python. EasyGUI is |
| 6035 | different from other GUI generators in that EasyGUI is NOT event-driven. |
| 6036 | Instead, all GUI interactions are invoked by simple function calls.") |
| 6037 | (license license:bsd-3))) |
| 6038 | |
| 6039 | (define-public python-echo |
| 6040 | (package |
| 6041 | (name "python-echo") |
| 6042 | (version "0.12.1") |
| 6043 | (source |
| 6044 | (origin |
| 6045 | (method url-fetch) |
| 6046 | (uri (pypi-uri "echo" version)) |
| 6047 | (sha256 |
| 6048 | (base32 "038jfhgnakccn4gz7w07yf0cspyz0h81nmgp3cmiavlacac1kvqp")))) |
| 6049 | (build-system pyproject-build-system) |
| 6050 | (arguments |
| 6051 | (list |
| 6052 | #:phases |
| 6053 | #~(modify-phases %standard-phases |
| 6054 | (add-before 'check 'start-xorg-server |
| 6055 | (lambda _ |
| 6056 | ;; The test suite requires a running X server. |
| 6057 | (system "Xvfb :99 -screen 0 1024x768x24 &") |
| 6058 | (setenv "DISPLAY" ":99.0")))))) |
| 6059 | (propagated-inputs |
| 6060 | (list python-numpy |
| 6061 | python-qtpy |
| 6062 | python-pyqt-6)) |
| 6063 | (native-inputs |
| 6064 | (list python-pytest |
| 6065 | python-setuptools |
| 6066 | python-setuptools-scm |
| 6067 | xorg-server-for-tests)) |
| 6068 | (home-page "https://github.com/glue-viz/echo") |
| 6069 | (synopsis "Callback Properties in Python") |
| 6070 | (description |
| 6071 | "Echo is a small library for attaching callback functions to property |
| 6072 | state changes.") |
| 6073 | (license license:expat))) |
| 6074 | |
| 6075 | (define-public python-pymd4c |
| 6076 | (package |
| 6077 | (name "python-pymd4c") |
| 6078 | (version "1.3.0") |
| 6079 | (source |
| 6080 | (origin |
| 6081 | (method git-fetch) |
| 6082 | (uri (git-reference |
| 6083 | (url "https://github.com/dominickpastore/pymd4c") |
| 6084 | (commit (string-append "v" version)))) |
| 6085 | (file-name (git-file-name name version)) |
| 6086 | (sha256 |
| 6087 | (base32 "1pv8k2nfxnlwgmx13rl5vq9v64s564skpk0qnw41c2rhn13rxl4f")))) |
| 6088 | (build-system pyproject-build-system) |
| 6089 | (arguments (list #:test-flags #~(list "test"))) |
| 6090 | (inputs (list md4c)) |
| 6091 | (native-inputs |
| 6092 | (list pkg-config python-pkgconfig python-pytest python-setuptools)) |
| 6093 | (home-page "https://github.com/dominickpastore/pymd4c") |
| 6094 | (synopsis "Python bindings for MD4C") |
| 6095 | (description |
| 6096 | "PyMD4C provides Python bindings for MD4c, a C Markdown parser, compliant |
| 6097 | to CommonMark.") |
| 6098 | (license license:expat))) |
| 6099 | |
| 6100 | (define-public python-pymediainfo |
| 6101 | (package |
| 6102 | (name "python-pymediainfo") |
| 6103 | (version "4.1") |
| 6104 | (source |
| 6105 | (origin |
| 6106 | (method url-fetch) |
| 6107 | (uri (pypi-uri "pymediainfo" version)) |
| 6108 | (sha256 |
| 6109 | (base32 "0mhpxs7vlqx8w75z93dy7nnvx89kwfdjkla03l19an15rlyqyspd")))) |
| 6110 | (build-system pyproject-build-system) |
| 6111 | (arguments |
| 6112 | (list |
| 6113 | ;; The only failing test requires internet access. |
| 6114 | #:test-flags |
| 6115 | #~(list "-k" "not test_parse_url") |
| 6116 | #:phases |
| 6117 | #~(modify-phases %standard-phases |
| 6118 | (add-after 'unpack 'patch-libmediainfo |
| 6119 | (lambda* (#:key inputs #:allow-other-keys) |
| 6120 | (substitute* "pymediainfo/__init__.py" |
| 6121 | (("libmediainfo.so.0") |
| 6122 | (search-input-file inputs "/lib/libmediainfo.so.0")))))))) |
| 6123 | (native-inputs (list python-pytest python-setuptools)) |
| 6124 | (inputs (list libmediainfo)) |
| 6125 | (home-page "https://github.com/sbraz/pymediainfo") |
| 6126 | (synopsis "Python wrapper for the mediainfo library") |
| 6127 | (description |
| 6128 | "This package provides a Python wrapper for the mediainfo library to |
| 6129 | access the technical and tag data for video and audio files.") |
| 6130 | (license license:expat))) |
| 6131 | |
| 6132 | (define-public python-psutil |
| 6133 | (package |
| 6134 | (name "python-psutil") |
| 6135 | (version "7.2.2") |
| 6136 | (source |
| 6137 | (origin |
| 6138 | (method git-fetch) |
| 6139 | (uri (git-reference |
| 6140 | (url "https://github.com/giampaolo/psutil") |
| 6141 | (commit (string-append "release-" version)))) |
| 6142 | (file-name (git-file-name name version)) |
| 6143 | (sha256 |
| 6144 | (base32 "1p5j3v78x795dd4xilmnvsswl09pkc81g9ax66akjdr0hkdnyl56")))) |
| 6145 | (build-system pyproject-build-system) |
| 6146 | (arguments |
| 6147 | (list |
| 6148 | ;; tests: X86_64-linux 414 passed, 278 skipped |
| 6149 | ;; i686-linux 410 passed, 278 skipped |
| 6150 | #:test-flags |
| 6151 | #~(list "--numprocesses" (number->string (min 8 (parallel-job-count))) |
| 6152 | "--dist" "loadgroup" |
| 6153 | #$@(map (lambda (ls) (string-append "--deselect=tests/" |
| 6154 | (string-join ls "::"))) |
| 6155 | ;; assert None is not None |
| 6156 | '(("test_linux.py" "TestRootFsDeviceFinder" |
| 6157 | "test_comparisons") |
| 6158 | ;; FileNotFoundError: [Errno 2] No such file or |
| 6159 | ;; directory: '/sys/class/net/lo/mtu' |
| 6160 | ("test_linux.py" "TestSystemNetIfStats" "test_mtu") |
| 6161 | ;; AssertionError: assert '/dev/root' != '/dev/root' |
| 6162 | ("test_linux.py" "TestRootFsDeviceFinder" |
| 6163 | "test_disk_partitions_mocked") |
| 6164 | ;; psutil.AccessDenied: (pid=426) |
| 6165 | ("test_process.py" "TestProcess" "test_weird_environ") |
| 6166 | ;; assert [] |
| 6167 | ("test_system.py" "TestMiscAPIs" "test_users") |
| 6168 | ;; ModuleNotFoundError: No module named '_common' |
| 6169 | ("test_scripts.py" "TestSetupScript" |
| 6170 | "test_invocation") |
| 6171 | ;; AssertionError: assert '' |
| 6172 | ("test_scripts.py" "TestExampleScripts" "test_who") |
| 6173 | ;; AssertionError: no disks on this system? assert |
| 6174 | ;; None is not None |
| 6175 | ("test_system.py" "TestDiskAPIs" |
| 6176 | "test_disk_io_counters") |
| 6177 | ;; psutil.NoSuchProcess: process no longer exists |
| 6178 | ;; (pid=247)) |
| 6179 | ("test_process_all.py" "TestFetchAllProcesses" |
| 6180 | "test_all") |
| 6181 | ;; ModuleNotFoundError: No module named 'pypinfo' |
| 6182 | ("test_scripts.py" "TestInternalScripts" |
| 6183 | "test_import_all") |
| 6184 | ;; FileNotFoundError: [Errno 2] No such file or |
| 6185 | ;; directory: '/sys/class/power_supply' |
| 6186 | ("test_misc.py" "TestMisc" "test_serialization"))) |
| 6187 | #$@(if (target-32bit?) |
| 6188 | (map (lambda (ls) (string-append "--deselect=tests/" |
| 6189 | (string-join ls "::"))) |
| 6190 | ;; assert 12884901915 < 500 where 12884901915 = |
| 6191 | ;; abs((2596570605 - 15481472520)) |
| 6192 | '(("test_linux.py" "TestSystemCPUStats" |
| 6193 | "test_interrupts") |
| 6194 | ;; OSError: [Errno 22] Invalid argument |
| 6195 | ("test_process.py" "TestProcess" |
| 6196 | "test_zombie_process"))) |
| 6197 | '())) |
| 6198 | #:phases |
| 6199 | #~(modify-phases %standard-phases |
| 6200 | (add-before 'check 'pre-check |
| 6201 | (lambda _ |
| 6202 | (delete-file-recursively "psutil") |
| 6203 | (substitute* "tests/test_linux.py" |
| 6204 | (("\"(free|vmstat)\"" _ cmd) |
| 6205 | (format #f "~s" (which cmd)))) |
| 6206 | (setenv "PYTHONWARNINGS" "always") |
| 6207 | (setenv "PYTHONUNBUFFERED" "1") |
| 6208 | (setenv "PSUTIL_DEBUG" "1") |
| 6209 | (setenv "PSUTIL_TESTING" "1")))))) |
| 6210 | (native-inputs |
| 6211 | (list procps |
| 6212 | python-packaging |
| 6213 | python-psleak |
| 6214 | python-pyperf |
| 6215 | python-pytest |
| 6216 | python-pytest-instafail |
| 6217 | python-pytest-xdist |
| 6218 | python-setuptools)) |
| 6219 | (home-page "https://github.com/giampaolo/psutil") |
| 6220 | (synopsis "Library for retrieving information on running processes") |
| 6221 | (description |
| 6222 | "@code{psutil} (Python system and process utilities) is a library for |
| 6223 | retrieving information on running processes and system utilization (CPU, |
| 6224 | memory, disks, network) in Python. It is useful mainly for system monitoring, |
| 6225 | profiling and limiting process resources and management of running processes. |
| 6226 | It implements many functionalities offered by command line tools such as: ps, |
| 6227 | top, lsof, netstat, ifconfig, who, df, kill, free, nice, ionice, iostat, |
| 6228 | iotop, uptime, pidof, tty, taskset, pmap.") |
| 6229 | (license license:bsd-3))) |
| 6230 | |
| 6231 | (define-public python-psutil-bootstrap |
| 6232 | (hidden-package |
| 6233 | (package/inherit python-psutil |
| 6234 | (name "python-psutil-bootstrap") |
| 6235 | (arguments |
| 6236 | (list #:tests? #f)) |
| 6237 | (propagated-inputs '()) |
| 6238 | (native-inputs |
| 6239 | (list python-setuptools))))) |
| 6240 | |
| 6241 | (define-public python-scapy |
| 6242 | (package |
| 6243 | (name "python-scapy") |
| 6244 | (version "2.6.1") |
| 6245 | (source (origin |
| 6246 | (method url-fetch) |
| 6247 | (uri (pypi-uri "scapy" version)) |
| 6248 | (sha256 |
| 6249 | (base32 |
| 6250 | "1ig6qv1kpk7z9n8xf41y5fzywfv42xzd61bf79f3x19w73idf03n")))) |
| 6251 | (arguments |
| 6252 | '(#:tests? #f)) ; There is a test directory, but apparently no |
| 6253 | ; automatic testing framework. |
| 6254 | ;; The package has more optional dependencies such as ipython and |
| 6255 | ;; matplotlib. If functionality is missing, these should be added. |
| 6256 | ;; See |
| 6257 | ;; https://scapy.readthedocs.io/en/latest/installation.html#optional-dependencies |
| 6258 | (build-system pyproject-build-system) |
| 6259 | (native-inputs (list python-setuptools python-wheel)) |
| 6260 | (home-page "https://scapy.net") |
| 6261 | (synopsis "Python network packet crafting library") |
| 6262 | (description |
| 6263 | "Scapy is a Python library and executable for interactively |
| 6264 | manipulating network packets. It can forge or decode packets of a number |
| 6265 | of protocols, send them on the wire, capture them, store or read them |
| 6266 | using pcap files, match requests and replies, and so on. |
| 6267 | It can handle tasks such as scanning, tracerouting, probing, unit tests, |
| 6268 | attacks or network discovery.") |
| 6269 | (license license:gpl2))) |
| 6270 | |
| 6271 | (define-public python-icmplib |
| 6272 | (package |
| 6273 | (name "python-icmplib") |
| 6274 | (version "3.0.4") |
| 6275 | (source |
| 6276 | (origin |
| 6277 | (method git-fetch) |
| 6278 | (uri (git-reference |
| 6279 | (url "https://github.com/ValentinBELYN/icmplib") |
| 6280 | (commit (string-append "v" version)))) |
| 6281 | (file-name (git-file-name name version)) |
| 6282 | (sha256 |
| 6283 | (base32 "04h877ryg22vsgvq35dqwpf0b1v8hvfl2gc857zxqzig4ld5qw1y")))) |
| 6284 | (build-system pyproject-build-system) |
| 6285 | (arguments (list #:tests? #f)) ; No tests. |
| 6286 | (native-inputs (list python-setuptools)) |
| 6287 | (home-page "https://github.com/ValentinBELYN/icmplib") |
| 6288 | (synopsis |
| 6289 | "Python implementation of the Internet Control Message Protocol (ICMP)") |
| 6290 | (description |
| 6291 | "@code{icmplib} is a supporting library for both IPv4 and IPv6 networks. |
| 6292 | ICMP is typically used for diagnostic or control purposes - well known from |
| 6293 | utilities such as ping(1).") |
| 6294 | (license license:lgpl3))) |
| 6295 | |
| 6296 | (define-public python-iron-core |
| 6297 | (let ((commit "5a5f3011da09769a812c6a1c44781ef852abc19b") |
| 6298 | (revision "0")) |
| 6299 | (package |
| 6300 | (name "python-iron-core") |
| 6301 | (version (git-version "1.2.1" revision commit)) |
| 6302 | (source |
| 6303 | (origin |
| 6304 | (method git-fetch) |
| 6305 | (uri (git-reference |
| 6306 | (url "https://www.github.com/iron-io/iron_core_python") |
| 6307 | (commit commit))) |
| 6308 | (file-name (git-file-name name version)) |
| 6309 | (sha256 |
| 6310 | (base32 "030ibimgqvc6hywh7g3k7qn147ckagi0wbdiqcpdf1c85xqrj5zq")))) |
| 6311 | (build-system pyproject-build-system) |
| 6312 | (arguments |
| 6313 | (list |
| 6314 | ;; XXX: Tests are run, but they seem too old/not updated. |
| 6315 | #:tests? #f |
| 6316 | #:test-backend #~'unittest)) |
| 6317 | (propagated-inputs (list python-dateutil python-requests)) |
| 6318 | (native-inputs (list python-setuptools)) |
| 6319 | (home-page "https://www.github.com/iron-io/iron_core_python") |
| 6320 | (synopsis "Universal classes and methods for Iron.io API wrappers") |
| 6321 | (description |
| 6322 | "This package provides universal classes and methods for the Iron.io |
| 6323 | API wrappers to build on.") |
| 6324 | (license license:bsd-2)))) |
| 6325 | |
| 6326 | (define-public python-iron-mq |
| 6327 | (let ((commit "e6ff76ac0068c3184d9003e3163b94ffc839dbe8") |
| 6328 | (revision "0")) |
| 6329 | (package |
| 6330 | (name "python-iron-mq") |
| 6331 | (version (git-version "0.9" revision commit)) |
| 6332 | (source |
| 6333 | (origin |
| 6334 | (method git-fetch) |
| 6335 | (uri (git-reference |
| 6336 | (url "https://github.com/iron-io/iron_mq_python") |
| 6337 | (commit commit))) |
| 6338 | (file-name (git-file-name name version)) |
| 6339 | (sha256 |
| 6340 | (base32 "0bb8gpzb3jr2r6i367jspwcxrz5ygdf40a67nl9aj5n79hg1aq8x")))) |
| 6341 | (build-system pyproject-build-system) |
| 6342 | (arguments |
| 6343 | (list |
| 6344 | ;; XXX: Tests are broken and require network access. |
| 6345 | #:tests? #f |
| 6346 | #:test-backend #~'unittest)) |
| 6347 | (propagated-inputs (list python-iron-core)) |
| 6348 | (native-inputs (list python-setuptools)) |
| 6349 | (home-page "https://github.com/iron-io/iron_mq_python") |
| 6350 | (synopsis "Client library for IronMQ, a message queue in the cloud") |
| 6351 | (description |
| 6352 | "This package provides Python language bindings for IronMQ. IronMQ is an |
| 6353 | elastic message queue for managing data and event flow within cloud |
| 6354 | applications and between systems.") |
| 6355 | (license license:bsd-2)))) |
| 6356 | |
| 6357 | (define-public python-rasterio |
| 6358 | (package |
| 6359 | (name "python-rasterio") |
| 6360 | (version "1.3.7") |
| 6361 | (source (origin |
| 6362 | (method url-fetch) |
| 6363 | (uri (pypi-uri "rasterio" version)) |
| 6364 | (sha256 |
| 6365 | (base32 |
| 6366 | "012341c1rlcdr9rkg97lbhxrwzn4sr2xah4zjfnqy2r1227wpzdb")))) |
| 6367 | (properties |
| 6368 | '((updater-ignored-native-inputs . ("gdal" "python-cython")))) |
| 6369 | (build-system pyproject-build-system) |
| 6370 | (arguments |
| 6371 | (list |
| 6372 | #:tests? #false ;test data not present |
| 6373 | #:phases |
| 6374 | '(modify-phases %standard-phases |
| 6375 | (add-before 'check 'build-extensions |
| 6376 | (lambda _ |
| 6377 | ;; Cython extensions have to be built before running the tests. |
| 6378 | (invoke "python" "setup.py" "build_ext" "--inplace")))))) |
| 6379 | (propagated-inputs (list python-affine |
| 6380 | python-attrs |
| 6381 | python-certifi |
| 6382 | python-click |
| 6383 | python-click-plugins |
| 6384 | python-cligj |
| 6385 | python-numpy |
| 6386 | python-setuptools ; For pkg_resources. |
| 6387 | python-snuggs)) |
| 6388 | (native-inputs (list gdal |
| 6389 | python-boto3 |
| 6390 | python-cython |
| 6391 | python-hypothesis |
| 6392 | python-packaging |
| 6393 | python-pytest |
| 6394 | python-shapely |
| 6395 | python-wheel)) |
| 6396 | (home-page "https://github.com/rasterio/rasterio") |
| 6397 | (synopsis "Fast and direct raster I/O for use with Numpy and SciPy") |
| 6398 | (description "This package implements fast and direct raster I/O for use |
| 6399 | with Numpy and SciPy.") |
| 6400 | (license license:bsd-3))) |
| 6401 | |
| 6402 | (define-public python-rich-tables |
| 6403 | (package |
| 6404 | (name "python-rich-tables") |
| 6405 | (version "0.8.0") |
| 6406 | (source |
| 6407 | (origin |
| 6408 | (method git-fetch) ; no tests data in PyPi package |
| 6409 | (uri (git-reference |
| 6410 | (url "https://github.com/snejus/rich-tables") |
| 6411 | (commit version))) |
| 6412 | (file-name (git-file-name name version)) |
| 6413 | (sha256 |
| 6414 | (base32 "1gkwgxcjnghn0alqw53kgb4ixf047dnb49kc0af3blvcwnmfmb5f")))) |
| 6415 | (build-system pyproject-build-system) |
| 6416 | (arguments |
| 6417 | (list |
| 6418 | #:test-flags |
| 6419 | ;; TypeError: can't subtract offset-naive and offset-aware datetimes |
| 6420 | #~(list "--deselect=tests/test_outputs.py::test_outputs[tests/json/album.json]"))) |
| 6421 | (native-inputs |
| 6422 | (list python-freezegun |
| 6423 | python-poetry-core |
| 6424 | python-pytest)) |
| 6425 | (propagated-inputs |
| 6426 | (list python-funcy |
| 6427 | python-humanize |
| 6428 | python-multimethod |
| 6429 | python-platformdirs |
| 6430 | python-rgbxy |
| 6431 | python-rich |
| 6432 | python-sqlparse)) |
| 6433 | (home-page "https://github.com/snejus/rich-tables") |
| 6434 | (synopsis "Ready-made rich tables for various purposes") |
| 6435 | (description |
| 6436 | "This package implements rich tables for various purposes, it's JSON |
| 6437 | human-prettifier based on the @code{rich} Python library.") |
| 6438 | (license license:expat))) |
| 6439 | |
| 6440 | (define-public python-rich-toolkit |
| 6441 | (package |
| 6442 | (name "python-rich-toolkit") |
| 6443 | (version "0.12.0") |
| 6444 | (source |
| 6445 | (origin |
| 6446 | (method url-fetch) |
| 6447 | (uri (pypi-uri "rich_toolkit" version)) |
| 6448 | (sha256 |
| 6449 | (base32 "0h3cda068xc0v8jqcp7fyrb6d4xlhcjlxm5bfygk04408500pjzs")))) |
| 6450 | (build-system pyproject-build-system) |
| 6451 | (propagated-inputs (list python-click python-rich python-typing-extensions)) |
| 6452 | (native-inputs (list python-hatchling python-inline-snapshot python-pytest)) |
| 6453 | (home-page "https://pypi.org/project/rich-toolkit/") |
| 6454 | (synopsis "Rich toolkit for building command-line applications") |
| 6455 | (description "This package provides the Rich toolkit for building |
| 6456 | command-line applications.") |
| 6457 | (license license:expat))) |
| 6458 | |
| 6459 | (define-public python-shapely |
| 6460 | (package |
| 6461 | (name "python-shapely") |
| 6462 | (version "2.1.1") |
| 6463 | (source |
| 6464 | (origin |
| 6465 | (method url-fetch) |
| 6466 | (uri (pypi-uri "shapely" version)) |
| 6467 | (sha256 |
| 6468 | (base32 "0wi71vyjyb04lbw6kkl9vcsmn7n28j8002288m19dziggyb221jh")))) |
| 6469 | (build-system pyproject-build-system) |
| 6470 | (arguments |
| 6471 | (list |
| 6472 | #:phases |
| 6473 | '(modify-phases %standard-phases |
| 6474 | (add-before 'check 'build-extensions |
| 6475 | (lambda _ |
| 6476 | ;; Cython extensions have to be built before running the tests. |
| 6477 | (invoke "python" "setup.py" "build_ext" "--inplace")))))) |
| 6478 | (native-inputs |
| 6479 | (list python-cython python-matplotlib python-pytest python-setuptools python-wheel)) |
| 6480 | (inputs |
| 6481 | (list geos)) |
| 6482 | (propagated-inputs |
| 6483 | (list python-numpy)) |
| 6484 | (home-page "https://github.com/shapely/shapely") |
| 6485 | (synopsis "Library for the manipulation and analysis of geometric objects") |
| 6486 | (description "Shapely is a Python package for manipulation and analysis of |
| 6487 | planar geometric objects. It is based on the @code{GEOS} library.") |
| 6488 | (license license:bsd-3))) |
| 6489 | |
| 6490 | (define-public python-shortuuid |
| 6491 | (package |
| 6492 | (name "python-shortuuid") |
| 6493 | (version "1.0.13") |
| 6494 | (source |
| 6495 | (origin |
| 6496 | (method url-fetch) |
| 6497 | (uri (pypi-uri "shortuuid" version)) |
| 6498 | (sha256 |
| 6499 | (base32 |
| 6500 | "0wjygiwk07irgqmr29bv7rvq9pc71ff3jinzn620a9h6yq3wzf9v")))) |
| 6501 | (build-system pyproject-build-system) |
| 6502 | (native-inputs |
| 6503 | (list python-poetry-core python-pytest)) |
| 6504 | (home-page "https://github.com/skorokithakis/shortuuid") |
| 6505 | (synopsis "Generator library for concise, unambiguous and URL-safe UUIDs") |
| 6506 | (description |
| 6507 | "@code{shortuuid} is a Python library for generating concise, unambiguous |
| 6508 | and URL-safe UUIDs. UUIDs are generated using the built-in Python @code{uuid} |
| 6509 | module and then similar looking characters are removed.") |
| 6510 | (license license:bsd-3))) |
| 6511 | |
| 6512 | (define-public python-logwrap |
| 6513 | (package |
| 6514 | (name "python-logwrap") |
| 6515 | (version "11.1.1") |
| 6516 | (source |
| 6517 | (origin |
| 6518 | (method git-fetch) ; no tests in PyPI release |
| 6519 | (uri (git-reference |
| 6520 | (url "https://github.com/python-useful-helpers/logwrap") |
| 6521 | (commit version))) |
| 6522 | (file-name (git-file-name name version)) |
| 6523 | (sha256 |
| 6524 | (base32 "07m4c87pavpdak1lx4bvdz43y2wwzm6fc54x947cssgwqz8mw3zp")))) |
| 6525 | (build-system pyproject-build-system) |
| 6526 | (native-inputs (list python-pytest |
| 6527 | python-setuptools |
| 6528 | python-setuptools-scm |
| 6529 | python-wheel)) |
| 6530 | (home-page "https://github.com/python-useful-helpers/logwrap") |
| 6531 | (synopsis "Decorator for logging function arguments") |
| 6532 | (description "This package provides a decorator to log function arguments |
| 6533 | and function call return values in a human-readable way.") |
| 6534 | (license license:asl2.0))) |
| 6535 | |
| 6536 | (define-public python-babel |
| 6537 | (package |
| 6538 | (name "python-babel") |
| 6539 | (version "2.16.0") |
| 6540 | (source |
| 6541 | (origin |
| 6542 | (method url-fetch) |
| 6543 | (uri (pypi-uri "babel" version)) |
| 6544 | (sha256 |
| 6545 | (base32 "05p3k0i5h8v4vqsg36s94kwl4nhgfmgwdq1x7wbzw1b6l965bwyi")))) |
| 6546 | (build-system pyproject-build-system) |
| 6547 | (native-inputs |
| 6548 | (list python-freezegun |
| 6549 | python-pytest |
| 6550 | python-setuptools |
| 6551 | tzdata-for-tests)) |
| 6552 | (propagated-inputs |
| 6553 | (list python-pytz)) |
| 6554 | (home-page "https://babel.pocoo.org/") |
| 6555 | (synopsis |
| 6556 | "Tools for internationalizing Python applications") |
| 6557 | (description |
| 6558 | "Babel is composed of two major parts: |
| 6559 | - tools to build and work with gettext message catalogs |
| 6560 | - a Python interface to the CLDR (Common Locale Data Repository), providing |
| 6561 | access to various locale display names, localized number and date formatting, |
| 6562 | etc.") |
| 6563 | (license license:bsd-3))) |
| 6564 | |
| 6565 | (define-public python-bidict |
| 6566 | (package |
| 6567 | (name "python-bidict") |
| 6568 | (version "0.23.1") |
| 6569 | (source |
| 6570 | (origin |
| 6571 | (method git-fetch) ; no tests in PyPI. |
| 6572 | (uri (git-reference |
| 6573 | (url "https://github.com/jab/bidict") |
| 6574 | (commit (string-append "v" version)))) |
| 6575 | (file-name (git-file-name name version)) |
| 6576 | (sha256 |
| 6577 | (base32 "1qsbxjjsrks3icyq19afr5y47zdrfb0cvaadpprgcszq2ilihkaq")))) |
| 6578 | (build-system pyproject-build-system) |
| 6579 | (native-inputs |
| 6580 | (list python-pytest |
| 6581 | python-pytest-benchmark |
| 6582 | python-pytest-xdist |
| 6583 | python-setuptools |
| 6584 | python-sortedcollections |
| 6585 | python-wheel)) |
| 6586 | (home-page "https://bidict.readthedocs.io") |
| 6587 | (synopsis "Bidirectional mapping library") |
| 6588 | (description "The @code{bidict} library provides several data structures |
| 6589 | for working with bidirectional mappings in Python.") |
| 6590 | (license license:mpl2.0))) |
| 6591 | |
| 6592 | (define-public python-bip39 |
| 6593 | (package |
| 6594 | (name "python-bip39") |
| 6595 | (version "0.0.2") |
| 6596 | (source |
| 6597 | (origin |
| 6598 | (method url-fetch) |
| 6599 | (uri (pypi-uri "bip39" version)) |
| 6600 | (sha256 |
| 6601 | (base32 "18m7d3gi7vj2zi0bl1z7m0nhcj6i8j9vj4vil276siagnpkv64ry")))) |
| 6602 | (build-system pyproject-build-system) |
| 6603 | (native-inputs (list python-pytest python-setuptools)) |
| 6604 | (home-page "https://github.com/de-centralized-systems/python-bip39/") |
| 6605 | (synopsis "Self-contained and simple BIP39 implementation in Python") |
| 6606 | (description |
| 6607 | "This package provides a self-contained and simple BIP39 |
| 6608 | implementation written in Python. It includes a @code{bip39.py} executable. |
| 6609 | |
| 6610 | BIP39 is a standardized mapping between binary data (the @emph{entropy}), |
| 6611 | and a list of words that are easier to remember for humans (the |
| 6612 | @emph{mnemonic}).") |
| 6613 | (license license:expat))) |
| 6614 | |
| 6615 | (define-public python-bitarray |
| 6616 | (package |
| 6617 | (name "python-bitarray") |
| 6618 | (version "3.4.3") |
| 6619 | (source (origin |
| 6620 | (method url-fetch) |
| 6621 | (uri (pypi-uri "bitarray" version)) |
| 6622 | (sha256 |
| 6623 | (base32 |
| 6624 | "1w32bybj7qx99pkwyhb4g9c1y5mp89kc838iq30swrkb12zv5pyx")))) |
| 6625 | (build-system pyproject-build-system) |
| 6626 | (arguments |
| 6627 | (list #:phases |
| 6628 | #~(modify-phases %standard-phases |
| 6629 | (replace 'check |
| 6630 | (lambda* (#:key tests? #:allow-other-keys) |
| 6631 | (when tests? |
| 6632 | ;; Step out of the source directory to avoid interference. |
| 6633 | (with-directory-excursion "/tmp" |
| 6634 | (invoke "python" "-c" |
| 6635 | "import bitarray; bitarray.test()")))))))) |
| 6636 | (native-inputs (list python-setuptools python-wheel)) |
| 6637 | (home-page "https://github.com/ilanschnell/bitarray") |
| 6638 | (synopsis "Efficient arrays of booleans") |
| 6639 | (description "This package provides an object type which efficiently |
| 6640 | represents an array of booleans. Bitarrays are sequence types and behave very |
| 6641 | much like usual lists. Eight bits are represented by one byte in a contiguous |
| 6642 | block of memory. The user can select between two representations: |
| 6643 | little-endian and big-endian. All of the functionality is implemented in C. |
| 6644 | Methods for accessing the machine representation are provided. This can be |
| 6645 | useful when bit level access to binary files is required, such as portable |
| 6646 | bitmap image files. Also, when dealing with compressed data which uses |
| 6647 | variable bit length encoding, you may find this module useful.") |
| 6648 | (license license:psfl))) |
| 6649 | |
| 6650 | (define-public python-bitarray-2 |
| 6651 | (package |
| 6652 | (inherit python-bitarray) |
| 6653 | (version "2.8.1") |
| 6654 | (source (origin |
| 6655 | (method url-fetch) |
| 6656 | (uri (pypi-uri "bitarray" version)) |
| 6657 | (sha256 |
| 6658 | (base32 |
| 6659 | "1wy80bmhg33bpzn28g1n7s8r8f4drj7pcl4m2qb5sql8bbryx376")))))) |
| 6660 | |
| 6661 | (define-public python-boolean.py |
| 6662 | (package |
| 6663 | (name "python-boolean.py") |
| 6664 | (version "5.0") |
| 6665 | (source |
| 6666 | (origin |
| 6667 | (method url-fetch) |
| 6668 | (uri (pypi-uri "boolean_py" version)) |
| 6669 | (sha256 |
| 6670 | (base32 "15cd64x2m1cbcnjasw0m2977ab1n0mam8j96schkfxbrs2xc9jv0")))) |
| 6671 | (build-system pyproject-build-system) |
| 6672 | (native-inputs (list python-pytest python-setuptools python-wheel)) |
| 6673 | (home-page "https://github.com/bastikr/boolean.py") |
| 6674 | (synopsis "Boolean algebra in one Python module") |
| 6675 | (description |
| 6676 | "This is a small Python library that implements boolean algebra. |
| 6677 | It defines two base elements, @code{TRUE} and @code{FALSE}, and a |
| 6678 | @code{Symbol} class that can take on one of these two values. Calculations |
| 6679 | are done only in terms of @code{AND}, @code{OR}, and @code{NOT}---other |
| 6680 | compositions like @code{XOR} and @code{NAND} are emulated on top of them. |
| 6681 | Expressions are constructed from parsed strings or directly in Python.") |
| 6682 | (license license:bsd-2))) |
| 6683 | |
| 6684 | (define-public python-h5netcdf |
| 6685 | (package |
| 6686 | (name "python-h5netcdf") |
| 6687 | (version "1.3.0") |
| 6688 | (source |
| 6689 | (origin |
| 6690 | (method url-fetch) |
| 6691 | (uri (pypi-uri "h5netcdf" version)) |
| 6692 | (sha256 |
| 6693 | (base32 "1kw3cf01kziwxmb84x0cy6vbpsmqjm0k1dm34i6b4d7bv8kw0wd1")))) |
| 6694 | (build-system pyproject-build-system) |
| 6695 | (native-inputs |
| 6696 | (list python-netcdf4 |
| 6697 | python-pytest |
| 6698 | python-setuptools |
| 6699 | python-setuptools-scm |
| 6700 | python-wheel)) |
| 6701 | (propagated-inputs |
| 6702 | (list python-h5py python-packaging)) |
| 6703 | (home-page "https://h5netcdf.org") |
| 6704 | (synopsis "Python interface for the netCDF4 file-format based on h5py") |
| 6705 | (description "This package provides a Python interface for the netCDF4 |
| 6706 | file-format that reads and writes local or remote HDF5 files directly via |
| 6707 | @url{h5py, https://www.h5py.org/} or @url{h5pyd, |
| 6708 | https://github.com/HDFGroup/h5pyd}, without relying on the Unidata netCDF |
| 6709 | library.") |
| 6710 | (license license:bsd-3))) |
| 6711 | |
| 6712 | (define-public python-h5py |
| 6713 | ;; TODO: Move to (gnu packages python-science) or maths, prevent import mpi |
| 6714 | ;; module here. |
| 6715 | (package |
| 6716 | (name "python-h5py") |
| 6717 | (version "3.16.0") |
| 6718 | (source |
| 6719 | (origin |
| 6720 | (method git-fetch) |
| 6721 | (uri (git-reference |
| 6722 | (url "https://github.com/h5py/h5py") |
| 6723 | (commit version))) |
| 6724 | (file-name (git-file-name name version)) |
| 6725 | (sha256 |
| 6726 | (base32 "1s5nqhylp7daizljnwr8bwwsxd92kqgz2106vi9q1c1q920ihsyy")))) |
| 6727 | (build-system pyproject-build-system) |
| 6728 | (arguments |
| 6729 | (list |
| 6730 | ;; tests: 849 passed, 50 skipped |
| 6731 | #:test-flags |
| 6732 | #~(list "--pyargs" "h5py") |
| 6733 | #:phases |
| 6734 | #~(modify-phases %standard-phases |
| 6735 | (add-after 'unpack 'set-hdf5-options |
| 6736 | ;; For custom installation with Parallel HDF5 see: |
| 6737 | ;; <https://docs.h5py.org/en/latest/build.html#custom-installation>. |
| 6738 | (lambda _ |
| 6739 | ;; XXX: Check if we need this: |
| 6740 | ;; <https://github.com/h5py/h5py/issues/2560>. |
| 6741 | ;; (setenv "H5PY_SETUP_REQUIRES" "0") |
| 6742 | ;; |
| 6743 | ;; Project is part of h5py, but availalbe at |
| 6744 | ;; <https://oldhome.schmorp.de/marc/liblzf.html>, version 3.6 |
| 6745 | ;; was released on 2019. |
| 6746 | ;; (setenv "H5PY_SYSTEM_LZF" "1") |
| 6747 | (setenv "HDF5_DIR" #$(this-package-input "hdf5-parallel-openmpi")) |
| 6748 | (setenv "HDF5_MPI" "ON"))) |
| 6749 | (add-before 'check 'pre-check |
| 6750 | (lambda _ |
| 6751 | (setenv "H5PY_TEST_CHECK_FILTERS" "1") |
| 6752 | (delete-file-recursively "h5py")))))) |
| 6753 | (native-inputs |
| 6754 | (list pkg-config |
| 6755 | python-cython |
| 6756 | python-pkgconfig |
| 6757 | python-pytest |
| 6758 | python-pytest-mpi |
| 6759 | python-setuptools)) |
| 6760 | (inputs |
| 6761 | (list hdf5-parallel-openmpi)) |
| 6762 | (propagated-inputs |
| 6763 | (list python-mpi4py |
| 6764 | python-numpy)) |
| 6765 | (home-page "https://www.h5py.org/") |
| 6766 | (synopsis "Read and write HDF5 files from Python") |
| 6767 | (description |
| 6768 | "The h5py package provides both a high- and low-level interface to the |
| 6769 | HDF5 library from Python. The low-level interface is intended to be a |
| 6770 | complete wrapping of the HDF5 API, while the high-level component supports |
| 6771 | access to HDF5 files, datasets and groups using established Python and NumPy |
| 6772 | concepts.") |
| 6773 | (license license:bsd-3))) |
| 6774 | |
| 6775 | (define-public python-hdf5storage |
| 6776 | ;; XXX: Use the latest commit containing compatibility with Pytest and Python |
| 6777 | ;; 3.11, see: <https://github.com/frejanordsiek/hdf5storage/issues/135>. |
| 6778 | ;; |
| 6779 | ;; This package probably is sun setting, consider to remove when stops |
| 6780 | ;; building, see: <https://github.com/frejanordsiek/hdf5storage/issues/136>. |
| 6781 | (let ((commit "7ee2a96de134b44beaa79c3a11c559f9ac87c5a6") |
| 6782 | (revision "0")) |
| 6783 | (package |
| 6784 | (name "python-hdf5storage") |
| 6785 | (version (git-version "0.1.19" revision commit)) |
| 6786 | (source |
| 6787 | (origin |
| 6788 | (method git-fetch) |
| 6789 | (uri (git-reference |
| 6790 | (url "https://github.com/frejanordsiek/hdf5storage") |
| 6791 | (commit commit))) |
| 6792 | (file-name (git-file-name name version)) |
| 6793 | (sha256 |
| 6794 | (base32 "0xq0rg8vwk35yc3jvv2fyf7bl189viq0fywch53g57hxrahv5k02")))) |
| 6795 | (build-system pyproject-build-system) |
| 6796 | (arguments |
| 6797 | ;; Started failing with the move to [email protected], due to modules changes. |
| 6798 | (list |
| 6799 | #:test-flags |
| 6800 | #~(list "--ignore=tests/test_marshallers_requiring_modules.py"))) |
| 6801 | (native-inputs |
| 6802 | (list python-pytest |
| 6803 | python-setuptools)) |
| 6804 | (propagated-inputs |
| 6805 | (list python-h5py |
| 6806 | python-numpy-1)) |
| 6807 | (home-page "https://github.com/frejanordsiek/hdf5storage") |
| 6808 | (synopsis "Read and write Python data types from and to HDF5 files") |
| 6809 | (description |
| 6810 | "This Python package provides high-level utilities to read and write a |
| 6811 | variety of Python types from and to @acronym{HDF5, Hierarchical Data Format} |
| 6812 | formatted files. This package also provides support for MATLAB MAT v7.3 |
| 6813 | formatted files, which are HDF5 files with a different extension and some |
| 6814 | extra metadata. Because HDF5 and MAT files might need to be read from |
| 6815 | untrusted sources, pickling is avoided in this package.") |
| 6816 | (license license:bsd-2)))) |
| 6817 | |
| 6818 | (define-public python-prctl |
| 6819 | (package |
| 6820 | (name "python-prctl") |
| 6821 | (version "1.8.1") |
| 6822 | (source (origin |
| 6823 | (method url-fetch) |
| 6824 | (uri (pypi-uri "python-prctl" version)) |
| 6825 | (sha256 |
| 6826 | (base32 |
| 6827 | "1kk7gv582w72spnz6agr0pz0hlpgchp3l7zxzzjarwfllwjrmjml")))) |
| 6828 | (build-system pyproject-build-system) |
| 6829 | (arguments |
| 6830 | (list #:test-backend ''custom |
| 6831 | #:test-flags ''("test_prctl.py") |
| 6832 | #:phases |
| 6833 | #~(modify-phases %standard-phases |
| 6834 | (add-after 'unpack 'patch-tests |
| 6835 | (lambda _ |
| 6836 | (substitute* "test_prctl.py" |
| 6837 | ;; actual suffix used in cpython build output dir name |
| 6838 | (("sys.version\\[0:3\\]") "sys.implementation.cache_tag") |
| 6839 | ;; test_no_new_privs assumes existence of /bin/ping, but |
| 6840 | ;; can never run anyway due to it requiring setuid ping. |
| 6841 | ;; just short circuit it instead. |
| 6842 | (("os.stat\\('/bin/ping'\\)\\.st_mode") "0"))))))) |
| 6843 | (inputs (list libcap)) |
| 6844 | (native-inputs (list python-setuptools)) |
| 6845 | (supported-systems (filter target-linux? %supported-systems)) |
| 6846 | (home-page "https://pythonhosted.org/python-prctl") |
| 6847 | (synopsis "Linux capabilities library") |
| 6848 | (description "This package provides a Python library for controlling Linux |
| 6849 | capabilities and attributes, similar to the prctl syscall.") |
| 6850 | (license license:gpl3+))) |
| 6851 | |
| 6852 | (define-public python-pyhimitsu |
| 6853 | (package |
| 6854 | (name "python-pyhimitsu") |
| 6855 | (version "0.0.9") |
| 6856 | (source (origin |
| 6857 | (method url-fetch) |
| 6858 | (uri (pypi-uri "py_himitsu" version)) |
| 6859 | (sha256 |
| 6860 | (base32 |
| 6861 | "1kljxhjvfy945zij8fif3s6xzgcyslxz99mv460iy0anzj433pj5")))) |
| 6862 | (build-system pyproject-build-system) |
| 6863 | (arguments |
| 6864 | (list |
| 6865 | #:phases |
| 6866 | #~(modify-phases %standard-phases |
| 6867 | (replace 'check |
| 6868 | (lambda _ |
| 6869 | ;; (setenv "PYTHONPATH" (getenv "GUIX_PYTHONPATH")) |
| 6870 | (invoke "make" "check")))))) |
| 6871 | (native-inputs (list python-hatchling)) |
| 6872 | (propagated-inputs (list python-pyxdg)) |
| 6873 | (home-page "https://git.sr.ht/~apreiml/py-himitsu") |
| 6874 | (synopsis "Himitsu client protocol implementation in Python") |
| 6875 | (description "This package provides a library for writing Himitsu client |
| 6876 | programs in Python.") |
| 6877 | (license license:expat))) |
| 6878 | |
| 6879 | (define-public python-hjson |
| 6880 | ;; Using commit from master branch as the PyPI version does not contain |
| 6881 | ;; the hjson/tests/ directory. |
| 6882 | (let ((revision "0") |
| 6883 | (commit "1687b811fcbbc54b5ac71cfbaa99f805e406fbcb")) |
| 6884 | (package |
| 6885 | (name "python-hjson") |
| 6886 | (version (git-version "3.1.0" revision commit)) |
| 6887 | (source (origin |
| 6888 | (method git-fetch) |
| 6889 | (uri (git-reference |
| 6890 | (url "https://github.com/hjson/hjson-py") |
| 6891 | (commit commit))) |
| 6892 | (file-name (git-file-name name version)) |
| 6893 | (sha256 |
| 6894 | (base32 |
| 6895 | "1qfqnhvfx5mm7bdajjnnagmvns1zxyksjzh3k5la2ag6a8bp5gki")) |
| 6896 | (modules '((guix build utils))) |
| 6897 | ;; collections.OrderedDict.__repr__ changed in Python 3.12, |
| 6898 | ;; see also <https://github.com/hjson/hjson-py/issues/40>. |
| 6899 | (snippet #~(substitute* "hjson/__init__.py" |
| 6900 | (("\\[\\('foo', 'a'\\), \\('bar', 1\\)\\]") |
| 6901 | "{'foo': 'a', 'bar': 1}"))))) |
| 6902 | (build-system pyproject-build-system) |
| 6903 | (native-inputs (list python-setuptools python-wheel)) |
| 6904 | (home-page "https://github.com/hjson/hjson-py") |
| 6905 | (synopsis "Python package to parse HJSON documents") |
| 6906 | (description "This package provides a Python library and a command-line |
| 6907 | interface utility to parse @url{https://hjson.github.io/, HJSON}) documents.") |
| 6908 | (license license:expat)))) |
| 6909 | |
| 6910 | (define-public python-hnswlib |
| 6911 | (package |
| 6912 | (name "python-hnswlib") |
| 6913 | (version "0.8.0") |
| 6914 | (source |
| 6915 | (origin |
| 6916 | (method git-fetch) |
| 6917 | (uri (git-reference |
| 6918 | (url "https://github.com/nmslib/hnswlib") |
| 6919 | (commit (string-append "v" version)))) |
| 6920 | (file-name (git-file-name name version)) |
| 6921 | (sha256 |
| 6922 | (base32 "0l5ry8c1qkck8w5acdl4k3acs9qfxiq0lc7f50x8vz53imgh1afl")))) |
| 6923 | (build-system pyproject-build-system) |
| 6924 | (arguments |
| 6925 | (list |
| 6926 | #:phases |
| 6927 | #~(modify-phases %standard-phases |
| 6928 | (add-after 'unpack 'disable-native-optimization |
| 6929 | (lambda _ |
| 6930 | (substitute* "setup.py" |
| 6931 | ((", '-march=native'") |
| 6932 | ""))))))) |
| 6933 | (native-inputs |
| 6934 | (list pybind11-2 |
| 6935 | python-pytest |
| 6936 | python-setuptools)) |
| 6937 | (propagated-inputs |
| 6938 | (list python-numpy)) |
| 6939 | (home-page "https://github.com/nmslib/hnswlib") |
| 6940 | (synopsis "Fast approximate nearest neighbor search") |
| 6941 | (description "Hnswlib is a header-only C++ implementation of fast |
| 6942 | approximate nearest neighbor search with Python bindings.") |
| 6943 | (license license:asl2.0))) |
| 6944 | |
| 6945 | (define-public python-pylatex |
| 6946 | (package |
| 6947 | (name "python-pylatex") |
| 6948 | (version "1.4.2") |
| 6949 | (source |
| 6950 | (origin |
| 6951 | (method git-fetch) |
| 6952 | (uri (git-reference |
| 6953 | (url "https://github.com/JelteF/PyLaTeX") |
| 6954 | (commit (string-append "v" version)))) |
| 6955 | (file-name (git-file-name name version)) |
| 6956 | (sha256 |
| 6957 | (base32 "1daciv5dx9nhiai8bz75bwfvnfv40dq118lfnhjw8kpvr0m7hrm6")))) |
| 6958 | (build-system pyproject-build-system) |
| 6959 | (arguments |
| 6960 | (list #:phases |
| 6961 | #~(modify-phases %standard-phases |
| 6962 | ;; some tests attempt to create directories |
| 6963 | (add-before 'check 'set-home-directory |
| 6964 | (lambda _ |
| 6965 | (setenv "HOME" "/tmp")))))) |
| 6966 | (propagated-inputs (list python-ordered-set)) |
| 6967 | (native-inputs (list python-matplotlib |
| 6968 | python-pytest |
| 6969 | python-quantities |
| 6970 | python-setuptools |
| 6971 | (texlive-local-tree |
| 6972 | (list texlive-lastpage |
| 6973 | texlive-latexmk |
| 6974 | texlive-parskip)))) |
| 6975 | (home-page "https://github.com/JelteF/PyLaTeX") |
| 6976 | (synopsis "Library for creating LaTeX files and snippets") |
| 6977 | (description |
| 6978 | "This package provides a Python library for creating LaTeX files and |
| 6979 | snippets.") |
| 6980 | (license license:expat))) |
| 6981 | |
| 6982 | (define-public python-pylatexenc |
| 6983 | (package |
| 6984 | (name "python-pylatexenc") |
| 6985 | (version "2.10") |
| 6986 | (source |
| 6987 | (origin |
| 6988 | (method url-fetch) |
| 6989 | (uri (pypi-uri "pylatexenc" version)) |
| 6990 | (sha256 |
| 6991 | (base32 "1ls09z47b5md71gkxcj7fd87ynpvv2walgp2w6z31p26xf2gvn1x")))) |
| 6992 | (build-system pyproject-build-system) |
| 6993 | (native-inputs (list python-pytest python-setuptools python-wheel)) |
| 6994 | (home-page "https://github.com/phfaist/pylatexenc") |
| 6995 | (synopsis "LaTeX parser for Unicode/LaTeX conversion") |
| 6996 | (description |
| 6997 | "@code{python-pylatexenc} is a LaTeX parser providing LaTeX-to-Unicode and |
| 6998 | Unicode-to-LaTeX conversion.") |
| 6999 | (license license:expat))) |
| 7000 | |
| 7001 | (define-public python-lsp-black |
| 7002 | (package |
| 7003 | (name "python-lsp-black") |
| 7004 | (version "2.0.0") |
| 7005 | (source |
| 7006 | (origin |
| 7007 | (method git-fetch) |
| 7008 | (uri (git-reference |
| 7009 | (url "https://github.com/python-lsp/python-lsp-black") |
| 7010 | (commit (string-append "v" version)))) |
| 7011 | (file-name (git-file-name name version)) |
| 7012 | (sha256 |
| 7013 | (base32 "0ilh6nx15kzrp29nkrpx03vx6dw3n7wq65qwv7bg7kcnyiwacplx")))) |
| 7014 | (build-system pyproject-build-system) |
| 7015 | (arguments |
| 7016 | ;; The python version is too old for these tests to pass properly. |
| 7017 | (list #:test-flags |
| 7018 | `'("-k" ,(string-append |
| 7019 | "not test_pylsp_format_document_syntax_error" |
| 7020 | " and not test_pylsp_format_range_syntax_error" |
| 7021 | " and not test_load_config_defaults" |
| 7022 | " and not test_load_config_with_skip_options")))) |
| 7023 | (propagated-inputs |
| 7024 | (list python-black python-lsp-server python-tomli)) |
| 7025 | (native-inputs |
| 7026 | (list python-pytest python-setuptools python-wheel)) |
| 7027 | (home-page "https://github.com/python-lsp/python-lsp-black") |
| 7028 | (synopsis "Black plugin for the Python LSP Server") |
| 7029 | (description "This package provides a plugin with support for the |
| 7030 | @code{python-black} formatter for the Python LSP Server.") |
| 7031 | (license license:expat))) |
| 7032 | |
| 7033 | (define-public python-pylsp-mypy |
| 7034 | (package |
| 7035 | (name "python-pylsp-mypy") |
| 7036 | (version "0.7.1") |
| 7037 | (source |
| 7038 | (origin |
| 7039 | ;; "The newest version on PyPI is indeed not published on GitHub." |
| 7040 | ;; See <https://github.com/python-lsp/pylsp-mypy/issues/113>. |
| 7041 | (method url-fetch) |
| 7042 | (uri (pypi-uri "pylsp_mypy" version)) |
| 7043 | (sha256 |
| 7044 | (base32 "0rmp8bi599g76nmrraiagln9alz9r9ly760kkxbh4vw1yyssjra4")))) |
| 7045 | (build-system pyproject-build-system) |
| 7046 | (native-inputs (list python-pytest python-setuptools)) |
| 7047 | (propagated-inputs (list python-mypy python-lsp-server)) |
| 7048 | (home-page "https://github.com/python-lsp/pylsp-mypy") |
| 7049 | (synopsis "Mypy linter for the Python LSP Server") |
| 7050 | (description |
| 7051 | "Mypy linter integration for use with @code{python-lsp-server}.") |
| 7052 | (license license:expat))) |
| 7053 | |
| 7054 | (define-public python-sh |
| 7055 | (package |
| 7056 | (name "python-sh") |
| 7057 | (version "2.4.0") |
| 7058 | (source |
| 7059 | (origin |
| 7060 | (method url-fetch) |
| 7061 | (uri (pypi-uri "sh" version)) |
| 7062 | (sha256 |
| 7063 | (base32 |
| 7064 | "1ngzjpavdxbyf79r9fh7c7icpmbwcjq907cski0r7v89hpvawl52")))) |
| 7065 | (build-system pyproject-build-system) |
| 7066 | (arguments |
| 7067 | (list |
| 7068 | #:test-flags |
| 7069 | #~(list "-k" (string-join |
| 7070 | ;; These tests are shaky. |
| 7071 | (list "not test_bad_sig_raise_exception" |
| 7072 | "test_doesnt_execute_directories" |
| 7073 | "test_environment" |
| 7074 | "test_ok_code_ignores_bad_sig_exception" |
| 7075 | "test_unicode_path") |
| 7076 | " and not ") |
| 7077 | "tests") |
| 7078 | #:phases |
| 7079 | #~(modify-phases %standard-phases |
| 7080 | (add-before 'check 'pre-check |
| 7081 | (lambda _ |
| 7082 | (setenv "HOME" "/tmp")))))) |
| 7083 | (native-inputs |
| 7084 | (list python-hatchling python-pytest)) |
| 7085 | (home-page "https://github.com/amoffat/sh") |
| 7086 | (synopsis "Python subprocess replacement") |
| 7087 | (description "This package provides a replacement for Python's |
| 7088 | @code{subprocess} feature.") |
| 7089 | (license license:expat))) |
| 7090 | |
| 7091 | ;; Old version just for python-dotenv-0.13.0 for docker-compose; remove once |
| 7092 | ;; that is updated. |
| 7093 | (define-public python-sh-1 |
| 7094 | (package |
| 7095 | (inherit python-sh) |
| 7096 | (version "1.14.2") |
| 7097 | (source |
| 7098 | (origin |
| 7099 | (method url-fetch) |
| 7100 | (uri (pypi-uri "sh" version)) |
| 7101 | (sha256 |
| 7102 | (base32 |
| 7103 | "03gyss1rhj4in7pgysg4q0hxp3230whinlpy1532ljs99lrx0ywx")))) |
| 7104 | (arguments |
| 7105 | '(#:phases |
| 7106 | (modify-phases %standard-phases |
| 7107 | (replace 'check |
| 7108 | (lambda _ |
| 7109 | ;; XXX: A Python 2 test fails when HOME=/homeless-shelter. |
| 7110 | (setenv "HOME" "/tmp") |
| 7111 | (invoke "python" "sh.py" "test")))))) |
| 7112 | (native-inputs |
| 7113 | (list python-setuptools)))) |
| 7114 | |
| 7115 | (define-public python-cftime |
| 7116 | (package |
| 7117 | (name "python-cftime") |
| 7118 | (version "1.6.5") |
| 7119 | (source |
| 7120 | (origin |
| 7121 | (method url-fetch) |
| 7122 | (uri (pypi-uri "cftime" version)) |
| 7123 | (sha256 |
| 7124 | (base32 "07p8s5a0xacn404x6l0i04q1gz2h0h9m5azbhdvbhgxlp7bgw9c2")))) |
| 7125 | (build-system pyproject-build-system) |
| 7126 | (propagated-inputs |
| 7127 | (list python-numpy)) |
| 7128 | (native-inputs |
| 7129 | (list python-cython |
| 7130 | python-pytest |
| 7131 | python-setuptools |
| 7132 | python-wheel)) |
| 7133 | (home-page "https://unidata.github.io/cftime/") |
| 7134 | (synopsis "Library for time handling") |
| 7135 | (description |
| 7136 | "This package provides time-handling functionality that used to be part |
| 7137 | of the netcdf4 package before.") |
| 7138 | (license license:expat))) |
| 7139 | |
| 7140 | (define-public python-netcdf4 |
| 7141 | ;; TODO: Move to (gnu packages python-science). |
| 7142 | (package |
| 7143 | (name "python-netcdf4") |
| 7144 | (version "1.7.4") |
| 7145 | (source |
| 7146 | (origin |
| 7147 | (method git-fetch) |
| 7148 | (uri (git-reference |
| 7149 | (url "https://github.com/Unidata/netcdf4-python") |
| 7150 | (commit (string-append "v" version "rel")))) |
| 7151 | (file-name (git-file-name name version)) |
| 7152 | (sha256 |
| 7153 | (base32 "0lmapnqc4rivv0nggm8865xpni1gbcg6dc7khf5r0p16jk8gv41c")))) |
| 7154 | (build-system pyproject-build-system) |
| 7155 | (arguments |
| 7156 | (list |
| 7157 | ;; tests: Ran 115 tests |
| 7158 | #:phases |
| 7159 | #~(modify-phases %standard-phases |
| 7160 | (add-before 'build 'set-configure-flags |
| 7161 | (lambda _ |
| 7162 | (setenv "HDF5_DIR" #$(this-package-input "hdf5-parallel-openmpi")) |
| 7163 | (setenv "JPEG_DIR" #$(this-package-input "libjpeg-turbo")) |
| 7164 | (setenv "NETCDF4_DIR" #$(this-package-input "netcdf")) |
| 7165 | (setenv "USE_NCCONFIG" "0"))) |
| 7166 | (replace 'check |
| 7167 | (lambda* (#:key tests? #:allow-other-keys) |
| 7168 | (when tests? |
| 7169 | (with-directory-excursion "test" |
| 7170 | (setenv "NO_NET" "1") |
| 7171 | (setenv "NO_CDL" "1") |
| 7172 | (invoke "python" "run_all.py")))))))) |
| 7173 | (native-inputs |
| 7174 | (list python-cython |
| 7175 | python-packaging |
| 7176 | python-pytest |
| 7177 | python-setuptools |
| 7178 | python-setuptools-scm |
| 7179 | python-typing-extensions)) |
| 7180 | (inputs |
| 7181 | ;; After python-h5py was built with MPI support it can't be used together |
| 7182 | ;; with hdf5 and netcdf built without MPI support tests and load may |
| 7183 | ;; brake when python-netcdf4 and python-h5py are used together. |
| 7184 | (list netcdf-parallel-openmpi |
| 7185 | hdf5-parallel-openmpi |
| 7186 | zlib)) |
| 7187 | (propagated-inputs |
| 7188 | (list python-certifi |
| 7189 | python-cftime |
| 7190 | python-mpi4py |
| 7191 | python-numpy)) |
| 7192 | (home-page "https://github.com/Unidata/netcdf4-python") |
| 7193 | (synopsis "Python/numpy interface to the netCDF library") |
| 7194 | (description "Netcdf4-python is a Python interface to the netCDF C |
| 7195 | library. netCDF version 4 has many features not found in earlier |
| 7196 | versions of the library and is implemented on top of HDF5. This module |
| 7197 | can read and write files in both the new netCDF 4 and the old netCDF 3 |
| 7198 | format, and can create files that are readable by HDF5 clients. The |
| 7199 | API is modelled after @code{Scientific.IO.NetCDF}, and should be familiar |
| 7200 | to users of that module.") |
| 7201 | ;; The software is mainly ISC, but includes some files covered |
| 7202 | ;; by the Expat license. |
| 7203 | (license (list license:isc license:expat)))) |
| 7204 | |
| 7205 | (define-public python-ncclient |
| 7206 | (package |
| 7207 | (name "python-ncclient") |
| 7208 | (version "0.6.19") |
| 7209 | (source |
| 7210 | (origin |
| 7211 | (method git-fetch) ;no tests in PyPI release |
| 7212 | (uri (git-reference |
| 7213 | (url "https://github.com/ncclient/ncclient") |
| 7214 | (commit (string-append "v" version)))) |
| 7215 | (file-name (git-file-name name version)) |
| 7216 | (sha256 |
| 7217 | (base32 |
| 7218 | "0nmyj59k9zbdfhm7qhrq9gd4x6vhjdf18q1kwfgb2gwcb3b8nd2h")))) |
| 7219 | (build-system pyproject-build-system) |
| 7220 | (native-inputs |
| 7221 | (list python-pytest |
| 7222 | python-setuptools |
| 7223 | python-wheel)) |
| 7224 | (propagated-inputs |
| 7225 | (list python-lxml |
| 7226 | python-paramiko)) |
| 7227 | (home-page "https://github.com/ncclient/ncclient") |
| 7228 | (synopsis "Python library for NETCONF clients") |
| 7229 | (description "@code{ncclient} is a Python library that facilitates |
| 7230 | client-side scripting and application development around the NETCONF |
| 7231 | protocol.") |
| 7232 | (license license:asl2.0))) |
| 7233 | |
| 7234 | (define-public python-ncls |
| 7235 | (package |
| 7236 | (name "python-ncls") |
| 7237 | (version "0.0.68") |
| 7238 | (source (origin |
| 7239 | (method url-fetch) |
| 7240 | (uri (pypi-uri "ncls" version)) |
| 7241 | (sha256 |
| 7242 | (base32 |
| 7243 | "14xsnzr34xa4rwfcdjry9aqjs8i03s9fzy6jgrwj3fr3n6msbal1")))) |
| 7244 | (build-system pyproject-build-system) |
| 7245 | (arguments |
| 7246 | ;; Those tests fail with warnings (not errors) for the Numpy update. |
| 7247 | ;; Remove it at next python-team iteration. |
| 7248 | (list #:test-flags ''("--ignore=examples/test_all_overlaps_both.py" |
| 7249 | "--ignore=examples/test_find_overlap_list.py"))) |
| 7250 | (native-inputs (list python-cython |
| 7251 | python-pandas |
| 7252 | python-pytest |
| 7253 | python-setuptools |
| 7254 | python-wheel)) |
| 7255 | (propagated-inputs (list python-numpy)) |
| 7256 | (home-page "https://github.com/endrebak/ncls") |
| 7257 | (synopsis "Nested containment list data structure") |
| 7258 | (description |
| 7259 | "This package provides a wrapper for the nested containment list data |
| 7260 | structure. It is a static interval-tree that is fast for both construction |
| 7261 | and lookups.") |
| 7262 | (license license:bsd-3))) |
| 7263 | |
| 7264 | (define-public python-license-expression |
| 7265 | (package |
| 7266 | (name "python-license-expression") |
| 7267 | (version "30.1.0") |
| 7268 | (source |
| 7269 | (origin |
| 7270 | (method url-fetch) |
| 7271 | (uri (pypi-uri "license-expression" version)) |
| 7272 | (sha256 |
| 7273 | (base32 "0lvshl2fhwa568d3y3vmx45hdp8gk5w9yl3b2q5d66r5vqn1sfwl")))) |
| 7274 | (build-system pyproject-build-system) |
| 7275 | (native-inputs |
| 7276 | (list python-setuptools-scm python-pytest python-setuptools python-wheel)) |
| 7277 | (propagated-inputs |
| 7278 | (list python-boolean.py)) |
| 7279 | (home-page "https://github.com/nexB/license-expression") |
| 7280 | (synopsis "Apply boolean logic to license expressions") |
| 7281 | (description |
| 7282 | "This Python module defines a tiny language to evaluate and compare |
| 7283 | license expressions using boolean logic. Logical combinations of licenses can |
| 7284 | be tested for equality, containment, and equivalence. They can be normalised |
| 7285 | and simplified. It supports SPDX license expressions as well as other naming |
| 7286 | conventions and aliases in the same expression.") |
| 7287 | (license license:gpl2+))) |
| 7288 | |
| 7289 | (define-public python-limits |
| 7290 | (package |
| 7291 | (name "python-limits") |
| 7292 | (version "5.8.0") |
| 7293 | (source |
| 7294 | (origin |
| 7295 | (method git-fetch) |
| 7296 | (uri (git-reference |
| 7297 | (url "https://github.com/alisaifee/limits") |
| 7298 | (commit version))) |
| 7299 | (file-name (git-file-name name version)) |
| 7300 | (sha256 |
| 7301 | (base32 "1b1p6vpdwkzf89jl03xm56f3jp4dhkz89r63gx51b89ph1lcpi85")))) |
| 7302 | (build-system pyproject-build-system) |
| 7303 | (arguments |
| 7304 | (list |
| 7305 | ;; tests: 155 passed, 620 deselected |
| 7306 | #:test-flags |
| 7307 | #~(list |
| 7308 | ;; The test suite spawns storages in Docker. |
| 7309 | "-k" (simple-format #f "not (~a)" |
| 7310 | (string-join |
| 7311 | '("lazy_dependency" ;importing redis |
| 7312 | "memcache" |
| 7313 | "mongo" |
| 7314 | "redis" |
| 7315 | "valkey") |
| 7316 | " or ")) |
| 7317 | "--ignore=tests/benchmarks") |
| 7318 | #:phases |
| 7319 | #~(modify-phases %standard-phases |
| 7320 | (add-before 'check 'adjust-tests |
| 7321 | (lambda _ |
| 7322 | (substitute* "pytest.ini" |
| 7323 | ((".*--cov=.*") "") |
| 7324 | ((".*-K.*") "")) |
| 7325 | (substitute* (find-files "tests" "\\.py$") |
| 7326 | (("import pymemcache.*") "") |
| 7327 | (("import pymongo.*") "") |
| 7328 | (("import redis.*") "") |
| 7329 | (("import valkey.*") "") |
| 7330 | ;; Lazy fixtures are only used for storages. |
| 7331 | (("from pytest_lazy_fixtures import lf.*") "") |
| 7332 | (("lf\\((.+)\\)" all fixture) fixture)) |
| 7333 | (substitute* "tests/test_storage.py" |
| 7334 | (("\\<redis\\>\\..*\\(.*\\)") ""))))))) |
| 7335 | (propagated-inputs (list python-deprecated python-packaging)) |
| 7336 | (native-inputs |
| 7337 | (list python-flaky |
| 7338 | python-hatch-vcs |
| 7339 | python-hatchling |
| 7340 | python-pytest |
| 7341 | python-pytest-asyncio)) |
| 7342 | (home-page "https://limits.readthedocs.io/") |
| 7343 | (synopsis "Rate limiting utilities") |
| 7344 | (description |
| 7345 | "This package provides a Python library to perform rate limiting with |
| 7346 | commonly used storage backends.") |
| 7347 | (license license:expat))) |
| 7348 | |
| 7349 | (define-public python-fb-re2 |
| 7350 | (package |
| 7351 | (name "python-fb-re2") |
| 7352 | (version "1.0.7") |
| 7353 | (source |
| 7354 | (origin |
| 7355 | (method git-fetch) |
| 7356 | (uri (git-reference |
| 7357 | (url "https://github.com/facebook/pyre2") |
| 7358 | (commit (string-append "v" version)))) |
| 7359 | (file-name (git-file-name name version)) |
| 7360 | (sha256 |
| 7361 | (base32 |
| 7362 | "0snprxdnh3m45r3b0az4v0l28h90ycmfbybzla6xg1qviwv9w1ak")))) |
| 7363 | (build-system pyproject-build-system) |
| 7364 | (arguments |
| 7365 | (list |
| 7366 | #:phases |
| 7367 | #~(modify-phases %standard-phases |
| 7368 | (add-after 'unpack 'fix-tests |
| 7369 | (lambda _ |
| 7370 | (substitute* "tests/test_match.py" |
| 7371 | (("assertRaisesRegexp") |
| 7372 | "assertRaisesRegex"))))))) |
| 7373 | (native-inputs |
| 7374 | (list python-pytest python-setuptools)) |
| 7375 | (inputs |
| 7376 | (list re2)) |
| 7377 | (home-page "https://github.com/facebook/pyre2") |
| 7378 | (synopsis "Python wrapper for RE2") |
| 7379 | (description "This package provides a Python extension that wraps Google's |
| 7380 | RE2 regular expression library. It implements many of the features of |
| 7381 | Python's built-in @code{re} module with compatible interfaces.") |
| 7382 | (license license:bsd-3))) |
| 7383 | |
| 7384 | (define-public python-filelock |
| 7385 | ;; Try to update simultaneously with the bootstrap version in |
| 7386 | ;; (gnu packages python-build). |
| 7387 | (package |
| 7388 | (name "python-filelock") |
| 7389 | (version "3.16.1") |
| 7390 | (source |
| 7391 | (origin |
| 7392 | (method url-fetch) |
| 7393 | (uri (pypi-uri "filelock" version)) |
| 7394 | (sha256 |
| 7395 | (base32 |
| 7396 | "0d8ljvmsfgriiqf5dqii91gfcpj7cpjrh8fnsvifaiyvspygnjf2")))) |
| 7397 | (build-system pyproject-build-system) |
| 7398 | (arguments |
| 7399 | (list |
| 7400 | ;; Break cycle with virtualenv. |
| 7401 | #:test-flags #~(list "--ignore=tests/test_virtualenv.py"))) |
| 7402 | (native-inputs |
| 7403 | (list python-hatch-vcs |
| 7404 | python-hatchling |
| 7405 | python-pytest |
| 7406 | python-pytest-asyncio |
| 7407 | python-pytest-mock |
| 7408 | python-setuptools-scm)) |
| 7409 | (home-page "https://github.com/tox-dev/py-filelock") |
| 7410 | (synopsis "Platform independent file lock") |
| 7411 | (description "@code{filelock} contains a single module implementing |
| 7412 | a platform independent file lock in Python, which provides a simple way of |
| 7413 | inter-process communication.") |
| 7414 | (license license:unlicense))) |
| 7415 | |
| 7416 | (define-public python-filelock-next |
| 7417 | (package |
| 7418 | (inherit python-filelock) |
| 7419 | (name "python-filelock") |
| 7420 | (version "3.20.0") |
| 7421 | (source |
| 7422 | (origin |
| 7423 | (method url-fetch) |
| 7424 | (uri (pypi-uri "filelock" version)) |
| 7425 | (sha256 |
| 7426 | (base32 "1x0k9hrk8gr91hfb6ss6cwlq4p0pvi40nsg6skhl5gn69qxr87ki")))) |
| 7427 | (native-inputs |
| 7428 | (list python-hatch-vcs |
| 7429 | python-hatchling |
| 7430 | python-pytest |
| 7431 | python-pytest-asyncio |
| 7432 | python-pytest-mock |
| 7433 | python-pytest-timeout)))) |
| 7434 | |
| 7435 | (define-public python-seedir |
| 7436 | (package |
| 7437 | (name "python-seedir") |
| 7438 | (version "0.5.0") |
| 7439 | (source |
| 7440 | (origin |
| 7441 | (method url-fetch) |
| 7442 | (uri (pypi-uri "seedir" version)) |
| 7443 | (sha256 |
| 7444 | (base32 "1ibgzji9ijm37vgwmg37s2hsqmpqd793z4q41w816x5m6nahzy76")))) |
| 7445 | (build-system pyproject-build-system) |
| 7446 | (propagated-inputs (list python-natsort)) |
| 7447 | (native-inputs (list python-pytest python-setuptools python-wheel)) |
| 7448 | (home-page "https://github.com/earnestt1234/seedir") |
| 7449 | (synopsis |
| 7450 | "Package for creating, editing, and reading folder tree diagrams.") |
| 7451 | (description |
| 7452 | "This is a package for creating, editing, and reading folder tree |
| 7453 | diagrams.") |
| 7454 | (license license:expat))) |
| 7455 | |
| 7456 | (define-public python-semantic-version |
| 7457 | (package |
| 7458 | (name "python-semantic-version") |
| 7459 | (version "2.10.0") |
| 7460 | (source |
| 7461 | (origin |
| 7462 | (method url-fetch) |
| 7463 | (uri (pypi-uri "semantic_version" version)) |
| 7464 | (sha256 |
| 7465 | (base32 "0704smz9k6hdd6i5xh0xf0sk47kannjb77abilvvp34r6v9vdaxx")))) |
| 7466 | (build-system pyproject-build-system) |
| 7467 | (arguments (list #:test-backend #~'nose2)) |
| 7468 | (native-inputs |
| 7469 | (list python-nose2 |
| 7470 | python-setuptools)) |
| 7471 | (home-page "https://github.com/rbarrois/python-semanticversion") |
| 7472 | (synopsis "Semantic versioning module for Python") |
| 7473 | (description |
| 7474 | "The @code{semantic_version} class is a small library for handling |
| 7475 | @uref{https://semver.org/, semantic versioning} (@dfn{SemVer}) in Python. |
| 7476 | |
| 7477 | It can compare versions, generate a new version that represents a bump in one |
| 7478 | of the version levels, and check whether any given string is a proper semantic |
| 7479 | version identifier.") |
| 7480 | (license license:bsd-3))) |
| 7481 | |
| 7482 | (define-public python-serpent |
| 7483 | (package |
| 7484 | (name "python-serpent") |
| 7485 | (version "1.41") |
| 7486 | (source |
| 7487 | (origin |
| 7488 | (method git-fetch) |
| 7489 | (uri (git-reference |
| 7490 | (url "https://github.com/irmen/Serpent") |
| 7491 | (commit (string-append "serpent-" version)))) |
| 7492 | (file-name (git-file-name name version)) |
| 7493 | (sha256 |
| 7494 | (base32 "081bm13pdxp3rxis24j2mjka06fzi4kap51wmnf21q69fsikbza8")))) |
| 7495 | (build-system pyproject-build-system) |
| 7496 | (arguments (list #:test-backend #~'unittest |
| 7497 | #:test-flags #~(list "discover" "-s" "tests"))) |
| 7498 | (native-inputs |
| 7499 | (list python-attrs python-pytz python-setuptools)) |
| 7500 | (home-page "https://github.com/irmen/Serpent") |
| 7501 | (synopsis "Serializer for literal Python expressions") |
| 7502 | (description |
| 7503 | "Serpent provides @code{ast.literal_eval()}-compatible object tree |
| 7504 | serialization. It serializes an object tree into bytes (an utf-8 encoded |
| 7505 | string) that can be decoded and then passed as-is to @code{ast.literal_eval()} |
| 7506 | to rebuild the original object tree. |
| 7507 | |
| 7508 | Because only safe literals are encoded, it is safe to send serpent data to |
| 7509 | other machines, such as over the network.") |
| 7510 | (license license:expat))) |
| 7511 | |
| 7512 | (define-public python-setuptools-declarative-requirements |
| 7513 | (package |
| 7514 | (name "python-setuptools-declarative-requirements") |
| 7515 | (version "1.3.0") |
| 7516 | (source |
| 7517 | (origin |
| 7518 | (method url-fetch) |
| 7519 | (uri (pypi-uri "setuptools-declarative-requirements" version)) |
| 7520 | (sha256 |
| 7521 | (base32 "1xwqp37ii9kql49agmkipawjbndwxg6y8sxax1wc4l6kkaxvk9ap")))) |
| 7522 | (build-system pyproject-build-system) |
| 7523 | (arguments |
| 7524 | (list #:tests? #f)) ;require dated inputs |
| 7525 | (native-inputs |
| 7526 | (list python-setuptools-scm)) |
| 7527 | (propagated-inputs |
| 7528 | (list python-setuptools)) |
| 7529 | (home-page "https://github.com/s0undt3ch/setuptools-declarative-requirements") |
| 7530 | (synopsis "File support for setuptools declarative setup.cfg") |
| 7531 | (description |
| 7532 | "This package provides file support for setuptools declarative |
| 7533 | @code{setup.cfg}.") |
| 7534 | (license license:asl2.0))) |
| 7535 | |
| 7536 | (define-public python-humanfriendly |
| 7537 | (package |
| 7538 | (name "python-humanfriendly") |
| 7539 | (version "10.0") |
| 7540 | (source |
| 7541 | (origin |
| 7542 | (method git-fetch) |
| 7543 | (uri (git-reference |
| 7544 | (url "https://github.com/xolox/python-humanfriendly") |
| 7545 | (commit version))) |
| 7546 | (file-name (git-file-name name version)) |
| 7547 | (sha256 |
| 7548 | (base32 "07di334y2xbyl9bd2c9q55sm0llmvz80a4p7frlkvq2w6l2d47bv")))) |
| 7549 | (build-system pyproject-build-system) |
| 7550 | (arguments |
| 7551 | (list |
| 7552 | ;XXX: Tests depend on coloredlogs, which in turn depends on humanfriendly. |
| 7553 | #:tests? #f)) |
| 7554 | (native-inputs (list python-setuptools)) |
| 7555 | (home-page "https://humanfriendly.readthedocs.io") |
| 7556 | (synopsis "Human-friendly input and output in Python") |
| 7557 | (description |
| 7558 | "The functions and classes in @code{humanfriendly} can be used to make |
| 7559 | text interfaces more user-friendly. It includes tools to parse and format |
| 7560 | numbers, file sizes, and timespans, timers for long-running operations, menus |
| 7561 | to allow the user to choose from a list of options, and terminal interaction |
| 7562 | helpers.") |
| 7563 | (license license:expat))) |
| 7564 | |
| 7565 | (define-public python-calver |
| 7566 | (package |
| 7567 | (name "python-calver") |
| 7568 | (version "2022.06.26") |
| 7569 | (source |
| 7570 | (origin |
| 7571 | (method git-fetch) |
| 7572 | (uri (git-reference |
| 7573 | (url "https://github.com/di/calver") |
| 7574 | (commit version))) |
| 7575 | (file-name (git-file-name name version)) |
| 7576 | (sha256 |
| 7577 | (base32 "14l9kv9igcmp5k6d2ahnx6z4dn6zy5kykz95hkh0rkqswn8x79b1")))) |
| 7578 | (build-system pyproject-build-system) |
| 7579 | (native-inputs |
| 7580 | (list python-pretend |
| 7581 | python-pytest |
| 7582 | python-setuptools |
| 7583 | python-wheel)) |
| 7584 | (home-page "https://github.com/di/calver") |
| 7585 | (synopsis "Setuptools extension for CalVer package versions") |
| 7586 | (description |
| 7587 | "The calver package is a setuptools extension for automatically defining |
| 7588 | your Python package version as a calendar version.") |
| 7589 | (license license:asl2.0))) |
| 7590 | |
| 7591 | (define-public python-can |
| 7592 | (package |
| 7593 | (name "python-can") |
| 7594 | (version "4.6.1") |
| 7595 | (source |
| 7596 | (origin |
| 7597 | (method git-fetch) |
| 7598 | (uri (git-reference |
| 7599 | (url "https://github.com/hardbyte/python-can") |
| 7600 | (commit (string-append "v" version)))) |
| 7601 | (file-name (git-file-name name version)) |
| 7602 | (sha256 |
| 7603 | (base32 "0i89hzc9n1h8i63wa333ahh5j1xqxq9v4ymcx7mcsg6ygji5wllr")))) |
| 7604 | (build-system pyproject-build-system) |
| 7605 | (arguments |
| 7606 | (list |
| 7607 | #:test-flags |
| 7608 | #~(list |
| 7609 | ;; TODO: Check if it could be packed: |
| 7610 | ;; https://github.com/projectgus/python-canalystii |
| 7611 | ;; |
| 7612 | ;; Disable tests which require specific CAN drivers we have no |
| 7613 | ;; package for in Guix. |
| 7614 | "--ignore=test/test_interface_canalystii.py" |
| 7615 | ;; These tests fail with "OSError: [Errno 19] No such device". |
| 7616 | "-k" "not BasicTestUdpMulticastBusIPv") |
| 7617 | #:phases |
| 7618 | #~(modify-phases %standard-phases |
| 7619 | (add-after 'unpack 'relax-requirements |
| 7620 | (lambda _ |
| 7621 | (substitute* "pyproject.toml" |
| 7622 | (("\"wrapt~=.*\"") |
| 7623 | "\"wrapt\""))))))) |
| 7624 | (propagated-inputs (list python-packaging python-wrapt)) |
| 7625 | (native-inputs |
| 7626 | (list ;; python-canalystii ; Not packed yet |
| 7627 | python-hypothesis |
| 7628 | python-mock |
| 7629 | python-parameterized |
| 7630 | python-pyserial |
| 7631 | python-pytest |
| 7632 | python-pytest-timeout |
| 7633 | python-setuptools |
| 7634 | python-setuptools-scm)) |
| 7635 | (home-page "https://github.com/hardbyte/python-can") |
| 7636 | (synopsis "Controller Area Network (CAN) interface module for Python") |
| 7637 | (description |
| 7638 | "This package defines the @code{can} module, which provides controller |
| 7639 | area network (CAN) support for Python developers; providing common |
| 7640 | abstractions to different hardware devices, and a suite of utilities for |
| 7641 | sending and receiving messages on a CAN bus.") |
| 7642 | (license license:lgpl3+))) |
| 7643 | |
| 7644 | (define-public python-canmatrix |
| 7645 | (package |
| 7646 | (name "python-canmatrix") |
| 7647 | (version "1.2") |
| 7648 | (source |
| 7649 | (origin |
| 7650 | (method git-fetch) ; no tests data in PyPi package |
| 7651 | (uri (git-reference |
| 7652 | (url "https://github.com/ebroecker/canmatrix") |
| 7653 | (commit version))) |
| 7654 | (file-name (git-file-name name version)) |
| 7655 | (sha256 |
| 7656 | (base32 "05l0hi279y1dc8ifm2223lpn7z9dx2h7kk599bkymvasb2qa1xrx")))) |
| 7657 | (build-system pyproject-build-system) |
| 7658 | (native-inputs |
| 7659 | (list python-pytest |
| 7660 | python-pytest-timeout |
| 7661 | python-setuptools |
| 7662 | python-wheel)) |
| 7663 | (propagated-inputs |
| 7664 | (list python-attrs |
| 7665 | python-canopen |
| 7666 | python-click |
| 7667 | ;; python-ldfparser |
| 7668 | python-lxml |
| 7669 | python-openpyxl |
| 7670 | python-pyyaml |
| 7671 | python-xlrd |
| 7672 | python-xlwt)) |
| 7673 | (home-page "https://github.com/ebroecker/canmatrix") |
| 7674 | (synopsis "@acronym{CAN, Controller Area Network} matrices in Python") |
| 7675 | (description |
| 7676 | "This package implements a @acronym{CAN, Controller Area Network} matrix |
| 7677 | object in Python which describes the CAN-communication and its needed objects |
| 7678 | such as board units, frames, signals, and values. It also includes two |
| 7679 | command-line tools (@command{canconvert} and @command{cancompare}) for |
| 7680 | converting and comparing CAN databases.") |
| 7681 | (license license:bsd-2))) |
| 7682 | |
| 7683 | (define-public python-canopen |
| 7684 | (package |
| 7685 | (name "python-canopen") |
| 7686 | (version "2.4.1") |
| 7687 | (source |
| 7688 | (origin |
| 7689 | (method git-fetch) |
| 7690 | (uri (git-reference |
| 7691 | (url "https://github.com/canopen-python/canopen") |
| 7692 | (commit (string-append "v" version)))) |
| 7693 | (file-name (git-file-name name version)) |
| 7694 | (sha256 |
| 7695 | (base32 "0vw6si83m4329p0k0q4b54gn1pindfzkmx6wxqy03bixd94bxw5y")))) |
| 7696 | (build-system pyproject-build-system) |
| 7697 | (native-inputs (list python-pytest python-setuptools)) |
| 7698 | (propagated-inputs (list python-can)) |
| 7699 | (home-page "https://github.com/canopen-python/canopen") |
| 7700 | (synopsis "CANopen stack implementation") |
| 7701 | (description |
| 7702 | "This package provides a Python implementation of the |
| 7703 | @uref{https://www.can-cia.org/canopen/,CANopen standard} for |
| 7704 | @acronym{CANs, controller-area networks}. The aim of the project is to |
| 7705 | support the most common parts of the CiA 301 standard in a simple |
| 7706 | Pythonic interface. It is mainly targeted for testing and automation |
| 7707 | tasks rather than a standard compliant master implementation.") |
| 7708 | (license license:expat))) |
| 7709 | |
| 7710 | (define-public python-diskcache |
| 7711 | (package |
| 7712 | (name "python-diskcache") |
| 7713 | ;; 5.6.3 (2023-08-31), the latest commit has some comparability with |
| 7714 | ;; Django fixing failing tests. |
| 7715 | (properties '((commit . "ebfa37cd99d7ef716ec452ad8af4b4276a8e2233") |
| 7716 | (revision . "0"))) |
| 7717 | (version (git-version "5.6.3" |
| 7718 | (assoc-ref properties 'revision) |
| 7719 | (assoc-ref properties 'commit))) |
| 7720 | (source |
| 7721 | (origin |
| 7722 | (method git-fetch) |
| 7723 | (uri (git-reference |
| 7724 | (url "https://github.com/grantjenks/python-diskcache") |
| 7725 | (commit (assoc-ref properties 'commit)))) |
| 7726 | (file-name (git-file-name name version)) |
| 7727 | (sha256 |
| 7728 | (base32 "0i669n76hi8c4p6fl9hkm40gpi817bn27kxnfhcrsd60ynfgbrbc")))) |
| 7729 | (build-system pyproject-build-system) |
| 7730 | (arguments |
| 7731 | (list |
| 7732 | #:phases |
| 7733 | #~(modify-phases %standard-phases |
| 7734 | (add-after 'unpack 'fix-pytest-config |
| 7735 | (lambda _ |
| 7736 | ;; Prevent full threads utilization. |
| 7737 | (substitute* "tox.ini" |
| 7738 | (("-n auto") ""))))))) |
| 7739 | (native-inputs |
| 7740 | (list python-django |
| 7741 | python-pytest |
| 7742 | python-setuptools)) |
| 7743 | (home-page "https://www.grantjenks.com/docs/diskcache/") |
| 7744 | (synopsis "Disk and file backed cache library") |
| 7745 | (description "DiskCache is a disk and file backed persistent cache.") |
| 7746 | (license license:asl2.0))) |
| 7747 | |
| 7748 | (define-public python-optparse-pretty |
| 7749 | (package |
| 7750 | (name "python-optparse-pretty") |
| 7751 | (version "0.1.1") |
| 7752 | (source |
| 7753 | (origin |
| 7754 | (method url-fetch) |
| 7755 | (uri (pypi-uri "optparse-pretty" version)) |
| 7756 | (sha256 |
| 7757 | (base32 "1920wbh2b7a8qn7zx2iiqbcdaax335l81a73x9pp8h11yzs2jdmh")))) |
| 7758 | (build-system pyproject-build-system) |
| 7759 | (arguments (list #:tests? #false)) ;There are none |
| 7760 | (native-inputs (list python-setuptools python-wheel)) |
| 7761 | (home-page "https://github.com/gvalkov/optparse-pretty") |
| 7762 | (synopsis "Compact help formatter for optparse") |
| 7763 | (description |
| 7764 | "This module provides two help formatters for optparse. They provide |
| 7765 | terser and more customizable option formatting in comparison to the default |
| 7766 | help formatter.") |
| 7767 | (license license:bsd-3))) |
| 7768 | |
| 7769 | (define-public python-orjson |
| 7770 | (package |
| 7771 | (name "python-orjson") |
| 7772 | (version "3.9.7") |
| 7773 | (source (origin |
| 7774 | (method url-fetch) |
| 7775 | (uri (pypi-uri "orjson" version)) |
| 7776 | (sha256 |
| 7777 | (base32 |
| 7778 | "0hh1j7akxgx1nvsnwx1p4f4h4pkgr7v9aqr99l2pwbwfyyc93qw5")))) |
| 7779 | (build-system cargo-build-system) |
| 7780 | (arguments |
| 7781 | (list |
| 7782 | #:imported-modules `(,@%cargo-build-system-modules |
| 7783 | ,@%pyproject-build-system-modules) |
| 7784 | #:modules '((guix build cargo-build-system) |
| 7785 | ((guix build pyproject-build-system) #:prefix py:) |
| 7786 | (guix build utils)) |
| 7787 | #:phases |
| 7788 | #~(modify-phases %standard-phases |
| 7789 | (add-after 'build 'build-python-module |
| 7790 | (assoc-ref py:%standard-phases 'build)) |
| 7791 | (add-after 'build-python-module 'install-python-module |
| 7792 | (assoc-ref py:%standard-phases 'install))) |
| 7793 | #:install-source? #false)) |
| 7794 | (inputs |
| 7795 | (cons maturin (cargo-inputs 'python-orjson))) |
| 7796 | (native-inputs |
| 7797 | (list python-wrapper)) |
| 7798 | (home-page "https://github.com/ijl/orjson") |
| 7799 | (synopsis "Python JSON library supporting dataclasses, datetimes, and numpy") |
| 7800 | (description "Orjson is a fast, correct JSON library for Python. It |
| 7801 | benchmarks as the fastest Python library for JSON and is more correct than the |
| 7802 | standard @code{json} library or other third-party libraries. It serializes |
| 7803 | dataclass, datetime, numpy, and UUID instances natively.") |
| 7804 | ;; Either of these licenses |
| 7805 | (license (list license:asl2.0 license:expat)))) |
| 7806 | |
| 7807 | (define-public python-overrides |
| 7808 | (package |
| 7809 | (name "python-overrides") |
| 7810 | (version "7.7.0") |
| 7811 | (source |
| 7812 | (origin |
| 7813 | (method url-fetch) |
| 7814 | (uri (pypi-uri "overrides" version)) |
| 7815 | (sha256 |
| 7816 | (base32 "02l2j5pnsxn0q5i63is5g6i3q06ri83nf7lv55swr61vv6iqy5am")))) |
| 7817 | (build-system pyproject-build-system) |
| 7818 | (native-inputs (list python-pytest python-setuptools python-wheel)) |
| 7819 | (home-page "https://github.com/mkorpela/overrides") |
| 7820 | (synopsis "Decorator to detect mismatch when overriding a method") |
| 7821 | (description |
| 7822 | "This package provides a decorator to automatically detect mismatch when |
| 7823 | overriding a method.") |
| 7824 | (license license:asl2.0))) |
| 7825 | |
| 7826 | (define-public python-argparse-addons |
| 7827 | (package |
| 7828 | (name "python-argparse-addons") |
| 7829 | (version "0.12.0") |
| 7830 | (source |
| 7831 | (origin |
| 7832 | (method url-fetch) |
| 7833 | (uri (pypi-uri "argparse_addons" version)) |
| 7834 | (sha256 |
| 7835 | (base32 "1bv0nh8147bhjrjdr0m2fnmhxnl6bdni68wd61v7x206szfa08k3")))) |
| 7836 | (build-system pyproject-build-system) |
| 7837 | (native-inputs |
| 7838 | (list python-pytest python-setuptools)) |
| 7839 | (home-page "https://github.com/eerimoq/argparse_addons") |
| 7840 | (synopsis "Extensions for Python's @code{argparse} library") |
| 7841 | (description "This Python library provides additional types and actions |
| 7842 | for the standard @code{argparse} library.") |
| 7843 | (license license:expat))) |
| 7844 | |
| 7845 | (define-public python-bitstruct |
| 7846 | (package |
| 7847 | (name "python-bitstruct") |
| 7848 | (version "8.21.0") |
| 7849 | (source |
| 7850 | (origin |
| 7851 | (method url-fetch) |
| 7852 | (uri (pypi-uri "bitstruct" version)) |
| 7853 | (sha256 |
| 7854 | (base32 "1b2836hjc2bvnbjngfk9n0995zm3lz65apq7irlgijj5iabf82zz")))) |
| 7855 | (build-system pyproject-build-system) |
| 7856 | (native-inputs |
| 7857 | (list python-pytest |
| 7858 | python-setuptools |
| 7859 | python-wheel)) |
| 7860 | (home-page "https://github.com/eerimoq/bitstruct") |
| 7861 | (synopsis "Python values to and C bit field structs converter") |
| 7862 | (description |
| 7863 | "This module performs conversions between Python values and C bit field |
| 7864 | structs represented as Python byte strings. It is intended to have a similar |
| 7865 | interface as the @code{struct} module from Python, but working on bits instead |
| 7866 | of primitive data types like @code{char}, @code{int}, etc.") |
| 7867 | (license license:expat))) |
| 7868 | |
| 7869 | (define-public python-cantools |
| 7870 | (package |
| 7871 | (name "python-cantools") |
| 7872 | (version "40.5.0") |
| 7873 | (source |
| 7874 | (origin |
| 7875 | (method git-fetch) |
| 7876 | (uri (git-reference |
| 7877 | (url "https://github.com/eerimoq/cantools") |
| 7878 | (commit version))) |
| 7879 | (file-name (git-file-name name version)) |
| 7880 | (sha256 |
| 7881 | (base32 "0ldqdsvkvy7vmplyiqcfqqwbh8v88ha98hgdrnlm09g4qbylh5d4")))) |
| 7882 | (build-system pyproject-build-system) |
| 7883 | (native-inputs |
| 7884 | (list python-freezegun |
| 7885 | python-parameterized |
| 7886 | python-pytest |
| 7887 | python-setuptools |
| 7888 | python-setuptools-scm)) |
| 7889 | (propagated-inputs |
| 7890 | (list python-argparse-addons |
| 7891 | python-bitstruct |
| 7892 | python-can |
| 7893 | python-crccheck |
| 7894 | python-diskcache |
| 7895 | python-matplotlib |
| 7896 | python-textparser)) |
| 7897 | (home-page "https://github.com/eerimoq/cantools") |
| 7898 | (synopsis "Tools for the Controller Area Network (CAN) bus protocol") |
| 7899 | (description |
| 7900 | "This package includes Controller Area Network (CAN) related tools that |
| 7901 | can be used to: |
| 7902 | @itemize |
| 7903 | @item parse DBC, KCD, SYM, ARXML 4 and CDD files |
| 7904 | @item encode and decode CAN messages |
| 7905 | @item multiplex simple and extended signals |
| 7906 | @item diagnose DID encoding and decoding |
| 7907 | @item dump the CAN decoder output |
| 7908 | @item test CAN nodes |
| 7909 | @item generate C source code |
| 7910 | @item monitor the CAN bus |
| 7911 | @end itemize") |
| 7912 | (license license:expat))) |
| 7913 | |
| 7914 | (define-public python-capturer |
| 7915 | (package |
| 7916 | (name "python-capturer") |
| 7917 | (version "3.0") |
| 7918 | (source |
| 7919 | (origin |
| 7920 | (method git-fetch) |
| 7921 | (uri (git-reference |
| 7922 | (url "https://github.com/xolox/python-capturer") |
| 7923 | (commit version))) |
| 7924 | (file-name (git-file-name name version)) |
| 7925 | (sha256 |
| 7926 | (base32 "0fwrxa049gzin5dck7fvwhdp1856jrn0d7mcjcjsd7ndqvhgvjj1")))) |
| 7927 | (build-system pyproject-build-system) |
| 7928 | (native-inputs (list python-pytest python-setuptools)) |
| 7929 | (propagated-inputs (list python-humanfriendly)) |
| 7930 | (home-page "https://capturer.readthedocs.io") |
| 7931 | (synopsis "Capture stdout and stderr streams of the current process") |
| 7932 | (description |
| 7933 | "The capturer package makes it easy to capture the stdout and stderr |
| 7934 | streams of the current process and subprocesses. Output can be relayed |
| 7935 | to the terminal in real time but is also available to the Python program |
| 7936 | for additional processing.") |
| 7937 | (license license:expat))) |
| 7938 | |
| 7939 | (define-public python-fastprogress |
| 7940 | (package |
| 7941 | (name "python-fastprogress") |
| 7942 | (version "1.0.3") |
| 7943 | (source (origin |
| 7944 | (method git-fetch) |
| 7945 | (uri (git-reference |
| 7946 | (url "https://github.com/fastai/fastprogress") |
| 7947 | (commit version))) |
| 7948 | (file-name (git-file-name name version)) |
| 7949 | (sha256 |
| 7950 | (base32 |
| 7951 | "01h8f786wgmmd3fj98wk1n5id67nsp19gs8bbgims04aciwhvj21")))) |
| 7952 | (build-system pyproject-build-system) |
| 7953 | (arguments |
| 7954 | (list #:tests? #f ;there are no tests |
| 7955 | #:phases #~(modify-phases %standard-phases |
| 7956 | ;; XXX: Fails with: "In procedure utime: No such file |
| 7957 | ;; or directory". |
| 7958 | (delete 'ensure-no-mtimes-pre-1980)))) |
| 7959 | (native-inputs (list python-setuptools python-wheel)) |
| 7960 | (home-page "https://github.com/fastai/fastprogress") |
| 7961 | (synopsis "Progress bar for Jupyter Notebook and console") |
| 7962 | (description |
| 7963 | "Fastprogress is a progress bar for Jupyter Notebook and console.") |
| 7964 | (license license:asl2.0))) |
| 7965 | |
| 7966 | (define-public python-coloredlogs |
| 7967 | (package |
| 7968 | (name "python-coloredlogs") |
| 7969 | (version "15.0.1") |
| 7970 | (source |
| 7971 | (origin |
| 7972 | (method git-fetch) |
| 7973 | (uri (git-reference |
| 7974 | (url "https://github.com/xolox/python-coloredlogs") |
| 7975 | (commit version))) |
| 7976 | (file-name (git-file-name name version)) |
| 7977 | (sha256 |
| 7978 | (base32 "1c83h3cvd2qww2m9myxrnqh0lr9fllx8zfb26f64lcvwd3cli1sf")))) |
| 7979 | (build-system pyproject-build-system) |
| 7980 | (arguments |
| 7981 | (list |
| 7982 | #:test-flags |
| 7983 | #~(list "-k" |
| 7984 | (string-join |
| 7985 | (list "not test_auto_install" ; Unclear why this fails. |
| 7986 | ;; XXX: Require a "script" executable. |
| 7987 | "test_cli_conversion" |
| 7988 | "test_empty_conversion" |
| 7989 | "test_output_interception") |
| 7990 | " and not ")))) |
| 7991 | (native-inputs (list python-pytest python-setuptools python-verboselogs)) |
| 7992 | (propagated-inputs (list python-capturer)) |
| 7993 | (home-page "https://coloredlogs.readthedocs.io") |
| 7994 | (synopsis "Colored stream handler for Python's logging module") |
| 7995 | (description |
| 7996 | "The @code{coloredlogs} package enables colored terminal output for |
| 7997 | Python's logging module. The @code{ColoredFormatter} class inherits from |
| 7998 | @code{logging.Formatter} and uses ANSI escape sequences to render your logging |
| 7999 | messages in color.") |
| 8000 | (license license:expat))) |
| 8001 | |
| 8002 | (define-public python-editorconfig |
| 8003 | (package |
| 8004 | (name "python-editorconfig") |
| 8005 | (version "0.17.1") |
| 8006 | (source |
| 8007 | (origin |
| 8008 | (method git-fetch) |
| 8009 | (uri (git-reference |
| 8010 | (url "https://github.com/editorconfig/editorconfig-core-py") |
| 8011 | (commit (string-append "v" version)) |
| 8012 | (recursive? #t))) |
| 8013 | (file-name (git-file-name name version)) |
| 8014 | (sha256 |
| 8015 | (base32 "107lh5pds1iwgb2q1da2k7g5vs6w0rk84679k6yi8a01agc1c0fz")))) |
| 8016 | (build-system pyproject-build-system) |
| 8017 | (arguments |
| 8018 | (list |
| 8019 | #:phases |
| 8020 | #~(modify-phases %standard-phases |
| 8021 | (replace 'check |
| 8022 | (lambda _ |
| 8023 | (setenv "PYTHONPATH" (getenv "GUIX_PYTHONPATH")) |
| 8024 | (invoke "cmake" ".") |
| 8025 | (invoke "ctest" ".")))))) |
| 8026 | (native-inputs (list cmake python-setuptools python-wheel)) |
| 8027 | (home-page "https://editorconfig.org/") |
| 8028 | (synopsis "EditorConfig bindings for python") |
| 8029 | (description "The EditorConfig project consists of a file format for |
| 8030 | defining coding styles and a collection of text editor plugins that enable |
| 8031 | editors to read the file format and adhere to defined styles. EditorConfig |
| 8032 | files are easily readable and they work nicely with version control systems.") |
| 8033 | ;; "fnmatch.py" and "ini.py" are licensed under psfl, the rest is bsd-2. |
| 8034 | (license (list license:bsd-2 license:psfl)))) |
| 8035 | |
| 8036 | (define-public dosage |
| 8037 | (package |
| 8038 | (name "dosage") |
| 8039 | (version "3.3") |
| 8040 | (source |
| 8041 | (origin |
| 8042 | (method git-fetch) |
| 8043 | (uri (git-reference |
| 8044 | (url "https://github.com/webcomics/dosage") |
| 8045 | (commit version))) |
| 8046 | (file-name (git-file-name name version)) |
| 8047 | (sha256 |
| 8048 | (base32 "1111hs9f9k0w303vgidlxdngbfp71x6fnc5lfb62jc5kw2sgfn6z")))) |
| 8049 | (build-system pyproject-build-system) |
| 8050 | (arguments |
| 8051 | ;; It requires additional modules for integration tests. |
| 8052 | (list #:test-flags #~(list "--ignore=tests/modules/"))) |
| 8053 | (native-inputs |
| 8054 | (list python-pytest |
| 8055 | python-responses |
| 8056 | python-setuptools |
| 8057 | python-setuptools-scm)) |
| 8058 | (inputs |
| 8059 | (list python-imagesize |
| 8060 | python-importlib-resources |
| 8061 | python-lxml |
| 8062 | python-platformdirs |
| 8063 | python-requests |
| 8064 | python-rich)) |
| 8065 | (home-page "https://github.com/webcomics/dosage") |
| 8066 | (synopsis "Comic strip downloader and archiver") |
| 8067 | (description |
| 8068 | "Dosage is designed to keep a local copy of specific webcomics and other |
| 8069 | picture-based content such as Picture of the Day sites. With the |
| 8070 | @command{dosage} command-line script you can get the latest strip of a |
| 8071 | webcomic, catch-up to the last strip downloaded, or download a strip for a |
| 8072 | particular date or index, if possible.") |
| 8073 | (license license:expat))) |
| 8074 | |
| 8075 | (define-public python-etcd3 |
| 8076 | (package |
| 8077 | (name "python-etcd3") |
| 8078 | (version "0.12.0") |
| 8079 | (source |
| 8080 | (origin |
| 8081 | (method git-fetch) |
| 8082 | (uri (git-reference |
| 8083 | (url "https://github.com/kragniz/python-etcd3") |
| 8084 | (commit (string-append "v" version)))) |
| 8085 | (file-name (git-file-name name version)) |
| 8086 | (sha256 |
| 8087 | (base32 "06hw0kcl77v8px5w2hfnf2l9gjnjrspjb49kx3jqa382z7wzdkk0")))) |
| 8088 | (build-system pyproject-build-system) |
| 8089 | (arguments |
| 8090 | (list |
| 8091 | ;; XXX: Tests require the etcd package. |
| 8092 | #:tests? #f |
| 8093 | #:test-backend #~'custom |
| 8094 | #:test-flags ; Taken from tox.ini. |
| 8095 | #~(list "pifpaf" "-e" "python" "run" "etcd" "--cluster" "--" "pytest"))) |
| 8096 | (propagated-inputs |
| 8097 | (list python-grpcio python-protobuf python-six python-tenacity)) |
| 8098 | (native-inputs |
| 8099 | (list python-mock python-pifpaf python-pytest python-setuptools)) |
| 8100 | (home-page "https://github.com/kragniz/python-etcd3") |
| 8101 | (synopsis "Python client for the etcd3 API") |
| 8102 | (description |
| 8103 | "This package provide a Python client for the @code{etcd3} API.") |
| 8104 | (license license:asl2.0))) |
| 8105 | |
| 8106 | (define-public python-et-xmlfile |
| 8107 | (package |
| 8108 | (name "python-et-xmlfile") |
| 8109 | (version "2.0.0") |
| 8110 | (source |
| 8111 | (origin |
| 8112 | ;; Use a checkout because the PyPI archive does not contain tests. |
| 8113 | (method hg-fetch) |
| 8114 | (uri (hg-reference |
| 8115 | (url "https://foss.heptapod.net/openpyxl/et_xmlfile") |
| 8116 | (changeset version))) |
| 8117 | (file-name (string-append name "-" version "-checkout")) |
| 8118 | (sha256 |
| 8119 | (base32 "03pmmg6k2ajd83zhki8f0c1ndi7pq23bj9hm6f8hhd07maqksf5w")))) |
| 8120 | (build-system pyproject-build-system) |
| 8121 | (native-inputs |
| 8122 | (list python-pytest |
| 8123 | python-lxml |
| 8124 | python-setuptools)) |
| 8125 | (home-page "https://bitbucket.org/openpyxl/et_xmlfile") |
| 8126 | (synopsis "Low memory implementation of @code{lxml.xmlfile}") |
| 8127 | (description "This Python library is based upon the @code{xmlfile} module |
| 8128 | from @code{lxml}. It aims to provide a low memory, compatible implementation |
| 8129 | of @code{xmlfile}.") |
| 8130 | (license license:expat))) |
| 8131 | |
| 8132 | (define-public python-omero-py |
| 8133 | (let ((omero-blitz-version "5.8.2")) |
| 8134 | (package |
| 8135 | (name "python-omero-py") |
| 8136 | (version "5.20.0") |
| 8137 | (source |
| 8138 | (origin |
| 8139 | (method git-fetch) |
| 8140 | (uri (git-reference |
| 8141 | (url "https://github.com/ome/omero-py") |
| 8142 | (commit (string-append "v" version)))) |
| 8143 | (file-name (git-file-name name version)) |
| 8144 | (sha256 |
| 8145 | (base32 "02zsw1p35n6lkqh410qpgw7c4467dkbg0hxly3gjqrwdh349j47g")))) |
| 8146 | (build-system pyproject-build-system) |
| 8147 | (arguments |
| 8148 | (list |
| 8149 | #:test-flags |
| 8150 | #~(list |
| 8151 | "-m" "not broken" "-rf" "test" "-s" |
| 8152 | ;; TestImport tries to download Java things; TestSessions |
| 8153 | ;; and TestBuildQuery require networking. |
| 8154 | "-k" "not TestImport and not TestSessions and not TestBuildQuery") |
| 8155 | #:modules '((guix build pyproject-build-system) |
| 8156 | (guix build utils) |
| 8157 | (ice-9 match) |
| 8158 | (srfi srfi-1) |
| 8159 | (srfi srfi-26)) |
| 8160 | #:phases |
| 8161 | #~(modify-phases %standard-phases |
| 8162 | (add-after 'unpack 'find-artifacts |
| 8163 | (lambda* (#:key inputs #:allow-other-keys) |
| 8164 | (let ((zip-file |
| 8165 | (match inputs |
| 8166 | (((labels . files) ...) |
| 8167 | (find (cut string-suffix? |
| 8168 | (string-append "omero-blitz-" |
| 8169 | #$omero-blitz-version |
| 8170 | "-python.zip") |
| 8171 | <>) |
| 8172 | files))))) |
| 8173 | (setenv "ZIP_FILE" |
| 8174 | (or zip-file (error "failed to find artifact file")))))) |
| 8175 | ;; Some tests need this, such as TestTempFileManager |
| 8176 | (add-after 'build 'set-HOME |
| 8177 | (lambda _ (setenv "HOME" "/tmp"))) |
| 8178 | ;; The sanity check mistakes omero_model_TypeAnnotationI.py for a |
| 8179 | ;; module to load. |
| 8180 | (delete 'sanity-check) |
| 8181 | ;; The argument parser is picky and interprets the "-real" part as |
| 8182 | ;; the first argument. |
| 8183 | (add-after 'wrap 'rename-executable |
| 8184 | (lambda _ |
| 8185 | (with-directory-excursion (string-append #$output "/bin") |
| 8186 | (rename-file ".omero-real" ".omero") |
| 8187 | (substitute* "omero" |
| 8188 | (("bin/.omero-real") "bin/.omero")))))))) |
| 8189 | (propagated-inputs |
| 8190 | (list python-appdirs |
| 8191 | python-future |
| 8192 | python-numpy |
| 8193 | python-pillow |
| 8194 | python-pyyaml |
| 8195 | python-requests |
| 8196 | python-tables |
| 8197 | python-zeroc-ice-3.6)) |
| 8198 | (native-inputs |
| 8199 | (list python-portalocker |
| 8200 | python-pytest |
| 8201 | python-pytest-mock |
| 8202 | python-pytest-rerunfailures |
| 8203 | python-pytest-xdist |
| 8204 | python-setuptools |
| 8205 | python-wheel |
| 8206 | unzip |
| 8207 | (origin |
| 8208 | (method url-fetch) |
| 8209 | (uri (format #f "\ |
| 8210 | https://artifacts.openmicroscopy.org/artifactory/ome.releases/org/\ |
| 8211 | openmicroscopy/omero-blitz/~a/omero-blitz-~a-python.zip" |
| 8212 | omero-blitz-version |
| 8213 | omero-blitz-version)) |
| 8214 | (sha256 |
| 8215 | (base32 "1nb17xmx6n7i5vkcw661iq42yfgc3i0gmhz3x8iwcrhp8pajzm3l"))))) |
| 8216 | (home-page "https://github.com/ome/omero-py") |
| 8217 | (synopsis "Python bindings to the OMERO.blitz server") |
| 8218 | (description "This package provides Python bindings to the OMERO.blitz |
| 8219 | server.") |
| 8220 | (license license:gpl2)))) |
| 8221 | |
| 8222 | (define-public python-openpyxl |
| 8223 | (package |
| 8224 | (name "python-openpyxl") |
| 8225 | (version "3.1.5") |
| 8226 | (source |
| 8227 | (origin |
| 8228 | (method hg-fetch) |
| 8229 | (uri (hg-reference |
| 8230 | (url "https://foss.heptapod.net/openpyxl/openpyxl") |
| 8231 | (changeset version))) |
| 8232 | (file-name (string-append name "-" version "-checkout")) |
| 8233 | (sha256 |
| 8234 | (base32 "17z6rrvv3q1axy9r13c2hln2pazfn9n5bhkzrbjcjakgbfjl6mss")))) |
| 8235 | (build-system pyproject-build-system) |
| 8236 | (arguments |
| 8237 | (list |
| 8238 | ;; tests: 2577 passed, 17 skipped, 4 deselected, 7 xfailed |
| 8239 | #:test-flags |
| 8240 | #~(list (string-append "--deselect=openpyxl/xml/tests/" |
| 8241 | "test_functions.py::test_iterparse")))) |
| 8242 | (native-inputs |
| 8243 | (list python-lxml |
| 8244 | python-pillow |
| 8245 | python-pytest |
| 8246 | python-setuptools)) |
| 8247 | (propagated-inputs |
| 8248 | (list python-et-xmlfile)) |
| 8249 | (home-page "https://openpyxl.readthedocs.io") |
| 8250 | (synopsis "Python library to read/write Excel 2010 XLSX/XLSM files") |
| 8251 | (description |
| 8252 | "This Python library allows reading and writing to the Excel XLSX, XLSM, |
| 8253 | XLTX and XLTM file formats that are defined by the Office Open XML (OOXML) |
| 8254 | standard.") |
| 8255 | (license license:expat))) |
| 8256 | |
| 8257 | (define-public python-sinfo |
| 8258 | (package |
| 8259 | (name "python-sinfo") |
| 8260 | (version "1.0.1") |
| 8261 | (source |
| 8262 | (origin |
| 8263 | (method git-fetch) |
| 8264 | (uri (git-reference |
| 8265 | (url "https://gitlab.com/joelostblom/session_info") |
| 8266 | (commit (string-append "v" version)))) |
| 8267 | (file-name (git-file-name name version)) |
| 8268 | (sha256 |
| 8269 | (base32 "14rdr235gn1f9lcp1wnvxhjkbqy6jxs0k8qfkh074gfzhp6kh4w5")))) |
| 8270 | (build-system pyproject-build-system) |
| 8271 | (arguments |
| 8272 | (list #:tests? #f)) ; no tests in PyPI or Git |
| 8273 | (native-inputs |
| 8274 | (list python-setuptools)) |
| 8275 | (propagated-inputs |
| 8276 | (list python-stdlib-list)) |
| 8277 | (home-page "https://gitlab.com/joelostblom/session_info") |
| 8278 | (synopsis "Output module version information loaded in a Python session") |
| 8279 | (description "This package outputs version information for modules loaded |
| 8280 | in the current session, Python, and the OS.") |
| 8281 | (license license:bsd-3))) |
| 8282 | |
| 8283 | (define-public python-schedule |
| 8284 | (package |
| 8285 | (name "python-schedule") |
| 8286 | (version "1.2.2") |
| 8287 | (source |
| 8288 | (origin |
| 8289 | (method url-fetch) |
| 8290 | (uri (pypi-uri "schedule" version)) |
| 8291 | (sha256 |
| 8292 | (base32 |
| 8293 | "1dzhwpnpbvv90z6lavx4z7whh1a2y47cq69zgxibknazzrsrrzhm")))) |
| 8294 | (build-system pyproject-build-system) |
| 8295 | (native-inputs |
| 8296 | (list python-pytest python-setuptools python-wheel)) |
| 8297 | (home-page "https://github.com/dbader/schedule") |
| 8298 | (synopsis "Schedule periodic function calls in Python") |
| 8299 | (description |
| 8300 | "Schedule is an in-process scheduler for periodic jobs that uses the |
| 8301 | builder pattern for configuration. Schedule lets you run Python functions (or |
| 8302 | any other callable) periodically at pre-determined intervals using a simple, |
| 8303 | human-friendly syntax.") |
| 8304 | (license license:expat))) |
| 8305 | |
| 8306 | ;; XXX: This project is unmaintained since 2020, see: |
| 8307 | ;; <https://github.com/scour-project/scour/issues/321>. |
| 8308 | ;; |
| 8309 | ;; The only user is Inkscape, see: |
| 8310 | ;; <https://gitlab.com/inkscape/inkscape-docs/documentation/-/issues/43>. |
| 8311 | (define-public python-scour |
| 8312 | (package |
| 8313 | (name "python-scour") |
| 8314 | (version "0.38.2") |
| 8315 | (source |
| 8316 | (origin |
| 8317 | (method git-fetch) |
| 8318 | (uri |
| 8319 | (git-reference |
| 8320 | (url "https://gitlab.com/inkscape/extras/scour") |
| 8321 | (commit |
| 8322 | (string-append "v" version)))) |
| 8323 | (file-name (git-file-name name version)) |
| 8324 | (sha256 |
| 8325 | (base32 "0mmfvx4wqp8gkpv0kbih89zfs9njvmd3v4dxfqii62xddpxq0f1k")))) |
| 8326 | (build-system pyproject-build-system) |
| 8327 | (arguments |
| 8328 | (list #:test-backend #~'custom |
| 8329 | #:test-flags #~(list "test_scour.py"))) |
| 8330 | (native-inputs |
| 8331 | (list python-setuptools)) |
| 8332 | (propagated-inputs |
| 8333 | (list python-six)) |
| 8334 | (home-page "https://gitlab.com/inkscape/extras/scour") |
| 8335 | (synopsis "Scour is an SVG optimizer/cleaner written in Python") |
| 8336 | (description |
| 8337 | "The goal of Scour is to output a file that renders identically at a |
| 8338 | fraction of the size by removing a lot of redundant information created by |
| 8339 | most SVG editors. Optimization options are typically lossless but can be |
| 8340 | tweaked for more aggressive cleaning.") |
| 8341 | (license license:asl2.0))) |
| 8342 | |
| 8343 | (define-public python-mechanize |
| 8344 | (package |
| 8345 | (name "python-mechanize") |
| 8346 | (version "0.4.10") |
| 8347 | (source |
| 8348 | (origin |
| 8349 | (method url-fetch) |
| 8350 | (uri (pypi-uri "mechanize" version)) |
| 8351 | (sha256 |
| 8352 | (base32 "1pvxjnhqi6iq7nnjksnfvyzxcibbwfjc9fzp22v0msp7kdzr9shx")))) |
| 8353 | (build-system pyproject-build-system) |
| 8354 | (arguments |
| 8355 | ;; XXX: Unclear why tests are failing. |
| 8356 | (list #:tests? #f |
| 8357 | #:phases |
| 8358 | #~(modify-phases %standard-phases |
| 8359 | (add-before 'check 'configure-tests |
| 8360 | (lambda _ |
| 8361 | (setenv "GUIX_PYTHONPATH" |
| 8362 | (string-append (getcwd) "/test-tools:" |
| 8363 | (getenv "GUIX_PYTHONPATH")))))))) |
| 8364 | (native-inputs |
| 8365 | (list python-html5-parser |
| 8366 | python-html5lib |
| 8367 | python-lxml |
| 8368 | python-service-identity |
| 8369 | python-setuptools |
| 8370 | python-six |
| 8371 | python-twisted |
| 8372 | python-wheel)) |
| 8373 | (propagated-inputs |
| 8374 | (list python-html5lib)) |
| 8375 | (home-page "https://github.com/python-mechanize/mechanize") |
| 8376 | (synopsis |
| 8377 | "Stateful programmatic web browsing in Python") |
| 8378 | (description |
| 8379 | "Mechanize implements stateful programmatic web browsing in Python, |
| 8380 | after Andy Lester’s Perl module WWW::Mechanize.") |
| 8381 | (license license:bsd-3))) |
| 8382 | |
| 8383 | (define-public python-mediapy |
| 8384 | (package |
| 8385 | (name "python-mediapy") |
| 8386 | (version "1.2.6") |
| 8387 | (source |
| 8388 | (origin |
| 8389 | (method git-fetch) |
| 8390 | (uri (git-reference |
| 8391 | (url "https://github.com/google/mediapy") |
| 8392 | (commit (string-append "v" version)))) |
| 8393 | (file-name (git-file-name name version)) |
| 8394 | (sha256 |
| 8395 | (base32 "0gpbn1bqm6sp692fg7acs3l46xjr70frh3jv4cp3lbixfqmfb3lc")))) |
| 8396 | (build-system pyproject-build-system) |
| 8397 | (arguments |
| 8398 | (list |
| 8399 | #:phases |
| 8400 | '(modify-phases %standard-phases |
| 8401 | (add-after 'unpack 'fix-references |
| 8402 | (lambda _ |
| 8403 | (substitute* "mediapy_test.py" |
| 8404 | (("'/bin/bash") |
| 8405 | (string-append "'" (which "bash"))))))))) |
| 8406 | (inputs (list ffmpeg-6)) |
| 8407 | (propagated-inputs (list python-absl-py |
| 8408 | python-ipython |
| 8409 | python-matplotlib |
| 8410 | python-numpy |
| 8411 | python-pillow)) |
| 8412 | (native-inputs |
| 8413 | (list python-flit-core |
| 8414 | python-pytest |
| 8415 | python-pytest-xdist)) |
| 8416 | (home-page "https://github.com/google/mediapy") |
| 8417 | (synopsis "Read/write/show images and videos in an IPython notebook") |
| 8418 | (description "This Python library makes it easy to display images and |
| 8419 | videos in a notebook.") |
| 8420 | (license license:asl2.0))) |
| 8421 | |
| 8422 | (define-public python-simpleaudio |
| 8423 | (package |
| 8424 | (name "python-simpleaudio") |
| 8425 | (version "1.0.4") |
| 8426 | (source |
| 8427 | (origin |
| 8428 | (method git-fetch) |
| 8429 | (uri (git-reference |
| 8430 | (url "https://github.com/hamiltron/py-simple-audio") |
| 8431 | (commit version))) |
| 8432 | (file-name (git-file-name name version)) |
| 8433 | (sha256 |
| 8434 | (base32 "12nypzb1m14yip4zrbzin5jc5awyp1d5md5y40g5anj4phb4hx1i")))) |
| 8435 | (build-system pyproject-build-system) |
| 8436 | (arguments |
| 8437 | (list |
| 8438 | #:test-backend #~'unittest |
| 8439 | #:phases |
| 8440 | #~(modify-phases %standard-phases |
| 8441 | (add-before 'check 'fix-test-run |
| 8442 | (lambda _ |
| 8443 | (delete-file-recursively "simpleaudio")))))) |
| 8444 | (native-inputs (list python-setuptools)) |
| 8445 | (inputs (list alsa-lib)) |
| 8446 | (home-page "https://github.com/hamiltron/py-simple-audio") |
| 8447 | (synopsis "Simple, asynchronous audio playback for Python 3") |
| 8448 | (description |
| 8449 | "The @code{simplaudio} package provides cross-platform, dependency-free |
| 8450 | audio playback capability for Python 3 on OSX, Windows, and Linux.") |
| 8451 | (license license:expat))) ; MIT license |
| 8452 | |
| 8453 | (define-public python-jsonalias |
| 8454 | (package |
| 8455 | (name "python-jsonalias") |
| 8456 | (version "0.1.2") |
| 8457 | (source (origin |
| 8458 | (method url-fetch) |
| 8459 | (uri (pypi-uri "jsonalias" version)) |
| 8460 | (sha256 |
| 8461 | (base32 |
| 8462 | "0k5c2132hbd9wxnj8w05vvpi286l3g3ksw350m85rd0k9958g5z3")))) |
| 8463 | (build-system pyproject-build-system) |
| 8464 | (arguments |
| 8465 | (list #:tests? #f)) ; no tests in PyPI or Git |
| 8466 | (native-inputs |
| 8467 | (list python-poetry-core)) |
| 8468 | (home-page "https://github.com/kevinheavey/jsonalias/") |
| 8469 | (synopsis "JSON type alias for Python") |
| 8470 | (description |
| 8471 | "This package provides a microlibrary that defines a JSON type alias for |
| 8472 | Python.") |
| 8473 | (license license:expat))) |
| 8474 | |
| 8475 | (define-public python-jsonargparse |
| 8476 | (package |
| 8477 | (name "python-jsonargparse") |
| 8478 | (version "4.49.0") |
| 8479 | (source |
| 8480 | (origin |
| 8481 | (method git-fetch) |
| 8482 | (uri (git-reference |
| 8483 | (url "https://github.com/omni-us/jsonargparse/") |
| 8484 | (commit (string-append "v" version)))) |
| 8485 | (file-name (git-file-name name version)) |
| 8486 | (sha256 |
| 8487 | (base32 "15s7bdgjk3dpmr9202v4nr9826z8zq7vp77nvg4iwwq9nrm8brnn")))) |
| 8488 | (build-system pyproject-build-system) |
| 8489 | (propagated-inputs |
| 8490 | (list python-pyyaml)) |
| 8491 | (native-inputs |
| 8492 | (list python-attrs |
| 8493 | python-pydantic |
| 8494 | python-pytest |
| 8495 | python-requests |
| 8496 | python-responses |
| 8497 | python-setuptools |
| 8498 | python-types-pyyaml |
| 8499 | python-types-requests)) |
| 8500 | (home-page "https://github.com/omni-us/jsonargparse/") |
| 8501 | (synopsis "Implement minimal boilerplate CLIs derived from type hints") |
| 8502 | (description |
| 8503 | "This package lets you implement minimal boilerplate CLIs derived from |
| 8504 | type hints and parse from command line, config files and environment |
| 8505 | variables.") |
| 8506 | (license license:expat))) |
| 8507 | |
| 8508 | (define-public python-pymarshal |
| 8509 | (package |
| 8510 | (name "python-pymarshal") |
| 8511 | (version "2.2.3") |
| 8512 | (source (origin |
| 8513 | (method url-fetch) |
| 8514 | (uri (pypi-uri "pymarshal" version)) |
| 8515 | (sha256 |
| 8516 | (base32 |
| 8517 | "1lhb7yim60pvclbd440zd4n50xs1d2rvmnrhhvib3hyv0dxil5j3")))) |
| 8518 | (build-system pyproject-build-system) |
| 8519 | (arguments |
| 8520 | ;; Test fails with this error: |
| 8521 | ;; "CovReportWarning: Failed to generate report: No data to report." |
| 8522 | (list #:tests? #f)) |
| 8523 | (native-inputs |
| 8524 | (list python-pytest python-setuptools python-wheel)) |
| 8525 | (propagated-inputs (list python-bson python-pyyaml)) |
| 8526 | (home-page "https://gitlab.com/d3v-t00lz/pymarshal") |
| 8527 | (synopsis "Pythonic implementation of Golang struct (un)marshalling") |
| 8528 | (description "PyMarshal replicates the feature of (un)marshalling structs |
| 8529 | in Golang.") |
| 8530 | (license license:bsd-2))) |
| 8531 | |
| 8532 | (define-public python-simplejson |
| 8533 | (package |
| 8534 | (name "python-simplejson") |
| 8535 | (version "3.20.1") |
| 8536 | (source |
| 8537 | (origin |
| 8538 | (method url-fetch) |
| 8539 | (uri (pypi-uri "simplejson" version)) |
| 8540 | (sha256 |
| 8541 | (base32 |
| 8542 | "0z838dqnh5c81ib6cvfqfhd82ax2apzclzgz8b0j87sgxjs3jhg6")))) |
| 8543 | (build-system pyproject-build-system) |
| 8544 | (native-inputs |
| 8545 | (list python-pytest python-setuptools)) |
| 8546 | (home-page "https://simplejson.readthedocs.io/en/latest") |
| 8547 | (synopsis |
| 8548 | "Json library for Python") |
| 8549 | (description |
| 8550 | "JSON (JavaScript Object Notation) is a subset of JavaScript |
| 8551 | syntax (ECMA-262 3rd edition) used as a lightweight data interchange |
| 8552 | format. |
| 8553 | |
| 8554 | Simplejson exposes an API familiar to users of the standard library marshal |
| 8555 | and pickle modules. It is the externally maintained version of the json |
| 8556 | library contained in Python 2.6, but maintains compatibility with Python 2.5 |
| 8557 | and (currently) has significant performance advantages, even without using |
| 8558 | the optional C extension for speedups. Simplejson is also supported on |
| 8559 | Python 3.3+.") |
| 8560 | (license license:x11))) |
| 8561 | |
| 8562 | (define-public python-simple-rlp |
| 8563 | (package |
| 8564 | (name "python-simple-rlp") |
| 8565 | (version "0.1.3") |
| 8566 | (source |
| 8567 | (origin |
| 8568 | (method git-fetch) |
| 8569 | (uri (git-reference |
| 8570 | (url "https://github.com/SamuelHaidu/simple-rlp") |
| 8571 | ;; Upstream doesn't tag the git repo. |
| 8572 | (commit "342ea269d84da1ddc4a7630cdebc90159261391c"))) |
| 8573 | (file-name (git-file-name name version)) |
| 8574 | (sha256 |
| 8575 | (base32 |
| 8576 | "1nv92sphpkyrncak4qgj50qmgkmj4ycl2szbnv9c7ihgl5df4div")))) |
| 8577 | (build-system pyproject-build-system) |
| 8578 | (native-inputs |
| 8579 | (list |
| 8580 | python-pytest |
| 8581 | python-setuptools)) |
| 8582 | (home-page "https://github.com/SamuelHaidu/simple-rlp") |
| 8583 | (synopsis |
| 8584 | "Python implementation of RLP (Recursive Length Prefix) encoding") |
| 8585 | (description |
| 8586 | "@code{simple-rlp} is a python implementation of RLP (Recursive Length \ |
| 8587 | Prefix) - Encode and decode data structures.") |
| 8588 | (license license:expat))) |
| 8589 | |
| 8590 | (define-public python-pyicu |
| 8591 | (package |
| 8592 | (name "python-pyicu") |
| 8593 | (version "2.15.2") |
| 8594 | (source |
| 8595 | (origin |
| 8596 | (method url-fetch) |
| 8597 | (uri (pypi-uri "pyicu" version)) |
| 8598 | (sha256 |
| 8599 | (base32 "13srrv5lczr0s74hx2kffwdhfg6flpvi2qpj75lfqz7ivzp7f7jn")))) |
| 8600 | (build-system pyproject-build-system) |
| 8601 | (native-inputs |
| 8602 | (list pkg-config |
| 8603 | python-pytest |
| 8604 | python-setuptools |
| 8605 | python-six)) |
| 8606 | (inputs |
| 8607 | (list icu4c)) |
| 8608 | (home-page "https://gitlab.pyicu.org/main/pyicu") |
| 8609 | (synopsis "Python extension wrapping the ICU C++ API") |
| 8610 | (description |
| 8611 | "PyICU is a python extension wrapping the ICU C++ API.") |
| 8612 | (license license:x11))) |
| 8613 | |
| 8614 | (define-public python-dogtail |
| 8615 | (package |
| 8616 | (name "python-dogtail") |
| 8617 | (version "0.9.11") |
| 8618 | (source |
| 8619 | (origin |
| 8620 | (method url-fetch) |
| 8621 | (uri (string-append |
| 8622 | "https://gitlab.com/dogtail/dogtail/-/raw/released/" "dogtail-" |
| 8623 | version ".tar.gz")) |
| 8624 | (sha256 |
| 8625 | (base32 "0sr38z7b2n12bvfd4xw4b5dnnhkn5zl3h0ymmnnzavcihfqia6l0")))) |
| 8626 | (build-system pyproject-build-system) |
| 8627 | (arguments |
| 8628 | (list |
| 8629 | #:tests? #f ;TODO Launching dbus for the tests fails |
| 8630 | #:phases |
| 8631 | #~(modify-phases %standard-phases |
| 8632 | (replace 'check |
| 8633 | (lambda* (#:key tests? #:allow-other-keys) |
| 8634 | (when tests? |
| 8635 | (system "Xvfb :1 &") |
| 8636 | (setenv "DISPLAY" ":1") |
| 8637 | (invoke "dbus-run-session" "--" |
| 8638 | "nosetests" "-v" "tests/"))))))) |
| 8639 | (propagated-inputs (list python-pygobject python-pycairo python-pyatspi)) |
| 8640 | (native-inputs |
| 8641 | (list python-pynose |
| 8642 | gtk+ |
| 8643 | xorg-server-for-tests |
| 8644 | dbus |
| 8645 | gsettings-desktop-schemas |
| 8646 | gobject-introspection |
| 8647 | python-setuptools)) |
| 8648 | (home-page "https://gitlab.com/dogtail/dogtail/") |
| 8649 | (synopsis "GUI test tool and automation framework written in Python") |
| 8650 | (description |
| 8651 | "Dogtail is a GUI test tool and automation framework written in Python. |
| 8652 | It uses Accessibility (a11y) technologies to communicate with desktop |
| 8653 | applications. dogtail scripts are written in Python and executed like any |
| 8654 | other Python program.") |
| 8655 | (license license:gpl2+))) |
| 8656 | |
| 8657 | (define-public python-doxyqml |
| 8658 | (package |
| 8659 | (name "python-doxyqml") |
| 8660 | (version "0.5.3") |
| 8661 | (source (origin |
| 8662 | (method url-fetch) |
| 8663 | (uri (pypi-uri "doxyqml" version)) |
| 8664 | (sha256 |
| 8665 | (base32 |
| 8666 | "0skrs5i5pvpzvihgxw766zi1c9bbp33aisdldxgj470mlchvdgyy")))) |
| 8667 | (build-system pyproject-build-system) |
| 8668 | (arguments |
| 8669 | (list #:test-backend #~'custom |
| 8670 | #:test-flags #~(list "tests/functional/tests.py"))) |
| 8671 | (native-inputs |
| 8672 | (list python-setuptools)) |
| 8673 | (home-page "https://agateau.com/projects/doxyqml") |
| 8674 | (synopsis "Doxygen input filter for QML files") |
| 8675 | (description |
| 8676 | "This package provides a Doxygen input filter for QML files.") |
| 8677 | (license license:bsd-3))) |
| 8678 | |
| 8679 | (define-public python-doxypypy |
| 8680 | (package |
| 8681 | (name "python-doxypypy") |
| 8682 | (version "0.8.8.7") |
| 8683 | (source (origin |
| 8684 | (method url-fetch) |
| 8685 | (uri (pypi-uri "doxypypy" version)) |
| 8686 | (sha256 |
| 8687 | (base32 |
| 8688 | "17nh5jjbxrg6ag0gymh8jsp75qnxwgv8fqbj4jlphywj0sxwh6k7")))) |
| 8689 | (build-system pyproject-build-system) |
| 8690 | (arguments |
| 8691 | (list |
| 8692 | #:test-flags |
| 8693 | #~(list "-k" (string-join |
| 8694 | ;; Test files are not in UTF-8 format and attmet to |
| 8695 | ;; substitute shebang fails, while tests fail with error: |
| 8696 | ;; AssertionError: "#!/bin/env python\n# UTF-32-LE Python |
| 8697 | ;; File w[387 chars]g.')" != |
| 8698 | ;; "#!/gnu/store/y5vz9h983i8cg01cxz0zdywz715fxxs[449 |
| 8699 | ;; chars]g.')" |
| 8700 | (list "not test_utf16be_bom" |
| 8701 | "test_utf16le_bom" |
| 8702 | "test_utf32be_bom" |
| 8703 | "test_utf32le_bom" |
| 8704 | "test_utf8_bom") |
| 8705 | " and not ")) |
| 8706 | #:phases |
| 8707 | #~(modify-phases %standard-phases |
| 8708 | ;; compile-bytecode phases fails with error: SyntaxError: source |
| 8709 | ;; code string cannot contain null bytes. |
| 8710 | (add-after 'unpack 'fix-setup.py |
| 8711 | (lambda _ |
| 8712 | (substitute* "setup.py" |
| 8713 | (("packages=.*") "packages=['doxypypy'],\n"))))))) |
| 8714 | (native-inputs |
| 8715 | (list python-pytest |
| 8716 | python-setuptools |
| 8717 | python-wheel)) |
| 8718 | (propagated-inputs |
| 8719 | (list python-chardet)) |
| 8720 | (home-page "https://github.com/Feneric/doxypypy") |
| 8721 | (synopsis "Doxygen filter for Python") |
| 8722 | (description |
| 8723 | "This package provides a Doxygen filter for Python.") |
| 8724 | (license license:gpl2+))) |
| 8725 | |
| 8726 | (define-public python-empy |
| 8727 | (package |
| 8728 | (name "python-empy") |
| 8729 | (version "3.3.4") |
| 8730 | (source |
| 8731 | (origin |
| 8732 | (method url-fetch) |
| 8733 | (uri (string-append "http://www.alcyone.com/software/empy/empy-" |
| 8734 | version ".tar.gz")) |
| 8735 | (sha256 |
| 8736 | (base32 "1cgikljjcqxgz168prpvb0bnirbdxf9wmgj0vlzzhzzwf4a229li")))) |
| 8737 | (build-system pyproject-build-system) |
| 8738 | (arguments |
| 8739 | (list |
| 8740 | #:phases |
| 8741 | #~(modify-phases %standard-phases |
| 8742 | (replace 'check |
| 8743 | (lambda* (#:key tests? #:allow-other-keys) |
| 8744 | (when tests? |
| 8745 | (invoke "./test.sh"))))))) |
| 8746 | (native-inputs (list python-setuptools)) |
| 8747 | (home-page "http://www.alcyone.com/software/empy/") |
| 8748 | (synopsis "Templating system for Python") |
| 8749 | (description |
| 8750 | "EmPy is a system for embedding Python expressions and statements in |
| 8751 | template text; it takes an EmPy source file, processes it, and produces |
| 8752 | output. This is accomplished via expansions, which are special signals to the |
| 8753 | EmPy system and are set off by a special prefix (by default the at sign, @@). |
| 8754 | EmPy can expand arbitrary Python expressions and statements in this way, as |
| 8755 | well as a variety of special forms. Textual data not explicitly delimited in |
| 8756 | this way is sent unaffected to the output, allowing Python to be used in |
| 8757 | effect as a markup language. Also supported are callbacks via hooks, |
| 8758 | recording and playback via diversions, and dynamic, chainable filters. The |
| 8759 | system is highly configurable via command line options and embedded |
| 8760 | commands.") |
| 8761 | (license license:lgpl2.1+))) |
| 8762 | |
| 8763 | (define-public python-palettable |
| 8764 | (package |
| 8765 | (name "python-palettable") |
| 8766 | (version "3.3.3") |
| 8767 | (source (origin |
| 8768 | (method url-fetch) |
| 8769 | (uri (pypi-uri "palettable" version)) |
| 8770 | (sha256 |
| 8771 | (base32 |
| 8772 | "1a4h0jpsr3wjciqg9a5kslxv65d3qqgmqgkpai4cl77wlpcxfk89")))) |
| 8773 | (build-system pyproject-build-system) |
| 8774 | (native-inputs (list python-pytest python-setuptools python-wheel)) |
| 8775 | (home-page "https://jiffyclub.github.io/palettable/") |
| 8776 | (synopsis "Color palettes for Python") |
| 8777 | (description "Palettable (formerly brewer2mpl) is a library of color |
| 8778 | palettes for Python. It’s written in pure Python with no dependencies, but it |
| 8779 | can supply color maps for matplotlib. You can use Palettable to customize |
| 8780 | matplotlib plots or supply colors for a web application.") |
| 8781 | (license license:expat))) |
| 8782 | |
| 8783 | (define-public python-parse-type |
| 8784 | (package |
| 8785 | (name "python-parse-type") |
| 8786 | ;; 0.6.6 (2025-08-11), the latest changes provide support for Python |
| 8787 | ;; 3.12+; move back to git tag when released. |
| 8788 | (properties '((commit . "5c4126ae3973b5c0a4107cd8b29f2b74993be330") |
| 8789 | (revision . "0"))) |
| 8790 | (version (git-version "0.6.6" |
| 8791 | (assoc-ref properties 'revision) |
| 8792 | (assoc-ref properties 'commit))) |
| 8793 | (source |
| 8794 | (origin |
| 8795 | (method git-fetch) |
| 8796 | (uri (git-reference |
| 8797 | (url "https://github.com/jenisys/parse_type") |
| 8798 | (commit (assoc-ref properties 'commit)))) |
| 8799 | (file-name (git-file-name name version)) |
| 8800 | (sha256 |
| 8801 | (base32 "0gcpyzd3lj7bp9k6m515gwkjwabnhkb15vrx6bf8ba8nyv30v571")))) |
| 8802 | (build-system pyproject-build-system) |
| 8803 | (arguments |
| 8804 | (list |
| 8805 | ;; tests: 332 passed, 2 skipped |
| 8806 | #:phases |
| 8807 | #~(modify-phases %standard-phases |
| 8808 | (add-after 'unpack 'fix-pytest-config |
| 8809 | ;; To bypass options: --metadata, --html and --junit-xml. |
| 8810 | (lambda _ |
| 8811 | (delete-file "pytest.ini")))))) |
| 8812 | (native-inputs |
| 8813 | (list python-pytest |
| 8814 | python-setuptools |
| 8815 | python-setuptools-scm)) |
| 8816 | (propagated-inputs |
| 8817 | (list python-six ;hard dependency |
| 8818 | python-parse)) |
| 8819 | (home-page "https://github.com/jenisys/parse_type") |
| 8820 | (synopsis "Extended parse module") |
| 8821 | (description "Parse_type extends the python parse module.") |
| 8822 | (license license:expat))) |
| 8823 | |
| 8824 | (define-public python-parse |
| 8825 | (package |
| 8826 | (name "python-parse") |
| 8827 | (version "1.20.2") |
| 8828 | (source |
| 8829 | (origin |
| 8830 | (method git-fetch) |
| 8831 | (uri (git-reference |
| 8832 | (url "https://github.com/r1chardj0n3s/parse") |
| 8833 | (commit version))) |
| 8834 | (file-name (git-file-name name version)) |
| 8835 | (sha256 |
| 8836 | (base32 "0s3dgafh1mz8g32gwk5vp0azdq168yjhbg5liivapgkwyq9zgwcb")))) |
| 8837 | (build-system pyproject-build-system) |
| 8838 | (native-inputs (list python-pytest python-setuptools)) |
| 8839 | (home-page "https://github.com/r1chardj0n3s/parse") |
| 8840 | (synopsis "Parse strings") |
| 8841 | (description |
| 8842 | "Parse strings using a specification based on the Python @code{format()} |
| 8843 | syntax.") |
| 8844 | (license license:x11))) |
| 8845 | |
| 8846 | (define-public python-parsley |
| 8847 | (package |
| 8848 | (name "python-parsley") |
| 8849 | (version "1.3") |
| 8850 | (source |
| 8851 | (origin |
| 8852 | (method git-fetch) |
| 8853 | (uri (git-reference |
| 8854 | (url "https://github.com/pyga/parsley") |
| 8855 | (commit version))) |
| 8856 | (file-name (git-file-name name version)) |
| 8857 | (sha256 |
| 8858 | (base32 "0550rw65ygqzbjc8a66hs355pzbx727kbn20dssdb6ls846gw2qs")) |
| 8859 | (patches |
| 8860 | (list |
| 8861 | (origin |
| 8862 | (method url-fetch) |
| 8863 | (uri |
| 8864 | (string-append "https://github.com/pyga/parsley/commit/" |
| 8865 | "f0ad2f6c0c7ce15336f6a3adc3708f4a5a9757c6.patch")) |
| 8866 | (sha256 |
| 8867 | (base32 |
| 8868 | "0q90vg9pi4vs4kqxa1dzck16iqrszcw36c3im8p514p7zj439fca"))))))) |
| 8869 | (build-system pyproject-build-system) |
| 8870 | (arguments |
| 8871 | (list |
| 8872 | #:test-flags #~(list "ometa/test" "terml/test"))) |
| 8873 | (native-inputs |
| 8874 | (list python-pytest |
| 8875 | python-setuptools |
| 8876 | python-twisted)) |
| 8877 | (home-page "https://launchpad.net/parsley") |
| 8878 | (synopsis "Parsing and pattern matching Python library") |
| 8879 | (description |
| 8880 | "Parsley is a parsing library using PEG algorithm, so each expression in |
| 8881 | the grammar rules works like a Python expression. In particular, alternatives |
| 8882 | are evaluated in order, unlike table-driven parsers such as yacc, bison or PLY. |
| 8883 | Parsley is an implementation of OMeta, an object-oriented pattern-matching |
| 8884 | language.") |
| 8885 | (license license:expat))) |
| 8886 | |
| 8887 | (define-public python-petl |
| 8888 | (package |
| 8889 | (name "python-petl") |
| 8890 | (version "1.7.16") |
| 8891 | (source |
| 8892 | (origin |
| 8893 | (method url-fetch) |
| 8894 | (uri (pypi-uri "petl" version)) |
| 8895 | (sha256 |
| 8896 | (base32 "0ll7xcc9yrvrz9p9im6m8p69cwrqwmqx91px43hlbnjrv1jflbww")))) |
| 8897 | (build-system pyproject-build-system) |
| 8898 | (native-inputs (list python-setuptools python-setuptools-scm python-wheel |
| 8899 | python-pytest)) |
| 8900 | (home-page "https://github.com/petl-developers/petl") |
| 8901 | (synopsis "Framework for writing @acronym{ETL, Extract Transform Load} data |
| 8902 | processing pipelines.") |
| 8903 | (description |
| 8904 | "This package provides a library for extracting, transforming and loading |
| 8905 | tables of data. It can read from and write to databases or files in multiple |
| 8906 | formats, including: |
| 8907 | @itemize @bullet |
| 8908 | @item python objects |
| 8909 | @item delimited files |
| 8910 | @item pickle files |
| 8911 | @item text/XML/JSON/HTML files |
| 8912 | @item python I/O streams |
| 8913 | @item Excel XLS/XLSX files |
| 8914 | @item HDF5 files |
| 8915 | @end itemize") |
| 8916 | (license license:expat))) |
| 8917 | |
| 8918 | (define-public python-polib |
| 8919 | (package |
| 8920 | (name "python-polib") |
| 8921 | (version "1.2.0") |
| 8922 | (source |
| 8923 | (origin |
| 8924 | (method git-fetch) |
| 8925 | (uri (git-reference |
| 8926 | (url "https://github.com/izimobil/polib/") |
| 8927 | (commit version))) |
| 8928 | (file-name (git-file-name name version)) |
| 8929 | (sha256 |
| 8930 | (base32 "12n2skqj2qydcjp1r2ppzjcfc0fx4l23061x8bfqxx5pdvhnfpyb")))) |
| 8931 | (build-system pyproject-build-system) |
| 8932 | (arguments |
| 8933 | (list #:test-backend #~'custom |
| 8934 | #:test-flags #~(list "tests/tests.py"))) |
| 8935 | (native-inputs (list python-setuptools)) |
| 8936 | (home-page "https://github.com/izimobil/polib/") |
| 8937 | (synopsis "Manipulate, create and modify gettext files") |
| 8938 | (description |
| 8939 | "Polib can manipulate any gettext format (po, pot and mo) files. It can |
| 8940 | be used to create po files from scratch or to modify existing ones.") |
| 8941 | (license license:expat))) |
| 8942 | |
| 8943 | (define-public python-polling2 |
| 8944 | (package |
| 8945 | (name "python-polling2") |
| 8946 | (version "0.5.0") |
| 8947 | (source |
| 8948 | (origin |
| 8949 | (method git-fetch) |
| 8950 | (uri (git-reference |
| 8951 | (url "https://github.com/ddmee/polling2") |
| 8952 | (commit (string-append "v" version)))) |
| 8953 | (file-name (git-file-name name version)) |
| 8954 | (sha256 |
| 8955 | (base32 "17q5nw9wab9p092r2bvmnk5nrzlwg5by6wf5wkbxnsz100nww7la")))) |
| 8956 | (build-system pyproject-build-system) |
| 8957 | (arguments |
| 8958 | ;; XXX: Additional , in string comparison. |
| 8959 | (list #:test-flags #~(list "-k" "not test_log_error_set_at_debug_level"))) |
| 8960 | (native-inputs (list python-mock python-pytest python-setuptools)) |
| 8961 | (home-page "https://github.com/ddmee/polling2") |
| 8962 | (synopsis "Polling utility with many configurable options") |
| 8963 | (description "Polling2 is a utility used to wait for a function to return |
| 8964 | a certain expected condition.") |
| 8965 | (license license:expat))) |
| 8966 | |
| 8967 | (define-public python-daft |
| 8968 | (package |
| 8969 | (name "python-daft") |
| 8970 | (version "0.1.2") |
| 8971 | (source (origin |
| 8972 | (method url-fetch) |
| 8973 | (uri (pypi-uri "daft" version)) |
| 8974 | (sha256 |
| 8975 | (base32 |
| 8976 | "1r8jsfavd624q2q61f863lk6has6mv5csswh39saafd5khwf0xry")))) |
| 8977 | (build-system pyproject-build-system) |
| 8978 | (arguments |
| 8979 | (list |
| 8980 | #:test-flags |
| 8981 | '(list "-k" |
| 8982 | (string-append |
| 8983 | ;; The following tests compare matplotlib output with |
| 8984 | ;; previously generated images. They fail due to minor |
| 8985 | ;; differences in where matplotlib places labels. |
| 8986 | "not test_bca[png]" |
| 8987 | " and not test_classic[png]" |
| 8988 | " and not test_deconvolution[png]" |
| 8989 | " and not test_exoplanets[png]" |
| 8990 | " and not test_fixed[png]" |
| 8991 | " and not test_gaia[png]" |
| 8992 | " and not test_galex[png]" |
| 8993 | " and not test_huey_p_newton[png]" |
| 8994 | " and not test_logo[png]" |
| 8995 | " and not test_no_circles[png]" |
| 8996 | " and not test_no_gray[png]" |
| 8997 | " and not test_recursive[png]" |
| 8998 | " and not test_thick_lines[png]" |
| 8999 | " and not test_weaklensing[png]" |
| 9000 | " and not test_wordy[png]")))) |
| 9001 | (native-inputs |
| 9002 | (list python-pytest |
| 9003 | python-setuptools |
| 9004 | python-wheel)) |
| 9005 | (propagated-inputs (list python-matplotlib python-numpy)) |
| 9006 | (home-page "https://docs.daft-pgm.org/") |
| 9007 | (synopsis "PGM rendering library") |
| 9008 | (description "Daft is a Python package that uses matplotlib to |
| 9009 | render pixel-perfect probabilistic graphical models for publication in |
| 9010 | a journal or on the internet. With a short Python script and an |
| 9011 | intuitive model-building syntax you can design directed (Bayesian |
| 9012 | Networks, directed acyclic graphs) and undirected (Markov random fields) |
| 9013 | models and save them in any formats that matplotlib supports (including |
| 9014 | PDF, PNG, EPS and SVG).") |
| 9015 | (license license:expat))) |
| 9016 | |
| 9017 | (define-public python-portalocker |
| 9018 | (package |
| 9019 | (name "python-portalocker") |
| 9020 | (version "2.7.0") |
| 9021 | (source (origin |
| 9022 | (method url-fetch) |
| 9023 | (uri (pypi-uri "portalocker" version)) |
| 9024 | (sha256 |
| 9025 | (base32 |
| 9026 | "0lawjm736vs86wlnxc3qqh37l11z0yx81xq3dmrw33m86kaq2bh3")))) |
| 9027 | (build-system pyproject-build-system) |
| 9028 | (native-inputs (list python-pytest |
| 9029 | python-pytest-timeout |
| 9030 | python-redis |
| 9031 | python-setuptools |
| 9032 | python-wheel)) |
| 9033 | (home-page "https://github.com/WoLpH/portalocker") |
| 9034 | (synopsis "Python library for file locking") |
| 9035 | (description "Portalocker is a library to provide an easy API to file |
| 9036 | locking..") |
| 9037 | (license license:bsd-3))) |
| 9038 | |
| 9039 | (define-public python-poyo |
| 9040 | (package |
| 9041 | (name "python-poyo") |
| 9042 | (version "0.5.0") |
| 9043 | (source |
| 9044 | (origin |
| 9045 | (method url-fetch) |
| 9046 | (uri (pypi-uri "poyo" version)) |
| 9047 | (sha256 |
| 9048 | (base32 |
| 9049 | "1pflivs6j22frz0v3dqxnvc8yb8fb52g11lqr88z0i8cg2m5csg2")))) |
| 9050 | (build-system pyproject-build-system) |
| 9051 | (native-inputs |
| 9052 | (list python-pytest python-setuptools)) |
| 9053 | (home-page "https://github.com/hackebrot/poyo") |
| 9054 | (synopsis "Lightweight YAML Parser for Python") |
| 9055 | (description |
| 9056 | "This package provides a lightweight YAML Parser for Python. It supports |
| 9057 | only a chosen subset of the YAML format that is required to parse cookiecutter |
| 9058 | user configuration files. It does not have support for serializing into YAML |
| 9059 | and is not compatible with JSON.") |
| 9060 | (license license:expat))) |
| 9061 | |
| 9062 | (define-public python-expandvars |
| 9063 | (package |
| 9064 | (name "python-expandvars") |
| 9065 | (version "1.1.2") |
| 9066 | (source |
| 9067 | (origin |
| 9068 | (method url-fetch) |
| 9069 | (uri (pypi-uri "expandvars" version)) |
| 9070 | (sha256 |
| 9071 | (base32 "1mviiwv5vgglswxrcdd1z978masjgwkd2pcidcsrmaannyvj4n3c")))) |
| 9072 | (build-system pyproject-build-system) |
| 9073 | (arguments (list #:test-flags #~(list "-o" "addopts=''"))) |
| 9074 | (native-inputs |
| 9075 | (list python-hatchling python-pytest)) |
| 9076 | (home-page "https://pypi.org/project/expandvars/") |
| 9077 | (synopsis "Expand system variables Unix style") |
| 9078 | (description "This module is inspired by GNU bash's variable expansion |
| 9079 | features. It can be used as an alternative to Python's |
| 9080 | @code{os.path.expandvars} function. A good use case is reading config files |
| 9081 | with the flexibility of reading values from environment variables using |
| 9082 | advanced features like returning a default value if some variable is not |
| 9083 | defined.") |
| 9084 | (license license:expat))) |
| 9085 | |
| 9086 | (define-public python-expiringdict |
| 9087 | (package |
| 9088 | (name "python-expiringdict") |
| 9089 | (version "1.2.2") |
| 9090 | (source |
| 9091 | (origin |
| 9092 | (method git-fetch) |
| 9093 | (uri (git-reference |
| 9094 | (url "https://github.com/mailgun/expiringdict") |
| 9095 | (commit (string-append "v" version)))) |
| 9096 | (file-name (git-file-name name version)) |
| 9097 | (sha256 |
| 9098 | (base32 "0hkzh62cmsm8i6sh9pcn4bh3ilq0bzdrvw6gz949swraf944j65x")))) |
| 9099 | (build-system pyproject-build-system) |
| 9100 | (arguments |
| 9101 | ;; Started failing with [email protected], but it's only repr not functionality |
| 9102 | ;; so we should be fine. |
| 9103 | (list #:test-flags #~'("-v" "-e" "test_repr"))) |
| 9104 | (native-inputs |
| 9105 | (list python-dill python-mock python-pynose python-setuptools)) |
| 9106 | (home-page "https://github.com/mailgun/expiringdict") |
| 9107 | (synopsis "Dictionary with auto-expiring values for caching purposes") |
| 9108 | (description |
| 9109 | "This Python library provides an ordered dictionary |
| 9110 | with a maximum capacity and auto-expiring values for caching purposes. |
| 9111 | Expiration happens on any access, object is locked during cleanup |
| 9112 | from expired values.") |
| 9113 | (license license:asl2.0))) |
| 9114 | |
| 9115 | (define-public python-extension-helpers |
| 9116 | (package |
| 9117 | (name "python-extension-helpers") |
| 9118 | (version "1.4.0") |
| 9119 | (source |
| 9120 | (origin |
| 9121 | (method git-fetch) ; no tests in the PyPI tarball |
| 9122 | (uri (git-reference |
| 9123 | (url "https://github.com/astropy/extension-helpers") |
| 9124 | (commit (string-append "v" version)))) |
| 9125 | (file-name (git-file-name name version)) |
| 9126 | (sha256 |
| 9127 | (base32 "0ljvfv9p7jay4j31awx1h714xhyn5hbfgyhn4nm71xrkz9la113j")))) |
| 9128 | (build-system pyproject-build-system) |
| 9129 | (arguments |
| 9130 | (list |
| 9131 | #:test-flags |
| 9132 | #~(list "--pyargs" "extension_helpers" |
| 9133 | "-k" (string-join |
| 9134 | ;; XXX: Tests try to check various compilation options and |
| 9135 | ;; fail with some incomparability or trying to download |
| 9136 | ;; missing modules. |
| 9137 | (list "not test_only_pyproject" |
| 9138 | "test_no_setup_py" |
| 9139 | "test_limited_api") |
| 9140 | " and not ")))) |
| 9141 | (native-inputs |
| 9142 | (list python-pytest |
| 9143 | python-setuptools-scm)) |
| 9144 | (propagated-inputs |
| 9145 | (list python-setuptools)) |
| 9146 | (home-page "https://extension-helpers.readthedocs.io") |
| 9147 | (synopsis "Astropy ecosystem utilities for building and installing packages") |
| 9148 | (description |
| 9149 | "The extension-helpers package includes convenience helpers to assist |
| 9150 | with building Python packages with compiled C/Cython extensions. It is |
| 9151 | developed by the Astropy project but is intended to be general and usable by |
| 9152 | any Python package.") |
| 9153 | (license license:bsd-3))) |
| 9154 | |
| 9155 | (define-public python-milc |
| 9156 | (package |
| 9157 | (name "python-milc") |
| 9158 | (version "1.9.1") |
| 9159 | (source |
| 9160 | (origin |
| 9161 | (method git-fetch) ;no tests in PyPI archive |
| 9162 | (uri (git-reference |
| 9163 | (url "https://github.com/clueboard/milc") |
| 9164 | (commit version))) |
| 9165 | (file-name (git-file-name name version)) |
| 9166 | (sha256 |
| 9167 | (base32 "0ms9ks0xn1ikd48352bifnbfahfnw3gh4qs1ckmmwbpiq2czca3g")))) |
| 9168 | (build-system pyproject-build-system) |
| 9169 | (native-inputs |
| 9170 | (list python-pytest |
| 9171 | python-semver |
| 9172 | python-setuptools)) |
| 9173 | (propagated-inputs |
| 9174 | (list python-argcomplete |
| 9175 | python-colorama |
| 9176 | python-halo |
| 9177 | python-platformdirs |
| 9178 | python-spinners |
| 9179 | python-types-colorama)) |
| 9180 | (home-page "https://github.com/clueboard/milc") |
| 9181 | (synopsis "Python library for command line interface programs") |
| 9182 | (description "MILC is a Python library for developing command line |
| 9183 | interface programs. This library provides features to parse arguments, |
| 9184 | automatic tab-completion, color support, logging to @code{std}, etc.") |
| 9185 | (license license:expat))) |
| 9186 | |
| 9187 | (define-public python-extract-dtb |
| 9188 | (package |
| 9189 | (name "python-extract-dtb") |
| 9190 | (version "1.2.3") |
| 9191 | (source |
| 9192 | (origin |
| 9193 | (method git-fetch) |
| 9194 | (uri (git-reference |
| 9195 | (url "https://github.com/PabloCastellano/extract-dtb/") |
| 9196 | (commit version))) |
| 9197 | (file-name (git-file-name name version)) |
| 9198 | (sha256 |
| 9199 | (base32 |
| 9200 | "1kkfy8sh6bhh1w5lczaw1nym278q5xp5pxjaahwrl3zfddhdm655")))) |
| 9201 | (build-system pyproject-build-system) |
| 9202 | (arguments |
| 9203 | (list #:tests? #f)) ;no tests |
| 9204 | (native-inputs |
| 9205 | (list python-setuptools)) |
| 9206 | (home-page "https://github.com/PabloCastellano/extract-dtb/") |
| 9207 | (synopsis "Extract device tree blobs (DTB) from kernel images") |
| 9208 | (description |
| 9209 | "This package provides a tool to split a kernel image with appended |
| 9210 | @acronym{DTB, Device Tree Blobs} into separated kernel and DTB files.") |
| 9211 | (license license:gpl3+))) |
| 9212 | |
| 9213 | (define-public python-mimeparse |
| 9214 | (package |
| 9215 | (name "python-mimeparse") |
| 9216 | (version "2.0.0") |
| 9217 | (source |
| 9218 | (origin |
| 9219 | (method url-fetch) |
| 9220 | (uri (pypi-uri "python_mimeparse" version)) |
| 9221 | (sha256 |
| 9222 | (base32 "00xk5jir6dm4r3qm8dg8vh8lhq00f35zaryn3gina958gb7rv6jv")))) |
| 9223 | (build-system pyproject-build-system) |
| 9224 | (native-inputs |
| 9225 | (list python-pytest |
| 9226 | python-setuptools)) |
| 9227 | (home-page "https://github.com/falconry/python-mimeparse") |
| 9228 | (synopsis "Python library for parsing MIME types") |
| 9229 | (description |
| 9230 | "Mimeparse provides basic functions for parsing MIME type names and |
| 9231 | matching them against a list of media-ranges.") |
| 9232 | (license license:expat))) |
| 9233 | |
| 9234 | (define-public python-miniboa |
| 9235 | (package |
| 9236 | (name "python-miniboa") |
| 9237 | (version "1.0.9") |
| 9238 | (source |
| 9239 | (origin |
| 9240 | (method git-fetch) ;no tests in PyPI archive |
| 9241 | (uri (git-reference |
| 9242 | (url "https://github.com/shmup/miniboa") |
| 9243 | (commit (string-append "v" version)))) |
| 9244 | (file-name (git-file-name name version)) |
| 9245 | (sha256 |
| 9246 | (base32 "05xa44x61bia2pxjdncz6rj10js8hgp2a9hf56avbfk7g58n3v5y")))) |
| 9247 | (build-system pyproject-build-system) |
| 9248 | (native-inputs |
| 9249 | (list python-pytest |
| 9250 | python-setuptools |
| 9251 | python-wheel)) |
| 9252 | (home-page "https://github.com/shmup/miniboa") |
| 9253 | (synopsis "Simple, single-threaded Telnet server") |
| 9254 | (description |
| 9255 | "Miniboa is a simple, asynchronous, single-threaded, poll-based Telnet |
| 9256 | server.") |
| 9257 | (license license:asl2.0))) |
| 9258 | |
| 9259 | (define-public python-mir-eval |
| 9260 | (package |
| 9261 | (name "python-mir-eval") |
| 9262 | (version "0.8.2") |
| 9263 | (source (origin |
| 9264 | (method git-fetch) |
| 9265 | (uri (git-reference |
| 9266 | (url "https://github.com/mir-evaluation/mir_eval") |
| 9267 | (commit version))) |
| 9268 | (file-name (git-file-name name version)) |
| 9269 | (sha256 |
| 9270 | (base32 |
| 9271 | "0mna57q2r0cjsvgz67v6bay1c6a33wl33yna9s083wfqhjmf9bqf")))) |
| 9272 | (build-system pyproject-build-system) |
| 9273 | (arguments |
| 9274 | (list |
| 9275 | #:phases |
| 9276 | #~(modify-phases %standard-phases |
| 9277 | (add-before 'check 'cd-tests |
| 9278 | (lambda _ |
| 9279 | ;; Move to 'tests' directory because tests read data files from |
| 9280 | ;; a relative path. |
| 9281 | (chdir "tests")))))) |
| 9282 | (propagated-inputs (list python-decorator python-numpy python-scipy)) |
| 9283 | (native-inputs (list python-matplotlib |
| 9284 | python-pytest |
| 9285 | python-pytest-mpl |
| 9286 | python-setuptools |
| 9287 | python-wheel)) |
| 9288 | (home-page "https://github.com/mir-evaluation/mir_eval") |
| 9289 | (synopsis "Common metrics for common audio/music processing tasks") |
| 9290 | (description "This is a Python library for computing common heuristic |
| 9291 | accuracy scores for various music/audio information retrieval/signal |
| 9292 | processing tasks.") |
| 9293 | (license license:expat))) |
| 9294 | |
| 9295 | (define-public python-mizani |
| 9296 | (package |
| 9297 | (name "python-mizani") |
| 9298 | (version "0.14.4") |
| 9299 | (source |
| 9300 | (origin |
| 9301 | (method git-fetch) |
| 9302 | (uri (git-reference |
| 9303 | (url "https://github.com/has2k1/mizani") |
| 9304 | (commit (string-append "v" version)))) |
| 9305 | (file-name (git-file-name name version)) |
| 9306 | (sha256 |
| 9307 | (base32 "00n8jbsk35ywa3saypc83p8624kr65xz6m2sbf5js5n17b9m6438")))) |
| 9308 | (build-system pyproject-build-system) |
| 9309 | (propagated-inputs |
| 9310 | (list python-matplotlib |
| 9311 | python-numpy |
| 9312 | python-pandas |
| 9313 | python-scipy)) |
| 9314 | (native-inputs |
| 9315 | (list python-pytest |
| 9316 | python-setuptools |
| 9317 | python-setuptools-scm |
| 9318 | tzdata-for-tests)) |
| 9319 | (home-page "https://github.com/has2k1/mizani") |
| 9320 | (synopsis "Create data visualizations in Python") |
| 9321 | (description |
| 9322 | "Mizani is a Python package for creating data visualizations. It |
| 9323 | provides functions and tools to help with the creation of visually appealing |
| 9324 | and informative visualizations, including scales, transformations and color |
| 9325 | palettes.") |
| 9326 | (license license:bsd-3))) |
| 9327 | |
| 9328 | (define-public python-miniupnpc |
| 9329 | (package |
| 9330 | (name "python-miniupnpc") |
| 9331 | (version "2.3.3") |
| 9332 | (source |
| 9333 | (origin |
| 9334 | (method git-fetch) |
| 9335 | (uri |
| 9336 | (git-reference |
| 9337 | ;; The project tags miniupnpd_ as well but with a different version, |
| 9338 | ;; where updater may select a wrong version. |
| 9339 | (url "https://github.com/miniupnp/miniupnp") |
| 9340 | (commit |
| 9341 | (string-append |
| 9342 | "miniupnpc_" (string-replace-substring version "." "_"))))) |
| 9343 | (file-name |
| 9344 | (git-file-name name version)) |
| 9345 | (sha256 |
| 9346 | (base32 "0ysvx21iaq7f505fpnk3280rwnckr0aih0j5j3v82nv99a2rqigh")))) |
| 9347 | (build-system pyproject-build-system) |
| 9348 | (arguments |
| 9349 | (list |
| 9350 | #:phases |
| 9351 | #~(modify-phases %standard-phases |
| 9352 | (add-after 'unpack 'subdir |
| 9353 | (lambda* (#:key inputs #:allow-other-keys) |
| 9354 | (chdir "miniupnpc") |
| 9355 | (setenv "CC" #$(cc-for-target)) |
| 9356 | (substitute* "Makefile" |
| 9357 | (("/bin/sh") (search-input-file inputs "/bin/sh"))))) |
| 9358 | (add-before 'subdir 'remove-kernel-version |
| 9359 | ;; Avoid embedding the running kernel version for reproducible builds |
| 9360 | (lambda _ |
| 9361 | (substitute* |
| 9362 | "miniupnpc/updateminiupnpcstrings.sh" |
| 9363 | (("^OS_VERSION=`uname -r`") "OS_VERSION=Guix")))) |
| 9364 | (replace 'check |
| 9365 | (lambda* (#:key tests? #:allow-other-keys) |
| 9366 | (when tests? |
| 9367 | (invoke "make" "check"))))))) |
| 9368 | (native-inputs |
| 9369 | (list python-setuptools |
| 9370 | python-wheel)) |
| 9371 | (inputs (list python)) ;we are building a Python extension |
| 9372 | (synopsis "UPnP client for Python") |
| 9373 | (description "Miniupnpc is a client library for Python programs to set up |
| 9374 | port forwards using @acronym{UPnP, Universal Plug and Play}.") |
| 9375 | (home-page "http://miniupnp.free.fr") |
| 9376 | (license license:bsd-3))) |
| 9377 | |
| 9378 | (define-public python-pyrsistent |
| 9379 | (package |
| 9380 | (name "python-pyrsistent") |
| 9381 | (version "0.20.0") |
| 9382 | (home-page "https://github.com/tobgu/pyrsistent") |
| 9383 | (source (origin |
| 9384 | (method url-fetch) |
| 9385 | (uri (pypi-uri "pyrsistent" version)) |
| 9386 | (sha256 |
| 9387 | (base32 |
| 9388 | "1935ybwdxszmzlzshwkc7m7swm1js46ls246j1knqndbca7zfj2c")))) |
| 9389 | (build-system pyproject-build-system) |
| 9390 | (native-inputs |
| 9391 | (list python-pytest python-setuptools python-wheel)) |
| 9392 | (synopsis "Persistent data structures for Python") |
| 9393 | (description |
| 9394 | "Pyrsistent is a number of persistent collections (by some referred to as |
| 9395 | functional data structures). Persistent in the sense that they are immutable. |
| 9396 | |
| 9397 | All methods on a data structure that would normally mutate it instead return a |
| 9398 | new copy of the structure containing the requested updates. The original |
| 9399 | structure is left untouched.") |
| 9400 | (license license:expat))) |
| 9401 | |
| 9402 | (define-public python-exif-read |
| 9403 | (package |
| 9404 | (name "python-exif-read") |
| 9405 | (version "3.3.2") |
| 9406 | (source |
| 9407 | (origin |
| 9408 | (method git-fetch) ;PyPI doesn't contain the test images |
| 9409 | (uri (git-reference |
| 9410 | (url "https://github.com/ianare/exif-py") |
| 9411 | (commit version))) |
| 9412 | (file-name (git-file-name name version)) |
| 9413 | (sha256 |
| 9414 | (base32 "0igvqhalrllidyccy7rlqbhx277rv7mf6bf0w6xjr0dj2dk3jw76")))) |
| 9415 | (build-system pyproject-build-system) |
| 9416 | (native-inputs (list python-pytest python-setuptools python-wheel)) |
| 9417 | (home-page "https://github.com/ianare/exif-py") |
| 9418 | (synopsis "Python library to extract EXIF data from image files") |
| 9419 | (description |
| 9420 | "ExifRead is a Python library to extract EXIF data from tiff and jpeg |
| 9421 | files.") |
| 9422 | (license license:bsd-3))) |
| 9423 | |
| 9424 | (define-public python-pyld |
| 9425 | (package |
| 9426 | (name "python-pyld") |
| 9427 | (version "2.0.4") |
| 9428 | (source |
| 9429 | (origin |
| 9430 | (method git-fetch) |
| 9431 | (uri (git-reference |
| 9432 | (url "https://github.com/digitalbazaar/pyld") |
| 9433 | ;; Not all tags have the 'v' prefix. |
| 9434 | (commit (string-append "v" version)))) |
| 9435 | (file-name (git-file-name name version)) |
| 9436 | (sha256 |
| 9437 | (base32 "12lb4vk7m5y5943fm4r8hixdvlxh6qm21pbv7aalsbpfw8cc18sw")))) |
| 9438 | (build-system pyproject-build-system) |
| 9439 | (arguments |
| 9440 | ;; TODO: Commit history shows next version (>2.0.4) will have pytest tests. |
| 9441 | (list #:tests? #f)) |
| 9442 | (native-inputs |
| 9443 | (list python-lxml |
| 9444 | python-setuptools)) |
| 9445 | (propagated-inputs |
| 9446 | (list python-aiohttp |
| 9447 | python-cachetools |
| 9448 | python-frozendict |
| 9449 | python-requests)) |
| 9450 | (home-page "https://github.com/digitalbazaar/pyld") |
| 9451 | (synopsis "Python implementation of the JSON-LD specification") |
| 9452 | (description "PyLD is an implementation of the JSON-LD specification.") |
| 9453 | (license license:bsd-3))) |
| 9454 | |
| 9455 | (define-public python-cli-helpers |
| 9456 | (package |
| 9457 | (name "python-cli-helpers") |
| 9458 | (version "2.7.0") |
| 9459 | (source |
| 9460 | (origin |
| 9461 | (method url-fetch) |
| 9462 | (uri (pypi-uri "cli_helpers" version)) |
| 9463 | (sha256 |
| 9464 | (base32 "1h4b0ka9nh9qidl6s1ard1ixh9c3d0ai5ph3013grhpbvc81glb2")))) |
| 9465 | (build-system pyproject-build-system) |
| 9466 | (native-inputs |
| 9467 | (list python-pytest |
| 9468 | python-setuptools)) |
| 9469 | (propagated-inputs |
| 9470 | (list python-configobj |
| 9471 | python-tabulate)) |
| 9472 | (home-page "https://github.com/dbcli/cli_helpers") |
| 9473 | (synopsis "Helpers for building command-line apps") |
| 9474 | (description |
| 9475 | "CLI Helpers is a Python package that makes it easy to perform common |
| 9476 | tasks when building command-line apps. It's a helper library for command-line |
| 9477 | interfaces.") |
| 9478 | (license license:bsd-3))) |
| 9479 | |
| 9480 | (define-public python-click |
| 9481 | (package |
| 9482 | (name "python-click") |
| 9483 | (version "8.4.1") |
| 9484 | (source |
| 9485 | (origin |
| 9486 | (method git-fetch) |
| 9487 | (uri (git-reference |
| 9488 | (url "https://github.com/pallets/click") |
| 9489 | (commit version))) |
| 9490 | (file-name (git-file-name name version)) |
| 9491 | (sha256 |
| 9492 | (base32 "18fhb6j3fz90088j5xw9vbd9k8xpq0cbk9i7izik4n3q3pm6vq3k")))) |
| 9493 | (build-system pyproject-build-system) |
| 9494 | (native-inputs |
| 9495 | (list less |
| 9496 | python-flit-core |
| 9497 | python-pytest)) |
| 9498 | (home-page "https://palletsprojects.com/p/click/") |
| 9499 | (synopsis "Command line library for Python") |
| 9500 | (description |
| 9501 | "Click is a Python package for creating command line interfaces in a |
| 9502 | composable way with as little code as necessary. Its name stands for |
| 9503 | \"Command Line Interface Creation Kit\". It's highly configurable but comes |
| 9504 | with sensible defaults out of the box.") |
| 9505 | (license license:bsd-3))) |
| 9506 | |
| 9507 | (define-public python-click-7 |
| 9508 | (package (inherit python-click) |
| 9509 | (name "python-click") |
| 9510 | (version "7.1.2") |
| 9511 | (source |
| 9512 | (origin |
| 9513 | (method url-fetch) |
| 9514 | (uri (pypi-uri "click" version)) |
| 9515 | (sha256 |
| 9516 | (base32 "06kbzd6sjfkqan3miwj9wqyddfxc2b6hi7p5s4dvqjb3gif2bdfj")))) |
| 9517 | (arguments (list #:tests? #f)) ;no tests in PyPI |
| 9518 | (native-inputs |
| 9519 | (list python-setuptools)))) |
| 9520 | |
| 9521 | (define-public python-click-8.1 |
| 9522 | (package |
| 9523 | (inherit python-click) |
| 9524 | (name "python-click") |
| 9525 | (version "8.1.7") |
| 9526 | (source |
| 9527 | (origin |
| 9528 | (method git-fetch) |
| 9529 | (uri (git-reference |
| 9530 | (url "https://github.com/pallets/click") |
| 9531 | (commit version))) |
| 9532 | (file-name (git-file-name name version)) |
| 9533 | (sha256 |
| 9534 | (base32 "132frw2g4i3s7kv325ah85wav5h92fv3n00wknhcgr5h3hlqi2pi")))) |
| 9535 | (native-inputs |
| 9536 | (list less |
| 9537 | python-pytest |
| 9538 | python-setuptools)))) |
| 9539 | |
| 9540 | (define-public python-click-aliases |
| 9541 | (package |
| 9542 | (name "python-click-aliases") |
| 9543 | (version "1.0.6") |
| 9544 | (source |
| 9545 | (origin |
| 9546 | (method git-fetch) |
| 9547 | (uri (git-reference |
| 9548 | (url "https://github.com/click-contrib/click-aliases") |
| 9549 | (commit (string-append "v" version)))) |
| 9550 | (file-name (git-file-name name version)) |
| 9551 | (sha256 |
| 9552 | (base32 "0jl45vl73x6hrqgj9n3jhga19v0c923v5kv3vdmb2wwn936jyxcw")))) |
| 9553 | (build-system pyproject-build-system) |
| 9554 | (native-inputs |
| 9555 | (list python-pytest |
| 9556 | python-poetry-core)) |
| 9557 | (propagated-inputs |
| 9558 | (list python-click)) |
| 9559 | (home-page "https://github.com/click-contrib/click-aliases") |
| 9560 | (synopsis "Enable aliases for Click") |
| 9561 | (description |
| 9562 | "This package helps to add (mutiple) aliases to a click group or command.") |
| 9563 | (license license:expat))) |
| 9564 | |
| 9565 | (define-public python-click-option-group |
| 9566 | (package |
| 9567 | (name "python-click-option-group") |
| 9568 | (version "0.5.9") |
| 9569 | (source |
| 9570 | (origin |
| 9571 | (method git-fetch) |
| 9572 | (uri (git-reference |
| 9573 | (url "https://github.com/click-contrib/click-option-group") |
| 9574 | (commit (string-append "v" version)))) |
| 9575 | (file-name (git-file-name name version)) |
| 9576 | (sha256 |
| 9577 | (base32 "1y9sprpgdmi4ww7hv04ciy0n6kacr4s8001zmf8781wr8vrxfb01")))) |
| 9578 | (build-system pyproject-build-system) |
| 9579 | (native-inputs |
| 9580 | (list python-hatch-vcs |
| 9581 | python-hatchling |
| 9582 | python-pytest)) |
| 9583 | (propagated-inputs |
| 9584 | (list python-click)) |
| 9585 | (home-page "https://click-option-group.readthedocs.io/") |
| 9586 | (synopsis "Option groups missing in Click") |
| 9587 | (description |
| 9588 | "Click is a package for creating powerful and beautiful command line |
| 9589 | interfaces (CLI) in Python, but it has no the functionality for creating option |
| 9590 | groups. The aim of this package is to provide group options with extensible |
| 9591 | functionality using canonical and clean API (Click-like API as far as |
| 9592 | possible).") |
| 9593 | (license license:bsd-3))) |
| 9594 | |
| 9595 | (define-public python-clickgen |
| 9596 | (package |
| 9597 | (name "python-clickgen") |
| 9598 | (version "2.2.5") |
| 9599 | (source (origin |
| 9600 | (method git-fetch) |
| 9601 | (uri (git-reference |
| 9602 | (url "https://github.com/ful1e5/clickgen") |
| 9603 | (commit (string-append "v" version)))) |
| 9604 | (file-name (git-file-name name version)) |
| 9605 | (sha256 |
| 9606 | (base32 |
| 9607 | "0gdbkdw9b52wbb0bbhs09bdfyfq979kvlv5sg5p70y3jal9j8lf8")))) |
| 9608 | (build-system pyproject-build-system) |
| 9609 | (arguments |
| 9610 | (list |
| 9611 | #:test-flags |
| 9612 | ;; XXX: See: <https://github.com/ful1e5/clickgen/issues/65>. |
| 9613 | '(list "-k" "not test_clickgen_raises"))) |
| 9614 | (native-inputs |
| 9615 | (list python-pytest |
| 9616 | python-setuptools)) |
| 9617 | (propagated-inputs |
| 9618 | (list python-attrs |
| 9619 | python-numpy |
| 9620 | python-pillow |
| 9621 | python-pyyaml |
| 9622 | python-toml)) |
| 9623 | (home-page "https://github.com/ful1e5/clickgen") |
| 9624 | (synopsis "The hassle-free cursor building toolbox") |
| 9625 | (description |
| 9626 | "Clickgen is an API for building X11 and Windows cursors from .png files. |
| 9627 | clickgen is using @code{anicursorgen} and @code{xcursorgen} under the hood.") |
| 9628 | (license license:expat))) |
| 9629 | |
| 9630 | (define-public python-clickhouse-connect |
| 9631 | (package |
| 9632 | (name "python-clickhouse-connect") |
| 9633 | (version "0.6.1") |
| 9634 | (source (origin |
| 9635 | (method git-fetch) |
| 9636 | (uri (git-reference |
| 9637 | (url "https://github.com/ClickHouse/clickhouse-connect") |
| 9638 | (commit (string-append "v" version)))) |
| 9639 | (file-name (git-file-name name version)) |
| 9640 | (sha256 |
| 9641 | (base32 |
| 9642 | "1s0lk7xdq8f351cmpbp6jidqi5zdazrdba7w7fxph0w8sd74amry")))) |
| 9643 | (build-system pyproject-build-system) |
| 9644 | (arguments |
| 9645 | (list |
| 9646 | #:test-flags |
| 9647 | ;; All these tests require docker-compose |
| 9648 | '(list "--ignore-glob=tests/integration_tests/*") |
| 9649 | #:phases |
| 9650 | '(modify-phases %standard-phases |
| 9651 | (add-after 'unpack 'patch-pyproject |
| 9652 | (lambda _ |
| 9653 | ;; Our version of pytest is confused by this field. |
| 9654 | (substitute* "pyproject.toml" |
| 9655 | (("^env_files.*") "")))) |
| 9656 | (add-before 'check 'build-extensions |
| 9657 | (lambda _ |
| 9658 | ;; Cython extensions have to be built before running the tests. |
| 9659 | (invoke "python" "setup.py" "build_ext" "--inplace")))))) |
| 9660 | (propagated-inputs |
| 9661 | (list python-arrow |
| 9662 | python-certifi |
| 9663 | python-lz4 |
| 9664 | python-numpy |
| 9665 | python-orjson |
| 9666 | python-pandas |
| 9667 | python-pytz |
| 9668 | python-setuptools ; For pkg_resources. |
| 9669 | python-sqlalchemy |
| 9670 | python-urllib3 |
| 9671 | python-zstandard)) |
| 9672 | (native-inputs |
| 9673 | (list python-cython |
| 9674 | python-pytest |
| 9675 | python-wheel)) |
| 9676 | (home-page "https://github.com/ClickHouse/clickhouse-connect") |
| 9677 | (synopsis |
| 9678 | "ClickHouse database core driver for Python, Pandas, and Superset") |
| 9679 | (description |
| 9680 | "This package provides a high performance core database driver for |
| 9681 | connecting ClickHouse to Python, Pandas, and Superset.") |
| 9682 | (license license:asl2.0))) |
| 9683 | |
| 9684 | (define-public python-cligj |
| 9685 | (package |
| 9686 | (name "python-cligj") |
| 9687 | (version "0.7.2") |
| 9688 | (source |
| 9689 | (origin |
| 9690 | (method url-fetch) |
| 9691 | (uri (pypi-uri "cligj" version)) |
| 9692 | (sha256 |
| 9693 | (base32 |
| 9694 | "09vbkik6kyn6yrqzl2r74vaybjk8kjykvi975hy3fsrm4gb17g54")))) |
| 9695 | (build-system pyproject-build-system) |
| 9696 | (native-inputs |
| 9697 | (list python-pytest |
| 9698 | python-setuptools)) |
| 9699 | (propagated-inputs |
| 9700 | (list python-click)) |
| 9701 | (home-page "https://github.com/mapbox/cligj") |
| 9702 | (synopsis "Click params for command line interfaces to GeoJSON") |
| 9703 | (description |
| 9704 | "cligj is for Python developers who create command line interfaces |
| 9705 | for geospatial data. cligj allows you to quickly build consistent, |
| 9706 | well-tested and interoperable CLIs for handling GeoJSON.") |
| 9707 | (license license:bsd-3))) |
| 9708 | |
| 9709 | (define-public python-cloup |
| 9710 | (package |
| 9711 | (name "python-cloup") |
| 9712 | (version "3.0.8") |
| 9713 | (source (origin |
| 9714 | (method url-fetch) |
| 9715 | (uri (pypi-uri "cloup" version)) |
| 9716 | (sha256 |
| 9717 | (base32 |
| 9718 | "1jryxdmvrxicfqdf5pqnzjbnwikg4r865gga9zvxv5jif850h77r")))) |
| 9719 | (build-system pyproject-build-system) |
| 9720 | (propagated-inputs (list python-click)) |
| 9721 | (native-inputs (list python-pytest python-setuptools python-setuptools-scm)) |
| 9722 | (home-page "https://github.com/janLuke/cloup") |
| 9723 | (synopsis "Extension library for python-click") |
| 9724 | (description |
| 9725 | "Cloup enriches Click with several features that make it more expressive |
| 9726 | and configurable such as option groups, constraints, subcommand aliases, |
| 9727 | subcommands sections and a themeable HelpFormatter.") |
| 9728 | (license license:bsd-3))) |
| 9729 | |
| 9730 | (define-public python-jsondiff |
| 9731 | (package |
| 9732 | (name "python-jsondiff") |
| 9733 | (version "2.2.1") |
| 9734 | (source |
| 9735 | (origin |
| 9736 | (method url-fetch) |
| 9737 | (uri (pypi-uri "jsondiff" version)) |
| 9738 | (sha256 |
| 9739 | (base32 |
| 9740 | "1zpp8l2ii9ic1sk6kdcqxk0v5q9pgdmdhg1h4vg8dfl6i8n1d3b5")))) |
| 9741 | (build-system pyproject-build-system) |
| 9742 | (arguments |
| 9743 | (list |
| 9744 | #:phases |
| 9745 | #~(modify-phases %standard-phases |
| 9746 | (add-before 'build 'set-version |
| 9747 | (lambda _ |
| 9748 | (substitute* "pyproject.toml" |
| 9749 | (("^version_file.*") "") |
| 9750 | (("dynamic = \\[\"version\"\\]") |
| 9751 | (string-append "version = \"" #$version "\"")))))))) |
| 9752 | (propagated-inputs (list python-pyyaml)) |
| 9753 | (native-inputs |
| 9754 | (list python-hypothesis |
| 9755 | python-pytest |
| 9756 | python-setuptools |
| 9757 | python-setuptools-scm |
| 9758 | python-wheel)) |
| 9759 | (home-page "https://github.com/fzumstein/jsondiff") |
| 9760 | (synopsis "Compare JSON and JSON-like structures in Python") |
| 9761 | (description "@code{jsondiff} is a Python library which lets you compare, |
| 9762 | diff, and patch JSON and JSON-like structures in Python.") |
| 9763 | (license license:expat))) |
| 9764 | |
| 9765 | (define-public python-ddlparse |
| 9766 | (package |
| 9767 | (name "python-ddlparse") |
| 9768 | (version "1.10.0") |
| 9769 | (source |
| 9770 | (origin |
| 9771 | (method url-fetch) |
| 9772 | (uri (pypi-uri "ddlparse" version)) |
| 9773 | (sha256 |
| 9774 | (base32 "1nh8m6rxslwk05daxshxmgk41qfp18yynydba49b13l4m8dnh634")))) |
| 9775 | (build-system pyproject-build-system) |
| 9776 | (native-inputs |
| 9777 | (list python-pytest python-setuptools)) |
| 9778 | (propagated-inputs (list python-pyparsing)) |
| 9779 | (home-page "https://github.com/shinichi-takii/ddlparse") |
| 9780 | (synopsis "Parses and converts DDL to BigQuery JSON schema") |
| 9781 | (description "This package provides @code{ddlparse}, a Python library to parse |
| 9782 | and convert DDL to BigQuery JSON schema.") |
| 9783 | (license license:bsd-3))) |
| 9784 | |
| 9785 | (define-public python-jsonschema |
| 9786 | (package |
| 9787 | (name "python-jsonschema") |
| 9788 | (version "4.26.0") |
| 9789 | (source |
| 9790 | (origin |
| 9791 | (method git-fetch) |
| 9792 | (uri (git-reference |
| 9793 | (url "https://github.com/Julian/jsonschema") |
| 9794 | (commit (string-append "v" version)))) |
| 9795 | (file-name (git-file-name name version)) |
| 9796 | (sha256 |
| 9797 | (base32 "0p89jy7s1agi2zqrsdm56p843k847n9cixjsc12hnzscll37kysk")))) |
| 9798 | (build-system pyproject-build-system) |
| 9799 | (arguments |
| 9800 | (list |
| 9801 | ;; tests: 7762 passed, 53 skipped |
| 9802 | #:phases |
| 9803 | #~(modify-phases %standard-phases |
| 9804 | (add-before 'check 'pre-check |
| 9805 | (lambda _ |
| 9806 | (setenv "JSON_SCHEMA_TEST_SUITE" "json")))))) |
| 9807 | (native-inputs |
| 9808 | (list python-hatchling |
| 9809 | python-hatch-fancy-pypi-readme |
| 9810 | python-hatch-vcs |
| 9811 | python-jsonpath-ng |
| 9812 | python-pytest)) |
| 9813 | (propagated-inputs |
| 9814 | (list python-attrs |
| 9815 | python-jsonschema-specifications |
| 9816 | python-referencing |
| 9817 | python-rpds-py |
| 9818 | ;; [optional] |
| 9819 | python-fqdn |
| 9820 | python-idna |
| 9821 | python-isoduration |
| 9822 | python-jsonpointer |
| 9823 | python-rfc3339-validator |
| 9824 | python-rfc3986-validator |
| 9825 | python-rfc3987-syntax ;sanity-check fails without this |
| 9826 | python-uri-template |
| 9827 | python-webcolors)) |
| 9828 | (home-page "https://github.com/Julian/jsonschema") |
| 9829 | (synopsis "Implementation of JSON Schema for Python") |
| 9830 | (description |
| 9831 | "Jsonschema is an implementation of JSON Schema for Python.") |
| 9832 | (license license:expat))) |
| 9833 | |
| 9834 | ;; For docker-compose 1.29.2, remove when its updated to the latest 2.x |
| 9835 | ;; version. |
| 9836 | (define-public python-jsonschema-3 |
| 9837 | (package |
| 9838 | (inherit python-jsonschema) |
| 9839 | (version "3.2.0") |
| 9840 | (source (origin |
| 9841 | (method url-fetch) |
| 9842 | (uri (pypi-uri "jsonschema" version)) |
| 9843 | (sha256 |
| 9844 | (base32 |
| 9845 | "0ykr61yiiizgvm3bzipa3l73rvj49wmrybbfwhvpgk3pscl5pa68")))) |
| 9846 | (arguments |
| 9847 | (substitute-keyword-arguments arguments |
| 9848 | ((#:tests? _ #t) #f))) |
| 9849 | (propagated-inputs |
| 9850 | (list python-attrs |
| 9851 | python-pyrsistent |
| 9852 | python-typing-extensions)) |
| 9853 | (native-inputs |
| 9854 | (list python-setuptools-scm python-twisted |
| 9855 | python-setuptools python-wheel)))) |
| 9856 | |
| 9857 | ;; A bare minimal package, mainly to use in tests and reduce closure size. |
| 9858 | ;; Tests are left out in the main package to slim down native-inputs and |
| 9859 | ;; propagated-inputs. |
| 9860 | (define-public python-jsonschema-minimal |
| 9861 | (package/inherit python-jsonschema |
| 9862 | (name "python-jsonschema-minimal") |
| 9863 | (arguments |
| 9864 | (substitute-keyword-arguments arguments |
| 9865 | ((#:tests? _ #t) #f))) |
| 9866 | (native-inputs |
| 9867 | (list python-hatchling |
| 9868 | python-hatch-fancy-pypi-readme |
| 9869 | python-hatch-vcs)) |
| 9870 | (propagated-inputs |
| 9871 | (list python-attrs |
| 9872 | python-jsonschema-specifications |
| 9873 | python-referencing |
| 9874 | python-rpds-py)))) |
| 9875 | |
| 9876 | (define-public python-jsonschema-path |
| 9877 | (package |
| 9878 | (name "python-jsonschema-path") |
| 9879 | (version "0.3.2") |
| 9880 | (source |
| 9881 | (origin |
| 9882 | (method url-fetch) |
| 9883 | (uri (pypi-uri "jsonschema_path" version)) |
| 9884 | (sha256 |
| 9885 | (base32 "129rb8y2bj2wwps8vs3z1qav006k7wz2myx5j6dnxqs1yfmsn3ad")))) |
| 9886 | (build-system pyproject-build-system) |
| 9887 | (arguments |
| 9888 | (list |
| 9889 | #:tests? #false ;there are none |
| 9890 | #:phases |
| 9891 | '(modify-phases %standard-phases |
| 9892 | (add-after 'unpack 'relax-requirements |
| 9893 | (lambda _ |
| 9894 | (substitute* "pyproject.toml" |
| 9895 | (("referencing = \">=0.28.0,<0.32.0\"") |
| 9896 | "referencing = \">=0.28.0\""))))))) |
| 9897 | (propagated-inputs (list python-pathable python-pyyaml python-referencing |
| 9898 | python-requests)) |
| 9899 | (native-inputs (list python-poetry-core)) |
| 9900 | (home-page "https://github.com/p1c2u/jsonschema-path") |
| 9901 | (synopsis "JSONSchema Spec with object-oriented paths") |
| 9902 | (description "This package implements object-oriented JSONSchema. It lets |
| 9903 | you traverse a schema like paths and access a schema on demand with separate |
| 9904 | dereferencing accessor layer.") |
| 9905 | (license license:asl2.0))) |
| 9906 | |
| 9907 | (define-public python-jsonschema-objects |
| 9908 | (package |
| 9909 | (name "python-jsonschema-objects") |
| 9910 | (version "0.5.7") |
| 9911 | (source |
| 9912 | (origin |
| 9913 | (method git-fetch) |
| 9914 | (uri (git-reference |
| 9915 | (url "https://github.com/cwacek/python-jsonschema-objects/") |
| 9916 | (commit version))) |
| 9917 | (file-name (git-file-name name version)) |
| 9918 | (sha256 |
| 9919 | (base32 "0p3m0fbj25brhfma4bl47xjq6x4ay14yx284qwrki96dwd6v46xd")))) |
| 9920 | (build-system pyproject-build-system) |
| 9921 | (native-inputs |
| 9922 | (list python-pytest |
| 9923 | python-pytest-mock |
| 9924 | python-setuptools)) |
| 9925 | (propagated-inputs |
| 9926 | (list python-inflection |
| 9927 | python-jsonschema |
| 9928 | python-markdown)) |
| 9929 | (home-page "http://python-jsonschema-objects.readthedocs.org/") |
| 9930 | (synopsis "Automatic Python binding generation from JSON schemas") |
| 9931 | (description |
| 9932 | "This package provides an automatic class-based binding to JSON |
| 9933 | Schemas for use in python.") |
| 9934 | (license license:expat))) |
| 9935 | |
| 9936 | (define-public python-jsonschema-specifications |
| 9937 | (package |
| 9938 | (name "python-jsonschema-specifications") |
| 9939 | (version "2025.9.1") |
| 9940 | (source |
| 9941 | (origin |
| 9942 | (method git-fetch) |
| 9943 | (uri (git-reference |
| 9944 | (url "https://github.com/python-jsonschema/jsonschema-specifications") |
| 9945 | (commit (string-append "v" version)))) |
| 9946 | (file-name (git-file-name name version)) |
| 9947 | (sha256 |
| 9948 | (base32 "0fxjcq2qqzahfi9jinns2gmrnjq1zf216dr3i480aphabdx1c67z")))) |
| 9949 | (build-system pyproject-build-system) |
| 9950 | (native-inputs |
| 9951 | (list python-hatch-vcs |
| 9952 | python-hatchling |
| 9953 | python-pytest)) |
| 9954 | (propagated-inputs |
| 9955 | (list python-referencing)) |
| 9956 | (home-page "https://github.com/python-jsonschema/jsonschema-specifications") |
| 9957 | (synopsis |
| 9958 | "JSON Schema meta-schemas and vocabularies, exposed as a Registry") |
| 9959 | (description |
| 9960 | "This package provides JSON support files from the JSON Schema |
| 9961 | Specifications (metaschemas, vocabularies, etc.), packaged for runtime access |
| 9962 | from Python as a referencing-based Schema Registry.") |
| 9963 | (license license:expat))) |
| 9964 | |
| 9965 | (define-public python-schema |
| 9966 | (package |
| 9967 | (name "python-schema") |
| 9968 | (version "0.7.8") |
| 9969 | (source |
| 9970 | (origin |
| 9971 | (method git-fetch) |
| 9972 | (uri (git-reference |
| 9973 | (url "https://github.com/keleshev/schema") |
| 9974 | (commit (string-append "v" version)))) |
| 9975 | (file-name (git-file-name name version)) |
| 9976 | (sha256 |
| 9977 | (base32 "149smlvj0jlvpsw39lw84c29prg76k1gr6iazl9fqydaqiaw52c5")))) |
| 9978 | (build-system pyproject-build-system) |
| 9979 | (native-inputs |
| 9980 | (list python-pytest python-setuptools)) |
| 9981 | (home-page "https://github.com/keleshev/schema") |
| 9982 | (synopsis "Simple data validation library") |
| 9983 | (description |
| 9984 | "@code{python-schema} is a library for validating Python data |
| 9985 | structures, such as those obtained from config-files, forms, external |
| 9986 | services or command-line parsing, converted from JSON/YAML (or |
| 9987 | something else) to Python data-types.") |
| 9988 | (license license:psfl))) |
| 9989 | |
| 9990 | (define-public python-kitchen |
| 9991 | (package |
| 9992 | (name "python-kitchen") |
| 9993 | (version "1.2.6") |
| 9994 | (source |
| 9995 | (origin |
| 9996 | (method git-fetch) |
| 9997 | (uri (git-reference |
| 9998 | (url "https://github.com/fedora-infra/kitchen") |
| 9999 | (commit version))) |
| 10000 | (file-name (git-file-name name version)) |
| 10001 | (sha256 |
| 10002 | (base32 "1wf2m4yx5467vxg4scgzihb0q9q3k7fasgxanhrnxpp1a5l8l93n")))) |
| 10003 | (build-system pyproject-build-system) |
| 10004 | (arguments |
| 10005 | (list |
| 10006 | #:test-flags |
| 10007 | #~(list "kitchen3" |
| 10008 | ;; XXX: Unclear why these tests fail. |
| 10009 | "-e" "test_invalid_fallback_no_raise" |
| 10010 | "-e" "test_internal_generate_combining_table" |
| 10011 | "-e" "test_lgettext" |
| 10012 | "-e" "test_lngettext" |
| 10013 | "-e" "test_easy_gettext_setup_non_unicode") |
| 10014 | #:phases |
| 10015 | #~(modify-phases %standard-phases |
| 10016 | (add-before 'check 'delete-broken-test-files |
| 10017 | (lambda _ |
| 10018 | (delete-file "kitchen3/tests/test__all__.py") |
| 10019 | (delete-file "kitchen3/tests/test_deprecation_py3.py")))))) |
| 10020 | (native-inputs (list python-pynose python-setuptools)) |
| 10021 | (home-page "https://github.com/fedora-infra/kitchen") |
| 10022 | (synopsis "Python API for snippets") |
| 10023 | (description |
| 10024 | "@code{kitchen} module provides a python API for all sorts of little |
| 10025 | useful snippets of code that everybody ends up writing for their projects but |
| 10026 | never seem big enough to build an independent release. Use kitchen and stop |
| 10027 | cutting and pasting that code over and over.") |
| 10028 | (license (list license:lgpl2.1+ |
| 10029 | ;; subprocess.py, test_subprocess.py, |
| 10030 | ;; kitchen/pycompat25/defaultdict.py: |
| 10031 | license:psfl)))) |
| 10032 | |
| 10033 | (define-public python-roman |
| 10034 | (package |
| 10035 | (name "python-roman") |
| 10036 | (version "5.2") |
| 10037 | (source |
| 10038 | (origin |
| 10039 | (method git-fetch) |
| 10040 | (uri (git-reference |
| 10041 | (url "https://github.com/zopefoundation/roman") |
| 10042 | (commit version))) |
| 10043 | (file-name (git-file-name name version)) |
| 10044 | (sha256 |
| 10045 | (base32 |
| 10046 | "0zvg6pmv0yxm0b96dx104jzlxnsi3wy4swbj1lmc3mym5nahgp36")))) |
| 10047 | (build-system pyproject-build-system) |
| 10048 | (arguments |
| 10049 | (list |
| 10050 | #:test-backend #~'unittest |
| 10051 | #:test-flags #~(list "discover" "-s" "src"))) |
| 10052 | (native-inputs (list python-setuptools)) |
| 10053 | (home-page "https://github.com/zopefoundation/roman") |
| 10054 | (synopsis "Integer to Roman numerals converter") |
| 10055 | (description |
| 10056 | "This package provides a small helper library to convert Arabic Numbers |
| 10057 | to Roman Numerals.") |
| 10058 | (license license:zpl2.1))) |
| 10059 | |
| 10060 | (define-public python-rollbar |
| 10061 | (package |
| 10062 | (name "python-rollbar") |
| 10063 | (version "1.3.0") |
| 10064 | (source (origin |
| 10065 | (method url-fetch) |
| 10066 | (uri (pypi-uri "rollbar" version)) |
| 10067 | (sha256 |
| 10068 | (base32 |
| 10069 | "0ydksca7glb7g026f4f8nsvpyj8qpgv74642hjj4zk4vqgm0552i")))) |
| 10070 | (build-system pyproject-build-system) |
| 10071 | (native-inputs (list python-httpx |
| 10072 | python-pytest |
| 10073 | python-setuptools |
| 10074 | python-webob |
| 10075 | python-wheel)) |
| 10076 | (inputs (list python-requests)) |
| 10077 | (home-page "https://github.com/rollbar/pyrollbar") |
| 10078 | (synopsis "Notifier for exceptions, errors, and log messages to Rollbar") |
| 10079 | (description |
| 10080 | "Python SDK for reporting exceptions, errors, and log messages |
| 10081 | to @url{https://rollbar.com/, Rollbar}. |
| 10082 | |
| 10083 | Capabilities include: |
| 10084 | |
| 10085 | @itemize @bullet |
| 10086 | @item Sending messages and exceptions with arbitrary context |
| 10087 | @item Getting back aggregates |
| 10088 | @item Debugging production issues |
| 10089 | @end itemize") |
| 10090 | (license license:expat))) |
| 10091 | |
| 10092 | (define-public python-pyjwt |
| 10093 | (package |
| 10094 | (name "python-pyjwt") |
| 10095 | (version "2.10.1") |
| 10096 | (source |
| 10097 | (origin |
| 10098 | (method url-fetch) |
| 10099 | (uri (pypi-uri "pyjwt" version)) |
| 10100 | (sha256 |
| 10101 | (base32 "0lqr73wnrnxflbh8wr768hxp493qayhdis86mwy26280n8p7gi9w")))) |
| 10102 | (build-system pyproject-build-system) |
| 10103 | (arguments |
| 10104 | (list |
| 10105 | ;; tests: 286 passed, 4 skipped, 1 deselected |
| 10106 | ;; |
| 10107 | ;; jwt.exceptions.PyJWKClientConnectionError: Fail to fetch data from |
| 10108 | ;; the url, err: "<urlopen error [Errno -3] Temporary failure in name |
| 10109 | ;; resolution>" |
| 10110 | #:test-flags #~(list "-k" "not test_get_jwt_set_sslcontext_default"))) |
| 10111 | (native-inputs |
| 10112 | (list python-pytest |
| 10113 | python-setuptools)) |
| 10114 | (propagated-inputs |
| 10115 | (if (supported-package? python-cryptography) |
| 10116 | (list python-cryptography) |
| 10117 | '())) |
| 10118 | (home-page "https://github.com/progrium/pyjwt") |
| 10119 | (synopsis "JSON Web Token implementation in Python") |
| 10120 | (description |
| 10121 | "PyJWT is a JSON Web Token implementation written in Python.") |
| 10122 | (license license:expat))) |
| 10123 | |
| 10124 | (define-public python-pymsgbox |
| 10125 | (let ((commit "944b7cdc67058d005ce5fd011c66f2d87d25aba0") |
| 10126 | (revision "1")) |
| 10127 | (package |
| 10128 | (name "python-pymsgbox") |
| 10129 | (version (git-version "1.0.6" revision commit)) |
| 10130 | (source |
| 10131 | (origin |
| 10132 | (method git-fetch) |
| 10133 | (uri (git-reference |
| 10134 | (url "https://github.com/asweigart/PyMsgBox") |
| 10135 | (commit commit))) |
| 10136 | (file-name (git-file-name name version)) |
| 10137 | (sha256 |
| 10138 | (base32 "1bhipfvnc06l8hiadk302v74yin38nwz1r47njliwk8kz103yl3g")))) |
| 10139 | (build-system pyproject-build-system) |
| 10140 | (arguments |
| 10141 | ;; Circular dependency to run tests: |
| 10142 | ;; Tests need pyautogui, which depends on pymsgbox. |
| 10143 | '(#:tests? #f)) |
| 10144 | (native-inputs (list python-setuptools python-wheel)) |
| 10145 | (home-page "https://github.com/asweigart/PyMsgBox") |
| 10146 | (synopsis "Python module for JavaScript-like message boxes") |
| 10147 | (description |
| 10148 | "PyMsgBox is a simple, cross-platform, pure Python module for |
| 10149 | JavaScript-like message boxes. Types of dialog boxes include: |
| 10150 | @enumerate |
| 10151 | @item alert |
| 10152 | @item confirm |
| 10153 | @item prompt |
| 10154 | @item password |
| 10155 | @end enumerate |
| 10156 | ") |
| 10157 | (license license:bsd-3)))) |
| 10158 | |
| 10159 | (define-public python-pympler |
| 10160 | (let ((commit "6d595e0ac72d0a6ed2fb4aa77ae5f89189667721") |
| 10161 | (revision "0")) |
| 10162 | (package |
| 10163 | (name "python-pympler") |
| 10164 | (version (git-version "1.1" revision commit)) |
| 10165 | (source |
| 10166 | (origin |
| 10167 | (method git-fetch) |
| 10168 | (uri (git-reference |
| 10169 | (url "https://github.com/pympler/pympler") |
| 10170 | (commit commit))) |
| 10171 | (file-name (git-file-name name version)) |
| 10172 | (sha256 |
| 10173 | (base32 "0clr767p1ky6ckvisq8iv6alcaya2hhvyk3z57wbs765brag4pdh")))) |
| 10174 | (build-system pyproject-build-system) |
| 10175 | (arguments |
| 10176 | (list |
| 10177 | #:tests? #f ;FIXME: tests timeout. |
| 10178 | #:test-flags |
| 10179 | #~(list |
| 10180 | ;; This test fails with error: 'function (test.muppy.test_summary.func)' |
| 10181 | ;; != 'function (muppy.test_summary.func)'. |
| 10182 | ;; See <https://github.com/pympler/pympler/issues/134>. |
| 10183 | "--deselect=test/muppy/test_summary.py::SummaryTest::test_repr_function" |
| 10184 | ;; This test times out. |
| 10185 | "--deselect=test/gui/test_web.py::WebGuiTest::test_traceback" |
| 10186 | "--deselect=test/muppy/test_tracker.py::TrackerTest::test_otracker_diff"))) |
| 10187 | (native-inputs |
| 10188 | (list python-pytest python-setuptools)) |
| 10189 | (home-page "https://pythonhosted.org/Pympler/") |
| 10190 | (synopsis "Measure, monitor and analyze memory behavior") |
| 10191 | (description |
| 10192 | "Pympler is a development tool to measure, monitor and analyze |
| 10193 | the memory behavior of Python objects in a running Python application. |
| 10194 | |
| 10195 | By pympling a Python application, detailed insight in the size and the |
| 10196 | lifetime of Python objects can be obtained. Undesirable or unexpected |
| 10197 | runtime behavior like memory bloat and other @samp{pymples} can easily |
| 10198 | be identified. |
| 10199 | |
| 10200 | A web profiling frontend exposes process statistics, garbage |
| 10201 | visualisation and class tracker statistics.") |
| 10202 | (license license:asl2.0)))) |
| 10203 | |
| 10204 | (define-public python-itsdangerous |
| 10205 | (package |
| 10206 | (name "python-itsdangerous") |
| 10207 | (version "2.2.0") |
| 10208 | (source |
| 10209 | (origin |
| 10210 | (method url-fetch) |
| 10211 | (uri (pypi-uri "itsdangerous" version)) |
| 10212 | (sha256 |
| 10213 | (base32 "0wv1bwzbfvpsh4ng5gn4d4mjwvjwpg7w0jgiz8zsbvm1gl5hq1g0")))) |
| 10214 | (build-system pyproject-build-system) |
| 10215 | (native-inputs |
| 10216 | (list python-flit-core |
| 10217 | python-freezegun |
| 10218 | python-pytest)) |
| 10219 | (home-page "https://palletsprojects.com/p/itsdangerous/") |
| 10220 | (synopsis "Python library for passing data to/from untrusted environments") |
| 10221 | (description |
| 10222 | "Itsdangerous provides various helpers to pass trusted data to untrusted |
| 10223 | environments and back.") |
| 10224 | (license license:bsd-3))) |
| 10225 | |
| 10226 | ;; WARNING: This package is a dependency of mesa. |
| 10227 | (define-public python-pyyaml |
| 10228 | (package |
| 10229 | (name "python-pyyaml") |
| 10230 | (version "6.0.3") |
| 10231 | (source |
| 10232 | (origin |
| 10233 | (method git-fetch) |
| 10234 | (uri (git-reference |
| 10235 | (url "https://github.com/yaml/pyyaml") |
| 10236 | (commit version))) |
| 10237 | (file-name (git-file-name name version)) |
| 10238 | (sha256 |
| 10239 | (base32 "0w00gkjqx1g8c5gdm9qqznnj7ijzfjqwqgymppqw5lbw38h2hjld")))) |
| 10240 | (build-system pyproject-build-system) |
| 10241 | (native-inputs |
| 10242 | (list python-cython |
| 10243 | python-pytest |
| 10244 | python-setuptools)) |
| 10245 | (inputs |
| 10246 | (list libyaml)) |
| 10247 | (home-page "https://pyyaml.org") |
| 10248 | (synopsis "YAML parser and emitter for Python") |
| 10249 | (description |
| 10250 | "PyYAML is a YAML parser and emitter for Python. PyYAML features a |
| 10251 | complete YAML 1.1 parser, Unicode support, pickle support, capable extension |
| 10252 | API, and sensible error messages. PyYAML supports standard YAML tags and |
| 10253 | provides Python-specific tags that represent an arbitrary Python object.") |
| 10254 | (license license:expat))) |
| 10255 | |
| 10256 | (define-public python-crossenv |
| 10257 | (package |
| 10258 | (name "python-crossenv") |
| 10259 | (version "1.6.1") |
| 10260 | (source |
| 10261 | (origin |
| 10262 | (method git-fetch) |
| 10263 | (uri (git-reference |
| 10264 | (url "https://github.com/benfogle/crossenv") |
| 10265 | (commit (string-append "v" version)))) |
| 10266 | (file-name (git-file-name name version)) |
| 10267 | (sha256 |
| 10268 | (base32 "15mj5kfb30jj0m1jj8qz19zdf53380j14hzj2rx13ilnr1d7j6rn")))) |
| 10269 | (build-system pyproject-build-system) |
| 10270 | (arguments |
| 10271 | (list |
| 10272 | ;; XXX: Running test require setting environment variables for |
| 10273 | ;; architectures. |
| 10274 | #:tests? #f)) |
| 10275 | (native-inputs (list python-hatchling)) |
| 10276 | (home-page "https://github.com/benfogle/crossenv") |
| 10277 | (synopsis "Cross-compiling virtualenv for Python") |
| 10278 | (description |
| 10279 | "This package is a tool for cross-compiling extension modules. It |
| 10280 | creates a special virtual environment such that @command{pip} or |
| 10281 | @file{setup.py} will cross compile packages for you, usually with no further |
| 10282 | work on your part.") |
| 10283 | (license license:expat))) |
| 10284 | |
| 10285 | (define-public python-linkify-it-py |
| 10286 | (package |
| 10287 | (name "python-linkify-it-py") |
| 10288 | (version "2.1.0") |
| 10289 | (source (origin |
| 10290 | (method git-fetch) |
| 10291 | (uri (git-reference |
| 10292 | (url "https://github.com/tsutsu3/linkify-it-py") |
| 10293 | (commit (string-append "v" version)))) |
| 10294 | (file-name (git-file-name name version)) |
| 10295 | (sha256 |
| 10296 | (base32 |
| 10297 | "006yvm2pcilq60zb02ijhdma26csynhkffb8wscjmjzbwqq8fzqh")))) |
| 10298 | (build-system pyproject-build-system) |
| 10299 | (propagated-inputs (list python-uc-micro-py)) |
| 10300 | (native-inputs (list python-pytest python-setuptools)) |
| 10301 | (home-page "https://github.com/tsutsu3/linkify-it-py") |
| 10302 | (synopsis "Links recognition library with full Unicode support") |
| 10303 | (description "This is Python port of |
| 10304 | @url{https://github.com/markdown-it/linkify-it, linkify-it}, which is a links |
| 10305 | recognition library with full Unicode support. It has features like: |
| 10306 | @itemize |
| 10307 | @item Full unicode support, with @i{astral} characters |
| 10308 | @item International domains support |
| 10309 | @item Allows rules extension and custom normalizers. |
| 10310 | @end itemize") |
| 10311 | (license license:expat))) |
| 10312 | |
| 10313 | (define-public python-makefun |
| 10314 | (package |
| 10315 | (name "python-makefun") |
| 10316 | ;; Released version fails tests in Python 3.12 due to asyncio |
| 10317 | (properties '((commit . "bacb3e1a6edc36e5f8dda3fbdad5dacdda1675eb") |
| 10318 | (revision . "0"))) |
| 10319 | (version (git-version "1.16.0" |
| 10320 | (assoc-ref properties 'revision) |
| 10321 | (assoc-ref properties 'commit))) |
| 10322 | (source |
| 10323 | (origin |
| 10324 | (method git-fetch) |
| 10325 | (uri (git-reference |
| 10326 | (url "https://github.com/smarie/python-makefun") |
| 10327 | (commit (assoc-ref properties 'commit)))) |
| 10328 | (file-name (git-file-name name version)) |
| 10329 | (sha256 |
| 10330 | (base32 |
| 10331 | "10xw93r9lxqfgaapnf07pywmy58mw8z7fgcaw7ym66cn71gjxw4d")))) |
| 10332 | (build-system pyproject-build-system) |
| 10333 | (native-inputs |
| 10334 | (list python-pytest |
| 10335 | python-pytest-asyncio |
| 10336 | python-setuptools |
| 10337 | python-setuptools-scm)) |
| 10338 | (home-page "https://github.com/smarie/python-makefun") |
| 10339 | (synopsis "Library to dynamically create python functions") |
| 10340 | (description "@code{makefun} helps create functions dynamically with a |
| 10341 | given signature. It was largely inspired by @code{python-decorator} and |
| 10342 | @code{functools}.") |
| 10343 | (license license:bsd-3))) |
| 10344 | |
| 10345 | (define-public python-markdown-it-py |
| 10346 | (package |
| 10347 | (name "python-markdown-it-py") |
| 10348 | (version "4.0.0") |
| 10349 | (source |
| 10350 | (origin |
| 10351 | (method git-fetch) |
| 10352 | (uri (git-reference |
| 10353 | (url "https://github.com/executablebooks/markdown-it-py") |
| 10354 | (commit (string-append "v" version)))) |
| 10355 | (file-name (git-file-name name version)) |
| 10356 | (sha256 |
| 10357 | (base32 "1ayx5pjm1wa1g6v0b9c013xn6g6055b1ng41iqr3rnxdr1q7sqpp")))) |
| 10358 | (build-system pyproject-build-system) |
| 10359 | (arguments (list #:test-flags #~(list "--benchmark-disable"))) |
| 10360 | (native-inputs |
| 10361 | (list python-flit-core |
| 10362 | python-pytest |
| 10363 | python-pytest-benchmark |
| 10364 | python-pytest-regressions |
| 10365 | python-requests)) |
| 10366 | (propagated-inputs |
| 10367 | (list python-commonmark |
| 10368 | python-linkify-it-py |
| 10369 | python-markdown |
| 10370 | python-mdurl |
| 10371 | python-mistletoe |
| 10372 | python-mistune |
| 10373 | python-panflute |
| 10374 | python-pyyaml)) |
| 10375 | (home-page "https://github.com/executablebooks/markdown-it-py") |
| 10376 | (synopsis "Python port of markdown-it") |
| 10377 | (description |
| 10378 | "This is a Python port of @code{markdown-it}, and some of its associated |
| 10379 | plugins. The driving design philosophy of the port has been to change as |
| 10380 | little of the fundamental code structure (file names, function name, etc) as |
| 10381 | possible.") |
| 10382 | (license license:expat))) |
| 10383 | |
| 10384 | (define-public python-markupsafe |
| 10385 | (package |
| 10386 | (name "python-markupsafe") |
| 10387 | (version "3.0.3") |
| 10388 | (source |
| 10389 | (origin |
| 10390 | (method url-fetch) |
| 10391 | (uri (pypi-uri "markupsafe" version)) |
| 10392 | (sha256 |
| 10393 | (base32 "160npsg7jh6mbiwy23xm9aqcxgcn0wl33hgx42rmfr2biy09a9kj")))) |
| 10394 | (build-system pyproject-build-system) |
| 10395 | ;; tests: 79 passed, 1 skipped |
| 10396 | (native-inputs |
| 10397 | (list python-pytest |
| 10398 | python-setuptools)) |
| 10399 | (home-page "https://markupsafe.palletsprojects.com") |
| 10400 | (synopsis "XML/HTML/XHTML markup safe string implementation for Python") |
| 10401 | (description |
| 10402 | "Markupsafe provides an XML/HTML/XHTML markup safe string implementation |
| 10403 | for Python.") |
| 10404 | (license license:bsd-3))) |
| 10405 | |
| 10406 | (define-public python-jinja2 |
| 10407 | (package |
| 10408 | (name "python-jinja2") |
| 10409 | (version "3.1.6") |
| 10410 | (source |
| 10411 | (origin |
| 10412 | (method git-fetch) |
| 10413 | (uri (git-reference |
| 10414 | (url "https://github.com/pallets/jinja") |
| 10415 | (commit version))) |
| 10416 | (file-name (git-file-name name version)) |
| 10417 | (sha256 |
| 10418 | (base32 "01ds59a1cync34xq7s0q6f50k9nvn2n80zh62qa2a8vnr7fz5nlv")))) |
| 10419 | (build-system pyproject-build-system) |
| 10420 | (native-inputs |
| 10421 | (list python-flit-core |
| 10422 | python-pytest |
| 10423 | python-trio)) |
| 10424 | (propagated-inputs |
| 10425 | (list python-markupsafe)) |
| 10426 | (home-page "https://jinja.palletsprojects.com/") |
| 10427 | (synopsis "Python template engine") |
| 10428 | (description |
| 10429 | "Jinja2 is a small but fast and easy to use stand-alone template engine |
| 10430 | written in pure Python.") |
| 10431 | (license license:bsd-3))) |
| 10432 | |
| 10433 | (define-public python-jinja2-fragments |
| 10434 | (package |
| 10435 | (name "python-jinja2-fragments") |
| 10436 | (version "1.11.0") |
| 10437 | (source |
| 10438 | (origin |
| 10439 | (method git-fetch) |
| 10440 | (uri (git-reference |
| 10441 | (url "https://github.com/sponsfreixes/jinja2-fragments") |
| 10442 | (commit version))) |
| 10443 | (file-name (git-file-name name version)) |
| 10444 | (sha256 |
| 10445 | (base32 "14qr0ppllq296c1y2i5ly8l4y97q8msin5khlpli3akgrzsnvmkl")) |
| 10446 | (patches |
| 10447 | ;; Remove test setup code related to `litestar` and `sanic` |
| 10448 | (search-patches "python-jinja2-fragments-modify-conftest-py.patch")))) |
| 10449 | (build-system pyproject-build-system) |
| 10450 | (arguments |
| 10451 | (list |
| 10452 | #:test-flags |
| 10453 | #~(list "--ignore=tests/test_litestar.py" |
| 10454 | "--ignore=tests/test_sanic.py"))) |
| 10455 | (native-inputs |
| 10456 | (list python-fastapi |
| 10457 | python-flask |
| 10458 | python-pytest |
| 10459 | python-pytest-asyncio |
| 10460 | python-quart |
| 10461 | python-setuptools)) |
| 10462 | (propagated-inputs |
| 10463 | (list python-jinja2)) |
| 10464 | (home-page "https://github.com/sponsfreixes/jinja2-fragments") |
| 10465 | (synopsis "Jinja2 extension for template fragments") |
| 10466 | (description |
| 10467 | "Render Jinja2 template block as HTML page fragments on Python web |
| 10468 | frameworks.") |
| 10469 | (license license:expat))) |
| 10470 | |
| 10471 | (define-public python-pypugjs |
| 10472 | (package |
| 10473 | (name "python-pypugjs") |
| 10474 | (version "5.12.0") |
| 10475 | (source |
| 10476 | (origin |
| 10477 | (method git-fetch) |
| 10478 | (uri (git-reference |
| 10479 | (url "https://github.com/kakulukia/pypugjs") |
| 10480 | (commit (string-append "v" version)))) |
| 10481 | (file-name (git-file-name name version)) |
| 10482 | (sha256 |
| 10483 | (base32 "008wxvh2p08i8mlgak8hz3z057m06m4ydrca2ickl2m593476xi4")))) |
| 10484 | (build-system pyproject-build-system) |
| 10485 | (native-inputs (list python-django |
| 10486 | python-jinja2 |
| 10487 | python-flask |
| 10488 | python-mako |
| 10489 | python-poetry-core |
| 10490 | python-pytest |
| 10491 | python-tornado)) |
| 10492 | (propagated-inputs (list python-charset-normalizer python-six)) |
| 10493 | (home-page "https://github.com/kakulukia/pypugjs") |
| 10494 | (synopsis "Convert Pug source files into different template languages") |
| 10495 | (description |
| 10496 | "PyPugJS is a high-performance port of PugJS for Python, that converts |
| 10497 | any @file{.pug} source into different template languages: Django, Jinja2, |
| 10498 | Mako, and Tornado.") |
| 10499 | (license license:expat))) ;; MIT |
| 10500 | |
| 10501 | (define-public python-pysrt |
| 10502 | (package |
| 10503 | (name "python-pysrt") |
| 10504 | (version "1.1.2") |
| 10505 | (source |
| 10506 | (origin |
| 10507 | (method git-fetch) |
| 10508 | (uri (git-reference |
| 10509 | (url "https://github.com/byroot/pysrt") |
| 10510 | (commit (string-append "v" version)))) |
| 10511 | (file-name (git-file-name name version)) |
| 10512 | (sha256 |
| 10513 | (base32 "1f5hxyzlh5mdvvi52qapys9qcinffr6ghgivb6k4jxa92cbs3mfg")))) |
| 10514 | (build-system pyproject-build-system) |
| 10515 | (arguments |
| 10516 | (list |
| 10517 | #:test-backend #~'unittest |
| 10518 | #:phases |
| 10519 | #~(modify-phases %standard-phases |
| 10520 | (add-after 'unpack 'fix-python-incompatibilities |
| 10521 | (lambda _ |
| 10522 | (substitute* (find-files "tests" "\\.py$") |
| 10523 | (("assertEquals") "assertEqual"))))))) |
| 10524 | (propagated-inputs (list python-chardet)) |
| 10525 | (native-inputs (list python-setuptools)) |
| 10526 | (home-page "https://github.com/byroot/pysrt") |
| 10527 | (synopsis "SubRip Text subtitle parser and writer") |
| 10528 | (description |
| 10529 | "This package provides a Python library to edit or create |
| 10530 | SubRip Text files, and additionally a command-line program @command{srt} |
| 10531 | to shift, split or rescale them.") |
| 10532 | (license license:gpl3+))) |
| 10533 | |
| 10534 | (define-public python-pystache |
| 10535 | (package |
| 10536 | (name "python-pystache") |
| 10537 | (version "0.6.8") |
| 10538 | (source (origin |
| 10539 | (method url-fetch) |
| 10540 | (uri (pypi-uri "pystache" version)) |
| 10541 | (sha256 |
| 10542 | (base32 |
| 10543 | "0b67fmq0wmfkgcr7qqc44vvpvh8zkdk0rh87kccds9jdda7521rp")))) |
| 10544 | (build-system pyproject-build-system) |
| 10545 | (native-inputs (list python-pytest python-setuptools python-wheel)) |
| 10546 | (home-page "http://defunkt.io/pystache/") |
| 10547 | (synopsis "Python logic-less template engine") |
| 10548 | (description |
| 10549 | "Pystache is a Python implementation of the framework agnostic, |
| 10550 | logic-free templating system Mustache.") |
| 10551 | (license license:expat))) |
| 10552 | |
| 10553 | (define-public python-pystack |
| 10554 | (package |
| 10555 | (name "python-pystack") |
| 10556 | (version "1.5.1") |
| 10557 | (source |
| 10558 | (origin |
| 10559 | (method git-fetch) |
| 10560 | (uri (git-reference |
| 10561 | (url "https://github.com/bloomberg/pystack") |
| 10562 | (commit (string-append "v" version)))) |
| 10563 | (file-name (git-file-name name version)) |
| 10564 | (sha256 |
| 10565 | (base32 "0b9fvk0k09d7h6jv4nix9z8b980pcpi1kxnr9hlfhhgv70n7jz88")))) |
| 10566 | (build-system pyproject-build-system) |
| 10567 | (arguments |
| 10568 | (list |
| 10569 | ;; Integration tests need ptrace and gcore (gdb). |
| 10570 | #:test-flags #~(list "tests/unit"))) |
| 10571 | (native-inputs |
| 10572 | (list python-cython |
| 10573 | python-pkgconfig |
| 10574 | python-pytest |
| 10575 | python-setuptools)) |
| 10576 | (inputs |
| 10577 | (list elfutils)) |
| 10578 | (home-page "https://github.com/bloomberg/pystack") |
| 10579 | (synopsis "Python stack trace analyzer for core dumps and live processes") |
| 10580 | (description |
| 10581 | "PyStack analyzes stack frames of running Python processes or Python core |
| 10582 | dumps. It can inspect what a process is doing or what it was doing when it |
| 10583 | crashed, without modifying any memory or executing code in the target process.") |
| 10584 | (license license:asl2.0))) |
| 10585 | |
| 10586 | (define-public python-pystitcher |
| 10587 | (package |
| 10588 | (name "python-pystitcher") |
| 10589 | (properties '((commit . "d8150be85d53335f7077491ab4d73fad772ef1c9") |
| 10590 | (revision . "0") |
| 10591 | (upstream-version . "1.0.5"))) |
| 10592 | (version (git-version (assoc-ref properties 'upstream-version) |
| 10593 | (assoc-ref properties 'revision) |
| 10594 | (assoc-ref properties 'commit))) |
| 10595 | (source |
| 10596 | (origin |
| 10597 | (method git-fetch) |
| 10598 | (uri (git-reference |
| 10599 | (url "https://github.com/captn3m0/pystitcher") |
| 10600 | (commit (assoc-ref properties 'commit)))) |
| 10601 | (file-name (git-file-name name version)) |
| 10602 | (sha256 |
| 10603 | (base32 "02q03smvfz6x8v45s6qcgh1r2plpcam7ra24ikgqlmq005w7nhv3")))) |
| 10604 | (build-system pyproject-build-system) |
| 10605 | (native-inputs (list python-hatchling python-hatch-vcs python-pytest)) |
| 10606 | (inputs (list python-html5lib |
| 10607 | python-markdown |
| 10608 | python-pypdf |
| 10609 | python-validators)) |
| 10610 | (home-page "https://github.com/captn3m0/pystitcher") |
| 10611 | (synopsis "Declaratively stitch together a PDF file from multiple sources") |
| 10612 | (description |
| 10613 | "This package stitches your PDF files together, generating customizable |
| 10614 | bookmarks using a declarative input in the form of a markdown file.") |
| 10615 | (license license:expat))) |
| 10616 | |
| 10617 | (define-public python-joblib |
| 10618 | (package |
| 10619 | (name "python-joblib") |
| 10620 | (version "1.5.3") |
| 10621 | (source |
| 10622 | (origin |
| 10623 | (method git-fetch) |
| 10624 | (uri (git-reference |
| 10625 | (url "https://github.com/joblib/joblib") |
| 10626 | (commit version))) |
| 10627 | (file-name (git-file-name name version)) |
| 10628 | (sha256 |
| 10629 | (base32 "0vblgi0mb1jcwgf8f3rslw82g28fjl6n52mwgsm7p7y2nrixdrjb")))) |
| 10630 | (build-system pyproject-build-system) |
| 10631 | (arguments |
| 10632 | (list |
| 10633 | ;; tests: 1319 passed, 103 skipped, 3 xpassed, 563 warnings |
| 10634 | #:test-flags |
| 10635 | #~(list "--numprocesses" (number->string (min 8 (parallel-job-count))) |
| 10636 | ;; Disabled to avoid having to depend on ipython/jupyter. |
| 10637 | "-k" "not test_parallel_call_cached_function_defined_in_jupyter"))) |
| 10638 | (native-inputs |
| 10639 | (list python-pytest |
| 10640 | python-pytest-asyncio |
| 10641 | python-pytest-xdist |
| 10642 | python-setuptools)) |
| 10643 | (home-page "https://joblib.readthedocs.io/") |
| 10644 | (synopsis "Using Python functions as pipeline jobs") |
| 10645 | (description |
| 10646 | "Joblib is a set of tools to provide lightweight pipelining in Python. |
| 10647 | In particular, joblib offers: transparent disk-caching of the output values |
| 10648 | and lazy re-evaluation (memoize pattern), easy simple parallel computing |
| 10649 | logging and tracing of the execution.") |
| 10650 | (license license:bsd-3))) |
| 10651 | |
| 10652 | (define-public python-daemon |
| 10653 | (package |
| 10654 | (name "python-daemon") |
| 10655 | (version "3.1.2") |
| 10656 | (source |
| 10657 | (origin |
| 10658 | (method git-fetch) |
| 10659 | (uri (git-reference |
| 10660 | (url "https://pagure.io/python-daemon") |
| 10661 | (commit (string-append "release/" version)))) |
| 10662 | (file-name (git-file-name name version)) |
| 10663 | (sha256 |
| 10664 | (base32 "0rfchh68pxg68s02idc0qcm2s9yn587hv0b83r4isy5ccb3g60y4")) |
| 10665 | (patches |
| 10666 | (search-patches "python-daemon-relax-lockfile.patch")))) |
| 10667 | (build-system pyproject-build-system) |
| 10668 | (arguments |
| 10669 | (list |
| 10670 | #:phases |
| 10671 | #~(modify-phases %standard-phases |
| 10672 | (add-after 'unpack 'discard-dynamic-metadata |
| 10673 | (lambda _ |
| 10674 | (substitute* "pyproject.toml" |
| 10675 | (("^dynamic = " all) |
| 10676 | (format #f "version = ~s~%~a" #$version all)) |
| 10677 | (("\"(description|readme|version|maintainers)\",") |
| 10678 | "")) |
| 10679 | (for-each delete-file |
| 10680 | '("setup.py" |
| 10681 | "test/test_util_metadata.py" |
| 10682 | "test/test_setup.py"))))))) |
| 10683 | (propagated-inputs (list python-filelock)) |
| 10684 | (native-inputs (list python-testscenarios python-setuptools)) |
| 10685 | (home-page "https://pagure.io/python-daemon/") |
| 10686 | (synopsis "Python library for making a Unix daemon process") |
| 10687 | (description |
| 10688 | "Python-daemon is a library that assists a Python program to turn itself |
| 10689 | into a well-behaved Unix daemon process, as specified in PEP 3143. |
| 10690 | |
| 10691 | This library provides a @code{DaemonContext} class that manages the following |
| 10692 | important tasks for becoming a daemon process: |
| 10693 | @enumerate |
| 10694 | @item Detach the process into its own process group. |
| 10695 | @item Set process environment appropriate for running inside a chroot. |
| 10696 | @item Renounce suid and sgid privileges. |
| 10697 | @item Close all open file descriptors. |
| 10698 | @item Change the working directory, uid, gid, and umask. |
| 10699 | @item Set appropriate signal handlers. |
| 10700 | @item Open new file descriptors for stdin, stdout, and stderr. |
| 10701 | @item Manage a specified PID lock file. |
| 10702 | @item Register cleanup functions for at-exit processing. |
| 10703 | @end enumerate") |
| 10704 | ;; Only setup.py is gpl3+, everything else is apache 2.0 licensed. |
| 10705 | (license (list license:asl2.0 license:gpl3+)))) |
| 10706 | |
| 10707 | (define-public python-annotated-types |
| 10708 | (package |
| 10709 | (name "python-annotated-types") |
| 10710 | (version "0.7.0") |
| 10711 | (source |
| 10712 | (origin |
| 10713 | (method url-fetch) |
| 10714 | (uri (pypi-uri "annotated_types" version)) |
| 10715 | (sha256 |
| 10716 | (base32 "12ff8j1l0hrmfa8dfa1pyaka5a8sbyq8b76bzj6bq21sll4prw5g")))) |
| 10717 | (build-system pyproject-build-system) |
| 10718 | (native-inputs |
| 10719 | (list python-hatchling |
| 10720 | python-pytest)) |
| 10721 | (propagated-inputs (list python-typing-extensions)) |
| 10722 | (home-page "https://github.com/annotated-types/annotated-types") |
| 10723 | (synopsis "Reusable constraint types to use with typing.Annotated") |
| 10724 | (description "This package provides metadata objects which can be used to |
| 10725 | represent common constraints such as upper and lower bounds on scalar values and |
| 10726 | collection sizes, a Predicate marker for runtime checks, and descriptions of how |
| 10727 | we intend these metadata to be interpreted. In some cases, we also note |
| 10728 | alternative representations which do not require this package.") |
| 10729 | (license license:expat))) |
| 10730 | |
| 10731 | (define-public python-anytree |
| 10732 | (package |
| 10733 | (name "python-anytree") |
| 10734 | (version "2.13.0") |
| 10735 | (source |
| 10736 | (origin |
| 10737 | (method git-fetch) ; no tests data in PyPi package |
| 10738 | (uri (git-reference |
| 10739 | (url "https://github.com/c0fec0de/anytree") |
| 10740 | (commit version))) |
| 10741 | (file-name (git-file-name name version)) |
| 10742 | (sha256 |
| 10743 | (base32 "0xp13r0jrz1kdmi9h10bmgqzc7wjil3ghf6gqsi9m0lsqlj5hlwh")))) |
| 10744 | (build-system pyproject-build-system) |
| 10745 | (arguments |
| 10746 | (list |
| 10747 | #:phases |
| 10748 | #~(modify-phases %standard-phases |
| 10749 | (add-before 'check 'pre-check |
| 10750 | (lambda _ |
| 10751 | ;; Tests need to write to that direcroty. |
| 10752 | (mkdir-p "tests/dotexport/")))))) |
| 10753 | (native-inputs |
| 10754 | (list graphviz ;for 'dot' |
| 10755 | python-pdm-backend |
| 10756 | python-pytest |
| 10757 | python-pyyaml |
| 10758 | python-test2ref)) |
| 10759 | (home-page "https://github.com/c0fec0de/anytree") |
| 10760 | (synopsis "Lightweight tree data library") |
| 10761 | (description |
| 10762 | "@code{anytree} is a simple, lightweight, and extensible tree data |
| 10763 | structure for Python.") |
| 10764 | (license license:asl2.0))) |
| 10765 | |
| 10766 | (define-public kalamine |
| 10767 | (package |
| 10768 | (name "kalamine") |
| 10769 | (version "0.38") |
| 10770 | (source |
| 10771 | (origin |
| 10772 | (method url-fetch) |
| 10773 | (uri (pypi-uri "kalamine" version)) |
| 10774 | (sha256 |
| 10775 | (base32 "0dj0v4in6jngh7f5ypvxyadjsilbiwxj3rx6yxxmh5zab6dxzyhz")))) |
| 10776 | (build-system pyproject-build-system) |
| 10777 | (arguments |
| 10778 | (list |
| 10779 | #:phases |
| 10780 | #~(modify-phases %standard-phases |
| 10781 | (add-before 'check 'make-test-layouts |
| 10782 | (lambda _ |
| 10783 | (apply invoke |
| 10784 | (cons* "python" "-m" "kalamine.cli" "build" |
| 10785 | (find-files "layouts" "\\.toml"))) |
| 10786 | (invoke "python" "-m" "kalamine.cli" "new" "test.toml")))))) |
| 10787 | (propagated-inputs |
| 10788 | (list python-click |
| 10789 | python-livereload |
| 10790 | python-lxml |
| 10791 | python-progress |
| 10792 | python-pyyaml |
| 10793 | python-tomli)) |
| 10794 | ;; TODO: Add python-pytest-ruff to native-inputs once it has been |
| 10795 | ;; packaged. |
| 10796 | (native-inputs |
| 10797 | (list python-hatchling python-pytest)) |
| 10798 | (home-page "https://github.com/OneDeadKey/kalamine") |
| 10799 | (synopsis "Keyboard layout maker") |
| 10800 | (description |
| 10801 | "Kalamine provides a CLI to create advanced keyboard layout from a |
| 10802 | textual portable description. It also supports layout emulation via web |
| 10803 | browser.") |
| 10804 | (license license:expat))) |
| 10805 | |
| 10806 | (define-public python-dm-tree |
| 10807 | (package |
| 10808 | (name "python-dm-tree") |
| 10809 | (version "0.1.9") |
| 10810 | (source |
| 10811 | (origin |
| 10812 | (method url-fetch) |
| 10813 | (uri (pypi-uri "dm_tree" version)) |
| 10814 | (sha256 |
| 10815 | (base32 "0arlspn0122igcz5sq6lqrw6zkdhqqkgr0xkwkas599m74yxpix4")))) |
| 10816 | (build-system pyproject-build-system) |
| 10817 | (arguments |
| 10818 | (list #:tests? #f |
| 10819 | #:phases |
| 10820 | ;; TODO: Build against shared libraries with USE_SYSTEM_ABSEIL=true |
| 10821 | ;; and USE_SYSTEM_PYBIND11=true. |
| 10822 | #~(modify-phases %standard-phases |
| 10823 | (add-before 'build 'build-shared-lib |
| 10824 | (lambda _ |
| 10825 | (let* ((pybind11 #$(this-package-input "pybind11")) |
| 10826 | (python #$(this-package-input "python")) |
| 10827 | (version (python-version python)) |
| 10828 | (abseil-cpp #$(this-package-input "abseil-cpp"))) |
| 10829 | ;; Delete default cmake build. |
| 10830 | (substitute* "setup.py" |
| 10831 | (("ext_modules.*") "") |
| 10832 | (("cmdclass.*") "")) |
| 10833 | ;; Actual build phase. |
| 10834 | (mkdir-p "build/temp/tree/") |
| 10835 | (invoke |
| 10836 | "gcc" "-pthread" "-Wno-unused-result" "-Wsign-compare" |
| 10837 | "-DNDEBUG" "-g" "-fwrapv" "-O3" "-Wall" |
| 10838 | "-fno-semantic-interposition" "-fPIC" |
| 10839 | "-I" (string-append pybind11 |
| 10840 | "/lib/python" version |
| 10841 | "/site-packages/pybind11/include") |
| 10842 | "-I" (string-append python "/include/python" |
| 10843 | version) |
| 10844 | "-I" (string-append abseil-cpp "/include") |
| 10845 | "-c" "tree/tree.cc" |
| 10846 | "-o" "build/temp/tree/tree.o" |
| 10847 | "-fvisibility=hidden" "-g0") |
| 10848 | (mkdir-p "build/lib/tree") |
| 10849 | (invoke |
| 10850 | "g++" "-pthread" "-shared" |
| 10851 | (string-append "-Wl," "-rpath=" python "/lib") |
| 10852 | "-fno-semantic-interposition" |
| 10853 | "build/temp/tree/tree.o" |
| 10854 | "-L" (string-append python "/lib") |
| 10855 | (string-append abseil-cpp "/lib/libabsl_int128.a") |
| 10856 | (string-append abseil-cpp "/lib/libabsl_raw_hash_set.a") |
| 10857 | (string-append abseil-cpp "/lib/libabsl_raw_logging_internal.a") |
| 10858 | (string-append abseil-cpp "/lib/libabsl_strings.a") |
| 10859 | (string-append abseil-cpp "/lib/libabsl_strings_internal.a") |
| 10860 | (string-append abseil-cpp "/lib/libabsl_throw_delegate.a") |
| 10861 | "-o" "build/lib/tree/_tree.so"))))))) |
| 10862 | ;; We link the static abseil libraries here to avoid problems in |
| 10863 | ;; downstream libraries using potentially different variants of |
| 10864 | ;; abseil-cpp. This is also what's done in the upstream CMake build. |
| 10865 | (native-inputs |
| 10866 | (list python-setuptools)) |
| 10867 | (inputs |
| 10868 | (list pybind11-2 |
| 10869 | static-abseil-cpp |
| 10870 | python)) |
| 10871 | (propagated-inputs |
| 10872 | (list python-absl-py |
| 10873 | python-attrs |
| 10874 | python-numpy |
| 10875 | python-wrapt)) |
| 10876 | (home-page "https://github.com/deepmind/tree") |
| 10877 | (synopsis "Work with nested data structures in Python") |
| 10878 | (description "Tree is a python library for working with nested data |
| 10879 | structures. In a way, @code{tree} generalizes the builtin @code{map} function |
| 10880 | which only supports flat sequences, and allows you to apply a function to each |
| 10881 | leaf preserving the overall structure.") |
| 10882 | (license license:asl2.0))) |
| 10883 | |
| 10884 | (define-public python-pyment |
| 10885 | (package |
| 10886 | (name "python-pyment") |
| 10887 | (version "0.3.4") |
| 10888 | (source |
| 10889 | (origin |
| 10890 | (method git-fetch) |
| 10891 | (uri |
| 10892 | (git-reference |
| 10893 | (url "https://github.com/dadadel/pyment") |
| 10894 | (commit (string-append "v" version)))) |
| 10895 | (file-name (git-file-name name version)) |
| 10896 | (sha256 |
| 10897 | (base32 "0gbx9wmqsxdx85v5sg79lv2zxmy16j5dwi8bip07i1nyvzc5gvn0")))) |
| 10898 | (build-system pyproject-build-system) |
| 10899 | (native-inputs (list python-pytest python-setuptools)) |
| 10900 | (home-page "https://github.com/dadadel/pyment/") |
| 10901 | (synopsis "Convert Python docstrings automatically") |
| 10902 | (description "Pyment is a command line tool and library that can be |
| 10903 | used to convert between several docstring styles.") |
| 10904 | (license license:gpl3+))) |
| 10905 | |
| 10906 | (define-public python-docstring-parser |
| 10907 | (package |
| 10908 | (name "python-docstring-parser") |
| 10909 | (version "0.15") |
| 10910 | (source (origin |
| 10911 | (method url-fetch) |
| 10912 | (uri (pypi-uri "docstring_parser" version)) |
| 10913 | (sha256 |
| 10914 | (base32 |
| 10915 | "10pnbg2q0ic1h6pwbyhhqd075fv67sq07k3gjncmi1mix29w1pa8")))) |
| 10916 | (build-system pyproject-build-system) |
| 10917 | (native-inputs (list python-poetry-core python-pytest)) |
| 10918 | (home-page "https://github.com/rr-/docstring_parser") |
| 10919 | (synopsis "Parse Python docstrings in reST, Google and Numpydoc format") |
| 10920 | (description "This package lets you parse Python docstrings in reST, |
| 10921 | Google and Numpydoc format.") |
| 10922 | (license license:expat))) |
| 10923 | |
| 10924 | (define-public python-docutils |
| 10925 | (package |
| 10926 | (name "python-docutils") |
| 10927 | (version "0.22.4") |
| 10928 | (source |
| 10929 | (origin |
| 10930 | (method url-fetch) |
| 10931 | (uri (pypi-uri "docutils" version)) |
| 10932 | (sha256 |
| 10933 | (base32 "0s4ryafs954ivgb7bifzpbv98vb2mcr0s8wi9nvwpglsvqgkpdad")))) |
| 10934 | (build-system pyproject-build-system) |
| 10935 | (arguments |
| 10936 | (list |
| 10937 | #:test-backend #~'custom |
| 10938 | #:test-flags #~(list "test/alltests.py") |
| 10939 | #:phases |
| 10940 | (if (target-hurd?) |
| 10941 | #~(modify-phases %standard-phases |
| 10942 | (add-before 'check 'fix-errno |
| 10943 | (lambda _ |
| 10944 | ;; Some tests check for an exact error message |
| 10945 | ;; Expecting ENOENT == 2. |
| 10946 | (substitute* (find-files "test" "\\.py$") |
| 10947 | (("\\[Errno 2\\]") (format #f "[Errno ~a]" ENOENT)))))) |
| 10948 | #~%standard-phases))) |
| 10949 | (native-inputs |
| 10950 | (list python-flit-core)) |
| 10951 | (home-page "https://docutils.sourceforge.net/") |
| 10952 | (synopsis "Python Documentation Utilities") |
| 10953 | (description |
| 10954 | "Docutils is a modular system for processing documentation into useful |
| 10955 | formats, such as HTML, XML, and LaTeX. It uses @dfn{reStructuredText}, an |
| 10956 | easy to use markup language, for input. |
| 10957 | |
| 10958 | This package provides tools for converting @file{.rst} files to other formats |
| 10959 | via commands such as @command{rst2man}, as well as supporting Python code.") |
| 10960 | ;; Most of the source code is public domain, but some source files are |
| 10961 | ;; licensed under the PFSL, BSD 2-clause, and GPLv3+ licenses. |
| 10962 | (license (list license:public-domain license:psfl license:bsd-2 license:gpl3+)))) |
| 10963 | |
| 10964 | (define-public python-docutils-0.19 |
| 10965 | (hidden-package |
| 10966 | (package |
| 10967 | (inherit python-docutils) |
| 10968 | (version "0.19") |
| 10969 | (source (origin |
| 10970 | (method url-fetch) |
| 10971 | (uri (pypi-uri "docutils" version)) |
| 10972 | (sha256 |
| 10973 | (base32 |
| 10974 | "1rprvir116g5rz2bgzkzgyn6mv0z8582rz7bgxbpy2y3adkmm69k")))) |
| 10975 | (native-inputs |
| 10976 | (list python-setuptools))))) |
| 10977 | |
| 10978 | (define-public python-docx |
| 10979 | (package |
| 10980 | (name "python-docx") |
| 10981 | (version "1.2.0") |
| 10982 | (source (origin |
| 10983 | (method url-fetch) |
| 10984 | (uri (pypi-uri "python_docx" version)) |
| 10985 | (sha256 |
| 10986 | (base32 |
| 10987 | "1ki0cbw3hbiz51ww3fi3vi770lk5r0c62889r819r756v2vxgjbv")))) |
| 10988 | (build-system pyproject-build-system) |
| 10989 | (native-inputs |
| 10990 | (list behave |
| 10991 | python-pyparsing |
| 10992 | python-pytest |
| 10993 | python-setuptools |
| 10994 | python-wheel)) |
| 10995 | (propagated-inputs |
| 10996 | (list python-lxml python-typing-extensions)) |
| 10997 | (home-page "https://github.com/python-openxml/python-docx/") |
| 10998 | (synopsis "Python library to create and modify Microsoft Word documents") |
| 10999 | (description "This Python library can be used to create and update |
| 11000 | Microsoft Word (.docx) documents.") |
| 11001 | (license license:expat))) |
| 11002 | |
| 11003 | (define-public python-repoze-lru |
| 11004 | (package |
| 11005 | (name "python-repoze-lru") |
| 11006 | (version "0.7") |
| 11007 | (source |
| 11008 | (origin |
| 11009 | (method url-fetch) |
| 11010 | (uri (pypi-uri "repoze.lru" version)) |
| 11011 | (sha256 |
| 11012 | (base32 "0xzz1aw2smy8hdszrq8yhnklx6w1r1mf55061kalw3iq35gafa84")))) |
| 11013 | (build-system pyproject-build-system) |
| 11014 | (arguments |
| 11015 | (list |
| 11016 | #:test-backend #~'unittest |
| 11017 | #:test-flags #~(list "discover" "repoze"))) |
| 11018 | (native-inputs |
| 11019 | (list python-setuptools)) |
| 11020 | (home-page "https://www.repoze.org") |
| 11021 | (synopsis "Tiny LRU cache implementation and decorator") |
| 11022 | (description |
| 11023 | "This package provides a tiny LRU cache implementation and decorator.") |
| 11024 | (license license:bsd-4))) |
| 11025 | |
| 11026 | (define-public python-reretry |
| 11027 | (package |
| 11028 | (name "python-reretry") |
| 11029 | (version "0.11.8") |
| 11030 | (source |
| 11031 | (origin |
| 11032 | (method git-fetch) |
| 11033 | (uri (git-reference |
| 11034 | (url "https://github.com/leshchenko1979/reretry") |
| 11035 | (commit version))) |
| 11036 | (file-name (git-file-name name version)) |
| 11037 | (sha256 |
| 11038 | (base32 "15c6275mcrkrq3zs0gyx06gr3xsg9ldrpyknfy4mbypgwjy6fp38")))) |
| 11039 | (build-system pyproject-build-system) |
| 11040 | (native-inputs |
| 11041 | (list python-pytest python-pytest-asyncio python-setuptools)) |
| 11042 | (home-page "https://github.com/leshchenko1979/reretry") |
| 11043 | (synopsis "Functional decorator for retrying on exceptions") |
| 11044 | (description |
| 11045 | "This package is a fork from the retry package, but with some of added |
| 11046 | community-sourced features. It provides an easy to use, but functional |
| 11047 | decorator for retrying on exceptions.") |
| 11048 | (license license:asl2.0))) |
| 11049 | |
| 11050 | (define-public python-restructuredtext-lint |
| 11051 | (package |
| 11052 | (name "python-restructuredtext-lint") |
| 11053 | (version "2.0.2") |
| 11054 | (source |
| 11055 | (origin |
| 11056 | (method git-fetch) |
| 11057 | (uri (git-reference |
| 11058 | (url "https://github.com/twolfson/restructuredtext-lint") |
| 11059 | (commit version))) |
| 11060 | (file-name (git-file-name name version)) |
| 11061 | (sha256 |
| 11062 | (base32 "1q86a1qd9xwyl5h76b4yk2hpbnbyq6llla7rmnnp9ifrgax6vx6j")))) |
| 11063 | (build-system pyproject-build-system) |
| 11064 | (arguments (list #:test-backend #~'unittest)) |
| 11065 | (propagated-inputs (list python-docutils)) |
| 11066 | (native-inputs (list python-setuptools)) |
| 11067 | (home-page "https://github.com/twolfson/restructuredtext-lint") |
| 11068 | (synopsis "Linter") |
| 11069 | (description |
| 11070 | "This package provides a linter for the reStructuredText format.") |
| 11071 | (license license:unlicense))) |
| 11072 | |
| 11073 | (define-public python-click-repl |
| 11074 | (package |
| 11075 | (name "python-click-repl") |
| 11076 | ;; To support Python 3.12, see: |
| 11077 | ;; <https://github.com/click-contrib/click-repl/issues/128>. |
| 11078 | (properties '((commit . "b84191aec21b407b3cb3374ff1ab000887d38f29") |
| 11079 | (revision . "1"))) |
| 11080 | (version (git-version "0.3.0" |
| 11081 | (assoc-ref properties 'revision) |
| 11082 | (assoc-ref properties 'commit))) |
| 11083 | (source |
| 11084 | (origin |
| 11085 | (method git-fetch) |
| 11086 | (uri (git-reference |
| 11087 | (url "https://github.com/click-contrib/click-repl") |
| 11088 | (commit (assoc-ref properties 'commit)))) |
| 11089 | (file-name (git-file-name name version)) |
| 11090 | (sha256 |
| 11091 | (base32 "0kg1qbg69gym4vf8cqhzixqww1f80fpndv5dvi289c3swnhzlyz5")))) |
| 11092 | (build-system pyproject-build-system) |
| 11093 | (native-inputs |
| 11094 | (list python-pytest |
| 11095 | python-setuptools)) |
| 11096 | (propagated-inputs |
| 11097 | (list python-click |
| 11098 | python-prompt-toolkit)) |
| 11099 | (home-page "https://github.com/click-contrib/click-repl") |
| 11100 | (synopsis "REPL plugin for Click") |
| 11101 | (description "This package provides a REPL plugin for Click.") |
| 11102 | (license license:expat))) |
| 11103 | |
| 11104 | (define-public python-pygdbmi |
| 11105 | (package |
| 11106 | (name "python-pygdbmi") |
| 11107 | (version "0.11.0.0") |
| 11108 | (source |
| 11109 | (origin |
| 11110 | (method url-fetch) |
| 11111 | (uri (pypi-uri "pygdbmi" version)) |
| 11112 | (sha256 |
| 11113 | (base32 "1c0z4snkjiyl1iq4m1k6liwg0b4pdv2as4bfyvcm0mpjzki6na3s")))) |
| 11114 | (build-system pyproject-build-system) |
| 11115 | (arguments (list #:tests? #f)) ;no tests in PyPI archive |
| 11116 | (native-inputs (list python-setuptools python-wheel)) |
| 11117 | (home-page "https://github.com/cs01/pygdbmi") |
| 11118 | (synopsis "Parse gdb machine interface output with Python") |
| 11119 | (description "This package provides a parse gdb machine interface output |
| 11120 | with Python.") |
| 11121 | (license license:expat))) |
| 11122 | |
| 11123 | (define-public python-pygtrie |
| 11124 | (package |
| 11125 | (name "python-pygtrie") |
| 11126 | (version "2.5.0") |
| 11127 | (source |
| 11128 | (origin |
| 11129 | (method git-fetch) |
| 11130 | (uri (git-reference |
| 11131 | (url "https://github.com/mina86/pygtrie") |
| 11132 | (commit (string-append "v" version)))) |
| 11133 | (file-name (git-file-name name version)) |
| 11134 | (sha256 |
| 11135 | (base32 "00m4h2faslm242hsp98d21n6jmc8h616m69p2n6ga2rz37jqmh45")))) |
| 11136 | (build-system pyproject-build-system) |
| 11137 | (arguments |
| 11138 | (list |
| 11139 | #:test-backend #~'unittest |
| 11140 | #:phases |
| 11141 | #~(modify-phases %standard-phases |
| 11142 | (add-after 'unpack 'set-version |
| 11143 | (lambda _ |
| 11144 | (delete-file "version.py") |
| 11145 | (substitute* "setup.py" |
| 11146 | (("import version") |
| 11147 | "") |
| 11148 | (("version\\.get_version\\(\\)") |
| 11149 | (format #f "~s" #$version)))))))) |
| 11150 | (native-inputs (list python-setuptools)) |
| 11151 | (home-page "https://github.com/mina86/pygtrie") |
| 11152 | (synopsis "Pure Python trie data structure implementation") |
| 11153 | (description |
| 11154 | "This package provides a pure Python trie data structure implementation.") |
| 11155 | (license license:asl2.0))) |
| 11156 | |
| 11157 | (define-public python-bump2version |
| 11158 | (package |
| 11159 | (name "python-bump2version") |
| 11160 | (properties '((commit . "1044c085ba7d32d73c9cd7ca4561a7ec624c6b19") |
| 11161 | (revision . "1"))) |
| 11162 | (version (git-version "1.0.1" |
| 11163 | (assoc-ref properties 'revision) |
| 11164 | (assoc-ref properties 'commit))) |
| 11165 | (source |
| 11166 | (origin |
| 11167 | (method git-fetch) |
| 11168 | (uri (git-reference |
| 11169 | (url "https://github.com/c4urself/bump2version") |
| 11170 | (commit (assoc-ref properties 'commit)))) |
| 11171 | (file-name (git-file-name name version)) |
| 11172 | (sha256 |
| 11173 | (base32 "1m5c5rdz9723irwdl46mg7si5syddlzna0ldkz2ps6dphkmqsv7j")))) |
| 11174 | (build-system pyproject-build-system) |
| 11175 | (arguments |
| 11176 | ;; XXX: Single flaky failing test. |
| 11177 | (list #:test-flags #~(list "-k" "not test_usage_string"))) |
| 11178 | (native-inputs (list python-pytest python-setuptools python-testfixtures)) |
| 11179 | (home-page "https://github.com/c4urself/bump2version") |
| 11180 | (synopsis "Version-bump your software with a single command!") |
| 11181 | (description |
| 11182 | "This package provides a small command line tool to simplify releasing |
| 11183 | software by updating all version strings in your source code by the correct |
| 11184 | increment. It also creates commits and tags.") |
| 11185 | (license license:expat))) |
| 11186 | |
| 11187 | (define-public python-deprecated |
| 11188 | (package |
| 11189 | (name "python-deprecated") |
| 11190 | (version "1.3.1") |
| 11191 | (source |
| 11192 | (origin |
| 11193 | (method git-fetch) |
| 11194 | (uri (git-reference |
| 11195 | (url "https://github.com/tantale/deprecated") |
| 11196 | (commit (string-append "v" version)))) |
| 11197 | (file-name (git-file-name name version)) |
| 11198 | (sha256 |
| 11199 | (base32 "07rppvppxwnlf4pgaci5nd1sqfv1i0jxabm76axsbcaf2rlpsq6n")))) |
| 11200 | (build-system pyproject-build-system) |
| 11201 | (native-inputs |
| 11202 | (list python-pytest |
| 11203 | python-setuptools)) |
| 11204 | (propagated-inputs |
| 11205 | (list python-wrapt)) |
| 11206 | (home-page "https://github.com/tantale/deprecated") |
| 11207 | (synopsis "Python decorator to deprecate classes, functions or methods") |
| 11208 | (description |
| 11209 | "The @code{deprecated} decorator provides a convenient way to deprecate |
| 11210 | to deprecate classes, functions or methods.") |
| 11211 | (license license:expat))) |
| 11212 | |
| 11213 | (define-public python-pygithub |
| 11214 | (package |
| 11215 | (name "python-pygithub") |
| 11216 | (version "2.8.1") |
| 11217 | (source |
| 11218 | (origin |
| 11219 | (method git-fetch) |
| 11220 | (uri (git-reference |
| 11221 | (url "https://github.com/PyGithub/PyGithub") |
| 11222 | (commit (string-append "v" version)))) |
| 11223 | (file-name (git-file-name name version)) |
| 11224 | (sha256 |
| 11225 | (base32 "0c5qp69qfkfcp8lfmfh0a2rcb1azsrlrc525qd8blnkrmz2mmayz")))) |
| 11226 | (build-system pyproject-build-system) |
| 11227 | (propagated-inputs |
| 11228 | (list python-pyjwt |
| 11229 | python-pynacl |
| 11230 | python-requests |
| 11231 | python-typing-extensions |
| 11232 | python-urllib3)) |
| 11233 | (native-inputs |
| 11234 | (list python-responses |
| 11235 | python-pytest |
| 11236 | python-setuptools |
| 11237 | python-setuptools-scm)) |
| 11238 | (home-page "https://pygithub.readthedocs.io/en/latest/") |
| 11239 | (synopsis "Python library for the GitHub API") |
| 11240 | (description "This library allows managing GitHub resources such as |
| 11241 | repositories, user profiles, and organizations in your Python applications, |
| 11242 | using version 3 of the GitHub application programming interface (API).") |
| 11243 | (license license:lgpl3+))) |
| 11244 | |
| 11245 | (define-public python-rellu |
| 11246 | (package |
| 11247 | (name "python-rellu") |
| 11248 | (version "0.7") |
| 11249 | (source |
| 11250 | (origin |
| 11251 | (method git-fetch) |
| 11252 | (uri (git-reference |
| 11253 | (url "https://github.com/robotframework/rellu") |
| 11254 | (commit (string-append "v" version)))) |
| 11255 | (file-name (git-file-name name version)) |
| 11256 | (sha256 |
| 11257 | (base32 "1vbzkn4yfmc3dypgkw47fyd6n26ib7na1azrgjrvwc0vdf0qjyrw")))) |
| 11258 | (build-system pyproject-build-system) |
| 11259 | (native-inputs (list python-pytest python-setuptools)) |
| 11260 | (propagated-inputs (list python-invoke python-pygithub)) |
| 11261 | (home-page "https://github.com/robotframework/rellu") |
| 11262 | (synopsis "Utilities to create PyPI releases") |
| 11263 | (description |
| 11264 | "This collection of utilities contains tooling and templates to assist in |
| 11265 | creating releases on GitHub and publishing them on PyPI. It is designed to be |
| 11266 | used by Robot Framework and tools and libraries in its ecosystem, but can |
| 11267 | naturally be used also by other projects.") |
| 11268 | (license license:asl2.0))) |
| 11269 | |
| 11270 | (define-public python-robotframework |
| 11271 | (package |
| 11272 | (name "python-robotframework") |
| 11273 | (version "7.3.2") |
| 11274 | (source |
| 11275 | (origin |
| 11276 | (method git-fetch) ; no tests in the PyPI archive |
| 11277 | (uri (git-reference |
| 11278 | (url "https://github.com/robotframework/robotframework") |
| 11279 | (commit (string-append "v" version)))) |
| 11280 | (file-name (git-file-name name version)) |
| 11281 | (sha256 |
| 11282 | (base32 "0azis3dj7lfiwrr5gr1gr78z5m05vvl8n20rw3bz93s05z94h5i7")))) |
| 11283 | (outputs '("out" "doc")) |
| 11284 | (build-system pyproject-build-system) |
| 11285 | (arguments |
| 11286 | (list |
| 11287 | #:modules '((guix build pyproject-build-system) |
| 11288 | (guix build utils) |
| 11289 | (ice-9 ftw) |
| 11290 | (ice-9 match) |
| 11291 | (srfi srfi-26)) |
| 11292 | #:phases |
| 11293 | #~(modify-phases %standard-phases |
| 11294 | (add-before 'build 'build-and-install-doc |
| 11295 | (lambda* (#:key outputs #:allow-other-keys) |
| 11296 | (let ((doc (string-append #$output:doc |
| 11297 | "/share/doc/robotframework"))) |
| 11298 | (invoke "invoke" "library-docs" "all") |
| 11299 | (invoke "doc/userguide/ug2html.py" "dist") ;user guide |
| 11300 | (mkdir-p doc) |
| 11301 | (with-directory-excursion "dist" |
| 11302 | (define user-guide-dir |
| 11303 | (match (scandir "." (cut string-prefix? |
| 11304 | "robotframework-userguide-" <>)) |
| 11305 | ((dir) dir) |
| 11306 | (_ (error "could not find the user guide directory")))) |
| 11307 | (copy-recursively user-guide-dir doc))))) |
| 11308 | (replace 'check |
| 11309 | (lambda* (#:key tests? #:allow-other-keys) |
| 11310 | (when tests? |
| 11311 | ;; TODO: Some acceptance failed and took near 30min to |
| 11312 | ;; complete: 6765 tests, 6745 passed, 20 failed; find out how |
| 11313 | ;; to skip failing ones. |
| 11314 | (format #t "Running unit tests...~%") |
| 11315 | (invoke "utest/run.py"))))))) |
| 11316 | (native-inputs |
| 11317 | (list python-docutils |
| 11318 | python-invoke |
| 11319 | python-jsonschema |
| 11320 | python-pygments |
| 11321 | python-rellu |
| 11322 | python-typing-extensions |
| 11323 | python-setuptools |
| 11324 | `(,python "tk") ;used when building the HTML doc |
| 11325 | python-wheel)) |
| 11326 | (home-page "https://robotframework.org") |
| 11327 | (synopsis "Generic automation framework") |
| 11328 | (description "Robot Framework is a generic automation framework for |
| 11329 | acceptance testing, acceptance test driven development (ATDD), and robotic |
| 11330 | process automation (RPA).") |
| 11331 | (license license:asl2.0))) |
| 11332 | |
| 11333 | (define-public python-robotframework-datadriver |
| 11334 | (package |
| 11335 | (name "python-robotframework-datadriver") |
| 11336 | (version "1.11.2") |
| 11337 | (source |
| 11338 | (origin |
| 11339 | (method git-fetch) ; no tests in PyPI release |
| 11340 | (uri (git-reference |
| 11341 | (url "https://github.com/Snooz82/robotframework-datadriver") |
| 11342 | (commit version))) |
| 11343 | (file-name (git-file-name name version)) |
| 11344 | (sha256 |
| 11345 | (base32 "0fq6ykbnypirw1wrgigsfzg8lv8g7j9gs46v0n814ycw8906n43x")))) |
| 11346 | (build-system pyproject-build-system) |
| 11347 | (arguments |
| 11348 | (list |
| 11349 | #:phases |
| 11350 | #~(modify-phases %standard-phases |
| 11351 | (add-before 'check 'skip-problematic-tests |
| 11352 | (lambda _ |
| 11353 | (for-each delete-file-recursively |
| 11354 | (list |
| 11355 | ;; The test file 'tab-csv-file-name.tsv' contains |
| 11356 | ;; special characters for which there is no locale |
| 11357 | ;; in the build environment, causing one test to |
| 11358 | ;; fail. |
| 11359 | "atest/TestCases/csv_reader_config" |
| 11360 | ;; Error in file on line 6: Non-existing setting |
| 11361 | ;; 'Test Tags'. |
| 11362 | "atest/TestCases/DataTypes/Types_in_dicts.robot")))) |
| 11363 | (replace 'check |
| 11364 | (lambda* (#:key tests? #:allow-other-keys) |
| 11365 | (when tests? |
| 11366 | (with-directory-excursion "atest" |
| 11367 | (invoke "sh" "run_atest.sh")))))))) |
| 11368 | (native-inputs |
| 11369 | (list python-docutils |
| 11370 | python-robotframework-stacktrace |
| 11371 | python-setuptools |
| 11372 | python-xlrd)) |
| 11373 | (propagated-inputs |
| 11374 | (list python-openpyxl |
| 11375 | python-pandas |
| 11376 | python-pygments |
| 11377 | python-robotframework)) |
| 11378 | (home-page "https://github.com/Snooz82/robotframework-datadriver") |
| 11379 | (synopsis "Data-driven test extension for Robot Framework") |
| 11380 | (description "DataDriver is a data-driven extension for Robot Framework. |
| 11381 | DataDriver uses the Listener Interface of Robot Framework to create new test |
| 11382 | cases based on a data file that contains the test data. DataDriver supports |
| 11383 | data files in the CSV, XLS or XLSX formats.") |
| 11384 | (license license:asl2.0))) |
| 11385 | |
| 11386 | (define-public python-robotframework-pabot |
| 11387 | (package |
| 11388 | (name "python-robotframework-pabot") |
| 11389 | (version "4.2.0") |
| 11390 | (source |
| 11391 | (origin |
| 11392 | ;; There are no tests in the PyPI archive. |
| 11393 | (method git-fetch) |
| 11394 | (uri (git-reference |
| 11395 | (url "https://github.com/mkorpela/pabot") |
| 11396 | (commit version))) |
| 11397 | (file-name (git-file-name name version)) |
| 11398 | (sha256 |
| 11399 | (base32 |
| 11400 | "1q4vxrmkximyxk735d7payypx4w3qqdlldmg34frlnbkxrf40pxc")))) |
| 11401 | (build-system pyproject-build-system) |
| 11402 | (arguments |
| 11403 | (list |
| 11404 | #:test-flags |
| 11405 | #~(list "-k" (string-join |
| 11406 | ;; XXX: Maybe it's a bad idea to skip these tests which |
| 11407 | ;; failing assertions highlight incomparability issues. |
| 11408 | ;; |
| 11409 | ;; 93 passed, 23 deselected, 11 warnings |
| 11410 | (list "not test_argumentfile_outputs" |
| 11411 | "test_dependency_ok" |
| 11412 | "test_longnames_in_tests" |
| 11413 | "test_multiple_dependencies_ok" |
| 11414 | "test_orders" |
| 11415 | "test_pabotprerunmodifier" |
| 11416 | "test_pabotprerunmodifier_with_prerunmodifier" |
| 11417 | "test_pabotprerunmodifier_with_testlevelsplit" |
| 11418 | "test_pabotprerunmodifier_with_testlevelsplit_and_" |
| 11419 | "test_parallel_execution" |
| 11420 | "test_parallel_execution_with_testlevelsplit" |
| 11421 | "test_pre_run_with_new_name" |
| 11422 | "test_pre_run_with_new_tag" |
| 11423 | "test_run_dir_2_then_dir_3" |
| 11424 | "test_run_dir_3_then_dir_2" |
| 11425 | "test_run_root_then_suite_4_then_dir_1_then_dir_4" |
| 11426 | "test_sleep_test_cases_and_group" |
| 11427 | "test_stdout_should_display_passed_test" |
| 11428 | "test_stdout_should_display_passed_test" |
| 11429 | "test_stdout_should_display_passed_test_and_not_" |
| 11430 | "test_testlevelsplit_output_task_order" |
| 11431 | "test_too_big_testname" |
| 11432 | "test_two_orders") |
| 11433 | " and not ")) |
| 11434 | #:phases |
| 11435 | #~(modify-phases %standard-phases |
| 11436 | (add-after 'unpack 'relax-requirements |
| 11437 | (lambda _ |
| 11438 | (substitute* "setup.cfg" |
| 11439 | ;; natsort>=8.2.0 |
| 11440 | ((">=8.2.0") ""))))))) |
| 11441 | (native-inputs |
| 11442 | (list python-pytest |
| 11443 | python-setuptools |
| 11444 | python-wheel)) |
| 11445 | (propagated-inputs |
| 11446 | (list python-natsort |
| 11447 | python-robotframework |
| 11448 | python-robotframework-stacktrace)) |
| 11449 | (home-page "https://pabot.org") |
| 11450 | (synopsis "Parallel test runner for Robot Framework") |
| 11451 | (description "Pabot is a parallel executor for Robot Framework tests.") |
| 11452 | (license license:asl2.0))) |
| 11453 | |
| 11454 | (define-public python-robotframework-stacktrace |
| 11455 | (package |
| 11456 | (name "python-robotframework-stacktrace") |
| 11457 | (version "0.4.1") |
| 11458 | (source |
| 11459 | (origin |
| 11460 | (method git-fetch) |
| 11461 | (uri (git-reference |
| 11462 | (url "https://github.com/MarketSquare/robotframework-stacktrace") |
| 11463 | (commit version))) |
| 11464 | (file-name (git-file-name name version)) |
| 11465 | (sha256 |
| 11466 | (base32 "1nkzcgc1xwbx8d5qq47aj23qa7dn1ml033bjwrgqh55x3miphlcq")))) |
| 11467 | (build-system pyproject-build-system) |
| 11468 | (arguments |
| 11469 | ;; XXX: The test suite fails (see: |
| 11470 | ;; https://github.com/MarketSquare/robotframework-stacktrace/issues/4). |
| 11471 | (list |
| 11472 | #:tests? #f |
| 11473 | #:phases |
| 11474 | #~(modify-phases %standard-phases |
| 11475 | (add-after 'unpack 'set-version |
| 11476 | (lambda _ |
| 11477 | (substitute* "setup.py" |
| 11478 | (("VERSION =.*") |
| 11479 | (string-append "VERSION = '" #$version "'")))))))) |
| 11480 | (native-inputs (list python-setuptools)) |
| 11481 | (propagated-inputs (list python-robotframework)) |
| 11482 | (home-page "https://github.com/MarketSquare/robotframework-stacktrace") |
| 11483 | (synopsis "Robot Framework listener to print a stack trace on error") |
| 11484 | (description "StackTrace is a Robot Framework listener that prints a stack |
| 11485 | trace directly to the terminal to ease debugging.") |
| 11486 | (license license:asl2.0))) |
| 11487 | |
| 11488 | (define-public python-robotframework-sshlibrary |
| 11489 | (package |
| 11490 | (name "python-robotframework-sshlibrary") |
| 11491 | (version "3.8.0") |
| 11492 | ;; There are no tests in the PyPI archive. |
| 11493 | (source |
| 11494 | (origin |
| 11495 | (method git-fetch) |
| 11496 | (uri (git-reference |
| 11497 | (url "https://github.com/robotframework/SSHLibrary") |
| 11498 | (commit (string-append "v" version)))) |
| 11499 | (file-name (git-file-name name version)) |
| 11500 | (sha256 |
| 11501 | (base32 "1fn72hw7xacjjpl4dd6wynh2x63i9rk8iqhj3v640db21qpcnbkw")) |
| 11502 | (patches (search-patches |
| 11503 | "python-robotframework-sshlibrary-rf5-compat.patch")))) |
| 11504 | (build-system pyproject-build-system) |
| 11505 | (arguments |
| 11506 | (list |
| 11507 | #:phases |
| 11508 | #~(modify-phases %standard-phases |
| 11509 | (add-after 'unpack 'fix-python-incompatibilities |
| 11510 | (lambda _ |
| 11511 | (substitute* (find-files "utest" "\\.py$") |
| 11512 | (("assertEquals") "assertEqual")))) |
| 11513 | (add-before 'build 'build-and-install-doc |
| 11514 | (lambda _ |
| 11515 | (let ((doc (string-append #$output:doc |
| 11516 | "/share/doc/robotframework-sshlibrary"))) |
| 11517 | (invoke "chmod" "-R" "+w" "docs") |
| 11518 | (invoke "invoke" "kw-docs" "project-docs") |
| 11519 | (mkdir-p doc) |
| 11520 | (for-each delete-file |
| 11521 | (find-files "docs" "\\.rst")) |
| 11522 | (copy-recursively "docs" doc)))) |
| 11523 | (replace 'check |
| 11524 | (lambda* (#:key tests? #:allow-other-keys) |
| 11525 | (when tests? |
| 11526 | ;; Some tests require an SSH server; we remove them. |
| 11527 | (delete-file "utest/test_client_api.py") |
| 11528 | (delete-file "utest/test_scp.py") |
| 11529 | (invoke "python" "utest/run.py"))))))) |
| 11530 | (propagated-inputs |
| 11531 | (list python-robotframework python-paramiko python-scp)) |
| 11532 | (native-inputs |
| 11533 | (list openssh |
| 11534 | which |
| 11535 | ;; To generate the documentation |
| 11536 | python-docutils |
| 11537 | python-invoke |
| 11538 | python-pygments |
| 11539 | python-rellu |
| 11540 | python-setuptools)) |
| 11541 | (outputs '("out" "doc")) |
| 11542 | (home-page "https://github.com/robotframework/SSHLibrary") |
| 11543 | (synopsis "Robot Framework library for SSH and SFTP") |
| 11544 | (description |
| 11545 | "SSHLibrary is a Robot Framework library providing support for SSH and |
| 11546 | SFTP. It has the following main usages: |
| 11547 | @itemize @bullet |
| 11548 | @item Executing commands on the remote machine, either blocking or non-blocking. |
| 11549 | @item Writing and reading in an interactive shell. |
| 11550 | @item Transferring files and directories over SFTP. |
| 11551 | @item Ensuring that files and directories exist on the remote machine. |
| 11552 | @end itemize") |
| 11553 | (license license:asl2.0))) |
| 11554 | |
| 11555 | (define-public python-robotframework-pythonlibcore |
| 11556 | (package |
| 11557 | (name "python-robotframework-pythonlibcore") |
| 11558 | (version "4.4.1") |
| 11559 | (source |
| 11560 | (origin |
| 11561 | (method git-fetch) ;no tests in pypi archive |
| 11562 | (uri (git-reference |
| 11563 | (url "https://github.com/robotframework/PythonLibCore") |
| 11564 | (commit (string-append "v" version)))) |
| 11565 | (file-name (git-file-name name version)) |
| 11566 | (sha256 |
| 11567 | (base32 "0hjayjq5wrgajs56nf85y5wqh76jbjfbsz40bam315l3kzmj45g5")))) |
| 11568 | (build-system pyproject-build-system) |
| 11569 | (arguments |
| 11570 | (list |
| 11571 | #:test-backend #~'custom |
| 11572 | #:test-flags #~(list "utest/run.py"))) |
| 11573 | (native-inputs |
| 11574 | (list python-approvaltests |
| 11575 | python-pytest |
| 11576 | python-pytest-cov ; This package has a custom way to run tests. |
| 11577 | python-pytest-mockito |
| 11578 | python-robotframework |
| 11579 | python-setuptools)) |
| 11580 | (home-page "https://github.com/robotframework/PythonLibCore") |
| 11581 | (synopsis "Robot Framework Python library tools") |
| 11582 | (description |
| 11583 | "PythonLibCore provides tools for creating larger test libraries for |
| 11584 | Robot Framework using Python. The Robot Framework hybrid and dynamic library |
| 11585 | APIs give more flexibility for library than the static library API, but they |
| 11586 | also set requirements for libraries which need to be implemented in the |
| 11587 | library side. PythonLibCore eases the problem by providing a simpler |
| 11588 | interface and by handling all the requirements towards the Robot Framework |
| 11589 | library APIs.") |
| 11590 | (license license:asl2.0))) |
| 11591 | |
| 11592 | (define-public python-robotframework-seleniumlibrary |
| 11593 | (package |
| 11594 | (name "python-robotframework-seleniumlibrary") |
| 11595 | (version "6.8.0") |
| 11596 | (source |
| 11597 | (origin |
| 11598 | (method git-fetch) |
| 11599 | (uri (git-reference |
| 11600 | (url "https://github.com/robotframework/SeleniumLibrary") |
| 11601 | (commit (string-append "v" version)))) |
| 11602 | (file-name (git-file-name name version)) |
| 11603 | (sha256 |
| 11604 | (base32 "093kcmwvh72n22sj1psx4dyjj87xrzz2622ygpkavrhmd9r2a9jg")))) |
| 11605 | (build-system pyproject-build-system) |
| 11606 | (arguments |
| 11607 | (list |
| 11608 | #:test-flags |
| 11609 | #~(list "--ignore=utest/test/keywords/test_firefox_profile_parsing.py" |
| 11610 | "-k" (string-join |
| 11611 | (list "not test_create_firefox_with_options" |
| 11612 | "test_create_headless_firefox_with_options" |
| 11613 | "test_create_driver_firefox") |
| 11614 | " and not ")))) |
| 11615 | (native-inputs |
| 11616 | (list python-approvaltests |
| 11617 | python-pytest |
| 11618 | python-pytest-mockito |
| 11619 | python-setuptools)) |
| 11620 | (propagated-inputs |
| 11621 | (list python-click |
| 11622 | python-robotframework |
| 11623 | python-robotframework-pythonlibcore |
| 11624 | python-selenium)) |
| 11625 | (home-page "https://github.com/robotframework/SeleniumLibrary") |
| 11626 | (synopsis "Web testing library for Robot Framework") |
| 11627 | (description "SeleniumLibrary is a web testing library for Robot Framework |
| 11628 | that utilizes the Selenium tool internally.") |
| 11629 | (license license:asl2.0))) |
| 11630 | |
| 11631 | (define-public python-robotframework-seleniumscreenshots |
| 11632 | (package |
| 11633 | (name "python-robotframework-seleniumscreenshots") |
| 11634 | (version "0.9.5") |
| 11635 | (source |
| 11636 | (origin |
| 11637 | (method git-fetch) |
| 11638 | (uri (git-reference |
| 11639 | (url |
| 11640 | "https://github.com/MarketSquare/robotframework-seleniumscreenshots") |
| 11641 | (commit version))) |
| 11642 | (file-name (git-file-name name version)) |
| 11643 | (sha256 |
| 11644 | (base32 "1gal4ifibk2bj1qgppcs6vmjgjvz47nq4d4gqvyd70vpyf9iw342")))) |
| 11645 | (build-system pyproject-build-system) |
| 11646 | (arguments |
| 11647 | ;; XXX: The tests require a relatively complicated setup configured in |
| 11648 | ;; their CI with Nix (!). |
| 11649 | `(#:tests? #f)) |
| 11650 | (native-inputs (list python-setuptools)) |
| 11651 | (propagated-inputs |
| 11652 | (list python-robotframework python-robotframework-seleniumlibrary)) |
| 11653 | (home-page |
| 11654 | "https://github.com/MarketSquare/robotframework-seleniumscreenshots") |
| 11655 | (synopsis |
| 11656 | "Robot Framework library for annotating and cropping screenshots") |
| 11657 | (description |
| 11658 | "The SeleniumScreenshots library for Robot Framework provides keywords |
| 11659 | for annotating and cropping screenshots taken with SeleniumLibrary. It is |
| 11660 | useful for scripting automatically updated screenshots for documentation or |
| 11661 | for visual regression testing purposes.") |
| 11662 | (license license:bsd-3))) |
| 11663 | |
| 11664 | (define-public python-rstr |
| 11665 | (package |
| 11666 | (name "python-rstr") |
| 11667 | (version "3.2.2") |
| 11668 | (source |
| 11669 | (origin |
| 11670 | (method git-fetch) |
| 11671 | (uri (git-reference |
| 11672 | (url "https://github.com/leapfrogonline/rstr") |
| 11673 | (commit version))) |
| 11674 | (file-name (git-file-name name version)) |
| 11675 | (sha256 |
| 11676 | (base32 "1z9d660jnv72jn8qzpa9hddpv5f953js8i75hfhkcw68vmdfndnr")))) |
| 11677 | (build-system pyproject-build-system) |
| 11678 | (native-inputs (list python-pytest |
| 11679 | python-setuptools |
| 11680 | python-setuptools-scm |
| 11681 | python-wheel)) |
| 11682 | (home-page "https://github.com/leapfrogonline/rstr") |
| 11683 | (synopsis "Generate random strings in Python") |
| 11684 | (description "This package provides a python module for generating |
| 11685 | random strings of various types. It could be useful for fuzz testing, |
| 11686 | generating dummy data, or other applications. It has no dependencies |
| 11687 | outside the standard library.") |
| 11688 | (license license:bsd-3))) |
| 11689 | |
| 11690 | (define-public python-scp |
| 11691 | (package |
| 11692 | (name "python-scp") |
| 11693 | (version "0.15.0") |
| 11694 | (source |
| 11695 | (origin |
| 11696 | (method git-fetch) |
| 11697 | (uri (git-reference |
| 11698 | (url "https://github.com/jbardin/scp.py") |
| 11699 | (commit (string-append "v" version)))) |
| 11700 | (file-name (git-file-name name version)) |
| 11701 | (sha256 |
| 11702 | (base32 "03mdkiwfxvi1xfsw9qjdjf0jgljs991jn29lia9fka68x1ngwnw9")))) |
| 11703 | (build-system pyproject-build-system) |
| 11704 | (arguments (list #:tests? #f)) ;tests require an SSH server |
| 11705 | (native-inputs (list python-setuptools)) |
| 11706 | (propagated-inputs (list python-paramiko)) |
| 11707 | (home-page "https://github.com/jbardin/scp.py") |
| 11708 | (synopsis "SCP protocol module for Python and Paramiko") |
| 11709 | (description |
| 11710 | "The scp module extends the Paramiko library to send and receive files |
| 11711 | via the SCP1 protocol, as implemented by the OpenSSH @command{scp} program.") |
| 11712 | (license license:gpl2+))) |
| 11713 | |
| 11714 | (define-public python-rst-linker |
| 11715 | (package |
| 11716 | (name "python-rst-linker") |
| 11717 | (version "2.6.0") |
| 11718 | (source |
| 11719 | (origin |
| 11720 | (method git-fetch) |
| 11721 | (uri (git-reference |
| 11722 | (url "https://github.com/jaraco/rst.linker") |
| 11723 | (commit (string-append "v" version)))) |
| 11724 | (file-name (git-file-name name version)) |
| 11725 | (sha256 |
| 11726 | (base32 "1pcnhib881p0vgm0s8jj6inzzs98raz70sc2z6m6wlgrj9ivv5jj")))) |
| 11727 | (build-system pyproject-build-system) |
| 11728 | (propagated-inputs (list python-jaraco-context)) |
| 11729 | (native-inputs |
| 11730 | (list python-path |
| 11731 | python-jaraco-vcs |
| 11732 | python-pytest |
| 11733 | python-pytest-subprocess |
| 11734 | python-setuptools-scm |
| 11735 | python-setuptools)) |
| 11736 | (home-page "https://github.com/jaraco/rst.linker") |
| 11737 | (synopsis "Sphinx plugin to add links and timestamps") |
| 11738 | (description |
| 11739 | "rst.linker automatically replaces text by a reStructuredText external |
| 11740 | reference or timestamps. It's primary purpose is to augment the changelog, |
| 11741 | but it can be used for other documents, too.") |
| 11742 | (license license:expat))) |
| 11743 | |
| 11744 | (define-public python-feedgenerator |
| 11745 | (package |
| 11746 | (name "python-feedgenerator") |
| 11747 | (version "2.1.0") |
| 11748 | (source |
| 11749 | (origin |
| 11750 | (method url-fetch) |
| 11751 | (uri (pypi-uri "feedgenerator" version)) |
| 11752 | (sha256 |
| 11753 | (base32 |
| 11754 | "179bshnb0ssx7pspzbyaqvhi5w3c3hb15cingh4py8px50zz4xgh")))) |
| 11755 | (build-system pyproject-build-system) |
| 11756 | (native-inputs |
| 11757 | (list python-pytest python-setuptools python-wheel)) |
| 11758 | (propagated-inputs |
| 11759 | (list python-pytz)) |
| 11760 | (home-page "https://github.com/getpelican/feedgenerator") |
| 11761 | (synopsis |
| 11762 | "Standalone version of Django's Atom/RSS feed generator") |
| 11763 | (description |
| 11764 | "Feedgenerator-py3k is a standalone version of Django's feedgenerator, |
| 11765 | which can produce feeds in RSS 2.0, RSS 0.91, and Atom formats.") |
| 11766 | (license license:bsd-3))) |
| 11767 | |
| 11768 | (define-public python-lsp-jsonrpc |
| 11769 | (package |
| 11770 | (name "python-lsp-jsonrpc") |
| 11771 | (version "1.1.2") |
| 11772 | (source |
| 11773 | (origin |
| 11774 | (method url-fetch) |
| 11775 | (uri (pypi-uri "python-lsp-jsonrpc" version)) |
| 11776 | (sha256 |
| 11777 | (base32 |
| 11778 | "04n95h0cqnsrdyh1gv0abh2i5ynyrq2wfqpppx9djp7mxr9y9226")))) |
| 11779 | (build-system pyproject-build-system) |
| 11780 | (native-inputs |
| 11781 | (list python-pyflakes |
| 11782 | python-pytest |
| 11783 | python-setuptools |
| 11784 | python-setuptools-scm |
| 11785 | python-wheel)) |
| 11786 | (propagated-inputs |
| 11787 | (list python-ujson)) |
| 11788 | (home-page "https://github.com/python-lsp/python-lsp-jsonrpc") |
| 11789 | (synopsis "JSON RPC 2.0 server library") |
| 11790 | (description |
| 11791 | "This package provides a JSON RPC 2.0 server library for Python.") |
| 11792 | (license license:expat))) |
| 11793 | |
| 11794 | (define-public python-pydantic |
| 11795 | (package |
| 11796 | (name "python-pydantic") |
| 11797 | (version "2.12.5") |
| 11798 | (source |
| 11799 | (origin |
| 11800 | (method git-fetch) |
| 11801 | (uri (git-reference |
| 11802 | (url "https://github.com/samuelcolvin/pydantic") |
| 11803 | (commit (string-append "v" version)))) |
| 11804 | (file-name (git-file-name name version)) |
| 11805 | (sha256 |
| 11806 | (base32 "0h1dwnd16smyknv7fzskv8akp96pw18mrd3l8a3nbhs1afslnd7m")))) |
| 11807 | (build-system pyproject-build-system) |
| 11808 | (arguments |
| 11809 | (list |
| 11810 | ;; tests: 5428 passed, 1091 skipped, 24 xfailed |
| 11811 | #:test-flags |
| 11812 | #~(list "--parallel-threads" (number->string (parallel-job-count))))) |
| 11813 | (native-inputs |
| 11814 | (list tzdata-for-tests |
| 11815 | python-dirty-equals-bootstrap |
| 11816 | python-faker |
| 11817 | python-hatch-fancy-pypi-readme |
| 11818 | python-hatchling |
| 11819 | python-jsonschema |
| 11820 | python-pytest |
| 11821 | python-pytest-benchmark |
| 11822 | python-pytest-examples |
| 11823 | python-pytest-mock |
| 11824 | python-pytest-run-parallel |
| 11825 | python-pytz)) |
| 11826 | (propagated-inputs |
| 11827 | (list python-annotated-types |
| 11828 | python-pydantic-core ;it's hard == requirement, keep it in sync |
| 11829 | python-typing-extensions |
| 11830 | python-typing-inspection)) |
| 11831 | (home-page "https://github.com/samuelcolvin/pydantic") |
| 11832 | (synopsis "Python data validation and settings management") |
| 11833 | (description |
| 11834 | "Pydantic enforces type hints at runtime, and provides user friendly |
| 11835 | errors when data is invalid.") |
| 11836 | (license license:expat))) |
| 11837 | |
| 11838 | (define-public python-pydantic-core |
| 11839 | (package |
| 11840 | (name "python-pydantic-core") |
| 11841 | (version "2.41.5") |
| 11842 | (source |
| 11843 | (origin |
| 11844 | (method url-fetch) |
| 11845 | (uri (pypi-uri "pydantic_core" version)) |
| 11846 | (sha256 |
| 11847 | (base32 "0vj72r481py6r5mlna185g3ppw1jri964q77spzp7lval4gabnh8")))) |
| 11848 | (build-system pyproject-build-system) |
| 11849 | (arguments |
| 11850 | (list |
| 11851 | #:imported-modules `(,@%cargo-build-system-modules |
| 11852 | ,@%pyproject-build-system-modules) |
| 11853 | #:modules '(((guix build cargo-build-system) #:prefix cargo:) |
| 11854 | (guix build pyproject-build-system) |
| 11855 | (guix build utils)) |
| 11856 | ;; tests: 5318 passed, 123 skipped, 10 xfailed |
| 11857 | #:test-flags |
| 11858 | #~(list "--ignore=tests/benchmarks" |
| 11859 | ;; XXX: It cycles, bootstrap variant needs to be introduced: |
| 11860 | ;; python-pydantic-core -> python-pydantic -> |
| 11861 | ;; python-inline-snapshot -> python-pydantic-core |
| 11862 | "--ignore=tests/test_docstrings.py" |
| 11863 | "--ignore=tests/test_hypothesis.py" |
| 11864 | "--ignore=tests/validators/test_allow_partial.py" |
| 11865 | "--ignore=tests/validators/test_frozenset.py" |
| 11866 | "--ignore=tests/validators/test_list.py" |
| 11867 | "--ignore=tests/validators/test_set.py") |
| 11868 | #:phases |
| 11869 | #~(modify-phases %standard-phases |
| 11870 | (add-after 'unpack 'prepare-cargo-build-system |
| 11871 | (lambda args |
| 11872 | (for-each (lambda (phase) |
| 11873 | (format #t "Running cargo phase: ~a~%" phase) |
| 11874 | (apply (assoc-ref cargo:%standard-phases phase) |
| 11875 | #:cargo-target #$(cargo-triplet) |
| 11876 | args)) |
| 11877 | '(unpack-rust-crates |
| 11878 | configure |
| 11879 | check-for-pregenerated-files |
| 11880 | patch-cargo-checksums))))))) |
| 11881 | (native-inputs |
| 11882 | (append |
| 11883 | (list maturin |
| 11884 | python-dirty-equals-bootstrap |
| 11885 | python-pytest |
| 11886 | python-pytest-benchmark ;TODO: disable in pyproject.toml |
| 11887 | python-pytest-mock |
| 11888 | python-pytest-timeout |
| 11889 | python-typing-inspection |
| 11890 | python-tzdata |
| 11891 | rust |
| 11892 | `(,rust "cargo")) |
| 11893 | (or (and=> (%current-target-system) |
| 11894 | (compose list make-rust-sysroot)) |
| 11895 | '()))) |
| 11896 | (inputs |
| 11897 | (cargo-inputs 'python-pydantic-core)) |
| 11898 | (propagated-inputs |
| 11899 | (list python-typing-extensions)) |
| 11900 | (home-page "https://github.com/pydantic/pydantic-core") |
| 11901 | (synopsis "Core validation logic for pydantic") |
| 11902 | (description "This package provides the core functionality for pydantic |
| 11903 | validation and serialization.") |
| 11904 | (license license:expat))) |
| 11905 | |
| 11906 | (define-public python-pydantic-cli |
| 11907 | (package |
| 11908 | (name "python-pydantic-cli") |
| 11909 | (version "9.1.0") |
| 11910 | (source |
| 11911 | (origin |
| 11912 | (method git-fetch) ;for tests |
| 11913 | (uri (git-reference |
| 11914 | (url "https://github.com/mpkocher/pydantic-cli") |
| 11915 | (commit (string-append "v" version)))) |
| 11916 | (file-name (git-file-name name version)) |
| 11917 | (sha256 |
| 11918 | (base32 |
| 11919 | "1rfffz4kasjihys8qgnvjb8cwm0dycsdj7qnggi9372b9q1ng4zg")))) |
| 11920 | (build-system pyproject-build-system) |
| 11921 | (propagated-inputs |
| 11922 | (list python-pydantic)) |
| 11923 | (native-inputs |
| 11924 | (list python-hatchling python-pytest)) |
| 11925 | (home-page "https://github.com/mpkocher/pydantic-cli") |
| 11926 | (synopsis "Turn Pydantic defined data models into CLI tools") |
| 11927 | (description |
| 11928 | "@code{python-pydantic} enables specifying @acronym{CLI, Command Line |
| 11929 | Interfaces} via data models provided in the JSON format.") |
| 11930 | (license license:expat))) |
| 11931 | |
| 11932 | (define-public python-pydantic-extra-types |
| 11933 | (package |
| 11934 | (name "python-pydantic-extra-types") |
| 11935 | (version "2.10.6") |
| 11936 | (source |
| 11937 | (origin |
| 11938 | (method git-fetch) |
| 11939 | (uri (git-reference |
| 11940 | (url "https://github.com/pydantic/pydantic-extra-types") |
| 11941 | (commit (string-append "v" version)))) |
| 11942 | (file-name (git-file-name name version)) |
| 11943 | (sha256 |
| 11944 | (base32 "0n3w6zm7wdj0xb2c4kjkysfxhcr5pzbgcpcw158pzdsxz6svnrl3")))) |
| 11945 | (build-system pyproject-build-system) |
| 11946 | (arguments |
| 11947 | (list |
| 11948 | ;; tests: 13079 passed, 1 deselected |
| 11949 | #:test-flags |
| 11950 | ;; See: <https://github.com/pydantic/pydantic-extra-types/issues/345>. |
| 11951 | #~(list "--ignore=tests/test_s3.py" |
| 11952 | "--deselect=tests/test_coordinate.py::test_json_schema" |
| 11953 | ;; XXX: The most of the tests fail, pendulum is optional package |
| 11954 | ;; and needs to be =>3 where we have 2.1.2, updating to 3+ |
| 11955 | ;; requires Rust. |
| 11956 | "--ignore=tests/test_pendulum_dt.py" |
| 11957 | "--ignore=tests/test_json_schema.py") |
| 11958 | #:phases |
| 11959 | #~(modify-phases %standard-phases |
| 11960 | (add-before 'check 'pre-check |
| 11961 | (lambda* (#:key inputs #:allow-other-keys) |
| 11962 | (setenv "TZ" "UTC") |
| 11963 | (setenv "TZDIR" (search-input-directory inputs |
| 11964 | "share/zoneinfo"))))))) |
| 11965 | (native-inputs |
| 11966 | (list python-pytest |
| 11967 | python-hatchling |
| 11968 | tzdata-for-tests)) |
| 11969 | (propagated-inputs |
| 11970 | (list python-pydantic |
| 11971 | python-typing-extensions |
| 11972 | ;; [optional] |
| 11973 | python-cron-converter |
| 11974 | ;; python-pendulum |
| 11975 | python-phonenumbers |
| 11976 | python-pycountry |
| 11977 | python-pymongo |
| 11978 | python-pytz |
| 11979 | python-semver |
| 11980 | python-tzdata |
| 11981 | python-ulid)) |
| 11982 | (home-page "https://github.com/pydantic/pydantic-extra-types") |
| 11983 | (synopsis "Extra Pydantic types") |
| 11984 | (description "This package provides sxtra types for Pydantic.") |
| 11985 | (license license:expat))) |
| 11986 | |
| 11987 | (define-public python-pydantic-settings |
| 11988 | (package |
| 11989 | (name "python-pydantic-settings") |
| 11990 | (version "2.12.0") |
| 11991 | (source |
| 11992 | (origin |
| 11993 | (method url-fetch) |
| 11994 | (uri (pypi-uri "pydantic_settings" version)) |
| 11995 | (sha256 |
| 11996 | (base32 "1l6gmw6v1nlm3cid92c5xw6ljw9fbwmjk2y0w5l2lg0yjppkhm80")))) |
| 11997 | (build-system pyproject-build-system) |
| 11998 | (arguments |
| 11999 | (list |
| 12000 | ;; tests: 399 passed, 27 skipped |
| 12001 | #:test-flags |
| 12002 | ;; XXX: Ignore tests requiring python-ruff. |
| 12003 | #~(list "--ignore=tests/test_docs.py") |
| 12004 | #:phases |
| 12005 | #~(modify-phases %standard-phases |
| 12006 | (add-before 'check 'set-home |
| 12007 | (lambda _ |
| 12008 | ;; FileNotFoundError: [Errno 2] No such file or directory: |
| 12009 | ;; '/homeless-shelter/ |
| 12010 | (setenv "HOME" "/tmp")))))) |
| 12011 | (native-inputs |
| 12012 | (list python-hatchling |
| 12013 | python-pytest |
| 12014 | python-pytest-examples |
| 12015 | python-pytest-mock)) |
| 12016 | (propagated-inputs |
| 12017 | (list python-dotenv |
| 12018 | python-pydantic |
| 12019 | python-typing-inspection |
| 12020 | ;; [optional] |
| 12021 | python-pyyaml |
| 12022 | python-tomli)) |
| 12023 | (home-page "https://docs.pydantic.dev/latest/usage/pydantic_settings/") |
| 12024 | (synopsis "Settings management using Pydantic") |
| 12025 | (description |
| 12026 | "Pydantic Settings provides optional Pydantic features for loading a |
| 12027 | settings or config class from environment variables or secrets files.") |
| 12028 | (license license:expat))) |
| 12029 | |
| 12030 | (define-public python-pydoc-markdown |
| 12031 | (package |
| 12032 | (name "python-pydoc-markdown") |
| 12033 | (version "4.8.2") |
| 12034 | (source |
| 12035 | (origin |
| 12036 | (method url-fetch) |
| 12037 | (uri (pypi-uri "pydoc_markdown" version)) |
| 12038 | (sha256 |
| 12039 | (base32 "02vzlrd18r8wi0b64vq2gnbhaadysg9rnbylf9sf2v9q65z94v7v")))) |
| 12040 | (build-system pyproject-build-system) |
| 12041 | (arguments |
| 12042 | (list |
| 12043 | #:tests? #false ;there are none |
| 12044 | #:phases |
| 12045 | '(modify-phases %standard-phases |
| 12046 | ;; This is probably not a good idea, but it wants a rather old |
| 12047 | ;; version of docstring-parser. |
| 12048 | (add-after 'unpack 'relax-requirements |
| 12049 | (lambda _ |
| 12050 | (substitute* "pyproject.toml" |
| 12051 | (("docstring-parser = .*") |
| 12052 | "docstring-parser = \"^0\"\n"))))))) |
| 12053 | (propagated-inputs (list python-click |
| 12054 | python-databind-core |
| 12055 | python-databind-json |
| 12056 | python-docspec |
| 12057 | python-docspec-python |
| 12058 | python-docstring-parser |
| 12059 | python-jinja2 |
| 12060 | python-nr-util |
| 12061 | python-pyyaml |
| 12062 | python-requests |
| 12063 | python-tomli |
| 12064 | python-tomli-w |
| 12065 | python-watchdog |
| 12066 | python-yapf)) |
| 12067 | (native-inputs (list python-poetry-core)) |
| 12068 | (home-page "https://pypi.org/project/pydoc-markdown/") |
| 12069 | (synopsis "Create Python API documentation in Markdown format") |
| 12070 | (description "Pydoc-Markdown is a tool to create Python API documentation |
| 12071 | in Markdown format. Instead of executing your Python code like so many other |
| 12072 | documentation tools, it parses it using docspec instead.") |
| 12073 | (license license:expat))) |
| 12074 | |
| 12075 | ;; XXX: The project is deprecated upstream, still in use by some packages, |
| 12076 | ;; consider to remove when nothing depends on it. |
| 12077 | (define-public python-pydocstyle |
| 12078 | (package |
| 12079 | (name "python-pydocstyle") |
| 12080 | (version "6.3.0") |
| 12081 | (source |
| 12082 | (origin |
| 12083 | (method git-fetch) ;no tests in PyPI archive |
| 12084 | (uri (git-reference |
| 12085 | (url "https://github.com/PyCQA/pydocstyle") |
| 12086 | (commit version))) |
| 12087 | (file-name (git-file-name name version)) |
| 12088 | (sha256 |
| 12089 | (base32 "1aabvnxmy939y5b7jpnygpnkgbi4id9j461v7bwzxwdmdffnnd1j")) |
| 12090 | (patches (search-patches |
| 12091 | "python-pydocstyle-add-support-for-pep701.patch")))) |
| 12092 | (build-system pyproject-build-system) |
| 12093 | (arguments |
| 12094 | (list |
| 12095 | ;; It tries to install with pip. |
| 12096 | #:test-flags #~(list "--ignore=src/tests/test_integration.py") |
| 12097 | #:phases |
| 12098 | #~(modify-phases %standard-phases |
| 12099 | (add-after 'unpack 'set-version |
| 12100 | (lambda _ |
| 12101 | (substitute* "pyproject.toml" |
| 12102 | (("0.0.0-dev") #$version))))))) |
| 12103 | (native-inputs |
| 12104 | (list python-poetry-core |
| 12105 | python-pytest |
| 12106 | python-tomli)) |
| 12107 | (propagated-inputs |
| 12108 | (list python-six |
| 12109 | python-snowballstemmer)) |
| 12110 | (home-page "https://github.com/PyCQA/pydocstyle/") |
| 12111 | (synopsis "Python docstring style checker") |
| 12112 | (description |
| 12113 | "This package provides a style checker for the Python Language |
| 12114 | Server (PLS).") |
| 12115 | (license license:expat))) |
| 12116 | |
| 12117 | (define-public python-lsp-server |
| 12118 | (package |
| 12119 | (name "python-lsp-server") |
| 12120 | (version "1.15.0") |
| 12121 | (source |
| 12122 | (origin |
| 12123 | (method git-fetch) |
| 12124 | (uri (git-reference |
| 12125 | (url "https://github.com/python-lsp/python-lsp-server") |
| 12126 | (commit (string-append "v" version)))) |
| 12127 | (file-name (git-file-name name version)) |
| 12128 | (sha256 |
| 12129 | (base32 "0bmwshwdlnbj15ki2vld832lbp6j1slyhvgmwrr8kjbhgk3v8vic")) |
| 12130 | (patches |
| 12131 | (search-patches "python-lsp-server-python-3.13-compatibility.patch")))) |
| 12132 | (build-system pyproject-build-system) |
| 12133 | (arguments |
| 12134 | (list |
| 12135 | #:test-flags |
| 12136 | '(list "--ignore-glob" "**/test_autopep8_format.py" ;avoid autopep8 dep |
| 12137 | "-k" |
| 12138 | (string-append |
| 12139 | "not test_concurrent_ws_requests " ; flaky |
| 12140 | "and not test_pyqt_completion " ; avoid pyqt5 |
| 12141 | "and not test_pandas_completion")) ; avoid pandas |
| 12142 | #:phases |
| 12143 | #~(modify-phases %standard-phases |
| 12144 | (add-after 'unpack 'relax-deps |
| 12145 | (lambda _ |
| 12146 | (substitute* "pyproject.toml" |
| 12147 | (("autopep8>=2.0.4,<2.1.0") "autopep8") |
| 12148 | (("pycodestyle>=2.12.0,<2.13.0") "pycodestyle") |
| 12149 | (("pyflakes>=3.2.0,<3.3.0") "pyflakes")))) |
| 12150 | (add-before 'check 'set-HOME |
| 12151 | (lambda _ (setenv "HOME" "/tmp")))))) |
| 12152 | (propagated-inputs |
| 12153 | (list python-autopep8 |
| 12154 | python-black |
| 12155 | python-docstring-to-markdown |
| 12156 | python-flake8 |
| 12157 | python-jedi |
| 12158 | python-lsp-jsonrpc |
| 12159 | python-mccabe |
| 12160 | python-pluggy |
| 12161 | python-pycodestyle |
| 12162 | python-pydocstyle |
| 12163 | python-pyflakes |
| 12164 | python-pylint |
| 12165 | python-rope |
| 12166 | python-ujson |
| 12167 | python-whatthepatch |
| 12168 | python-yapf)) |
| 12169 | (native-inputs |
| 12170 | (list python-flaky |
| 12171 | python-matplotlib |
| 12172 | python-pytest |
| 12173 | python-setuptools |
| 12174 | python-setuptools-scm |
| 12175 | python-websockets)) |
| 12176 | (home-page "https://github.com/python-lsp/python-lsp-server") |
| 12177 | (synopsis "Python implementation of the Language Server Protocol") |
| 12178 | (description |
| 12179 | "The Python Language Server @command{pylsp} is an implementation of the |
| 12180 | Python 3 language specification for the Language Server Protocol (LSP). |
| 12181 | This tool is used in text editing environments to provide a complete |
| 12182 | and integrated feature-set for programming Python effectively.") |
| 12183 | (license license:expat))) |
| 12184 | |
| 12185 | (define-public python-black |
| 12186 | (package |
| 12187 | (name "python-black") |
| 12188 | (version "26.5.1") |
| 12189 | (source |
| 12190 | (origin |
| 12191 | (method git-fetch) |
| 12192 | (uri (git-reference |
| 12193 | (url "https://github.com/psf/black") |
| 12194 | (commit version))) |
| 12195 | (file-name (git-file-name name version)) |
| 12196 | (sha256 |
| 12197 | (base32 "13fsaasnbgvlnxzsy81mlyp2pjni7fpp1v9gwh7xmq0pzxzai8h8")))) |
| 12198 | (build-system pyproject-build-system) |
| 12199 | (arguments |
| 12200 | (list |
| 12201 | ;; tests: 443 passed, 3 skipped, 4 subtests passed |
| 12202 | #:test-flags |
| 12203 | #~(list "--numprocesses" (number->string (min (parallel-job-count) 8)) |
| 12204 | ;; Diffs are not equal. |
| 12205 | (string-append "--deselect=tests/test_format.py" |
| 12206 | "::test_simple_format" |
| 12207 | "[module_docstring_after_comment]")) |
| 12208 | #:phases |
| 12209 | #~(modify-phases %standard-phases |
| 12210 | (add-after 'patch-source-shebangs 'use-absolute-file-names |
| 12211 | (lambda* (#:key inputs #:allow-other-keys) |
| 12212 | (substitute* (find-files "tests" "\\.py$") |
| 12213 | (("#!/usr/bin/env python3") |
| 12214 | (string-append |
| 12215 | "#!" (search-input-file inputs "/bin/python3"))))))))) |
| 12216 | (propagated-inputs |
| 12217 | (list python-click |
| 12218 | python-mypy-extensions |
| 12219 | python-packaging |
| 12220 | python-pathspec |
| 12221 | python-platformdirs |
| 12222 | python-pytokens |
| 12223 | ;; [optional] |
| 12224 | python-aiohttp)) |
| 12225 | (native-inputs |
| 12226 | (list python-hatch-fancy-pypi-readme |
| 12227 | python-hatch-vcs |
| 12228 | python-hatchling |
| 12229 | python-pytest |
| 12230 | python-pytest-xdist)) |
| 12231 | (home-page "https://github.com/psf/black") |
| 12232 | (synopsis "The uncompromising code formatter") |
| 12233 | (description "Black is the uncompromising Python code formatter.") |
| 12234 | (license license:expat))) |
| 12235 | |
| 12236 | (define-public python-black-macchiato |
| 12237 | (package |
| 12238 | (name "python-black-macchiato") |
| 12239 | (version "1.3.0") |
| 12240 | (source |
| 12241 | (origin |
| 12242 | (method git-fetch) |
| 12243 | (uri (git-reference |
| 12244 | (url "https://github.com/wbolster/black-macchiato") |
| 12245 | (commit version))) |
| 12246 | (file-name (git-file-name name version)) |
| 12247 | (sha256 |
| 12248 | (base32 "0lc9w50nlbmlzj44krk7kxcia202fhybbnwfh77xixlc7vb4rayl")))) |
| 12249 | (build-system pyproject-build-system) |
| 12250 | (arguments |
| 12251 | (list |
| 12252 | #:phases |
| 12253 | #~(modify-phases %standard-phases |
| 12254 | (add-after 'unpack 'ignore-failing-tests |
| 12255 | (lambda _ |
| 12256 | (substitute* "test_macchiato.py" |
| 12257 | (("\\(.*\\n'\\)," all) |
| 12258 | (string-append "# " all)))))))) |
| 12259 | (native-inputs (list python-pytest python-setuptools)) |
| 12260 | (propagated-inputs (list python-black)) |
| 12261 | (home-page "https://github.com/wbolster/black-macchiato") |
| 12262 | (synopsis "Partial @code{python-black} formatting") |
| 12263 | (description |
| 12264 | "This package is built on top the @code{python-black} code formatter to |
| 12265 | enable formatting of partial files.") |
| 12266 | (license license:bsd-3))) |
| 12267 | |
| 12268 | (define-public python-blinker |
| 12269 | (package |
| 12270 | (name "python-blinker") |
| 12271 | (version "1.9.0") |
| 12272 | (source |
| 12273 | (origin |
| 12274 | (method url-fetch) |
| 12275 | (uri (pypi-uri "blinker" version)) |
| 12276 | (sha256 |
| 12277 | (base32 |
| 12278 | "1gs5aigi8v8k4cymm06gdgaylv5yps6yk5n8gigf9v5blxjj5kml")))) |
| 12279 | (build-system pyproject-build-system) |
| 12280 | (native-inputs |
| 12281 | (list python-flit-core |
| 12282 | python-pytest |
| 12283 | python-pytest-asyncio)) |
| 12284 | (home-page "https://pythonhosted.org/blinker/") |
| 12285 | (synopsis "Fast, simple object-to-object and broadcast signaling") |
| 12286 | (description |
| 12287 | "Blinker provides a fast dispatching system that allows any number of |
| 12288 | interested parties to subscribe to events, or \"signals\".") |
| 12289 | (license license:expat))) |
| 12290 | |
| 12291 | (define-public pelican |
| 12292 | (package |
| 12293 | (name "pelican") |
| 12294 | (version "4.11.0") |
| 12295 | (source |
| 12296 | (origin |
| 12297 | (method url-fetch) |
| 12298 | (uri (pypi-uri "pelican" version)) |
| 12299 | (sha256 |
| 12300 | (base32 "1n4b8y4vvycxhwmi3z5i96bh0d2rg1mk1hdc6cbkk3c1gd4380mr")))) |
| 12301 | (build-system pyproject-build-system) |
| 12302 | (arguments |
| 12303 | (list |
| 12304 | #:test-flags #~(list "-k" (string-append |
| 12305 | ;; These tests failed with AssertionError. |
| 12306 | "not test_typogrify_ignore_filters" |
| 12307 | " and not test_typogrify_ignore_tags" |
| 12308 | " and not test_error_on_warning")))) |
| 12309 | (native-inputs |
| 12310 | (list python-anyio |
| 12311 | python-beautifulsoup4 |
| 12312 | python-lxml |
| 12313 | python-pdm-backend |
| 12314 | python-pytest |
| 12315 | python-smartypants |
| 12316 | python-typogrify)) |
| 12317 | (inputs |
| 12318 | (list python-blinker |
| 12319 | python-dateutil |
| 12320 | ;; Ignoring `guix lint` warning as python-docutils is used to support |
| 12321 | ;; reStructuredText processing at runtime. |
| 12322 | python-docutils |
| 12323 | python-feedgenerator |
| 12324 | python-jinja2 |
| 12325 | python-ordered-set |
| 12326 | python-pygments |
| 12327 | python-rich |
| 12328 | python-tzdata |
| 12329 | python-unidecode |
| 12330 | python-watchfiles)) |
| 12331 | (home-page "https://blog.getpelican.com/") |
| 12332 | (synopsis "Python-based static site publishing system") |
| 12333 | (description |
| 12334 | "Pelican is a tool to generate a static blog from reStructuredText, |
| 12335 | Markdown input files, and more. Pelican uses Jinja2 for templating |
| 12336 | and is very extensible.") |
| 12337 | (license license:agpl3+))) |
| 12338 | |
| 12339 | (define-public python-cykhash |
| 12340 | (package |
| 12341 | (name "python-cykhash") |
| 12342 | (version "2.0.1") |
| 12343 | (source |
| 12344 | (origin |
| 12345 | (method url-fetch) |
| 12346 | (uri (pypi-uri "cykhash" version)) |
| 12347 | (sha256 |
| 12348 | (base32 "1xwpxff4whfvkwvcyhzhdcj5zzq89vvdjmnqy664s4a9yp4lnydl")))) |
| 12349 | (build-system pyproject-build-system) |
| 12350 | (arguments |
| 12351 | (list #:tests? #f)) ;no tests in PyPI, 2.0.1 is not tagged in git |
| 12352 | (native-inputs |
| 12353 | (list python-cython |
| 12354 | python-setuptools)) |
| 12355 | (home-page "https://github.com/realead/cykhash") |
| 12356 | (synopsis "Khash-sets and maps") |
| 12357 | (description |
| 12358 | "This package is a Cython wrapper for khash-sets/maps. It brings |
| 12359 | functionality of |
| 12360 | @url{https://github.com/attractivechaos/klib/blob/master/khash.h, khash} to |
| 12361 | Python and Cython and can be used seamlessly in numpy or pandas. Numpy's |
| 12362 | world is lacking the concept of a (hash-)set. This shortcoming is fixed and |
| 12363 | efficient (memory- and speedwise compared to pandas) @code{unique} and |
| 12364 | @code{isin} are implemented. Python-set/dict have a big memory-footprint. |
| 12365 | For some datatypes the overhead can be reduced by using khash by factor 4-8.") |
| 12366 | (license license:expat))) |
| 12367 | |
| 12368 | (define-public python-cython |
| 12369 | ;; TODO: Move to python-build. |
| 12370 | (package |
| 12371 | (name "python-cython") |
| 12372 | (version "3.2.5") |
| 12373 | (source |
| 12374 | (origin |
| 12375 | (method git-fetch) |
| 12376 | (uri (git-reference |
| 12377 | (url "https://github.com/cython/cython") |
| 12378 | (commit version))) |
| 12379 | (file-name (git-file-name name version)) |
| 12380 | (sha256 |
| 12381 | (base32 "07n0x4z0ifkhl8hi47amqhqfjc6jlh5dra9r54nlsnwnai83psy1")))) |
| 12382 | (build-system pyproject-build-system) |
| 12383 | (arguments |
| 12384 | (list |
| 12385 | #:test-backend #~'custom |
| 12386 | #:test-flags |
| 12387 | #~(list "runtests.py" |
| 12388 | "-vv" |
| 12389 | ;; Some tests fail when number of cores are 24, keep on save |
| 12390 | ;; minimal count. |
| 12391 | "-j" (number->string (min 8 (parallel-job-count))) |
| 12392 | "-x" (string-join |
| 12393 | (list "annotate_html" |
| 12394 | "Debugger" |
| 12395 | ;; It fails with AssertionError: Failed doctest test |
| 12396 | ;; for complex_numbers_cpp.double_abs. |
| 12397 | ;; See: <https://github.com/cython/cython/issues/6528>. |
| 12398 | "complex_numbers_cpp" |
| 12399 | #$@(if (target-32bit?) |
| 12400 | ;; XXX: On 32-bit architectures, running the |
| 12401 | ;; parallel tests fails on many-core systems. |
| 12402 | ;; See: <https://github.com/cython/cython/issues/2807>. |
| 12403 | '("run.parallel" |
| 12404 | ;; Test cpp_stl_any.cast_test fails. |
| 12405 | ;; See: <https://github.com/cython/cython/issues/5928>. |
| 12406 | "cpp_stl_any") |
| 12407 | '()) |
| 12408 | #$@(if (system-hurd?) |
| 12409 | '("test_class_ref" |
| 12410 | "test_compiler_directives" |
| 12411 | "test_lang_version") |
| 12412 | '())) |
| 12413 | "|")) |
| 12414 | #:phases |
| 12415 | #~(modify-phases %standard-phases |
| 12416 | (add-before 'check 'pre-check |
| 12417 | (lambda* (#:key tests? test-flags #:allow-other-keys) |
| 12418 | ;; Disable compiler optimizations to greatly reduce the running |
| 12419 | ;; time of the test suite. |
| 12420 | (setenv "CFLAGS" "-O0") |
| 12421 | ;; Some tests require access to "$HOME/.cython". |
| 12422 | (setenv "HOME" "/tmp")))))) |
| 12423 | (native-inputs |
| 12424 | (list libxcrypt |
| 12425 | python-setuptools)) |
| 12426 | ;; we need the full python package and not just the python-wrapper |
| 12427 | ;; because we need libpython3.3m.so |
| 12428 | (inputs |
| 12429 | (list python)) |
| 12430 | (home-page "https://cython.org/") |
| 12431 | (synopsis "C extensions for Python") |
| 12432 | (description "Cython is an optimising static compiler for both the Python |
| 12433 | programming language and the extended Cython programming language. It makes |
| 12434 | writing C extensions for Python as easy as Python itself.") |
| 12435 | (license license:asl2.0))) |
| 12436 | |
| 12437 | (define-public python-cython-0 |
| 12438 | (package |
| 12439 | (inherit python-cython) |
| 12440 | ;; It's the latest version of 0.29. See |
| 12441 | ;; <https://github.com/cython/cython/blob/0.29.37/CHANGES.rst>. |
| 12442 | (version "0.29.37") |
| 12443 | (source |
| 12444 | (origin |
| 12445 | (method url-fetch) |
| 12446 | (uri (pypi-uri "Cython" version)) |
| 12447 | (sha256 |
| 12448 | (base32 "1ysca2r23h12ai9wrym4ci0nvgwm3lfijrpj9xfyxbclvnkd84zq")))) |
| 12449 | (arguments |
| 12450 | (list |
| 12451 | ;; XXX: Tests are broken with [email protected], but dependent packages |
| 12452 | ;; build, so keep it until unnecessary. |
| 12453 | #:tests? #f |
| 12454 | #:test-backend #~'custom |
| 12455 | #:test-flags |
| 12456 | #~(list "runtests.py" |
| 12457 | "-vv" |
| 12458 | "-j" (number->string (parallel-job-count)) |
| 12459 | ;; XXX: On 32-bit architectures, running the parallel tests |
| 12460 | ;; fails on many-core systems, see |
| 12461 | ;; <https://github.com/cython/cython/issues/2807>. |
| 12462 | #$@(if (target-32bit?) |
| 12463 | #~("-x" "run.parallel") |
| 12464 | #~()) |
| 12465 | #$@(if (system-hurd?) |
| 12466 | #~("-x" "test_class_ref" |
| 12467 | "-x" "test_compiler_directives" |
| 12468 | "-x" "test_lang_version") |
| 12469 | #~()) |
| 12470 | ;; This test fails when running on 24 cores. |
| 12471 | "-x" "cpp_stl_conversion") |
| 12472 | #:phases |
| 12473 | #~(modify-phases %standard-phases |
| 12474 | (add-after 'unpack 'fix-pyximport-python-3.12 |
| 12475 | (lambda _ |
| 12476 | (let ((importlib-util-load-dynamic "\ |
| 12477 | import importlib.util |
| 12478 | from importlib.machinery import ExtensionFileLoader |
| 12479 | |
| 12480 | def load_dynamic(name, path): |
| 12481 | loader = ExtensionFileLoader(name, path) |
| 12482 | spec = importlib.util.spec_from_file_location(name, loader=loader) |
| 12483 | module = importlib.util.module_from_spec(spec) |
| 12484 | spec.loader.exec_module(module) |
| 12485 | return module |
| 12486 | ")) |
| 12487 | (substitute* "pyximport/pyximport.py" |
| 12488 | (("^import imp") |
| 12489 | importlib-util-load-dynamic) |
| 12490 | (("imp\\.load_dynamic") |
| 12491 | "load_dynamic"))))) |
| 12492 | (add-before 'check 'pre-check |
| 12493 | ;; some tests require access to "$HOME/.cython" |
| 12494 | (lambda _ |
| 12495 | (setenv "HOME" "/tmp") |
| 12496 | ;; Disable compiler optimizations to greatly reduce the running |
| 12497 | ;; time of the test suite. |
| 12498 | (setenv "CFLAGS" "-O0")))))))) |
| 12499 | |
| 12500 | ;; XXX: Deprecated on <2026-05-28>. |
| 12501 | (define-public python-cython-next python-cython) |
| 12502 | |
| 12503 | ;; NOTE: when upgrading numpy please make sure that python-numba, |
| 12504 | ;; python-pandas and python-scipy still build, as these three packages are |
| 12505 | ;; often used together. |
| 12506 | (define-public python-numpy |
| 12507 | (package |
| 12508 | (name "python-numpy") |
| 12509 | (version "2.4.6") |
| 12510 | (source |
| 12511 | (origin |
| 12512 | ;; XXX: When switching to Git it fails to find Numpy's fork of Meson |
| 12513 | ;; git submodule -- <https://github.com/numpy/meson>. |
| 12514 | (method url-fetch) |
| 12515 | (uri (string-append |
| 12516 | "https://github.com/numpy/numpy/releases/download/v" |
| 12517 | version "/numpy-" version ".tar.gz")) |
| 12518 | (sha256 |
| 12519 | (base32 "1nkx73blw298dzdk6blhrsann60cgdy7q6n3q9m785ia9865g8zk")))) |
| 12520 | (build-system pyproject-build-system) |
| 12521 | (arguments |
| 12522 | (list |
| 12523 | ;; tests: 47255 passed, 1079 skipped, 32 xfailed, 2 xpassed, 318 warnings |
| 12524 | #:modules '((guix build utils) |
| 12525 | (guix build pyproject-build-system) |
| 12526 | (ice-9 format)) |
| 12527 | #:test-flags |
| 12528 | #~(list "-m" "not slow" |
| 12529 | "--numprocesses" (number->string (min 8 (parallel-job-count)))) |
| 12530 | #:phases |
| 12531 | #~(modify-phases %standard-phases |
| 12532 | (add-after 'unpack 'fix-executable-paths |
| 12533 | (lambda* (#:key inputs #:allow-other-keys) |
| 12534 | (substitute* "numpy/distutils/exec_command.py" |
| 12535 | (("'/bin/sh'") |
| 12536 | (format #f "~s" (which "bash")))) |
| 12537 | (substitute* "numpy/meson.build" |
| 12538 | ;; Relay on python from the PATH instead of full reference |
| 12539 | ;; stored in built wheel. |
| 12540 | (("'py.full_path\\(\\)'") "'python'")) |
| 12541 | (substitute* "numpy/_core/tests/test_cpu_features.py" |
| 12542 | (("/bin/true") |
| 12543 | (search-input-file inputs "bin/true"))))) |
| 12544 | (add-before 'build 'parallelize-build |
| 12545 | (lambda _ |
| 12546 | (setenv "OMP_NUM_THREAD" |
| 12547 | (number->string (parallel-job-count))) |
| 12548 | (setenv "NPY_NUM_BUILD_JOBS" |
| 12549 | (number->string (parallel-job-count))))) |
| 12550 | ;; XXX: It fails with an issue "'fenv_t' has not been declared..." |
| 12551 | ;; when the gfortran header is used. Remove gfortran from |
| 12552 | ;; CPLUS_INCLUDE_PATH as a workaround. Taken from |
| 12553 | ;; <https://issues.guix.gnu.org/73439#45>. |
| 12554 | (add-after 'set-paths 'hide-gfortran |
| 12555 | (lambda* (#:key inputs #:allow-other-keys) |
| 12556 | (let ((gfortran (assoc-ref inputs "gfortran"))) |
| 12557 | (setenv "CPLUS_INCLUDE_PATH" |
| 12558 | (string-join |
| 12559 | (delete (string-append gfortran "/include/c++") |
| 12560 | (string-split (getenv "CPLUS_INCLUDE_PATH") #\:)) |
| 12561 | ":"))))) |
| 12562 | (add-before 'build 'configure-blas |
| 12563 | (lambda _ |
| 12564 | (call-with-output-file "site.cfg" |
| 12565 | (lambda (port) |
| 12566 | (format port |
| 12567 | "[openblas] |
| 12568 | libraries = openblas |
| 12569 | library_dirs = ~a/lib |
| 12570 | include_dirs = ~:*~a/include~%" #$(this-package-input "openblas")))))) |
| 12571 | (replace 'check |
| 12572 | (lambda* (#:key tests? test-flags #:allow-other-keys) |
| 12573 | (when tests? |
| 12574 | (with-directory-excursion #$output |
| 12575 | (apply invoke "pytest" test-flags) |
| 12576 | (let ((pytest-cache (string-append #$output |
| 12577 | "/.pytest_cache"))) |
| 12578 | (when (access? pytest-cache X_OK) |
| 12579 | (delete-file-recursively pytest-cache))))))) |
| 12580 | ;; The executables provided by this package ('f2py' and 'numpy-config') |
| 12581 | ;; only depend on Python. By customizing the wrap phase we can ensure |
| 12582 | ;; that we don't add all Python packages listed in native-inputs to |
| 12583 | ;; the closure. This significantly reduces the overall closure size. |
| 12584 | ;; |
| 12585 | ;; See also <https://bugs.gnu.org/25235>. |
| 12586 | (replace 'wrap |
| 12587 | (lambda* (#:key inputs outputs #:allow-other-keys) |
| 12588 | (for-each |
| 12589 | (lambda (program) |
| 12590 | (wrap-program program |
| 12591 | `("GUIX_PYTHONPATH" ":" suffix |
| 12592 | ,(list (site-packages inputs outputs))))) |
| 12593 | (find-files (in-vicinity #$output "/bin")))))))) |
| 12594 | (native-inputs |
| 12595 | (list gfortran |
| 12596 | python-cython |
| 12597 | python-hypothesis |
| 12598 | python-meson |
| 12599 | python-pytest |
| 12600 | python-pytest-xdist)) |
| 12601 | (inputs |
| 12602 | (list bash |
| 12603 | openblas)) |
| 12604 | (home-page "https://numpy.org") |
| 12605 | (synopsis "Fundamental package for scientific computing with Python") |
| 12606 | (description "NumPy is the fundamental package for scientific computing |
| 12607 | with Python. It contains among other things: a powerful N-dimensional array |
| 12608 | object, sophisticated (broadcasting) functions, tools for integrating C/C++ |
| 12609 | and Fortran code, useful linear algebra, Fourier transform, and random number |
| 12610 | capabilities.") |
| 12611 | (properties |
| 12612 | '((upstream-name . "numpy"))) |
| 12613 | (license license:bsd-3))) |
| 12614 | |
| 12615 | (define-public python-numpy-1 |
| 12616 | (package |
| 12617 | (inherit python-numpy) |
| 12618 | (name "python-numpy") |
| 12619 | ;; XXX: Starting from v1.26.0 the project includes a vendored-meson which |
| 12620 | ;; is needed for SIMD and BLAS/LAPACK features that are not yet available |
| 12621 | ;; in upstream Meson. |
| 12622 | ;; |
| 12623 | ;; See: |
| 12624 | ;; - URL <https://raw.githubusercontent.com/numpy/numpy> |
| 12625 | ;; - commit :: 2f3549c9d7c5048621568e431c86bc7530742723 |
| 12626 | ;; - file <doc/source/building/understanding_meson.rst> |
| 12627 | (version "1.26.4") ;; This is the last planned release in the 1.26.x series. |
| 12628 | (source |
| 12629 | (origin |
| 12630 | (method url-fetch) |
| 12631 | (uri (string-append |
| 12632 | "https://github.com/numpy/numpy/releases/download/v" |
| 12633 | version "/numpy-" version ".tar.gz")) |
| 12634 | (sha256 |
| 12635 | (base32 |
| 12636 | "0410j6jfz1yzm5s0v0yrc1j0q6ih4322357and7arr0jxnlsn0ia")) |
| 12637 | (patches (search-patches "python-numpy-gcc-14.patch")))) |
| 12638 | (arguments |
| 12639 | (list |
| 12640 | ;; tests: 35652 passed, 2403 skipped, 32 xfailed, 2 xpassed |
| 12641 | #:modules '((guix build utils) |
| 12642 | (guix build pyproject-build-system) |
| 12643 | (ice-9 format)) |
| 12644 | #:phases |
| 12645 | #~(modify-phases %standard-phases |
| 12646 | (add-after 'unpack 'delete-test-files |
| 12647 | (lambda _ |
| 12648 | ;; These tests depend on older setuptools, see: |
| 12649 | ;; <https://github.com/numpy/numpy/issues/27531>. |
| 12650 | ;; |
| 12651 | ;; E ModuleNotFoundError: No module named |
| 12652 | ;; 'distutils.msvccompiler' |
| 12653 | (delete-file "numpy/distutils/tests/test_mingw32ccompiler.py") |
| 12654 | (delete-file "numpy/distutils/tests/test_system_info.py"))) |
| 12655 | ;; XXX: It fails with an issue "'fenv_t' has not been declared..." |
| 12656 | ;; when the gfortran header is used. Remove gfortran from |
| 12657 | ;; CPLUS_INCLUDE_PATH as a workaround. Taken from |
| 12658 | ;; <https://issues.guix.gnu.org/73439#45>. |
| 12659 | (add-after 'set-paths 'hide-gfortran |
| 12660 | (lambda* (#:key inputs #:allow-other-keys) |
| 12661 | (let ((gfortran (assoc-ref inputs "gfortran"))) |
| 12662 | (setenv "CPLUS_INCLUDE_PATH" |
| 12663 | (string-join |
| 12664 | (delete (string-append gfortran "/include/c++") |
| 12665 | (string-split (getenv "CPLUS_INCLUDE_PATH") #\:)) |
| 12666 | ":"))))) |
| 12667 | (add-before 'build 'relax-gcc-14-strictness |
| 12668 | (lambda _ |
| 12669 | (setenv "CFLAGS" |
| 12670 | "-g -O2 -Wno-error=implicit-function-declaration"))) |
| 12671 | (add-before 'build 'parallelize-build |
| 12672 | (lambda _ |
| 12673 | (setenv "NPY_NUM_BUILD_JOBS" |
| 12674 | (number->string (parallel-job-count))))) |
| 12675 | (add-before 'build 'configure-blas |
| 12676 | (lambda* (#:key inputs #:allow-other-keys) |
| 12677 | (call-with-output-file "site.cfg" |
| 12678 | (lambda (port) |
| 12679 | (format port |
| 12680 | "\ |
| 12681 | [openblas] |
| 12682 | libraries = openblas |
| 12683 | library_dirs = ~a/lib |
| 12684 | include_dirs = ~:*~a/include~%" |
| 12685 | (dirname (dirname |
| 12686 | (search-input-file |
| 12687 | inputs "include/openblas_config.h")))))))) |
| 12688 | (add-before 'build 'fix-executable-paths |
| 12689 | (lambda* (#:key inputs #:allow-other-keys) |
| 12690 | ;; Make /gnu/store/...-bash-.../bin/sh the default shell, |
| 12691 | ;; instead of /bin/sh. |
| 12692 | (substitute* "numpy/distutils/exec_command.py" |
| 12693 | (("'/bin/sh'") |
| 12694 | (format #f "~s" (search-input-file inputs "bin/bash")))) |
| 12695 | ;; Don't try to call '/bin/true' specifically. |
| 12696 | (substitute* "numpy/core/tests/test_cpu_features.py" |
| 12697 | (("/bin/true") (search-input-file inputs "bin/true"))))) |
| 12698 | (replace 'check |
| 12699 | (lambda* (#:key tests? outputs inputs #:allow-other-keys) |
| 12700 | (when tests? |
| 12701 | (invoke "./runtests.py" "-vv" "--no-build" "--mode=fast" |
| 12702 | "-j" (number->string (parallel-job-count)) |
| 12703 | ;; Contrary to scipy, the runtests.py script of numpy |
| 12704 | ;; does *not* automatically provide -n when -j is used |
| 12705 | ;; (see: https://github.com/numpy/numpy/issues/21359). |
| 12706 | "--" "-n" (number->string (parallel-job-count)) |
| 12707 | ;; Disable Pytest Warnings, they are resolved in the |
| 12708 | ;; latest 1.x.x: pytest.PytestRemovedIn9Warning: Marks |
| 12709 | ;; applied to fixtures have no effect, |
| 12710 | ;; DeprecationWarning. |
| 12711 | "-p" "no:warnings" |
| 12712 | "-k" (string-append |
| 12713 | ;; These tests may fail on 32-bit systems (see: |
| 12714 | ;; https://github.com/numpy/numpy/issues/18387). |
| 12715 | "not test_float_remainder_overflow " |
| 12716 | "and not test_pareto " |
| 12717 | ;; The 'test_rint_big_int' test fails on older |
| 12718 | ;; x86_64 CPUs such as the Core 2 Duo (see: |
| 12719 | ;; https://github.com/numpy/numpy/issues/22170). |
| 12720 | "and not test_rint_big_int " |
| 12721 | ;; They fail to detect compiler. |
| 12722 | "and not test_compile1 " |
| 12723 | "and not test_compile2 " |
| 12724 | ;; Due to disabled warnings |
| 12725 | "and not test_getattr_warning " |
| 12726 | "and not test_integer_signs " |
| 12727 | "and not test_implicit_cast_float_to_int_fails " |
| 12728 | "and not test_integer_signs " |
| 12729 | ;; The huge_array test is too large for 32-bit (see: |
| 12730 | ;; https://bugs.gentoo.org/843599 and |
| 12731 | ;; https://bugs.gentoo.org/846548). |
| 12732 | ;; TestKind.test_all is a Fortran type failure |
| 12733 | ;; that may be toolchain or environment related. |
| 12734 | #$@(if (or (target-x86?) (target-arm32?)) |
| 12735 | `(" and not test_identityless_reduction_huge_array" |
| 12736 | " and not (TestKind and test_all)") |
| 12737 | '()) |
| 12738 | ;; This test fails with a Fortran failure (16 |
| 12739 | ;; expected but got -1), due to the fact that it |
| 12740 | ;; requires a 64-bit system. |
| 12741 | #$@(if (or (target-x86-32?) (target-arm32?)) |
| 12742 | `(" and not test_int") |
| 12743 | '()) |
| 12744 | ;; These tests fail when building from aarch64-linux. |
| 12745 | #$@(if (target-arm32?) |
| 12746 | `(" and not test_features" |
| 12747 | " and not test_unary_spurious_fpexception") |
| 12748 | '()) |
| 12749 | ;; These tests seem to fail on machines without |
| 12750 | ;; an FPU is still under investigation upstream. |
| 12751 | ;; https://github.com/numpy/numpy/issues/20635 |
| 12752 | #$@(if (target-riscv64?) |
| 12753 | `(" and not test_fp_noncontiguous") |
| 12754 | '()) |
| 12755 | ;; They also fail with gcc-14 |
| 12756 | " and not test_float" |
| 12757 | " and not test_fpclass" |
| 12758 | |
| 12759 | ;; These tests fail with gcc-14 |
| 12760 | " and not test_context_locality" |
| 12761 | " and not test_cosh" |
| 12762 | " and not test_default_policy_singleton" |
| 12763 | " and not test_exp_exceptions" |
| 12764 | " and not test_half_fpe" |
| 12765 | " and not test_owner_is_base" |
| 12766 | " and not test_policy_propagation" |
| 12767 | " and not test_set_policy" |
| 12768 | " and not test_sinh" |
| 12769 | " and not test_square_values" |
| 12770 | " and not test_sum" |
| 12771 | " and not test_switch_owner" |
| 12772 | " and not test_thread_locality" |
| 12773 | |
| 12774 | ;; These tests depend on older setuptools, see: |
| 12775 | ;; <https://github.com/numpy/numpy/issues/27531>. |
| 12776 | " and not test_api_importable" |
| 12777 | " and not test_all_modules_are_expected_2"))))) |
| 12778 | ;; See comment for custom python-numpy wrap phase above. |
| 12779 | (replace 'wrap |
| 12780 | (lambda* (#:key inputs outputs #:allow-other-keys) |
| 12781 | (for-each |
| 12782 | (lambda (program) |
| 12783 | (wrap-program program |
| 12784 | `("GUIX_PYTHONPATH" ":" suffix |
| 12785 | ,(list (site-packages inputs outputs))))) |
| 12786 | (find-files (in-vicinity #$output "/bin")))))))) |
| 12787 | (native-inputs |
| 12788 | (list python-hypothesis |
| 12789 | python-meson |
| 12790 | python-pytest |
| 12791 | python-pytest-xdist |
| 12792 | python-setuptools |
| 12793 | python-typing-extensions |
| 12794 | ;; XXX: Avoid to: 'fenv_t' has not been declared in '::' 58 | using ::fenv_t; |
| 12795 | ;; See <https://github.com/numpy/numpy/issues/21075#issuecomment-1047976197>, |
| 12796 | ;; <https://github.com/numpy/numpy/issues/24318>. |
| 12797 | gcc ;fevn.h c[++] include must precede fortran's |
| 12798 | gfortran)) |
| 12799 | (inputs (list bash openblas)))) |
| 12800 | |
| 12801 | (define-deprecated/public-alias python-numpy-2 python-numpy) |
| 12802 | |
| 12803 | (define-public python-numpysane |
| 12804 | (package |
| 12805 | (name "python-numpysane") |
| 12806 | (version "0.43") |
| 12807 | (source |
| 12808 | (origin |
| 12809 | (method git-fetch) |
| 12810 | (uri (git-reference |
| 12811 | (url "https://github.com/dkogan/numpysane.git") |
| 12812 | (commit (string-append "v" version)))) |
| 12813 | (file-name (git-file-name name version)) |
| 12814 | (sha256 |
| 12815 | (base32 "1ls1nrdcizscdpv4712jr7wiaxkmryrai7w0ci06fiq5haq54hrn")))) |
| 12816 | (build-system pyproject-build-system) |
| 12817 | (arguments |
| 12818 | (list |
| 12819 | #:phases |
| 12820 | #~(modify-phases %standard-phases |
| 12821 | (add-after 'unpack 'patch |
| 12822 | (lambda* (#:key inputs outputs #:allow-other-keys) |
| 12823 | (let* ((numpy (assoc-ref inputs "python-numpy")) |
| 12824 | (site (site-packages inputs `(("out" . ,numpy))))) |
| 12825 | (substitute* "Makefile.common.header" |
| 12826 | ;; See: <https://github.com/dkogan/numpysane/issues/3>. |
| 12827 | (("pkg-config --cflags-only-I numpy") |
| 12828 | (format #f "echo -I~a/numpy/_core/include" site)))))) |
| 12829 | (replace 'check |
| 12830 | (lambda _ |
| 12831 | (setenv "CC" |
| 12832 | #$(cc-for-target)) |
| 12833 | (invoke "make" "check")))))) |
| 12834 | (propagated-inputs (list python-numpy)) |
| 12835 | (native-inputs (list perl pkg-config python-setuptools)) |
| 12836 | (home-page "https://github.com/dkogan/numpysane") |
| 12837 | (synopsis "More-reasonable core functionality for numpy") |
| 12838 | (description |
| 12839 | "This package provides more-reasonable core functionality for numpy. |
| 12840 | |
| 12841 | A lot of numpysane functionality is inspired by PDL (Perl Data Language). |
| 12842 | |
| 12843 | numpysane has: |
| 12844 | @itemize |
| 12845 | @item easier broadcasting |
| 12846 | @item nicer array manipulation |
| 12847 | @item array concatenation |
| 12848 | @item manipulation of dimensions |
| 12849 | @item broadcast-aware inner product |
| 12850 | @item broadcast-aware outer product |
| 12851 | @item broadcast-aware 2-norm |
| 12852 | @item broadcast-aware matrix multiplication |
| 12853 | @end itemize |
| 12854 | ") |
| 12855 | (license license:lgpl2.0+))) |
| 12856 | |
| 12857 | (define-public python-numpy-documentation |
| 12858 | (package |
| 12859 | (inherit python-numpy) |
| 12860 | (name "python-numpy-documentation") |
| 12861 | (arguments |
| 12862 | (list |
| 12863 | #:tests? #f ;we're only generating the documentation |
| 12864 | #:phases |
| 12865 | #~(modify-phases %standard-phases |
| 12866 | (add-after 'unpack 'avoid-external-deps |
| 12867 | (lambda _ |
| 12868 | ;; XXX: Avoid search-button to avoid sphinx error |
| 12869 | ;; TemplateNotFound('search-button.html') |
| 12870 | (substitute* "doc/source/conf.py" |
| 12871 | (("\"search-button\",") "")) |
| 12872 | ;; XXX: Avoid theme-switcher to avoid sphinx error |
| 12873 | ;; TemplateNotFound('theme-switcher.html') |
| 12874 | (substitute* "doc/source/conf.py" |
| 12875 | (("\"theme-switcher\",") "")) |
| 12876 | ;; XXX: Avoid version-switcher because it depends on the value |
| 12877 | ;; of external https://numpy.org/doc/_static/versions.json |
| 12878 | (substitute* "doc/source/conf.py" |
| 12879 | (("\"version-switcher\",") "")))) |
| 12880 | (add-before 'build 'add-gnu-freefont-to-texmf |
| 12881 | (lambda _ |
| 12882 | ;; XXX: The Sphinx-generated tex output specifies the GNU |
| 12883 | ;; FreeFont font to be searched via its extension, which uses |
| 12884 | ;; kpathsea instead of fontconfig and fail (see: |
| 12885 | ;; https://github.com/sphinx-doc/sphinx/issues/10347). Create a |
| 12886 | ;; symlink to GNU FreeFont and add it to the TEXMF tree via |
| 12887 | ;; GUIX_TEXMF. |
| 12888 | (mkdir-p "texmf-dist/fonts/opentype/public") |
| 12889 | (symlink (string-append |
| 12890 | #$(this-package-native-input "font-gnu-freefont") |
| 12891 | "/share/fonts/opentype") |
| 12892 | (string-append |
| 12893 | (getcwd) "/" |
| 12894 | "texmf-dist/fonts/opentype/public/gnu-freefont")) |
| 12895 | (setenv "GUIX_TEXMF" (string-append (getenv "GUIX_TEXMF") ":" |
| 12896 | (getcwd) "/texmf-dist")))) |
| 12897 | (replace 'build |
| 12898 | (lambda _ |
| 12899 | (chdir "doc") |
| 12900 | (let ((sphinxopts (string-append |
| 12901 | "SPHINXOPTS=-j" |
| 12902 | (number->string (parallel-job-count))))) |
| 12903 | ;; Do not treat warnings as errors. |
| 12904 | (substitute* "Makefile" |
| 12905 | ((" -WT ") " -T ")) |
| 12906 | (setenv "HOME" "/tmp") |
| 12907 | ;; Build the PDF documentation. |
| 12908 | (invoke "make" "latex-build" sphinxopts) |
| 12909 | ;; FIXME: PDF build fails |
| 12910 | ;; (invoke "make" "-C" "build/latex" "all-pdf" sphinxopts) |
| 12911 | ;; Build the HTML documentation |
| 12912 | (invoke "make" "html" sphinxopts) |
| 12913 | ;; Build the Info documentation. The issues worked around |
| 12914 | ;; below can be tracked at |
| 12915 | ;; https://github.com/numpy/numpy/issues/12278. |
| 12916 | (substitute* "source/conf.py" |
| 12917 | ;; The root document should be "index", not "contents". |
| 12918 | (("\"contents\"") "'index'") |
| 12919 | ;; Disable Sphinx extensions that produce broken Texinfo. |
| 12920 | ((".*'numpydoc'.*") "") |
| 12921 | ((".*'sphinx.ext.autodoc'.*") "") |
| 12922 | ((".*'sphinx.ext.autosummary'.*") "")) |
| 12923 | (invoke "make" "info" sphinxopts)))) |
| 12924 | (replace 'install |
| 12925 | (lambda _ |
| 12926 | (let* ((data (string-append #$output "/share")) |
| 12927 | (doc (string-append data "/doc/numpy")) |
| 12928 | (html (string-append doc "/html")) |
| 12929 | (info (string-append data "/info"))) |
| 12930 | ;; Install the HTML documentation. |
| 12931 | (mkdir-p html) |
| 12932 | (copy-recursively "build/html" html) |
| 12933 | ;; Install the PDF reference and user manuals. |
| 12934 | ;; FIXME: |
| 12935 | ;; (install-file "build/latex/numpy-ref.pdf" doc) |
| 12936 | ;; (install-file "build/latex/numpy-user.pdf" doc) |
| 12937 | ;; Install the info manual. |
| 12938 | (install-file "build/texinfo/numpy.info" info) |
| 12939 | (symlink (string-append html "/_images") |
| 12940 | (string-append info "/numpy-figures")))))))) |
| 12941 | (native-inputs |
| 12942 | (list font-gnu-freefont |
| 12943 | perl |
| 12944 | python-breathe |
| 12945 | python-ipython |
| 12946 | python-jupyterlite-sphinx |
| 12947 | python-matplotlib |
| 12948 | python-numpy |
| 12949 | python-numpydoc |
| 12950 | python-pandas |
| 12951 | python-pydata-sphinx-theme |
| 12952 | python-scipy ;used by matplotlib |
| 12953 | python-setuptools |
| 12954 | python-sphinx |
| 12955 | python-sphinx-copybutton |
| 12956 | python-sphinx-design |
| 12957 | texinfo |
| 12958 | (texlive-local-tree |
| 12959 | (list texlive-cbfonts |
| 12960 | texlive-cm-super |
| 12961 | texlive-cmap |
| 12962 | texlive-expdlist |
| 12963 | texlive-fandol |
| 12964 | texlive-greek-fontenc |
| 12965 | texlive-latexmk |
| 12966 | texlive-polyglossia |
| 12967 | texlive-xetex |
| 12968 | texlive-xindy)))) |
| 12969 | (inputs '()) |
| 12970 | (propagated-inputs '()) |
| 12971 | (synopsis "Documentation for the @code{python-numpy} package") |
| 12972 | (description "This package provides the complete NumPy documentation in |
| 12973 | the Texinfo, and HTML formats."))) |
| 12974 | |
| 12975 | (define-public python-numpy-stl |
| 12976 | (package |
| 12977 | (name "python-numpy-stl") |
| 12978 | (version "3.2.0") |
| 12979 | (source |
| 12980 | (origin |
| 12981 | (method url-fetch) |
| 12982 | (uri (pypi-uri "numpy_stl" version)) |
| 12983 | (sha256 |
| 12984 | (base32 "0kgxhghl9j5caydb2a9g2n44zvffd94gb6abday0manxkkvw682s")))) |
| 12985 | (build-system pyproject-build-system) |
| 12986 | (native-inputs |
| 12987 | (list python-cython |
| 12988 | python-pytest |
| 12989 | python-setuptools |
| 12990 | python-wheel)) |
| 12991 | (propagated-inputs |
| 12992 | (list python-numpy |
| 12993 | python-utils)) |
| 12994 | (home-page "https://github.com/WoLpH/numpy-stl/") |
| 12995 | (synopsis "Read, write and modify binary/ASCII STL files library") |
| 12996 | (description |
| 12997 | "Library to make reading, writing and modifying both binary and ascii STL |
| 12998 | files, file format native to the stereolithography CAD software created by 3D |
| 12999 | Systems, easy.") |
| 13000 | (license license:bsd-3))) |
| 13001 | |
| 13002 | (define-public python-npx |
| 13003 | (package |
| 13004 | (name "python-npx") |
| 13005 | (version "0.1.6") |
| 13006 | (source |
| 13007 | (origin |
| 13008 | (method git-fetch) ; no source archive in PyPI |
| 13009 | (uri (git-reference |
| 13010 | (url "https://github.com/sigma-py/npx") |
| 13011 | (commit (string-append "v" version)))) |
| 13012 | (file-name (git-file-name name version)) |
| 13013 | (sha256 |
| 13014 | (base32 "0a3rb3ydl13m1r48kdvnbi31566jxm10p36argkz5kjr2ilkrx8v")))) |
| 13015 | (build-system pyproject-build-system) |
| 13016 | (native-inputs |
| 13017 | (list python-networkx |
| 13018 | python-pytest |
| 13019 | python-setuptools |
| 13020 | python-wheel)) |
| 13021 | (propagated-inputs |
| 13022 | (list python-numpy)) |
| 13023 | (home-page "https://github.com/nschloe/npx") |
| 13024 | (synopsis "Extensions for NumPy") |
| 13025 | (description "NumPy is a large library used everywhere in scientific |
| 13026 | computing. That's why breaking backwards-compatibility comes at a |
| 13027 | significant cost and is almost always avoided, even if the API of some |
| 13028 | methods is arguably lacking. This package provides drop-in wrappers |
| 13029 | \"fixing\" those.") |
| 13030 | (license license:bsd-3))) |
| 13031 | |
| 13032 | (define-public python-munch |
| 13033 | (package |
| 13034 | (name "python-munch") |
| 13035 | (version "4.0.0") |
| 13036 | (source |
| 13037 | (origin |
| 13038 | (method url-fetch) |
| 13039 | (uri (pypi-uri "munch" version)) |
| 13040 | (sha256 |
| 13041 | (base32 |
| 13042 | "0d928bdzm0d9s9f058xa72pywps2zjdgvhrp9rm22qqj8r8v2b2l")))) |
| 13043 | (build-system pyproject-build-system) |
| 13044 | (native-inputs |
| 13045 | (list python-astroid |
| 13046 | python-pytest |
| 13047 | python-setuptools |
| 13048 | python-wheel)) |
| 13049 | (home-page "https://github.com/Infinidat/munch") |
| 13050 | (synopsis "Dot-accessible dictionary") |
| 13051 | (description "Munch is a dot-accessible dictionary similar to JavaScript |
| 13052 | objects.") |
| 13053 | (license license:expat))) |
| 13054 | |
| 13055 | (define-public python-colormath2 |
| 13056 | (package |
| 13057 | (name "python-colormath2") |
| 13058 | (version "3.0.3") |
| 13059 | (source |
| 13060 | (origin |
| 13061 | (method git-fetch) |
| 13062 | (uri (git-reference |
| 13063 | (url "https://github.com/bkmgit/python-colormath2") |
| 13064 | (commit version))) |
| 13065 | (file-name (git-file-name name version)) |
| 13066 | (sha256 |
| 13067 | (base32 "0xxhmmx1mzjggapjmpz8v166lj86xrkq7kak83akcirnq0pz9ihv")))) |
| 13068 | (build-system pyproject-build-system) |
| 13069 | (propagated-inputs (list python-networkx python-numpy)) |
| 13070 | (native-inputs (list python-nose2 python-setuptools)) |
| 13071 | (home-page "https://github.com/bkmgit/python-colormath2") |
| 13072 | (synopsis "Color math and conversion library") |
| 13073 | (description |
| 13074 | "This is a Python library for color math and conversions.") |
| 13075 | (license license:bsd-3))) |
| 13076 | |
| 13077 | (define-public python-pam |
| 13078 | (package |
| 13079 | (name "python-pam") |
| 13080 | (version "2.0.2") |
| 13081 | (source |
| 13082 | (origin |
| 13083 | (method git-fetch) |
| 13084 | (uri (git-reference |
| 13085 | (url "https://github.com/FirefighterBlu3/python-pam") |
| 13086 | (commit (string-append "v" version)))) |
| 13087 | (file-name (git-file-name name version)) |
| 13088 | (sha256 |
| 13089 | (base32 "05fvf9rg4h7sigzvipm1ghq34zk6i8na7wkyk905nvk4gdhln7ri")))) |
| 13090 | (build-system pyproject-build-system) |
| 13091 | (arguments |
| 13092 | (list |
| 13093 | #:test-flags |
| 13094 | #~(list "-k" |
| 13095 | (string-append " not __normal_" |
| 13096 | " and not __env_requires_" |
| 13097 | " and not __getenv" |
| 13098 | " and not __putenv" |
| 13099 | " and not __unset" |
| 13100 | " and not _setenv" |
| 13101 | " and not _env_set" |
| 13102 | " and not __pam_end" |
| 13103 | " and not _session_unauthenticated")) |
| 13104 | #:phases |
| 13105 | #~(modify-phases %standard-phases |
| 13106 | (add-after 'unpack 'bake-pam |
| 13107 | (lambda* (#:key inputs #:allow-other-keys) |
| 13108 | (substitute* "src/pam/__internals.py" |
| 13109 | (("find_library\\(\"(pam|pam_misc)\"\\)" all lib) |
| 13110 | (string-append |
| 13111 | "\"" |
| 13112 | (search-input-file inputs |
| 13113 | (string-append "lib/lib" lib ".so")) |
| 13114 | "\""))))) |
| 13115 | (add-before 'check 'fix-test-config |
| 13116 | (lambda _ |
| 13117 | (substitute* "pyproject.toml" |
| 13118 | (("\"test_\\*.py\"") |
| 13119 | (format |
| 13120 | #f "[~{~s~^,~}]" |
| 13121 | (map basename (find-files "tests" "test_.*\\.py$")))) |
| 13122 | (("norecursedirs = (\".*\")" all dirs) |
| 13123 | (string-append "norecursedirs = [" dirs "]")))))))) |
| 13124 | (inputs (list linux-pam)) |
| 13125 | (propagated-inputs (list python-six)) |
| 13126 | (native-inputs (list python-pytest |
| 13127 | python-setuptools)) |
| 13128 | (home-page "https://github.com/FirefighterBlu3/python-pam") |
| 13129 | (synopsis "Python PAM module") |
| 13130 | (description "This package provides a Python module to interface with |
| 13131 | @acronym{PAM, pluggable authentication modules}.") |
| 13132 | (license license:expat))) |
| 13133 | |
| 13134 | (define-public python-pyspnego |
| 13135 | (package |
| 13136 | (name "python-pyspnego") |
| 13137 | (version "0.8.0") |
| 13138 | (source (origin |
| 13139 | (method url-fetch) |
| 13140 | (uri (pypi-uri "pyspnego" version)) |
| 13141 | (sha256 |
| 13142 | (base32 |
| 13143 | "1ps34laa0kvvp33az173hp5l0hnk8cr0bfqmlgw64ry5cv09qjg0")))) |
| 13144 | (build-system pyproject-build-system) |
| 13145 | (native-inputs |
| 13146 | (list python-pytest python-pytest-mock python-setuptools python-wheel)) |
| 13147 | (propagated-inputs |
| 13148 | (list python-cryptography python-gssapi python-krb5 python-ruamel.yaml)) |
| 13149 | (home-page "https://github.com/jborean93/pyspnego") |
| 13150 | (synopsis "Python SPNEGO library") |
| 13151 | (description "The @code{pyspnego} Python library handles Negotiate, NTLM, |
| 13152 | Kerberos (SPNEGO) and CredSSP authentication. It also includes a packet |
| 13153 | parser that can be used to decode raw NTLM/SPNEGO/Kerberos tokens into a human |
| 13154 | readable format.") |
| 13155 | (license license:expat))) |
| 13156 | |
| 13157 | (define-public python-pygit2 |
| 13158 | (package |
| 13159 | (name "python-pygit2") |
| 13160 | (version "1.18.2") |
| 13161 | (source |
| 13162 | (origin |
| 13163 | (method url-fetch) |
| 13164 | (uri (pypi-uri "pygit2" version)) |
| 13165 | (sha256 |
| 13166 | (base32 "0m8g8s72c0xwwayykpj1hf8c1wldhmg1sj8kgxdp2rf9c837xa7c")))) |
| 13167 | (build-system pyproject-build-system) |
| 13168 | (propagated-inputs (list python-cffi libgit2)) |
| 13169 | (native-inputs (list python-pytest python-setuptools python-wheel)) |
| 13170 | (home-page "https://github.com/libgit2/pygit2") |
| 13171 | (synopsis "Python bindings for libgit2") |
| 13172 | (description "Pygit2 is a set of Python bindings to the libgit2 shared library.") |
| 13173 | ;; GPL2.0 only, with linking exception. |
| 13174 | (license license:gpl2))) |
| 13175 | |
| 13176 | (define-public python-patiencediff |
| 13177 | (package |
| 13178 | (name "python-patiencediff") |
| 13179 | (version "0.2.15") |
| 13180 | (source |
| 13181 | (origin |
| 13182 | (method url-fetch) |
| 13183 | (uri (pypi-uri "patiencediff" version)) |
| 13184 | (sha256 |
| 13185 | (base32 |
| 13186 | "012jjgkkpk563l1mgj2ax4z32h0l558adhr2qa3chfrfsgpi22fh")))) |
| 13187 | (build-system pyproject-build-system) |
| 13188 | (arguments |
| 13189 | (list |
| 13190 | #:phases #~(modify-phases %standard-phases |
| 13191 | ;; Fails because bin/patiencediff expects two files to diff |
| 13192 | (delete 'sanity-check)))) |
| 13193 | (native-inputs (list python-pytest python-setuptools python-wheel)) |
| 13194 | (home-page "https://www.breezy-vcs.org/") |
| 13195 | (synopsis "Python implementation of the patiencediff algorithm") |
| 13196 | (description |
| 13197 | "This package contains a Python implementation of the @code{patiencediff} |
| 13198 | algorithm. Patiencediff provides a good balance of performance, nice output for |
| 13199 | humans, and implementation simplicity.") |
| 13200 | (license license:gpl2+))) |
| 13201 | |
| 13202 | (define-public python-merge3 |
| 13203 | (package |
| 13204 | (name "python-merge3") |
| 13205 | (version "0.0.16") |
| 13206 | (source |
| 13207 | (origin |
| 13208 | (method git-fetch) |
| 13209 | (uri (git-reference |
| 13210 | (url "https://github.com/breezy-team/merge3") |
| 13211 | (commit (string-append "v" version)))) |
| 13212 | (file-name (git-file-name name version)) |
| 13213 | (sha256 |
| 13214 | (base32 "18z0ya92qlrm1imwi6lws4b0y9a66gknlcpylyb9h6m733bf5slb")))) |
| 13215 | (build-system pyproject-build-system) |
| 13216 | (arguments (list #:test-backend #~'unittest)) |
| 13217 | (native-inputs (list python-setuptools)) |
| 13218 | (home-page "https://github.com/breezy-team/merge3") |
| 13219 | (synopsis "Python implementation of 3-way merge") |
| 13220 | (description "This Python library implements 3-way merge for text.") |
| 13221 | (license license:gpl2+))) |
| 13222 | |
| 13223 | (define-public python-fancycompleter |
| 13224 | (package |
| 13225 | (name "python-fancycompleter") |
| 13226 | (version "0.9.1") |
| 13227 | (source |
| 13228 | (origin |
| 13229 | (method git-fetch) |
| 13230 | (uri (git-reference |
| 13231 | (url "https://github.com/pdbpp/fancycompleter") |
| 13232 | (commit version))) |
| 13233 | (file-name (git-file-name name version)) |
| 13234 | (sha256 |
| 13235 | (base32 "04gbnpm2m86wgigaqf03mphacawg203gdgpljx5xzax3vhm8qnxw")))) |
| 13236 | (build-system pyproject-build-system) |
| 13237 | (arguments |
| 13238 | (list |
| 13239 | #:phases |
| 13240 | #~(modify-phases %standard-phases |
| 13241 | (add-after 'unpack 'fix-setup.py |
| 13242 | (lambda _ |
| 13243 | (substitute* "setup.py" |
| 13244 | ((".*setupmeta.*") |
| 13245 | "") |
| 13246 | (("versioning=.*") |
| 13247 | (string-append "version='" #$version "',")) |
| 13248 | ((".*pyrepl.*") ; broken on Python 3 |
| 13249 | ""))))))) |
| 13250 | (native-inputs (list python-pytest python-setuptools)) |
| 13251 | (home-page "https://github.com/pdbpp/fancycompleter") |
| 13252 | (synopsis "TAB completion library for Python") |
| 13253 | (description |
| 13254 | "@code{fancycompleter} is a module that adds TAB completion to the |
| 13255 | interactive prompt. It is an extension of the @code{rlcompleter} module from |
| 13256 | the standard Python library.") |
| 13257 | (license license:bsd-3))) |
| 13258 | |
| 13259 | (define-public python-ipdb |
| 13260 | (package |
| 13261 | (name "python-ipdb") |
| 13262 | (version "0.13.13") |
| 13263 | (source |
| 13264 | (origin |
| 13265 | (method git-fetch) |
| 13266 | (uri (git-reference |
| 13267 | (url "https://github.com/gotcha/ipdb") |
| 13268 | (commit version))) |
| 13269 | (file-name (git-file-name name version)) |
| 13270 | (sha256 |
| 13271 | (base32 "151cw13kgfgv2is7kx10zzwp17kkvzz6658srdhgnzm6d5kjjrxk")))) |
| 13272 | (build-system pyproject-build-system) |
| 13273 | (arguments (list #:test-backend #~'unittest)) |
| 13274 | (native-inputs (list python-setuptools)) |
| 13275 | (propagated-inputs (list python-ipython python-toml python-decorator)) |
| 13276 | (home-page "https://github.com/gotcha/ipdb") |
| 13277 | (synopsis "IPython-enhanced Python debugger (pdb)") |
| 13278 | (description |
| 13279 | "@code{ipdb} exports functions to access the IPython debugger, which |
| 13280 | features tab completion, syntax highlighting, better tracebacks and better |
| 13281 | introspection than Python's standard @command{pdb} debugger, with which it |
| 13282 | shares the same interface.") |
| 13283 | (license license:bsd-3))) |
| 13284 | |
| 13285 | (define-public python-ipfsspec |
| 13286 | (package |
| 13287 | (name "python-ipfsspec") |
| 13288 | (version "0.4.0") |
| 13289 | (source |
| 13290 | (origin |
| 13291 | (method url-fetch) |
| 13292 | (uri (pypi-uri "ipfsspec" version)) |
| 13293 | (sha256 |
| 13294 | (base32 "1y4ad9schc76j2lynm7vpwi4q4jzi9vv843zfpisbp8zqgm0rr7l")))) |
| 13295 | (build-system pyproject-build-system) |
| 13296 | (arguments |
| 13297 | (list |
| 13298 | #:test-flags |
| 13299 | '(list "-m not local_gw" |
| 13300 | ;; Require local gateway |
| 13301 | "--ignore=test/test_gateway.py" |
| 13302 | ;; Require internet |
| 13303 | "--ignore=test/test_async.py" |
| 13304 | "--ignore=test/test_ipfs.py"))) |
| 13305 | (propagated-inputs (list python-aiohttp python-fsspec python-requests)) |
| 13306 | (native-inputs |
| 13307 | (list python-pytest |
| 13308 | python-pytest-asyncio |
| 13309 | python-setuptools |
| 13310 | python-wheel)) |
| 13311 | (home-page "https://github.com/fsspec/ipfsspec") |
| 13312 | (synopsis "Read-only implementation of fsspec for IPFS") |
| 13313 | (description "This package provides a read-only implementation of |
| 13314 | @code{fsspec} for IPFS.") |
| 13315 | (license license:expat))) |
| 13316 | |
| 13317 | (define-public python-pdftotext |
| 13318 | (package |
| 13319 | (name "python-pdftotext") |
| 13320 | (version "3.0.0") |
| 13321 | (source |
| 13322 | (origin |
| 13323 | (method url-fetch) |
| 13324 | (uri (pypi-uri "pdftotext" version)) |
| 13325 | (sha256 |
| 13326 | (base32 "1ahs7c0qh3gyafxwrg9p4gcqwcrnc7y57adzm0ama52f2lcjnrf3")))) |
| 13327 | (build-system pyproject-build-system) |
| 13328 | (native-inputs (list python-pytest python-setuptools python-wheel)) |
| 13329 | (inputs (list poppler)) |
| 13330 | (home-page "https://github.com/jalan/pdftotext") |
| 13331 | (synopsis "Simple PDF text extraction") |
| 13332 | (description "Pdftotext is a Python library of PDF text extraction.") |
| 13333 | (license license:expat))) |
| 13334 | |
| 13335 | (define-public python-pluginbase |
| 13336 | (package |
| 13337 | (name "python-pluginbase") |
| 13338 | (version "1.0.1") |
| 13339 | (source |
| 13340 | (origin |
| 13341 | (method git-fetch) |
| 13342 | (uri (git-reference |
| 13343 | (url "https://github.com/mitsuhiko/pluginbase") |
| 13344 | (commit (string-append "v" version)))) |
| 13345 | (file-name (git-file-name name version)) |
| 13346 | (sha256 |
| 13347 | (base32 "16c089ka8z4wb4mnx6a3dbvibibgzvawm8zgkp7ppadsgb3lc357")))) |
| 13348 | (build-system pyproject-build-system) |
| 13349 | (arguments |
| 13350 | (list |
| 13351 | #:phases |
| 13352 | #~(modify-phases %standard-phases |
| 13353 | (replace 'check |
| 13354 | (lambda* (#:key tests? #:allow-other-keys) |
| 13355 | (when tests? |
| 13356 | (invoke "make" "test"))))))) |
| 13357 | (native-inputs (list python-pytest python-setuptools)) |
| 13358 | (home-page "https://github.com/mitsuhiko/pluginbase") |
| 13359 | (synopsis "Simple but flexible plugin system for Python") |
| 13360 | (description |
| 13361 | "PluginBase is a library useful in the development of flexible plugin |
| 13362 | systems in Python.") |
| 13363 | (license license:bsd-3))) |
| 13364 | |
| 13365 | (define-public python-node-semver |
| 13366 | (package |
| 13367 | (name "python-node-semver") |
| 13368 | (version "0.8.1") |
| 13369 | (source |
| 13370 | (origin |
| 13371 | (method git-fetch) |
| 13372 | (uri (git-reference |
| 13373 | (url "https://github.com/podhmo/python-node-semver") |
| 13374 | (commit version))) |
| 13375 | (file-name (git-file-name name version)) |
| 13376 | (sha256 |
| 13377 | (base32 "0az6v4y8awl3dhgrfyikgz2vc8p1k15qwsq6yb8azp54m1fbh5hs")))) |
| 13378 | (build-system pyproject-build-system) |
| 13379 | (native-inputs (list python-pytest python-setuptools)) |
| 13380 | (home-page "https://github.com/podhmo/python-node-semver") |
| 13381 | (synopsis "Python port of node-semver") |
| 13382 | (description |
| 13383 | "This module provides a Python version of node-semver, a semantic version |
| 13384 | parser for Node.js.") |
| 13385 | (license license:expat))) |
| 13386 | |
| 13387 | (define-public python-norns |
| 13388 | (package |
| 13389 | (name "python-norns") |
| 13390 | (version "0.1.6") |
| 13391 | (source |
| 13392 | (origin |
| 13393 | (method git-fetch) |
| 13394 | (uri (git-reference |
| 13395 | (url "https://github.com/simonvh/norns") |
| 13396 | (commit version))) |
| 13397 | (file-name (git-file-name name version)) |
| 13398 | (sha256 |
| 13399 | (base32 "0x488xd2dp1clnzpb3gikx416g0fh1bjs25bwi0jmsvqmd80hmb0")) |
| 13400 | (patches |
| 13401 | (search-patches "python-norns-nose.patch")))) |
| 13402 | (build-system pyproject-build-system) |
| 13403 | (propagated-inputs (list python-appdirs python-pynose python-pyyaml)) |
| 13404 | (native-inputs (list python-setuptools)) |
| 13405 | (home-page "https://github.com/simonvh/norns") |
| 13406 | (synopsis "Simple YAML-based config module") |
| 13407 | (description "This package provides a simple YAML-based config module.") |
| 13408 | (license license:expat))) |
| 13409 | |
| 13410 | (define-public python-patch-ng |
| 13411 | (package |
| 13412 | (name "python-patch-ng") |
| 13413 | (version "1.18.1") |
| 13414 | (source |
| 13415 | (origin |
| 13416 | (method git-fetch) |
| 13417 | (uri (git-reference |
| 13418 | (url "https://github.com/conan-io/python-patch-ng") |
| 13419 | (commit version))) |
| 13420 | (file-name (git-file-name name version)) |
| 13421 | (sha256 |
| 13422 | (base32 "1kr3h0bkcr02zyfsmwmxfv5b4b9vf3bhsvrlwp6cwrfy3q3qnyq8")))) |
| 13423 | (build-system pyproject-build-system) |
| 13424 | (arguments |
| 13425 | (list |
| 13426 | #:test-backend #~'custom |
| 13427 | #:test-flags #~(list "tests/run_tests.py" "-v"))) |
| 13428 | (native-inputs (list python-pytest python-setuptools)) |
| 13429 | (home-page "https://github.com/conan-io/python-patch-ng") |
| 13430 | (synopsis "Python library to parse and apply unified diffs") |
| 13431 | (description |
| 13432 | "Patch NG (New Generation) is a command and Python library to parse and |
| 13433 | apply unified diffs. It has features such as: |
| 13434 | @itemize |
| 13435 | @item automatic correction of common patch formatting corruption |
| 13436 | @item patch format detection (SVN, Hg, Git) |
| 13437 | @item nice diffstat histogram. |
| 13438 | @end itemize") |
| 13439 | (license license:expat))) |
| 13440 | |
| 13441 | (define-public python-numpydoc |
| 13442 | (package |
| 13443 | (name "python-numpydoc") |
| 13444 | (version "1.10.0") |
| 13445 | (source |
| 13446 | (origin |
| 13447 | (method url-fetch) |
| 13448 | (uri (pypi-uri "numpydoc" version)) |
| 13449 | (sha256 |
| 13450 | (base32 |
| 13451 | "00gsbzpx7s3yq6g5c8k7rlq2hhx2pdraqcbb18k142g3xvv70y9z")))) |
| 13452 | (build-system pyproject-build-system) |
| 13453 | (arguments |
| 13454 | (list |
| 13455 | #:test-flags |
| 13456 | '(list "numpydoc/tests" |
| 13457 | "-k" (string-append |
| 13458 | ;; TODO: unclear why these fail. |
| 13459 | "not test_MyClass and not test_my_function " |
| 13460 | ;; This test compares installed vs source absolute file |
| 13461 | ;; names. |
| 13462 | "and not test_source_file_name_with_properties")))) |
| 13463 | (propagated-inputs (list python-sphinx python-tomli)) |
| 13464 | (native-inputs |
| 13465 | (list python-matplotlib python-pytest python-setuptools)) |
| 13466 | (home-page "https://pypi.org/project/numpydoc/") |
| 13467 | (synopsis "Numpy's Sphinx extensions") |
| 13468 | (description "Sphinx extension to support docstrings in Numpy format.") |
| 13469 | (license license:bsd-2))) |
| 13470 | |
| 13471 | (define-public python-numexpr |
| 13472 | (package |
| 13473 | (name "python-numexpr") |
| 13474 | (version "2.14.1") |
| 13475 | (source |
| 13476 | (origin |
| 13477 | (method git-fetch) |
| 13478 | (uri (git-reference |
| 13479 | (url "https://github.com/pydata/numexpr") |
| 13480 | (commit (string-append "v" version)))) |
| 13481 | (file-name (git-file-name name version)) |
| 13482 | (sha256 |
| 13483 | (base32 "1zbpi7whjh6sccn1fndii735gv14kjaaqm3c3w1g2ry0z9948v9v")))) |
| 13484 | (build-system pyproject-build-system) |
| 13485 | (arguments |
| 13486 | (list |
| 13487 | ;; tests: 6039 passed, 1 warning |
| 13488 | #:test-flags #~(list "--pyargs" "numexpr") |
| 13489 | #:phases |
| 13490 | #~(modify-phases %standard-phases |
| 13491 | (add-before 'check 'remove-local-source |
| 13492 | (lambda _ |
| 13493 | (delete-file-recursively "numexpr")))))) |
| 13494 | (native-inputs |
| 13495 | (list python-pytest |
| 13496 | python-setuptools)) |
| 13497 | (propagated-inputs |
| 13498 | (list python-numpy)) |
| 13499 | (home-page "https://github.com/pydata/numexpr") |
| 13500 | (synopsis "Fast numerical expression evaluator for NumPy") |
| 13501 | (description |
| 13502 | "Numexpr is a fast numerical expression evaluator for NumPy. With it, |
| 13503 | expressions that operate on arrays are accelerated and use less memory than |
| 13504 | doing the same calculation in Python. In addition, its multi-threaded |
| 13505 | capabilities can make use of all your cores, which may accelerate |
| 13506 | computations, most specially if they are not memory-bounded (e.g. those using |
| 13507 | transcendental functions).") |
| 13508 | (license license:expat))) |
| 13509 | |
| 13510 | (define-public python-cycler |
| 13511 | (package |
| 13512 | (name "python-cycler") |
| 13513 | (version "0.12.1") |
| 13514 | (source |
| 13515 | (origin |
| 13516 | (method git-fetch) ;no tests in PyPI archive |
| 13517 | (uri (git-reference |
| 13518 | (url "https://github.com/matplotlib/cycler") |
| 13519 | (commit (string-append "v" version)))) |
| 13520 | (file-name (git-file-name name version)) |
| 13521 | (sha256 |
| 13522 | (base32 "061b8vxd2kp016pnwik9jg6zqng8khzmg0p298wrz65z50yh1gg4")))) |
| 13523 | (build-system pyproject-build-system) |
| 13524 | (native-inputs |
| 13525 | (list python-pytest |
| 13526 | python-setuptools)) |
| 13527 | (home-page "https://matplotlib.org/cycler/") |
| 13528 | (synopsis "Composable keyword argument iterator") |
| 13529 | (description |
| 13530 | "When using @code{matplotlib} and plotting more than one line, it is |
| 13531 | common to want to be able to want to be able to cycle over one or more artist |
| 13532 | styles; but the plotting logic can quickly become involved. |
| 13533 | To address this and enable easy cycling over arbitrary @code{kwargs}, the |
| 13534 | @code{Cycler} class was developed.") |
| 13535 | (license license:bsd-3))) |
| 13536 | |
| 13537 | (define-public python-colorspacious |
| 13538 | (package |
| 13539 | (name "python-colorspacious") |
| 13540 | (version "1.1.2") |
| 13541 | (source |
| 13542 | (origin |
| 13543 | (method git-fetch) |
| 13544 | (uri (git-reference |
| 13545 | (url "https://github.com/njsmith/colorspacious") |
| 13546 | (commit (string-append "v" version)))) |
| 13547 | (file-name (git-file-name name version)) |
| 13548 | (sha256 |
| 13549 | (base32 "0x7nkphr6g5ql5fvgss8l56rgiyjgh6fm8zzs73i94ci9wzlm63w")))) |
| 13550 | (build-system pyproject-build-system) |
| 13551 | (arguments (list #:tests? #f)) ; No tests. |
| 13552 | (propagated-inputs (list python-numpy)) |
| 13553 | (native-inputs (list python-pytest python-setuptools)) |
| 13554 | (home-page "https://github.com/njsmith/colorspacious") |
| 13555 | (synopsis "Python library for colorspace conversions") |
| 13556 | (description |
| 13557 | "@code{colorspacious} is a Python library that lets you convert between |
| 13558 | colorspaces like sRGB, XYZ, CIEL*a*b*, CIECAM02, CAM02-UCS, etc.") |
| 13559 | (license license:expat))) |
| 13560 | |
| 13561 | (define-public python-propcache |
| 13562 | (package |
| 13563 | (name "python-propcache") |
| 13564 | (version "0.2.1") |
| 13565 | (source |
| 13566 | (origin |
| 13567 | (method url-fetch) |
| 13568 | (uri (pypi-uri "propcache" version)) |
| 13569 | (sha256 |
| 13570 | (base32 "0r4sq2j6s63wziw8fhnrx0lxlg8ch3z2i6a92ivm7jqridrcwxrz")))) |
| 13571 | (build-system pyproject-build-system) |
| 13572 | (arguments |
| 13573 | (list |
| 13574 | #:test-flags |
| 13575 | #~(list "-o" "addopts=''" ; Avoid -p pytest_cov. |
| 13576 | "--ignore=tests/test_benchmarks.py") |
| 13577 | #:phases |
| 13578 | '(modify-phases %standard-phases |
| 13579 | (add-after 'unpack 'patch-build-system |
| 13580 | (lambda _ |
| 13581 | ;; XXX: I don't know how to tell it to build the extensions in |
| 13582 | ;; place. |
| 13583 | (substitute* "packaging/pep517_backend/_backend.py" |
| 13584 | (("build_inplace=False") "build_inplace=True"))))))) |
| 13585 | (native-inputs |
| 13586 | (list python-cython |
| 13587 | python-expandvars |
| 13588 | python-pytest |
| 13589 | python-pytest-xdist |
| 13590 | python-setuptools |
| 13591 | python-tomli)) |
| 13592 | (home-page "https://github.com/aio-libs/propcache") |
| 13593 | (synopsis "Accelerated property cache") |
| 13594 | (description "The module provides a fast implementation of cached |
| 13595 | properties for Python 3.9+.") |
| 13596 | (license license:asl2.0))) |
| 13597 | |
| 13598 | (define-public python-proto-matcher |
| 13599 | (package |
| 13600 | (name "python-proto-matcher") |
| 13601 | (version "0.0.3") |
| 13602 | (source |
| 13603 | (origin |
| 13604 | (method git-fetch) |
| 13605 | (uri (git-reference |
| 13606 | (url "https://github.com/dayfine/proto-matcher") |
| 13607 | (commit version))) |
| 13608 | (file-name (git-file-name name version)) |
| 13609 | (sha256 |
| 13610 | (base32 "1l0dqnicpk4gpfspdlng026sxnkgzy68x416aw7camwq0513mq5l")))) |
| 13611 | (build-system pyproject-build-system) |
| 13612 | (native-inputs (list python-pytest python-setuptools)) |
| 13613 | (arguments (list #:tests? #f)) ; The test suite seems broken (missing data). |
| 13614 | (propagated-inputs (list python-protobuf python-pyhamcrest)) |
| 13615 | (home-page "https://github.com/dayfine/proto-matcher") |
| 13616 | (synopsis "PyHamcrest test matchers for protocol buffers") |
| 13617 | (description |
| 13618 | "This package provides the following PyHamcrest test matchers, that |
| 13619 | enable matching a protocol buffer message: |
| 13620 | @table @code |
| 13621 | @item equals_proto |
| 13622 | Test the argument equals the given protobuf message. |
| 13623 | @item approximately |
| 13624 | Test the argument equals the given protobuf message, while comparing any float |
| 13625 | field using approximation. |
| 13626 | @item ignoring_field_paths |
| 13627 | Test the argument equals the given protobuf message, while ignoring those |
| 13628 | fields specified in the field paths. |
| 13629 | @item ignoring_repeated_field_ordering |
| 13630 | Test the argument equals the given protobuf message, ignoring the ordering of |
| 13631 | any repeated field. |
| 13632 | @item partially |
| 13633 | Test the argument partially equals the given protobuf message, i.e. if a field |
| 13634 | is in the argument but not in the expected message, it's ignored in the |
| 13635 | comparison. |
| 13636 | @end table") |
| 13637 | (license license:asl2.0))) |
| 13638 | |
| 13639 | (define-public python-matplotlib |
| 13640 | (package |
| 13641 | (name "python-matplotlib") |
| 13642 | (version "3.10.9") |
| 13643 | (source |
| 13644 | (origin |
| 13645 | (method git-fetch) |
| 13646 | (uri (git-reference |
| 13647 | (url "https://github.com/matplotlib/matplotlib") |
| 13648 | (commit (string-append "v" version)))) |
| 13649 | (file-name (git-file-name name version)) |
| 13650 | (sha256 |
| 13651 | (base32 "1mff6s0nldfgdczjrfkkg68j2sx9l7jpslbcyq0d4slhnkx1lp2g")))) |
| 13652 | (build-system pyproject-build-system) |
| 13653 | (arguments |
| 13654 | (list |
| 13655 | ;; tests: 6584 passed, 1519 skipped, 29 xfailed |
| 13656 | #:configure-flags |
| 13657 | ''(("setup-args" . #("-DrcParams-backend=TkAgg" |
| 13658 | "-Dsystem-freetype=true" |
| 13659 | "-Dsystem-qhull=true")) |
| 13660 | ("install-args" . "--tags=data,python-runtime,runtime,tests")) |
| 13661 | #:test-flags |
| 13662 | #~(list "-m" "not network" |
| 13663 | "-n" (number->string (parallel-job-count)) |
| 13664 | ;; Run the installed tests, which is what we want since not |
| 13665 | ;; everything gets built in the source directory. |
| 13666 | "--pyargs" "matplotlib" |
| 13667 | "-k" |
| 13668 | (string-join |
| 13669 | (list |
| 13670 | ;; XXX: Disable all image comparison tests because we're using |
| 13671 | ;; a newer version of FreeType than matplotlib expects. This |
| 13672 | ;; leads to minor differences throughout the tests. |
| 13673 | "not image_comparison" |
| 13674 | "check_figures_equal" |
| 13675 | "png" ;disables many problematic image tests |
| 13676 | "test_figure_legend_outside" |
| 13677 | "test_ft2font_get_kerning" |
| 13678 | "test_normal_axes" |
| 13679 | "test_get_tightbbox_polar" |
| 13680 | ;; The invisible line ordering test fails due to a too short |
| 13681 | ;; timeout (see: |
| 13682 | ;; <https://github.com/matplotlib/matplotlib/issues/30809>). |
| 13683 | "test_invisible_Line_rendering" |
| 13684 | ;; The determinism check test is not deterministic (see: |
| 13685 | ;; <https://github.com/matplotlib/matplotlib/issues/30360>) |
| 13686 | "test_determinism_check") |
| 13687 | " and not ")) |
| 13688 | #:phases |
| 13689 | #~(modify-phases %standard-phases |
| 13690 | (add-after 'unpack 'patch-commands |
| 13691 | (lambda _ |
| 13692 | (substitute* "lib/matplotlib/tests/test_animation.py" |
| 13693 | (("/bin/sh") (which "sh"))))) |
| 13694 | (add-after 'unpack 'patch-dlopen |
| 13695 | (lambda* (#:key inputs #:allow-other-keys) |
| 13696 | (substitute* "src/_c_internal_utils.cpp" |
| 13697 | (("libX11.so.6") |
| 13698 | (search-input-file inputs "lib/libX11.so.6"))))) |
| 13699 | (add-before 'build 'configure-environment |
| 13700 | (lambda* (#:key inputs #:allow-other-keys) |
| 13701 | ;; Fix rounding errors when using the x87 FPU. |
| 13702 | (when (string-prefix? "i686" #$(%current-system)) |
| 13703 | (setenv "CFLAGS" "-ffloat-store")))) |
| 13704 | (add-before 'check 'chdir |
| 13705 | (lambda _ |
| 13706 | ;; Step out of the source directory to avoid interference. |
| 13707 | (chdir "/tmp")))))) |
| 13708 | (propagated-inputs |
| 13709 | (list python-contourpy |
| 13710 | python-cycler |
| 13711 | python-dateutil |
| 13712 | python-fonttools-minimal |
| 13713 | python-importlib-resources |
| 13714 | python-kiwisolver |
| 13715 | python-numpy |
| 13716 | python-packaging |
| 13717 | python-pillow |
| 13718 | python-pyparsing |
| 13719 | `(,python "tk"))) |
| 13720 | (inputs |
| 13721 | (list cairo |
| 13722 | freetype |
| 13723 | glib |
| 13724 | libpng |
| 13725 | qhull |
| 13726 | tcl |
| 13727 | tk)) |
| 13728 | (native-inputs |
| 13729 | (list pkg-config |
| 13730 | python-meson |
| 13731 | pybind11 |
| 13732 | python-pytest |
| 13733 | python-pytest-timeout |
| 13734 | python-pytest-xdist |
| 13735 | python-setuptools |
| 13736 | python-setuptools-scm)) |
| 13737 | (home-page "https://matplotlib.org/") |
| 13738 | (synopsis "2D plotting library for Python") |
| 13739 | (description |
| 13740 | "Matplotlib is a Python 2D plotting library which produces publication |
| 13741 | quality figures in a variety of hardcopy formats and interactive environments |
| 13742 | across platforms. Matplotlib can be used in Python scripts, the python and |
| 13743 | ipython shell, web application servers, and six graphical user interface |
| 13744 | toolkits.") |
| 13745 | (license license:psfl))) |
| 13746 | |
| 13747 | (define-public python-matplotlib-documentation |
| 13748 | (package |
| 13749 | (inherit python-matplotlib) |
| 13750 | (name "python-matplotlib-documentation") |
| 13751 | (arguments |
| 13752 | (list |
| 13753 | #:tests? #f ;we're only generating documentation |
| 13754 | #:phases |
| 13755 | #~(modify-phases %standard-phases |
| 13756 | (add-after 'unpack 'avoid-external-deps |
| 13757 | (lambda _ |
| 13758 | ;; XXX: Avoid theme-switcher to avoid sphinx error |
| 13759 | ;; TemplateNotFound('theme-switcher.html') |
| 13760 | ;; XXX: Avoid version-switcher because it depends on an |
| 13761 | ;; external file, and we pack only one version anyway. |
| 13762 | (substitute* "doc/conf.py" |
| 13763 | (("\ |
| 13764 | \"navbar_end\": \\[\"theme-switcher\", \"version-switcher\", ") |
| 13765 | "\"navbar_end\": [")))) |
| 13766 | (replace 'build |
| 13767 | (lambda _ |
| 13768 | (setenv "HOME" "/tmp") |
| 13769 | (chdir "doc") |
| 13770 | (invoke "make" "html" "info" |
| 13771 | ;; Don't abort on warnings; build in parallel. |
| 13772 | (format #f "SPHINXOPTS=-j~a" (parallel-job-count))))) |
| 13773 | (replace 'install |
| 13774 | (lambda _ |
| 13775 | (let* ((data (string-append #$output "/share")) |
| 13776 | (doc (string-append data "/doc/matplotlib")) |
| 13777 | (info (string-append data "/info")) |
| 13778 | (html (string-append doc "/html"))) |
| 13779 | (mkdir-p html) |
| 13780 | (copy-recursively "build/html" html) |
| 13781 | (install-file "build/texinfo/matplotlib.info" info) |
| 13782 | ;; The "matplotlib-figures" directory contains are a subset of |
| 13783 | ;; the images produced for the html target; simply create a |
| 13784 | ;; symlink to it, saving about 11 MiB. |
| 13785 | (symlink (string-append html "/_images") |
| 13786 | (string-append info "/matplotlib-figures")))))))) |
| 13787 | ;; Move all propagated inputs to inputs. *-documentation packages are |
| 13788 | ;; expected to be installed as standalone leaf packages, and not as |
| 13789 | ;; libraries with propagated inputs. |
| 13790 | (propagated-inputs '()) |
| 13791 | (inputs (append |
| 13792 | (package-inputs python-matplotlib) |
| 13793 | (package-propagated-inputs python-matplotlib))) |
| 13794 | (native-inputs |
| 13795 | (list ffmpeg ;for matplotlib animation support |
| 13796 | graphviz |
| 13797 | inkscape/pinned |
| 13798 | python-colorspacious |
| 13799 | python-ipython |
| 13800 | python-ipykernel |
| 13801 | python-ipywidgets |
| 13802 | python-matplotlib |
| 13803 | python-mpl-sphinx-theme |
| 13804 | python-numpydoc |
| 13805 | python-pyyaml |
| 13806 | python-scipy |
| 13807 | python-setuptools |
| 13808 | ;; XXX: investigate how to build using a newer version of sphinx. |
| 13809 | python-sphinx-6 |
| 13810 | python-sphinx-copybutton |
| 13811 | python-sphinx-design |
| 13812 | python-sphinx-gallery |
| 13813 | python-sphinx-tags |
| 13814 | python-sphinxcontrib-svg2pdfconverter |
| 13815 | python-sphinxcontrib-video |
| 13816 | texinfo |
| 13817 | texlive-dvipng-bin |
| 13818 | (texlive-local-tree |
| 13819 | (list texlive-amsfonts |
| 13820 | texlive-amsmath |
| 13821 | texlive-babel |
| 13822 | texlive-cm-super |
| 13823 | texlive-etoolbox |
| 13824 | texlive-expdlist |
| 13825 | texlive-fontspec |
| 13826 | texlive-times |
| 13827 | texlive-type1cm |
| 13828 | texlive-underscore |
| 13829 | texlive-unicode-math)))) |
| 13830 | (synopsis "Documentation for the @code{python-matplotlib} package"))) |
| 13831 | |
| 13832 | (define-public python-matplotlib-inline |
| 13833 | (package |
| 13834 | (name "python-matplotlib-inline") |
| 13835 | (version "0.1.7") |
| 13836 | (source |
| 13837 | (origin |
| 13838 | (method url-fetch) |
| 13839 | (uri (pypi-uri "matplotlib_inline" version)) |
| 13840 | (sha256 |
| 13841 | (base32 "145bl0ppy4cz1fii3pfixd0fi1jfmkcbsq3bw4b3vgk6qqzb48w4")))) |
| 13842 | (build-system pyproject-build-system) |
| 13843 | (arguments |
| 13844 | (list |
| 13845 | ;; Tests disabled because of a circular dependency with IPython. |
| 13846 | #:tests? #f |
| 13847 | #:phases |
| 13848 | #~(modify-phases %standard-phases |
| 13849 | ;; Disabled because of a circular dependency with IPython. |
| 13850 | (delete 'sanity-check)))) |
| 13851 | (native-inputs |
| 13852 | (list python-setuptools)) |
| 13853 | (propagated-inputs |
| 13854 | (list python-matplotlib |
| 13855 | python-traitlets)) |
| 13856 | (home-page "https://github.com/ipython/matplotlib-inline") |
| 13857 | (synopsis "Inline Matplotlib backend for Jupyter") |
| 13858 | (description |
| 13859 | "This package provides a Matplotlib inline back-end for IPython and |
| 13860 | Jupyter.") |
| 13861 | (license license:bsd-3))) |
| 13862 | |
| 13863 | (define-public python-matplotlib-venn |
| 13864 | (package |
| 13865 | (name "python-matplotlib-venn") |
| 13866 | (version "1.1.2") |
| 13867 | (source |
| 13868 | (origin |
| 13869 | (method url-fetch) |
| 13870 | (uri (pypi-uri "matplotlib-venn" version)) |
| 13871 | (sha256 |
| 13872 | (base32 "1qrnxhi2rbz737fm9mprfr8ig7kk2r99cbzkw8nsddcv7sh0favg")))) |
| 13873 | (build-system pyproject-build-system) |
| 13874 | (native-inputs (list python-pytest |
| 13875 | python-setuptools |
| 13876 | python-shapely |
| 13877 | python-wheel)) |
| 13878 | (propagated-inputs |
| 13879 | (list python-matplotlib python-numpy python-scipy)) |
| 13880 | (home-page "https://github.com/konstantint/matplotlib-venn") |
| 13881 | (synopsis "Plot area-proportional Venn diagrams") |
| 13882 | (description |
| 13883 | "This package provides tools for plotting area-proportional two- and |
| 13884 | three-way Venn diagrams in @code{matplotlib}.") |
| 13885 | (license license:expat))) |
| 13886 | |
| 13887 | (define-public python-matplotx |
| 13888 | (package |
| 13889 | (name "python-matplotx") |
| 13890 | (version "0.3.10") |
| 13891 | (source |
| 13892 | (origin |
| 13893 | (method git-fetch) |
| 13894 | (uri (git-reference |
| 13895 | (url "https://github.com/nschloe/matplotx") |
| 13896 | (commit (string-append "v" version)))) |
| 13897 | (file-name (git-file-name name version)) |
| 13898 | (sha256 |
| 13899 | (base32 "1j301mr7ai2jmbm5mkva0jd99fzxhyq585pqzqfmrf5pil8j4q8i")))) |
| 13900 | (build-system pyproject-build-system) |
| 13901 | (arguments |
| 13902 | (list |
| 13903 | #:test-flags |
| 13904 | ;; This test fails with ValueError: not enough values to unpack. |
| 13905 | #~(list "--deselect" "tests/test_spy.py::test_cli" |
| 13906 | ;; XXX: unknown failure |
| 13907 | "--deselect" "tests/test_spy.py::test_png"))) |
| 13908 | (native-inputs |
| 13909 | (list python-imageio |
| 13910 | python-meshzoo |
| 13911 | python-pytest |
| 13912 | python-scipy-minimal |
| 13913 | python-setuptools |
| 13914 | python-scikit-fem)) |
| 13915 | (propagated-inputs |
| 13916 | (list python-matplotlib |
| 13917 | python-numpy |
| 13918 | ;; [optional] |
| 13919 | python-networkx |
| 13920 | python-pypng |
| 13921 | python-scipy)) |
| 13922 | (home-page "https://github.com/nschloe/matplotx") |
| 13923 | (synopsis "Minimal matplotlib styles") |
| 13924 | (description |
| 13925 | "This package includes some extensions for Matplotlib to create clean |
| 13926 | plots with a minimalistic style.") |
| 13927 | (license license:expat))) |
| 13928 | |
| 13929 | (define-public python-cplot |
| 13930 | (package |
| 13931 | (name "python-cplot") |
| 13932 | (version "0.9.3") |
| 13933 | (source |
| 13934 | (origin |
| 13935 | (method git-fetch) |
| 13936 | (uri (git-reference |
| 13937 | (url "https://github.com/nschloe/cplot") |
| 13938 | (commit (string-append "v" version)))) |
| 13939 | (file-name (git-file-name name version)) |
| 13940 | (sha256 |
| 13941 | (base32 "0zk7hpq358sbympmkms7w2wjs7nw8mdfvkvdasblg2nhqayv42qz")))) |
| 13942 | (build-system pyproject-build-system) |
| 13943 | (native-inputs |
| 13944 | (list python-pytest |
| 13945 | python-setuptools)) |
| 13946 | (propagated-inputs |
| 13947 | (list python-matplotlib |
| 13948 | python-matplotx |
| 13949 | python-npx |
| 13950 | python-numpy)) |
| 13951 | (home-page "https://github.com/nschloe/cplot") |
| 13952 | (synopsis "Plot complex-valued functions") |
| 13953 | (description "@code{cplot} is a Python library for plotting |
| 13954 | complex-valued functions.") |
| 13955 | (license license:gpl3+))) |
| 13956 | |
| 13957 | (define-public python-cppheaderparser |
| 13958 | (package |
| 13959 | (name "python-cppheaderparser") |
| 13960 | (version "2.7.4") |
| 13961 | (source |
| 13962 | (origin |
| 13963 | (method url-fetch) |
| 13964 | (uri (pypi-uri "CppHeaderParser" version)) |
| 13965 | (sha256 |
| 13966 | (base32 "0hncwd9y5ayk8wa6bqhp551mcamcvh84h89ba3labc4mdm0k0arq")))) |
| 13967 | (build-system pyproject-build-system) |
| 13968 | (arguments |
| 13969 | (list |
| 13970 | #:tests? #f)) ; no tests |
| 13971 | (propagated-inputs (list python-ply)) |
| 13972 | (native-inputs (list python-setuptools python-wheel)) |
| 13973 | (home-page "http://senexcanis.com/open-source/cppheaderparser/") |
| 13974 | (synopsis |
| 13975 | "Parse C++ header files and generate a data structure representing the class") |
| 13976 | (description |
| 13977 | "CppHeaderParser is a pure python module that will parse C++ header files |
| 13978 | and generate a data structure representing the class.") |
| 13979 | (license license:bsd-3))) |
| 13980 | |
| 13981 | (define-public python-cppy |
| 13982 | (package |
| 13983 | (name "python-cppy") |
| 13984 | (version "1.3.1") |
| 13985 | (source |
| 13986 | (origin |
| 13987 | (method git-fetch) |
| 13988 | (uri (git-reference |
| 13989 | (url "https://github.com/nucleic/cppy") |
| 13990 | (commit version))) |
| 13991 | (file-name (git-file-name name version)) |
| 13992 | (sha256 |
| 13993 | (base32 "16g0f9kjyybmlxy9w5bbxm98g7wqhcvh4pw77r0jk3dgd11lkvzy")))) |
| 13994 | (build-system pyproject-build-system) |
| 13995 | (arguments |
| 13996 | (list #:tests? #f)) ;there is just one test coping include directory |
| 13997 | (native-inputs |
| 13998 | (list python-setuptools |
| 13999 | python-setuptools-scm)) |
| 14000 | (home-page "https://github.com/nucleic/cppy") |
| 14001 | (synopsis "C++ header library for Python extension modules") |
| 14002 | (description "This package is a small C++ header library which makes it |
| 14003 | easier to write Python extension modules. The primary feature is a |
| 14004 | @code{PyObject} smart pointer which automatically handles reference counting |
| 14005 | and provides convenience methods for performing common object operations.") |
| 14006 | (license license:bsd-3))) |
| 14007 | |
| 14008 | (define-public python-perfplot |
| 14009 | (package |
| 14010 | (name "python-perfplot") |
| 14011 | (version "0.10.2") |
| 14012 | (source |
| 14013 | (origin |
| 14014 | (method git-fetch) |
| 14015 | (uri (git-reference |
| 14016 | (url "https://github.com/nschloe/perfplot") |
| 14017 | (commit (string-append "v" version)))) |
| 14018 | (file-name (git-file-name name version)) |
| 14019 | (sha256 |
| 14020 | (base32 "1j73m8v9l8bhf79qa9apj6lcw1afxbvdq4mrn0yb31541dhrxvkf")))) |
| 14021 | (build-system pyproject-build-system) |
| 14022 | (native-inputs |
| 14023 | (list python-flit-core |
| 14024 | python-pytest)) |
| 14025 | (propagated-inputs |
| 14026 | (list python-matplotlib |
| 14027 | python-matplotx |
| 14028 | python-numpy |
| 14029 | python-rich)) |
| 14030 | (home-page "https://github.com/nschloe/perfplot") |
| 14031 | (synopsis "Performance plots for Python code snippets") |
| 14032 | (description "@code{perfplot} extends Python's timeit by testing |
| 14033 | snippets with input parameters (e.g., the size of an array) and plotting |
| 14034 | the results.") |
| 14035 | (license license:gpl3+))) |
| 14036 | |
| 14037 | (define-public python-persist-queue |
| 14038 | (package |
| 14039 | (name "python-persist-queue") |
| 14040 | (version "1.1.0") |
| 14041 | (source |
| 14042 | (origin |
| 14043 | (method git-fetch) |
| 14044 | (uri (git-reference |
| 14045 | (url "https://github.com/peter-wangxu/persist-queue") |
| 14046 | (commit (string-append "v" version)))) |
| 14047 | (file-name (git-file-name name version)) |
| 14048 | (sha256 |
| 14049 | (base32 "02agwksg0idyhbd4q2sn36igi0zv4kfbkn8vixnbv4q0ki75gfzh")))) |
| 14050 | (build-system pyproject-build-system) |
| 14051 | (native-inputs |
| 14052 | (list python-pytest |
| 14053 | python-pytest-asyncio |
| 14054 | python-setuptools)) |
| 14055 | (propagated-inputs |
| 14056 | (list python-aiofiles |
| 14057 | python-aiosqlite |
| 14058 | python-cbor2 |
| 14059 | python-dbutils |
| 14060 | python-msgpack)) |
| 14061 | (home-page "https://github.com/peter-wangxu/persist-queue") |
| 14062 | (synopsis "Thread-safe disk based persistent queue in Python") |
| 14063 | (description |
| 14064 | "This package provides a thread-safe disk (file and sqlite) based |
| 14065 | persistent queue in Python.") |
| 14066 | (license license:bsd-3))) |
| 14067 | |
| 14068 | (define-public python-pycodestyle |
| 14069 | (package |
| 14070 | (name "python-pycodestyle") |
| 14071 | (version "2.14.0") |
| 14072 | (source |
| 14073 | (origin |
| 14074 | (method url-fetch) ;git has no the same version tag as PyPI |
| 14075 | (uri (pypi-uri "pycodestyle" version)) |
| 14076 | (sha256 |
| 14077 | (base32 "10xpcy8m54cvnk4a37j4cwrjl9lprlcwkpmbs3wry23qs8bvbdf4")))) |
| 14078 | (build-system pyproject-build-system) |
| 14079 | (arguments |
| 14080 | (list |
| 14081 | #:test-backend #~'custom |
| 14082 | #:test-flags |
| 14083 | ;; Taken from Tox config |
| 14084 | ;; <https://github.com/PyCQA/pycodestyle/blob/2.11.0/tox.ini#L16>. |
| 14085 | #~(list "-m" "pycodestyle" "--statistics" "pycodestyle.py"))) |
| 14086 | (native-inputs |
| 14087 | (list python-setuptools)) |
| 14088 | (home-page "https://pycodestyle.readthedocs.io/") |
| 14089 | (synopsis "Python style guide checker") |
| 14090 | (description "@code{pycodestyle} (formerly pep8) is a tool to check |
| 14091 | Python code against some of the style conventions in |
| 14092 | @url{http://www.python.org/dev/peps/pep-0008/,PEP 8}.") |
| 14093 | (license license:expat))) |
| 14094 | |
| 14095 | (define-public python-pycollada |
| 14096 | (package |
| 14097 | (name "python-pycollada") |
| 14098 | (version "0.9.2") |
| 14099 | (source |
| 14100 | (origin |
| 14101 | (method git-fetch) |
| 14102 | (uri (git-reference |
| 14103 | (url "https://github.com/pycollada/pycollada") |
| 14104 | (commit (string-append "v" version)))) |
| 14105 | (file-name (git-file-name name version)) |
| 14106 | (sha256 |
| 14107 | (base32 "13pj179p9gdiza409n8mdl7cpfasc3mrmk40p1vqplfdshks75dy")))) |
| 14108 | (build-system pyproject-build-system) |
| 14109 | (native-inputs |
| 14110 | (list python-pytest |
| 14111 | python-setuptools)) |
| 14112 | (propagated-inputs |
| 14113 | (list python-numpy |
| 14114 | python-dateutil)) |
| 14115 | (home-page "https://pycollada.readthedocs.io") |
| 14116 | (synopsis "Reading and writing collada documents library") |
| 14117 | (description |
| 14118 | "This package implements a functionality for creating, editing and |
| 14119 | loading @url{https://www.khronos.org/collada/,COLLADA},which is a |
| 14120 | COLLAborative Design Activity for establishing an interchange file format for |
| 14121 | interactive 3D applications. |
| 14122 | |
| 14123 | The library allows you to load a COLLADA file and interact with it as a python |
| 14124 | object. In addition, it supports creating a collada python object from |
| 14125 | scratch, as well as in-place editing.") |
| 14126 | (license license:bsd-3))) |
| 14127 | |
| 14128 | (define-public python-pyct |
| 14129 | (package |
| 14130 | (name "python-pyct") |
| 14131 | (version "0.5.0") |
| 14132 | (source |
| 14133 | (origin |
| 14134 | (method url-fetch) |
| 14135 | (uri (pypi-uri "pyct" version)) |
| 14136 | (sha256 |
| 14137 | (base32 "1856dbrcpc0nxxhlfh3dqzz7xxn5sdi600q45hsprqyqrg2lm7yx")))) |
| 14138 | (build-system pyproject-build-system) |
| 14139 | (arguments |
| 14140 | (list |
| 14141 | #:test-flags |
| 14142 | ;; These tests want to download example data from the internet. |
| 14143 | '(list "-k" (string-append |
| 14144 | "not test_examples_with_use_test_data" |
| 14145 | " and not test_examples_using_test_data_and_force_with_prexisting_content_in_target" |
| 14146 | " and not test_fetch_data_using_test_data_with_no_file_in_data_copies_from_stubs" |
| 14147 | " and not test_fetch_data_using_test_data_and_force_with_file_in_data_over_writes")))) |
| 14148 | (propagated-inputs (list python-param python-pyyaml)) |
| 14149 | (native-inputs (list python-flake8 python-pytest python-setuptools python-wheel)) |
| 14150 | (home-page "https://github.com/holoviz-dev/pyct") |
| 14151 | (synopsis "Common packaging tasks") |
| 14152 | (description |
| 14153 | "This Python package provides utilities to run common packaging tasks, |
| 14154 | e.g. copy examples, fetch data, etc.") |
| 14155 | (license license:bsd-3))) |
| 14156 | |
| 14157 | (define-public python-multidict |
| 14158 | (package |
| 14159 | (name "python-multidict") |
| 14160 | (version "6.7.0") |
| 14161 | (source |
| 14162 | (origin |
| 14163 | (method git-fetch) |
| 14164 | (uri (git-reference |
| 14165 | (url "https://github.com/aio-libs/multidict/") |
| 14166 | (commit (string-append "v" version)))) |
| 14167 | (file-name (git-file-name name version)) |
| 14168 | (sha256 |
| 14169 | (base32 "1rcd2vi4837ahb6nyi0vxhvvzaa7bpc7zpg0xynbdv8qgif98j1l")))) |
| 14170 | (build-system pyproject-build-system) |
| 14171 | (arguments |
| 14172 | (list |
| 14173 | ;; tests: 1395 passed |
| 14174 | #:test-flags |
| 14175 | #~(list "-o" "addopts=''" ; Avoid -p pytest_cov. |
| 14176 | "--ignore-glob=tests/test_*_benchmarks.py"))) |
| 14177 | (native-inputs |
| 14178 | (list python-objgraph |
| 14179 | python-psutil |
| 14180 | python-pytest |
| 14181 | python-setuptools)) |
| 14182 | (home-page "https://github.com/aio-libs/multidict/") |
| 14183 | (synopsis "Multidict implementation") |
| 14184 | (description |
| 14185 | "Multidict is dict-like collection of key-value pairs where key might be |
| 14186 | occurred more than once in the container.") |
| 14187 | (license license:asl2.0))) |
| 14188 | |
| 14189 | (define-public python-orderedmultidict |
| 14190 | (package |
| 14191 | (name "python-orderedmultidict") |
| 14192 | (version "1.0.1") |
| 14193 | (source |
| 14194 | (origin |
| 14195 | (method url-fetch) |
| 14196 | (uri (pypi-uri "orderedmultidict" version)) |
| 14197 | (sha256 |
| 14198 | (base32 "1bc2v0yflsxjyyjx4q9wqx0j3bvzcw9z87d5pz4iqac7bsxhn1q4")))) |
| 14199 | (build-system pyproject-build-system) |
| 14200 | (propagated-inputs |
| 14201 | (list python-six)) |
| 14202 | (native-inputs |
| 14203 | (list python-pytest |
| 14204 | python-setuptools)) |
| 14205 | (home-page "https://github.com/gruns/orderedmultidict") |
| 14206 | (synopsis "Python Ordered Multivalue Dictionary - omdict") |
| 14207 | (description "This package contains a library for ordered multivalue |
| 14208 | dictionaries. A multivalue dictionary is a dictionary that can store |
| 14209 | multiple values for the same key. An ordered multivalue dictionary is a |
| 14210 | multivalue dictionary that retains the order of insertions and deletions.") |
| 14211 | (license license:unlicense))) |
| 14212 | |
| 14213 | (define-public python-autopage |
| 14214 | (package |
| 14215 | (name "python-autopage") |
| 14216 | (version "0.5.1") |
| 14217 | (source (origin |
| 14218 | (method url-fetch) |
| 14219 | (uri (pypi-uri "autopage" version)) |
| 14220 | (sha256 |
| 14221 | (base32 |
| 14222 | "169ixll1ncm2a2pcc86665ikjv2lrzs10p6c1w4yj55p3gk3xgh1")))) |
| 14223 | (build-system pyproject-build-system) |
| 14224 | (arguments |
| 14225 | (list |
| 14226 | #:phases |
| 14227 | #~(modify-phases %standard-phases |
| 14228 | (add-before 'check 'disable-e2e-tests |
| 14229 | (lambda _ |
| 14230 | ;; These tests rely on KeyboardInterrupts which do not |
| 14231 | ;; work in the build container. |
| 14232 | (delete-file "autopage/tests/test_end_to_end.py")))))) |
| 14233 | (native-inputs |
| 14234 | (list python-pypa-build |
| 14235 | python-setuptools |
| 14236 | python-wheel |
| 14237 | ;; For tests. |
| 14238 | python-fixtures |
| 14239 | python-pytest |
| 14240 | python-testtools)) |
| 14241 | (home-page "https://github.com/zaneb/autopage") |
| 14242 | (synopsis "Automatic paging for console output") |
| 14243 | (description |
| 14244 | "Autopage is a Python library to automatically display terminal output |
| 14245 | from a program in a @dfn{pager} such as @command{less}.") |
| 14246 | (license license:asl2.0))) |
| 14247 | |
| 14248 | (define-public python-dirty-equals |
| 14249 | (package |
| 14250 | (name "python-dirty-equals") |
| 14251 | (version "0.11.0") |
| 14252 | (source |
| 14253 | (origin |
| 14254 | (method git-fetch) |
| 14255 | (uri (git-reference |
| 14256 | (url "https://github.com/samuelcolvin/dirty-equals") |
| 14257 | (commit (string-append "v" version)))) |
| 14258 | (file-name (git-file-name name version)) |
| 14259 | (sha256 |
| 14260 | (base32 "11nrdzcrc5hg3sbrhrdrmw43nvrx8wpzkl5q0p91pihxnfnrcli4")))) |
| 14261 | (build-system pyproject-build-system) |
| 14262 | ;; tests: 551 passed, 60 skipped |
| 14263 | (native-inputs |
| 14264 | (list python-hatchling |
| 14265 | python-pydantic |
| 14266 | python-pytest |
| 14267 | python-pytest-examples |
| 14268 | tzdata-for-tests)) |
| 14269 | (home-page "https://dirty-equals.helpmanual.io/") |
| 14270 | (synopsis "Do dirty (but useful) things with equals") |
| 14271 | (description |
| 14272 | "@code{dirty-equals} is a Python library that (mis)uses the |
| 14273 | @code{__eq__} method to make code (generally unit tests) more declarative |
| 14274 | and therefore easier to read and write.") |
| 14275 | (license license:expat))) |
| 14276 | |
| 14277 | (define-public python-dirty-equals-bootstrap |
| 14278 | (hidden-package |
| 14279 | (package |
| 14280 | (inherit python-dirty-equals) |
| 14281 | (name "python-dirty-equals-bootstrap") |
| 14282 | (arguments |
| 14283 | (list #:tests? #f)) |
| 14284 | (native-inputs |
| 14285 | (list python-hatchling))))) |
| 14286 | |
| 14287 | (define-public python-distutils-extra |
| 14288 | (package |
| 14289 | (name "python-distutils-extra") |
| 14290 | (version "2.38") |
| 14291 | (source |
| 14292 | (origin |
| 14293 | (method url-fetch) |
| 14294 | (uri (string-append "https://launchpad.net/python-distutils-extra/trunk/" |
| 14295 | version "/+download/python-distutils-extra-" |
| 14296 | version ".tar.gz")) |
| 14297 | (sha256 |
| 14298 | (base32 |
| 14299 | "0lx15kcbby9zisx33p2h5hgakgwh2bvh0ibag8z0px4j6ifhs41x")))) |
| 14300 | (build-system pyproject-build-system) |
| 14301 | (arguments |
| 14302 | (list #:tests? #f)) ;tests are outdated and broken |
| 14303 | (native-inputs (list python-setuptools python-wheel)) |
| 14304 | (home-page "https://launchpad.net/python-distutils-extra/") |
| 14305 | (synopsis "Enhancements to Python's distutils") |
| 14306 | (description |
| 14307 | "The python-distutils-extra module enables you to easily integrate |
| 14308 | gettext support, themed icons, and scrollkeeper-based documentation into |
| 14309 | Python's distutils.") |
| 14310 | (license license:gpl2))) |
| 14311 | |
| 14312 | (define-public python-olefile |
| 14313 | (package |
| 14314 | (name "python-olefile") |
| 14315 | (version "0.47") |
| 14316 | (source |
| 14317 | (origin |
| 14318 | (method git-fetch) |
| 14319 | (uri (git-reference |
| 14320 | (url "https://github.com/decalage2/olefile") |
| 14321 | (commit (string-append "v" version)))) |
| 14322 | (file-name (git-file-name name version)) |
| 14323 | (sha256 |
| 14324 | (base32 "1ardfp32jgijha6vk7znvnpwgi710c6gj02lk4drv45xj4mw71hv")))) |
| 14325 | (build-system pyproject-build-system) |
| 14326 | (native-inputs |
| 14327 | (list python-pytest |
| 14328 | python-setuptools)) |
| 14329 | (home-page "https://www.decalage.info/python/olefileio") |
| 14330 | (synopsis "Read and write Microsoft OLE2 files") |
| 14331 | (description |
| 14332 | "@code{olefile} can parse, read and write Microsoft OLE2 files (Structured |
| 14333 | Storage or Compound Document, Microsoft Office). It is an improved version of |
| 14334 | the OleFileIO module from PIL, the Python Image Library.") |
| 14335 | (license license:bsd-3))) |
| 14336 | |
| 14337 | (define-public python-property-cached |
| 14338 | (package |
| 14339 | (name "python-property-cached") |
| 14340 | (version "1.6.4") |
| 14341 | (source |
| 14342 | (origin |
| 14343 | (method url-fetch) |
| 14344 | (uri (pypi-uri "property-cached" version ".zip")) |
| 14345 | (sha256 |
| 14346 | (base32 "0wxv5sdx1p7ils36j6j6hfscz8v2vzbq212i8y8r0lrnxpqlx71y")) |
| 14347 | (patches |
| 14348 | (search-patches "python-property-cached-asyncio-3_11.patch")))) |
| 14349 | (build-system pyproject-build-system) |
| 14350 | (arguments |
| 14351 | (list |
| 14352 | ;; AssertionError. |
| 14353 | #:test-flags #~(list "-k" "not test_threads_ttl_expiry"))) |
| 14354 | (native-inputs (list python-freezegun python-pytest unzip |
| 14355 | python-setuptools python-wheel)) |
| 14356 | (home-page "https://github.com/althonos/property-cached/") |
| 14357 | (synopsis "Decorator for caching properties in classes") |
| 14358 | (description "This package provides a decorator for caching properties in |
| 14359 | classes. It is forked from @code{cached-property}.") |
| 14360 | (license license:bsd-3))) |
| 14361 | |
| 14362 | (define-public python-pdf2image |
| 14363 | (package |
| 14364 | (name "python-pdf2image") |
| 14365 | (version "1.17.0") |
| 14366 | (source |
| 14367 | (origin |
| 14368 | (method git-fetch) |
| 14369 | (uri (git-reference |
| 14370 | (url "https://github.com/Belval/pdf2image") |
| 14371 | (commit (string-append "v" version)))) |
| 14372 | (file-name (git-file-name name version)) |
| 14373 | (sha256 |
| 14374 | (base32 "0xd8q939zqa8flfcdhbgyadiwqb8sgnd42cbr6n1l2jl9fnix45v")))) |
| 14375 | (build-system pyproject-build-system) |
| 14376 | (arguments |
| 14377 | (list |
| 14378 | ;; The following excluded tests assume hardcoded binary paths to |
| 14379 | ;; /usr/bin/pdftoppm and /usr/bin/pdftocairo. |
| 14380 | #:test-flags |
| 14381 | #~(list "--exclude=^test_use_poppler_path$" |
| 14382 | "--exclude=^test_use_poppler_path_with_trailing_slash$"))) |
| 14383 | (propagated-inputs (list python-pillow)) |
| 14384 | (inputs (list poppler)) |
| 14385 | (native-inputs (list python-pynose which python-setuptools)) |
| 14386 | (home-page "https://github.com/Belval/pdf2image") |
| 14387 | (synopsis |
| 14388 | "Python wrapper around @command{pdftoppm} and @command{pdftocairo}") |
| 14389 | (description |
| 14390 | "This package provides a Python API wrapping the @command{pdftoppm} and |
| 14391 | @command{pdftocairo} command line tools. It can convert @file{PDF} files to a |
| 14392 | Python list with elements of type @code{PIL.Image} (from the |
| 14393 | @code{python-pillow} library).") |
| 14394 | (license license:expat))) |
| 14395 | |
| 14396 | (define-public python-pikepdf |
| 14397 | (package |
| 14398 | (name "python-pikepdf") |
| 14399 | (version "8.15.1") |
| 14400 | (source |
| 14401 | (origin |
| 14402 | (method git-fetch) |
| 14403 | (uri (git-reference |
| 14404 | (url "https://github.com/pikepdf/pikepdf") |
| 14405 | (commit (string-append "v" version)))) |
| 14406 | (file-name (git-file-name name version)) |
| 14407 | (sha256 |
| 14408 | (base32 "0hpnb63xp8yaflah3i1z5azh6mg36rz0liy27km47417w2q72v0c")))) |
| 14409 | (build-system pyproject-build-system) |
| 14410 | (native-inputs |
| 14411 | (list pybind11-2 |
| 14412 | python-attrs |
| 14413 | python-hypothesis |
| 14414 | python-setuptools-scm |
| 14415 | python-psutil |
| 14416 | python-pytest |
| 14417 | python-pytest-timeout |
| 14418 | python-pytest-xdist |
| 14419 | python-dateutil |
| 14420 | python-xmp-toolkit |
| 14421 | python-tomli |
| 14422 | python-setuptools)) |
| 14423 | (inputs |
| 14424 | (list qpdf)) |
| 14425 | (propagated-inputs |
| 14426 | (list python-deprecated python-lxml python-packaging python-pillow)) |
| 14427 | (home-page "https://github.com/pikepdf/pikepdf") |
| 14428 | (synopsis "Read and write PDFs with Python") |
| 14429 | (description |
| 14430 | "pikepdf is a Python library for reading and writing PDF files.") |
| 14431 | (license license:mpl2.0))) |
| 14432 | |
| 14433 | (define-public python-pillow |
| 14434 | (package |
| 14435 | (name "python-pillow") |
| 14436 | (version "12.2.0") |
| 14437 | (source |
| 14438 | (origin |
| 14439 | (method git-fetch) |
| 14440 | (uri (git-reference |
| 14441 | (url "https://github.com/python-pillow/Pillow") |
| 14442 | (commit version))) |
| 14443 | (file-name (git-file-name name version)) |
| 14444 | (sha256 |
| 14445 | (base32 "140ynzxpazq6gq041bhkzx314z4kkzv3wlmvph68a0nkj9nqa3pg")))) |
| 14446 | (build-system pyproject-build-system) |
| 14447 | (arguments |
| 14448 | (list |
| 14449 | #:phases |
| 14450 | #~(modify-phases %standard-phases |
| 14451 | (add-after 'unpack 'patch-ldconfig |
| 14452 | (lambda _ |
| 14453 | (substitute* "setup.py" |
| 14454 | (("\\['/sbin/ldconfig', '-p'\\]") "['true']")))) |
| 14455 | (replace 'check |
| 14456 | (lambda* (#:key tests? #:allow-other-keys) |
| 14457 | (when tests? |
| 14458 | (setenv "HOME" (getcwd)) |
| 14459 | (invoke "python" "selftest.py" "--installed") |
| 14460 | (invoke "python" "-m" "pytest" "-vv"))))))) |
| 14461 | (native-inputs (list pybind11 |
| 14462 | python-defusedxml |
| 14463 | python-markdown2 |
| 14464 | python-olefile |
| 14465 | python-pytest |
| 14466 | python-setuptools |
| 14467 | python-trove-classifiers)) |
| 14468 | (inputs (list freetype |
| 14469 | lcms |
| 14470 | libjpeg-turbo |
| 14471 | libtiff |
| 14472 | libwebp |
| 14473 | openjpeg |
| 14474 | zlib)) |
| 14475 | (home-page "https://python-pillow.github.io/") |
| 14476 | (synopsis "Fork of the Python Imaging Library") |
| 14477 | (description |
| 14478 | "The Python Imaging Library adds image processing capabilities to your |
| 14479 | Python interpreter. This library provides extensive file format support, an |
| 14480 | efficient internal representation, and fairly powerful image processing |
| 14481 | capabilities. The core image library is designed for fast access to data |
| 14482 | stored in a few basic pixel formats. It should provide a solid foundation for |
| 14483 | a general image processing tool.") |
| 14484 | (properties `((cpe-name . "pillow"))) |
| 14485 | (license (license:x11-style |
| 14486 | "https://github.com/python-pillow/Pillow/blob/12.2.0/LICENSE" |
| 14487 | "MIT-CMU License")))) |
| 14488 | |
| 14489 | (define-public python-pillow-avif-plugin |
| 14490 | (package |
| 14491 | (name "python-pillow-avif-plugin") |
| 14492 | (version "1.5.5") |
| 14493 | (source |
| 14494 | (origin |
| 14495 | (method git-fetch) |
| 14496 | (uri (git-reference |
| 14497 | (url "https://github.com/fdintino/pillow-avif-plugin/") |
| 14498 | (commit (string-append "v" version)))) |
| 14499 | (file-name (git-file-name name version)) |
| 14500 | (sha256 |
| 14501 | (base32 "1812liaxcdhzqzrjl9cf2xrnki7zz6f3iq3dvh1w9sgnbbjhfkj6")))) |
| 14502 | (build-system pyproject-build-system) |
| 14503 | (propagated-inputs (list python-requests)) |
| 14504 | (native-inputs (list python-packaging |
| 14505 | python-pillow |
| 14506 | python-pytest |
| 14507 | python-setuptools)) |
| 14508 | (inputs (list libavif)) |
| 14509 | (home-page "https://github.com/fdintino/pillow-avif-plugin/") |
| 14510 | (synopsis "Pillow plugin that adds avif support via libavif") |
| 14511 | (description |
| 14512 | "This package provides a pillow plugin that adds avif support via |
| 14513 | libavif.") |
| 14514 | (license license:expat))) |
| 14515 | |
| 14516 | (define-public python-pillow-heif |
| 14517 | (package |
| 14518 | (name "python-pillow-heif") |
| 14519 | ;; The tagged version 1.3.0 fails tests with libheif version 1.22.2. This |
| 14520 | ;; commit is taken from the master branch. |
| 14521 | (properties '((commit . "4366788c5eff15cf3d3c66d262224dac27f8efc4") |
| 14522 | (revision . "0"))) |
| 14523 | (version (git-version "1.3.0" |
| 14524 | (assoc-ref properties 'revision) |
| 14525 | (assoc-ref properties 'commit))) |
| 14526 | (source |
| 14527 | (origin |
| 14528 | (method git-fetch) |
| 14529 | (uri (git-reference |
| 14530 | (url "https://github.com/bigcat88/pillow_heif") |
| 14531 | (commit (assoc-ref properties 'commit)))) |
| 14532 | (file-name (git-file-name name version)) |
| 14533 | (sha256 |
| 14534 | (base32 "1dj35h2q2ng7hhv9nyqs0dd0x66kq0a5sgn1f6mc5d191qb90dy3")))) |
| 14535 | (build-system pyproject-build-system) |
| 14536 | (inputs (list libheif)) |
| 14537 | (propagated-inputs (list python-pillow)) |
| 14538 | (native-inputs (list opencv ; for opencv-python |
| 14539 | python-defusedxml |
| 14540 | python-numpy |
| 14541 | python-packaging |
| 14542 | python-pympler |
| 14543 | python-pytest |
| 14544 | python-setuptools)) |
| 14545 | (home-page "https://github.com/bigcat88/pillow_heif") |
| 14546 | (synopsis "Python interface for libheif library") |
| 14547 | (description "This package provides Python bindings for the libheif library |
| 14548 | and a plugin for Pillow.") |
| 14549 | (license license:bsd-3))) |
| 14550 | |
| 14551 | (define-public python-pillow-jxl-plugin |
| 14552 | (package |
| 14553 | (name "python-pillow-jxl-plugin") |
| 14554 | (version "1.3.7") |
| 14555 | (source |
| 14556 | (origin |
| 14557 | (method git-fetch) |
| 14558 | (uri (git-reference |
| 14559 | (url "https://github.com/Isotr0py/pillow-jpegxl-plugin") |
| 14560 | (commit (string-append "v" version)))) |
| 14561 | (file-name (git-file-name name version)) |
| 14562 | (sha256 |
| 14563 | (base32 "0bfcypr81c7rxvs2yw992f3dklfbniyysgfrplsa706raa3288pk")))) |
| 14564 | (build-system pyproject-build-system) |
| 14565 | (arguments |
| 14566 | (list |
| 14567 | ;; Test requires OpenEXR and pyexiv2 modules, which not are yet available |
| 14568 | ;; in Guix. |
| 14569 | #:tests? #f |
| 14570 | #:imported-modules `(,@%cargo-build-system-modules |
| 14571 | ,@%pyproject-build-system-modules) |
| 14572 | #:modules '(((guix build cargo-build-system) #:prefix cargo:) |
| 14573 | (guix build pyproject-build-system) |
| 14574 | (guix build utils)) |
| 14575 | #:phases |
| 14576 | #~(modify-phases %standard-phases |
| 14577 | (add-after 'unpack 'prepare-cargo-build-system |
| 14578 | (lambda args |
| 14579 | (for-each (lambda (phase) |
| 14580 | (format #t "Running cargo phase: ~a~%" phase) |
| 14581 | (apply (assoc-ref cargo:%standard-phases phase) |
| 14582 | #:cargo-target #$(cargo-triplet) |
| 14583 | args)) |
| 14584 | '(unpack-rust-crates |
| 14585 | configure |
| 14586 | check-for-pregenerated-files |
| 14587 | patch-cargo-checksums)))) |
| 14588 | (add-after 'unpack 'patch-pyproject |
| 14589 | (lambda _ |
| 14590 | ;; maturin failed to parse pyproject.toml. |
| 14591 | (substitute* "pyproject.toml" |
| 14592 | (("^license-files = .*") ""))))))) |
| 14593 | (propagated-inputs (list python-brotli |
| 14594 | python-packaging |
| 14595 | python-pillow)) |
| 14596 | ;; TODO: Add python-openexr and python-pyexiv2 for tests. |
| 14597 | (native-inputs (list maturin |
| 14598 | python-numpy |
| 14599 | python-pytest |
| 14600 | rust |
| 14601 | `(,rust "cargo"))) |
| 14602 | (inputs (cons* libjxl (cargo-inputs 'python-pillow-jxl-plugin))) |
| 14603 | (home-page "https://github.com/Isotr0py/pillow-jpegxl-plugin") |
| 14604 | (synopsis "Pillow plugin for JPEG-XL using Rust for bindings") |
| 14605 | (description "This package provides pillow plugin for JPEG-XL, using Rust |
| 14606 | for bindings.") |
| 14607 | (license license:gpl3+))) |
| 14608 | |
| 14609 | (define-public python-jxlpy |
| 14610 | (package |
| 14611 | (name "python-jxlpy") |
| 14612 | (version "0.9.5") |
| 14613 | (source |
| 14614 | (origin |
| 14615 | (method git-fetch) |
| 14616 | (uri (git-reference |
| 14617 | (url "https://github.com/olokelo/jxlpy") |
| 14618 | (commit version))) |
| 14619 | (file-name (git-file-name name version)) |
| 14620 | (sha256 |
| 14621 | (base32 "1d1jrvpyvp8rix8kfmi962hl73mj0f7mib0xzk04va4kzc9p726s")))) |
| 14622 | (build-system pyproject-build-system) |
| 14623 | (arguments (list #:tests? #f)) ; no tests, just examples |
| 14624 | (inputs (list libjxl)) |
| 14625 | (propagated-inputs (list python-cython)) |
| 14626 | (native-inputs (list python-cython python-setuptools)) |
| 14627 | (home-page "https://github.com/olokelo/jxlpy") |
| 14628 | (synopsis "JPEG XL integration in Python") |
| 14629 | (description "This package provides Cython-based Python bindings for |
| 14630 | libjxl, as well as a pillow plugin.") |
| 14631 | (license license:expat))) |
| 14632 | |
| 14633 | (define-public python-pixelmatch |
| 14634 | (package |
| 14635 | (name "python-pixelmatch") |
| 14636 | (version "0.3.0") |
| 14637 | (source |
| 14638 | (origin |
| 14639 | (method git-fetch) |
| 14640 | (uri (git-reference |
| 14641 | (url "https://github.com/whtsky/pixelmatch-py") |
| 14642 | (commit (string-append "v" version)))) |
| 14643 | (file-name (git-file-name name version)) |
| 14644 | (sha256 |
| 14645 | (base32 "0d4579hh5rwdh9djq5j9lf448x68c1iz80wavxiq7sxpmwm1j23a")))) |
| 14646 | (build-system pyproject-build-system) |
| 14647 | (arguments |
| 14648 | ;; XXX: PIL.UnidentifiedImageError despite images being present. |
| 14649 | (list #:tests? #f)) |
| 14650 | (native-inputs |
| 14651 | (list python-poetry-core |
| 14652 | python-pillow |
| 14653 | python-pytest |
| 14654 | python-pytest-benchmark)) |
| 14655 | (home-page "https://github.com/whtsky/pixelmatch-py") |
| 14656 | (synopsis "Pixel-level image comparison library") |
| 14657 | (description |
| 14658 | "This package provides a pixel-level image comparison library for Python, |
| 14659 | originally created to compare screenshots in tests. Its features include |
| 14660 | accurate anti-aliased pixels detection and perceptual color difference |
| 14661 | metrics.") |
| 14662 | (license license:isc))) |
| 14663 | |
| 14664 | (define-public python-imagecodecs |
| 14665 | (package |
| 14666 | (name "python-imagecodecs") |
| 14667 | (version "2025.8.2") |
| 14668 | (source |
| 14669 | (origin |
| 14670 | (method url-fetch) |
| 14671 | (uri (pypi-uri "imagecodecs" version)) |
| 14672 | (sha256 |
| 14673 | (base32 "0v7yglk100fnk0m9m5bnfph2vm1jpnxzrzz2lwk06dqcr6m75wia")) |
| 14674 | (modules '((guix build utils))) |
| 14675 | (snippet #~(for-each delete-file |
| 14676 | ;; Delete pre-generated Cython files. |
| 14677 | (find-files "imagecodecs" "_.*\\.c$"))))) |
| 14678 | (build-system pyproject-build-system) |
| 14679 | (arguments |
| 14680 | (list |
| 14681 | ;; tests: 2023 passed, 7841 skipped, 200 deselected, 1626 xfailed, 4 warnings |
| 14682 | #:test-flags |
| 14683 | ;; Some of those tests are flaky. |
| 14684 | #~(list "-k" "not test_cms_identity_transforms") |
| 14685 | #:phases |
| 14686 | #~(modify-phases %standard-phases |
| 14687 | (add-after 'unpack 'create-configuration |
| 14688 | (lambda _ |
| 14689 | ;; By default everything is enabled. We can selectively disable |
| 14690 | ;; extensions (and thus dependencies) by deleting them from the |
| 14691 | ;; EXTENSIONS dictionary. This is upstream’s preferred way. |
| 14692 | (call-with-output-file "imagecodecs_distributor_setup.py" |
| 14693 | (lambda (port) |
| 14694 | (format port "\ |
| 14695 | def customize_build(EXTENSIONS, OPTIONS): |
| 14696 | ~{ del EXTENSIONS[~s]~%~}~%" |
| 14697 | (list "apng" "lzo" "tiff" ; FIXME Wrong version? |
| 14698 | ;; Those rely on unpackaged inputs. |
| 14699 | "aec" "avif" "bitshuffle" "brunsli" "deflate" |
| 14700 | "jetraw" "jpeg2k" "jpegls" "jpegxl" "jpegxr" |
| 14701 | "jpegxs" "lerc" "ljpeg" "lzf" "lzham" "mozjpeg" |
| 14702 | "pcodec" "sperr" "sz3" "szip" "ultrahdr" "zfp" |
| 14703 | "zlibng" "zopfli")))))) |
| 14704 | (add-after 'unpack 'fix-sanity-check |
| 14705 | (lambda _ |
| 14706 | ;; XXX: Don't exit twice. The generated script already does that. |
| 14707 | (substitute* "imagecodecs/__main__.py" |
| 14708 | (("sys\\.exit\\(main\\(\\)\\)") |
| 14709 | "")))) |
| 14710 | (add-before 'check 'configure-tests |
| 14711 | (lambda _ |
| 14712 | (setenv "HOME" (getcwd))))))) |
| 14713 | (inputs |
| 14714 | (list brotli |
| 14715 | c-blosc |
| 14716 | c-blosc2 |
| 14717 | giflib |
| 14718 | lcms |
| 14719 | libheif |
| 14720 | libjpeg-turbo |
| 14721 | libpng |
| 14722 | libtiff |
| 14723 | libwebp |
| 14724 | lz4 |
| 14725 | lzfse |
| 14726 | snappy |
| 14727 | xz |
| 14728 | zlib |
| 14729 | `(,zstd "lib"))) |
| 14730 | (propagated-inputs |
| 14731 | (list python-numpy python-matplotlib python-tifffile)) |
| 14732 | (native-inputs |
| 14733 | (list python-cython python-pytest python-setuptools)) |
| 14734 | (home-page "https://www.lfd.uci.edu/~gohlke/") |
| 14735 | (synopsis "Image transformation, compression, and decompression codecs") |
| 14736 | (description |
| 14737 | "Imagecodecs is a Python library that provides block-oriented, in-memory |
| 14738 | buffer transformation, compression, and decompression functions for use in the |
| 14739 | tifffile, czifile, and other scientific image input/output modules.") |
| 14740 | (license license:bsd-3))) |
| 14741 | |
| 14742 | (define-public python-property-manager |
| 14743 | (package |
| 14744 | (name "python-property-manager") |
| 14745 | (version "3.0") |
| 14746 | (source |
| 14747 | (origin |
| 14748 | (method git-fetch) |
| 14749 | (uri (git-reference |
| 14750 | (url "https://github.com/xolox/python-property-manager") |
| 14751 | (commit version))) |
| 14752 | (file-name (git-file-name name version)) |
| 14753 | (sha256 |
| 14754 | (base32 "1v7hjm7qxpgk92i477fjhpcnjgp072xgr8jrgmbrxfbsv4cvl486")))) |
| 14755 | (build-system pyproject-build-system) |
| 14756 | (native-inputs (list python-pytest python-setuptools)) |
| 14757 | (propagated-inputs |
| 14758 | (list python-verboselogs |
| 14759 | python-humanfriendly |
| 14760 | python-coloredlogs)) |
| 14761 | (home-page "https://github.com/xolox/python-property-manager") |
| 14762 | (synopsis "Useful property variants for Python programming") |
| 14763 | (description |
| 14764 | "The @code{property-manager} package defines several custom property |
| 14765 | variants for Python programming including required properties,writable |
| 14766 | properties, cached properties, etc.") |
| 14767 | (license license:expat))) |
| 14768 | |
| 14769 | (define-public python-executing |
| 14770 | (package |
| 14771 | (name "python-executing") |
| 14772 | (version "2.2.0") |
| 14773 | (source |
| 14774 | (origin |
| 14775 | (method url-fetch) |
| 14776 | (uri (pypi-uri "executing" version)) |
| 14777 | (sha256 |
| 14778 | (base32 "0mb74ajjfhzscvwxr9qazjs2q7il2fvyicm7s58jbzh8h418q42x")))) |
| 14779 | (build-system pyproject-build-system) |
| 14780 | (arguments |
| 14781 | (list |
| 14782 | #:test-flags |
| 14783 | ;; Test needs IPython |
| 14784 | #~(list "-k" "not test_two_statement_lookups") |
| 14785 | #:phases |
| 14786 | #~(modify-phases %standard-phases |
| 14787 | (add-after 'unpack 'fix-tests |
| 14788 | (lambda _ |
| 14789 | ;; See: <https://github.com/alexmojaki/executing/issues/99>. |
| 14790 | (substitute* "pyproject.toml" |
| 14791 | (("ignore_missing_imports = true.*") |
| 14792 | "ignore_missing_imports = true |
| 14793 | |
| 14794 | [tool.pytest.ini_options] |
| 14795 | python_functions = \"test_\"\n"))))))) |
| 14796 | (native-inputs |
| 14797 | (list python-asttokens |
| 14798 | python-littleutils |
| 14799 | python-pytest |
| 14800 | python-rich |
| 14801 | python-setuptools |
| 14802 | python-setuptools-scm |
| 14803 | python-wheel)) |
| 14804 | (home-page "https://github.com/alexmojaki/executing") |
| 14805 | (synopsis "Get information about what a Python frame is currently doing") |
| 14806 | (description "This package lets you get information about what a frame is |
| 14807 | currently doing, particularly the AST node being executed.") |
| 14808 | (license license:expat))) |
| 14809 | |
| 14810 | (define-public python-executor |
| 14811 | (package |
| 14812 | (name "python-executor") |
| 14813 | (version "23.2") |
| 14814 | (source |
| 14815 | (origin |
| 14816 | (method git-fetch) |
| 14817 | (uri (git-reference |
| 14818 | (url "https://github.com/xolox/python-executor") |
| 14819 | (commit version))) |
| 14820 | (file-name (git-file-name name version)) |
| 14821 | (sha256 |
| 14822 | (base32 "1mr0662c5l5zx0wjapcprp8p2xawfd0im3616df5sgv79fqzwfqs")))) |
| 14823 | (build-system pyproject-build-system) |
| 14824 | (arguments |
| 14825 | (list #:tests? #f)) ;TODO: tests require root/sudo |
| 14826 | (native-inputs (list python-mock python-pytest python-setuptools)) |
| 14827 | (propagated-inputs |
| 14828 | (list python-six |
| 14829 | python-property-manager |
| 14830 | python-fasteners |
| 14831 | python-virtualenv)) |
| 14832 | (home-page "https://github.com/xolox/python-executor") |
| 14833 | (synopsis "Programmer friendly subprocess wrapper") |
| 14834 | (description |
| 14835 | "The @code{executor} package is a simple wrapper for Python’s subprocess |
| 14836 | module that makes it very easy to handle subprocesses on UNIX systems with |
| 14837 | proper escaping of arguments and error checking currently doing, particularly |
| 14838 | the AST node being executed.") |
| 14839 | (license license:expat))) |
| 14840 | |
| 14841 | (define-public python-roifile |
| 14842 | (package |
| 14843 | (name "python-roifile") |
| 14844 | (version "2025.5.10") |
| 14845 | (source |
| 14846 | (origin |
| 14847 | (method url-fetch) |
| 14848 | (uri (pypi-uri "roifile" version)) |
| 14849 | (sha256 |
| 14850 | (base32 "1kiwylcmxckzrqj3xn5ljcjfyx6y2s8bnqjd5psmkb4mjrwiypcf")))) |
| 14851 | (build-system pyproject-build-system) |
| 14852 | (arguments (list #:tests? #f)) ; There are none. |
| 14853 | (native-inputs (list python-setuptools)) |
| 14854 | (propagated-inputs (list python-numpy)) |
| 14855 | (home-page "https://www.lfd.uci.edu/~gohlke/") |
| 14856 | (synopsis "Read and write ImageJ ROI format") |
| 14857 | (description "Roifile is a Python library to read, write, create, and plot |
| 14858 | ImageJ ROIs, an undocumented and ImageJ application specific format to store |
| 14859 | regions of interest, geometric shapes, paths, text, etc for image overlays.") |
| 14860 | (license license:bsd-3))) |
| 14861 | |
| 14862 | (define-public python-lfdfiles |
| 14863 | (package |
| 14864 | (name "python-lfdfiles") |
| 14865 | (version "2026.4.30") |
| 14866 | (source |
| 14867 | (origin |
| 14868 | (method url-fetch) |
| 14869 | (uri (pypi-uri "lfdfiles" version)) |
| 14870 | (sha256 |
| 14871 | (base32 "1y4p4n321dp33s7a3almgiirch6kain5liq8g01wrpzw1d4g1rz1")) |
| 14872 | (modules '((guix build utils))) |
| 14873 | (snippet |
| 14874 | ;; Delete pre-generated Cython files. |
| 14875 | #~(begin |
| 14876 | (for-each delete-file (find-files "lfdfiles" "_.*\\.c$")) |
| 14877 | (delete-file "lfdfiles/conftest.py"))))) |
| 14878 | (build-system pyproject-build-system) |
| 14879 | (arguments |
| 14880 | ;; XXX: Tests run with pytest, but most fail due to missing test data. |
| 14881 | (list #:tests? #f)) |
| 14882 | (native-inputs (list python-setuptools)) |
| 14883 | (propagated-inputs (list python-click python-numpy python-tifffile)) |
| 14884 | (home-page "https://www.lfd.uci.edu/~gohlke/") |
| 14885 | (synopsis "Work with LFD data files") |
| 14886 | (description |
| 14887 | "Lfdfiles is a Python library and console script for reading, writing, |
| 14888 | converting, and viewing many of the proprietary file formats used to store |
| 14889 | experimental data and metadata at the Laboratory for Fluorescence Dynamics.") |
| 14890 | (license license:bsd-3))) |
| 14891 | |
| 14892 | ;; ~8Mo of test files. |
| 14893 | (define python-av-testdata |
| 14894 | (file-union |
| 14895 | "python-av-testdata" |
| 14896 | (cons* |
| 14897 | (let ((file "pexels/time-lapse-video-of-night-sky-857195.mp4")) |
| 14898 | `(,(string-append "pyav-curated/" file) |
| 14899 | ,(origin |
| 14900 | (method url-fetch) |
| 14901 | (uri (string-append "https://pyav.org/datasets/" file)) |
| 14902 | (sha256 |
| 14903 | (base32 "10fjs2gyha88gzv7pv3njv0fimv61ihz39p1556qazm90xbknzgb"))))) |
| 14904 | (map |
| 14905 | (match-lambda |
| 14906 | ((file . hash) |
| 14907 | (list (string-append "fate-suite/" file) |
| 14908 | (origin |
| 14909 | (method url-fetch) |
| 14910 | (uri (string-append "http://fate.ffmpeg.org/fate-suite/" file)) |
| 14911 | (sha256 (base32 hash)))))) |
| 14912 | '(("aac/latm_stereo_to_51.ts" . |
| 14913 | "05h8389i944gb7f2y9c7848vqn8xz1mnm602fwala85npj4z8p4m") |
| 14914 | ("h264/extradata-reload-multi-stsd.mov" . |
| 14915 | "1rwlkl9vxp925vzh13cq5dfr983jxbkng0w6ivaymqqwvi7bvg5m") |
| 14916 | ("amv/MTV_high_res_320x240_sample_Penguin_Joke_MTV_from_WMV.amv" . |
| 14917 | "1hiifhdmd0ygzny5mplqdxl3dh9g95384ilkr4ccwv5l9y7hrmiv") |
| 14918 | ("audio-reference/chorusnoise_2ch_44kHz_s16.wav" . |
| 14919 | "06xybcnv7max9mmj6f1fw8rwz2aawhcyx2wgj1gmn1142kk431ra") |
| 14920 | ("h264/interlaced_crop.mp4" . |
| 14921 | "04bcmwd6scqn63y6p8i5srbjh9jq1sc95q6vy7srwfhzwxl9cma9") |
| 14922 | ("hap/HAPQA_NoSnappy_127x1.mov" . |
| 14923 | "1kvf8xs5v29sjqk2p07arl2hlp9z7hb1lb4202v4iqiwva1jmiaq") |
| 14924 | ("mkv/codec_delay_opus.mkv" . |
| 14925 | "0ll3qnmxnkhqxbh6s2a3clbkbhw5bsbfw6mh6kxdsa463iyyka8r") |
| 14926 | ("mov/displaymatrix.mov" . |
| 14927 | "1d4jp93hdyfhasxhqmx8lliwsa2w1kv2jj1qh6fqs74aqb6kzb82") |
| 14928 | ("mov/mov-1elist-ends-last-bframe.mov" . |
| 14929 | "04lyjsm8zncw9aac7vmkc2h45dcyb6y8643s3pg3rgzgcgqkq3nn") |
| 14930 | ("mov/white_zombie_scrunch-part.mov" . |
| 14931 | "07wg7mxa799z8dcvnbbrr9f0b5l6r42bd7d414isk3kc3jw0z6ka") |
| 14932 | ("mpeg2/mpeg2_field_encoding.ts" . |
| 14933 | "1f3waj8jhp6v655hnqpxi2bx3b36976vdjmr74hjr7jv2hx3724n") |
| 14934 | ("vorbis/vorbis_chapter_extension_demo.ogg" . |
| 14935 | "1prhhwi44psk9xji2mvk7rnvk899h5rx9wi3dmzkgwaz11r0cjdk") |
| 14936 | ("mxf/track_01_v02.mxf" . |
| 14937 | "04gpbma4kxvhn4dr1sh2k4pq2kbpmnmk2s2bdhq081jzap2983q1") |
| 14938 | ("png1/55c99e750a5fd6_50314226.png" . |
| 14939 | "05rha9vdix0wfibrhpaknh9fzj0cv84q6d2ypxq1wc0y328fc068") |
| 14940 | ("qtrle/aletrek-rle.mov" . |
| 14941 | "1n6ksjrqrb7gnbvzhj58y5z5jx6bmpgg7lxwzvnbfg9f9ib2yxdr") |
| 14942 | ("sub/MovText_capability_tester.mp4" . |
| 14943 | "07znmm4bhnp5f40yksnpf7ws94yflsbv169ydkga6rdby6ys2sv3") |
| 14944 | ("sub/vobsub.sub" . |
| 14945 | "12rwhnv1k7mngvyq026f2xd9dpd9mxmwg82sa9p5r8z54hrw8sjz")))))) |
| 14946 | |
| 14947 | (define-public python-av |
| 14948 | (package |
| 14949 | (name "python-av") |
| 14950 | (version "16.0.1") |
| 14951 | (source |
| 14952 | (origin |
| 14953 | (method url-fetch) |
| 14954 | (uri (pypi-uri "av" version)) |
| 14955 | (sha256 |
| 14956 | (base32 "1gqxzwbgwj164x211lsjgqj8xx9rpjxhzq6rls4mhpqbz9wyfb6x")))) |
| 14957 | (build-system pyproject-build-system) |
| 14958 | (arguments |
| 14959 | (list |
| 14960 | ;; Upstream is not great in responding to open issues or change requests. |
| 14961 | ;; See: |
| 14962 | ;; - <https://github.com/PyAV-Org/PyAV/issues/1942> |
| 14963 | ;; - <https://github.com/PyAV-Org/PyAV/issues/1946> |
| 14964 | ;; - <https://github.com/PyAV-Org/PyAV/pull/1944> |
| 14965 | #:test-flags |
| 14966 | ;; Writing to custom IO requires network access. |
| 14967 | #~(list "-k" "not test_writing_to_custom_io_dash") |
| 14968 | #:phases |
| 14969 | #~(modify-phases %standard-phases |
| 14970 | (add-before 'check 'pre-check |
| 14971 | (lambda _ |
| 14972 | ;; This would otherwise interfere with finding the installed |
| 14973 | ;; av when running tests. |
| 14974 | (delete-file-recursively "av") |
| 14975 | (setenv "PYAV_TESTDATA_DIR" #+python-av-testdata) |
| 14976 | (substitute* "tests/common.py" |
| 14977 | (("^os\\.environ\\[\"PYAV_TESTDATA_DIR\"\\] = asset\\(\\)") |
| 14978 | "os.environ.setdefault(\"PYAV_TESTDATA_DIR\", asset())"))))))) |
| 14979 | (native-inputs |
| 14980 | (list pkg-config |
| 14981 | python-cython |
| 14982 | python-numpy |
| 14983 | python-pillow |
| 14984 | python-pytest |
| 14985 | python-setuptools)) |
| 14986 | (inputs (list ffmpeg)) |
| 14987 | (home-page "https://github.com/PyAV-Org/PyAV") |
| 14988 | (synopsis "Pythonic bindings for FFmpeg's libraries") |
| 14989 | (description |
| 14990 | "PyAV is a Python library that allows for direct and precise manipulation |
| 14991 | of media through containers, streams, packets, codecs, and frames. It provides |
| 14992 | access to the powerful FFmpeg libraries while managing the complex details as |
| 14993 | much as possible. |
| 14994 | PyAV also facilitates data transformation and integration with |
| 14995 | other packages such as Numpy and Pillow. However, working with media is a |
| 14996 | challenging task and PyAV cannot abstract it away or make all the best decisions |
| 14997 | for you. If you can accomplish your tasks with the ffmpeg command, PyAV may not |
| 14998 | be necessary. Nonetheless, PyAV is an essential tool when working with media |
| 14999 | that requires its specific capabilities.") |
| 15000 | (license license:bsd-3))) |
| 15001 | |
| 15002 | (define-public python-ffmpeg-python |
| 15003 | ;; The latest release (0.2.0) is old and its test suite crashes on Python 3.10. |
| 15004 | (package |
| 15005 | (name "python-ffmpeg-python") |
| 15006 | (properties '((commit . "df129c7ba30aaa9ffffb81a48f53aa7253b0b4e6") |
| 15007 | (revision . "0"))) |
| 15008 | (version (git-version "0.2.0" |
| 15009 | (assoc-ref properties 'revision) |
| 15010 | (assoc-ref properties 'commit))) |
| 15011 | (source |
| 15012 | (origin |
| 15013 | (method git-fetch) |
| 15014 | (uri (git-reference |
| 15015 | (url "https://github.com/kkroening/ffmpeg-python.git") |
| 15016 | (commit (assoc-ref properties 'commit)))) |
| 15017 | (file-name (git-file-name name version)) |
| 15018 | (sha256 |
| 15019 | (base32 "1zj4ac37n4igfj21zy405mdlvbpv6jyb12wfpszf8zkhhj2qby4c")))) |
| 15020 | (build-system pyproject-build-system) |
| 15021 | (arguments |
| 15022 | (list |
| 15023 | #:test-flags |
| 15024 | #~(list "-k" "not test_pipe and not test__probe") |
| 15025 | #:phases |
| 15026 | #~(modify-phases %standard-phases |
| 15027 | (add-after 'unpack 'hardcode-ffmpeg |
| 15028 | (lambda* (#:key inputs #:allow-other-keys) |
| 15029 | (let ((ffmpeg (search-input-file inputs "bin/ffmpeg"))) |
| 15030 | (substitute* "ffmpeg/_run.py" |
| 15031 | (("cmd='ffmpeg'") |
| 15032 | (string-append "cmd='" ffmpeg "'"))) |
| 15033 | (substitute* "ffmpeg/tests/test_ffmpeg.py" |
| 15034 | (("out_file.compile\\(\\) == \\['ffmpeg'") |
| 15035 | (format #f "out_file.compile() == [~s" ffmpeg))))))))) |
| 15036 | (inputs (list ffmpeg)) |
| 15037 | (propagated-inputs (list python-future)) |
| 15038 | (native-inputs (list python-future |
| 15039 | python-numpy |
| 15040 | python-pytest |
| 15041 | python-pytest-mock |
| 15042 | python-setuptools)) |
| 15043 | (home-page "https://github.com/kkroening/ffmpeg-python") |
| 15044 | (synopsis "Python bindings for FFmpeg with complex filtering support") |
| 15045 | (description |
| 15046 | "ffmpeg-python allows you to write FFmpeg filtergraphs in familiar |
| 15047 | Python terms, taking care of running ffmpeg with the correct command-line |
| 15048 | arguments. It handles arbitrarily large (directed-acyclic) signal graphs.") |
| 15049 | (license license:asl2.0))) |
| 15050 | |
| 15051 | (define-public python-imageio-ffmpeg |
| 15052 | (package |
| 15053 | (name "python-imageio-ffmpeg") |
| 15054 | (version "0.6.0") |
| 15055 | (source |
| 15056 | (origin |
| 15057 | (method url-fetch) |
| 15058 | (uri (pypi-uri "imageio_ffmpeg" version)) |
| 15059 | (sha256 |
| 15060 | (base32 "0m8ppa4ap5vnic3jb25hsrq2gn0283x7mfr5z6ln8m80ivnnnmg2")))) |
| 15061 | (build-system pyproject-build-system) |
| 15062 | (arguments |
| 15063 | (list |
| 15064 | #:tests? #f ;XXX: tests require network access to get FFmpeg data |
| 15065 | #:phases |
| 15066 | #~(modify-phases %standard-phases |
| 15067 | (add-after 'unpack 'hardcode-ffmpeg |
| 15068 | (lambda* (#:key inputs #:allow-other-keys) |
| 15069 | (substitute* "imageio_ffmpeg/_utils.py" |
| 15070 | (("os\\.getenv\\(\"IMAGEIO_FFMPEG_EXE\".*\\)" all) |
| 15071 | (string-append "(" all " or \"" |
| 15072 | (search-input-file inputs "bin/ffmpeg") |
| 15073 | "\")")))))))) |
| 15074 | (native-inputs |
| 15075 | (list python-setuptools |
| 15076 | python-wheel)) |
| 15077 | (inputs |
| 15078 | (list ffmpeg)) |
| 15079 | (home-page "https://github.com/imageio/imageio-ffmpeg") |
| 15080 | (synopsis "FFMPEG wrapper for Python") |
| 15081 | (description |
| 15082 | "This package provides an FFMPEG wrapper for working with video files. |
| 15083 | It implements generator functions for reading and writing data to and from |
| 15084 | FFMPEG, reliably terminating the process when done.") |
| 15085 | (license license:bsd-2))) |
| 15086 | |
| 15087 | (define-public python-imageio |
| 15088 | (package |
| 15089 | (name "python-imageio") |
| 15090 | (version "2.36.1") |
| 15091 | (source |
| 15092 | (origin |
| 15093 | (method url-fetch) |
| 15094 | (uri (pypi-uri "imageio" version)) |
| 15095 | (sha256 |
| 15096 | (base32 |
| 15097 | "0qmy8qbnycas6v2a43qw9pxmd23fm3hpq3qb20b9x6kzyhqx5qg4")))) |
| 15098 | (build-system pyproject-build-system) |
| 15099 | (arguments |
| 15100 | (list |
| 15101 | #:test-flags #~(list "-m" "not needs_internet" |
| 15102 | ;; This attempts to load libGL.so (provided by mesa) |
| 15103 | ;; at the Python store path (sys.base_prefix?). |
| 15104 | "-k" "not test_findlib2" |
| 15105 | "--ignore" "tests/test_freeimage.py") |
| 15106 | #:phases |
| 15107 | #~(modify-phases %standard-phases |
| 15108 | (add-after 'unpack 'fix-source |
| 15109 | (lambda* (#:key inputs #:allow-other-keys) |
| 15110 | (substitute* "imageio/core/util.py" |
| 15111 | (("\"/var/tmp\"") |
| 15112 | "os.getenv(\"TMPDIR\", \"/tmp\")"))))))) |
| 15113 | (propagated-inputs |
| 15114 | (list python-imageio-ffmpeg python-numpy python-pillow python-tifffile)) |
| 15115 | (native-inputs |
| 15116 | (list python-fsspec |
| 15117 | python-pytest |
| 15118 | python-setuptools)) |
| 15119 | (home-page "https://imageio.github.io/") |
| 15120 | (synopsis "Library for reading and writing a wide range of image data") |
| 15121 | (description |
| 15122 | "Imageio is a Python library that provides an easy interface to read and |
| 15123 | write a wide range of image data, including animated images, video, volumetric |
| 15124 | data, and scientific formats.") |
| 15125 | (license license:bsd-2))) |
| 15126 | |
| 15127 | (define-public python-pyudorandom |
| 15128 | ;; Releases are not tagged in Git: |
| 15129 | ;; https://github.com/mewwts/pyudorandom/issues/3 |
| 15130 | (let ((commit "473b3f9c562469dd3c3ddbdfa3e9351e7709812c") |
| 15131 | (revision "0")) |
| 15132 | (package |
| 15133 | (name "python-pyudorandom") |
| 15134 | (version (git-version "1.0.0" revision commit)) |
| 15135 | (source |
| 15136 | (origin |
| 15137 | (method git-fetch) |
| 15138 | (uri (git-reference |
| 15139 | (url "https://github.com/mewwts/pyudorandom") |
| 15140 | (commit commit))) |
| 15141 | (file-name (git-file-name name version)) |
| 15142 | (sha256 |
| 15143 | (base32 "0k54lxlmh56n8l60hhigi57y8dycnmfw700vq6diqn8b30xna47c")))) |
| 15144 | (build-system pyproject-build-system) |
| 15145 | (arguments (list #:test-backend #~'unittest)) |
| 15146 | (native-inputs (list python-setuptools)) |
| 15147 | (home-page "https://github.com/mewwts/pyudorandom") |
| 15148 | (synopsis "Generate pseudorandom numbers by using algebra") |
| 15149 | (description |
| 15150 | "The @code{pyudorandom} module lets you iterate over a list |
| 15151 | in a non-succsessive, yet deterministic way based on integer modulo. |
| 15152 | It comes in handy when you want to mix up the items, but don't need |
| 15153 | any guarantees of randomness. It might be slow on small data, |
| 15154 | but shall be significantly faster than @code{random.shuffle} |
| 15155 | for longer lists.") |
| 15156 | (license license:expat)))) |
| 15157 | |
| 15158 | (define-public python-pyvips |
| 15159 | (package |
| 15160 | (name "python-pyvips") |
| 15161 | (version "3.1.1") |
| 15162 | (source |
| 15163 | (origin |
| 15164 | (method git-fetch) ; PyPI does not include test helpers |
| 15165 | (uri (git-reference |
| 15166 | (url "https://github.com/libvips/pyvips") |
| 15167 | (commit (string-append "v" version)))) |
| 15168 | (file-name (git-file-name name version)) |
| 15169 | (sha256 |
| 15170 | (base32 "1ibc1m2qbr9dzw3ck69fcbgrn1kvq3j6mkw1ac52ngd4v2fhbx04")))) |
| 15171 | (build-system pyproject-build-system) |
| 15172 | (native-inputs |
| 15173 | (list pkg-config |
| 15174 | python-pytest |
| 15175 | python-setuptools |
| 15176 | python-wheel)) |
| 15177 | (inputs |
| 15178 | (list glib vips)) |
| 15179 | (propagated-inputs |
| 15180 | (list python-cffi python-pkgconfig)) |
| 15181 | (home-page "https://github.com/libvips/pyvips") |
| 15182 | (synopsis "Python bindings for VIPS") |
| 15183 | (description "The @code{pyvips} package provides Python bindings for VIPS, |
| 15184 | a multithreaded image-processing system with low memory needs.") |
| 15185 | (license license:expat))) |
| 15186 | |
| 15187 | ;; WARNING: This package is a dependency of mesa. |
| 15188 | ;; There are no users in python-xyz for this package, consider to adopt closer |
| 15189 | ;; to Mesa. |
| 15190 | (define-public python-pycparser |
| 15191 | (package |
| 15192 | (name "python-pycparser") |
| 15193 | (version "2.22") |
| 15194 | (source |
| 15195 | (origin |
| 15196 | (method url-fetch) |
| 15197 | (uri (pypi-uri "pycparser" version)) |
| 15198 | (sha256 |
| 15199 | (base32 |
| 15200 | "1xhhxjg460f70ldki4prxmb7zl1bfl3mnjplbc7kkxa0q3lqn729")))) |
| 15201 | (outputs '("out" "doc")) |
| 15202 | (build-system pyproject-build-system) |
| 15203 | (arguments |
| 15204 | (list |
| 15205 | #:test-backend #~'unittest |
| 15206 | #:phases |
| 15207 | #~(modify-phases %standard-phases |
| 15208 | (add-after 'install 'install-doc |
| 15209 | (lambda _ |
| 15210 | (let* ((data (string-append #$output:doc "/share")) |
| 15211 | (doc (string-append data "/doc/" #$name "-" #$version)) |
| 15212 | (examples (string-append doc "/examples"))) |
| 15213 | (mkdir-p examples) |
| 15214 | (for-each (lambda (file) |
| 15215 | (copy-file (string-append "." file) |
| 15216 | (string-append doc file))) |
| 15217 | '("/README.rst" "/CHANGES" "/LICENSE")) |
| 15218 | (copy-recursively "examples" examples))))))) |
| 15219 | (native-inputs |
| 15220 | (list python-setuptools)) |
| 15221 | (home-page "https://github.com/eliben/pycparser") |
| 15222 | (synopsis "C parser in Python") |
| 15223 | (description |
| 15224 | "Pycparser is a complete parser of the C language, written in pure Python |
| 15225 | using the PLY parsing library. It parses C code into an AST and can serve as |
| 15226 | a front-end for C compilers or analysis tools.") |
| 15227 | (license license:bsd-3))) |
| 15228 | |
| 15229 | (define-public python-pywavelets |
| 15230 | (package |
| 15231 | (name "python-pywavelets") |
| 15232 | (version "1.8.0") |
| 15233 | (home-page "https://github.com/PyWavelets/pywt") |
| 15234 | (source (origin |
| 15235 | (method url-fetch) |
| 15236 | (uri (pypi-uri "pywavelets" version)) |
| 15237 | (sha256 |
| 15238 | (base32 |
| 15239 | "1aimbjxvflmx4qrl17bfzy64pz5ql4s9bhnb8g0ssh28fm2h507k")))) |
| 15240 | (build-system pyproject-build-system) |
| 15241 | (arguments |
| 15242 | (list |
| 15243 | #:test-flags '(list "--pyargs" "pywt") |
| 15244 | #:phases |
| 15245 | #~(modify-phases %standard-phases |
| 15246 | ;; The compiled libraries are only in the output at this point, |
| 15247 | ;; but they are needed to run tests. |
| 15248 | ;; FIXME: This should be handled by the pyargs pytest argument, |
| 15249 | ;; but is not for some reason. |
| 15250 | (add-before 'check 'pre-check |
| 15251 | (lambda _ (chdir #$output)))))) |
| 15252 | (native-inputs |
| 15253 | (list meson |
| 15254 | ninja |
| 15255 | pkg-config |
| 15256 | python-cython |
| 15257 | python-meson |
| 15258 | python-numpy |
| 15259 | python-pytest)) |
| 15260 | (propagated-inputs |
| 15261 | (list python-numpy python-scipy)) |
| 15262 | (synopsis "Wavelet transforms in Python") |
| 15263 | (description |
| 15264 | "PyWavelets is a library for wavelet transforms in Python. Wavelets are |
| 15265 | mathematical basis functions that are localized in both time and frequency. |
| 15266 | Wavelet transforms are time-frequency transforms employing wavelets. They are |
| 15267 | similar to Fourier transforms, the difference being that Fourier transforms are |
| 15268 | localized only in frequency instead of in time and frequency.") |
| 15269 | (license license:expat))) |
| 15270 | |
| 15271 | (define-public python-pywal |
| 15272 | (package |
| 15273 | (name "python-pywal") |
| 15274 | (version "3.3.0") |
| 15275 | (source |
| 15276 | (origin |
| 15277 | (method git-fetch) |
| 15278 | (uri (git-reference |
| 15279 | (url "https://github.com/dylanaraps/pywal") |
| 15280 | (commit version))) |
| 15281 | (file-name (git-file-name name version)) |
| 15282 | (sha256 |
| 15283 | (base32 "039m7dch479hlwddynacdrr0klz6a5bdly5swqbs94hfimficiyf")))) |
| 15284 | (build-system pyproject-build-system) |
| 15285 | (arguments |
| 15286 | `(#:phases |
| 15287 | (modify-phases %standard-phases |
| 15288 | (add-before 'check 'fix-home-directory |
| 15289 | (lambda _ |
| 15290 | ;; Tests fail with "Permission denied: '/homeless-shelter'". |
| 15291 | (setenv "HOME" "/tmp")))))) |
| 15292 | (native-inputs |
| 15293 | (list python-pytest |
| 15294 | python-setuptools)) |
| 15295 | (inputs |
| 15296 | (list imagemagick)) |
| 15297 | (home-page "https://github.com/dylanaraps/pywal") |
| 15298 | (synopsis "Color palette generator and applicator") |
| 15299 | (description |
| 15300 | "Pywal is a tool that generates a color palette from the dominant colors |
| 15301 | in an image. It then applies the colors system-wide and on-the-fly in all of |
| 15302 | your favourite programs.") |
| 15303 | (license license:expat))) |
| 15304 | |
| 15305 | (define-public python-pywal16 |
| 15306 | (package |
| 15307 | (name "python-pywal16") |
| 15308 | (version "3.8.10") |
| 15309 | (source |
| 15310 | (origin |
| 15311 | (method url-fetch) |
| 15312 | (uri (pypi-uri "pywal16" version)) |
| 15313 | (sha256 |
| 15314 | (base32 "0836ya6zw0dglh0yldd9apsfvh5f9cxvmy8nc7aw2w8s491yancf")))) |
| 15315 | (build-system pyproject-build-system) |
| 15316 | (arguments |
| 15317 | (list |
| 15318 | #:phases |
| 15319 | '(modify-phases %standard-phases |
| 15320 | (add-before 'check 'set-HOME |
| 15321 | (lambda _ (setenv "HOME" "/tmp")))))) |
| 15322 | (native-inputs |
| 15323 | (list imagemagick |
| 15324 | python-pytest |
| 15325 | python-setuptools)) |
| 15326 | (home-page "https://github.com/eylles/pywal16") |
| 15327 | (synopsis "16 colors fork of pywal") |
| 15328 | (description |
| 15329 | "Pywal16 is a tool that generates a color palette from the dominant |
| 15330 | colors in an image. It then applies the colors system-wide and on-the-fly in |
| 15331 | all of your favorite programs.") |
| 15332 | (license license:expat))) |
| 15333 | |
| 15334 | (define-public python-click-didyoumean |
| 15335 | (package |
| 15336 | (name "python-click-didyoumean") |
| 15337 | (version "0.3.1") |
| 15338 | (source |
| 15339 | (origin |
| 15340 | (method git-fetch) ;no tests in PyPI archive |
| 15341 | (uri (git-reference |
| 15342 | (url "https://github.com/click-contrib/click-didyoumean") |
| 15343 | (commit (string-append "v" version)))) |
| 15344 | (file-name (git-file-name name version)) |
| 15345 | (sha256 |
| 15346 | (base32 "1byfqs3m87zfpvssm1al9dvq94gjd0iddpwrzk6205n18wjsphqb")))) |
| 15347 | (build-system pyproject-build-system) |
| 15348 | (native-inputs |
| 15349 | (list python-poetry-core python-pytest)) |
| 15350 | (propagated-inputs |
| 15351 | (list python-click)) |
| 15352 | (home-page "https://github.com/timofurrer/click-didyoumean") |
| 15353 | (synopsis "Git-like did-you-mean feature in Click") |
| 15354 | (description |
| 15355 | "This plugin enables git-like did-you-mean feature in Click.") |
| 15356 | (license license:expat))) |
| 15357 | |
| 15358 | (define-public python-pywinrm |
| 15359 | (package |
| 15360 | (name "python-pywinrm") |
| 15361 | (version "0.5.0") |
| 15362 | (source |
| 15363 | (origin |
| 15364 | (method git-fetch) |
| 15365 | (uri (git-reference |
| 15366 | (url "https://github.com/diyan/pywinrm/") |
| 15367 | (commit (string-append "v" version)))) |
| 15368 | (file-name (git-file-name name version)) |
| 15369 | (sha256 |
| 15370 | (base32 "0jp7rps6zg5b6n98lfkwbhv72982sxxnqc4v4i6hjlq1ycjmmb8r")))) |
| 15371 | (build-system pyproject-build-system) |
| 15372 | (propagated-inputs |
| 15373 | (list python-requests python-requests-ntlm python-xmltodict)) |
| 15374 | (native-inputs |
| 15375 | (list python-mock python-pytest python-setuptools)) |
| 15376 | (home-page "https://github.com/diyan/pywinrm/") |
| 15377 | (synopsis "Python library for Windows Remote Management (WinRM)") |
| 15378 | (description |
| 15379 | "pywinrm is a Python client for the Windows Remote Management (WinRM) |
| 15380 | service. It allows you to invoke commands on target Windows machines from |
| 15381 | any machine that can run Python.") |
| 15382 | (license license:expat))) |
| 15383 | |
| 15384 | (define-public python-manimpango |
| 15385 | (package |
| 15386 | (name "python-manimpango") |
| 15387 | (version "0.5.0") |
| 15388 | (source |
| 15389 | (origin |
| 15390 | (method git-fetch) ; no tests data in PyPi package |
| 15391 | (uri (git-reference |
| 15392 | (url "https://github.com/ManimCommunity/ManimPango") |
| 15393 | (commit (string-append "v" version)))) |
| 15394 | (file-name (git-file-name name version)) |
| 15395 | (sha256 |
| 15396 | (base32 "00mrvswk8yly0m13jq0f432pr19sy3j6w37lrv78ah1j6jz9n50h")))) |
| 15397 | (build-system pyproject-build-system) |
| 15398 | (arguments |
| 15399 | (list |
| 15400 | #:phases |
| 15401 | #~(modify-phases %standard-phases |
| 15402 | (add-before 'check 'build-extensions |
| 15403 | (lambda _ |
| 15404 | (invoke "python" "setup.py" "build_ext" "--inplace")))))) |
| 15405 | (native-inputs |
| 15406 | (list pkg-config |
| 15407 | python-cython |
| 15408 | python-pytest |
| 15409 | python-setuptools |
| 15410 | python-wheel)) |
| 15411 | (inputs |
| 15412 | (list pango)) |
| 15413 | (home-page "https://manimpango.manim.community/") |
| 15414 | (synopsis "Bindings for Pango for using with Manim") |
| 15415 | (description |
| 15416 | "Python bindings for ManimPango which is a C binding for Pango, |
| 15417 | using Cython. |
| 15418 | |
| 15419 | ManimPango is internally used in Manim to render (non-LaTeX) text.") |
| 15420 | (license license:expat))) |
| 15421 | |
| 15422 | (define-public python-cairocffi |
| 15423 | (package |
| 15424 | (name "python-cairocffi") |
| 15425 | (version "1.7.1") |
| 15426 | (source |
| 15427 | (origin |
| 15428 | ;; The PyPI archive does not include the documentation, so use Git. |
| 15429 | (method git-fetch) |
| 15430 | (uri (git-reference |
| 15431 | (url "https://github.com/Kozea/cairocffi") |
| 15432 | (commit (string-append "v" version)))) |
| 15433 | (file-name (git-file-name name version)) |
| 15434 | (sha256 |
| 15435 | (base32 |
| 15436 | "08ilpzf1027f5w461yx2cg0ky64pd41kclfklyn8n292dmc9sk4g")))) |
| 15437 | (build-system pyproject-build-system) |
| 15438 | (outputs '("out" "doc")) |
| 15439 | (inputs |
| 15440 | (list glib gtk+ gdk-pixbuf cairo)) |
| 15441 | (native-inputs |
| 15442 | (list python-flit-core |
| 15443 | python-numpy |
| 15444 | python-pikepdf |
| 15445 | python-pytest |
| 15446 | python-sphinx |
| 15447 | python-sphinx-rtd-theme)) |
| 15448 | (propagated-inputs |
| 15449 | (list python-xcffib)) ; used at run time |
| 15450 | (arguments |
| 15451 | (list |
| 15452 | #:phases |
| 15453 | #~(modify-phases %standard-phases |
| 15454 | (add-after 'unpack 'patch-paths |
| 15455 | (lambda* (#:key inputs #:allow-other-keys) |
| 15456 | (substitute* "cairocffi/__init__.py" |
| 15457 | ;; Hack the dynamic library loading mechanism. |
| 15458 | (("find_library\\(library_name\\)") |
| 15459 | "\"found\"") |
| 15460 | (("filenames = \\(library_filename,\\) \\+ filenames") |
| 15461 | "pass") |
| 15462 | (("libcairo.so.2") |
| 15463 | (search-input-file inputs "/lib/libcairo.so.2"))) |
| 15464 | (substitute* "cairocffi/pixbuf.py" |
| 15465 | (("libgdk_pixbuf-2.0.so.0") |
| 15466 | (search-input-file inputs "/lib/libgdk_pixbuf-2.0.so.0")) |
| 15467 | (("libgobject-2.0.so.0") |
| 15468 | (search-input-file inputs "/lib/libgobject-2.0.so.0")) |
| 15469 | (("libglib-2.0.so.0") |
| 15470 | (search-input-file inputs "/lib/libglib-2.0.so.0")) |
| 15471 | (("libgdk-3.so.0") |
| 15472 | (search-input-file inputs "/lib/libgdk-3.so.0"))))) |
| 15473 | (add-after 'install 'install-doc |
| 15474 | (lambda* (#:key inputs #:allow-other-keys) |
| 15475 | (let* ((data (string-append #$output:doc "/share")) |
| 15476 | (doc (string-append data "/doc/" #$name "-" #$version)) |
| 15477 | (html (string-append doc "/html"))) |
| 15478 | (setenv "LD_LIBRARY_PATH" |
| 15479 | (string-append (assoc-ref inputs "cairo") "/lib" ":" |
| 15480 | (assoc-ref inputs "gdk-pixbuf") "/lib")) |
| 15481 | (setenv "LANG" "en_US.UTF-8") |
| 15482 | (mkdir-p html) |
| 15483 | (for-each (lambda (file) |
| 15484 | (copy-file (string-append "." file) |
| 15485 | (string-append doc file))) |
| 15486 | '("/README.rst" "/NEWS.rst")) |
| 15487 | (system* "python" "setup.py" "build_sphinx") |
| 15488 | (copy-recursively "docs/_build/html" html))))))) |
| 15489 | (home-page "https://github.com/Kozea/cairocffi") |
| 15490 | (synopsis "Python bindings and object-oriented API for Cairo") |
| 15491 | (description |
| 15492 | "Cairocffi is a CFFI-based drop-in replacement for Pycairo, a set of |
| 15493 | Python bindings and object-oriented API for cairo. Cairo is a 2D vector |
| 15494 | graphics library with support for multiple backends including image buffers, |
| 15495 | PNG, PostScript, PDF, and SVG file output.") |
| 15496 | (license license:bsd-3))) |
| 15497 | |
| 15498 | (define-public python-decorator |
| 15499 | (package |
| 15500 | (name "python-decorator") |
| 15501 | (version "5.2.1") |
| 15502 | (source |
| 15503 | (origin |
| 15504 | (method url-fetch) |
| 15505 | (uri (pypi-uri "decorator" version)) |
| 15506 | (sha256 |
| 15507 | (base32 "0q03vavcj2hxnv6006wiqnw7bbqq8rpw90yclyq39xsj6wa6dwk5")))) |
| 15508 | (build-system pyproject-build-system) |
| 15509 | (arguments |
| 15510 | (list #:test-backend #~'custom |
| 15511 | #:test-flags #~(list "tests/test.py"))) |
| 15512 | (native-inputs |
| 15513 | (list python-setuptools)) |
| 15514 | (home-page "https://pypi.org/project/decorator/") |
| 15515 | (synopsis "Python module to simplify usage of decorators") |
| 15516 | (description |
| 15517 | "The aim of the decorator module is to simplify the usage of decorators |
| 15518 | for the average programmer, and to popularize decorators usage giving examples |
| 15519 | of useful decorators, such as memoize, tracing, redirecting_stdout, locked, |
| 15520 | etc. The core of this module is a decorator factory.") |
| 15521 | (license license:expat))) |
| 15522 | |
| 15523 | (define-public python-drmaa |
| 15524 | (package |
| 15525 | (name "python-drmaa") |
| 15526 | (version "0.7.7") |
| 15527 | (source |
| 15528 | (origin |
| 15529 | (method url-fetch) |
| 15530 | (uri (pypi-uri "drmaa" version)) |
| 15531 | (sha256 |
| 15532 | (base32 "0xzqriqyvk5b8hszbavsyxd29wm3sxirm8zvvdm73rs2iq7w4hkx")))) |
| 15533 | (build-system pyproject-build-system) |
| 15534 | ;; The test suite requires libdrmaa which is provided by the cluster |
| 15535 | ;; environment. At runtime the environment variable DRMAA_LIBRARY_PATH |
| 15536 | ;; should be set to the path of the libdrmaa library. |
| 15537 | (arguments |
| 15538 | (list |
| 15539 | #:tests? #f |
| 15540 | #:phases |
| 15541 | #~(modify-phases %standard-phases |
| 15542 | ;; Loading the library fails because DRMAA_LIBRARY_PATH |
| 15543 | ;; is not configured. |
| 15544 | (delete 'sanity-check)))) |
| 15545 | (native-inputs (list python-setuptools)) |
| 15546 | (home-page "https://pypi.org/project/drmaa/") |
| 15547 | (synopsis "Python bindings for the DRMAA library") |
| 15548 | (description |
| 15549 | "A Python package for Distributed Resource Management (DRM) job |
| 15550 | submission and control. This package is an implementation of the DRMAA 1.0 |
| 15551 | Python language binding specification.") |
| 15552 | (license license:bsd-3))) |
| 15553 | |
| 15554 | (define-public python-grako |
| 15555 | (package |
| 15556 | (name "python-grako") |
| 15557 | (version "3.99.9") |
| 15558 | (source |
| 15559 | (origin |
| 15560 | (method url-fetch) |
| 15561 | (uri (pypi-uri "grako" version ".zip")) |
| 15562 | (sha256 |
| 15563 | (base32 "0r63i68wcnv63rfjkasq1ah81frz61a6mzbcnaxhrkdpx84p7hzw")) |
| 15564 | (snippet |
| 15565 | #~(begin (use-modules (guix build utils)) |
| 15566 | (substitute* "grako/grammars.py" |
| 15567 | (("from collections import defaultdict, Mapping") |
| 15568 | (string-append "from collections import defaultdict\n" |
| 15569 | "from collections.abc import Mapping"))) |
| 15570 | (substitute* '("grako/util.py" |
| 15571 | "grako/walkers.py") |
| 15572 | (("collections\\.Mapping") "collections.abc.Mapping")))))) |
| 15573 | (build-system pyproject-build-system) |
| 15574 | ;; XXX: Test file 'grako.ebnf' is missing from archive. |
| 15575 | (arguments (list #:tests? #f)) |
| 15576 | (native-inputs (list unzip python-pytest python-setuptools)) |
| 15577 | (home-page "https://pypi.org/project/grako") |
| 15578 | (synopsis "EBNF parser generator") |
| 15579 | (description |
| 15580 | "Grako takes a grammar in a variation of EBNF as input, and outputs a |
| 15581 | memoizing PEG/Packrat parser in Python.") |
| 15582 | (license license:bsd-3))) |
| 15583 | |
| 15584 | (define-public python-grandalf |
| 15585 | (package |
| 15586 | (name "python-grandalf") |
| 15587 | ;; `guix refresh` will try to upgrade to v0.55555, but that is older. |
| 15588 | (version "0.8") |
| 15589 | (source |
| 15590 | (origin |
| 15591 | (method git-fetch) |
| 15592 | (uri (git-reference |
| 15593 | (url "https://github.com/bdcht/grandalf") |
| 15594 | (commit (string-append "v" version)))) |
| 15595 | (file-name (git-file-name name version)) |
| 15596 | (sha256 |
| 15597 | (base32 "199f86hz3g4p237ma4j27rzwmska3bxzsbgq20i4l4pczf9v7ax0")) |
| 15598 | (patches |
| 15599 | (list |
| 15600 | (origin |
| 15601 | (method url-fetch) |
| 15602 | (uri |
| 15603 | (string-append "https://github.com/bdcht/grandalf/commit/" |
| 15604 | "e61df12f00124b615a220cfcd58dd6f89d226264.patch")) |
| 15605 | (sha256 |
| 15606 | (base32 "1p0315flsg4frpadcnn7fh41y5k3cdz4h722v6ri88a3s6hcpd36"))))))) |
| 15607 | (build-system pyproject-build-system) |
| 15608 | (arguments |
| 15609 | (list |
| 15610 | #:phases |
| 15611 | #~(modify-phases %standard-phases |
| 15612 | (add-before 'build 'patch-requirements |
| 15613 | (lambda _ |
| 15614 | (substitute* "setup.py" |
| 15615 | (("install_requires=\\['pyparsing'],") ""))))))) |
| 15616 | (native-inputs |
| 15617 | (list python-setuptools python-pytest)) |
| 15618 | (propagated-inputs |
| 15619 | (list python-numpy python-ply)) |
| 15620 | (home-page "https://github.com/bdcht/grandalf") |
| 15621 | (synopsis "Graph and drawing algorithms framework") |
| 15622 | (description |
| 15623 | "Grandalf is a Python package made for experimentations with graphs |
| 15624 | drawing algorithms. It is written in pure Python, and currently implements |
| 15625 | two layouts: the Sugiyama hierarchical layout and the force-driven or energy |
| 15626 | minimization approach. While not as fast or featured as graphviz or other |
| 15627 | libraries like OGDF (C++), it provides a way to walk and draw graphs no larger |
| 15628 | than thousands of nodes, while keeping the source code simple enough to tweak |
| 15629 | and hack any part of it for experimental purpose. With a total of about 1500 |
| 15630 | lines of Python, the code involved in drawing the Sugiyama (dot) layout fits |
| 15631 | in less than 600 lines. The energy minimization approach is comprised of only |
| 15632 | 250 lines! |
| 15633 | |
| 15634 | Grandalf does only 2 not-so-simple things: |
| 15635 | @itemize |
| 15636 | @item computing the nodes (x,y) coordinates (based on provided nodes |
| 15637 | dimensions, and a chosen layout) |
| 15638 | @item routing the edges with lines or nurbs |
| 15639 | @end itemize |
| 15640 | |
| 15641 | It doesn’t depend on any GTK/Qt/whatever graphics toolkit. This means that it |
| 15642 | will help you find where to draw things like nodes and edges, but it’s up to |
| 15643 | you to actually draw things with your favorite toolkit.") |
| 15644 | ;; The user can choose either license. |
| 15645 | (license (list license:gpl2 license:epl1.0)))) |
| 15646 | |
| 15647 | (define-public python-gridmap |
| 15648 | ;; XXX: Project is unmaintained since 2020-08-24, see: |
| 15649 | ;; <https://github.com/pygridtools/gridmap/issues/99>. |
| 15650 | (package |
| 15651 | (name "python-gridmap") |
| 15652 | (version "0.15.0") |
| 15653 | (source |
| 15654 | (origin |
| 15655 | (method git-fetch) |
| 15656 | (uri (git-reference |
| 15657 | (url "https://github.com/pygridtools/gridmap") |
| 15658 | (commit (string-append "v" version)))) |
| 15659 | (file-name (git-file-name name version)) |
| 15660 | (sha256 |
| 15661 | (base32 "0w1sxvhv5ldbzkx70q7036yvny0zsylc4zj7nzmp3nhjdl8whlrm")))) |
| 15662 | (build-system pyproject-build-system) |
| 15663 | (arguments |
| 15664 | (list #:tests? #f ;XXX: freezes or timeout |
| 15665 | #:test-backend #~'nose)) |
| 15666 | (native-inputs |
| 15667 | (list ;; python-pynose |
| 15668 | python-setuptools)) |
| 15669 | (propagated-inputs |
| 15670 | (list python-cherrypy |
| 15671 | python-cloudpickle |
| 15672 | python-psutil |
| 15673 | python-drmaa |
| 15674 | python-pyzmq)) |
| 15675 | (home-page "https://github.com/pygridtools/gridmap") |
| 15676 | (synopsis "Create jobs on a cluster directly from Python") |
| 15677 | (description |
| 15678 | "Gridmap is a Python package to allow you to easily create jobs on the |
| 15679 | cluster directly from Python. You can directly map Python functions onto the |
| 15680 | cluster without needing to write any wrapper code yourself.") |
| 15681 | (license license:gpl3+))) |
| 15682 | |
| 15683 | (define-public python-honcho |
| 15684 | (package |
| 15685 | (name "python-honcho") |
| 15686 | (version "2.0.0") |
| 15687 | (source |
| 15688 | (origin |
| 15689 | (method git-fetch) |
| 15690 | (uri (git-reference |
| 15691 | (url "https://github.com/nickstenning/honcho") |
| 15692 | (commit (string-append "v" version)))) |
| 15693 | (file-name (git-file-name name version)) |
| 15694 | (sha256 |
| 15695 | (base32 "0hdp4cr6imxrlyg9x9xj5r6qdmgi63ffvmqjrr1kjs3qapan6s4l")))) |
| 15696 | (build-system pyproject-build-system) |
| 15697 | (arguments |
| 15698 | ;; Tests below fail with the error |
| 15699 | ;; ValueError: The 'honcho.export.xxx' package was not installed |
| 15700 | ;; in a way that PackageLoader understands. |
| 15701 | ;; Probably safe because it's testing for different init systems. |
| 15702 | (list #:test-flags #~(list "--ignore" "tests/integration/test_export.py" |
| 15703 | "--ignore" "tests/test_export_runit.py" |
| 15704 | "--ignore" "tests/test_export_supervisord.py" |
| 15705 | "--ignore" "tests/test_export_systemd.py" |
| 15706 | "--ignore" "tests/test_export_upstart.py"))) |
| 15707 | (native-inputs |
| 15708 | (list python-jinja2 python-mock python-pytest python-setuptools python-wheel)) |
| 15709 | (propagated-inputs |
| 15710 | (list python-colorama)) |
| 15711 | (home-page "https://github.com/nickstenning/honcho") |
| 15712 | (synopsis "Manage Procfile-based applications") |
| 15713 | (description |
| 15714 | "A Procfile is a file which describes how to run an application |
| 15715 | consisting of several processes. honcho starts all listed processes. |
| 15716 | The output of all running processes is collected by honcho and |
| 15717 | displayed.") |
| 15718 | (license license:expat))) |
| 15719 | |
| 15720 | (define-public python-hsluv |
| 15721 | (package |
| 15722 | (name "python-hsluv") |
| 15723 | (version "5.0.4") |
| 15724 | (source |
| 15725 | (origin |
| 15726 | (method url-fetch) |
| 15727 | (uri (pypi-uri "hsluv" version)) |
| 15728 | (sha256 |
| 15729 | (base32 "0bmpd7qxcvin8szblilxmw50v7mygf6a6i180h82123s893gk092")))) |
| 15730 | (build-system pyproject-build-system) |
| 15731 | (native-inputs |
| 15732 | (list python-pytest python-setuptools)) |
| 15733 | (home-page "https://www.hsluv.org") |
| 15734 | (synopsis "Human-friendly HSL colour space implemented in Python") |
| 15735 | (description |
| 15736 | "Human-friendly @acronym{Hue Saturation Lightness,HSL}. HSLuv extends |
| 15737 | @url{http://en.wikipedia.org/wiki/CIELUV,CIELUV} with a new saturation |
| 15738 | component that allows you to span all the available chroma as a neat |
| 15739 | percentage.") |
| 15740 | (license license:expat))) |
| 15741 | |
| 15742 | (define-public python-pebble |
| 15743 | (package |
| 15744 | (name "python-pebble") |
| 15745 | (version "5.1.3") |
| 15746 | (source |
| 15747 | (origin |
| 15748 | (method git-fetch) |
| 15749 | (uri (git-reference |
| 15750 | (url "https://github.com/noxdafox/pebble") |
| 15751 | (commit version))) |
| 15752 | (file-name (git-file-name name version)) |
| 15753 | (sha256 |
| 15754 | (base32 "1x3rvgm5b0g33xlh8w68r50zwqrdwjafwri8y2lzxny8y4i01ffp")))) |
| 15755 | (build-system pyproject-build-system) |
| 15756 | (native-inputs (list python-pytest python-setuptools)) |
| 15757 | (home-page "https://github.com/noxdafox/pebble") |
| 15758 | (synopsis "Threading and multiprocessing for Python") |
| 15759 | (description |
| 15760 | "Pebble aims to help manage threads and processes in an easier way. It |
| 15761 | wraps Python's standard library threading and multiprocessing objects.") |
| 15762 | (license license:lgpl3+))) |
| 15763 | |
| 15764 | (define-public python-pexpect |
| 15765 | (package |
| 15766 | (name "python-pexpect") |
| 15767 | (version "4.9.0") |
| 15768 | (source |
| 15769 | (origin |
| 15770 | (method url-fetch) |
| 15771 | (uri (pypi-uri "pexpect" version)) |
| 15772 | (sha256 |
| 15773 | (base32 "03ykxacc64ijldbpa31v5lxw93an0z0xmhm21q2i369w7w942zgf")))) |
| 15774 | (build-system pyproject-build-system) |
| 15775 | (arguments |
| 15776 | (list |
| 15777 | #:test-flags |
| 15778 | ;; The socket tests can hang (most often, but not only, when run in |
| 15779 | ;; parallel, see: <https://github.com/pexpect/pexpect/issues/809>) |
| 15780 | #~(list "--ignore=tests/test_socket.py" |
| 15781 | "--ignore=tests/test_socket_fd.py" |
| 15782 | "-k" (string-join |
| 15783 | (list |
| 15784 | ;; Disable failing test, see |
| 15785 | ;; <https://github.com/pexpect/pexpect/issues/568>. |
| 15786 | "not test_bash" |
| 15787 | ;; Fails with attempt to find OpenSSL. |
| 15788 | "test_large_stdout_stream" |
| 15789 | ;; Tests fail while trying to find |
| 15790 | ;; tmp-pexpect-xxxxxxxxxxxx directories. |
| 15791 | "test_run_uses_env" |
| 15792 | "test_run_uses_env_path" |
| 15793 | "test_run_uses_env_path_over_path" |
| 15794 | "test_spawn_uses_env" |
| 15795 | ;; Fails with assertion error: assert 0 == 500 |
| 15796 | "test_before_across_chunks" |
| 15797 | ;; Bash is enough for tests. |
| 15798 | "test_zsh") |
| 15799 | " and not ")) |
| 15800 | #:phases |
| 15801 | #~(modify-phases %standard-phases |
| 15802 | (add-before 'check 'prepare-tests |
| 15803 | (lambda _ |
| 15804 | (substitute* (find-files "tests") |
| 15805 | (("/bin/bash") (which "bash")) |
| 15806 | (("/bin/echo") (which "echo")) |
| 15807 | (("/bin/ls") (which "ls")) |
| 15808 | (("/bin/which") (which "which")) |
| 15809 | ;; Many tests try to use the /bin directory which is not |
| 15810 | ;; present in the build environment. Use one that's non-empty |
| 15811 | ;; and unlikely to change. |
| 15812 | (("/bin'") "/dev'"))))))) |
| 15813 | (native-inputs |
| 15814 | (list bash ;full Bash for 'test_replwrap.py' |
| 15815 | man-db |
| 15816 | python-pytest |
| 15817 | python-setuptools |
| 15818 | which)) |
| 15819 | (propagated-inputs |
| 15820 | (list python-ptyprocess)) |
| 15821 | (home-page "https://pexpect.readthedocs.org/") |
| 15822 | (synopsis "Controlling interactive console applications") |
| 15823 | (description |
| 15824 | "Pexpect is a pure Python module for spawning child applications; |
| 15825 | controlling them; and responding to expected patterns in their output. Pexpect |
| 15826 | works like Don Libes’ Expect. Pexpect allows your script to spawn a child |
| 15827 | application and control it as if a human were typing commands.") |
| 15828 | (license license:isc))) |
| 15829 | |
| 15830 | (define-public python-sexpdata |
| 15831 | (package |
| 15832 | (name "python-sexpdata") |
| 15833 | (version "1.0.2") |
| 15834 | (source |
| 15835 | (origin |
| 15836 | (method url-fetch) |
| 15837 | (uri (pypi-uri "sexpdata" version)) |
| 15838 | (sha256 |
| 15839 | (base32 |
| 15840 | "02f1v96wzqf3jgwbp1fvankszkzvyff53fa4ks7nyxpnc41ppdlj")))) |
| 15841 | (build-system pyproject-build-system) |
| 15842 | (arguments |
| 15843 | (list #:tests? #f)) ; no tests |
| 15844 | (native-inputs (list python-setuptools python-wheel)) |
| 15845 | (home-page "https://github.com/jd-boyd/sexpdata") |
| 15846 | (synopsis "S-expression parser for Python") |
| 15847 | (description |
| 15848 | "Sexpdata is an S-expression parser/serializer. It has load and dump |
| 15849 | functions like pickle, json or PyYAML module.") |
| 15850 | (license license:bsd-3))) |
| 15851 | |
| 15852 | (define-public python-pathable |
| 15853 | (package |
| 15854 | (name "python-pathable") |
| 15855 | (version "0.4.3") |
| 15856 | (source |
| 15857 | (origin |
| 15858 | (method url-fetch) |
| 15859 | (uri (pypi-uri "pathable" version)) |
| 15860 | (sha256 |
| 15861 | (base32 "1ayw9jzlw0qrz51rcfbba00xqq0c7vs3lgwrib67c1z5bcqrv1jw")))) |
| 15862 | (build-system pyproject-build-system) |
| 15863 | (arguments (list #:tests? #false)) ;there are none |
| 15864 | (native-inputs (list python-poetry-core)) |
| 15865 | (home-page "https://github.com/p1c2u/pathable") |
| 15866 | (synopsis "Object-oriented paths") |
| 15867 | (description "With this package you can traverse resources like paths and |
| 15868 | access resources on demand with separate accessor layer.") |
| 15869 | (license license:asl2.0))) |
| 15870 | |
| 15871 | (define-public python-importlib-resources |
| 15872 | (package |
| 15873 | (name "python-importlib-resources") |
| 15874 | (version "6.5.2") |
| 15875 | (source (origin |
| 15876 | (method url-fetch) |
| 15877 | (uri (pypi-uri "importlib_resources" version)) |
| 15878 | (sha256 |
| 15879 | (base32 |
| 15880 | "0b7dizkjyjpwqm2dsmb40fy7iskwl3xv93yr9622ik2vxynqfpqq")))) |
| 15881 | (build-system pyproject-build-system) |
| 15882 | (native-inputs |
| 15883 | (list python-jaraco-test |
| 15884 | python-jaraco-collections |
| 15885 | python-pytest |
| 15886 | python-setuptools |
| 15887 | python-setuptools-scm |
| 15888 | python-zipp)) |
| 15889 | (home-page "https://importlib-resources.readthedocs.io/") |
| 15890 | (synopsis "Read resources from Python packages") |
| 15891 | (description |
| 15892 | "@code{importlib_resources} is a backport of Python 3's standard library |
| 15893 | @code{importlib.resources} module for Python 2.7, and Python 3.") |
| 15894 | (license license:asl2.0))) |
| 15895 | |
| 15896 | (define-public python-importlib-metadata |
| 15897 | (package |
| 15898 | (name "python-importlib-metadata") |
| 15899 | (version "8.7.0") |
| 15900 | (source |
| 15901 | (origin |
| 15902 | (method url-fetch) |
| 15903 | (uri (pypi-uri "importlib_metadata" version)) |
| 15904 | (sha256 |
| 15905 | (base32 |
| 15906 | "004h71gl22rg57wxd0hgy72pdksn62ng4waldjhhm29v4anq2fyi")))) |
| 15907 | (build-system pyproject-build-system) |
| 15908 | (arguments |
| 15909 | (list #:test-flags #~(list "tests"))) |
| 15910 | (native-inputs |
| 15911 | (list python-jaraco-test |
| 15912 | python-packaging-bootstrap |
| 15913 | python-pyfakefs |
| 15914 | python-pytest-bootstrap |
| 15915 | python-setuptools |
| 15916 | python-setuptools-scm)) |
| 15917 | (propagated-inputs |
| 15918 | (list python-zipp)) |
| 15919 | (home-page "https://importlib-metadata.readthedocs.io/") |
| 15920 | (synopsis "Read metadata from Python packages") |
| 15921 | (description |
| 15922 | "@code{importlib_metadata} is a library which provides an API for |
| 15923 | accessing an installed Python package's metadata, such as its entry points or |
| 15924 | its top-level name. This functionality intends to replace most uses of |
| 15925 | @code{pkg_resources} entry point API and metadata API. Along with |
| 15926 | @code{importlib.resources} in Python 3.7 and newer, this can eliminate the |
| 15927 | need to use the older and less efficient @code{pkg_resources} package.") |
| 15928 | (license license:asl2.0))) |
| 15929 | |
| 15930 | (define-public python-importlib-metadata-argparse-version |
| 15931 | (package |
| 15932 | (name "python-importlib-metadata-argparse-version") |
| 15933 | (version "2.0.1") |
| 15934 | (home-page |
| 15935 | "https://github.com/mondeja/importlib-metadata-argparse-version") |
| 15936 | (source |
| 15937 | (origin |
| 15938 | (method git-fetch) |
| 15939 | (uri (git-reference |
| 15940 | (url home-page) |
| 15941 | (commit (string-append "v" version)))) |
| 15942 | (file-name (git-file-name name version)) |
| 15943 | (sha256 |
| 15944 | (base32 "02jbfv7xkd4lhdcsr232b6x8xcpv93micz7848fhi5946grvm1j2")))) |
| 15945 | (build-system pyproject-build-system) |
| 15946 | (native-inputs (list python-pytest python-hatchling)) |
| 15947 | (synopsis "Get Python package version more efficiently") |
| 15948 | (description |
| 15949 | "This package provides an @code{argparse} action to define CLI version |
| 15950 | with a delayed call to @code{importlib.metadata}, avoiding to load this module |
| 15951 | when not needed.") |
| 15952 | (license license:bsd-3))) |
| 15953 | |
| 15954 | (define-public python-importmagic |
| 15955 | (package |
| 15956 | (name "python-importmagic") |
| 15957 | (version "0.1.7") |
| 15958 | (source |
| 15959 | (origin |
| 15960 | (method git-fetch) |
| 15961 | (uri (git-reference |
| 15962 | (url "https://github.com/alecthomas/importmagic") |
| 15963 | (commit version))) |
| 15964 | (file-name (git-file-name name version)) |
| 15965 | (sha256 |
| 15966 | (base32 "1asijinpirq9ips9drsibyg2bj6qbpryz27n91akhvmzn78pbz7s")))) |
| 15967 | (build-system pyproject-build-system) |
| 15968 | (native-inputs (list python-pytest python-setuptools)) |
| 15969 | (home-page "https://github.com/alecthomas/importmagic") |
| 15970 | (synopsis "Library for adding, removing and managing Python imports") |
| 15971 | (description |
| 15972 | "Importmagic is a Python library for automatically managing imports by |
| 15973 | finding unresolved symbols in Python code and their corresponding imports.") |
| 15974 | (license license:bsd-3))) |
| 15975 | |
| 15976 | (define-public python-inotify-simple |
| 15977 | (package |
| 15978 | (name "python-inotify-simple") |
| 15979 | (version "1.3.5") |
| 15980 | (source |
| 15981 | (origin |
| 15982 | (method git-fetch) |
| 15983 | (uri (git-reference |
| 15984 | (url "https://github.com/chrisjbillington/inotify_simple") |
| 15985 | (commit version))) |
| 15986 | (file-name (git-file-name name version)) |
| 15987 | (sha256 |
| 15988 | (base32 "1dv9svrcz31acyq9smjlnw75xv3x5wpn5h6s8j8h0vrqyl3d7l05")))) |
| 15989 | (build-system pyproject-build-system) |
| 15990 | (arguments |
| 15991 | (list |
| 15992 | #:test-backend #~'custom |
| 15993 | #:test-flags #~(list "example.py"))) |
| 15994 | (native-inputs (list python-setuptools)) |
| 15995 | (home-page "https://github.com/chrisjbillington/inotify_simple") |
| 15996 | (synopsis "Simple wrapper around inotify library") |
| 15997 | (description |
| 15998 | "@code{inotify-simple} is a simple wrapper around inotify library.") |
| 15999 | (license license:bsd-3))) |
| 16000 | |
| 16001 | (define-public python-interface-meta |
| 16002 | (package |
| 16003 | (name "python-interface-meta") |
| 16004 | (version "1.3.0") |
| 16005 | (source |
| 16006 | (origin |
| 16007 | (method url-fetch) |
| 16008 | (uri (pypi-uri "interface_meta" version)) |
| 16009 | (sha256 |
| 16010 | (base32 "18brkmz2ssjikkrkb23cwccp683yi6y1alfdbmjvjgxpppw96i4a")))) |
| 16011 | (build-system pyproject-build-system) |
| 16012 | (native-inputs (list python-poetry-core python-pytest)) |
| 16013 | (home-page "https://github.com/matthewwardrop/interface_meta") |
| 16014 | (synopsis |
| 16015 | "API for enforced method signatures and consistent documentation") |
| 16016 | (description |
| 16017 | "This package provides a convenient way to expose an extensible API with |
| 16018 | enforced method signatures and consistent documentation.") |
| 16019 | (license license:expat))) |
| 16020 | |
| 16021 | (define-public python-jaraco-itertools |
| 16022 | (package |
| 16023 | (name "python-jaraco-itertools") |
| 16024 | (version "6.4.3") |
| 16025 | (source |
| 16026 | (origin |
| 16027 | (method git-fetch) |
| 16028 | (uri (git-reference |
| 16029 | (url "https://github.com/jaraco/jaraco.itertools") |
| 16030 | (commit (string-append "v" version)))) |
| 16031 | (file-name (git-file-name name version)) |
| 16032 | (sha256 |
| 16033 | (base32 "0nf674j28nlqszcvjhjdgbmy92xbwhylvg2rlic11w28iz4s8d9f")))) |
| 16034 | (build-system pyproject-build-system) |
| 16035 | (arguments |
| 16036 | (list #:tests? #f)) ;no tests |
| 16037 | (native-inputs |
| 16038 | (list python-setuptools |
| 16039 | python-setuptools-scm)) |
| 16040 | (propagated-inputs |
| 16041 | (list python-inflect |
| 16042 | python-more-itertools)) |
| 16043 | (home-page "https://github.com/jaraco/jaraco.itertools") |
| 16044 | (synopsis "Tools for working with iterables") |
| 16045 | (description |
| 16046 | "This package provides an utility collection based on no longer |
| 16047 | maintained @code{jaraco.util}.") |
| 16048 | (license license:expat))) |
| 16049 | |
| 16050 | (define-public python-jaraco-logging |
| 16051 | (package |
| 16052 | (name "python-jaraco-logging") |
| 16053 | (version "3.4.0") |
| 16054 | (source |
| 16055 | (origin |
| 16056 | (method git-fetch) |
| 16057 | (uri (git-reference |
| 16058 | (url "https://github.com/jaraco/jaraco.logging") |
| 16059 | (commit (string-append "v" version)))) |
| 16060 | (file-name (git-file-name name version)) |
| 16061 | (sha256 |
| 16062 | (base32 "0c13wxbmk0rl1jd0fxp3p7qpsps8lj6p2wlkny2ng5z4qn21ahhi")))) |
| 16063 | (build-system pyproject-build-system) |
| 16064 | (native-inputs |
| 16065 | (list python-pytest |
| 16066 | python-setuptools |
| 16067 | python-setuptools-scm)) |
| 16068 | (propagated-inputs |
| 16069 | (list python-tempora)) |
| 16070 | (home-page "https://github.com/jaraco/jaraco.logging") |
| 16071 | (synopsis "Support for Python's logging facility") |
| 16072 | (description |
| 16073 | "This package allows soliciting log-level info from command-line |
| 16074 | parameters.") |
| 16075 | (license license:expat))) |
| 16076 | |
| 16077 | (define-public python-jaraco-packaging |
| 16078 | (package |
| 16079 | (name "python-jaraco-packaging") |
| 16080 | (version "9.4.0") ;the latest version compatible with [email protected] |
| 16081 | (source |
| 16082 | (origin |
| 16083 | (method url-fetch) |
| 16084 | (uri (pypi-uri "jaraco.packaging" version)) |
| 16085 | (sha256 |
| 16086 | (base32 |
| 16087 | "1djpwmw2gmb6i9by1bc4lh4qlkvifgsqfj5alb9xz7pa80fcm416")))) |
| 16088 | (build-system pyproject-build-system) |
| 16089 | (arguments |
| 16090 | (list #:tests? #f)) ;no tests in PyPI archive |
| 16091 | (native-inputs |
| 16092 | (list python-setuptools |
| 16093 | python-setuptools-scm)) |
| 16094 | (propagated-inputs |
| 16095 | (list python-pypa-build |
| 16096 | python-virtualenv |
| 16097 | python-domdf-python-tools |
| 16098 | python-jaraco-context |
| 16099 | python-sphinx)) |
| 16100 | (home-page "https://github.com/jaraco/jaraco.packaging") |
| 16101 | (synopsis "Tools to supplement packaging Python releases") |
| 16102 | (description |
| 16103 | "This package provides various tools to supplement packaging Python |
| 16104 | releases.") |
| 16105 | (license license:expat))) |
| 16106 | |
| 16107 | (define-public python-jaraco-vcs |
| 16108 | (package |
| 16109 | (name "python-jaraco-vcs") |
| 16110 | (version "2.4.1") |
| 16111 | (source |
| 16112 | (origin |
| 16113 | (method git-fetch) |
| 16114 | (uri (git-reference (url "https://github.com/jaraco/jaraco.vcs") |
| 16115 | (commit (string-append "v" version)))) |
| 16116 | (file-name (git-file-name name version)) |
| 16117 | (sha256 (base32 "1n9f0l4zp8dbbq2ha93bd9z6gb9y7gsmbd4jkl5gcm51qpsq4vpm")))) |
| 16118 | (build-system pyproject-build-system) |
| 16119 | (arguments |
| 16120 | (list |
| 16121 | #:test-flags |
| 16122 | ;; Ignore doctests. |
| 16123 | #~(list "--ignore-glob=jaraco/vcs/*.py"))) |
| 16124 | (propagated-inputs (list python-jaraco-classes |
| 16125 | python-jaraco-path |
| 16126 | python-jaraco-versioning |
| 16127 | python-more-itertools |
| 16128 | python-packaging |
| 16129 | python-dateutil |
| 16130 | python-tempora)) |
| 16131 | (native-inputs (list python-pygments |
| 16132 | python-pytest |
| 16133 | python-pytest-home |
| 16134 | python-setuptools |
| 16135 | python-setuptools-scm)) |
| 16136 | (home-page "https://github.com/jaraco/jaraco.vcs") |
| 16137 | (synopsis "Utilities for working with VCS repositories") |
| 16138 | (description |
| 16139 | "This package provides facilities for working with VCS repositories in |
| 16140 | Python.") |
| 16141 | (license license:expat))) |
| 16142 | |
| 16143 | (define-public python-jaraco-versioning |
| 16144 | (package |
| 16145 | (name "python-jaraco-versioning") |
| 16146 | (version "1.1.0") |
| 16147 | (source |
| 16148 | (origin |
| 16149 | (method git-fetch) |
| 16150 | (uri (git-reference |
| 16151 | (url "https://github.com/jaraco/jaraco.versioning") |
| 16152 | (commit (string-append "v" version)))) |
| 16153 | (file-name (git-file-name name version)) |
| 16154 | (sha256 |
| 16155 | (base32 "12svnpa5sl3r5lci9bybzy5gb8pd4clfkl65x5hsap00ada2w91r")))) |
| 16156 | (build-system pyproject-build-system) |
| 16157 | (arguments |
| 16158 | (list |
| 16159 | #:phases |
| 16160 | #~(modify-phases %standard-phases |
| 16161 | ;; doctest started failing with python-packaging 26.2 |
| 16162 | (add-after 'unpack 'fix-doc-test |
| 16163 | (lambda _ |
| 16164 | (substitute* "jaraco/versioning.py" |
| 16165 | (("<Version") "<SummableVersion"))))))) |
| 16166 | (propagated-inputs (list python-packaging)) |
| 16167 | (native-inputs |
| 16168 | (list python-pytest python-setuptools python-setuptools-scm)) |
| 16169 | (home-page "https://github.com/jaraco/jaraco.versioning") |
| 16170 | (synopsis "Version manipulation utils") |
| 16171 | (description |
| 16172 | "This package builds upon @code{python-packaging} to provide more |
| 16173 | sophisticated version manipulation.") |
| 16174 | (license license:expat))) |
| 16175 | |
| 16176 | (define-public python-simplegeneric |
| 16177 | (package |
| 16178 | (name "python-simplegeneric") |
| 16179 | (version "0.8.1") |
| 16180 | (source |
| 16181 | (origin |
| 16182 | (method url-fetch) |
| 16183 | (uri (pypi-uri "simplegeneric" version ".zip")) |
| 16184 | (sha256 |
| 16185 | (base32 "0wwi1c6md4vkbcsfsf8dklf3vr4mcdj4mpxkanwgb6jb1432x5yw")))) |
| 16186 | (build-system pyproject-build-system) |
| 16187 | (arguments |
| 16188 | (list |
| 16189 | #:test-backend #~'custom |
| 16190 | #:test-flags #~(list "-m" "simplegeneric"))) |
| 16191 | (native-inputs |
| 16192 | (list unzip python-setuptools)) |
| 16193 | (home-page "https://cheeseshop.python.org/pypi/simplegeneric") |
| 16194 | (synopsis "Python module for simple generic functions") |
| 16195 | (description |
| 16196 | "The simplegeneric module lets you define simple single-dispatch generic |
| 16197 | functions, akin to Python’s built-in generic functions like @code{len()}, |
| 16198 | @code{iter()} and so on. However, instead of using specially-named methods, |
| 16199 | these generic functions use simple lookup tables, akin to those used by |
| 16200 | e.g. @code{pickle.dump()} and other generic functions found in the Python |
| 16201 | standard library.") |
| 16202 | (license license:zpl2.1))) |
| 16203 | |
| 16204 | (define-public python-ipython-genutils |
| 16205 | ;; TODO: This package is retired, check if can be removed, see description. |
| 16206 | (package |
| 16207 | (name "python-ipython-genutils") |
| 16208 | (version "0.1.0") |
| 16209 | (source |
| 16210 | (origin |
| 16211 | (method url-fetch) |
| 16212 | (uri (pypi-uri "ipython_genutils" version)) |
| 16213 | (sha256 |
| 16214 | (base32 "19l2pp1c64ansr89l3cqh19jdi2ixhssdzx0vz4n6r52a6i281is")))) |
| 16215 | (build-system pyproject-build-system) |
| 16216 | (arguments `(#:tests? #f)) ; no tests |
| 16217 | (native-inputs |
| 16218 | (list python-setuptools)) |
| 16219 | (home-page "https://ipython.org") |
| 16220 | (synopsis "Vestigial utilities from IPython") |
| 16221 | (description |
| 16222 | "This package provides retired utilities from IPython. No packages |
| 16223 | outside IPython/Jupyter should depend on it. |
| 16224 | |
| 16225 | This package shouldn't exist. It contains some common utilities shared by |
| 16226 | Jupyter and IPython projects during The Big Split. As soon as possible, those |
| 16227 | packages will remove their dependency on this, and this package will go |
| 16228 | away.") |
| 16229 | (license license:bsd-3))) |
| 16230 | |
| 16231 | ;;; Variant used to break a cycle with python-ipykernel. |
| 16232 | (define-public python-ipyparallel-bootstrap |
| 16233 | (hidden-package |
| 16234 | (package |
| 16235 | (name "python-ipyparallel-bootstrap") |
| 16236 | (version "9.0.1") |
| 16237 | (source |
| 16238 | (origin |
| 16239 | (method url-fetch) |
| 16240 | (uri (pypi-uri "ipyparallel" version)) |
| 16241 | (sha256 |
| 16242 | (base32 "177jk2g8srsddgyb4djbyci93v766vzrnqzzpd7ski804anjqn9f")))) |
| 16243 | (build-system pyproject-build-system) |
| 16244 | (arguments |
| 16245 | (list |
| 16246 | #:tests? #f |
| 16247 | #:phases #~(modify-phases %standard-phases |
| 16248 | ;; The python-ipykernel is normally propagated but is |
| 16249 | ;; removed from this package to break the cycle. |
| 16250 | (delete 'sanity-check)))) |
| 16251 | (native-inputs |
| 16252 | (list python-hatchling)) |
| 16253 | (propagated-inputs |
| 16254 | (list python-dateutil |
| 16255 | python-decorator |
| 16256 | python-entrypoints |
| 16257 | python-ipython |
| 16258 | ;; python-ipykernel is omitted here to break a cycle. |
| 16259 | python-jupyter-client-bootstrap |
| 16260 | python-psutil |
| 16261 | python-pyzmq |
| 16262 | python-tornado |
| 16263 | python-tqdm |
| 16264 | python-traitlets)) |
| 16265 | (home-page "https://ipython.org/") |
| 16266 | (synopsis "Interactive Parallel Computing with IPython") |
| 16267 | (description |
| 16268 | "@code{ipyparallel} is a Python package and collection of CLI scripts |
| 16269 | for controlling clusters for Jupyter. @code{ipyparallel} contains the |
| 16270 | following CLI scripts: |
| 16271 | @enumerate |
| 16272 | @item ipcluster - start/stop a cluster |
| 16273 | @item ipcontroller - start a scheduler |
| 16274 | @item ipengine - start an engine |
| 16275 | @end enumerate") |
| 16276 | (license license:bsd-3)))) |
| 16277 | |
| 16278 | (define-public python-ipyparallel |
| 16279 | (package |
| 16280 | (inherit python-ipyparallel-bootstrap) |
| 16281 | (name "python-ipyparallel") |
| 16282 | (arguments |
| 16283 | (list |
| 16284 | #:test-flags |
| 16285 | ;; Disable warning because DeprecationWarnings make tests fail. |
| 16286 | #~(list "-p" "no:warnings" "--pyargs" "ipyparallel"))) |
| 16287 | (native-inputs |
| 16288 | (modify-inputs native-inputs |
| 16289 | (append python-ipython |
| 16290 | python-pytest |
| 16291 | python-pytest-asyncio |
| 16292 | python-pytest-tornado |
| 16293 | python-testpath))) |
| 16294 | (propagated-inputs |
| 16295 | (modify-inputs propagated-inputs |
| 16296 | (replace "python-jupyter-client-bootstrap" python-jupyter-client) |
| 16297 | (append python-ipykernel))) |
| 16298 | (properties (alist-delete 'hidden? (package-properties |
| 16299 | python-ipyparallel-bootstrap))))) |
| 16300 | |
| 16301 | ;; TODO: Package python-jupysql which is the maintained fork of this one. |
| 16302 | (define-public python-ipython-sql |
| 16303 | (package |
| 16304 | (name "python-ipython-sql") |
| 16305 | (properties '((commit . "e21bc64e172270311d9103602e1c2ec1bcdd5aa8") |
| 16306 | (revision . "0"))) |
| 16307 | (version (git-version "0.5.0" |
| 16308 | (assoc-ref properties 'revision) |
| 16309 | (assoc-ref properties 'commit))) |
| 16310 | (source |
| 16311 | (origin |
| 16312 | (method git-fetch) |
| 16313 | (uri (git-reference |
| 16314 | (url "https://github.com/catherinedevlin/ipython-sql") |
| 16315 | (commit (assoc-ref properties 'commit)))) |
| 16316 | (file-name (git-file-name name version)) |
| 16317 | (sha256 |
| 16318 | (base32 "0palwgr7lnar8ykifzhf1qach206bf1xa1zkji2adk9pr9ajsiix")))) |
| 16319 | (build-system pyproject-build-system) |
| 16320 | (arguments |
| 16321 | (list #:tests? #f ;Fail because of prettytable. |
| 16322 | #:phases |
| 16323 | #~(modify-phases %standard-phases |
| 16324 | (replace 'check |
| 16325 | (lambda* (#:key tests? #:allow-other-keys) |
| 16326 | (setenv "HOME" (getcwd)) |
| 16327 | (if tests? |
| 16328 | (invoke "ipython" "-c" |
| 16329 | "import pytest; pytest.main(['.'])") |
| 16330 | (format #t "test suite not run.~%"))))))) |
| 16331 | (native-inputs (list python-pytest python-setuptools)) |
| 16332 | (propagated-inputs |
| 16333 | (list python-ipython |
| 16334 | python-ipython-genutils |
| 16335 | python-prettytable |
| 16336 | python-sqlalchemy-2 |
| 16337 | python-sqlparse)) |
| 16338 | (home-page "https://github.com/catherinedevlin/ipython-sql") |
| 16339 | (synopsis "RDBMS access via IPython") |
| 16340 | (description "This library connects to a database, using SQLAlchemy URL |
| 16341 | connect strings, then issue SQL commands within IPython or IPython Notebook.") |
| 16342 | (license license:expat))) |
| 16343 | |
| 16344 | (define-public python-optree |
| 16345 | (package |
| 16346 | (name "python-optree") |
| 16347 | (version "0.14.0") |
| 16348 | (source |
| 16349 | (origin |
| 16350 | (method git-fetch) |
| 16351 | (uri (git-reference |
| 16352 | (url "https://github.com/metaopt/optree") |
| 16353 | (commit (string-append "v" version)))) |
| 16354 | (file-name (git-file-name name version)) |
| 16355 | (sha256 |
| 16356 | (base32 |
| 16357 | "17zph1jgzk0zaanj7057qj8x5cml8j66ip0xmlbwmq4396hmdlbs")))) |
| 16358 | (build-system pyproject-build-system) |
| 16359 | (arguments |
| 16360 | (list |
| 16361 | #:test-flags |
| 16362 | ;; These tests fails due to a circular import |
| 16363 | '`("-k" ,(string-append "not test_treespec_pickle_missing_registration" |
| 16364 | " and not test_import_no_warnings")))) |
| 16365 | (propagated-inputs (list python-typing-extensions)) |
| 16366 | (native-inputs |
| 16367 | (list python-pytest |
| 16368 | python-setuptools |
| 16369 | python-wheel |
| 16370 | cmake-minimal |
| 16371 | pybind11-2)) |
| 16372 | (home-page "https://github.com/metaopt/optree") |
| 16373 | (synopsis "Optimized PyTree Utilities") |
| 16374 | (description "This package contains operations on PyTrees (a tree made of |
| 16375 | container data structures in Python).") |
| 16376 | (license license:asl2.0))) |
| 16377 | |
| 16378 | (define-public python-backcall |
| 16379 | (package |
| 16380 | (name "python-backcall") |
| 16381 | (version "0.2.0") |
| 16382 | (source |
| 16383 | (origin |
| 16384 | (method git-fetch) |
| 16385 | (uri (git-reference |
| 16386 | (url "https://github.com/takluyver/backcall/") |
| 16387 | (commit version))) |
| 16388 | (file-name (git-file-name name version)) |
| 16389 | (sha256 |
| 16390 | (base32 "0br41zib1zph2jazanyjfl03rrb7frplk639fb10wvdqkrzgm6cd")))) |
| 16391 | (build-system pyproject-build-system) |
| 16392 | (native-inputs (list python-flit-core python-pytest)) |
| 16393 | (home-page "https://github.com/takluyver/backcall/") |
| 16394 | (synopsis "Specifications for callback functions passed in to an API") |
| 16395 | (description |
| 16396 | "If your code lets other people supply callback functions, it's important |
| 16397 | to specify the function signature you expect, and check that functions support |
| 16398 | that. Adding extra parameters later would break other peoples code unless |
| 16399 | you're careful. The @code{backcall} package provides a way of specifying the |
| 16400 | callback signature using a prototype function.") |
| 16401 | (license license:bsd-3))) |
| 16402 | |
| 16403 | (define-public python-pubmed-parser |
| 16404 | (package |
| 16405 | (name "python-pubmed-parser") |
| 16406 | (version "0.5.1") |
| 16407 | (source (origin |
| 16408 | (method git-fetch) |
| 16409 | (uri (git-reference |
| 16410 | (url "https://github.com/titipata/pubmed_parser") |
| 16411 | (commit version))) |
| 16412 | (file-name (git-file-name name version)) |
| 16413 | (sha256 |
| 16414 | (base32 |
| 16415 | "0hm520pxmbqlfckkdyccagmmsrqwdi0qdsc0l7rgp62jmsv7ppi5")))) |
| 16416 | (build-system pyproject-build-system) |
| 16417 | (arguments (list #:tests? #f)) ;; Tests require internet |
| 16418 | (native-inputs |
| 16419 | (list python-setuptools)) |
| 16420 | (propagated-inputs |
| 16421 | (list python-lxml |
| 16422 | python-numpy |
| 16423 | python-requests |
| 16424 | python-six ;hard dependency |
| 16425 | python-unidecode)) |
| 16426 | (home-page "https://titipata.github.io/pubmed_parser/") |
| 16427 | (synopsis "Parser for Pubmed Open-Access Subset and MEDLINE XML repository") |
| 16428 | (description |
| 16429 | "This package provides a Python parser for Pubmed Open-Access Subset and |
| 16430 | MEDLINE XML repository.") |
| 16431 | (license license:expat))) |
| 16432 | |
| 16433 | (define-public python-pure-eval |
| 16434 | (package |
| 16435 | (name "python-pure-eval") |
| 16436 | (version "0.2.3") |
| 16437 | (source |
| 16438 | (origin |
| 16439 | (method url-fetch) |
| 16440 | (uri (pypi-uri "pure_eval" version)) |
| 16441 | (sha256 |
| 16442 | (base32 "0hmg1qcv1h5k0dyj7sfp54ibnmjrvf4awdc6gin5fk2n80zrhkjz")))) |
| 16443 | (build-system pyproject-build-system) |
| 16444 | (native-inputs |
| 16445 | (list python-pytest |
| 16446 | python-setuptools |
| 16447 | python-setuptools-scm |
| 16448 | python-wheel)) |
| 16449 | (home-page "https://github.com/alexmojaki/pure_eval") |
| 16450 | (synopsis "Python library to evaluate abstract syntax tree nodes") |
| 16451 | (description "The @code{pure_eval} Python library can safely evaluate |
| 16452 | abstract syntax tree (AST) nodes without side effects.") |
| 16453 | (license license:expat))) |
| 16454 | |
| 16455 | (define-public python-puremagic |
| 16456 | (package |
| 16457 | (name "python-puremagic") |
| 16458 | (version "1.28") |
| 16459 | (source |
| 16460 | (origin |
| 16461 | (method git-fetch) ;no tests in PyPI archive |
| 16462 | (uri (git-reference |
| 16463 | (url "https://github.com/cdgriffith/puremagic") |
| 16464 | (commit version))) |
| 16465 | (file-name (git-file-name name version)) |
| 16466 | (sha256 |
| 16467 | (base32 "0sffrjjqh37ijwnggyvs2rfm4iwaz2m395wqg0x727wv8i0x3f3b")))) |
| 16468 | (build-system pyproject-build-system) |
| 16469 | (native-inputs |
| 16470 | (list python-pytest python-setuptools python-wheel)) |
| 16471 | (home-page "https://github.com/cdgriffith/puremagic") |
| 16472 | (synopsis "Pure Python implementation of magic file detection") |
| 16473 | (description |
| 16474 | "This package implements a functionality that will identify a file based |
| 16475 | off it's magic numbers.") |
| 16476 | (license license:expat))) |
| 16477 | |
| 16478 | (define-public python-ast-decompiler |
| 16479 | (package |
| 16480 | (name "python-ast-decompiler") |
| 16481 | (version "0.7.0") |
| 16482 | (source |
| 16483 | (origin |
| 16484 | (method url-fetch) |
| 16485 | (uri (pypi-uri "ast_decompiler" version)) |
| 16486 | (sha256 |
| 16487 | (base32 "0dw3fck4ajilphqw4hdpa8pmqxg3jfk2xkmjnk3kx5pqwl3sbhzg")) |
| 16488 | ;; We need to manually create an __init__.py file under the tests/ |
| 16489 | ;; directory, since it is not included in the distributed |
| 16490 | ;; version. (See: |
| 16491 | ;; https://github.com/JelleZijlstra/ast_decompiler/issues/52). |
| 16492 | (modules '((guix build utils))) |
| 16493 | (snippet '(call-with-output-file "tests/__init__.py" |
| 16494 | (const #t))))) |
| 16495 | (build-system pyproject-build-system) |
| 16496 | (native-inputs (list python-flit-core python-pytest)) |
| 16497 | (home-page "https://github.com/JelleZijlstra/ast_decompiler") |
| 16498 | (synopsis |
| 16499 | "Decompile an @acronym{AST, Abstract Syntax Tree} to Python code") |
| 16500 | (description |
| 16501 | "This library provides functionality to decompile @acronym{AST, Abstract |
| 16502 | Syntax Tree} objects, as generated by the standard library @code{ast} module, |
| 16503 | to Python code.") |
| 16504 | (license license:asl2.0))) |
| 16505 | |
| 16506 | (define-public python-asttokens |
| 16507 | (package |
| 16508 | (name "python-asttokens") |
| 16509 | (version "3.0.1") |
| 16510 | (source |
| 16511 | (origin |
| 16512 | (method git-fetch) |
| 16513 | (uri (git-reference |
| 16514 | (url "https://github.com/gristlabs/asttokens") |
| 16515 | (commit (string-append "v" version)))) |
| 16516 | (file-name (git-file-name name version)) |
| 16517 | (sha256 (base32 "1qqi7dygcv58czrsafc4gf41prfb6shd0crx33kd9wypk0v29afn")))) |
| 16518 | (build-system pyproject-build-system) |
| 16519 | (native-inputs |
| 16520 | (list python-astroid |
| 16521 | python-pytest |
| 16522 | python-setuptools |
| 16523 | python-setuptools-scm)) |
| 16524 | (home-page "https://github.com/gristlabs/asttokens") |
| 16525 | (synopsis "Python library to annotate abstract syntax trees") |
| 16526 | (description "The @code{asttokens} module annotates Python abstract syntax |
| 16527 | trees (ASTs) with the positions of tokens and text in the source code that |
| 16528 | generated them. It makes it possible for tools that work with logical AST |
| 16529 | nodes to find the particular text that resulted in those nodes, for example |
| 16530 | for automated refactoring or highlighting.") |
| 16531 | (license license:asl2.0))) |
| 16532 | |
| 16533 | (define-public python-littleutils |
| 16534 | (package |
| 16535 | (name "python-littleutils") |
| 16536 | (version "0.2.4") |
| 16537 | (source |
| 16538 | (origin |
| 16539 | (method url-fetch) |
| 16540 | (uri (pypi-uri "littleutils" version)) |
| 16541 | (sha256 |
| 16542 | (base32 "069xlm6vp1rprgrl4gsg3fd2vg0nzdw7v2qij7i45v8c080mp0y7")))) |
| 16543 | (build-system pyproject-build-system) |
| 16544 | (arguments (list #:tests? #f)) ;no tests in PyPIi archive or Git checkout |
| 16545 | (native-inputs |
| 16546 | (list python-setuptools |
| 16547 | python-setuptools-scm |
| 16548 | python-wheel)) |
| 16549 | (home-page "https://github.com/alexmojaki/littleutils") |
| 16550 | (synopsis "Python utility function collection") |
| 16551 | (description "@code{littleutils} is a small collection of Python utility |
| 16552 | functions, useful in the context of writing unit tests among other uses.") |
| 16553 | (license license:expat))) |
| 16554 | |
| 16555 | (define-public python-ipython |
| 16556 | (package |
| 16557 | (name "python-ipython") |
| 16558 | (version "9.8.0") |
| 16559 | (source |
| 16560 | (origin |
| 16561 | (method git-fetch) |
| 16562 | (uri (git-reference |
| 16563 | (url "https://github.com/ipython/ipython") |
| 16564 | (commit version))) |
| 16565 | (file-name (git-file-name name version)) |
| 16566 | (sha256 |
| 16567 | (base32 "01xislvlz33hlpbpf9cfgqabva3wzg49gb5437ypdzwldf8q25cg")))) |
| 16568 | (build-system pyproject-build-system) |
| 16569 | (arguments |
| 16570 | (list |
| 16571 | ;; tests: 1655 passed, 118 skipped, 3 xfailed, 7 warnings |
| 16572 | ;; with-extra: 1681 passed, 87 skipped, 5 deselected, 3 xfailed, 8 warnings |
| 16573 | #:test-backend #~'custom |
| 16574 | ;; XXX: It's a workaround to fix the error with module import |
| 16575 | ;; "_pytest.pathlib.ImportPathMismatchError:", see: |
| 16576 | ;; <https://codeberg.org/guix/guix/issues/2108>. |
| 16577 | #:test-flags |
| 16578 | #~(list "-m" "pytest" "-vv" |
| 16579 | "-k" (string-join |
| 16580 | ;; These need git. |
| 16581 | (list "not test_json_getsysinfo" |
| 16582 | "IPython.utils.sysinfo.sys_info" |
| 16583 | ;; Failed: DID NOT RAISE |
| 16584 | "test_timeit_raise_on_interrupt" |
| 16585 | "test_script_raise_on_interrupt" |
| 16586 | "test_time_raise_on_interrupt") |
| 16587 | " and not ")) |
| 16588 | #:phases |
| 16589 | #~(modify-phases %standard-phases |
| 16590 | (add-before 'check 'pre-check |
| 16591 | (lambda _ |
| 16592 | (setenv "HOME" "/tmp")))))) |
| 16593 | (propagated-inputs |
| 16594 | (list python-decorator |
| 16595 | python-ipython-pygments-lexers |
| 16596 | python-jedi |
| 16597 | python-matplotlib-inline |
| 16598 | python-pexpect |
| 16599 | python-prompt-toolkit |
| 16600 | python-pygments |
| 16601 | python-stack-data |
| 16602 | python-traitlets |
| 16603 | python-typing-extensions)) |
| 16604 | (native-inputs |
| 16605 | (list python-pytest |
| 16606 | python-pytest-asyncio |
| 16607 | python-setuptools |
| 16608 | python-testpath |
| 16609 | ;; [extra] |
| 16610 | ;; python-curio ;deprecated |
| 16611 | ;; python-ipykernel ;cycles |
| 16612 | ;; python-jupyter-ai ;not packaged |
| 16613 | python-matplotlib |
| 16614 | ;; python-nbclient ;cycles |
| 16615 | python-nbformat |
| 16616 | python-numpy |
| 16617 | python-pandas |
| 16618 | python-trio)) |
| 16619 | (home-page "https://ipython.org") |
| 16620 | (synopsis "IPython is a tool for interactive computing in Python") |
| 16621 | (description |
| 16622 | "IPython provides a rich architecture for interactive computing with: |
| 16623 | Powerful interactive shells, a browser-based notebook, support for interactive |
| 16624 | data visualization, embeddable interpreters and tools for parallel |
| 16625 | computing.") |
| 16626 | (properties '((cpe-name . "ipython"))) |
| 16627 | (license license:bsd-3))) |
| 16628 | |
| 16629 | (define-public python-ipython-documentation |
| 16630 | (package |
| 16631 | (inherit python-ipython) |
| 16632 | (name "python-ipython-documentation") |
| 16633 | (version (package-version python-ipython)) |
| 16634 | (arguments |
| 16635 | (list |
| 16636 | #:phases |
| 16637 | #~(modify-phases %standard-phases |
| 16638 | (add-after 'unpack 'set-pythonpath |
| 16639 | (lambda _ |
| 16640 | ;; Ensure this fixed (via the |
| 16641 | ;; "python-ipython-documentation-chars.patch" patch) copy of |
| 16642 | ;; IPython gets used. |
| 16643 | (setenv "PYTHONPATH" (string-append (getcwd))))) |
| 16644 | (delete 'build) |
| 16645 | (delete 'check) |
| 16646 | (replace 'install |
| 16647 | (lambda* (#:key outputs #:allow-other-keys) |
| 16648 | (let* ((data (string-append #$output "/share")) |
| 16649 | (doc (string-append data "/doc/" #$name "-" #$version)) |
| 16650 | (html (string-append doc "/html")) |
| 16651 | (info (string-append data "/info"))) |
| 16652 | (invoke "make" "-C" "docs" "info" "html" |
| 16653 | (string-append "SPHINXOPTS=-j" |
| 16654 | (number->string (parallel-job-count)))) |
| 16655 | (install-file "COPYING.rst" doc) |
| 16656 | (copy-recursively "examples" (string-append doc "/examples")) |
| 16657 | ;; Install HTML documentation. |
| 16658 | (copy-recursively "docs/build/html" html) |
| 16659 | ;; Likewise for the info manual. |
| 16660 | (install-file "docs/build/texinfo/ipython.info" info) |
| 16661 | (symlink (string-append html "/_images") |
| 16662 | (string-append info "/ipython-figures")))))))) |
| 16663 | (native-inputs |
| 16664 | (list graphviz |
| 16665 | python-docrepr |
| 16666 | python-ipykernel |
| 16667 | python-sphinx |
| 16668 | python-sphinx-rtd-theme |
| 16669 | python-sphinx-toml |
| 16670 | texinfo)))) |
| 16671 | |
| 16672 | ;; A bare minimal package, mainly to use in tests and reduce closure |
| 16673 | ;; size. Tests are left out in the main package to slim down native-inputs. |
| 16674 | (define-public python-ipython-minimal |
| 16675 | (package/inherit python-ipython |
| 16676 | (name "python-ipython-minimal") |
| 16677 | (arguments |
| 16678 | (list #:tests? #f)) |
| 16679 | (native-inputs |
| 16680 | (list python-setuptools)))) |
| 16681 | |
| 16682 | (define-public python-ipython-pygments-lexers |
| 16683 | (package |
| 16684 | (name "python-ipython-pygments-lexers") |
| 16685 | (version "1.1.1") |
| 16686 | (source |
| 16687 | (origin |
| 16688 | (method git-fetch) |
| 16689 | (uri (git-reference |
| 16690 | (url "https://github.com/ipython/ipython-pygments-lexers/") |
| 16691 | (commit version))) |
| 16692 | (file-name (git-file-name name version)) |
| 16693 | (sha256 |
| 16694 | (base32 "154vbpp9mkblsk1d0w8x8mybwgn5gz6mjgg77nqyn75ky0banrd7")))) |
| 16695 | (build-system pyproject-build-system) |
| 16696 | (propagated-inputs (list python-pygments)) |
| 16697 | (native-inputs (list python-flit-core python-pytest)) |
| 16698 | (home-page "https://github.com/ipython/ipython-pygments-lexers/") |
| 16699 | (synopsis "Plugin for IPython code sessions") |
| 16700 | (description |
| 16701 | "This package defines a variety of Pygments lexers for highlighting IPython |
| 16702 | code.") |
| 16703 | (license license:bsd-3))) |
| 16704 | |
| 16705 | (define-public python-pydbus |
| 16706 | (package |
| 16707 | (name "python-pydbus") |
| 16708 | (version "0.6.0") |
| 16709 | (source |
| 16710 | (origin |
| 16711 | (method url-fetch) |
| 16712 | (uri (pypi-uri "pydbus" version)) |
| 16713 | (sha256 |
| 16714 | (base32 "0b0gipvz7vcfa9ddmwq2jrx16d4apb0hdnl5q4i3h8jlzwp1c1s2")))) |
| 16715 | (build-system pyproject-build-system) |
| 16716 | (arguments |
| 16717 | (list #:tests? #f ; no tests in PyPI, git tests require running DBus |
| 16718 | #:phases |
| 16719 | #~(modify-phases %standard-phases |
| 16720 | (add-after 'unpack 'fix-comparability-with-pygobject |
| 16721 | (lambda _ |
| 16722 | (substitute* "pydbus/_inspect3.py" |
| 16723 | (("getargspec") |
| 16724 | "getfullargspec"))))))) |
| 16725 | (native-inputs |
| 16726 | (list python-setuptools |
| 16727 | python-wheel)) |
| 16728 | (propagated-inputs |
| 16729 | (list python-pygobject)) |
| 16730 | (home-page "https://github.com/LEW21/pydbus") |
| 16731 | (synopsis "Pythonic D-Bus library") |
| 16732 | (description |
| 16733 | "Pydbus provides a pythonic interface to the D-Bus message bus system. |
| 16734 | Pydbus can be used to access remote objects and also for object publication. |
| 16735 | It is based on PyGI, the Python GObject Introspection bindings, which is the |
| 16736 | recommended way to use GLib from Python.") |
| 16737 | (license license:lgpl2.1+))) |
| 16738 | |
| 16739 | (define-public python-dbus-1.2 |
| 16740 | (package |
| 16741 | (name "python-dbus") |
| 16742 | (version "1.2.18") |
| 16743 | (source |
| 16744 | (origin |
| 16745 | (method url-fetch) |
| 16746 | (uri (string-append "https://dbus.freedesktop.org/releases/dbus-python/" |
| 16747 | "dbus-python-" version ".tar.gz")) |
| 16748 | (sha256 |
| 16749 | (base32 "0q3jrw515z98mqdk9x822nd95rky455zz9876f1nqna5igkd3gcj")))) |
| 16750 | (build-system gnu-build-system) |
| 16751 | (native-inputs |
| 16752 | (list pkg-config |
| 16753 | python-setuptools)) |
| 16754 | (inputs |
| 16755 | `(("python" ,python-wrapper) |
| 16756 | ("dbus-glib" ,dbus-glib))) |
| 16757 | (synopsis "Python bindings for D-bus") |
| 16758 | (description "python-dbus provides bindings for libdbus, the reference |
| 16759 | implementation of D-Bus.") |
| 16760 | (home-page "https://www.freedesktop.org/wiki/Software/DBusBindings/") |
| 16761 | (license license:expat))) |
| 16762 | |
| 16763 | (define-public python-dasbus |
| 16764 | (package |
| 16765 | (name "python-dasbus") |
| 16766 | (version "1.7") |
| 16767 | (source |
| 16768 | (origin |
| 16769 | (method git-fetch) |
| 16770 | (uri (git-reference |
| 16771 | (url "https://github.com/dasbus-project/dasbus") |
| 16772 | (commit (string-append "v" version)))) |
| 16773 | (file-name (git-file-name name version)) |
| 16774 | (sha256 |
| 16775 | (base32 "1dii0skg7pqi4jhy1dkshqmn49i5ngq92sw7w7j4sxd3g8pjhj46")))) |
| 16776 | (build-system pyproject-build-system) |
| 16777 | (arguments |
| 16778 | (list |
| 16779 | #:phases |
| 16780 | #~(modify-phases %standard-phases |
| 16781 | (replace 'check |
| 16782 | (lambda* (#:key tests? (test-flags '()) #:allow-other-keys) |
| 16783 | (when tests? |
| 16784 | (apply invoke "dbus-launch" "pytest" "-vv" test-flags))))))) |
| 16785 | (native-inputs |
| 16786 | (list dbus |
| 16787 | python-hatchling |
| 16788 | python-pytest |
| 16789 | python-setuptools)) |
| 16790 | (propagated-inputs |
| 16791 | (list python-pygobject)) |
| 16792 | (home-page "https://dasbus.readthedocs.io/") |
| 16793 | (synopsis "DBus library in Python") |
| 16794 | (description |
| 16795 | "This DBus library is written in Python, based on GLib and inspired by |
| 16796 | @code{pydbus}.") |
| 16797 | (license license:lgpl2.1+))) |
| 16798 | |
| 16799 | (define-public python-notify2 |
| 16800 | (package |
| 16801 | (name "python-notify2") |
| 16802 | (version "0.3.1") |
| 16803 | (source |
| 16804 | (origin |
| 16805 | (method url-fetch) |
| 16806 | (uri (pypi-uri "notify2" version)) |
| 16807 | (sha256 |
| 16808 | (base32 |
| 16809 | "0z8rrv9rsg1r2qgh2dxj3dfj5xnki98kgi3w839kqby4a26i1yik")))) |
| 16810 | (build-system pyproject-build-system) |
| 16811 | (arguments (list #:tests? #f)) ; tests depend on system state |
| 16812 | (native-inputs (list python-setuptools)) |
| 16813 | (propagated-inputs (list python-dbus)) |
| 16814 | (home-page "https://bitbucket.org/takluyver/pynotify2") |
| 16815 | (synopsis "Python interface to D-Bus notifications") |
| 16816 | (description |
| 16817 | "Pynotify2 provides a Python interface for sending D-Bus notifications. |
| 16818 | It is a reimplementation of pynotify in pure Python, and an alternative to |
| 16819 | the GObject Introspection bindings to libnotify for non-GTK applications.") |
| 16820 | (license (list license:bsd-2 |
| 16821 | license:lgpl2.1+)))) |
| 16822 | |
| 16823 | ;; beautifulsoup4 has a totally different namespace than 3.x, |
| 16824 | ;; and pypi seems to put it under its own name, so I guess we should too |
| 16825 | (define-public python-beautifulsoup4 |
| 16826 | (package |
| 16827 | (name "python-beautifulsoup4") |
| 16828 | (version "4.14.3") |
| 16829 | (source |
| 16830 | (origin |
| 16831 | (method url-fetch) |
| 16832 | (uri (pypi-uri "beautifulsoup4" version)) |
| 16833 | (sha256 |
| 16834 | (base32 |
| 16835 | "11pvlxgxxn8bcgfsbbfrb9b9jw3ma7qggycycsx6ndbd332v34k2")))) |
| 16836 | (build-system pyproject-build-system) |
| 16837 | (native-inputs |
| 16838 | (list python-hatchling |
| 16839 | python-pytest)) |
| 16840 | (propagated-inputs |
| 16841 | (list python-soupsieve |
| 16842 | python-typing-extensions |
| 16843 | ;; [optional] |
| 16844 | python-cchardet |
| 16845 | python-chardet |
| 16846 | python-charset-normalizer |
| 16847 | python-html5lib |
| 16848 | python-lxml)) |
| 16849 | (home-page "https://www.crummy.com/software/BeautifulSoup/bs4/") |
| 16850 | (synopsis "Python screen-scraping library") |
| 16851 | (description |
| 16852 | "Beautiful Soup is a Python library designed for rapidly setting up |
| 16853 | screen-scraping projects. It offers Pythonic idioms for navigating, |
| 16854 | searching, and modifying a parse tree, providing a toolkit for |
| 16855 | dissecting a document and extracting what you need. It automatically |
| 16856 | converts incoming documents to Unicode and outgoing documents to UTF-8.") |
| 16857 | (license license:expat))) |
| 16858 | |
| 16859 | (define-public python-beautifulsoup4-bootstrap |
| 16860 | (hidden-package |
| 16861 | (package/inherit python-beautifulsoup4 |
| 16862 | (arguments |
| 16863 | (list #:tests? #f)) |
| 16864 | (native-inputs |
| 16865 | (list python-hatchling)) |
| 16866 | (propagated-inputs '())))) |
| 16867 | |
| 16868 | |
| 16869 | (define-public python-netifaces |
| 16870 | (package |
| 16871 | (name "python-netifaces") |
| 16872 | (version "0.11.0") |
| 16873 | (source |
| 16874 | (origin |
| 16875 | (method url-fetch) |
| 16876 | (uri (pypi-uri "netifaces" version)) |
| 16877 | (sha256 |
| 16878 | (base32 "0cnajf5rl4w1sa72j921scbigr6zndig56cq8ggpx45jdqa7jfh4")))) |
| 16879 | (build-system pyproject-build-system) |
| 16880 | (arguments |
| 16881 | (list |
| 16882 | #:test-backend #~'custom |
| 16883 | #:test-flags #~(list "test.py"))) |
| 16884 | (native-inputs (list python-setuptools)) |
| 16885 | (home-page "https://github.com/al45tair/netifaces") |
| 16886 | (synopsis "Python module for portable network interface information") |
| 16887 | (description |
| 16888 | "Netifaces is a Python module providing information on network |
| 16889 | interfaces in an easy and portable manner.") |
| 16890 | (license license:expat))) |
| 16891 | |
| 16892 | (define-public python-networkx |
| 16893 | (package |
| 16894 | (name "python-networkx") |
| 16895 | (version "3.4.2") |
| 16896 | (source |
| 16897 | (origin |
| 16898 | (method url-fetch) |
| 16899 | (uri (pypi-uri "networkx" version)) |
| 16900 | (sha256 |
| 16901 | (base32 "1qaks3c3h5qlw25z949q3plw8iwgm9h152kwnam64lwc89lkcz1h")))) |
| 16902 | (build-system pyproject-build-system) |
| 16903 | (arguments |
| 16904 | (list |
| 16905 | #:test-flags |
| 16906 | #~(list "--numprocesses" (number->string (parallel-job-count))))) |
| 16907 | (native-inputs |
| 16908 | (list python-pytest |
| 16909 | python-pytest-xdist |
| 16910 | python-setuptools |
| 16911 | python-wheel)) |
| 16912 | (propagated-inputs |
| 16913 | (list python-decorator)) |
| 16914 | (home-page "https://networkx.github.io/") |
| 16915 | (synopsis "Python module for creating and manipulating graphs and networks") |
| 16916 | (description |
| 16917 | "NetworkX is a Python package for the creation, manipulation, and study |
| 16918 | of the structure, dynamics, and functions of complex networks.") |
| 16919 | (license license:bsd-3))) |
| 16920 | |
| 16921 | (define-public python-datrie |
| 16922 | (package |
| 16923 | (name "python-datrie") |
| 16924 | (version "0.8.3") |
| 16925 | (source |
| 16926 | (origin |
| 16927 | (method git-fetch) |
| 16928 | (uri (git-reference |
| 16929 | (url "https://github.com/kmike/datrie") |
| 16930 | (commit version))) |
| 16931 | (file-name (git-file-name name version)) |
| 16932 | (sha256 |
| 16933 | (base32 "1jfyhzfjgin370l6chd0cjg521ql3y53db194n94ff6cdbdbg7cg")))) |
| 16934 | (build-system pyproject-build-system) |
| 16935 | (arguments |
| 16936 | (list |
| 16937 | #:phases |
| 16938 | #~(modify-phases %standard-phases |
| 16939 | (add-after 'ensure-no-mtimes-pre-1980 'inject-libdatrie |
| 16940 | (lambda* (#:key inputs #:allow-other-keys) |
| 16941 | (let* ((headers (search-input-directory inputs |
| 16942 | "include/datrie")) |
| 16943 | (base (dirname (dirname headers)))) |
| 16944 | (symlink headers "libdatrie/datrie") |
| 16945 | (setenv "LDFLAGS" (string-append "-L" base "/lib"))))) |
| 16946 | (add-before 'build 'relax-gcc-14-strictness |
| 16947 | (lambda _ |
| 16948 | (setenv "CFLAGS" |
| 16949 | "-g -O2 -Wno-error=incompatible-pointer-types")))))) |
| 16950 | (native-inputs |
| 16951 | (list python-cython python-hypothesis python-pytest python-setuptools)) |
| 16952 | (inputs (list libdatrie)) |
| 16953 | (home-page "https://github.com/kmike/datrie") |
| 16954 | (synopsis "Fast, efficiently stored trie for Python") |
| 16955 | (description |
| 16956 | "This package provides a fast, efficiently stored trie implementation for |
| 16957 | Python.") |
| 16958 | (license license:lgpl2.1+))) |
| 16959 | |
| 16960 | (define-public python-amply |
| 16961 | (package |
| 16962 | (name "python-amply") |
| 16963 | (version "0.1.6") |
| 16964 | (source |
| 16965 | (origin |
| 16966 | (method url-fetch) |
| 16967 | (uri (pypi-uri "amply" version)) |
| 16968 | (sha256 |
| 16969 | (base32 "195fg1n5nsl722hk33f6a7ak3n0hfs8yfpqi2xkhdqgqrh1i2hk1")))) |
| 16970 | (build-system pyproject-build-system) |
| 16971 | (native-inputs |
| 16972 | (list python-pytest |
| 16973 | python-setuptools |
| 16974 | python-setuptools-scm |
| 16975 | python-wheel)) |
| 16976 | (propagated-inputs |
| 16977 | (list python-docutils |
| 16978 | python-pyparsing)) |
| 16979 | (home-page "https://github.com/willu47/amply") |
| 16980 | (synopsis "Load and manipulate AMPL/GLPK data as Python data structures") |
| 16981 | (description |
| 16982 | "Amply allows you to load and manipulate AMPL/GLPK data as Python data |
| 16983 | structures.") |
| 16984 | (license license:epl1.0))) |
| 16985 | |
| 16986 | (define-public python-pulp |
| 16987 | (package |
| 16988 | (name "python-pulp") |
| 16989 | (version "3.3.2") |
| 16990 | (source |
| 16991 | (origin |
| 16992 | (method git-fetch) |
| 16993 | (uri (git-reference |
| 16994 | (url "https://github.com/coin-or/pulp") |
| 16995 | (commit version))) |
| 16996 | (file-name (git-file-name name version)) |
| 16997 | (sha256 |
| 16998 | (base32 "1vagp2xg4kl7swrd7snf1dlrj5mgccbascy30j4zncvi9cplyxfk")) |
| 16999 | (snippet |
| 17000 | #~(begin |
| 17001 | ;; The solverdir contains several binaries; use the Guix cbc |
| 17002 | ;; package instead. |
| 17003 | (use-modules (guix build utils)) |
| 17004 | (delete-file-recursively "pulp/solverdir"))))) |
| 17005 | (build-system pyproject-build-system) |
| 17006 | (arguments |
| 17007 | (list |
| 17008 | #:phases |
| 17009 | #~(modify-phases %standard-phases |
| 17010 | (add-after 'unpack 'use-system-cbc |
| 17011 | (lambda* (#:key inputs #:allow-other-keys) |
| 17012 | (substitute* "pyproject.toml" |
| 17013 | ;; Do not copy the binaries. |
| 17014 | ((".*solverdir.*") "")) |
| 17015 | (let ((cbc (search-input-file inputs "/bin/cbc"))) |
| 17016 | ;; PuLP default points to pulp/solverdir/../cbc, |
| 17017 | ;; use cbc from Guix instead. |
| 17018 | (substitute* "pulp/apis/coin_api.py" |
| 17019 | ((".*solverdir.*") |
| 17020 | (string-append " r\"" cbc "\"\n"))))))))) |
| 17021 | (native-inputs |
| 17022 | (list python-pytest |
| 17023 | python-setuptools)) |
| 17024 | (inputs |
| 17025 | (list cbc)) ;TODO: Add more solvers? Like highs |
| 17026 | (home-page "https://github.com/coin-or/pulp") |
| 17027 | (synopsis "Linear Programming modeler") |
| 17028 | (description |
| 17029 | "PuLP is a Linear Programming modeler written in Python. PuLP can |
| 17030 | generate MPS or LP files and call GLPK, COIN CLP/CBC, CPLEX, and GUROBI to |
| 17031 | solve linear problems.") |
| 17032 | (license license:expat))) |
| 17033 | |
| 17034 | (define-public python-py-partiql-parser |
| 17035 | (package |
| 17036 | (name "python-py-partiql-parser") |
| 17037 | (version "0.6.3") |
| 17038 | (source |
| 17039 | (origin |
| 17040 | (method git-fetch) |
| 17041 | (uri (git-reference |
| 17042 | (url "https://github.com/getmoto/py-partiql-parser") |
| 17043 | (commit version))) |
| 17044 | (file-name (git-file-name name version)) |
| 17045 | (sha256 |
| 17046 | (base32 "1jkdndlih5zapi6ypq1z2rkqbgadyl4lcghb0gajfwiczdhs9lgp")))) |
| 17047 | (build-system pyproject-build-system) |
| 17048 | (native-inputs |
| 17049 | (list python-hatchling |
| 17050 | python-pytest)) |
| 17051 | (home-page "https://pypi.org/project/py-partiql-parser/") |
| 17052 | (synopsis "Pure Python PartiQL Parser") |
| 17053 | (description |
| 17054 | "This package provides a tokenizer/parser/executor for the PartiQL |
| 17055 | language, in Python.") |
| 17056 | (license license:expat))) |
| 17057 | |
| 17058 | (define-public python-py-tes |
| 17059 | (package |
| 17060 | (name "python-py-tes") |
| 17061 | (version "0.4.2") |
| 17062 | (source |
| 17063 | (origin |
| 17064 | (method git-fetch) |
| 17065 | (uri (git-reference |
| 17066 | (url "https://github.com/ohsu-comp-bio/py-tes") |
| 17067 | (commit version))) |
| 17068 | (file-name (git-file-name name version)) |
| 17069 | (sha256 |
| 17070 | (base32 "0nacmw7whmbfqa6y728l6f646wpgaanfa0v4p5mggag2044v55qx")))) |
| 17071 | (build-system pyproject-build-system) |
| 17072 | (native-inputs |
| 17073 | (list python-pytest python-requests-mock python-setuptools)) |
| 17074 | (propagated-inputs |
| 17075 | (list python-attrs python-dateutil python-future python-requests)) |
| 17076 | (home-page "https://github.com/ohsu-comp-bio/py-tes") |
| 17077 | (synopsis "Library for communicating with the GA4GH Task Execution API") |
| 17078 | (description "This package provides a library for communicating with the |
| 17079 | GA4GH Task Execution API.") |
| 17080 | (license license:expat))) |
| 17081 | |
| 17082 | (define-public python-altgraph |
| 17083 | (package |
| 17084 | (name "python-altgraph") |
| 17085 | (version "0.17.4") |
| 17086 | (source |
| 17087 | (origin |
| 17088 | (method url-fetch) |
| 17089 | (uri (pypi-uri "altgraph" version)) |
| 17090 | (sha256 |
| 17091 | (base32 "01j48np3g50g6insjkszsz0vifwlm6gspria5vdwlkbciywznnhv")))) |
| 17092 | (build-system pyproject-build-system) |
| 17093 | (native-inputs (list python-pytest python-setuptools python-wheel)) |
| 17094 | (home-page "https://altgraph.readthedocs.io") |
| 17095 | (synopsis "Python graph network package") |
| 17096 | (description |
| 17097 | "This package provides tools for constructing graphs, BFS and DFS |
| 17098 | traversals, topological sort, shortest paths, and more with graphviz |
| 17099 | output.") |
| 17100 | (license license:expat))) |
| 17101 | |
| 17102 | (define-public python-pyqrcode |
| 17103 | (package |
| 17104 | (name "python-pyqrcode") |
| 17105 | (properties '((commit . "674a77b5eaf850d063f518bd90c243ee34ad6b5d") |
| 17106 | (revision . "0"))) |
| 17107 | (version (git-version "1.2.1" |
| 17108 | (assoc-ref properties 'revision) |
| 17109 | (assoc-ref properties 'commit))) |
| 17110 | (source |
| 17111 | (origin |
| 17112 | (method git-fetch) |
| 17113 | (uri (git-reference |
| 17114 | (url "https://github.com/mnooner256/pyqrcode") |
| 17115 | (commit (assoc-ref properties 'commit)))) |
| 17116 | (file-name (git-file-name name version)) |
| 17117 | (sha256 |
| 17118 | (base32 "0ks4sqwcwsnb5r65z6zdfbir34f35sfv3agnlmcq1w36fya2y62m")))) |
| 17119 | (build-system pyproject-build-system) |
| 17120 | (arguments (list #:test-backend #~'nose)) |
| 17121 | (native-inputs (list python-pynose python-pypng python-setuptools)) |
| 17122 | (home-page "https://github.com/mnooner256/pyqrcode") |
| 17123 | (synopsis "QR code generator") |
| 17124 | (description |
| 17125 | "Pyqrcode is a QR code generator written purely in Python with SVG, EPS, |
| 17126 | PNG and terminal output.") |
| 17127 | (license license:bsd-3))) |
| 17128 | |
| 17129 | (define-public python-seaborn |
| 17130 | ;; TODO: Move to (gnu packages statistics). |
| 17131 | (package |
| 17132 | (name "python-seaborn") |
| 17133 | ;; 0.13.2 (2024-01-25), the latest release contains known |
| 17134 | ;; incompatibilities, see: |
| 17135 | ;; <https://github.com/mwaskom/seaborn/issues/3892>, |
| 17136 | ;; <https://github.com/mwaskom/seaborn/issues/3893>. |
| 17137 | (properties '((commit . "32088bbc3adc611b7118e57fce6d4ed096a76a29") |
| 17138 | (revision . "0"))) |
| 17139 | (version (git-version "0.13.2" |
| 17140 | (assoc-ref properties 'revision) |
| 17141 | (assoc-ref properties 'commit))) |
| 17142 | (source |
| 17143 | (origin |
| 17144 | (method git-fetch) |
| 17145 | (uri (git-reference |
| 17146 | (url "https://github.com/mwaskom/seaborn") |
| 17147 | (commit (assoc-ref properties 'commit)))) |
| 17148 | (file-name (git-file-name name version)) |
| 17149 | (sha256 |
| 17150 | (base32 "1d2aig4kpjc8lcvk1sp824ksy1vl17dd36s4zryhjhmz5b0idqx3")))) |
| 17151 | (build-system pyproject-build-system) |
| 17152 | (arguments |
| 17153 | (list |
| 17154 | ;; tests: 2359 passed, 16 skipped, 6 xfailed |
| 17155 | #:test-flags |
| 17156 | #~(list "--numprocesses" (number->string (parallel-job-count))))) |
| 17157 | (native-inputs |
| 17158 | (list python-flit-core |
| 17159 | python-pytest |
| 17160 | python-pytest-xdist)) |
| 17161 | (propagated-inputs |
| 17162 | (list python-matplotlib |
| 17163 | python-numpy |
| 17164 | python-pandas |
| 17165 | python-scipy |
| 17166 | python-statsmodels)) |
| 17167 | (home-page "https://seaborn.pydata.org/") |
| 17168 | (synopsis "Statistical data visualization") |
| 17169 | (description |
| 17170 | "Seaborn is a library for making attractive and informative statistical |
| 17171 | graphics in Python. It is built on top of matplotlib and tightly integrated |
| 17172 | with the PyData stack, including support for numpy and pandas data structures |
| 17173 | and statistical routines from scipy and statsmodels.") |
| 17174 | (license license:bsd-3))) |
| 17175 | |
| 17176 | (define-public python-session-info |
| 17177 | (package |
| 17178 | (name "python-session-info") |
| 17179 | (version "1.0.0") |
| 17180 | (source |
| 17181 | (origin |
| 17182 | (method git-fetch) |
| 17183 | (uri (git-reference |
| 17184 | (url "https://gitlab.com/joelostblom/session_info") |
| 17185 | (commit version))) |
| 17186 | (file-name (git-file-name name version)) |
| 17187 | (sha256 |
| 17188 | (base32 "0w6y764qci5w9925c75xdr8jizgf8189mzzaz4zk5lw1f182yqy4")))) |
| 17189 | (build-system pyproject-build-system) |
| 17190 | (arguments (list #:tests? #f)) ; No tests. |
| 17191 | (native-inputs (list python-setuptools)) |
| 17192 | (propagated-inputs (list python-stdlib-list)) |
| 17193 | (home-page "https://gitlab.com/joelostblom/session_info") |
| 17194 | (synopsis "Output version information for modules currently loaded") |
| 17195 | (description |
| 17196 | "This package outputs version information for modules loaded in the current |
| 17197 | session, Python, and the OS.") |
| 17198 | (license license:bsd-3))) |
| 17199 | |
| 17200 | (define-public python-mpmath |
| 17201 | (package |
| 17202 | (name "python-mpmath") |
| 17203 | (version "1.3.0") |
| 17204 | (source |
| 17205 | (origin |
| 17206 | (method git-fetch) |
| 17207 | (uri (git-reference |
| 17208 | (url "https://github.com/fredrik-johansson/mpmath") |
| 17209 | (commit version))) |
| 17210 | (file-name (git-file-name name version)) |
| 17211 | (sha256 |
| 17212 | (base32 "058ahp0z0gn0z1hwvggrmiir1xag6rzgrfgfg138kjnk5ml9q4gl")))) |
| 17213 | (build-system pyproject-build-system) |
| 17214 | (native-inputs |
| 17215 | (list python-pytest |
| 17216 | python-setuptools |
| 17217 | python-setuptools-scm)) |
| 17218 | (home-page "https://mpmath.org") |
| 17219 | (synopsis "Arbitrary-precision floating-point arithmetic in python") |
| 17220 | (description |
| 17221 | "@code{mpmath} can be used as an arbitrary-precision substitute for |
| 17222 | Python's float/complex types and math/cmath modules, but also does much |
| 17223 | more advanced mathematics.") |
| 17224 | (license license:bsd-3))) |
| 17225 | |
| 17226 | (define-public python-bigfloat |
| 17227 | (package |
| 17228 | (name "python-bigfloat") |
| 17229 | (version "0.4.0") |
| 17230 | (source |
| 17231 | (origin |
| 17232 | (method url-fetch) |
| 17233 | (uri (pypi-uri "bigfloat" version)) |
| 17234 | (sha256 |
| 17235 | (base32 "1f0c1hdr39bbl5rds5r1waa1papjmjiyp0ixs64mkjiahzg6pfaq")) |
| 17236 | (snippet '(delete-file "mpfr.c")))) |
| 17237 | (build-system pyproject-build-system) |
| 17238 | (arguments |
| 17239 | (list |
| 17240 | #:test-flags |
| 17241 | ;; This one fails with AssertionError: 0 != 8796082524191. Not good, |
| 17242 | ;; but I don't know what to do about it. |
| 17243 | '(list "-k" "not test_hash") |
| 17244 | #:phases |
| 17245 | '(modify-phases %standard-phases |
| 17246 | (add-before 'build 'cythonize |
| 17247 | (lambda _ (invoke "cython" "mpfr.pyx")))))) |
| 17248 | (inputs (list mpfr)) |
| 17249 | (native-inputs |
| 17250 | (list python-cython python-pytest python-setuptools python-wheel)) |
| 17251 | (propagated-inputs |
| 17252 | (list python-six)) |
| 17253 | (home-page "https://github.com/mdickinson/bigfloat") |
| 17254 | (synopsis "Arbitrary precision floating-point arithmetic for Python") |
| 17255 | (description |
| 17256 | "This package provides a Python interface to the MPFR library for |
| 17257 | multiprecision arithmetic.") |
| 17258 | (license license:lgpl3+))) |
| 17259 | |
| 17260 | (define-public python-plac |
| 17261 | (package |
| 17262 | (name "python-plac") |
| 17263 | (version "1.4.3") |
| 17264 | (source |
| 17265 | (origin |
| 17266 | (method git-fetch) |
| 17267 | (uri (git-reference |
| 17268 | (url "https://github.com/ialbert/plac") |
| 17269 | (commit (string-append "v" version)))) |
| 17270 | (file-name (git-file-name name version)) |
| 17271 | (sha256 |
| 17272 | (base32 "0c9nagff8x7wk137yhs9fm1823c2l6yiyvm6w5gb0i4w5nsh6v0i")))) |
| 17273 | (build-system pyproject-build-system) |
| 17274 | (arguments |
| 17275 | (list |
| 17276 | #:phases |
| 17277 | #~(modify-phases %standard-phases |
| 17278 | (add-after 'unpack 'fix-tkinter |
| 17279 | (lambda _ |
| 17280 | (substitute* "plac_tk.py" |
| 17281 | (("from Tkinter import Tk") |
| 17282 | "from tkinter import Tk") |
| 17283 | (("from ScrolledText import ScrolledText") |
| 17284 | "from tkinter.scrolledtext import ScrolledText"))))))) |
| 17285 | (native-inputs |
| 17286 | (list (list python "tk") python-pytest python-setuptools)) |
| 17287 | (home-page "https://github.com/ialbert/plac") |
| 17288 | (synopsis "Command line arguments parser") |
| 17289 | (description |
| 17290 | "This package can generate command line parameters from function |
| 17291 | signatures.") |
| 17292 | (license license:bsd-3))) |
| 17293 | |
| 17294 | (define-public python-q |
| 17295 | (package |
| 17296 | (name "python-q") |
| 17297 | (properties '((commit . "cbad74095e20017f33d3ab75aa8375aa046ee697") |
| 17298 | (revision . "0"))) |
| 17299 | (version (git-version "2.7" |
| 17300 | (assoc-ref properties 'revision) |
| 17301 | (assoc-ref properties 'commit))) |
| 17302 | (source |
| 17303 | (origin |
| 17304 | (method git-fetch) |
| 17305 | (uri (git-reference |
| 17306 | (url "https://github.com/zestyping/q") |
| 17307 | (commit (assoc-ref properties 'commit)))) |
| 17308 | (file-name (git-file-name name version)) |
| 17309 | (sha256 |
| 17310 | (base32 "17bzi4xma4313waxanz5lly0cf0k6h33qrpy24sra2frh7gp0j0j")))) |
| 17311 | (build-system pyproject-build-system) |
| 17312 | (arguments |
| 17313 | (list |
| 17314 | ;; Deduced from the makefile. |
| 17315 | #:test-backend #~'custom |
| 17316 | #:test-flags #~(list "test/test_basic.py") |
| 17317 | #:phases |
| 17318 | #~(modify-phases %standard-phases |
| 17319 | (add-before 'check 'configure-tests |
| 17320 | (lambda* (#:key tests? #:allow-other-keys) |
| 17321 | (when tests? |
| 17322 | (setenv "TMPDIR" "/tmp"))))))) |
| 17323 | (native-inputs (list python-setuptools)) |
| 17324 | (home-page "https://github.com/zestyping/q") |
| 17325 | (synopsis "Quick-and-dirty debugging output for tired programmers") |
| 17326 | (description |
| 17327 | "q is a Python module for \"print\" style of debugging Python code. It |
| 17328 | provides convenient short API for print out of values, tracebacks, and |
| 17329 | falling into the Python interpreter.") |
| 17330 | (license license:asl2.0))) |
| 17331 | |
| 17332 | (define-public python-qnorm |
| 17333 | (package |
| 17334 | (name "python-qnorm") |
| 17335 | (version "0.9.0") |
| 17336 | (source |
| 17337 | (origin |
| 17338 | (method git-fetch) |
| 17339 | (uri (git-reference |
| 17340 | (url "https://github.com/Maarten-vd-Sande/qnorm") |
| 17341 | (commit (string-append "v" version)))) |
| 17342 | (file-name (git-file-name name version)) |
| 17343 | (sha256 |
| 17344 | (base32 "0bgqxmqq8d3il0gnbvlb5sik50f6z8myx7p652lpv4llj9hrl2w8")))) |
| 17345 | (build-system pyproject-build-system) |
| 17346 | (arguments |
| 17347 | (list |
| 17348 | #:phases |
| 17349 | #~(modify-phases %standard-phases |
| 17350 | (add-after 'unpack 'fix-pandas-3 |
| 17351 | (lambda _ |
| 17352 | ;; Pandas 3.0 removed the implicit engine fallback that used |
| 17353 | ;; to switch to the Python engine whenever sep=None was |
| 17354 | ;; passed without an explicit 'engine', which get_delim() |
| 17355 | ;; relied on for delimiter auto-detection |
| 17356 | ;; Try removing the phase on the next update. |
| 17357 | (substitute* "qnorm/util.py" |
| 17358 | (("table, sep=None, iterator=True") |
| 17359 | "table, sep=None, engine=\"python\", iterator=True"))))))) |
| 17360 | (propagated-inputs |
| 17361 | (list python-numba python-numpy python-pandas |
| 17362 | ;; XXX: pandas optional dependencies. |
| 17363 | python-tables python-pyarrow python-fastparquet)) |
| 17364 | (native-inputs (list python-setuptools)) |
| 17365 | (home-page "https://github.com/Maarten-vd-Sande/qnorm") |
| 17366 | (synopsis "Quantile normalization") |
| 17367 | (description |
| 17368 | "This tool implements quantile normalization. It properly resolves rank |
| 17369 | ties, which is important when ties happen frequently, such as when working |
| 17370 | with discrete numbers (integers) in count tables. This implementation should |
| 17371 | be relatively fast, and can use multiple cores to sort the columns and |
| 17372 | tie-resolvement is accelerated by numba.") |
| 17373 | (license license:expat))) |
| 17374 | |
| 17375 | (define-public python-quantlaw |
| 17376 | (package |
| 17377 | (name "python-quantlaw") |
| 17378 | (version "0.0.7") |
| 17379 | (source |
| 17380 | (origin |
| 17381 | (method git-fetch) |
| 17382 | (uri (git-reference |
| 17383 | (url "https://github.com/Quantlaw/quantlaw") |
| 17384 | (commit (string-append "v" version)))) |
| 17385 | (file-name (git-file-name name version)) |
| 17386 | (sha256 |
| 17387 | (base32 "1ps0hcw2x2w9g0gipflka98zf1zsadgs161r6pgp7nh0sq8kpkrh")))) |
| 17388 | (build-system pyproject-build-system) |
| 17389 | (arguments |
| 17390 | (list |
| 17391 | #:test-flags |
| 17392 | #~(list "-k" |
| 17393 | ;; test expects network access |
| 17394 | "not test_load_statue_names"))) |
| 17395 | (native-inputs (list python-pytest python-setuptools)) |
| 17396 | (propagated-inputs (list python-beautifulsoup4 python-networkx |
| 17397 | python-pandas python-regex python-requests)) |
| 17398 | (home-page "https://quantlaw.readthedocs.io/") |
| 17399 | (synopsis "Coding utilities for quantitative legal studies") |
| 17400 | (description |
| 17401 | "This package provides coding utilities for quantitative legal studies.") |
| 17402 | (license license:bsd-3))) |
| 17403 | |
| 17404 | (define-public python-singledispatch |
| 17405 | (package |
| 17406 | (name "python-singledispatch") |
| 17407 | (version "4.0.0") |
| 17408 | (source |
| 17409 | (origin |
| 17410 | (method url-fetch) |
| 17411 | (uri (pypi-uri "singledispatch" version)) |
| 17412 | (sha256 |
| 17413 | (base32 |
| 17414 | "1z5qbbvvjvh3cwcjv57p7vzhayx0j1ysnvjq0d5py6k5d2ljghzk")))) |
| 17415 | (build-system pyproject-build-system) |
| 17416 | (native-inputs |
| 17417 | (list python-pytest |
| 17418 | python-setuptools |
| 17419 | python-six ; required for conversion, not at run-time |
| 17420 | python-wheel)) |
| 17421 | (home-page |
| 17422 | "https://docs.python.org/3/library/functools.html#functools.singledispatch") |
| 17423 | (synopsis "Backport of singledispatch feature from Python 3.4") |
| 17424 | (description |
| 17425 | "This library brings functools.singledispatch from Python 3.4 to Python |
| 17426 | 2.6-3.3.") |
| 17427 | (license license:expat))) |
| 17428 | |
| 17429 | (define-public python-pyzmq |
| 17430 | (package |
| 17431 | (name "python-pyzmq") |
| 17432 | (version "27.1.0") |
| 17433 | (source |
| 17434 | (origin |
| 17435 | (method git-fetch) |
| 17436 | (uri (git-reference |
| 17437 | (url "https://github.com/zeromq/pyzmq") |
| 17438 | (commit (string-append "v" version)))) |
| 17439 | (file-name (git-file-name name version)) |
| 17440 | (sha256 |
| 17441 | (base32 "1zw0wm48ja90f616nwd33njplcni7wszw6r660l7cnim81yb3rhq")))) |
| 17442 | (build-system pyproject-build-system) |
| 17443 | (arguments |
| 17444 | (list |
| 17445 | #:test-flags |
| 17446 | '(list "-m" "not flaky") |
| 17447 | #:phases |
| 17448 | #~(modify-phases %standard-phases |
| 17449 | (add-before 'build 'configure |
| 17450 | (lambda _ |
| 17451 | ;; Our zeromq package is built with '--enable-drafts'; also |
| 17452 | ;; enable draft support for pyzmq so the draft test passes. |
| 17453 | (setenv "ZMQ_DRAFT_API" "1") |
| 17454 | ;; Make sure to prevent building bundled libzmq. |
| 17455 | (setenv "PYZMQ_NO_BUNDLE" "1"))) |
| 17456 | (add-before 'check 'delete-source |
| 17457 | ;; To prevent loading it and skip build extensions one more times. |
| 17458 | (lambda _ |
| 17459 | (delete-file-recursively "zmq")))))) |
| 17460 | (native-inputs |
| 17461 | (list cmake-minimal |
| 17462 | ;; python-cffi ; for PyPy |
| 17463 | python-cython |
| 17464 | python-packaging |
| 17465 | python-pytest |
| 17466 | python-pytest-asyncio |
| 17467 | python-scikit-build-core |
| 17468 | python-tornado)) |
| 17469 | (inputs |
| 17470 | (list libsodium |
| 17471 | zeromq)) |
| 17472 | (home-page "https://github.com/zeromq/pyzmq") |
| 17473 | (synopsis "Python bindings for 0MQ") |
| 17474 | (description |
| 17475 | "PyZMQ is the official Python binding for the ZeroMQ messaging library.") |
| 17476 | (license license:bsd-4))) |
| 17477 | |
| 17478 | (define-public python-immutabledict |
| 17479 | (package |
| 17480 | (name "python-immutabledict") |
| 17481 | (version "4.2.0") |
| 17482 | (source |
| 17483 | (origin |
| 17484 | (method url-fetch) |
| 17485 | (uri (pypi-uri "immutabledict" version)) |
| 17486 | (sha256 |
| 17487 | (base32 "0pvwfasa5l78pi32zk55x5ihpdzkdh4f3xwbfmd7ldyjma0zs0z0")))) |
| 17488 | (build-system pyproject-build-system) |
| 17489 | (native-inputs |
| 17490 | (list python-poetry-core python-pytest)) |
| 17491 | (home-page "https://github.com/corenting/immutabledict") |
| 17492 | (synopsis "Immutable wrapper around dictionaries") |
| 17493 | (description |
| 17494 | "@dfn{immutabledict} is an immutable wrapper around dictionaries. |
| 17495 | It implements the complete mapping interface and can be used as a drop-in |
| 17496 | replacement for dictionaries where immutability is desired.") |
| 17497 | (license license:expat))) |
| 17498 | |
| 17499 | (define-public python-emoji |
| 17500 | (package |
| 17501 | (name "python-emoji") |
| 17502 | (version "2.12.1") |
| 17503 | (source |
| 17504 | (origin |
| 17505 | (method url-fetch) |
| 17506 | (uri (pypi-uri "emoji" version)) |
| 17507 | (sha256 |
| 17508 | (base32 "1svk94pad8gcvjwd329zmfrw09wakwh6qjvnhf6sa6k92y44i82a")))) |
| 17509 | (build-system pyproject-build-system) |
| 17510 | (propagated-inputs (list python-typing-extensions)) |
| 17511 | (native-inputs |
| 17512 | (list python-pytest |
| 17513 | python-setuptools |
| 17514 | python-wheel)) |
| 17515 | (home-page "https://github.com/carpedm20/emoji/") |
| 17516 | (synopsis "Emoji terminal output for Python") |
| 17517 | (description |
| 17518 | "This package provides Emoji terminal output for Python. The |
| 17519 | entire set of Emoji codes as defined by the Unicode Consortium is supported in |
| 17520 | addition to a bunch of aliases.") |
| 17521 | (license license:bsd-3))) |
| 17522 | |
| 17523 | ;; TODO: Remove this package when upgrading python-gh-md-to-html to the |
| 17524 | ;; latest version. The latest gh-md-to-html does not build successfully from |
| 17525 | ;; the PyPI distribution. Let's resolve #72102 while keeping gh-md-to-html at |
| 17526 | ;; version 1.21.2 from failing. |
| 17527 | ;; https://issues.guix.gnu.org/72102 |
| 17528 | ;; https://github.com/phseiff/github-flavored-markdown-to-html/issues/73 |
| 17529 | (define-public python-emoji-for-gh-md-to-html |
| 17530 | (package |
| 17531 | (inherit python-emoji) |
| 17532 | (version "1.6.1") |
| 17533 | (source |
| 17534 | (origin |
| 17535 | (method url-fetch) |
| 17536 | (uri (pypi-uri "emoji" version)) |
| 17537 | (sha256 |
| 17538 | (base32 "0923mpixwq6hdpkgvi4r46alfvf608iq975rb8lnqpq29j71mmjk")))))) |
| 17539 | |
| 17540 | (define-public python-sarge |
| 17541 | (package |
| 17542 | (name "python-sarge") |
| 17543 | (version "0.1.7.post1") ;post release only to correct errors in metadata |
| 17544 | (source |
| 17545 | (origin |
| 17546 | (method git-fetch) |
| 17547 | (uri (git-reference |
| 17548 | (url "https://github.com/vsajip/sarge") |
| 17549 | (commit version))) |
| 17550 | (file-name (git-file-name name version)) |
| 17551 | (sha256 |
| 17552 | (base32 "0kn577lnaznr2hz1w1617l1agd21xs1fq2qv8kg2dy92qinl6gbd")))) |
| 17553 | (build-system pyproject-build-system) |
| 17554 | (native-inputs (list python-pytest python-setuptools)) |
| 17555 | (home-page "https://docs.red-dove.com/sarge/") |
| 17556 | (synopsis "Subprocess wrapper with command pipeline functionality") |
| 17557 | (description "@code{sarge} is a wrapper for subprocess which provides |
| 17558 | command pipeline functionality.") |
| 17559 | (license license:bsd-3))) |
| 17560 | |
| 17561 | (define-public python-sentry-sdk |
| 17562 | ;; TODO: Move to (gnu packages python-web). |
| 17563 | (package |
| 17564 | (name "python-sentry-sdk") |
| 17565 | (version "2.59.0") |
| 17566 | (source |
| 17567 | (origin |
| 17568 | (method git-fetch) |
| 17569 | (uri (git-reference |
| 17570 | (url "https://github.com/getsentry/sentry-python") |
| 17571 | (commit version))) |
| 17572 | (file-name (git-file-name name version)) |
| 17573 | (sha256 |
| 17574 | (base32 "1ghpfqfhjkh511q11l5lisahian34b3lzjk2xvkg2ijm6p9ail88")))) |
| 17575 | (build-system pyproject-build-system) |
| 17576 | (arguments |
| 17577 | (list |
| 17578 | ;; tests: 2119 passed, 128 skipped, 224 warnings |
| 17579 | #:test-flags |
| 17580 | #~(list "--durations=10" |
| 17581 | "--numprocesses" (number->string (parallel-job-count)) |
| 17582 | ;; The whole test suite is quite shaky, may fail unpredictably |
| 17583 | ;; and depends on many additional inputs to enable all |
| 17584 | ;; integration tests. |
| 17585 | "-k" (string-join |
| 17586 | (list "not test_aggregates" |
| 17587 | "test_aggregates_deprecated" |
| 17588 | (string-append "test_aggregates_explicitly_disabled" |
| 17589 | "_session_tracking_request_mode") |
| 17590 | (string-append "test_aggregates_explicitly_disabled" |
| 17591 | "_session_tracking_request" |
| 17592 | "_mode_deprecated") |
| 17593 | "test_auto_session_tracking_with_aggregates[False]" |
| 17594 | "test_auto_session_tracking_with_aggregates[True]" |
| 17595 | "test_basic" |
| 17596 | "test_default_attributes" |
| 17597 | "test_default_release" |
| 17598 | (string-append "test_ensure_integration_enabled" |
| 17599 | "_no_original_function_enabled") |
| 17600 | "test_logger_with_all_attributes" |
| 17601 | "test_merging" |
| 17602 | (string-append "test_session_mode_defaults_to" |
| 17603 | "_request_mode_in_wsgi_handler")) |
| 17604 | " and not ")) |
| 17605 | #:phases |
| 17606 | #~(modify-phases %standard-phases |
| 17607 | (add-after 'unpack 'fix-pytest-config |
| 17608 | (lambda _ |
| 17609 | ;; Tests run in debug mode which generats a lot of noise. |
| 17610 | (delete-file "tox.ini") |
| 17611 | (substitute* "pyproject.toml" |
| 17612 | (("addopts =.*") ""))))))) |
| 17613 | (native-inputs |
| 17614 | (list nss-certs-for-test |
| 17615 | python-brotli |
| 17616 | python-jsonschema |
| 17617 | python-mock |
| 17618 | python-pysocks |
| 17619 | python-pytest |
| 17620 | python-pytest-aiohttp |
| 17621 | python-pytest-asyncio |
| 17622 | python-pytest-localserver |
| 17623 | python-pytest-timeout |
| 17624 | python-pytest-xdist |
| 17625 | python-responses |
| 17626 | python-setuptools |
| 17627 | python-socksio)) |
| 17628 | (propagated-inputs |
| 17629 | (list python-certifi |
| 17630 | python-urllib3 |
| 17631 | ;; [optional] |
| 17632 | ;; python-unleashclient |
| 17633 | python-aiohttp |
| 17634 | ;; python-anthropic |
| 17635 | ;; python-apache-beam |
| 17636 | ;; python-arq |
| 17637 | python-asttokens |
| 17638 | ;; python-asyncpg |
| 17639 | ;; python-blinker |
| 17640 | ;; python-bottle |
| 17641 | ;; python-celery |
| 17642 | ;; python-celery-redbeat |
| 17643 | ;; python-chalice |
| 17644 | ;; python-clickhouse-driver |
| 17645 | ;; python-django |
| 17646 | python-executing |
| 17647 | ;; python-falcon |
| 17648 | ;; python-fastapi |
| 17649 | ;; python-flask |
| 17650 | ;; python-google-genai |
| 17651 | ;; python-grpcio |
| 17652 | python-httpcore |
| 17653 | ;; python-httpx |
| 17654 | ;; python-huey |
| 17655 | ;; python-huggingface-hub |
| 17656 | ;; python-langchain |
| 17657 | ;; python-langgraph |
| 17658 | ;; python-launchdarkly-server-sdk |
| 17659 | ;; python-litellm |
| 17660 | ;; python-litestar |
| 17661 | ;; python-loguru |
| 17662 | ;; python-markupsafe |
| 17663 | ;; python-mcp |
| 17664 | ;; python-openai |
| 17665 | ;; python-openfeature-sdk |
| 17666 | ;; python-opentelemetry-distro |
| 17667 | ;; python-protobuf |
| 17668 | ;; python-pure-eval |
| 17669 | ;; python-pydantic-ai |
| 17670 | ;; python-pymongo |
| 17671 | ;; python-pyspark |
| 17672 | ;; python-quart |
| 17673 | ;; python-rq |
| 17674 | ;; python-sanic |
| 17675 | ;; python-sqlalchemy |
| 17676 | ;; python-starlette |
| 17677 | ;; python-starlite |
| 17678 | ;; python-statsig |
| 17679 | ;; python-tiktoken |
| 17680 | #;python-tornado)) |
| 17681 | (home-page "https://github.com/getsentry/sentry-python") |
| 17682 | (synopsis "Python SDK for Sentry") |
| 17683 | (description "This package provides a Python SDK for the Sentry |
| 17684 | application monitoring and error tracking software.") |
| 17685 | (license license:bsd-2))) |
| 17686 | |
| 17687 | ;; A bare minimal package, mainly to use in tests and reduce closure |
| 17688 | ;; size. Tests are left out in the main package to slim down native-inputs. |
| 17689 | (define-public python-sentry-sdk-minimal |
| 17690 | (package/inherit python-sentry-sdk |
| 17691 | (name "python-sentry-sdk-minimal") |
| 17692 | (arguments |
| 17693 | (list #:tests? #f)) |
| 17694 | (native-inputs |
| 17695 | (list python-setuptools)) |
| 17696 | (propagated-inputs |
| 17697 | (list python-certifi |
| 17698 | python-urllib3)))) |
| 17699 | |
| 17700 | (define-public python-pep440 |
| 17701 | (package |
| 17702 | (name "python-pep440") |
| 17703 | (version "0.1.2") |
| 17704 | (source |
| 17705 | (origin |
| 17706 | (method url-fetch) |
| 17707 | (uri (pypi-uri "pep440" version)) |
| 17708 | (sha256 |
| 17709 | (base32 "0kfhysbyci4f2sxvv991yvn22kbhncn0jg1arbhzw4rbri375csq")))) |
| 17710 | (build-system pyproject-build-system) |
| 17711 | (arguments |
| 17712 | ;; This checks for "pep440" in the output, but we actually print |
| 17713 | ;; ".pep440-real" due to wrapping. |
| 17714 | (list #:test-flags '(list "-k" "not test_cli_help"))) |
| 17715 | (propagated-inputs (list python-check-manifest python-mypy python-pytest |
| 17716 | python-pytest-console-scripts python-pytest-cov)) |
| 17717 | (native-inputs (list python-flit-core)) |
| 17718 | (home-page "https://pypi.org/project/pep440/") |
| 17719 | (synopsis "Utils to check whether versions number match PEP 440") |
| 17720 | (description |
| 17721 | "This package provides a simple package with utils to check whether |
| 17722 | versions number match PEP 440.") |
| 17723 | (license license:expat))) |
| 17724 | |
| 17725 | (define-public python-pyproject-metadata |
| 17726 | (package |
| 17727 | (name "python-pyproject-metadata") |
| 17728 | (version "0.11.0") |
| 17729 | (source |
| 17730 | (origin |
| 17731 | (method git-fetch) |
| 17732 | (uri (git-reference |
| 17733 | (url "https://github.com/FFY00/python-pyproject-metadata") |
| 17734 | (commit version))) |
| 17735 | (file-name (git-file-name name version)) |
| 17736 | (sha256 |
| 17737 | (base32 "0f838jc5m8f3f4gazzsidhk6x2d359g53ysa0bp0fw11jsv1n2vp")))) |
| 17738 | (build-system pyproject-build-system) |
| 17739 | (propagated-inputs (list python-packaging)) |
| 17740 | (native-inputs |
| 17741 | (list python-flit-core python-pytest python-tomli)) |
| 17742 | (home-page "https://github.com/FFY00/python-pyproject-metadata") |
| 17743 | (synopsis "Dataclass for PEP 621 metadata") |
| 17744 | (description "This project does not implement the parsing of |
| 17745 | @file{pyproject.toml} containing PEP 621 metadata. Instead, given a Python |
| 17746 | data structure representing PEP 621 metadata (already parsed), it will |
| 17747 | validate this input and generate a PEP 643-compliant metadata |
| 17748 | file (e.g. @file{PKG-INFO}).") |
| 17749 | (license license:expat))) |
| 17750 | |
| 17751 | (define-public python-meson |
| 17752 | (package |
| 17753 | (name "python-meson") |
| 17754 | (version "0.19.0") |
| 17755 | (source |
| 17756 | (origin |
| 17757 | (method git-fetch) |
| 17758 | (uri (git-reference |
| 17759 | (url "https://github.com/mesonbuild/meson-python") |
| 17760 | (commit version))) |
| 17761 | (file-name (git-file-name name version)) |
| 17762 | (sha256 |
| 17763 | (base32 "0kbp3iax1w12bkx0kfxsavdw4almksi1yh9866pcsf9zim49k5nz")))) |
| 17764 | (build-system pyproject-build-system) |
| 17765 | ;; tests: 124 passed, 16 skipped |
| 17766 | (native-inputs |
| 17767 | (list git-minimal/pinned |
| 17768 | patchelf |
| 17769 | python-pytest |
| 17770 | python-pytest-mock)) |
| 17771 | (propagated-inputs |
| 17772 | (list meson |
| 17773 | ninja |
| 17774 | python-cython |
| 17775 | python-packaging |
| 17776 | python-pyproject-metadata)) |
| 17777 | (home-page "https://github.com/mesonbuild/meson-python") |
| 17778 | (synopsis "Meson Python build backend (PEP 517)") |
| 17779 | (description "This package provides a PEP 517 build backend that makes |
| 17780 | use of the Meson build system.") |
| 17781 | (license license:expat))) |
| 17782 | |
| 17783 | (define-public python-mfusepy |
| 17784 | (package |
| 17785 | (name "python-mfusepy") |
| 17786 | (version "3.1.1") |
| 17787 | (source |
| 17788 | (origin |
| 17789 | (method git-fetch) |
| 17790 | (uri (git-reference |
| 17791 | (url "https://github.com/mxmlnkn/mfusepy") |
| 17792 | (commit (string-append "v" version)))) |
| 17793 | (file-name (git-file-name name version)) |
| 17794 | (sha256 |
| 17795 | (base32 "04vsmmh1zpy8cxxrj9dqiqajisn95skg3wqr8dgqck25780v3c4k")))) |
| 17796 | (build-system pyproject-build-system) |
| 17797 | (native-inputs (list python-setuptools)) |
| 17798 | (inputs (list fuse)) |
| 17799 | (arguments |
| 17800 | (list |
| 17801 | #:tests? #f ; Tests require fuse kernel module |
| 17802 | #:phases |
| 17803 | #~(modify-phases %standard-phases |
| 17804 | (add-after 'unpack 'embed-libfuse |
| 17805 | (lambda* (#:key inputs #:allow-other-keys) |
| 17806 | (substitute* "mfusepy.py" |
| 17807 | (("^(_libfuse_path = )os\\.environ\\.get.+$" _ pre) |
| 17808 | (format #f "~a\"~a\"\n" |
| 17809 | pre (search-input-file inputs "/lib/libfuse3.so"))))))))) |
| 17810 | (home-page "https://github.com/mxmlnkn/mfusepy") |
| 17811 | (synopsis "Ctypes bindings for the high-level API in libfuse 2 and 3") |
| 17812 | (description "Ctypes bindings for the high-level API in libfuse 2 and 3.") |
| 17813 | (license license:isc))) |
| 17814 | |
| 17815 | (define-public python-mccabe |
| 17816 | ;; Last public release (0.7.0) is from 2022-01-24. |
| 17817 | (let ((commit "292b5c71c3fe5496771b46ac9d86361c9b760d17") |
| 17818 | (revision "0")) |
| 17819 | (package |
| 17820 | (name "python-mccabe") |
| 17821 | (version (git-version "0.7.0" revision commit)) |
| 17822 | (source |
| 17823 | (origin |
| 17824 | (method git-fetch) |
| 17825 | (uri (git-reference |
| 17826 | (url "https://github.com/PyCQA/mccabe") |
| 17827 | (commit commit))) |
| 17828 | (file-name (git-file-name name version)) |
| 17829 | (sha256 |
| 17830 | (base32 "12aa5qjzf0anx1bdfcgg4gvn9kkm1cc5qi2lzrh23c5gxyfyxw17")))) |
| 17831 | (build-system pyproject-build-system) |
| 17832 | (arguments |
| 17833 | (list |
| 17834 | #:test-flags |
| 17835 | ;; AssertionError: 0 != 1 |
| 17836 | #~(list (string-append "--deselect=test_mccabe.py" |
| 17837 | "::RegressionTests::test_get_module_complexity")))) |
| 17838 | (native-inputs |
| 17839 | (list python-pytest |
| 17840 | python-setuptools)) |
| 17841 | (home-page "https://github.com/PyCQA/mccabe") |
| 17842 | (synopsis "McCabe checker, plugin for flake8") |
| 17843 | (description |
| 17844 | "This package provides a Flake8 plug-in to compute the McCabe cyclomatic |
| 17845 | complexity of Python source code.") |
| 17846 | (license license:expat)))) |
| 17847 | |
| 17848 | (define-public python-autoflake8 |
| 17849 | (package |
| 17850 | (name "python-autoflake8") |
| 17851 | (version "0.4.0") |
| 17852 | (source (origin |
| 17853 | (method git-fetch) ;for tests |
| 17854 | (uri (git-reference |
| 17855 | (url "https://github.com/fsouza/autoflake8") |
| 17856 | (commit (string-append "v" version)))) |
| 17857 | (file-name (git-file-name name version)) |
| 17858 | (sha256 |
| 17859 | (base32 |
| 17860 | "0jx7bkslbhr24yvq60pl39faz2r6g93f1zm1gygswl0rzr5zmgnh")))) |
| 17861 | (build-system pyproject-build-system) |
| 17862 | (native-inputs |
| 17863 | (list python-aiofiles |
| 17864 | python-poetry-core |
| 17865 | python-pytest |
| 17866 | python-pytest-xdist)) |
| 17867 | (propagated-inputs (list python-pyflakes)) |
| 17868 | (home-page "https://github.com/fsouza/autoflake8") |
| 17869 | (synopsis "Automatically fix issues reported by flake8") |
| 17870 | (description "Tool to automatically fix some issues reported by |
| 17871 | @command{flake8}.") |
| 17872 | (license license:expat))) |
| 17873 | |
| 17874 | (define-public python-flake8 |
| 17875 | (package |
| 17876 | (name "python-flake8") |
| 17877 | (version "7.3.0") |
| 17878 | (source |
| 17879 | (origin |
| 17880 | (method git-fetch) |
| 17881 | (uri (git-reference |
| 17882 | (url "https://github.com/pycqa/flake8") |
| 17883 | (commit version))) |
| 17884 | (file-name (git-file-name name version)) |
| 17885 | (sha256 |
| 17886 | (base32 "0dva22djb3pdrizghvs5r1k7vr1j3khs0k9z8y6dz4ga50dli4bm")))) |
| 17887 | (build-system pyproject-build-system) |
| 17888 | (native-inputs |
| 17889 | (list python-pytest |
| 17890 | python-setuptools)) |
| 17891 | (propagated-inputs |
| 17892 | (list python-mccabe |
| 17893 | python-pycodestyle |
| 17894 | python-pyflakes)) |
| 17895 | (home-page "https://flake8.pycqa.org/en/latest/") |
| 17896 | (synopsis "The modular source code checker: pep8, pyflakes and co") |
| 17897 | (description |
| 17898 | "Flake8 is a wrapper around PyFlakes, pep8 and python-mccabe.") |
| 17899 | (license license:expat))) |
| 17900 | |
| 17901 | (define-public python-flake8-blind-except |
| 17902 | (package |
| 17903 | (name "python-flake8-blind-except") |
| 17904 | (version "0.2.1") |
| 17905 | (source |
| 17906 | (origin |
| 17907 | (method git-fetch) |
| 17908 | (uri (git-reference |
| 17909 | (url "https://github.com/elijahandrews/flake8-blind-except") |
| 17910 | (commit (string-append "v" version)))) |
| 17911 | (file-name (git-file-name name version)) |
| 17912 | (sha256 |
| 17913 | (base32 "09zrfrm0896miysrpb7fhxzqjn6pm8y0b638nncswm2wvw9by72q")))) |
| 17914 | (build-system pyproject-build-system) |
| 17915 | (arguments (list #:tests? #f)) ;no tests |
| 17916 | (native-inputs (list python-setuptools)) |
| 17917 | (propagated-inputs (list python-pycodestyle)) |
| 17918 | (home-page "https://github.com/elijahandrews/flake8-blind-except") |
| 17919 | (synopsis "Check for blind @code{except:} statements") |
| 17920 | (description |
| 17921 | "This package provides a flake8 extension that checks for blind |
| 17922 | @code{except:} statements.") |
| 17923 | (license license:expat))) |
| 17924 | |
| 17925 | (define-public python-flake8-bugbear |
| 17926 | (package |
| 17927 | (name "python-flake8-bugbear") |
| 17928 | (version "24.10.31") |
| 17929 | (source |
| 17930 | (origin |
| 17931 | (method url-fetch) |
| 17932 | (uri (pypi-uri "flake8_bugbear" version)) |
| 17933 | (sha256 |
| 17934 | (base32 "1nrrwhfmk49riflmng26qqjzvfang5lij14ripzqwzxjf8f56ns3")))) |
| 17935 | (build-system pyproject-build-system) |
| 17936 | (native-inputs |
| 17937 | (list python-hypothesmith |
| 17938 | python-pytest |
| 17939 | python-setuptools |
| 17940 | python-wheel)) |
| 17941 | (propagated-inputs |
| 17942 | (list python-attrs |
| 17943 | python-flake8)) |
| 17944 | (home-page "https://github.com/PyCQA/flake8-bugbear") |
| 17945 | (synopsis "Flake8 plugin for finding likely bugs and design problems in your program") |
| 17946 | (description |
| 17947 | "This package contains a plugin for Flake8 finding likely bugs and design |
| 17948 | problems in your program. It contains warnings that don't belong in pyflakes |
| 17949 | and pycodestyle.") |
| 17950 | (license license:expat))) |
| 17951 | |
| 17952 | (define-public python-flake8-continuation |
| 17953 | (package |
| 17954 | (name "python-flake8-continuation") |
| 17955 | (version "1.0.5") |
| 17956 | (source |
| 17957 | (origin |
| 17958 | (method git-fetch) |
| 17959 | (uri (git-reference |
| 17960 | (url "https://github.com/planetlabs/flake8-continuation") |
| 17961 | (commit version))) |
| 17962 | (file-name (git-file-name name version)) |
| 17963 | (sha256 |
| 17964 | (base32 "04fsd361x03mgyydsdm9vr28ikr2mdip13c805i2wzxc45qsc9x7")))) |
| 17965 | (build-system pyproject-build-system) |
| 17966 | (arguments |
| 17967 | (list |
| 17968 | #:phases |
| 17969 | #~(modify-phases %standard-phases |
| 17970 | (add-after 'unpack 'remove-python-six-dependency |
| 17971 | (lambda _ |
| 17972 | (substitute* "flake8_continuation.py" |
| 17973 | (("import six|six\\.moves\\.") |
| 17974 | "")) |
| 17975 | (substitute* "setup.py" |
| 17976 | ((", \"six\"") |
| 17977 | ""))))))) |
| 17978 | (native-inputs (list python-pytest python-setuptools)) |
| 17979 | (propagated-inputs (list python-flake8 python-pycodestyle)) |
| 17980 | (home-page "https://github.com/planetlabs/flake8-continuation") |
| 17981 | (synopsis "Flake8 Line Continuation Plugin") |
| 17982 | (description |
| 17983 | "A Flake8 plugin that checks for the line continuation style to be in the |
| 17984 | preferred method according to PEP-8, specifically: |
| 17985 | @quotation |
| 17986 | The preferred way of wrapping long lines is by using Python's implied line |
| 17987 | continuation inside parentheses, brackets and braces. Long lines can be |
| 17988 | broken over multiple lines by wrapping expressions in parentheses. These |
| 17989 | should be used in preference to using a backslash for line continuation. |
| 17990 | @end quotation") |
| 17991 | (license license:asl2.0))) |
| 17992 | |
| 17993 | (define-public python-flake8-debugger |
| 17994 | (package |
| 17995 | (name "python-flake8-debugger") |
| 17996 | (version "4.1.2") |
| 17997 | (source |
| 17998 | (origin |
| 17999 | (method git-fetch) |
| 18000 | (uri (git-reference |
| 18001 | (url "https://github.com/jbkahn/flake8-debugger") |
| 18002 | (commit version))) |
| 18003 | (file-name (git-file-name name version)) |
| 18004 | (sha256 |
| 18005 | (base32 "1nmqs238a02ypld32lwbagbk1jppm3pddrjdrrngc1xpbzb9nyl0")))) |
| 18006 | (build-system pyproject-build-system) |
| 18007 | (native-inputs (list python-poetry-core python-pytest python-setuptools)) |
| 18008 | (propagated-inputs (list python-flake8 python-pycodestyle)) |
| 18009 | (home-page "https://github.com/jbkahn/flake8-debugger") |
| 18010 | (synopsis "@code{ipdb} and @code{pdb} statement checker plugin for flake8") |
| 18011 | (description |
| 18012 | "This package provides a Flake8 plugin that checks for @code{ipdb} and |
| 18013 | @code{pdb} imports and set traces, as well as @code{from |
| 18014 | IPython.terminal.embed}, @code{import InteractiveShellEmbed} and |
| 18015 | @code{InteractiveShellEmbed()()}.") |
| 18016 | (license license:expat))) |
| 18017 | |
| 18018 | (define-public python-flake8-implicit-str-concat |
| 18019 | (package |
| 18020 | (name "python-flake8-implicit-str-concat") |
| 18021 | (version "0.5.0") |
| 18022 | (source |
| 18023 | (origin |
| 18024 | (method url-fetch) |
| 18025 | (uri (pypi-uri "flake8_implicit_str_concat" version)) |
| 18026 | (sha256 |
| 18027 | (base32 "1s59w4x053j4794n6h9c7hafa8jjjymx6aar5q23pjw4vrdis7hh")))) |
| 18028 | (build-system pyproject-build-system) |
| 18029 | (arguments |
| 18030 | (list |
| 18031 | #:tests? #f)) ; no tests in PiPY or git checkout |
| 18032 | (native-inputs |
| 18033 | (list python-hatchling)) |
| 18034 | (propagated-inputs |
| 18035 | (list python-attrs |
| 18036 | python-more-itertools)) |
| 18037 | (home-page "https://github.com/keisheiled/flake8-implicit-str-concat") |
| 18038 | (synopsis "Flake8 plugin to encourage correct string literal concatenation") |
| 18039 | (description |
| 18040 | "This is a plugin for the Python code checking tool Flake8 to encourage |
| 18041 | correct string literal concatenation. |
| 18042 | |
| 18043 | It looks for style problems like implicitly concatenated string literals on |
| 18044 | the same line (which can be introduced by the code formatting tool Black), or |
| 18045 | unnecessary plus operators for explicit string literal concatenation.") |
| 18046 | (license license:expat))) |
| 18047 | |
| 18048 | (define-public python-flake8-print |
| 18049 | (package |
| 18050 | (name "python-flake8-print") |
| 18051 | (version "5.0.0") |
| 18052 | (source |
| 18053 | (origin |
| 18054 | (method url-fetch) |
| 18055 | (uri (pypi-uri "flake8-print" version)) |
| 18056 | (sha256 |
| 18057 | (base32 "1ydx92xck090ajp8vk2378fm0f4wj3mikhinjs3w1hcw70m5m4bn")))) |
| 18058 | (build-system pyproject-build-system) |
| 18059 | (arguments |
| 18060 | (list |
| 18061 | #:tests? #f)) ; no tests in PiPY or git checkout |
| 18062 | (native-inputs |
| 18063 | (list python-poetry-core)) |
| 18064 | (propagated-inputs |
| 18065 | (list python-flake8 |
| 18066 | python-pycodestyle)) |
| 18067 | (home-page "https://github.com/jbkahn/flake8-print") |
| 18068 | (synopsis "Print statement checker plugin for Flake8") |
| 18069 | (description |
| 18070 | "This plugin for Flake8 checks for @code{print} statements in Python |
| 18071 | files.") |
| 18072 | (license license:expat))) |
| 18073 | |
| 18074 | (define-public python-flake8-pyi |
| 18075 | (package |
| 18076 | (name "python-flake8-pyi") |
| 18077 | (version "26.5.0") |
| 18078 | (source |
| 18079 | (origin |
| 18080 | (method git-fetch) |
| 18081 | (uri (git-reference |
| 18082 | (url "https://github.com/ambv/flake8-pyi") |
| 18083 | (commit version))) |
| 18084 | (file-name (git-file-name name version)) |
| 18085 | (sha256 |
| 18086 | (base32 "006shfi8a99ysfac5s7fizx8f5w9hz3pl551kp9q1883rh1rfd5m")))) |
| 18087 | (build-system pyproject-build-system) |
| 18088 | (arguments |
| 18089 | (list |
| 18090 | #:phases |
| 18091 | #~(modify-phases %standard-phases |
| 18092 | (add-after 'unpack 'fix-pytest-config |
| 18093 | (lambda _ |
| 18094 | ;; Prevent full threads utilization. |
| 18095 | (substitute* "pyproject.toml" |
| 18096 | (("-nauto") ""))))))) |
| 18097 | (native-inputs |
| 18098 | (list python-hatch-vcs |
| 18099 | python-hatchling |
| 18100 | python-pytest)) |
| 18101 | (propagated-inputs |
| 18102 | (list python-attrs |
| 18103 | python-flake8 |
| 18104 | python-pyflakes)) |
| 18105 | (home-page "https://github.com/ambv/flake8-pyi") |
| 18106 | (synopsis "Flake8 plugin for type hinting stub files") |
| 18107 | (description |
| 18108 | "This package contains a plugin that provides specializations for type |
| 18109 | hinting stub files, especially interesting for linting typeshed. It adds the |
| 18110 | @file{.pyi} extension to the default value of the @code{--filename} |
| 18111 | command-line argument to Flake8. This means stubs are linted by default with |
| 18112 | this plugin enabled, without needing to explicitly list every file. It |
| 18113 | modifies PyFlakes runs for @file{.pyi} files to defer checking type annotation |
| 18114 | expressions after the entire file has been read. This enables support for |
| 18115 | first-class forward references that stub files use.") |
| 18116 | (license license:expat))) |
| 18117 | |
| 18118 | (define-public python-flake8-quotes |
| 18119 | (package |
| 18120 | (name "python-flake8-quotes") |
| 18121 | (version "3.4.0") |
| 18122 | (source |
| 18123 | (origin |
| 18124 | (method url-fetch) |
| 18125 | (uri (pypi-uri "flake8-quotes" version)) |
| 18126 | (sha256 |
| 18127 | (base32 "0v1762x0819xqha7w4l4hh66bpi82imgiib8pvmd78hhnwplkn5a")))) |
| 18128 | (build-system pyproject-build-system) |
| 18129 | (native-inputs |
| 18130 | (list python-pytest |
| 18131 | python-setuptools |
| 18132 | python-wheel)) |
| 18133 | (propagated-inputs |
| 18134 | (list python-flake8)) |
| 18135 | (home-page "https://github.com/zheller/flake8-quotes/") |
| 18136 | (synopsis "Flake8 lint for quotes") |
| 18137 | (description "This package provides a Flake8 lint for quotes.") |
| 18138 | (license license:expat))) |
| 18139 | |
| 18140 | (define-public python-flake8-todo |
| 18141 | (package |
| 18142 | (name "python-flake8-todo") |
| 18143 | (version "0.7") |
| 18144 | (source |
| 18145 | (origin |
| 18146 | (method git-fetch) |
| 18147 | (uri (git-reference |
| 18148 | (url "https://github.com/schlamar/flake8-todo") |
| 18149 | (commit (string-append "v" version)))) |
| 18150 | (file-name (git-file-name name version)) |
| 18151 | (sha256 |
| 18152 | (base32 "0bx4bs9l6cvqk5v21my4dn0zmkrr0sajsw6f3x1dj4fpg3dp5d8s")))) |
| 18153 | (build-system pyproject-build-system) |
| 18154 | (arguments (list #:tests? #f)) ; No tests. |
| 18155 | (native-inputs (list python-setuptools)) |
| 18156 | (propagated-inputs (list python-pycodestyle)) |
| 18157 | (home-page "https://github.com/schlamar/flake8-todo") |
| 18158 | (synopsis "TODO notes checker, plugin for flake8") |
| 18159 | (description |
| 18160 | "This package provides the @code{flake8-todo} Python module, a |
| 18161 | TODO notes checker plugin for flake8.") |
| 18162 | (license license:expat))) |
| 18163 | |
| 18164 | (define-public python-flake8-isort |
| 18165 | (package |
| 18166 | (name "python-flake8-isort") |
| 18167 | (version "7.0.0") |
| 18168 | (source |
| 18169 | (origin |
| 18170 | (method git-fetch) |
| 18171 | (uri (git-reference |
| 18172 | (url "https://github.com/gforcada/flake8-isort") |
| 18173 | (commit version))) |
| 18174 | (file-name (git-file-name name version)) |
| 18175 | (sha256 |
| 18176 | (base32 "0d7j2ws59bm9143m69ah6h865i2pn97p4gjpwx6jrwi9sy26kj5z")))) |
| 18177 | (build-system pyproject-build-system) |
| 18178 | (arguments (list #:test-backend #~'custom |
| 18179 | #:test-flags #~(list "run_tests.py"))) |
| 18180 | (native-inputs (list python-hatchling python-pytest)) |
| 18181 | (propagated-inputs (list python-flake8 python-isort)) |
| 18182 | (home-page "https://github.com/gforcada/flake8-isort") |
| 18183 | (synopsis "Flake8 plugin integrating isort") |
| 18184 | (description |
| 18185 | "This package provides a flake8 plugin that integrates isort, |
| 18186 | extending flake8 so that it can warn about badly sorted Python import |
| 18187 | directives.") |
| 18188 | (license license:gpl2+))) |
| 18189 | |
| 18190 | (define-public python-autoflake |
| 18191 | (package |
| 18192 | (name "python-autoflake") |
| 18193 | (version "2.3.1") |
| 18194 | (source |
| 18195 | (origin |
| 18196 | (method url-fetch) |
| 18197 | (uri (pypi-uri "autoflake" version)) |
| 18198 | (sha256 |
| 18199 | (base32 "17lhrmz6h7pz2nald90p8gn3hhzbqwmd78819yf4b1habgf7b2y9")))) |
| 18200 | (build-system pyproject-build-system) |
| 18201 | (arguments |
| 18202 | (list |
| 18203 | #:phases |
| 18204 | #~(modify-phases %standard-phases |
| 18205 | (replace 'check |
| 18206 | (lambda _ |
| 18207 | (invoke "python" "test_autoflake.py")))))) |
| 18208 | (native-inputs |
| 18209 | (list python-hatchling)) |
| 18210 | (propagated-inputs |
| 18211 | (list python-pyflakes)) |
| 18212 | (home-page "https://github.com/myint/autoflake") |
| 18213 | (synopsis "Removes unused imports and unused variables") |
| 18214 | (description |
| 18215 | "@code{autoflake} removes unused imports and unused variables from Python |
| 18216 | code as reported by @code{pyflakes}. |
| 18217 | |
| 18218 | By default, it only removes unused imports for modules that are part of the |
| 18219 | standard library. Removal of unused variables is also disabled by default. |
| 18220 | It also removes useless @code{pass} statements.") |
| 18221 | (license license:expat))) |
| 18222 | |
| 18223 | (define-public python-mistune |
| 18224 | (package |
| 18225 | (name "python-mistune") |
| 18226 | (version "3.2.1") |
| 18227 | (source |
| 18228 | (origin |
| 18229 | (method git-fetch) |
| 18230 | (uri (git-reference |
| 18231 | (url "https://github.com/lepture/mistune") |
| 18232 | (commit (string-append "v" version)))) |
| 18233 | (file-name (git-file-name name version)) |
| 18234 | (sha256 |
| 18235 | (base32 "1zcfky6rr860mdbjxs1h0lhla39g8s3048xdnb24y0lnyj3h80gh")))) |
| 18236 | (build-system pyproject-build-system) |
| 18237 | (native-inputs |
| 18238 | (list python-pytest |
| 18239 | python-setuptools)) |
| 18240 | (home-page "https://github.com/lepture/mistune") |
| 18241 | (synopsis "Markdown parser in pure Python") |
| 18242 | (description |
| 18243 | "This package provides a fast markdown parser in pure Python.") |
| 18244 | (license license:bsd-3))) |
| 18245 | |
| 18246 | (define-public python-markdown |
| 18247 | (package |
| 18248 | (name "python-markdown") |
| 18249 | (version "3.10.2") |
| 18250 | (source |
| 18251 | (origin |
| 18252 | (method git-fetch) |
| 18253 | (uri (git-reference |
| 18254 | (url "https://github.com/Python-Markdown/markdown") |
| 18255 | (commit version))) |
| 18256 | (file-name (git-file-name name version)) |
| 18257 | (sha256 |
| 18258 | (base32 "1i7hn91zhg5blykvsdzr1hq00p8xqysdh1l73iypx9pd2pdvk7w9")))) |
| 18259 | (build-system pyproject-build-system) |
| 18260 | (native-inputs |
| 18261 | (list python-pyyaml |
| 18262 | python-setuptools)) |
| 18263 | (home-page "https://python-markdown.github.io/") |
| 18264 | (synopsis "Python implementation of Markdown") |
| 18265 | (description |
| 18266 | "This package provides a Python implementation of John Gruber's |
| 18267 | Markdown. The library features international input, various Markdown |
| 18268 | extensions, and several HTML output formats. A command line wrapper |
| 18269 | markdown_py is also provided to convert Markdown files to HTML.") |
| 18270 | (license license:bsd-3))) |
| 18271 | |
| 18272 | (define-public python-markdown2 |
| 18273 | (package |
| 18274 | (name "python-markdown2") |
| 18275 | (version "2.5.3") |
| 18276 | (source |
| 18277 | (origin |
| 18278 | (method git-fetch) ; no tests data in PyPi package |
| 18279 | (uri (git-reference |
| 18280 | (url "https://github.com/trentm/python-markdown2") |
| 18281 | (commit version))) |
| 18282 | (file-name (git-file-name name version)) |
| 18283 | (sha256 |
| 18284 | (base32 "136lwfhrbgdy3ci7qrkvcm5qx5c4xv4zwbnn57yfqg37pymflima")))) |
| 18285 | (build-system pyproject-build-system) |
| 18286 | (arguments |
| 18287 | (list |
| 18288 | #:test-backend #~'custom |
| 18289 | #:test-flags #~(list "test.py" "--" "-knownfailure") |
| 18290 | #:phases |
| 18291 | #~(modify-phases %standard-phases |
| 18292 | (add-before 'check 'pre-check |
| 18293 | (lambda _ |
| 18294 | (chdir "test")))))) |
| 18295 | (native-inputs |
| 18296 | (list ;; python-pygments ;optional, tests fail when added |
| 18297 | ;; python-wavedrom ;optional, not packaged |
| 18298 | ;; python-latex2mathml ;optional, not packaged |
| 18299 | python-setuptools)) |
| 18300 | (home-page "https://github.com/trentm/python-markdown2") |
| 18301 | (synopsis "Fast and complete Python implementation of Markdown") |
| 18302 | (description |
| 18303 | "This package provides a fast and complete Python implementation of |
| 18304 | Markdown. It was written to closely match the behaviour of the original |
| 18305 | Perl-implemented Markdown.pl. It also comes with a number of |
| 18306 | extensions (called @code{extras}) for things like syntax coloring, tables, |
| 18307 | header-ids.") |
| 18308 | (license license:expat))) |
| 18309 | |
| 18310 | (define-public python-mdx-include |
| 18311 | (package |
| 18312 | (name "python-mdx-include") |
| 18313 | (version "1.4.2") |
| 18314 | (source |
| 18315 | (origin |
| 18316 | (method git-fetch) |
| 18317 | (uri (git-reference |
| 18318 | (url "https://github.com/neurobin/mdx_include") |
| 18319 | (commit (string-append "v" version)))) |
| 18320 | (file-name (git-file-name name version)) |
| 18321 | (sha256 |
| 18322 | (base32 "01fk4y7hkl8a06qfd4a258l8rgcx7z7j4dzb80gk9md48l6p516a")))) |
| 18323 | (build-system pyproject-build-system) |
| 18324 | (arguments |
| 18325 | (list |
| 18326 | #:test-backend #~'unittest |
| 18327 | #:phases |
| 18328 | (let* ((django-hello-url "\ |
| 18329 | https://gist.github.com/drgarcia1986/3cce1d134c3c3eeb01bd/raw/\ |
| 18330 | 73951574d6b62a18b4c342235006ff89d299f879/django_hello.py") |
| 18331 | (django-hello |
| 18332 | (origin |
| 18333 | (method url-fetch) |
| 18334 | (uri django-hello-url) |
| 18335 | (sha256 (base32 "\ |
| 18336 | 13bqmfqwypnv3apxs9akpk3fqsk0yzys5slxfllj285npnka550r"))))) |
| 18337 | #~(modify-phases %standard-phases |
| 18338 | (add-before 'check 'disable-test-requiring-network |
| 18339 | (lambda _ |
| 18340 | (substitute* "mdx_include/test/test.py" |
| 18341 | (("(\\s+def )test_(config|non_existent)\\(" _ pre post) |
| 18342 | (string-append pre "__off__test_" post "(")) |
| 18343 | (((string-join (string-split #$django-hello-url #\.) "\\.")) |
| 18344 | #+django-hello)))))))) |
| 18345 | (native-inputs (list python-setuptools)) |
| 18346 | (propagated-inputs (list python-cyclic python-markdown python-rcslice)) |
| 18347 | (home-page "https://github.com/neurobin/mdx_include") |
| 18348 | (synopsis "Python Markdown extension to include local or remote files") |
| 18349 | (description "Include extension for Python Markdown. It lets you include |
| 18350 | local or remote (downloadable) files into your markdown at arbitrary |
| 18351 | positions. |
| 18352 | |
| 18353 | This project is motivated by markdown-include and provides the same |
| 18354 | functionalities with some extras.") |
| 18355 | (license license:bsd-3))) |
| 18356 | |
| 18357 | (define-public python-ptyprocess |
| 18358 | (package |
| 18359 | (name "python-ptyprocess") |
| 18360 | (version "0.7.0") |
| 18361 | (source |
| 18362 | (origin |
| 18363 | (method url-fetch) |
| 18364 | (uri (pypi-uri "ptyprocess" version)) |
| 18365 | (sha256 |
| 18366 | (base32 |
| 18367 | "081j893x6c9qrfszp8swfqlpvk8agh1jc32y9140pvnf90xhlpaw")))) |
| 18368 | (build-system pyproject-build-system) |
| 18369 | (native-inputs |
| 18370 | (list python-flit-core |
| 18371 | python-pytest)) |
| 18372 | (home-page "https://github.com/pexpect/ptyprocess") |
| 18373 | (synopsis "Run a subprocess in a pseudo terminal") |
| 18374 | (description |
| 18375 | "This package provides a Python library used to launch a subprocess in a |
| 18376 | pseudo terminal (pty), and interact with both the process and its pty.") |
| 18377 | (license license:isc))) |
| 18378 | |
| 18379 | (define-public python-configshell-fb |
| 18380 | (package |
| 18381 | (name "python-configshell-fb") |
| 18382 | (version "1.1.30") |
| 18383 | (source |
| 18384 | (origin |
| 18385 | (method url-fetch) |
| 18386 | (uri (pypi-uri "configshell-fb" version)) |
| 18387 | ;; XXX: Snippet below is required because on v1.1.30 the source code |
| 18388 | ;; has configshell_fb as softlink to configshell and guix |
| 18389 | ;; pyproject-build-system doesn't work with symlinks very well. |
| 18390 | ;; |
| 18391 | ;; This package is only used in spdk for now and it's crucial to keep |
| 18392 | ;; it locked on version and keep the snipped for spdk to build |
| 18393 | ;; successfully. |
| 18394 | (snippet #~(begin |
| 18395 | (use-modules (guix build utils)) |
| 18396 | (delete-file "setup.py") |
| 18397 | (delete-file-recursively "configshell_fb") |
| 18398 | (rename-file "configshell" "configshell_fb"))) |
| 18399 | (sha256 |
| 18400 | (base32 "1zkhf62qsfcbxwzlc62r6qx37wwyscppc469rlm45zy9lzmbgxj1")))) |
| 18401 | (build-system pyproject-build-system) |
| 18402 | (arguments |
| 18403 | (list #:tests? #f)) ;; this package has no tests |
| 18404 | (native-inputs |
| 18405 | (list python-setuptools |
| 18406 | python-six |
| 18407 | python-wheel)) |
| 18408 | (propagated-inputs |
| 18409 | (list python-pyparsing)) |
| 18410 | (home-page "https://github.com/open-iscsi/configshell-fb") |
| 18411 | (synopsis "Framework to implement simple but nice CLIs") |
| 18412 | (description |
| 18413 | "This package provides a framework to implement simple but nice CLIs.") |
| 18414 | (license license:asl2.0))) |
| 18415 | |
| 18416 | (define-public python-configupdater |
| 18417 | (package |
| 18418 | (name "python-configupdater") |
| 18419 | (version "3.2") |
| 18420 | (source |
| 18421 | (origin |
| 18422 | (method git-fetch) |
| 18423 | (uri (git-reference |
| 18424 | (url "https://github.com/pyscaffold/configupdater") |
| 18425 | (commit (string-append "v" version)))) |
| 18426 | (file-name (git-file-name name version)) |
| 18427 | (sha256 |
| 18428 | (base32 "0s2znph12lrs2wcnwz114153dkr1ccn2g7z8xcc83ypy15sbmz6r")))) |
| 18429 | (build-system pyproject-build-system) |
| 18430 | (native-inputs |
| 18431 | (list python-pytest python-setuptools python-setuptools-scm)) |
| 18432 | (home-page "https://github.com/pyscaffold/configupdater") |
| 18433 | (synopsis "Parser like ConfigParser but for updating configuration files") |
| 18434 | (description |
| 18435 | "ConfigUpdater is a Python library for updating INI configuration files |
| 18436 | while preserving the original file's formatting, structure, and comments. |
| 18437 | Unlike Python's standard ConfigParser, ConfigUpdater maintains minimal, |
| 18438 | targeted changes--keeping comments, section ordering, key-value pair |
| 18439 | ordering, and original casing intact.") |
| 18440 | (license license:expat))) |
| 18441 | |
| 18442 | (define-public python-crccheck |
| 18443 | (package |
| 18444 | (name "python-crccheck") |
| 18445 | (version "1.3.0") |
| 18446 | (source |
| 18447 | (origin |
| 18448 | (method git-fetch) ; no tests in PyPI |
| 18449 | (uri (git-reference |
| 18450 | (url "https://github.com/MartinScharrer/crccheck") |
| 18451 | (commit (string-append "v" version)))) |
| 18452 | (file-name (git-file-name name version)) |
| 18453 | (sha256 |
| 18454 | (base32 "1sagpmsh95si77nhqmxx6mbal2jbxpl4a3mqjfnz19mf2pfyvs4y")))) |
| 18455 | (build-system pyproject-build-system) |
| 18456 | (native-inputs (list python-pytest python-setuptools python-wheel)) |
| 18457 | (home-page "https://github.com/MartinScharrer/crccheck") |
| 18458 | (synopsis "Calculation library for CRCs and checksums") |
| 18459 | (description "@code{crccheck} is a calculation library for CRCs and |
| 18460 | checksums. It implement more than a hundred checksum routines.") |
| 18461 | (license license:gpl3+))) |
| 18462 | |
| 18463 | (define-public python-crashtest |
| 18464 | (package |
| 18465 | (name "python-crashtest") |
| 18466 | (version "0.4.1") |
| 18467 | (source |
| 18468 | (origin |
| 18469 | (method git-fetch) |
| 18470 | (uri (git-reference |
| 18471 | (url "https://github.com/sdispater/crashtest") |
| 18472 | (commit version))) |
| 18473 | (file-name (git-file-name name version)) |
| 18474 | (sha256 |
| 18475 | (base32 "180xrr1iw1614z7yrrnsigy0211q9985f9pbzjsj6rvrs6w7fm2d")))) |
| 18476 | (build-system pyproject-build-system) |
| 18477 | (native-inputs (list python-poetry-core python-pytest)) |
| 18478 | (home-page "https://github.com/sdispater/crashtest") |
| 18479 | (synopsis "Manage Python errors with ease") |
| 18480 | (description |
| 18481 | "Python library that makes exceptions handling and inspection easier.") |
| 18482 | (license license:expat))) |
| 18483 | |
| 18484 | (define-public python-pysendfile |
| 18485 | (package |
| 18486 | (name "python-pysendfile") |
| 18487 | (version "2.0.1") |
| 18488 | (source |
| 18489 | (origin |
| 18490 | (method git-fetch) |
| 18491 | (uri (git-reference |
| 18492 | (url "https://github.com/giampaolo/pysendfile") |
| 18493 | (commit (string-append "release-" version)))) |
| 18494 | (file-name (git-file-name name version)) |
| 18495 | (sha256 |
| 18496 | (base32 "1d2pcqad57l5ilc2icabybzzjgsg46djklhvyf17fgbkb0x3yc7c")))) |
| 18497 | (build-system pyproject-build-system) |
| 18498 | (arguments |
| 18499 | (list |
| 18500 | #:phases |
| 18501 | #~(modify-phases %standard-phases |
| 18502 | (replace 'check |
| 18503 | (lambda* (#:key tests? #:allow-other-keys) |
| 18504 | (when tests? |
| 18505 | (setenv "HOME" "/tmp") |
| 18506 | (invoke "make" "test"))))))) |
| 18507 | (native-inputs (list python-pytest python-setuptools)) |
| 18508 | (propagated-inputs (list python-pyasynchat)) |
| 18509 | (home-page "https://github.com/giampaolo/pysendfile") |
| 18510 | (synopsis "Python interface to sendfile(2)") |
| 18511 | (description "The @code{pysendfile} Python library provides an interface to |
| 18512 | the @code{sendfile(2)} system call.") |
| 18513 | (license license:expat))) |
| 18514 | |
| 18515 | (define-public python-pyftpdlib |
| 18516 | (package |
| 18517 | (name "python-pyftpdlib") |
| 18518 | (version "1.5.10") |
| 18519 | (source |
| 18520 | (origin |
| 18521 | (method url-fetch) |
| 18522 | (uri (pypi-uri "pyftpdlib" version)) |
| 18523 | (sha256 |
| 18524 | (base32 "0a3i1253d3qp9rqb64wdq908a05bn7yizqys92vjzfmw2l9fpgcd")))) |
| 18525 | (build-system pyproject-build-system) |
| 18526 | ;; Using Pytest instead of the Makefile causes the command line tests to |
| 18527 | ;; fail on unknown Pytest arguments. |
| 18528 | (arguments |
| 18529 | (list |
| 18530 | #:test-flags |
| 18531 | #~(list |
| 18532 | "-k" "not TestCommandLineParser" |
| 18533 | ;; These contains flaky tests. |
| 18534 | "--deselect=pyftpdlib/test/test_functional.py" |
| 18535 | "--deselect=pyftpdlib/test/test_functional_ssl.py"))) |
| 18536 | (native-inputs |
| 18537 | (list python-psutil |
| 18538 | python-pytest |
| 18539 | python-setuptools |
| 18540 | python-wheel)) |
| 18541 | (propagated-inputs |
| 18542 | (list python-pyopenssl |
| 18543 | python-pysendfile)) |
| 18544 | (home-page "https://github.com/giampaolo/pyftpdlib/") |
| 18545 | (synopsis "Asynchronous and scalable Python FTP server library") |
| 18546 | (description "The Python FTP server library provides a high-level |
| 18547 | interface to write efficient, scalable and asynchronous FTP servers with |
| 18548 | Python. It is the most complete @url{http://www.faqs.org/rfcs/rfc959.html, |
| 18549 | RFC-959} FTP server implementation available for Python, and has the following |
| 18550 | traits: |
| 18551 | @itemize |
| 18552 | @item |
| 18553 | It is lightweight, fast and scalable. |
| 18554 | @item |
| 18555 | It uses the @code{sendfile(2)} system call for uploads. |
| 18556 | @item |
| 18557 | It uses @code{epoll}, @code{kqueue} and @code{select} to handle concurrency |
| 18558 | asynchronously. |
| 18559 | @item |
| 18560 | It supports FTPS (@url{http://tools.ietf.org/html/rfc4217, RFC-4217}), |
| 18561 | IPv6 (RFC-2428), Unicode file names (@url{http://tools.ietf.org/html/rfc2640, |
| 18562 | RFC-2640}) and MLSD/MLST commands (RFC-3659). |
| 18563 | @item |
| 18564 | It has a flexible system of @samp{authorizers} able to manage both |
| 18565 | @samp{virtual} and @samp{real} users. |
| 18566 | @end itemize") |
| 18567 | (license license:expat))) |
| 18568 | |
| 18569 | (define-public python-fonttools |
| 18570 | (package |
| 18571 | (name "python-fonttools") |
| 18572 | (version "4.59.2") |
| 18573 | (source |
| 18574 | (origin |
| 18575 | (method url-fetch) |
| 18576 | (uri (pypi-uri "fonttools" version ".tar.gz")) |
| 18577 | (sha256 |
| 18578 | (base32 "08pgq9nrj3r81gzb6gbf5mcak0xyqrj26cw0rc5za4v1n14hfb77")))) |
| 18579 | (build-system pyproject-build-system) |
| 18580 | (arguments |
| 18581 | (list |
| 18582 | #:tests? (not (%current-target-system)) |
| 18583 | ;; tests: 4529 passed, 59 skipped, 8 deselected, 2 xfailed, 28 warnings, |
| 18584 | ;; 3 subtests passed |
| 18585 | #:test-flags |
| 18586 | #~(list "--deselect=tfmLib.py::fontTools.tfmLib" |
| 18587 | #$@(map (lambda (ls) (string-append "--deselect=Tests/" |
| 18588 | (string-join ls "::"))) |
| 18589 | ;; XXX: Some test data is not included in PyPI archive, |
| 18590 | ;; remove when switched to git-fetch. |
| 18591 | '(("cffLib/cffLib_test.py" "CffLibTest" |
| 18592 | "test_reading_supplement_encoding") |
| 18593 | ("tfmLib/tfmLib_test.py" |
| 18594 | "test_read_boundary_char") |
| 18595 | ("tfmLib/tfmLib_test.py" |
| 18596 | "test_read_fontdimens_vanilla") |
| 18597 | ("tfmLib/tfmLib_test.py" |
| 18598 | "test_read_fontdimens_mathex") |
| 18599 | ("tfmLib/tfmLib_test.py" |
| 18600 | "test_read_fontdimens_mathsy") |
| 18601 | ("voltLib/volttofea_test.py" "ToFeaTest" |
| 18602 | "test_cli_vtp") |
| 18603 | ("voltLib/volttofea_test.py" "ToFeaTest" |
| 18604 | "test_group_order")))))) |
| 18605 | (native-inputs |
| 18606 | (list python-pytest |
| 18607 | python-setuptools)) |
| 18608 | ;; All of them are listed as extras_require. |
| 18609 | (propagated-inputs |
| 18610 | (list python-brotli |
| 18611 | python-lxml |
| 18612 | python-unicodedata2 |
| 18613 | python-zopfli)) |
| 18614 | (home-page "https://github.com/fonttools/fonttools") |
| 18615 | (synopsis "Tools to manipulate font files") |
| 18616 | (description |
| 18617 | "FontTools/TTX is a library to manipulate font files from Python. It |
| 18618 | supports reading and writing of TrueType/OpenType fonts, reading and writing |
| 18619 | of AFM files, reading (and partially writing) of PS Type 1 fonts. The package |
| 18620 | also contains a tool called “TTX” which converts TrueType/OpenType fonts to and |
| 18621 | from an XML-based format.") |
| 18622 | (license license:expat))) |
| 18623 | |
| 18624 | ;;; Tests are left out in the main package to avoid cycles. |
| 18625 | ;; XXX: When updating, solve comment in python-cu2qu. |
| 18626 | (define-public python-fonttools-minimal |
| 18627 | (hidden-package |
| 18628 | (package |
| 18629 | (inherit python-fonttools) |
| 18630 | (name "python-fonttools-minimal") |
| 18631 | (arguments '(#:tests? #f)) |
| 18632 | (native-inputs |
| 18633 | (list python-setuptools)) |
| 18634 | (propagated-inputs '())))) |
| 18635 | |
| 18636 | (define-public python-ly |
| 18637 | (package |
| 18638 | (name "python-ly") |
| 18639 | (version "0.9.9") |
| 18640 | (source |
| 18641 | (origin |
| 18642 | (method git-fetch) |
| 18643 | (uri (git-reference |
| 18644 | (url "https://github.com/frescobaldi/python-ly") |
| 18645 | (commit (string-append "v" version)))) |
| 18646 | (file-name (git-file-name name version)) |
| 18647 | (sha256 |
| 18648 | (base32 "1q9jdvc4mrv3xkp7jm4g4kisq1k1d05b5d3wfvhpd85a9yqjrhq8")))) |
| 18649 | (build-system pyproject-build-system) |
| 18650 | (arguments |
| 18651 | (list |
| 18652 | #:phases |
| 18653 | (let ((namespace-url "http://www.w3.org/2001/03/xml.xsd") |
| 18654 | (xlink-url "http://www.w3.org/XML/2008/06/xlink.xsd")) |
| 18655 | #~(modify-phases %standard-phases |
| 18656 | (add-after 'unpack 'inject-data |
| 18657 | (lambda _ |
| 18658 | (substitute* "tests/musicxml.xsd" |
| 18659 | (((string-join (string-split #$namespace-url #\.) "\\.")) |
| 18660 | #$(origin |
| 18661 | (method url-fetch) |
| 18662 | (uri namespace-url) |
| 18663 | (sha256 (base32 "\ |
| 18664 | 1j6h0sp0pcqi5dv9m6sxwr8brrb59fyx091ld1x6wlh28js4vn8f")))) |
| 18665 | (((string-join (string-split #$xlink-url #\.) "\\.")) |
| 18666 | #$(origin |
| 18667 | (method url-fetch) |
| 18668 | (uri xlink-url) |
| 18669 | (sha256 (base32 "\ |
| 18670 | 0jpjha5iiq4rf4hx3qfnmyya9cf17ysxz0rbhsffn5nwgxnghgf8"))))))))))) |
| 18671 | (native-inputs (list python-hatchling python-lxml python-pytest)) |
| 18672 | (synopsis "Tool and library for manipulating LilyPond files") |
| 18673 | (description |
| 18674 | "This package provides a Python library to parse, manipulate or create |
| 18675 | documents in LilyPond format. A command line program ly is also provided that |
| 18676 | can be used to do various manipulations with LilyPond files.") |
| 18677 | (home-page "https://pypi.org/project/python-ly/") |
| 18678 | (license license:gpl2+))) |
| 18679 | |
| 18680 | (define-public python-appdirs |
| 18681 | (package |
| 18682 | (name "python-appdirs") |
| 18683 | (version "1.4.4") |
| 18684 | (source |
| 18685 | (origin |
| 18686 | (method url-fetch) |
| 18687 | (uri (pypi-uri "appdirs" version)) |
| 18688 | (sha256 |
| 18689 | (base32 "0hfzmwknxqhg20aj83fx80vna74xfimg8sk18wb85fmin9kh2pbx")))) |
| 18690 | (build-system pyproject-build-system) |
| 18691 | (arguments (list #:test-backend #~'unittest)) |
| 18692 | (native-inputs (list python-setuptools)) |
| 18693 | (home-page "https://github.com/ActiveState/appdirs") |
| 18694 | (synopsis "Determine platform-specific dirs, e.g. a \"user data dir\"") |
| 18695 | (description |
| 18696 | "This module provides a portable way of finding out where user data |
| 18697 | should be stored on various operating systems.") |
| 18698 | (license license:expat))) |
| 18699 | |
| 18700 | (define-public python-gorilla |
| 18701 | (package |
| 18702 | (name "python-gorilla") |
| 18703 | (version "0.5.0") |
| 18704 | (source |
| 18705 | (origin |
| 18706 | (method git-fetch) |
| 18707 | (uri (git-reference |
| 18708 | (url "https://github.com/christophercrouzet/gorilla") |
| 18709 | (commit (string-append "v" version)))) |
| 18710 | (file-name (git-file-name name version)) |
| 18711 | (sha256 |
| 18712 | (base32 "1j1ajnav99nlggqcpcpzg6hny3wgpsy4i8f1s9drx003m9ma2j7l")))) |
| 18713 | (build-system pyproject-build-system) |
| 18714 | (arguments (list #:test-backend #~'unittest)) |
| 18715 | (native-inputs (list python-setuptools)) |
| 18716 | (home-page "https://github.com/christophercrouzet/gorilla") |
| 18717 | (synopsis "Convenient monkey patching with Python") |
| 18718 | (description |
| 18719 | "Gorilla is a Python library that provides a convenient approach to |
| 18720 | monkey patching. Monkey patching is the process of modifying module and |
| 18721 | class attributes at runtime with the purpose of replacing or extending |
| 18722 | third-party code.") |
| 18723 | (license license:expat))) |
| 18724 | |
| 18725 | (define-public python-llfuse |
| 18726 | (package |
| 18727 | (name "python-llfuse") |
| 18728 | (version "1.5.1") |
| 18729 | (source |
| 18730 | (origin |
| 18731 | (method git-fetch) |
| 18732 | (uri (git-reference |
| 18733 | (url "https://github.com/python-llfuse/python-llfuse") |
| 18734 | (commit (string-append "release-" version)))) |
| 18735 | (file-name (git-file-name name version)) |
| 18736 | (sha256 |
| 18737 | (base32 "16wsrg1py4gvcxfgsfkll73lfq62psc0hcqvs73az7s4b1pvyy62")))) |
| 18738 | (build-system pyproject-build-system) |
| 18739 | (arguments |
| 18740 | (list |
| 18741 | #:test-flags |
| 18742 | #~(list "-k" "not test_listdir") ; requires /usr/bin access. |
| 18743 | #:phases |
| 18744 | #~(modify-phases %standard-phases |
| 18745 | (add-before 'build 'build-cython |
| 18746 | (lambda _ |
| 18747 | (invoke "python" "setup.py" "build_cython")))))) |
| 18748 | (inputs (list fuse-2 attr)) |
| 18749 | (native-inputs |
| 18750 | (list pkg-config python-cython python-pytest python-setuptools)) |
| 18751 | (synopsis "Python bindings for FUSE") |
| 18752 | (description |
| 18753 | "Python-LLFUSE is a set of Python bindings for the low level FUSE API.") |
| 18754 | (home-page "https://github.com/python-llfuse/python-llfuse") |
| 18755 | (license license:lgpl2.0+))) |
| 18756 | |
| 18757 | (define-public python-msgpack |
| 18758 | (package |
| 18759 | (name "python-msgpack") |
| 18760 | (version "1.1.2") |
| 18761 | (source |
| 18762 | (origin |
| 18763 | (method url-fetch) |
| 18764 | (uri (pypi-uri "msgpack" version)) |
| 18765 | (sha256 |
| 18766 | (base32 "0zpl4sb9zk7fh3abaxqlf65d0g3hvjy6k028k3rn1pbk2cy7cq1v")))) |
| 18767 | (build-system pyproject-build-system) |
| 18768 | (native-inputs |
| 18769 | (list python-pytest |
| 18770 | python-setuptools)) |
| 18771 | (home-page "https://msgpack.org/") |
| 18772 | (synopsis "MessagePack (de)serializer") |
| 18773 | (description "MessagePack is a fast, compact binary serialization format, |
| 18774 | suitable for similar data to JSON. This package provides CPython bindings for |
| 18775 | reading and writing MessagePack data.") |
| 18776 | (license license:asl2.0))) |
| 18777 | |
| 18778 | (define-public python-openstep-plist |
| 18779 | (package |
| 18780 | (name "python-openstep-plist") |
| 18781 | (version "0.5.2") |
| 18782 | (source |
| 18783 | (origin |
| 18784 | (method git-fetch) |
| 18785 | (uri (git-reference |
| 18786 | (url "https://github.com/fonttools/openstep-plist") |
| 18787 | (commit (string-append "v" version)))) |
| 18788 | (file-name (git-file-name name version)) |
| 18789 | (sha256 |
| 18790 | (base32 "0h6d9cm3chfwf05jdw5axf9ck38kpcsyj16bkdh5ipkgz3x4mwr6")))) |
| 18791 | (build-system pyproject-build-system) |
| 18792 | (native-inputs |
| 18793 | (list python-cython |
| 18794 | python-pytest |
| 18795 | python-setuptools-scm |
| 18796 | python-setuptools)) |
| 18797 | (home-page "https://github.com/fonttools/openstep-plist") |
| 18798 | (synopsis "OpenStep plist parser and writer") |
| 18799 | (description |
| 18800 | "This package provides a parser for the \"old style\" OpenStep property |
| 18801 | list format (also known as ASCII plist), written in Cython.") |
| 18802 | (license license:expat))) |
| 18803 | |
| 18804 | (define-public python-resolvelib |
| 18805 | (package |
| 18806 | (name "python-resolvelib") |
| 18807 | ;; Use latest commit, because last release, 1.2.1 is incompatible |
| 18808 | ;; with python-packaging 26, |
| 18809 | (properties '((commit . "a0cb7c50b78028f840b238d8e1c391e0546f2325") |
| 18810 | (revision . "0"))) |
| 18811 | (version (git-version "1.2.1" |
| 18812 | (assoc-ref properties 'revision) |
| 18813 | (assoc-ref properties 'commit))) |
| 18814 | (source |
| 18815 | (origin |
| 18816 | (method git-fetch) |
| 18817 | (uri (git-reference |
| 18818 | (url "https://github.com/sarugaku/resolvelib") |
| 18819 | (commit (assoc-ref properties 'commit)))) |
| 18820 | (file-name (git-file-name name version)) |
| 18821 | (sha256 |
| 18822 | (base32 "1f00jlcv7fal4y6iyvqsycc6b5mkvxgc0jdddbkm1jcci1qy1yfl")))) |
| 18823 | (build-system pyproject-build-system) |
| 18824 | (native-inputs |
| 18825 | (list python-packaging |
| 18826 | python-pytest |
| 18827 | python-setuptools |
| 18828 | python-wheel)) |
| 18829 | (home-page "https://github.com/sarugaku/resolvelib") |
| 18830 | (synopsis "Abstract dependencies resolver") |
| 18831 | (description |
| 18832 | "The ResolveLib library provides a @code{Resolver} class that includes |
| 18833 | dependency resolution logic.") |
| 18834 | (license license:isc))) |
| 18835 | |
| 18836 | ;; XXX: Deprecated package: this project was archived by the owner on Mar 26, |
| 18837 | ;; 2022. It is now read-only. |
| 18838 | (define-public python-commonmark |
| 18839 | (package |
| 18840 | (name "python-commonmark") |
| 18841 | (version "0.9.1") |
| 18842 | (source |
| 18843 | (origin |
| 18844 | (method url-fetch) |
| 18845 | (uri (pypi-uri "commonmark" version)) |
| 18846 | (sha256 |
| 18847 | (base32 "0q7d39lm8kcingpmykk5r959hrwwj6v2icyw3mihczxyb749sbs5")))) |
| 18848 | (build-system pyproject-build-system) |
| 18849 | (native-inputs |
| 18850 | (list python-setuptools)) |
| 18851 | (home-page "https://github.com/readthedocs/commonmark.py") |
| 18852 | (synopsis "Python parser for the CommonMark Markdown spec") |
| 18853 | (description |
| 18854 | "This module is a pure Python port of jgm's @code{commonmark.js}, a |
| 18855 | Markdown parser and renderer for the CommonMark specification, using only |
| 18856 | native modules.") |
| 18857 | (license license:bsd-3))) |
| 18858 | |
| 18859 | (define-public python-immutables |
| 18860 | (package |
| 18861 | (name "python-immutables") |
| 18862 | (version "0.21") |
| 18863 | (source |
| 18864 | (origin |
| 18865 | (method git-fetch) |
| 18866 | (uri (git-reference |
| 18867 | (url "https://github.com/MagicStack/immutables") |
| 18868 | (commit (string-append "v" version)))) |
| 18869 | (file-name (git-file-name name version)) |
| 18870 | (sha256 |
| 18871 | (base32 "1p5g20y7di5xglk6yyhb010vdmz73q9fsxpq0cm2gksp8mj856y1")))) |
| 18872 | (build-system pyproject-build-system) |
| 18873 | (arguments |
| 18874 | (list #:phases #~(modify-phases %standard-phases |
| 18875 | (add-after 'unpack 'remove-mypy-dependency |
| 18876 | (lambda _ |
| 18877 | (delete-file "tests/test_mypy.py") |
| 18878 | (delete-file "tests/conftest.py")))))) |
| 18879 | (native-inputs |
| 18880 | (list python-pytest python-setuptools python-wheel)) |
| 18881 | (home-page "https://github.com/MagicStack/immutables") |
| 18882 | (synopsis "High-performance immutable mapping type for Python") |
| 18883 | (description |
| 18884 | "An immutable mapping type for Python. The underlying datastructure is a |
| 18885 | Hash Array Mapped Trie (HAMT) used in Clojure, Scala, Haskell, and other |
| 18886 | functional languages.") |
| 18887 | (license license:asl2.0))) |
| 18888 | |
| 18889 | (define-public python-prettytable |
| 18890 | (package |
| 18891 | (name "python-prettytable") |
| 18892 | (version "3.12.0") |
| 18893 | (source |
| 18894 | (origin |
| 18895 | (method url-fetch) |
| 18896 | (uri (pypi-uri "prettytable" version)) |
| 18897 | (sha256 |
| 18898 | (base32 "0168xqdr0i9r4p3a3hjd4n7f133lp4xkxhvfx63aqisplcdkwjzh")))) |
| 18899 | (build-system pyproject-build-system) |
| 18900 | (native-inputs |
| 18901 | (list python-hatchling |
| 18902 | python-hatch-vcs |
| 18903 | python-pytest |
| 18904 | python-pytest-lazy-fixtures |
| 18905 | python-setuptools-scm)) |
| 18906 | (propagated-inputs |
| 18907 | (list python-wcwidth)) |
| 18908 | (home-page "https://github.com/jazzband/prettytable") |
| 18909 | (synopsis "Display tabular data in an ASCII table format") |
| 18910 | (description |
| 18911 | "A library designed to represent tabular data in visually appealing ASCII |
| 18912 | tables. PrettyTable allows for selection of which columns are to be printed, |
| 18913 | independent alignment of columns (left or right justified or centred) and |
| 18914 | printing of sub-tables by specifying a row range.") |
| 18915 | (license license:bsd-3))) |
| 18916 | |
| 18917 | (define-public python-rtf-tokenize |
| 18918 | (package |
| 18919 | (name "python-rtf-tokenize") |
| 18920 | (version "1.0.1") |
| 18921 | (source (origin |
| 18922 | (method url-fetch) |
| 18923 | (uri (pypi-uri "rtf_tokenize" version)) |
| 18924 | (sha256 |
| 18925 | (base32 |
| 18926 | "1ljs0dcg2p1iad4zrxgn1pbrrcjcrswhjxrbprhdxd822n0al84h")))) |
| 18927 | (build-system pyproject-build-system) |
| 18928 | (native-inputs (list python-pytest python-setuptools python-wheel)) |
| 18929 | (home-page "https://github.com/benoit-pierre/rtf_tokenize") |
| 18930 | (synopsis "Simple RTF tokenizer") |
| 18931 | (description "This package is a simple RTF tokenizer.") |
| 18932 | (license license:gpl2+))) |
| 18933 | |
| 18934 | (define-public python-sniffio |
| 18935 | (package |
| 18936 | (name "python-sniffio") |
| 18937 | (version "1.3.1") |
| 18938 | (source |
| 18939 | (origin |
| 18940 | (method url-fetch) |
| 18941 | (uri (pypi-uri "sniffio" version)) |
| 18942 | (sha256 |
| 18943 | (base32 "1p496yran6zwg47m7w26r8y89nrsbkrrbf4119slj3qaczf4wcpl")))) |
| 18944 | (build-system pyproject-build-system) |
| 18945 | (arguments |
| 18946 | (list |
| 18947 | #:test-flags |
| 18948 | #~(list "--deselect=sniffio/_tests/test_sniffio.py::test_curio"))) |
| 18949 | (native-inputs |
| 18950 | (list python-pytest python-setuptools)) |
| 18951 | (home-page "https://github.com/python-trio/sniffio") |
| 18952 | (synopsis "Detect which async library a program is running under") |
| 18953 | (description |
| 18954 | "This package detects which async library a program is running under. It |
| 18955 | supports multiple async I/O packages, like Trio, and asyncio.") |
| 18956 | ;; Either license applies. |
| 18957 | (license (list license:expat license:asl2.0)))) |
| 18958 | |
| 18959 | (define-public python-snuggs |
| 18960 | (package |
| 18961 | (name "python-snuggs") |
| 18962 | (version "1.4.7") |
| 18963 | (source (origin |
| 18964 | (method url-fetch) |
| 18965 | (uri (pypi-uri "snuggs" version)) |
| 18966 | (sha256 |
| 18967 | (base32 |
| 18968 | "0yv1wayrw9g6k0c2f721kha7wsv0s1fdlxpf5x7f34iqzq9z272h")))) |
| 18969 | (build-system pyproject-build-system) |
| 18970 | (propagated-inputs (list python-numpy python-pyparsing)) |
| 18971 | (native-inputs (list python-hypothesis python-pytest python-setuptools |
| 18972 | python-wheel)) |
| 18973 | (home-page "https://github.com/mapbox/snuggs") |
| 18974 | (synopsis "Snuggs are S-expressions for Numpy") |
| 18975 | (description "Snuggs are S-expressions for Numpy.") |
| 18976 | (license license:expat))) |
| 18977 | |
| 18978 | (define-public python-geojson |
| 18979 | (package |
| 18980 | (name "python-geojson") |
| 18981 | (version "3.2.0") |
| 18982 | (source |
| 18983 | (origin |
| 18984 | (method url-fetch) |
| 18985 | (uri (pypi-uri "geojson" version)) |
| 18986 | (sha256 |
| 18987 | (base32 "00s9h22vs4ppncwg3a0gh90czb2dd6d99qznypw72vwc3sxblq5q")))) |
| 18988 | (build-system pyproject-build-system) |
| 18989 | (native-inputs (list python-pytest python-setuptools)) |
| 18990 | (home-page "https://github.com/jazzband/geojson") |
| 18991 | (synopsis "Python bindings and utilities for GeoJSON") |
| 18992 | (description |
| 18993 | "This package provides Python bindings and utilities for |
| 18994 | @uref{http://geojson.org/, GeoJSON}, a format for encoding geographic data |
| 18995 | structures.") |
| 18996 | (license license:bsd-3))) |
| 18997 | |
| 18998 | ;; pyowm only accepts a version less than version 3. |
| 18999 | (define-public python-geojson-for-pyowm |
| 19000 | (package |
| 19001 | (inherit python-geojson) |
| 19002 | (version "2.5.0") |
| 19003 | (source |
| 19004 | (origin |
| 19005 | (method url-fetch) |
| 19006 | (uri (pypi-uri "geojson" version)) |
| 19007 | (sha256 |
| 19008 | (base32 "12k5bzqskvq3gqzkryarhdjl0df47y5k9cf8r3clasi2wjnbfjvf")))) |
| 19009 | (arguments |
| 19010 | ;; https://github.com/jazzband/geojson/issues/175 |
| 19011 | (list #:tests? #f)))) |
| 19012 | |
| 19013 | (define-public python-gpxpy |
| 19014 | (package |
| 19015 | (name "python-gpxpy") |
| 19016 | (version "1.6.2") |
| 19017 | (source |
| 19018 | (origin |
| 19019 | (method url-fetch) |
| 19020 | (uri (pypi-uri "gpxpy" version)) |
| 19021 | (sha256 |
| 19022 | (base32 "1bh1dkrbmcqb46r7j4fazzq7j6zfr2f04frm6h4bhhpcjx5lhb57")))) |
| 19023 | (build-system pyproject-build-system) |
| 19024 | (arguments |
| 19025 | (list #:test-backend #~'unittest)) |
| 19026 | (native-inputs |
| 19027 | (list python-setuptools)) |
| 19028 | (home-page "https://github.com/tkrajina/gpxpy") |
| 19029 | (synopsis "Python GPX parser") |
| 19030 | (description "GPX file parser and GPS track manipulation library.") |
| 19031 | (license license:asl2.0))) |
| 19032 | |
| 19033 | (define-public python-get-version |
| 19034 | (package |
| 19035 | (name "python-get-version") |
| 19036 | (version "3.5.5") |
| 19037 | (source |
| 19038 | (origin |
| 19039 | (method url-fetch) |
| 19040 | (uri (pypi-uri "get_version" version)) |
| 19041 | (sha256 |
| 19042 | (base32 |
| 19043 | "01afv4fkgrm8v9hiww3qymmx201b6z3f8lc4g6nzq7djappn581x")))) |
| 19044 | (build-system pyproject-build-system) |
| 19045 | (arguments |
| 19046 | ;; XXX: No tests in PyPI and building from GitHub fails because of the |
| 19047 | ;; lack of git metadata in the checkout. |
| 19048 | (list #:tests? #f)) |
| 19049 | (native-inputs (list python-flit-core)) |
| 19050 | (propagated-inputs (list python-dunamai)) |
| 19051 | (home-page "https://github.com/flying-sheep/get_version") |
| 19052 | (synopsis "Version helper in the spirit of versioneer") |
| 19053 | (description |
| 19054 | "This package provides a version helper that lets you automatically use |
| 19055 | the latest @code{vX.X.X} Git tag as the version in your Python package. It |
| 19056 | also supports getting the version from Python source distributions or, once |
| 19057 | your package is installed, via @code{pkg_resources} (part of |
| 19058 | @code{setuptools}).") |
| 19059 | (license license:gpl3+))) |
| 19060 | |
| 19061 | (define-public python-filetype |
| 19062 | (package |
| 19063 | (name "python-filetype") |
| 19064 | (version "1.2.0") |
| 19065 | (source |
| 19066 | (origin |
| 19067 | (method url-fetch) |
| 19068 | (uri (pypi-uri "filetype" version)) |
| 19069 | (sha256 |
| 19070 | (base32 "1nxa91szfbhhbhvdwj06jz8zghzwgb9lf0v6aj61vx2b8zb6rdb6")))) |
| 19071 | (build-system pyproject-build-system) |
| 19072 | (native-inputs (list python-pytest |
| 19073 | python-pytest-benchmark |
| 19074 | python-setuptools |
| 19075 | python-wheel)) |
| 19076 | (home-page "https://github.com/h2non/filetype.py") |
| 19077 | (synopsis "Infer file type and MIME type of any file/buffer") |
| 19078 | (description "@code{filetype} is a small and dependency free Python |
| 19079 | package to infer file type and MIME type checking the magic numbers |
| 19080 | signature of a file or buffer.") |
| 19081 | (license license:expat))) |
| 19082 | |
| 19083 | (define-public python-cachelib |
| 19084 | (package |
| 19085 | (name "python-cachelib") |
| 19086 | (version "0.13.0") |
| 19087 | (source |
| 19088 | (origin |
| 19089 | (method url-fetch) |
| 19090 | (uri (pypi-uri "cachelib" version)) |
| 19091 | (sha256 |
| 19092 | (base32 "0j0s5vyhgka6g16a7n9g1fcc8wqxdl8rgzvlwaz9axf5wfb8k790")))) |
| 19093 | (build-system pyproject-build-system) |
| 19094 | (arguments |
| 19095 | ;; These tests use a remote connection. |
| 19096 | (list #:test-flags #~(list "--ignore" "tests/test_dynamodb_cache.py" |
| 19097 | "--ignore" "tests/test_mongodb_cache.py"))) |
| 19098 | (native-inputs |
| 19099 | (list python-pytest python-pytest-xprocess python-setuptools python-wheel)) |
| 19100 | (home-page "https://github.com/pallets-eco/cachelib") |
| 19101 | (synopsis "Collection of cache libraries") |
| 19102 | (description "Cachelib is a library extracted from @code{werkzeug} which |
| 19103 | provides a collection of cache libraries in the same API interface.") |
| 19104 | (license license:bsd-3))) |
| 19105 | |
| 19106 | (define-public python-pylru |
| 19107 | (package |
| 19108 | (name "python-pylru") |
| 19109 | (version "1.2.0") |
| 19110 | (source |
| 19111 | (origin |
| 19112 | (method git-fetch) |
| 19113 | (uri (git-reference |
| 19114 | (url "https://github.com/jlhutch/pylru") |
| 19115 | (commit (string-append "v" version)))) |
| 19116 | (file-name (git-file-name name version)) |
| 19117 | (sha256 |
| 19118 | (base32 "0sqai530d7fpjzny476f3zqq9mv05xqbyw500jmbhrpj9yy1l9xp")))) |
| 19119 | (build-system pyproject-build-system) |
| 19120 | (arguments |
| 19121 | (list |
| 19122 | #:test-backend #~'custom |
| 19123 | #:test-flags #~(list "test.py"))) |
| 19124 | (native-inputs (list python-pytest python-setuptools)) |
| 19125 | (home-page "https://github.com/jlhutch/pylru") |
| 19126 | (synopsis "Least recently used (LRU) cache implementation") |
| 19127 | (description |
| 19128 | "Pylru implements a true LRU cache along with several support classes. |
| 19129 | Pylru provides a cache class with a simple dict interface. It also provides |
| 19130 | classes to wrap any object that has a dict interface with a cache. Both |
| 19131 | write-through and write-back semantics are supported. Pylru also provides |
| 19132 | classes to wrap functions in a similar way, including a function decorator.") |
| 19133 | (license license:gpl2+))) |
| 19134 | |
| 19135 | (define-public python-legacy-api-wrap |
| 19136 | (package |
| 19137 | (name "python-legacy-api-wrap") |
| 19138 | (version "1.5") |
| 19139 | (source |
| 19140 | (origin |
| 19141 | (method url-fetch) |
| 19142 | (uri (pypi-uri "legacy_api_wrap" version)) |
| 19143 | (sha256 |
| 19144 | (base32 |
| 19145 | "1wmdkhfbkwc9rwmnq3s55awh9gn3vsbpynm3jylf7gry5x9sc6xl")))) |
| 19146 | (build-system pyproject-build-system) |
| 19147 | (native-inputs |
| 19148 | (list python-hatch-docstring-description |
| 19149 | python-hatch-vcs |
| 19150 | python-hatchling |
| 19151 | python-pytest |
| 19152 | python-typer)) |
| 19153 | (home-page "https://github.com/flying-sheep/legacy-api-wrap") |
| 19154 | (synopsis "Legacy API wrapper") |
| 19155 | (description "This module defines a decorator to wrap legacy APIs. The |
| 19156 | primary use case is APIs defined before keyword-only parameters existed.") |
| 19157 | (license license:gpl3+))) |
| 19158 | |
| 19159 | (define-public python-langdetect |
| 19160 | (package |
| 19161 | (name "python-langdetect") |
| 19162 | (version "1.0.9") |
| 19163 | (source |
| 19164 | (origin |
| 19165 | (method url-fetch) |
| 19166 | (uri (pypi-uri "langdetect" version)) |
| 19167 | (sha256 |
| 19168 | (base32 "1805svvb7xjm4sf1j7b6nc3409x37pd1xmabfwwjf1ldkzwgxhfb")))) |
| 19169 | (build-system pyproject-build-system) |
| 19170 | (native-inputs |
| 19171 | (list python-pytest |
| 19172 | python-setuptools)) |
| 19173 | (propagated-inputs |
| 19174 | (list python-six)) |
| 19175 | (home-page "https://github.com/Mimino666/langdetect") |
| 19176 | (synopsis "Language detection library") |
| 19177 | (description |
| 19178 | "This library is a port of Nakatani Shuyo's language-detection library |
| 19179 | (version from 03/03/2014) to Python.") |
| 19180 | (license license:expat))) |
| 19181 | |
| 19182 | (define-public python-pyasn1 |
| 19183 | (package |
| 19184 | (name "python-pyasn1") |
| 19185 | (version "0.6.3") |
| 19186 | (source |
| 19187 | (origin |
| 19188 | (method git-fetch) |
| 19189 | (uri (git-reference |
| 19190 | (url "https://github.com/pyasn1/pyasn1") |
| 19191 | (commit (string-append "v" version)))) |
| 19192 | (file-name (git-file-name name version)) |
| 19193 | (sha256 |
| 19194 | (base32 "0b22m94j163nikfkl031hgrfasb6wgqp3374b8dbr84jalkl0ykw")))) |
| 19195 | (build-system pyproject-build-system) |
| 19196 | (arguments |
| 19197 | (list #:test-backend #~'unittest |
| 19198 | #:test-flags #~(list "discover" "tests"))) |
| 19199 | (native-inputs |
| 19200 | (list python-setuptools)) |
| 19201 | (home-page "https://github.com/pyasn1/pyasn1") |
| 19202 | (synopsis "ASN.1 types and codecs") |
| 19203 | (description |
| 19204 | "This is an implementation of ASN.1 types and codecs in Python. It is |
| 19205 | suitable for a wide range of protocols based on the ASN.1 specification.") |
| 19206 | (license license:bsd-2))) |
| 19207 | |
| 19208 | (define-public python-pyasn1-modules |
| 19209 | (package |
| 19210 | (name "python-pyasn1-modules") |
| 19211 | (version "0.4.2") |
| 19212 | (source |
| 19213 | (origin |
| 19214 | (method url-fetch) |
| 19215 | (uri (pypi-uri "pyasn1_modules" version)) |
| 19216 | (sha256 |
| 19217 | (base32 |
| 19218 | "1rj1x4333b20chwslljsihngllj6yls63jmi8klam00ahzg92w37")))) |
| 19219 | (build-system pyproject-build-system) |
| 19220 | (arguments |
| 19221 | (list #:test-backend #~'unittest |
| 19222 | #:test-flags #~(list "discover" "tests"))) |
| 19223 | (native-inputs |
| 19224 | (list python-setuptools)) |
| 19225 | (propagated-inputs |
| 19226 | (list python-pyasn1)) |
| 19227 | (home-page "https://github.com/pyasn1/pyasn1-modules") |
| 19228 | (synopsis "ASN.1 codec implementations") |
| 19229 | (description |
| 19230 | "Pyasn1-modules is a collection of Python modules providing ASN.1 types and |
| 19231 | implementations of ASN.1-based codecs and protocols.") |
| 19232 | (license license:bsd-3))) |
| 19233 | |
| 19234 | (define-public python-asn1tools |
| 19235 | (package |
| 19236 | (name "python-asn1tools") |
| 19237 | (version "0.167.0") |
| 19238 | (source |
| 19239 | (origin |
| 19240 | (method url-fetch) |
| 19241 | (uri (pypi-uri "asn1tools" version)) |
| 19242 | (sha256 |
| 19243 | (base32 "1cpm6m3znagc553bc5l0rhwg2fccrl0k8m1pbvn6x2kqdmpkzmfa")))) |
| 19244 | (build-system pyproject-build-system) |
| 19245 | (arguments |
| 19246 | (list |
| 19247 | #:test-flags |
| 19248 | #~(list "-k" (string-join |
| 19249 | ;; Tests fail with error: IndexError: string index out of |
| 19250 | ;; range. It may be some incompatibility with pyparsing, |
| 19251 | ;; see <https://github.com/eerimoq/asn1tools/issues/167>. |
| 19252 | (list "not test_c_source" |
| 19253 | "test_command_line_generate_c_source_oer" |
| 19254 | "test_command_line_generate_c_source_uper" |
| 19255 | "test_command_line_generate_rust_source_uper" |
| 19256 | "test_missing_parameterized_value" |
| 19257 | "test_c_source" |
| 19258 | "test_parse_parameterization") |
| 19259 | " and not ")))) |
| 19260 | (native-inputs |
| 19261 | (list python-pytest |
| 19262 | python-setuptools |
| 19263 | python-wheel)) |
| 19264 | (propagated-inputs |
| 19265 | (list python-bitstruct |
| 19266 | python-diskcache |
| 19267 | python-prompt-toolkit |
| 19268 | python-pyparsing)) |
| 19269 | (home-page "https://github.com/eerimoq/asn1tools") |
| 19270 | (synopsis "ASN.1 parsing, encoding and decoding") |
| 19271 | (description "This package provides ASN.1 parsing, encoding and decoding |
| 19272 | for Python, including constraints checking. It supports several |
| 19273 | codecs (e.g. BER, PER, UPER, XER) as well as limited C source code generating |
| 19274 | for OER and UPER.") |
| 19275 | (license license:expat))) |
| 19276 | |
| 19277 | (define-public python-idna |
| 19278 | (package |
| 19279 | (name "python-idna") |
| 19280 | (version "3.18") |
| 19281 | (source |
| 19282 | (origin |
| 19283 | (method git-fetch) |
| 19284 | (uri (git-reference |
| 19285 | (url "https://github.com/kjd/idna") |
| 19286 | (commit (string-append "v" version)))) |
| 19287 | (file-name (git-file-name name version)) |
| 19288 | (sha256 |
| 19289 | (base32 "0phrdwf6gqjpbs5kv3y6wbkvvpmq6kmjby674s8b9f6dsgzz4wpn")))) |
| 19290 | (build-system pyproject-build-system) |
| 19291 | (native-inputs |
| 19292 | (list python-flit-core python-pytest)) |
| 19293 | (home-page "https://github.com/kjd/idna") |
| 19294 | (synopsis "Internationalized domain names in applications") |
| 19295 | (description |
| 19296 | "This is a library to support the Internationalised Domain Names in |
| 19297 | Applications (IDNA) protocol as specified in RFC 5891. This version of the |
| 19298 | protocol is often referred to as “IDNA2008” and can produce different results |
| 19299 | from the earlier standard from 2003. The library is also intended to act as a |
| 19300 | suitable drop-in replacement for the “encodings.idna” module that comes with |
| 19301 | the Python standard library but currently only supports the older 2003 |
| 19302 | specification.") |
| 19303 | (license license:bsd-4))) |
| 19304 | |
| 19305 | (define-public python-libsass |
| 19306 | (package |
| 19307 | (name "python-libsass") |
| 19308 | (version "0.23.0") |
| 19309 | (source |
| 19310 | (origin |
| 19311 | ;; PyPI tarball is missing some test files. |
| 19312 | (method git-fetch) |
| 19313 | (uri (git-reference |
| 19314 | (url "https://github.com/sass/libsass-python") |
| 19315 | (commit version))) |
| 19316 | (file-name (git-file-name name version)) |
| 19317 | (sha256 |
| 19318 | (base32 "04jpk4y15k69chdnd64ks85bfn82071mbfiv2d1hl3y4zpvsn90a")))) |
| 19319 | (build-system pyproject-build-system) |
| 19320 | (arguments |
| 19321 | '(#:phases |
| 19322 | (modify-phases %standard-phases |
| 19323 | ;; Use Guix package of libsass instead of compiling from a checkout. |
| 19324 | (add-before 'build 'set-libsass |
| 19325 | (lambda _ (setenv "SYSTEM_SASS" "indeed"))) |
| 19326 | ;; XXX: Silent 2 failing tests, reported to upstream (closed), see |
| 19327 | ;; https://github.com/sass/libsass-python/issues/440. It passed with |
| 19328 | ;; [email protected] which requires rebuild the world (1200+ packages), |
| 19329 | ;; remove when v3.6.5 is available. |
| 19330 | (add-before 'check 'silent-failing-tests |
| 19331 | (lambda _ |
| 19332 | (substitute* "sasstests.py" |
| 19333 | (("def test_build_one") |
| 19334 | "def __off_test_build_one") |
| 19335 | (("def test_stack_trace_formatting") |
| 19336 | "def __off_test_stack_trace_formatting")))) |
| 19337 | (replace 'check |
| 19338 | (lambda* (#:key tests? #:allow-other-keys) |
| 19339 | (when tests? |
| 19340 | (invoke "pytest" "sasstests.py")))) |
| 19341 | (add-after 'install 'delete-test |
| 19342 | (lambda* (#:key inputs outputs #:allow-other-keys) |
| 19343 | ;; Delete sasstests.py because it attempts to open a file |
| 19344 | ;; that is not installed when loaded, which breaks the sanity |
| 19345 | ;; check. |
| 19346 | (delete-file (string-append |
| 19347 | (assoc-ref outputs "out") |
| 19348 | "/lib/python" |
| 19349 | (python-version |
| 19350 | (dirname (dirname |
| 19351 | (search-input-file inputs "bin/python")))) |
| 19352 | "/site-packages/sasstests.py"))))))) |
| 19353 | (native-inputs |
| 19354 | (list python-pytest python-setuptools python-werkzeug python-wheel)) |
| 19355 | (inputs |
| 19356 | (list libsass)) |
| 19357 | (home-page "https://sass.github.io/libsass-python/") |
| 19358 | (synopsis "Straightforward binding of libsass for Python") |
| 19359 | (description |
| 19360 | "This package provides a simple Python extension module @code{sass} which |
| 19361 | is binding LibSass.") |
| 19362 | (license license:expat))) |
| 19363 | |
| 19364 | ;; It may be removed after 2026-01-24. |
| 19365 | (define-deprecated/public-alias python-path-bootstrap python-path) |
| 19366 | |
| 19367 | (define-public python-pip-run |
| 19368 | (package |
| 19369 | (name "python-pip-run") |
| 19370 | (version "8.8.0") |
| 19371 | (source |
| 19372 | (origin |
| 19373 | (method git-fetch) |
| 19374 | (uri (git-reference |
| 19375 | (url "https://github.com/jaraco/pip-run") |
| 19376 | (commit (string-append "v" version)))) |
| 19377 | (file-name (git-file-name name version)) |
| 19378 | (sha256 |
| 19379 | (base32 "0ycrjj3jgqcr9c2k7y8vprq65iblg0q0hvwz8zwi13gmb0ffds0c")))) |
| 19380 | (build-system pyproject-build-system) |
| 19381 | (arguments |
| 19382 | (list |
| 19383 | #:tests? (not (%current-target-system)) |
| 19384 | #:test-flags |
| 19385 | #~(list "-k" (string-append |
| 19386 | ;; Do not test the myproject.toml build as it tries |
| 19387 | ;; to pull dependencies from the internet. |
| 19388 | "not project " |
| 19389 | ;; These tests attempt to install dependencies from |
| 19390 | ;; the network and fail. |
| 19391 | "and not test_pkg_imported " |
| 19392 | "and not test_pkg_loaded_from_alternate_index " |
| 19393 | "and not test_pkg_loaded_from_url ")))) |
| 19394 | (native-inputs |
| 19395 | (list python-nbformat |
| 19396 | python-pygments |
| 19397 | python-pytest |
| 19398 | python-setuptools |
| 19399 | python-setuptools-scm)) |
| 19400 | (propagated-inputs |
| 19401 | (list python-autocommand |
| 19402 | python-packaging |
| 19403 | python-path |
| 19404 | python-pip)) |
| 19405 | (home-page "https://github.com/jaraco/pip-run") |
| 19406 | (synopsis "Dynamic dependency loader for Python") |
| 19407 | (description "The @command{pip-run} command provides on-demand temporary |
| 19408 | package installation for a single interpreter run. It replaces this series of |
| 19409 | commands: |
| 19410 | @example |
| 19411 | $ virtualenv --python pythonX.X --system-site-packages /tmp/env |
| 19412 | $ /tmp/env/bin/pip install pkg1 pkg2 -r reqs.txt |
| 19413 | $ /tmp/env/bin/python ... |
| 19414 | $ rm -rf /tmp/env |
| 19415 | @end example") |
| 19416 | (license license:expat))) |
| 19417 | |
| 19418 | ;; It may be removed after 2026-01-24. |
| 19419 | (define-deprecated/public-alias python-pip-run-bootstrap python-pip-run) |
| 19420 | |
| 19421 | (define-public python-libarchive-c |
| 19422 | (package |
| 19423 | (name "python-libarchive-c") |
| 19424 | (version "5.2") |
| 19425 | (source (origin |
| 19426 | (method url-fetch) |
| 19427 | (uri (pypi-uri "libarchive_c" version)) |
| 19428 | (sha256 |
| 19429 | (base32 |
| 19430 | "05vl0pjpv5wqy9xybzixjv9anvih9yjx361c4rw6xbq9hpiahi7x")))) |
| 19431 | (build-system pyproject-build-system) |
| 19432 | (arguments |
| 19433 | (list |
| 19434 | #:phases |
| 19435 | #~(modify-phases %standard-phases |
| 19436 | (add-before 'build 'reference-libarchive |
| 19437 | (lambda* (#:key inputs #:allow-other-keys) |
| 19438 | ;; Retain the absolute file name of libarchive.so. |
| 19439 | (substitute* "libarchive/ffi.py" |
| 19440 | (("find_library\\('archive'\\)") |
| 19441 | (string-append |
| 19442 | "'" |
| 19443 | (search-input-file inputs "/lib/libarchive.so") |
| 19444 | "'")))))))) |
| 19445 | (native-inputs |
| 19446 | (list python-setuptools python-wheel python-pytest)) |
| 19447 | (inputs |
| 19448 | (list libarchive)) |
| 19449 | (home-page "https://github.com/Changaco/python-libarchive-c") |
| 19450 | (synopsis "Python interface to libarchive") |
| 19451 | (description |
| 19452 | "This package provides Python bindings to libarchive, a C library to |
| 19453 | access possibly compressed archives in many different formats. It uses |
| 19454 | Python's @code{ctypes} foreign function interface (FFI).") |
| 19455 | (license license:lgpl2.0+))) |
| 19456 | |
| 19457 | (define-public python-file |
| 19458 | (package/inherit file |
| 19459 | (name "python-file") |
| 19460 | (build-system pyproject-build-system) |
| 19461 | (arguments |
| 19462 | (list |
| 19463 | #:tests? #f ;no tests |
| 19464 | #:phases |
| 19465 | #~(modify-phases %standard-phases |
| 19466 | (add-before 'build 'change-directory |
| 19467 | (lambda _ |
| 19468 | (chdir "python"))) |
| 19469 | (add-before 'build 'set-library-file-name |
| 19470 | (lambda* (#:key inputs #:allow-other-keys) |
| 19471 | (substitute* "magic.py" |
| 19472 | (("find_library\\('magic'\\)") |
| 19473 | (format #f "~s" (search-input-file inputs |
| 19474 | "lib/libmagic.so"))))))))) |
| 19475 | (inputs (list file)) |
| 19476 | (native-inputs (cons* python-setuptools |
| 19477 | (if (%current-target-system) |
| 19478 | (list this-package) |
| 19479 | '()))) |
| 19480 | (synopsis "Python bindings to the libmagic file type guesser") |
| 19481 | (description "This package provides Python bindings to the libmagic file |
| 19482 | type guesser. |
| 19483 | |
| 19484 | Note that this module and the @code{python-magic} module both provide a |
| 19485 | @file{magic.py} file; these two modules, which are different and were |
| 19486 | developed separately, both serve the same purpose: provide Python bindings for |
| 19487 | libmagic."))) |
| 19488 | |
| 19489 | (define-public python-pydemumble |
| 19490 | (package |
| 19491 | (name "python-pydemumble") |
| 19492 | (version "0.0.1") |
| 19493 | (source |
| 19494 | (origin |
| 19495 | (method git-fetch) |
| 19496 | (uri (git-reference |
| 19497 | (url "https://github.com/angr/pydemumble") |
| 19498 | (commit (string-append "v" version)))) |
| 19499 | (file-name (git-file-name name version)) |
| 19500 | (sha256 |
| 19501 | (base32 "1hg5ywdsfyynn9hlr0xkafsv8i53b0s332f29ll13kk01630y0jp")) |
| 19502 | (patches (search-patches "python-pydemumble-system-nanobind.patch")))) |
| 19503 | (build-system pyproject-build-system) |
| 19504 | (arguments |
| 19505 | (list |
| 19506 | #:test-flags |
| 19507 | #~(list "discover" "-s" "tests") |
| 19508 | #:phases |
| 19509 | #~(modify-phases %standard-phases |
| 19510 | (add-after 'unpack 'set-demumble-source |
| 19511 | (lambda* _ |
| 19512 | ;; demumble is only a binary and not intended to be used as |
| 19513 | ;; a library. Therefore, python-pydemumble creates it's own |
| 19514 | ;; bindings for demumble, which are autogenerated from C code. |
| 19515 | (substitute* "CMakeLists.txt" |
| 19516 | (("src/demumble") |
| 19517 | #+(package-source demumble)))))))) |
| 19518 | (native-inputs (list python-nanobind python-scikit-build-core)) |
| 19519 | (home-page "https://github.com/angr/pydemumble") |
| 19520 | (synopsis "Python library for demangling symbol names") |
| 19521 | (description |
| 19522 | "This package provides a Python wrapper library for @code{demumble}, which |
| 19523 | is a tool to demangle C++, Rust, and Swift symbol names.") |
| 19524 | (license license:bsd-2))) |
| 19525 | |
| 19526 | (define-public python-pydevd |
| 19527 | (package |
| 19528 | (name "python-pydevd") |
| 19529 | (version "3.2.3") |
| 19530 | (source |
| 19531 | (origin |
| 19532 | (method git-fetch) |
| 19533 | (uri (git-reference |
| 19534 | (url "https://github.com/fabioz/PyDev.Debugger") |
| 19535 | (commit (string-append |
| 19536 | "pydev_debugger_" |
| 19537 | (string-join (string-split version #\.) "_"))))) |
| 19538 | (modules '((guix build utils))) |
| 19539 | (snippet '(begin |
| 19540 | ;; Delete pre-built binaries. |
| 19541 | (for-each delete-file (find-files "." "\\.(so|dylib|dll)")) |
| 19542 | ;; This source is generated via Cython. |
| 19543 | (delete-file "_pydevd_bundle/pydevd_cython.c"))) |
| 19544 | (file-name (git-file-name name version)) |
| 19545 | (sha256 |
| 19546 | (base32 |
| 19547 | "0a40574f0rx23gissxmrpjq9cimhjxqsq9wbv5l7620h3blb5510")))) |
| 19548 | (build-system pyproject-build-system) |
| 19549 | (arguments |
| 19550 | (list |
| 19551 | #:test-flags |
| 19552 | #~(list "-n" (number->string (parallel-job-count)) |
| 19553 | "-m" "not flaky" |
| 19554 | "-k" |
| 19555 | (string-join |
| 19556 | (list |
| 19557 | ;; The two "break_01" tests have been failing on |
| 19558 | ;; Python 3.10: |
| 19559 | ;; <https://github.com/fabioz/PyDev.Debugger/issues/222>. |
| 19560 | "not test_set_pydevd_break_01 " |
| 19561 | ;; the GUI event loop requires an X server. |
| 19562 | "test_gui_event_loop_custom" |
| 19563 | ;; This test validates that 'pydevd' is not in the |
| 19564 | ;; exception message, but it is due to being part |
| 19565 | ;; of the build file name present in the message. |
| 19566 | "test_evaluate_exception_trace" |
| 19567 | ;; This test fail with TimeoutError, no message on stderr. |
| 19568 | "test_soft_terminate" |
| 19569 | "test_debugger_case_deadlock_interrupt_thread" |
| 19570 | ;; subprocess.CalledProcessError |
| 19571 | ;; Python 3.11/3.12 specific issue: |
| 19572 | ;; <https://github.com/fabioz/PyDev.Debugger/issues/284>. |
| 19573 | "test_find_main_thread_id") |
| 19574 | " and not ")) |
| 19575 | #:phases |
| 19576 | #~(modify-phases %standard-phases |
| 19577 | (add-after 'unpack 'fix-tests |
| 19578 | (lambda _ |
| 19579 | (substitute* "tests_python/test_convert_utilities.py" |
| 19580 | ;; Add missing trailing '/'. |
| 19581 | (("\"\\\\\\\\usr\\\\\\\\bin\\\\\\\\\") == \"/usr/bin" all) |
| 19582 | (string-append all "/"))))) |
| 19583 | (add-after 'unpack 'patch-command-paths |
| 19584 | (lambda* (#:key inputs #:allow-other-keys) |
| 19585 | (substitute* "_pydevd_bundle/pydevd_api.py" |
| 19586 | (("'kill'") |
| 19587 | (format #f "~s" (search-input-file inputs "bin/kill"))) |
| 19588 | (("'pgrep'") |
| 19589 | (format #f "~s" (search-input-file inputs "bin/pgrep")))))) |
| 19590 | (add-after 'unpack 'generate-sources |
| 19591 | (lambda _ |
| 19592 | (setenv "PYTHONPATH" (getcwd)) |
| 19593 | (invoke "python" "build_tools/build.py"))) |
| 19594 | (add-after 'unpack 'adjust-attach-binary-name |
| 19595 | (lambda _ |
| 19596 | (substitute* |
| 19597 | '("pydevd_tracing.py" |
| 19598 | "pydevd_attach_to_process/add_code_to_python_process.py") |
| 19599 | (("def get_(target|python_helper_lib)_filename.*" all) |
| 19600 | (format #f "~a return ~s~%" all |
| 19601 | (string-append #$output "/lib/attach.so")))))) |
| 19602 | (add-after 'unpack 'patch-gdb |
| 19603 | (lambda* (#:key inputs #:allow-other-keys) |
| 19604 | (substitute* |
| 19605 | "pydevd_attach_to_process/add_code_to_python_process.py" |
| 19606 | (("'gdb',") |
| 19607 | (format #f "~s," (search-input-file inputs "bin/gdb")))))) |
| 19608 | (add-after 'build 'build-attach-linux-binary |
| 19609 | (lambda _ |
| 19610 | (invoke #+(cxx-for-target) "-shared" "-o" "attach.so" |
| 19611 | "-fPIC" "-nostartfiles" |
| 19612 | "pydevd_attach_to_process/linux_and_mac/attach.cpp"))) |
| 19613 | (add-before 'check 'pre-check |
| 19614 | (lambda* (#:key tests? #:allow-other-keys) |
| 19615 | (when tests? |
| 19616 | (setenv "PYDEVD_USE_CYTHON" "YES")))) |
| 19617 | (add-after 'install 'install-attach-binary |
| 19618 | (lambda _ |
| 19619 | (install-file "attach.so" |
| 19620 | (string-append #$output "/lib")))) |
| 19621 | ;; Some modules aren't designed to be loadable by themselves, such |
| 19622 | ;; as 'pydev_app_engine_debug_startup' and fail. |
| 19623 | (delete 'sanity-check)))) |
| 19624 | (native-inputs |
| 19625 | (list python-cython |
| 19626 | python-numpy |
| 19627 | python-psutil |
| 19628 | python-pytest |
| 19629 | python-pytest-xdist |
| 19630 | python-setuptools |
| 19631 | python-trio |
| 19632 | python-untangle |
| 19633 | python-wheel)) |
| 19634 | (inputs (list coreutils gdb/pinned procps)) |
| 19635 | (home-page "https://github.com/fabioz/PyDev.Debugger/") |
| 19636 | (synopsis "Python debugger") |
| 19637 | (description "PyDev.Debugger is a capable Python debugger used in PyDev |
| 19638 | and other @acronym{IDEs, Integrated Development Environments}.") |
| 19639 | (license license:epl1.0))) |
| 19640 | |
| 19641 | (define-public python-debugpy |
| 19642 | (package |
| 19643 | (name "python-debugpy") |
| 19644 | (version "1.8.17") |
| 19645 | (source |
| 19646 | (origin |
| 19647 | (method git-fetch) |
| 19648 | (uri (git-reference ;no tests in PyPI archive |
| 19649 | (url "https://github.com/microsoft/debugpy") |
| 19650 | (commit (string-append "v" version)))) |
| 19651 | (file-name (git-file-name name version)) |
| 19652 | (modules '((guix build utils))) |
| 19653 | ;; Remove the bundled PyDev-Debugger copy, including its pre-built |
| 19654 | ;; attach binary. |
| 19655 | (snippet '(delete-file-recursively "src/debugpy/_vendored")) |
| 19656 | (patches (search-patches "python-debugpy-unbundle-pydevd.patch")) |
| 19657 | (sha256 |
| 19658 | (base32 |
| 19659 | "12yhmayc21zcq16dv5hrp4n896d9v3b88hh1biqvj8gnrmsxvcwb")))) |
| 19660 | (build-system pyproject-build-system) |
| 19661 | (arguments |
| 19662 | (list |
| 19663 | #:tests? #f ;FIXME: Fail on systems with YAMA LSM’s ptrace scope > 0. |
| 19664 | #:phases |
| 19665 | #~(modify-phases %standard-phases |
| 19666 | (add-after 'unpack 'patch-sh-in-tests |
| 19667 | (lambda _ |
| 19668 | (substitute* "tests/debugpy/test_run.py" |
| 19669 | (("#!/bin/sh") |
| 19670 | (string-append "#!" (which "sh")))))) |
| 19671 | (add-before 'build 'configure |
| 19672 | (lambda _ |
| 19673 | ;; This adjusts the behavior of debugpy to load pydevd from |
| 19674 | ;; Python site packages. |
| 19675 | (setenv "DEBUGPY_BUNDLING_DISABLED" "1")))))) |
| 19676 | (native-inputs |
| 19677 | (list python-setuptools |
| 19678 | python-versioneer)) |
| 19679 | (propagated-inputs |
| 19680 | (list python-pydevd)) |
| 19681 | (home-page "https://aka.ms/debugpy") |
| 19682 | (synopsis "Debug Adapter Protocol Python implementation") |
| 19683 | (description "An implementation of the Debug Adapter Protocol for |
| 19684 | Python.") |
| 19685 | (license license:expat))) |
| 19686 | |
| 19687 | (define-public python-debian |
| 19688 | (package |
| 19689 | (name "python-debian") |
| 19690 | (home-page "https://salsa.debian.org/python-debian-team/python-debian") |
| 19691 | (version "0.1.49") |
| 19692 | (source |
| 19693 | (origin |
| 19694 | ;; Use git-fetch, as pypi doesn't include test suite. |
| 19695 | (method git-fetch) |
| 19696 | (uri (git-reference |
| 19697 | (url home-page) |
| 19698 | (commit version))) |
| 19699 | (file-name (git-file-name name version)) |
| 19700 | (sha256 |
| 19701 | (base32 |
| 19702 | "190vy2ns0650icpwvv4qp6kr3c3i9jszy1vkdwpigxb96fs1bqf3")) |
| 19703 | (modules '((guix build utils))) |
| 19704 | (snippet |
| 19705 | #~(begin |
| 19706 | ;; python-apt, apt and dpkg are not yet available in guix, |
| 19707 | ;; and these tests heavily depend on them. |
| 19708 | (for-each delete-file |
| 19709 | '("lib/debian/tests/test_deb822.py" |
| 19710 | "lib/debian/tests/test_debfile.py")) |
| 19711 | |
| 19712 | ;; for reproducible builds, otherwise python-debian |
| 19713 | ;; generates a _version.py including the date |
| 19714 | (copy-file "lib/debian/_version.py.in" "lib/debian/_version.py") |
| 19715 | (substitute* "lib/debian/_version.py" |
| 19716 | (("__CHANGELOG_VERSION__") #$version)))))) |
| 19717 | (build-system pyproject-build-system) |
| 19718 | (native-inputs |
| 19719 | (list python-pytest python-setuptools)) |
| 19720 | (propagated-inputs |
| 19721 | (list python-six python-chardet)) |
| 19722 | (synopsis "Debian package related modules") |
| 19723 | (description |
| 19724 | "This package provides Python modules that abstract many formats of |
| 19725 | Debian-related files, such as: |
| 19726 | @itemize |
| 19727 | @item Debtags information; |
| 19728 | @item @file{debian/changelog} files; |
| 19729 | @item packages files, pdiffs; |
| 19730 | @item control files of single or multiple RFC822-style paragraphs---e.g. |
| 19731 | @file{debian/control}, @file{.changes}, @file{.dsc}; |
| 19732 | @item Raw @file{.deb} and @file{.ar} files, with (read-only) access to |
| 19733 | contained files and meta-information. |
| 19734 | @end itemize") |
| 19735 | ;; Modules are either GPLv2+ or GPLv3+. |
| 19736 | (license license:gpl3+))) |
| 19737 | |
| 19738 | (define-public python-json-spec |
| 19739 | (package |
| 19740 | (name "python-json-spec") |
| 19741 | (version "0.12.0") |
| 19742 | (source |
| 19743 | (origin |
| 19744 | (method git-fetch) ;no tests in PyPI archive |
| 19745 | (uri (git-reference |
| 19746 | (url "https://github.com/johnnoone/json-spec") |
| 19747 | (commit version))) |
| 19748 | (file-name (git-file-name name version)) |
| 19749 | (sha256 |
| 19750 | (base32 "14lzvpfi8vpwn2hsizljcyiiywfc1fssj0hh079jxw4xwjkm9328")))) |
| 19751 | (build-system pyproject-build-system) |
| 19752 | (native-inputs |
| 19753 | (list python-pytest |
| 19754 | python-poetry-core)) |
| 19755 | (propagated-inputs |
| 19756 | (list python-termcolor)) ;for the CLI |
| 19757 | (home-page "https://json-spec.readthedocs.io/") |
| 19758 | (synopsis "JSON Schema, JSON Pointer and JSON Reference for Python") |
| 19759 | (description |
| 19760 | "This Python library implements several JSON specs, like JSON Schema, |
| 19761 | JSON Reference and JSON Pointer.") |
| 19762 | (license license:bsd-3))) |
| 19763 | |
| 19764 | (define-public python-fastbencode |
| 19765 | (package |
| 19766 | (name "python-fastbencode") |
| 19767 | (version "0.3.9") |
| 19768 | (source |
| 19769 | (origin |
| 19770 | (method git-fetch) |
| 19771 | (uri (git-reference |
| 19772 | (url "https://github.com/breezy-team/fastbencode") |
| 19773 | (commit (string-append "v" version)))) |
| 19774 | (file-name (git-file-name name version)) |
| 19775 | (sha256 |
| 19776 | (base32 "0d4sd1c2yv85spxx2gvi2fm0avlgpnb7nfkvw7hpxlx6qlaqi4ad")))) |
| 19777 | (build-system pyproject-build-system) |
| 19778 | (arguments |
| 19779 | (list |
| 19780 | #:test-backend #~'unittest |
| 19781 | #:test-flags #~(list "tests.test_suite") |
| 19782 | #:imported-modules (append %cargo-build-system-modules |
| 19783 | %pyproject-build-system-modules) |
| 19784 | #:modules '(((guix build cargo-build-system) #:prefix cargo:) |
| 19785 | (guix build pyproject-build-system) |
| 19786 | (guix build utils)) |
| 19787 | #:phases |
| 19788 | #~(modify-phases %standard-phases |
| 19789 | (add-after 'unpack 'prepare-cargo-build-system |
| 19790 | (lambda args |
| 19791 | (for-each |
| 19792 | (lambda (phase) |
| 19793 | (format #t "Running cargo phase: ~a~%" phase) |
| 19794 | (apply (assoc-ref cargo:%standard-phases phase) |
| 19795 | #:cargo-target #$(cargo-triplet) |
| 19796 | args)) |
| 19797 | '(unpack-rust-crates |
| 19798 | configure |
| 19799 | check-for-pregenerated-files |
| 19800 | patch-cargo-checksums))))))) |
| 19801 | (inputs (cargo-inputs 'fastbencode)) |
| 19802 | (native-inputs |
| 19803 | (append |
| 19804 | (list python-setuptools-rust |
| 19805 | rust |
| 19806 | `(,rust "cargo")) |
| 19807 | (or (and=> (%current-target-system) |
| 19808 | (compose list make-rust-sysroot)) |
| 19809 | '()))) |
| 19810 | (home-page "https://github.com/breezy-team/fastbencode") |
| 19811 | (synopsis "Python Bencode (de)serializer with optional fast C extensions") |
| 19812 | (description |
| 19813 | "The fastbencode Python package implements the bencode serialization |
| 19814 | format for storing and transmitting loosely structured data, originally used |
| 19815 | by BitTorrent. |
| 19816 | |
| 19817 | The format can encode four different types of values: byte strings, integers, |
| 19818 | lists, and dictionaries (associative arrays). It's simple and unaffected by |
| 19819 | endianness, |
| 19820 | |
| 19821 | This package includes both a pure-Python version and an optional C extension |
| 19822 | based on Cython. Both provide the same functionality, but the C version has |
| 19823 | significantly better performance.") |
| 19824 | (license (list license:expat ; _bencode_py.py |
| 19825 | license:gpl2+)))) ; __init__.py |
| 19826 | |
| 19827 | (define-public python-fastjsonschema |
| 19828 | (package |
| 19829 | (name "python-fastjsonschema") |
| 19830 | (version "2.21.1") |
| 19831 | (source |
| 19832 | (origin |
| 19833 | (method git-fetch) ; no tests in PyPI release |
| 19834 | (uri (git-reference |
| 19835 | (url "https://github.com/horejsek/python-fastjsonschema") |
| 19836 | (commit (string-append "v" version)))) |
| 19837 | (file-name (git-file-name name version)) |
| 19838 | (sha256 |
| 19839 | (base32 "1j7dc8hlvrlhzkiv0vqzd6shhjaf14g9v3zlfn7x17j04c1g3iz7")))) |
| 19840 | (build-system pyproject-build-system) |
| 19841 | (arguments |
| 19842 | (list |
| 19843 | #:test-flags #~(list "--ignore=tests/benchmarks/test_benchmark.py"))) |
| 19844 | (native-inputs |
| 19845 | (list python-json-spec |
| 19846 | python-jsonschema |
| 19847 | python-pytest |
| 19848 | python-pytest-benchmark |
| 19849 | python-setuptools)) |
| 19850 | (home-page "https://github.com/horejsek/python-fastjsonschema") |
| 19851 | (synopsis "Fast Python implementation of JSON schema") |
| 19852 | (description |
| 19853 | "This library implements validation of JSON documents by JSON schema for |
| 19854 | drafts 04, 06 and 07.") |
| 19855 | (license license:bsd-3))) |
| 19856 | |
| 19857 | (define-public python-nbformat |
| 19858 | (package |
| 19859 | (name "python-nbformat") |
| 19860 | (version "5.10.4") |
| 19861 | ;; The PyPi release tarball lacks some test cases and test data. |
| 19862 | (source (origin |
| 19863 | (method git-fetch) |
| 19864 | (uri (git-reference |
| 19865 | (url "https://github.com/jupyter/nbformat") |
| 19866 | (commit (string-append "v" version)))) |
| 19867 | (sha256 |
| 19868 | (base32 |
| 19869 | "0abd1d8iq21dwh17m72na2f3kr6a5p6ji1gnykf06jshikalj2x3")) |
| 19870 | (file-name (git-file-name name version)))) |
| 19871 | (build-system pyproject-build-system) |
| 19872 | (arguments |
| 19873 | (list |
| 19874 | #:phases |
| 19875 | #~(modify-phases %standard-phases |
| 19876 | ;; We don't want to use hatch-nodejs just to get a version string. |
| 19877 | (add-after 'unpack 'patch-pyproject |
| 19878 | (lambda _ |
| 19879 | (substitute* "pyproject.toml" |
| 19880 | ((", \"hatch-nodejs-version\"") "") |
| 19881 | (("dynamic = \\[\"version\"\\]") |
| 19882 | (string-append "version = \"" #$version "\"")))))))) |
| 19883 | (propagated-inputs |
| 19884 | (list python-fastjsonschema python-jsonschema python-jupyter-core |
| 19885 | python-traitlets)) |
| 19886 | (native-inputs |
| 19887 | (list python-hatchling |
| 19888 | python-pep440 |
| 19889 | python-pytest |
| 19890 | python-testpath)) |
| 19891 | (home-page "https://jupyter.org") |
| 19892 | (synopsis "Jupyter Notebook format") |
| 19893 | (description "This package provides the reference implementation of the |
| 19894 | Jupyter Notebook format and Python APIs for working with notebooks.") |
| 19895 | (license license:bsd-3))) |
| 19896 | |
| 19897 | (define-public python-nb-clean |
| 19898 | (package |
| 19899 | (name "python-nb-clean") |
| 19900 | (version "4.0.1") |
| 19901 | (source |
| 19902 | (origin |
| 19903 | (method git-fetch) ; no tests in PyPI |
| 19904 | (uri (git-reference |
| 19905 | (url "https://github.com/srstevenson/nb-clean") |
| 19906 | (commit version))) |
| 19907 | (file-name (git-file-name name version)) |
| 19908 | (sha256 |
| 19909 | (base32 "1pa4m1qn7gx77lg3vy7y7vlyl45cg9ai9z93ds9ax108mbnrbdw7")))) |
| 19910 | (build-system pyproject-build-system) |
| 19911 | (native-inputs (list python-poetry-core |
| 19912 | python-pytest |
| 19913 | python-pytest-mock)) |
| 19914 | (propagated-inputs (list python-nbformat)) |
| 19915 | (home-page "https://github.com/srstevenson/nb-clean") |
| 19916 | (synopsis "Clean Jupyter notebooks for versioning") |
| 19917 | (description "This package cleans Jupyter notebooks of cell execution |
| 19918 | counts, metadata, outputs, and empty cells, preparing them for committing to |
| 19919 | version control. It provides a Git filter to automatically clean notebooks |
| 19920 | before they're staged, and can also be used with other version control |
| 19921 | systems, as a command line tool, and as a Python library.") |
| 19922 | (license license:isc))) |
| 19923 | |
| 19924 | (define-public python-entrypoints |
| 19925 | (package |
| 19926 | (name "python-entrypoints") |
| 19927 | (version "0.4") |
| 19928 | (source |
| 19929 | (origin |
| 19930 | (method url-fetch) |
| 19931 | (uri (pypi-uri "entrypoints" version)) |
| 19932 | (sha256 |
| 19933 | (base32 "1m5crkagmbvlgdwqv7nan64pbcjvy0c6idb7rpmik2i1m7dfs1mp")))) |
| 19934 | (build-system pyproject-build-system) |
| 19935 | (native-inputs |
| 19936 | (list python-flit-core |
| 19937 | python-pytest)) |
| 19938 | (home-page "https://github.com/takluyver/entrypoints") |
| 19939 | (synopsis "Discover and load entry points from installed Python packages") |
| 19940 | (description "Entry points are a way for Python packages to advertise |
| 19941 | objects with some common interface. The most common examples are |
| 19942 | @code{console_scripts} entry points, which define shell commands by |
| 19943 | identifying a Python function to run. The @code{entrypoints} module contains |
| 19944 | functions to find and load entry points.") |
| 19945 | (license license:expat))) |
| 19946 | |
| 19947 | (define-public python-epc |
| 19948 | (package |
| 19949 | (name "python-epc") |
| 19950 | (properties '((commit . "f3673ae5c35f20a0f71546ab34c28e3dde3595c1") |
| 19951 | (revision . "0"))) |
| 19952 | (version (git-version "0.0.5" |
| 19953 | (assoc-ref properties 'revision) |
| 19954 | (assoc-ref properties 'commit))) |
| 19955 | (source |
| 19956 | (origin |
| 19957 | (method git-fetch) |
| 19958 | (uri (git-reference |
| 19959 | (url "https://github.com/tkf/python-epc") |
| 19960 | (commit (assoc-ref properties 'commit)))) |
| 19961 | (file-name (git-file-name name version)) |
| 19962 | (sha256 |
| 19963 | (base32 "0q27bj49yan2qg6i8m5czs5b5jv26ff42yz7j4r5652s7j3f42mm")))) |
| 19964 | (build-system pyproject-build-system) |
| 19965 | (arguments (list #:test-backend #~'nose)) |
| 19966 | (propagated-inputs (list python-sexpdata)) |
| 19967 | (native-inputs (list python-pynose python-setuptools)) |
| 19968 | (home-page "https://github.com/tkf/python-epc") |
| 19969 | (synopsis "Remote procedure call (RPC) stack for Emacs Lisp and Python") |
| 19970 | (description |
| 19971 | "Python-EPC can call elisp functions from Python and Python functions |
| 19972 | from elisp.") |
| 19973 | (license license:gpl3))) |
| 19974 | |
| 19975 | (define-public python-forex-python |
| 19976 | (package |
| 19977 | (name "python-forex-python") |
| 19978 | (version "1.5") |
| 19979 | (source |
| 19980 | (origin |
| 19981 | (method git-fetch) |
| 19982 | (uri (git-reference |
| 19983 | (url "https://github.com/MicroPyramid/forex-python") |
| 19984 | (commit version))) |
| 19985 | (file-name (git-file-name name version)) |
| 19986 | (sha256 |
| 19987 | (base32 "0pl5sfd0wkv1a2y324l518h6sing7wkadrbr5xcf6hjykn2mbi5h")))) |
| 19988 | (build-system pyproject-build-system) |
| 19989 | (arguments (list #:tests? #f)) ; Tests require online data. |
| 19990 | (native-inputs (list python-setuptools)) |
| 19991 | (propagated-inputs (list python-requests python-simplejson)) |
| 19992 | (home-page "https://github.com/MicroPyramid/forex-python") |
| 19993 | (synopsis "Foreign exchange rates and currency conversion") |
| 19994 | (description |
| 19995 | "@code{python-forex-python} can be used to manipulate foreign |
| 19996 | exchange rates and to operate currency conversions. |
| 19997 | |
| 19998 | Features: |
| 19999 | @itemize |
| 20000 | @item List all currency rates. |
| 20001 | @item BitCoin price for all currencies. |
| 20002 | @item Converting amount to BitCoins. |
| 20003 | @item Get historical rates for any day since 1999. |
| 20004 | @item Conversion rate for one currency(ex; USD to INR). |
| 20005 | @item Convert amount from one currency to other.('USD 10$' to INR). |
| 20006 | @item Currency symbols. |
| 20007 | @item Currency names. |
| 20008 | @end itemize") |
| 20009 | (license license:expat))) |
| 20010 | |
| 20011 | (define-public python-simpleeval |
| 20012 | (package |
| 20013 | (name "python-simpleeval") |
| 20014 | (version "0.9.12") |
| 20015 | (source |
| 20016 | (origin |
| 20017 | (method git-fetch) |
| 20018 | (uri (git-reference |
| 20019 | (url "https://github.com/danthedeckie/simpleeval") |
| 20020 | (commit version))) |
| 20021 | (file-name (git-file-name name version)) |
| 20022 | (sha256 |
| 20023 | (base32 "0khgl729q5133fgc00d550f4r77707rkkn7r56az4v8bvx0q8xp4")))) |
| 20024 | (build-system pyproject-build-system) |
| 20025 | (native-inputs (list python-pytest python-setuptools)) |
| 20026 | (home-page "https://github.com/danthedeckie/simpleeval") |
| 20027 | (synopsis "Simple, safe single expression evaluator library") |
| 20028 | (description |
| 20029 | "This package provides a quick single file library for easily adding |
| 20030 | evaluatable expressions into python projects. Say you want to allow a user |
| 20031 | to set an alarm volume, which could depend on the time of day, alarm level, |
| 20032 | how many previous alarms had gone off, and if there is music playing at the |
| 20033 | time.") |
| 20034 | (license license:expat))) |
| 20035 | |
| 20036 | (define-public python-haas |
| 20037 | ;; A recent revision is required to avoid obsoleted dependencies. |
| 20038 | (let ((commit "e9c45e88b682c9129ea0971ba31671429495de2c") |
| 20039 | (revision "0")) |
| 20040 | (package |
| 20041 | (name "python-haas") |
| 20042 | (version (git-version "0.9.0" revision commit)) |
| 20043 | (source |
| 20044 | (origin |
| 20045 | (method git-fetch) |
| 20046 | (uri (git-reference |
| 20047 | (url "https://github.com/scalative/haas") |
| 20048 | (commit commit))) |
| 20049 | (file-name (git-file-name name version)) |
| 20050 | (sha256 |
| 20051 | (base32 "0hxfinnyc2jb5sgq8zwyn6zn63jb18p92pdz65fvhgf8w2r4ci13")))) |
| 20052 | (build-system pyproject-build-system) |
| 20053 | (propagated-inputs |
| 20054 | (list python-stevedore)) |
| 20055 | (native-inputs |
| 20056 | (list python-coverage |
| 20057 | python-pytest |
| 20058 | python-setuptools |
| 20059 | python-testfixtures)) |
| 20060 | (home-page "https://github.com/scalative/haas") |
| 20061 | (synopsis "Extensible Python test runner") |
| 20062 | (description "Haas is a python test runner that is backward-compatible |
| 20063 | with Python's built-in unittest test-cases, but supports more advanced |
| 20064 | features, such as project-specific plugins.") |
| 20065 | (license license:bsd-3)))) |
| 20066 | |
| 20067 | (define-public python-okonomiyaki |
| 20068 | (package |
| 20069 | (name "python-okonomiyaki") |
| 20070 | (version "3.0.0") |
| 20071 | (source |
| 20072 | (origin |
| 20073 | (method git-fetch) |
| 20074 | (uri (git-reference |
| 20075 | (url "https://github.com/enthought/okonomiyaki/") |
| 20076 | (commit version))) |
| 20077 | (file-name (git-file-name name version)) |
| 20078 | (sha256 |
| 20079 | (base32 "0dx8smrairxcjqjisvvgwmj4nch12v03b779agjws87yv96ps0f4")))) |
| 20080 | (build-system pyproject-build-system) |
| 20081 | (arguments |
| 20082 | (list |
| 20083 | #:phases |
| 20084 | #~(modify-phases %standard-phases |
| 20085 | ;; Unknown platform. |
| 20086 | (add-before 'check 'delete-fail-tests |
| 20087 | (lambda _ |
| 20088 | (delete-file-recursively |
| 20089 | "okonomiyaki/runtimes/tests/test_runtime.py")))))) |
| 20090 | (native-inputs |
| 20091 | (list python-distro |
| 20092 | python-haas |
| 20093 | python-jsonschema |
| 20094 | python-packaging |
| 20095 | python-parameterized |
| 20096 | python-pytest |
| 20097 | python-setuptools |
| 20098 | python-testfixtures |
| 20099 | python-zipfile2)) |
| 20100 | (home-page "https://github.com/enthought/okonomiyaki/") |
| 20101 | (synopsis "Python library to deal with Enthought-specific metadata") |
| 20102 | (description |
| 20103 | "Okonomiyaki is a self-contained library aiming at consolidating |
| 20104 | low-level code used in Enthought-specific egg and runtime archives.") |
| 20105 | (license license:bsd-3))) |
| 20106 | |
| 20107 | (define-public python-nbconvert |
| 20108 | (package |
| 20109 | (name "python-nbconvert") |
| 20110 | (version "7.17.0") |
| 20111 | (source |
| 20112 | (origin |
| 20113 | (method url-fetch) |
| 20114 | (uri (pypi-uri "nbconvert" version)) |
| 20115 | (sha256 |
| 20116 | (base32 |
| 20117 | "0y6sdnwwlymhqya0g5bdmzgqfjv0mwj7qw3xdjgk04mynpqrc9hv")))) |
| 20118 | (build-system pyproject-build-system) |
| 20119 | (arguments |
| 20120 | (list |
| 20121 | #:test-flags |
| 20122 | '(list "-k" |
| 20123 | (string-append |
| 20124 | ;; These tests require pyppeteer, not yet |
| 20125 | ;; available in Guix. |
| 20126 | "not test_webpdf_with_chromium" |
| 20127 | " and not test_webpdf.py" |
| 20128 | ;; These tests require ipywidgets, which would |
| 20129 | ;; introduce a dependency cycle. |
| 20130 | " and not test_execute_widgets_from_nbconvert" |
| 20131 | " and not test_execute_multiple_notebooks" |
| 20132 | |
| 20133 | ;; This test calls nbconvert itself via "sys.executable -m |
| 20134 | ;; nbconvert". It's probably harmless. |
| 20135 | " and not test_default_config")) |
| 20136 | #:phases |
| 20137 | #~(modify-phases %standard-phases |
| 20138 | (add-after 'unpack 'fix-paths |
| 20139 | (lambda* (#:key inputs #:allow-other-keys) |
| 20140 | ;; Use pandoc binary from input. |
| 20141 | (substitute* "nbconvert/utils/pandoc.py" |
| 20142 | (("'pandoc'") |
| 20143 | (format #f "~s" (search-input-file inputs "bin/pandoc")))) |
| 20144 | ;; Same for LaTeX. |
| 20145 | (substitute* "nbconvert/exporters/pdf.py" |
| 20146 | (("\"xelatex\"") |
| 20147 | (format #f "~s" (search-input-file inputs "bin/xelatex"))) |
| 20148 | (("\"bibtex\"") |
| 20149 | (format #f "~s" (search-input-file inputs "bin/bibtex")))) |
| 20150 | ;; Likewise for Inkscape. |
| 20151 | (substitute* "nbconvert/preprocessors/svg2pdf.py" |
| 20152 | (("inkscape_path = which\\(\"inkscape\")") |
| 20153 | (format #f "inkscape_path = ~s" |
| 20154 | (search-input-file inputs "bin/inkscape")))))) |
| 20155 | (add-after 'unpack 'ignore-deprecation-warnings |
| 20156 | (lambda _ |
| 20157 | (substitute* "pyproject.toml" |
| 20158 | (("\"ignore:nbconvert.utils" m) |
| 20159 | (string-append "\"ignore:zmq.eventloop.ioloop is deprecated:DeprecationWarning\",\n" |
| 20160 | m))))) |
| 20161 | (add-before 'check 'pre-check |
| 20162 | (lambda _ |
| 20163 | ;; Tests depend on templates installed to output. |
| 20164 | (setenv "JUPYTER_PATH" |
| 20165 | (string-append #$output "/share/jupyter:" |
| 20166 | (getenv "JUPYTER_PATH"))) |
| 20167 | ;; jupyter-core demands this |
| 20168 | (setenv "JUPYTER_PLATFORM_DIRS" "1") |
| 20169 | ;; Tests need writable HOME and TEXMFVAR. |
| 20170 | (setenv "HOME" "/tmp") |
| 20171 | (setenv "TEXMFVAR" "/tmp")))))) |
| 20172 | (inputs |
| 20173 | (list inkscape/pinned pandoc)) |
| 20174 | (native-inputs |
| 20175 | (list python-flaky |
| 20176 | python-hatchling |
| 20177 | python-ipykernel |
| 20178 | ;; Adding ipywidgets would create a cycle. |
| 20179 | ;;python-ipywidgets |
| 20180 | python-pytest |
| 20181 | (texlive-local-tree |
| 20182 | (list texlive-adjustbox |
| 20183 | texlive-booktabs |
| 20184 | texlive-caption |
| 20185 | texlive-enumitem |
| 20186 | texlive-eurosym |
| 20187 | texlive-fancyvrb |
| 20188 | texlive-float |
| 20189 | texlive-fontspec |
| 20190 | texlive-grffile |
| 20191 | texlive-jknapltx |
| 20192 | texlive-parskip |
| 20193 | texlive-pdfcol |
| 20194 | texlive-rsfs |
| 20195 | texlive-soul |
| 20196 | texlive-tcolorbox |
| 20197 | texlive-titling |
| 20198 | texlive-ulem |
| 20199 | texlive-unicode-math |
| 20200 | texlive-upquote |
| 20201 | texlive-xetex)))) |
| 20202 | (propagated-inputs |
| 20203 | (list python-beautifulsoup4 |
| 20204 | python-bleach |
| 20205 | python-defusedxml |
| 20206 | python-jinja2 |
| 20207 | python-jupyter-core |
| 20208 | python-jupyterlab-pygments |
| 20209 | python-markupsafe |
| 20210 | python-mistune |
| 20211 | python-nbclient |
| 20212 | python-nbformat |
| 20213 | python-packaging |
| 20214 | python-pandocfilters |
| 20215 | python-pygments |
| 20216 | python-tinycss2 |
| 20217 | python-traitlets |
| 20218 | ;; Required, even if [serve] is not used. |
| 20219 | python-tornado |
| 20220 | ;; Required at runtime for `jupyter nbconvert --to=pdf`. |
| 20221 | texlive-adjustbox |
| 20222 | texlive-amsmath |
| 20223 | texlive-booktabs |
| 20224 | texlive-caption |
| 20225 | texlive-collection-basic |
| 20226 | texlive-enumitem |
| 20227 | texlive-environ |
| 20228 | texlive-etoolbox |
| 20229 | texlive-eurosym |
| 20230 | texlive-etoolbox |
| 20231 | texlive-fancyvrb |
| 20232 | texlive-float |
| 20233 | texlive-fontspec |
| 20234 | texlive-geometry |
| 20235 | texlive-grffile |
| 20236 | texlive-hyperref |
| 20237 | texlive-infwarerr |
| 20238 | texlive-jknapltx |
| 20239 | texlive-kvoptions |
| 20240 | texlive-lm |
| 20241 | texlive-lm-math |
| 20242 | texlive-mathpazo |
| 20243 | texlive-parskip |
| 20244 | texlive-pdfcol |
| 20245 | texlive-pgf |
| 20246 | texlive-rsfs |
| 20247 | texlive-soul |
| 20248 | texlive-stringenc |
| 20249 | texlive-tcolorbox |
| 20250 | texlive-titling |
| 20251 | texlive-tools |
| 20252 | texlive-trimspaces |
| 20253 | texlive-ucs |
| 20254 | texlive-ulem |
| 20255 | texlive-unicode-math |
| 20256 | texlive-upquote |
| 20257 | texlive-xcolor |
| 20258 | texlive-xetex |
| 20259 | texlive-zapfding)) |
| 20260 | (home-page "https://jupyter.org") |
| 20261 | (synopsis "Converting Jupyter Notebooks") |
| 20262 | (description "The @code{nbconvert} tool, @code{jupyter nbconvert}, converts |
| 20263 | notebooks to various other formats via Jinja templates. It allows you to |
| 20264 | convert an @code{.ipynb} notebook file into various static formats including: |
| 20265 | |
| 20266 | @enumerate |
| 20267 | @item HTML |
| 20268 | @item LaTeX |
| 20269 | @item PDF |
| 20270 | @item Reveal JS |
| 20271 | @item Markdown (md) |
| 20272 | @item ReStructured Text (rst) |
| 20273 | @item executable script |
| 20274 | @end enumerate\n") |
| 20275 | (license license:bsd-3))) |
| 20276 | |
| 20277 | (define-public python-ipywidgets |
| 20278 | (package |
| 20279 | (name "python-ipywidgets") |
| 20280 | ;; XXX: Newer version requires python-jupyterlab, see guix/guix#2073. |
| 20281 | (version "8.1.4") |
| 20282 | (source |
| 20283 | (origin |
| 20284 | (method url-fetch) |
| 20285 | ;; Git: <https://github.com/jupyter-widgets/ipywidgets/tree/8.1.8/python/ipywidgets> |
| 20286 | (uri (pypi-uri "ipywidgets" version)) |
| 20287 | (sha256 |
| 20288 | (base32 |
| 20289 | "0f9i3ycyc8c3rs3xk30hvq7mjs37phbxv4p8parrm02cxn9yzdc5")))) |
| 20290 | (build-system pyproject-build-system) |
| 20291 | (native-inputs |
| 20292 | (list python-ipykernel |
| 20293 | python-jsonschema |
| 20294 | python-pytest |
| 20295 | python-pytz |
| 20296 | python-setuptools)) |
| 20297 | (propagated-inputs |
| 20298 | (list python-comm |
| 20299 | python-ipython |
| 20300 | python-jupyterlab-widgets |
| 20301 | python-traitlets |
| 20302 | python-widgetsnbextension)) |
| 20303 | (home-page "https://ipython.org") |
| 20304 | (synopsis "IPython HTML widgets for Jupyter") |
| 20305 | (description "Ipywidgets are interactive HTML widgets for Jupyter |
| 20306 | notebooks and the IPython kernel. Notebooks come alive when interactive |
| 20307 | widgets are used. Users gain control of their data and can visualize changes |
| 20308 | in the data.") |
| 20309 | (license license:bsd-3))) |
| 20310 | |
| 20311 | (define-public python-jsbeautifier |
| 20312 | (package |
| 20313 | (name "python-jsbeautifier") |
| 20314 | (version "1.15.3") |
| 20315 | (home-page "https://github.com/beautify-web/js-beautify") |
| 20316 | (source |
| 20317 | (origin |
| 20318 | (method git-fetch) |
| 20319 | (uri (git-reference |
| 20320 | (url home-page) |
| 20321 | (commit (string-append "v" version)))) |
| 20322 | (file-name (git-file-name name version)) |
| 20323 | (sha256 |
| 20324 | (base32 "1zl1g6w5zn2hxk5qq83j52cxa1ig75ryjwsjxv9wiwkar4qq88zg")))) |
| 20325 | (build-system pyproject-build-system) |
| 20326 | (arguments |
| 20327 | (list |
| 20328 | #:phases |
| 20329 | #~(modify-phases %standard-phases |
| 20330 | (add-after 'unpack 'chdir |
| 20331 | (lambda _ |
| 20332 | (chdir "python") |
| 20333 | (rename-file "setup-js.py" "setup.py")))))) |
| 20334 | (propagated-inputs (list python-editorconfig python-six)) |
| 20335 | (native-inputs (list python-pytest python-setuptools)) |
| 20336 | (synopsis "JavaScript unobfuscator and beautifier") |
| 20337 | (description |
| 20338 | "This packages provides tooling to beautify, unpack or deobfuscate |
| 20339 | JavaScript, leveraging popular online obfuscators.") |
| 20340 | (license license:expat))) |
| 20341 | |
| 20342 | (define-public python-chardet |
| 20343 | (package |
| 20344 | (name "python-chardet") |
| 20345 | ;; XXX: Before update, check status of guix/guix#9242. |
| 20346 | (version "5.2.0") |
| 20347 | (source |
| 20348 | (origin |
| 20349 | (method url-fetch) |
| 20350 | (uri (pypi-uri "chardet" version)) |
| 20351 | (sha256 |
| 20352 | (base32 |
| 20353 | "1xqwkjijq2fxn8rhcvfddl14lp39jllqbh527yy19i58g7s6yfqv")))) |
| 20354 | (native-inputs |
| 20355 | (list python-pytest python-setuptools)) |
| 20356 | (build-system pyproject-build-system) |
| 20357 | (arguments |
| 20358 | (list #:test-flags |
| 20359 | ;; Disable test that fails sporadically: |
| 20360 | ;; https://github.com/chardet/chardet/issues/256 |
| 20361 | #~'("-k" "not test_detect_all_and_detect_one_should_agree") |
| 20362 | #:phases |
| 20363 | #~(modify-phases %standard-phases |
| 20364 | ;; This package provides a 'chardetect' executable that only |
| 20365 | ;; depends on Python, so customize the wrap phase to avoid |
| 20366 | ;; adding pytest and friends in order to save size. |
| 20367 | ;; (See also <https://bugs.gnu.org/25235>.) |
| 20368 | (replace 'wrap |
| 20369 | (lambda* (#:key inputs outputs #:allow-other-keys) |
| 20370 | (let* ((sitedir (site-packages inputs outputs)) |
| 20371 | (python (dirname (dirname |
| 20372 | (search-input-file |
| 20373 | inputs "bin/python")))) |
| 20374 | (python-sitedir |
| 20375 | (string-append python "/lib/python" |
| 20376 | (python-version python) |
| 20377 | "/site-packages"))) |
| 20378 | (wrap-program (string-append #$output "/bin/chardetect") |
| 20379 | `("GUIX_PYTHONPATH" ":" suffix |
| 20380 | ,(list sitedir python-sitedir))))))))) |
| 20381 | (home-page "https://github.com/chardet/chardet") |
| 20382 | (synopsis "Universal encoding detector for Python 2 and 3") |
| 20383 | (description |
| 20384 | "This package provides @code{chardet}, a Python module that can |
| 20385 | automatically detect a wide range of file encodings.") |
| 20386 | (license license:lgpl2.1+))) |
| 20387 | |
| 20388 | (define-public python-charset-normalizer |
| 20389 | (package |
| 20390 | (name "python-charset-normalizer") |
| 20391 | (version "3.4.7") |
| 20392 | (source |
| 20393 | (origin |
| 20394 | (method git-fetch) |
| 20395 | (uri (git-reference |
| 20396 | (url "https://github.com/ousret/charset_normalizer") |
| 20397 | (commit version))) |
| 20398 | (file-name (git-file-name name version)) |
| 20399 | (sha256 (base32 "0faqj59d0z0yzgvsxndy48xrlvj05lfdqaf9fsc61ckwzzhlkrvl")))) |
| 20400 | (build-system pyproject-build-system) |
| 20401 | (native-inputs |
| 20402 | (list python-pytest |
| 20403 | python-setuptools)) |
| 20404 | (home-page "https://github.com/ousret/charset_normalizer") |
| 20405 | (synopsis "Universal Charset Detector, alternative to Chardet") |
| 20406 | (description "This library helps you read text from an unknown charset |
| 20407 | encoding. Motivated by @code{chardet}, it tries to resolve the issue by |
| 20408 | taking a new approach. All IANA character set names for which the Python core |
| 20409 | library provides codecs are supported.") |
| 20410 | (license license:expat))) |
| 20411 | |
| 20412 | (define-public python-docopt |
| 20413 | (package |
| 20414 | (name "python-docopt") |
| 20415 | (version "0.6.2") |
| 20416 | (source |
| 20417 | (origin |
| 20418 | (method git-fetch) |
| 20419 | (uri (git-reference |
| 20420 | (url "https://github.com/docopt/docopt") |
| 20421 | (commit version))) |
| 20422 | (file-name (git-file-name name version)) |
| 20423 | (sha256 |
| 20424 | (base32 "0aad9gbswnnhssin2q0m5lmpm0ahyf80ahs2zjigbn5y7fvljnd0")) |
| 20425 | (patches (search-patches "python-docopt-pytest6-compat.patch")))) |
| 20426 | (build-system pyproject-build-system) |
| 20427 | ;; tests: 203 passed, 6 warnings |
| 20428 | (native-inputs |
| 20429 | (list python-pytest-8 python-setuptools)) |
| 20430 | (home-page "http://docopt.org") |
| 20431 | (synopsis "Command-line interface description language for Python") |
| 20432 | (description |
| 20433 | "This library allows the user to define a command-line interface from a |
| 20434 | program's help message rather than specifying it programmatically with |
| 20435 | command-line parsers like @code{getopt} and @code{argparse}.") |
| 20436 | (license license:expat))) |
| 20437 | |
| 20438 | (define-public python-pythonanywhere |
| 20439 | (package |
| 20440 | (name "python-pythonanywhere") |
| 20441 | (version "0.19.0") |
| 20442 | (source |
| 20443 | (origin |
| 20444 | (method git-fetch) |
| 20445 | (uri (git-reference |
| 20446 | (url "https://github.com/pythonanywhere/helper_scripts") |
| 20447 | (commit (string-append "v" version)))) |
| 20448 | (file-name (git-file-name name version)) |
| 20449 | (sha256 |
| 20450 | (base32 "18g94djpq03c52j4g2c7v2s2bpijdhqz2lzz0rind97kyvss6fca")))) |
| 20451 | (build-system pyproject-build-system) |
| 20452 | (arguments |
| 20453 | (list |
| 20454 | #:test-flags |
| 20455 | #~(list "--ignore=tests/test_django_project.py" ;depedns on submodule |
| 20456 | "-k" (string-join |
| 20457 | ;; Network access is required to clone external |
| 20458 | ;; repositories. |
| 20459 | (list "not test_actually_creates_django_project_in_vir" |
| 20460 | "test_actually_downloads_repo" |
| 20461 | "test_actually_installing_a_real_package" |
| 20462 | "test_actually_works_against_example_repo" |
| 20463 | "test_autoconfigure_actually_works_against_example_repo" |
| 20464 | "test_exits_because_boolean_not_satisfied" |
| 20465 | "test_gets_version" |
| 20466 | "test_nuke_option_lets_you_run_twice" |
| 20467 | "test_nuke_option_lets_you_run_twice" |
| 20468 | "test_start_actually_creates_django_project_in_vir") |
| 20469 | " and not ")) |
| 20470 | #:phases |
| 20471 | #~(modify-phases %standard-phases |
| 20472 | (add-after 'unpack 'relax-requirements |
| 20473 | (lambda _ |
| 20474 | (substitute* "pyproject.toml" |
| 20475 | (("\"schema==.*\",") |
| 20476 | "\"schema\",")))) |
| 20477 | (add-before 'check 'change-home |
| 20478 | (lambda _ |
| 20479 | (setenv "HOME" "/tmp")))))) |
| 20480 | (native-inputs |
| 20481 | (list python-psutil |
| 20482 | python-pytest |
| 20483 | python-pytest-mock |
| 20484 | python-responses |
| 20485 | python-setuptools)) |
| 20486 | (propagated-inputs |
| 20487 | (list python-dateutil |
| 20488 | python-docopt |
| 20489 | python-packaging |
| 20490 | python-pythonanywhere-core |
| 20491 | python-requests |
| 20492 | python-schema |
| 20493 | python-snakesay |
| 20494 | python-tabulate |
| 20495 | python-typer)) |
| 20496 | (home-page "https://github.com/pythonanywhere/helper_scripts/") |
| 20497 | (synopsis "PythonAnywhere helper tools for users") |
| 20498 | (description |
| 20499 | "PythonAnywhere provides a command-line interface and an application |
| 20500 | programming interface that allows managing files Web apps, scheduled |
| 20501 | tasks and students. It includes single-command deployment for the Django Girls |
| 20502 | tutorial.") |
| 20503 | (license license:expat))) |
| 20504 | |
| 20505 | (define-public python-pythonanywhere-core |
| 20506 | (package |
| 20507 | (name "python-pythonanywhere-core") |
| 20508 | (version "0.3.0") |
| 20509 | (source |
| 20510 | (origin |
| 20511 | (method git-fetch) |
| 20512 | (uri (git-reference |
| 20513 | (url "https://github.com/pythonanywhere/pythonanywhere-core") |
| 20514 | (commit (string-append "v" version)))) |
| 20515 | (file-name (git-file-name name version)) |
| 20516 | (sha256 |
| 20517 | (base32 "0whi3a4wrfcaw224mi69gyds3njq64ck76mvgndamzxcq23sqr4v")))) |
| 20518 | (build-system pyproject-build-system) |
| 20519 | (arguments |
| 20520 | (list |
| 20521 | #:phases |
| 20522 | #~(modify-phases %standard-phases |
| 20523 | (add-before 'check 'pre-check |
| 20524 | (lambda _ |
| 20525 | (setenv "HOME" "/tmp")))))) |
| 20526 | (native-inputs |
| 20527 | (list python-poetry-core |
| 20528 | python-pytest |
| 20529 | python-pytest-mock |
| 20530 | python-responses)) |
| 20531 | (propagated-inputs |
| 20532 | (list python-dateutil |
| 20533 | python-requests |
| 20534 | python-snakesay |
| 20535 | python-typing-extensions)) |
| 20536 | (home-page "https://github.com/pythonanywhere/pythonanywhere-core") |
| 20537 | (synopsis "API wrapper for PythonAnywhere services") |
| 20538 | (description |
| 20539 | "This package provides an API wrapper for programmatic management of |
| 20540 | @code{PythonAnywhere} services.") |
| 20541 | (license license:expat))) |
| 20542 | |
| 20543 | (define-public python-dialog |
| 20544 | (package |
| 20545 | (name "python-dialog") |
| 20546 | (version "3.5.3") |
| 20547 | (source |
| 20548 | (origin |
| 20549 | (method url-fetch) |
| 20550 | (uri (pypi-uri "pythondialog" version)) |
| 20551 | (sha256 |
| 20552 | (base32 "08v3flvbhpc0p20drniiaalc3ijghlxk9ka5vz5mqqm6y254m8xj")) |
| 20553 | (modules '((guix build utils))) |
| 20554 | (snippet #~(delete-file-recursively "doc")))) |
| 20555 | (build-system pyproject-build-system) |
| 20556 | (arguments |
| 20557 | (list |
| 20558 | ;; XXX: There are no tests, but some examples. However, they need to |
| 20559 | ;; be run on a terminal. |
| 20560 | #:tests? #f |
| 20561 | #:phases |
| 20562 | #~(modify-phases %standard-phases |
| 20563 | (add-after 'unpack 'patch-path |
| 20564 | (lambda* (#:key inputs #:allow-other-keys) |
| 20565 | (substitute* "dialog.py" |
| 20566 | (("_path_to_executable\\(dialog\\)") |
| 20567 | (format #f "os.path.realpath(~s)" |
| 20568 | (search-input-file inputs "bin/dialog"))))))))) |
| 20569 | (native-inputs (list python-setuptools)) |
| 20570 | (inputs (list dialog)) |
| 20571 | (home-page "https://pythondialog.sourceforge.net/") |
| 20572 | (synopsis "Python interface to the UNIX dialog utility") |
| 20573 | (description |
| 20574 | "A Python wrapper for the dialog utility. Its purpose is to provide an |
| 20575 | easy to use, pythonic and comprehensive Python interface to dialog. This |
| 20576 | allows one to make simple text-mode user interfaces on Unix-like systems") |
| 20577 | (license license:lgpl2.1))) |
| 20578 | |
| 20579 | (define-deprecated-package python-pythondialog python-dialog) |
| 20580 | |
| 20581 | (define-public python-confection |
| 20582 | (package |
| 20583 | (name "python-confection") |
| 20584 | (version "1.3.3") |
| 20585 | (source |
| 20586 | (origin |
| 20587 | (method git-fetch) |
| 20588 | (uri (git-reference |
| 20589 | (url "https://github.com/explosion/confection") |
| 20590 | (commit (string-append "release-v" version)))) |
| 20591 | (file-name (git-file-name name version)) |
| 20592 | (sha256 |
| 20593 | (base32 "065a3044x26sh8wz9xw4yh1kdzn397j0mzznwvksx5qimp23117b")))) |
| 20594 | (build-system pyproject-build-system) |
| 20595 | (arguments |
| 20596 | (list |
| 20597 | #:phases |
| 20598 | #~(modify-phases %standard-phases |
| 20599 | (add-before 'check 'patch-pythonpath |
| 20600 | (lambda _ |
| 20601 | (setenv "PYTHONPATH" |
| 20602 | (string-append (getcwd) ":" |
| 20603 | (getenv "GUIX_PYTHONPATH")))))))) |
| 20604 | (propagated-inputs (list python-pydantic python-srsly)) |
| 20605 | (native-inputs (list python-pytest python-setuptools)) |
| 20606 | (home-page "https://github.com/explosion/confection") |
| 20607 | (synopsis "Config system for Python") |
| 20608 | (description |
| 20609 | "Confection is a lightweight library that offers a configuration system |
| 20610 | letting you conveniently describe arbitrary trees of objects.") |
| 20611 | (license license:expat))) |
| 20612 | |
| 20613 | (define-public python-configobj |
| 20614 | (package |
| 20615 | (name "python-configobj") |
| 20616 | (version "5.0.9") |
| 20617 | (source |
| 20618 | (origin |
| 20619 | (method url-fetch) |
| 20620 | (uri (pypi-uri "configobj" version)) |
| 20621 | (sha256 |
| 20622 | (base32 "0j3872id3ngxkaapz9bv8as4lg4rfmch0dxqy767p81syaxq3j03")))) |
| 20623 | (build-system pyproject-build-system) |
| 20624 | (native-inputs |
| 20625 | (list python-pytest |
| 20626 | python-setuptools)) |
| 20627 | (home-page "https://github.com/DiffSK/configobj") |
| 20628 | (synopsis "Config file reading, writing and validation") |
| 20629 | (description |
| 20630 | "ConfigObj is a simple but powerful config file reader and writer: an |
| 20631 | ini file round tripper. Its main feature is that it is very easy to use, |
| 20632 | with a straightforward programmer’s interface and a simple syntax for config |
| 20633 | files.") |
| 20634 | (license license:bsd-3))) |
| 20635 | |
| 20636 | (define-public python-omegaconf |
| 20637 | (let ((commit "71e02647d93bb8bd467502008940317920ec7e5b") |
| 20638 | (revision "1")) |
| 20639 | (package |
| 20640 | (name "python-omegaconf") |
| 20641 | (version (git-version "2.3.0" revision commit)) |
| 20642 | (source |
| 20643 | (origin |
| 20644 | (method git-fetch) |
| 20645 | (uri (git-reference |
| 20646 | (url "https://github.com/omry/omegaconf") |
| 20647 | (commit commit))) |
| 20648 | (file-name (git-file-name name version)) |
| 20649 | (modules '((guix build utils))) |
| 20650 | (snippet |
| 20651 | #~(begin |
| 20652 | (delete-file-recursively "build_helpers/bin") |
| 20653 | (substitute* "build_helpers/build_helpers.py" |
| 20654 | (("java") "antlr4") |
| 20655 | (("\"-jar\",") "") |
| 20656 | (("str\\(build_dir / \"bin\" / \"antlr.*\"\\),") "")))) |
| 20657 | (sha256 |
| 20658 | (base32 "1n5s1lm22sl2h4c1wv73lgkkqxcvhzgwm4bafvcqml3ckawvbw99")))) |
| 20659 | (build-system pyproject-build-system) |
| 20660 | (arguments |
| 20661 | (list |
| 20662 | #:test-flags |
| 20663 | ;; XXX: Those tests currently fail collection. |
| 20664 | #~(list "--ignore=tests/structured_conf/test_structured_config.py" |
| 20665 | "--ignore=tests/test_basic_ops_list.py" |
| 20666 | "--ignore=tests/test_merge.py" |
| 20667 | "--ignore=tests/test_select.py") |
| 20668 | #:phases |
| 20669 | #~(modify-phases %standard-phases |
| 20670 | (add-after 'unpack 'loosen-requirements |
| 20671 | (lambda _ |
| 20672 | (substitute* "requirements/base.txt" |
| 20673 | (("antlr4-python3-runtime==.*") |
| 20674 | "antlr4-python3-runtime >=4.9\n")) |
| 20675 | ;; Ignore deprecation warnings. |
| 20676 | (substitute* "pyproject.toml" |
| 20677 | (("-Werror") ""))))))) |
| 20678 | (native-inputs |
| 20679 | (list icedtea |
| 20680 | antlr4 |
| 20681 | python-pytest |
| 20682 | python-pytest-mock |
| 20683 | python-setuptools |
| 20684 | python-wheel)) |
| 20685 | (propagated-inputs |
| 20686 | (list python-antlr4-runtime |
| 20687 | python-pydevd |
| 20688 | python-pyyaml)) |
| 20689 | (home-page "https://github.com/omry/omegaconf") |
| 20690 | (synopsis "Flexible configuration system") |
| 20691 | (description |
| 20692 | "OmegaConf is a hierarchical configuration system and supports merging |
| 20693 | configurations from multiple sources. It provides a consistent API regardless |
| 20694 | of how the configuration was created.") |
| 20695 | (license license:bsd-3)))) |
| 20696 | |
| 20697 | (define-public python-configargparse |
| 20698 | (package |
| 20699 | (name "python-configargparse") |
| 20700 | (version "1.7.5") |
| 20701 | (source |
| 20702 | (origin |
| 20703 | (method git-fetch) |
| 20704 | (uri (git-reference |
| 20705 | (url "https://github.com/bw2/ConfigArgParse") |
| 20706 | (commit (string-append "v" version)))) |
| 20707 | (file-name (git-file-name name version)) |
| 20708 | (sha256 |
| 20709 | (base32 "04d54knfjgxci3far2cp72xr8bjabq0xcawc0ks2nk7mfl1p05v5")))) |
| 20710 | (build-system pyproject-build-system) |
| 20711 | (native-inputs |
| 20712 | (list python-mock |
| 20713 | python-pytest |
| 20714 | python-pyyaml |
| 20715 | python-setuptools |
| 20716 | python-setuptools-scm)) |
| 20717 | (home-page "https://github.com/bw2/ConfigArgParse") |
| 20718 | (synopsis "Replacement for argparse") |
| 20719 | (description |
| 20720 | "This package provides a drop-in replacement for argparse that allows |
| 20721 | options to also be set via config files and/or environment variables.") |
| 20722 | (license license:expat))) |
| 20723 | |
| 20724 | (define-public python-connection-pool |
| 20725 | (package |
| 20726 | (name "python-connection-pool") |
| 20727 | (version "0.0.3") |
| 20728 | (source |
| 20729 | (origin |
| 20730 | (method git-fetch) |
| 20731 | (uri (git-reference |
| 20732 | (url "https://github.com/zhouyl/ConnectionPool") |
| 20733 | (commit version))) |
| 20734 | (file-name (git-file-name name version)) |
| 20735 | (sha256 |
| 20736 | (base32 "1c6676vga0p4xxa3f0jpbwgp3n69mxjisnfcwibd9x23iyxf3sr2")))) |
| 20737 | (build-system pyproject-build-system) |
| 20738 | (arguments (list #:tests? #f)) ; No tests. |
| 20739 | (native-inputs (list python-setuptools)) |
| 20740 | (home-page "https://github.com/zhouyl/ConnectionPool") |
| 20741 | (synopsis "Thread-safe connection pool") |
| 20742 | (description |
| 20743 | "This package provides a library implementing a thread-safe connection |
| 20744 | pool.") |
| 20745 | (license license:expat))) |
| 20746 | |
| 20747 | (define-public python-argparse-dataclass |
| 20748 | (package |
| 20749 | (name "python-argparse-dataclass") |
| 20750 | (version "2.0.0") |
| 20751 | (source |
| 20752 | (origin |
| 20753 | (method git-fetch) ;no tests in PyPI archive |
| 20754 | (uri (git-reference |
| 20755 | (url "https://github.com/mivade/argparse_dataclass") |
| 20756 | (commit version))) |
| 20757 | (file-name (git-file-name name version)) |
| 20758 | (sha256 |
| 20759 | (base32 "0fbxs2a4jk5bvy42jlnqw4l02zs1s6mmfn4sr8rknyc4ngl4y9q1")))) |
| 20760 | (build-system pyproject-build-system) |
| 20761 | (native-inputs (list python-pytest python-setuptools python-wheel)) |
| 20762 | (home-page "https://github.com/mivade/argparse_dataclass") |
| 20763 | (synopsis "Declarative command-line interfaces using argparse and dataclasses") |
| 20764 | (description |
| 20765 | "This package provides declarative command-line interfaces using argparse |
| 20766 | and dataclasses.") |
| 20767 | (license license:expat))) |
| 20768 | |
| 20769 | (define-public python-argparse-manpage |
| 20770 | (package |
| 20771 | (name "python-argparse-manpage") |
| 20772 | (version "4.7") |
| 20773 | (source |
| 20774 | (origin |
| 20775 | (method url-fetch) |
| 20776 | (uri (pypi-uri "argparse_manpage" version)) |
| 20777 | (sha256 |
| 20778 | (base32 "0clb20scp408gxac675v731vnj89pk9d5fb7pcy7bj1a45mvgshx")))) |
| 20779 | (build-system pyproject-build-system) |
| 20780 | (arguments |
| 20781 | (list |
| 20782 | #:test-flags |
| 20783 | ;; Tests require PIP. |
| 20784 | #~(list "--ignore=tests/test_examples.py"))) |
| 20785 | (native-inputs |
| 20786 | (list python-pytest |
| 20787 | python-setuptools)) |
| 20788 | (home-page "https://github.com/praiskup/argparse-manpage") |
| 20789 | (synopsis "Build manual page from Python's ArgumentParser object") |
| 20790 | (description |
| 20791 | "This package provides tools to build manual pages from Python's |
| 20792 | @code{ArgumentParser} object.") |
| 20793 | (license license:asl2.0))) |
| 20794 | |
| 20795 | (define-public python-atomicwrites |
| 20796 | (package |
| 20797 | (name "python-atomicwrites") |
| 20798 | (version "1.4.0") |
| 20799 | (source |
| 20800 | (origin |
| 20801 | (method git-fetch) |
| 20802 | (uri (git-reference |
| 20803 | (url "https://github.com/untitaker/python-atomicwrites") |
| 20804 | (commit version))) |
| 20805 | (file-name (git-file-name name version)) |
| 20806 | (sha256 |
| 20807 | (base32 "1f21l5fyh8qmsacbsknwwgnd1b9x4i0aw0zpczr05wklkkbvd58y")))) |
| 20808 | (build-system pyproject-build-system) |
| 20809 | (native-inputs (list python-pytest python-setuptools)) |
| 20810 | (synopsis "Atomic file writes in Python") |
| 20811 | (description |
| 20812 | "Library for atomic file writes using platform dependent tools |
| 20813 | for atomic file system operations.") |
| 20814 | (home-page "https://github.com/untitaker/python-atomicwrites") |
| 20815 | (license license:expat))) |
| 20816 | |
| 20817 | (define-public python-qstylizer |
| 20818 | (package |
| 20819 | (name "python-qstylizer") |
| 20820 | (version "0.2.4") |
| 20821 | (source |
| 20822 | (origin |
| 20823 | (method git-fetch) |
| 20824 | (uri (git-reference |
| 20825 | (url "https://github.com/blambright/qstylizer") |
| 20826 | (commit version))) |
| 20827 | (file-name (git-file-name name version)) |
| 20828 | (sha256 |
| 20829 | (base32 "0413msw23kv87fgs14ajp9wb2qxkcw6ydvwjzabz7xcp8iif9kr2")))) |
| 20830 | (build-system pyproject-build-system) |
| 20831 | (native-inputs |
| 20832 | (list python-pbr |
| 20833 | python-pytest |
| 20834 | python-pytest-mock |
| 20835 | python-setuptools |
| 20836 | python-wheel)) |
| 20837 | (propagated-inputs |
| 20838 | (list python-inflection |
| 20839 | python-tinycss2)) |
| 20840 | (home-page "https://github.com/blambright/qstylizer") |
| 20841 | (synopsis "Qt stylesheet generation utility for PyQt/PySide") |
| 20842 | (description "@code{qstylizer} is a Python package designed to help with |
| 20843 | the construction of PyQt/PySide stylesheets.") |
| 20844 | (license license:expat))) |
| 20845 | |
| 20846 | (define-public python-click-threading |
| 20847 | (package |
| 20848 | (name "python-click-threading") |
| 20849 | (version "0.5.0") |
| 20850 | (source |
| 20851 | (origin |
| 20852 | (method git-fetch) |
| 20853 | (uri (git-reference |
| 20854 | (url "https://github.com/click-contrib/click-threading") |
| 20855 | (commit version))) |
| 20856 | (file-name (git-file-name name version)) |
| 20857 | (sha256 |
| 20858 | (base32 "185pzw12ap7wrjpyxhsyrkhh7i1l5qclaa3zlpn8qvm39fz0kjni")))) |
| 20859 | (build-system pyproject-build-system) |
| 20860 | (native-inputs (list python-pytest python-setuptools)) |
| 20861 | (propagated-inputs (list python-click)) |
| 20862 | (synopsis "Utilities for multithreading in Click") |
| 20863 | (description |
| 20864 | "This package provides utilities for multithreading in Click |
| 20865 | applications.") |
| 20866 | (home-page "https://github.com/click-contrib/click-threading") |
| 20867 | (license license:expat))) |
| 20868 | |
| 20869 | (define-public python-click-log |
| 20870 | (package |
| 20871 | (name "python-click-log") |
| 20872 | (version "0.3.2") |
| 20873 | (source |
| 20874 | (origin |
| 20875 | (method git-fetch) |
| 20876 | (uri (git-reference |
| 20877 | (url "https://github.com/click-contrib/click-log") |
| 20878 | (commit version))) |
| 20879 | (file-name (git-file-name name version)) |
| 20880 | (sha256 |
| 20881 | (base32 "01zpjyqnyzrx6xi7cii2180bqdcg2a6b1sdbjijri8jv755r7ray")))) |
| 20882 | (build-system pyproject-build-system) |
| 20883 | (native-inputs (list python-pytest python-setuptools)) |
| 20884 | (propagated-inputs (list python-click)) |
| 20885 | (synopsis "Logging for click applications") |
| 20886 | (description |
| 20887 | "This package provides a Python library for logging Click applications.") |
| 20888 | (home-page "https://github.com/click-contrib/click-log") |
| 20889 | (license license:expat))) |
| 20890 | |
| 20891 | (define-public python-click-default-group |
| 20892 | (package |
| 20893 | (name "python-click-default-group") |
| 20894 | (version "1.2.4") |
| 20895 | (source |
| 20896 | (origin |
| 20897 | (method git-fetch) ; no tests in PyPI release |
| 20898 | (uri (git-reference |
| 20899 | (url "https://github.com/click-contrib/click-default-group") |
| 20900 | (commit (string-append "v" version)))) |
| 20901 | (file-name (git-file-name name version)) |
| 20902 | (sha256 |
| 20903 | (base32 "06h12qwg0lhvxlgfm9768afibwp8j6r3r440v630a30bv0nkhngm")))) |
| 20904 | (build-system pyproject-build-system) |
| 20905 | (propagated-inputs |
| 20906 | (list python-click)) |
| 20907 | (native-inputs |
| 20908 | (list python-flit-core python-pytest)) |
| 20909 | (synopsis "Extends click.Group") |
| 20910 | (description "This package extends click.Group to invoke a command without |
| 20911 | explicit subcommand name.") |
| 20912 | (home-page "https://github.com/click-contrib/click-default-group") |
| 20913 | (license license:bsd-3))) |
| 20914 | |
| 20915 | (define-public python-apipkg |
| 20916 | (package |
| 20917 | (name "python-apipkg") |
| 20918 | (version "3.0.2") |
| 20919 | (source |
| 20920 | (origin |
| 20921 | (method url-fetch) |
| 20922 | (uri (pypi-uri "apipkg" version)) |
| 20923 | (sha256 |
| 20924 | (base32 "03ay7j57mfh4sa8vh9qwid1ggwdc0lasyw3ycsmgv5r6z2j63an7")))) |
| 20925 | (build-system pyproject-build-system) |
| 20926 | (arguments (list #:tests? #f)) ;no tests in PyPI archive |
| 20927 | (native-inputs |
| 20928 | (list python-hatch-vcs |
| 20929 | python-hatchling)) |
| 20930 | (home-page "https://github.com/pytest-dev/apipkg") |
| 20931 | (synopsis "Namespace control and lazy-import mechanism") |
| 20932 | (description "With apipkg you can control the exported namespace of a Python |
| 20933 | package and greatly reduce the number of imports for your users. It is a small |
| 20934 | pure Python module that works on virtually all Python versions.") |
| 20935 | (license license:expat))) |
| 20936 | |
| 20937 | (define-public python-essentials |
| 20938 | (package |
| 20939 | (name "python-essentials") |
| 20940 | (version "1.1.8") |
| 20941 | (source |
| 20942 | (origin |
| 20943 | (method git-fetch) |
| 20944 | (uri (git-reference |
| 20945 | (url "https://github.com/Neoteroi/essentials") |
| 20946 | (commit (string-append "v" version)))) |
| 20947 | (file-name (git-file-name name version)) |
| 20948 | (sha256 |
| 20949 | (base32 "1k8ybgxh0xvwxjc22pkmyvdhm0jgmj77rlg656r81iiibc0l7zj8")))) |
| 20950 | (build-system pyproject-build-system) |
| 20951 | (native-inputs |
| 20952 | (list python-hatchling |
| 20953 | python-pydantic |
| 20954 | python-pytest-asyncio)) |
| 20955 | (home-page "https://github.com/Neoteroi/essentials/wiki") |
| 20956 | (synopsis |
| 20957 | "Utility functions, exceptions, and classes for Python applications") |
| 20958 | (description |
| 20959 | "Essentials is a collection of functions, exceptions, and classes for Python |
| 20960 | applications. Examples of utilities are exceptions for common scenarios, |
| 20961 | friendly JSON encoder, decorators for retries and logging.") |
| 20962 | (license license:expat))) |
| 20963 | |
| 20964 | (define-public python-execnet |
| 20965 | (package |
| 20966 | (name "python-execnet") |
| 20967 | (version "2.1.2") |
| 20968 | (source |
| 20969 | (origin |
| 20970 | (method git-fetch) |
| 20971 | (uri (git-reference |
| 20972 | (url "https://github.com/pytest-dev/execnet") |
| 20973 | (commit (string-append "v" version)))) |
| 20974 | (file-name (git-file-name name version)) |
| 20975 | (sha256 |
| 20976 | (base32 "1msiqa1qz6dkdh4c3z351cld12qh8amhq4j1mdkq8sz015j47vnx")))) |
| 20977 | (build-system pyproject-build-system) |
| 20978 | (arguments |
| 20979 | (list |
| 20980 | ;; tests: 466 passed, 614 skipped, 4 xfailed, 11 xpassed, 1 warning |
| 20981 | #:phases |
| 20982 | #~(modify-phases %standard-phases |
| 20983 | (add-before 'check 'pre-check |
| 20984 | (lambda _ |
| 20985 | ;; Unset PYTHONDONTWRITEBYTECODE to match the expectations of a |
| 20986 | ;; test in 'testing/test_gateway.py'. |
| 20987 | (unsetenv "PYTHONDONTWRITEBYTECODE")))))) |
| 20988 | (native-inputs |
| 20989 | (list python-hatchling |
| 20990 | python-hatch-vcs |
| 20991 | python-pytest-bootstrap)) |
| 20992 | (home-page "https://codespeak.net/execnet/") |
| 20993 | (synopsis "Rapid multi-Python deployment") |
| 20994 | (description |
| 20995 | "Execnet provides a share-nothing model with channel-send/receive communication |
| 20996 | for distributing execution across many Python interpreters across version, |
| 20997 | platform and network barriers. It has a minimal and fast API targeting the |
| 20998 | following uses: |
| 20999 | |
| 21000 | @enumerate |
| 21001 | @item distribute tasks to (many) local or remote CPUs |
| 21002 | @item write and deploy hybrid multi-process applications |
| 21003 | @item write scripts to administer multiple environments |
| 21004 | @end enumerate") |
| 21005 | (license license:expat))) |
| 21006 | |
| 21007 | (define-public python-icalendar |
| 21008 | (package |
| 21009 | (name "python-icalendar") |
| 21010 | (version "6.3.2") |
| 21011 | (source |
| 21012 | (origin |
| 21013 | (method url-fetch) ;XXX: hatch-vcs fails with git-fetch |
| 21014 | (uri (pypi-uri "icalendar" version)) |
| 21015 | (sha256 |
| 21016 | (base32 "188hj57l5l1jjnrfxwkmsh8hsn5pwvv93m7p7b9misgbzk5hxhg0")))) |
| 21017 | (build-system pyproject-build-system) |
| 21018 | (arguments |
| 21019 | (list |
| 21020 | ;; tests: 8995 passed, 21 skipped, 2 deselected |
| 21021 | #:test-flags |
| 21022 | #~(list |
| 21023 | "-k" |
| 21024 | (string-append |
| 21025 | ;; See: <https://github.com/collective/icalendar/issues/812>. |
| 21026 | "not test_dateutil_timezone_is_matched_with_tzname[Arctic/Longyearbyen]" |
| 21027 | " and not test_docstring_of_python_file[icalendar.timezone.tzid]")))) |
| 21028 | (native-inputs |
| 21029 | (list python-hatch-vcs |
| 21030 | python-hatchling |
| 21031 | python-pytest |
| 21032 | python-pytz)) |
| 21033 | (propagated-inputs |
| 21034 | (list python-dateutil |
| 21035 | python-tzdata)) |
| 21036 | (home-page "https://github.com/collective/icalendar") |
| 21037 | (synopsis "Python library for parsing and generating iCalendar files") |
| 21038 | (description |
| 21039 | "@code{icalendar} is a Python library for parsing and generating |
| 21040 | iCalendar files.") |
| 21041 | (license license:bsd-2))) |
| 21042 | |
| 21043 | (define-public python-args |
| 21044 | (let ((commit "9460f1a35eb3055e9e4de1f0a6932e0883c72d65") |
| 21045 | (revision "0")) |
| 21046 | (package |
| 21047 | (name "python-args") |
| 21048 | (version (git-version "0.1.0" revision commit)) |
| 21049 | (source |
| 21050 | (origin |
| 21051 | (method git-fetch) |
| 21052 | (uri (git-reference |
| 21053 | (url "https://github.com/kennethreitz-archive/args") |
| 21054 | (commit commit))) |
| 21055 | (file-name (git-file-name name version)) |
| 21056 | (sha256 |
| 21057 | (base32 "1zfxpbp9vldqdrjmd0c6y3wisl35mx5v8zlyp3nhwpy1730wrc9j")))) |
| 21058 | (build-system pyproject-build-system) |
| 21059 | (arguments |
| 21060 | (list |
| 21061 | #:tests? #f ; XXX: python-nose is deprecated. |
| 21062 | #:phases |
| 21063 | #~(modify-phases %standard-phases |
| 21064 | (add-after 'unpack 'patch-args.py |
| 21065 | (lambda _ |
| 21066 | (substitute* "args.py" |
| 21067 | (("basestring") |
| 21068 | "str"))))))) |
| 21069 | (native-inputs (list python-setuptools python-wheel)) |
| 21070 | (home-page "https://github.com/kennethreitz-archive/args") |
| 21071 | (synopsis "Command-line argument parser") |
| 21072 | (description |
| 21073 | "This library provides a Python module to parse command-line arguments.") |
| 21074 | (license license:bsd-3)))) |
| 21075 | |
| 21076 | (define-public python-clint |
| 21077 | (package |
| 21078 | (name "python-clint") |
| 21079 | (version "0.5.1") |
| 21080 | (source (origin |
| 21081 | (method url-fetch) |
| 21082 | (uri (pypi-uri "clint" version)) |
| 21083 | (sha256 |
| 21084 | (base32 |
| 21085 | "1an5lkkqk1zha47198p42ji3m94xmzx1a03dn7866m87n4r4q8h5")))) |
| 21086 | (build-system pyproject-build-system) |
| 21087 | (native-inputs |
| 21088 | (list python-pytest python-setuptools python-wheel)) |
| 21089 | (propagated-inputs |
| 21090 | (list python-args)) |
| 21091 | (home-page "https://github.com/kennethreitz/clint") |
| 21092 | (synopsis "Command-line interface tools") |
| 21093 | (description |
| 21094 | "Clint is a Python module filled with a set of tools for developing |
| 21095 | command-line applications, including tools for colored and indented |
| 21096 | output, progress bar display, and pipes.") |
| 21097 | (license license:isc))) |
| 21098 | |
| 21099 | (define-public python-rply |
| 21100 | (package |
| 21101 | (name "python-rply") |
| 21102 | (version "0.7.8") |
| 21103 | (source |
| 21104 | (origin |
| 21105 | (method git-fetch) |
| 21106 | (uri (git-reference |
| 21107 | (url "https://github.com/alex/rply") |
| 21108 | (commit (string-append "v" version)))) |
| 21109 | (file-name (git-file-name name version)) |
| 21110 | (sha256 |
| 21111 | (base32 "0kn8vikyf95mr8l9g3324b7gk4cgxlvvy1abqpl1h803idqg1vwq")))) |
| 21112 | (build-system pyproject-build-system) |
| 21113 | (arguments |
| 21114 | (list |
| 21115 | #:test-flags #~(list "--ignore=tests/test_ztranslation.py") |
| 21116 | #:phases |
| 21117 | #~(modify-phases %standard-phases |
| 21118 | (add-before 'check 'fix-pytest-use |
| 21119 | (lambda _ |
| 21120 | (substitute* (find-files "tests" "\\.py$") |
| 21121 | (("import py") |
| 21122 | "import pytest") |
| 21123 | (("py\\.test") |
| 21124 | "pytest")) |
| 21125 | (setenv "HOME" (getcwd))))))) |
| 21126 | (native-inputs (list python-pytest python-setuptools)) |
| 21127 | (propagated-inputs (list python-appdirs)) |
| 21128 | (home-page "https://github.com/alex/rply") |
| 21129 | (synopsis "Parser generator for Python") |
| 21130 | (description |
| 21131 | "This package provides a pure Python based parser generator, that also |
| 21132 | works with RPython. It is a more-or-less direct port of David Bazzley's PLY, |
| 21133 | with a new public API, and RPython support.") |
| 21134 | (license license:bsd-3))) |
| 21135 | |
| 21136 | (define-public python-hy |
| 21137 | (package |
| 21138 | (name "python-hy") |
| 21139 | (version "1.3.1") |
| 21140 | (source |
| 21141 | (origin |
| 21142 | (method git-fetch) |
| 21143 | (uri (git-reference |
| 21144 | (url "https://github.com/hylang/hy") |
| 21145 | (commit version))) |
| 21146 | (file-name (git-file-name name version)) |
| 21147 | (sha256 |
| 21148 | (base32 "0fc1qjr2kkl3a5hig9l2g3ysapvc16gj1gyblaszm3xza6w0zn58")))) |
| 21149 | (build-system pyproject-build-system) |
| 21150 | (arguments |
| 21151 | (list |
| 21152 | ;; This test expects the hy executable to be called 'hy', but in Guix |
| 21153 | ;; it's .hy-real. |
| 21154 | #:test-flags #~(list "-k" "not test_sys_executable"))) |
| 21155 | (native-inputs (list python-pytest python-setuptools)) |
| 21156 | (propagated-inputs (list python-funcparserlib)) |
| 21157 | (home-page "https://hylang.org/hy/doc") |
| 21158 | (synopsis "Lisp frontend to Python") |
| 21159 | (description |
| 21160 | "Hy is a dialect of Lisp that's embedded in Python. Since Hy transforms |
| 21161 | its Lisp code into the Python Abstract Syntax Tree, you have the whole world of |
| 21162 | Python at your fingertips, in Lisp form.") |
| 21163 | (license license:expat))) |
| 21164 | |
| 21165 | (define-public python-hissp |
| 21166 | (package |
| 21167 | (name "python-hissp") |
| 21168 | (version "0.5.0") |
| 21169 | (source |
| 21170 | (origin |
| 21171 | (method git-fetch) |
| 21172 | (uri (git-reference |
| 21173 | (url "https://github.com/gilch/hissp") |
| 21174 | (commit (string-append "v" version)))) |
| 21175 | (file-name (git-file-name name version)) |
| 21176 | (sha256 |
| 21177 | (base32 "03lxna935c0qs3lppb2xrvvgh0dkwz8lh5pmgqrmpddin1kxyjri")))) |
| 21178 | (build-system pyproject-build-system) |
| 21179 | (arguments (list #:test-backend #~'unittest)) |
| 21180 | (native-inputs (list python-hypothesis python-setuptools)) |
| 21181 | (home-page "https://github.com/gilch/hissp") |
| 21182 | (synopsis "It's Python with a Lissp") |
| 21183 | (description |
| 21184 | "Hissp is a modular Lisp implementation that compiles to a functional |
| 21185 | subset of Python—Syntactic macro metaprogramming with full access to the |
| 21186 | Python ecosystem.") |
| 21187 | (license license:asl2.0))) |
| 21188 | |
| 21189 | (define-public python-promise |
| 21190 | (package |
| 21191 | (name "python-promise") |
| 21192 | (version "2.3.0") |
| 21193 | (source |
| 21194 | (origin |
| 21195 | (method git-fetch) |
| 21196 | (uri (git-reference |
| 21197 | (url "https://github.com/syrusakbary/promise") |
| 21198 | (commit (string-append "v" version)))) |
| 21199 | (file-name (git-file-name name version)) |
| 21200 | (sha256 |
| 21201 | (base32 "17mq1bm78xfl0x1g50ng502m5ldq6421rzz35hlqafsj0cq8dkp6")))) |
| 21202 | (build-system pyproject-build-system) |
| 21203 | (arguments |
| 21204 | (list |
| 21205 | #:test-flags |
| 21206 | #~(list "--ignore=tests/test_benchmark.py" |
| 21207 | ;; Issues with pytest-asyncio |
| 21208 | "--ignore=tests/test_awaitable.py" |
| 21209 | "-k" (string-join |
| 21210 | (list "not test_issue_9_safe" |
| 21211 | ;; Stacktrace issues. |
| 21212 | "test_thrown_exceptions_have_stacktrace" |
| 21213 | "test_thrown_exceptions_preserve_stacktrace") |
| 21214 | " and not ")))) |
| 21215 | (native-inputs |
| 21216 | (list python-mock |
| 21217 | python-pytest |
| 21218 | python-pytest-asyncio |
| 21219 | python-setuptools)) |
| 21220 | (propagated-inputs (list python-six)) |
| 21221 | (home-page "https://github.com/syrusakbary/promise") |
| 21222 | (synopsis "Promises/A+ implementation for Python") |
| 21223 | (description |
| 21224 | "This package provides an implementation of Promises in Python. It is a |
| 21225 | super set of Promises/A+ designed to have readable, performant code and to |
| 21226 | provide just the extensions that are absolutely necessary for using promises |
| 21227 | in Python.") |
| 21228 | (license license:expat))) |
| 21229 | |
| 21230 | (define-public python-progress |
| 21231 | (package |
| 21232 | (name "python-progress") |
| 21233 | (version "1.6") |
| 21234 | (source |
| 21235 | (origin |
| 21236 | (method git-fetch) |
| 21237 | (uri (git-reference |
| 21238 | (url "https://github.com/verigak/progress/") |
| 21239 | (commit version))) |
| 21240 | (file-name (git-file-name name version)) |
| 21241 | (sha256 |
| 21242 | (base32 "0qz5b9d3cvfdy2f1gb4r20f1qgcsihhmbc2bm2jgbvryxylp0f5k")) |
| 21243 | (snippet #~(delete-file "demo.gif")))) |
| 21244 | (build-system pyproject-build-system) |
| 21245 | (arguments |
| 21246 | (list |
| 21247 | #:test-backend #~'custom |
| 21248 | #:test-flags #~(list "test_progress.py"))) |
| 21249 | (native-inputs (list python-setuptools)) |
| 21250 | (home-page "https://github.com/verigak/progress/") |
| 21251 | (synopsis "Progress reporting bars for Python") |
| 21252 | (description |
| 21253 | "This Python package provides progress reporting for visual of progress |
| 21254 | of long running operations. There are multiple choices of progress bars and |
| 21255 | spinners, with customizable options, such as width, fill character, and |
| 21256 | suffix.") |
| 21257 | (license license:isc))) |
| 21258 | |
| 21259 | (define-public python-progressbar2 |
| 21260 | (package |
| 21261 | (name "python-progressbar2") |
| 21262 | (version "4.5.0") |
| 21263 | (source |
| 21264 | (origin |
| 21265 | (method url-fetch) |
| 21266 | (uri (pypi-uri "progressbar2" version)) |
| 21267 | (sha256 |
| 21268 | (base32 "1yw8j3sz9y3nw2x1ffiqqzml8l9vb0kixxnsjkmk3vc691icnqk6")))) |
| 21269 | (build-system pyproject-build-system) |
| 21270 | (arguments |
| 21271 | (list |
| 21272 | #:test-flags #~(list "--pyargs" "progressbar" "tests") |
| 21273 | #:phases |
| 21274 | #~(modify-phases %standard-phases |
| 21275 | (add-after 'unpack 'fix-pytest-config |
| 21276 | (lambda _ |
| 21277 | ;; Drop test coverage requirements. |
| 21278 | (substitute* "pytest.ini" |
| 21279 | ((".*-cov.*") ""))))))) |
| 21280 | (native-inputs |
| 21281 | (list python-dill |
| 21282 | python-pytest |
| 21283 | python-freezegun |
| 21284 | python-setuptools |
| 21285 | python-setuptools-scm |
| 21286 | python-wheel)) |
| 21287 | (propagated-inputs |
| 21288 | (list python-utils)) |
| 21289 | (home-page "https://github.com/WoLpH/python-progressbar") |
| 21290 | (synopsis "Text progress bar library for Python") |
| 21291 | (description |
| 21292 | "This package provides a Python progressbar library to provide |
| 21293 | visual (yet text based) progress to long running operations.") |
| 21294 | (license license:bsd-3))) |
| 21295 | |
| 21296 | (define-public python-progressbar33 |
| 21297 | (package |
| 21298 | (name "python-progressbar33") |
| 21299 | (version "2.4") |
| 21300 | (source |
| 21301 | (origin |
| 21302 | (method git-fetch) |
| 21303 | (uri (git-reference |
| 21304 | (url "https://github.com/germangh/python-progressbar") |
| 21305 | (commit (string-append "v" version)))) |
| 21306 | (file-name (git-file-name name version)) |
| 21307 | (sha256 |
| 21308 | (base32 "0vyn2l6i7fgqskqfx3nfs1dibc5v1cxydg3v3422xf41pkba282c")))) |
| 21309 | (build-system pyproject-build-system) |
| 21310 | (arguments |
| 21311 | (list |
| 21312 | #:test-backend #~'custom |
| 21313 | #:test-flags #~(list "examples.py"))) |
| 21314 | (native-inputs (list python-setuptools)) |
| 21315 | (home-page "https://github.com/germangh/python-progressbar") |
| 21316 | (synopsis "Text progress bar library for Python") |
| 21317 | (description |
| 21318 | "This package provides a text progress bar library for Python. This |
| 21319 | version only differs from the original @code{progressbar} package in that it |
| 21320 | uses relative package imports instead of absolute imports, which is necessary |
| 21321 | for the module to work under Python 3.3.") |
| 21322 | ;; Either or both of these licenses may be selected. |
| 21323 | (license (list license:lgpl2.1+ license:bsd-3)))) |
| 21324 | |
| 21325 | ;; XXX: Not maintained since 2012. |
| 21326 | (define-public python-monthdelta |
| 21327 | (package |
| 21328 | (name "python-monthdelta") |
| 21329 | (version "0.9.1") |
| 21330 | (source |
| 21331 | (origin |
| 21332 | (method url-fetch) |
| 21333 | (uri (pypi-uri "MonthDelta" version)) |
| 21334 | (sha256 |
| 21335 | (base32 "0iwcsk7ryjw5h1wp10ykwd01f3am8gdlga6461q1v1njsk0rxh41")))) |
| 21336 | (build-system pyproject-build-system) |
| 21337 | (arguments |
| 21338 | (list #:tests? #f)) ; No tests. |
| 21339 | (native-inputs (list python-setuptools)) |
| 21340 | (home-page "http://packages.python.org/MonthDelta") |
| 21341 | (synopsis "Date computations with months") |
| 21342 | (description |
| 21343 | "MonthDelta provides functionality to do date computations with months.") |
| 21344 | (license license:expat))) |
| 21345 | |
| 21346 | (define-public python-moto |
| 21347 | (package |
| 21348 | (name "python-moto") |
| 21349 | (version "5.1.20") |
| 21350 | (source (origin |
| 21351 | (method url-fetch) |
| 21352 | (uri (pypi-uri "moto" version)) |
| 21353 | (sha256 |
| 21354 | (base32 "1h1yy584gs061s3yrgggqvg3m3hp71aivq5pwj00smbawa0xf4kd")))) |
| 21355 | (build-system pyproject-build-system) |
| 21356 | (arguments |
| 21357 | (list |
| 21358 | ;; tests: 11149 passed, 38 skipped, 52 deselected, 2 xfailed, 4 warnings |
| 21359 | #:test-flags |
| 21360 | #~(list "-m" "not network and not requires_docker" |
| 21361 | ;; Not all of the tests are thread save, see: |
| 21362 | ;; <https://github.com/getmoto/moto/issues/7786>. |
| 21363 | ;; "--numprocesses" (number->string (min 8 (parallel-job-count))) |
| 21364 | "-k" (string-join |
| 21365 | ;; Network access is required. |
| 21366 | (list "not test_passthrough_calls_for_entire_service" |
| 21367 | "test_passthrough_calls_for_specific_url" |
| 21368 | "test_passthrough_calls_for_wildcard_urls" |
| 21369 | "test_put_record_batch_http_destination" |
| 21370 | "test_put_record_http_destination" |
| 21371 | "test_s3_server_post_cors_multiple_origins" |
| 21372 | "test_with_custom_request_header" |
| 21373 | ;; AttributeError: 'ImportError' object has no |
| 21374 | ;; attribute 'message' |
| 21375 | "test_batch_update" |
| 21376 | "test_batch_update__not_enough_parameters" |
| 21377 | "test_execute_transaction" |
| 21378 | "test_without_primary_key_in_where_clause") |
| 21379 | " and not ") |
| 21380 | "tests") |
| 21381 | #:phases |
| 21382 | #~(modify-phases %standard-phases |
| 21383 | (add-after 'unpack 'patch-hardcoded-executable-names |
| 21384 | (lambda* (#:key inputs #:allow-other-keys) |
| 21385 | (let ((bash-exec (search-input-file inputs "/bin/sh"))) |
| 21386 | (substitute* "moto/batch/models.py" |
| 21387 | (("/bin/sh") bash-exec)) |
| 21388 | (substitute* (find-files "tests" "\\.py$") |
| 21389 | (("#!/bin/bash") (string-append "#!" bash-exec)))))) |
| 21390 | (add-before 'check 'pre-check |
| 21391 | (lambda _ |
| 21392 | (setenv "AWS_ACCESS_KEY_ID" "guix-access-key-id") |
| 21393 | (setenv "AWS_SECRET_ACCESS_KEY" "guix-secret-access-key") |
| 21394 | (setenv "TESTS_SKIP_REQUIRES_DOCKER" "true")))))) |
| 21395 | (native-inputs |
| 21396 | (list python-flask |
| 21397 | python-flask-cors |
| 21398 | python-freezegun |
| 21399 | python-pycognito |
| 21400 | python-pyotp |
| 21401 | python-pytest |
| 21402 | python-setuptools)) |
| 21403 | (inputs |
| 21404 | (list bash-minimal)) |
| 21405 | (propagated-inputs |
| 21406 | (list python-antlr4-runtime |
| 21407 | python-aws-xray-sdk |
| 21408 | python-boto3 |
| 21409 | python-botocore |
| 21410 | python-cfn-lint |
| 21411 | python-cryptography |
| 21412 | python-dateutil |
| 21413 | python-graphql-core |
| 21414 | python-jinja2 |
| 21415 | python-joserfc |
| 21416 | python-jsonpath-ng |
| 21417 | python-multipart |
| 21418 | python-openapi-spec-validator |
| 21419 | python-py-partiql-parser |
| 21420 | python-pyparsing |
| 21421 | python-requests |
| 21422 | python-responses |
| 21423 | python-werkzeug |
| 21424 | python-xmltodict)) |
| 21425 | (home-page "https://github.com/spulec/moto") |
| 21426 | (synopsis "Mock out the boto library") |
| 21427 | (description |
| 21428 | "@code{moto} is a library designed to easily mock out the |
| 21429 | @code{boto} library.") |
| 21430 | (license license:asl2.0))) |
| 21431 | |
| 21432 | (define-public python-plumbum |
| 21433 | (package |
| 21434 | (name "python-plumbum") |
| 21435 | (version "1.7.0") |
| 21436 | (source |
| 21437 | (origin |
| 21438 | (method git-fetch) |
| 21439 | (uri (git-reference |
| 21440 | (url "https://github.com/tomerfiliba/plumbum") |
| 21441 | (commit (string-append "v" version)))) |
| 21442 | (file-name (git-file-name name version)) |
| 21443 | (sha256 |
| 21444 | (base32 "1vlaiz4bwgrcay51knj6a20lh3lwihjqxhxhdk6nqkn9ijg0hc81")))) |
| 21445 | (build-system pyproject-build-system) |
| 21446 | (arguments |
| 21447 | (list |
| 21448 | #:test-flags |
| 21449 | #~(list "--ignore=tests/test_remote.py" |
| 21450 | "--ignore=tests/test_putty.py" |
| 21451 | "--ignore=tests/test_sudo.py" |
| 21452 | "-k" |
| 21453 | (string-join (list "not test_home" |
| 21454 | "test_iter_lines_error" |
| 21455 | "test_quoting" |
| 21456 | "test_copy_move_delete") |
| 21457 | " and not ")))) |
| 21458 | (native-inputs |
| 21459 | (list procps |
| 21460 | python-psutil |
| 21461 | python-pytest |
| 21462 | python-setuptools |
| 21463 | python-setuptools-scm |
| 21464 | python-wheel)) |
| 21465 | (home-page "https://plumbum.readthedocs.io") |
| 21466 | (synopsis "Python shell combinators library") |
| 21467 | (description |
| 21468 | "Plumbum is a library of tools for replacing shell scripts with Python |
| 21469 | code.") |
| 21470 | (license license:expat))) |
| 21471 | |
| 21472 | (define-public python-deprecation |
| 21473 | (package |
| 21474 | (name "python-deprecation") |
| 21475 | (version "2.1.0") |
| 21476 | (source |
| 21477 | (origin |
| 21478 | (method url-fetch) |
| 21479 | (uri (pypi-uri "deprecation" version)) |
| 21480 | (sha256 |
| 21481 | (base32 |
| 21482 | "1zqqjlgmhgkpzg9ss5ki8wamxl83xn51fs6gn2a8cxsx9vkbvcvj")))) |
| 21483 | (build-system pyproject-build-system) |
| 21484 | (arguments |
| 21485 | (list |
| 21486 | #:test-backend #~'unittest |
| 21487 | #:phases |
| 21488 | #~(modify-phases %standard-phases |
| 21489 | (add-after 'unpack 'drop-unittest2 |
| 21490 | ;; See: <https://github.com/briancurtin/deprecation/issues/54>. |
| 21491 | (lambda _ |
| 21492 | (substitute* "tests/test_deprecation.py" |
| 21493 | (("import unittest2") |
| 21494 | "import unittest as unittest2"))))))) |
| 21495 | (native-inputs |
| 21496 | (list python-setuptools)) |
| 21497 | (propagated-inputs |
| 21498 | (list python-packaging)) |
| 21499 | (home-page "https://deprecation.readthedocs.io/") |
| 21500 | (synopsis "Python library to handle automated deprecations") |
| 21501 | (description |
| 21502 | "This is a library that enables automated deprecations. It offers the |
| 21503 | @code{deprecated()} decorator to wrap functions, providing proper warnings |
| 21504 | both in documentation and via Python’s warnings system, as well as the |
| 21505 | @code{deprecation.fail_if_not_removed()} decorator for test methods to ensure |
| 21506 | that deprecated code is eventually removed.") |
| 21507 | (license license:asl2.0))) |
| 21508 | |
| 21509 | (define-public python-jmespath |
| 21510 | (package |
| 21511 | (name "python-jmespath") |
| 21512 | (version "1.0.1") |
| 21513 | (source |
| 21514 | (origin |
| 21515 | (method url-fetch) |
| 21516 | (uri (pypi-uri "jmespath" version)) |
| 21517 | (sha256 |
| 21518 | (base32 "1gpdc1f0q5c9scmbw1l9g40jjfk3pxwg91ayvn7xbvvddlh1n9lh")))) |
| 21519 | (build-system pyproject-build-system) |
| 21520 | (native-inputs |
| 21521 | (list python-pytest |
| 21522 | python-setuptools)) |
| 21523 | (home-page "https://github.com/jmespath/jmespath.py") |
| 21524 | (synopsis "JSON Matching Expressions") |
| 21525 | (description |
| 21526 | "JMESPath (pronounced “james path”) is a Python library that allows one |
| 21527 | to declaratively specify how to extract elements from a JSON document.") |
| 21528 | (license license:expat))) |
| 21529 | |
| 21530 | (define-public python-asteval |
| 21531 | (package |
| 21532 | (name "python-asteval") |
| 21533 | (version "1.0.6") |
| 21534 | (source |
| 21535 | (origin |
| 21536 | (method url-fetch) |
| 21537 | (uri (pypi-uri "asteval" version)) |
| 21538 | (sha256 |
| 21539 | (base32 "17x1qk07cixj1nn59pp5dzjc9jna92v6kljdss81l5rf9cqfga0s")))) |
| 21540 | (build-system pyproject-build-system) |
| 21541 | (native-inputs |
| 21542 | (list python-pytest python-setuptools python-setuptools-scm)) |
| 21543 | (home-page "https://github.com/newville/asteval") |
| 21544 | (synopsis "Minimalistic evaluator of Python expressions") |
| 21545 | (description |
| 21546 | "This package provides a minimalistic evaluator of Python expression |
| 21547 | using the @code{ast} module.") |
| 21548 | (license license:expat))) |
| 21549 | |
| 21550 | (define-public python-lmfit |
| 21551 | (package |
| 21552 | (name "python-lmfit") |
| 21553 | (version "1.3.4") |
| 21554 | (source |
| 21555 | (origin |
| 21556 | (method git-fetch) |
| 21557 | (uri (git-reference |
| 21558 | (url "https://github.com/lmfit/lmfit-py") |
| 21559 | (commit version))) |
| 21560 | (file-name (git-file-name name version)) |
| 21561 | (sha256 |
| 21562 | (base32 "00zx5fc5qkk8cxjpz00z8xm4kga7m0jgr8pbgb097sifbxlix0d9")))) |
| 21563 | (build-system pyproject-build-system) |
| 21564 | (native-inputs |
| 21565 | (list python-pytest |
| 21566 | python-setuptools |
| 21567 | python-setuptools-scm)) |
| 21568 | (propagated-inputs |
| 21569 | (list python-asteval |
| 21570 | python-dill |
| 21571 | python-numpy |
| 21572 | python-scipy |
| 21573 | python-uncertainties)) |
| 21574 | (home-page "https://lmfit.github.io/lmfit-py/") |
| 21575 | (synopsis "Least-Squares minimization with bounds and constraints") |
| 21576 | (description |
| 21577 | "Lmfit provides a high-level interface to non-linear optimization and |
| 21578 | curve fitting problems for Python. It builds on and extends many of the |
| 21579 | optimization methods of @code{scipy.optimize}. Initially inspired by (and |
| 21580 | named for) extending the Levenberg-Marquardt method from |
| 21581 | @code{scipy.optimize.leastsq}, lmfit now provides a number of useful |
| 21582 | enhancements to optimization and data fitting problems.") |
| 21583 | (license license:bsd-3))) |
| 21584 | |
| 21585 | (define-public python-bokeh |
| 21586 | (package |
| 21587 | (name "python-bokeh") |
| 21588 | ;; Update bokehjs on (gnu packages javascript) to the same version. |
| 21589 | (version "3.10.0") |
| 21590 | (source |
| 21591 | (origin |
| 21592 | (method git-fetch) |
| 21593 | (uri (git-reference |
| 21594 | (url "https://github.com/bokeh/bokeh") |
| 21595 | (commit version))) |
| 21596 | (file-name (git-file-name name version)) |
| 21597 | (sha256 |
| 21598 | (base32 "0gh3zmc6nb7awxgpyry3ncy15a18kmimm1ja6sa0qprw4bysx1xb")) |
| 21599 | (patches (list (search-patch "python-bokeh-bokehjs-env.patch"))) |
| 21600 | (modules '((guix build utils))) |
| 21601 | (snippet |
| 21602 | #~(delete-file-recursively "bokehjs")))) |
| 21603 | (build-system pyproject-build-system) |
| 21604 | (arguments |
| 21605 | (list |
| 21606 | #:test-flags |
| 21607 | #~(list |
| 21608 | ;; Ignore bokehjs outdated resources tests. |
| 21609 | ;; 11983 passed, 23 skipped, 1 deselected. |
| 21610 | "--ignore=tests/test_bokehjs.py" ;1 failed. |
| 21611 | "--ignore=tests/test_defaults.py" ;1 failed. |
| 21612 | "--ignore=tests/test_examples.py" ;430 failed. |
| 21613 | "--ignore=tests/test_cross.py" ;8 failed. |
| 21614 | "--ignore=tests/codebase/" ;12 failed. |
| 21615 | "--ignore=tests/unit/bokeh/embed/" ;3 failed. |
| 21616 | "--ignore=tests/unit/bokeh/core/test_templates.py" ;2 failed. |
| 21617 | "--ignore=tests/unit/bokeh/test_resources.py" ;5 failed. |
| 21618 | "--ignore=tests/unit/bokeh/util/test_compiler.py" ;4 failed. |
| 21619 | "--ignore=tests/unit/bokeh/test_ext.py" ;1 failed. |
| 21620 | "--ignore=tests/unit/bokeh/server/" ;3 failed |
| 21621 | "--ignore=tests/unit/bokeh/util/test_package.py" ;1 failed. |
| 21622 | "-k" "not test_handling_SIGTERM") |
| 21623 | #:phases |
| 21624 | #~(modify-phases %standard-phases |
| 21625 | ;; Skip bokehjs build and set environment |
| 21626 | (add-after 'unpack 'skip-bokehjs-build-install |
| 21627 | (lambda _ |
| 21628 | (substitute* "setup.py" |
| 21629 | ((" else:" all) |
| 21630 | (string-append |
| 21631 | " elif action == \"skip\":\n" |
| 21632 | " return\n" |
| 21633 | all))) |
| 21634 | (setenv "BOKEHJS_ACTION" "skip") |
| 21635 | (setenv "HOME" "/tmp"))) |
| 21636 | (add-before 'build 'set-version |
| 21637 | (lambda _ |
| 21638 | (substitute* "pyproject.toml" |
| 21639 | ((", \"setuptools-git-versioning\"") "") |
| 21640 | (("dynamic = \\[\"version\"\\]") |
| 21641 | (string-append "version = '" #$version "'")))))))) |
| 21642 | (native-inputs |
| 21643 | (list git-minimal |
| 21644 | python-beautifulsoup4 |
| 21645 | python-dateutil |
| 21646 | python-flaky |
| 21647 | python-json5 |
| 21648 | python-mock |
| 21649 | python-nbconvert |
| 21650 | python-pandas |
| 21651 | python-pytest |
| 21652 | python-pytest-asyncio |
| 21653 | python-pytest-timeout |
| 21654 | python-pytz |
| 21655 | python-requests |
| 21656 | python-setuptools |
| 21657 | python-toml |
| 21658 | python-wheel)) |
| 21659 | (propagated-inputs |
| 21660 | (list node-bokehjs |
| 21661 | python-contourpy |
| 21662 | python-jinja2 |
| 21663 | python-narwhals |
| 21664 | python-numpy |
| 21665 | python-packaging |
| 21666 | python-pandas |
| 21667 | python-pillow |
| 21668 | python-pyyaml |
| 21669 | python-tornado |
| 21670 | python-xyzservices)) |
| 21671 | (native-search-paths |
| 21672 | (list (search-path-specification |
| 21673 | (variable "BOKEHJS_PATH") |
| 21674 | (files '("bokehjs/static"))))) |
| 21675 | (home-page "https://github.com/bokeh/bokeh") |
| 21676 | (synopsis "Interactive plots and applications in the browser from Python") |
| 21677 | (description |
| 21678 | "This package provides tools for interactive plots and applications in the |
| 21679 | browser from Python.") |
| 21680 | (license license:bsd-3))) |
| 21681 | |
| 21682 | ;; TODO: Move to python-web. |
| 21683 | (define-public python-botocore |
| 21684 | ;; Note: When updating botocore, also make sure that boto3 and awscli |
| 21685 | ;; are compatible. |
| 21686 | (package |
| 21687 | (name "python-botocore") |
| 21688 | (version "1.42.5") |
| 21689 | (source |
| 21690 | (origin |
| 21691 | (method url-fetch) |
| 21692 | (uri (pypi-uri "botocore" version)) |
| 21693 | (sha256 |
| 21694 | (base32 |
| 21695 | "0vqkfzrljd15qnzgdzqqbf1l1f8qhg5pz010b5wxk1j2y63w9grp")))) |
| 21696 | (build-system pyproject-build-system) |
| 21697 | (arguments |
| 21698 | (list |
| 21699 | ;; tests: 4496 passed, 87 skipped |
| 21700 | #:test-flags |
| 21701 | #~(list "--numprocesses" (number->string (min (parallel-job-count) 8)) |
| 21702 | ;; The full test suite is huge, run some of it's portion. |
| 21703 | "--ignore=tests/integration" |
| 21704 | "--ignore=tests/functional"))) |
| 21705 | (native-inputs |
| 21706 | (list python-jsonschema |
| 21707 | python-pytest |
| 21708 | python-pytest-xdist |
| 21709 | python-setuptools)) |
| 21710 | (propagated-inputs |
| 21711 | (list python-dateutil |
| 21712 | python-jmespath |
| 21713 | python-urllib3)) |
| 21714 | (home-page "https://github.com/boto/botocore") |
| 21715 | (synopsis "Low-level interface to AWS") |
| 21716 | (description |
| 21717 | "Botocore is a Python library that provides a low-level interface to the |
| 21718 | Amazon Web Services (AWS) API.") |
| 21719 | (license license:asl2.0))) |
| 21720 | |
| 21721 | (define-public python-boto3 |
| 21722 | (package |
| 21723 | (name "python-boto3") |
| 21724 | (version "1.42.5") |
| 21725 | (source |
| 21726 | (origin |
| 21727 | (method git-fetch) |
| 21728 | (uri (git-reference |
| 21729 | (url "https://github.com/boto/boto3") |
| 21730 | (commit version))) |
| 21731 | (file-name (git-file-name name version)) |
| 21732 | (sha256 |
| 21733 | (base32 "15xpx54k503zcr03rx5q4fc3wf4f9zxnmghah9shamb61k2zriv1")))) |
| 21734 | (build-system pyproject-build-system) |
| 21735 | (arguments |
| 21736 | (list |
| 21737 | ;; tests: 1435 passed, 22 skipped, 1 warning |
| 21738 | #:test-flags |
| 21739 | #~(list "--numprocesses" (number->string (min 8 (parallel-job-count))) |
| 21740 | ;; Integration tests are trying to connect to AWS. |
| 21741 | "--ignore=tests/integration"))) |
| 21742 | (native-inputs |
| 21743 | (list python-mock |
| 21744 | python-pytest |
| 21745 | python-pytest-xdist |
| 21746 | python-setuptools)) |
| 21747 | (propagated-inputs |
| 21748 | (list python-botocore |
| 21749 | python-jmespath |
| 21750 | python-s3transfer)) |
| 21751 | (home-page "https://github.com/boto/boto3") |
| 21752 | (synopsis "AWS SDK for Python") |
| 21753 | (description |
| 21754 | "Boto3 is a Python library for writing programs that interact with |
| 21755 | @acronym{AWS,Amazon Web Services}.") |
| 21756 | (license license:asl2.0))) |
| 21757 | |
| 21758 | (define-public python-pyfiglet |
| 21759 | (package |
| 21760 | (name "python-pyfiglet") |
| 21761 | (version "1.0.4") |
| 21762 | (source |
| 21763 | (origin |
| 21764 | (method git-fetch) |
| 21765 | (uri (git-reference |
| 21766 | (url "https://github.com/pwaller/pyfiglet") |
| 21767 | (commit (string-append "v" version)))) |
| 21768 | (file-name (git-file-name name version)) |
| 21769 | (sha256 |
| 21770 | (base32 "1r1fyphz99jar2xfk761cl740zxk4b0gygajgjfx6i1kf0dxdv40")))) |
| 21771 | (build-system pyproject-build-system) |
| 21772 | (arguments |
| 21773 | (list |
| 21774 | #:phases |
| 21775 | #~(modify-phases %standard-phases |
| 21776 | (add-after 'unpack 'fallback-on-default-build |
| 21777 | (lambda _ |
| 21778 | ;; This pyproject has little value and fails because of the |
| 21779 | ;; :__legacy__ suffix. Removing it to rely on defaults. |
| 21780 | (delete-file "pyproject.toml")))))) |
| 21781 | (native-inputs (list python-pytest python-setuptools)) |
| 21782 | (home-page "https://github.com/pwaller/pyfiglet") |
| 21783 | (synopsis "Draw ASCII art big letters in Python") |
| 21784 | (description |
| 21785 | "This module lets you draw large letter from ordinary characters in pure |
| 21786 | Python.") |
| 21787 | (license license:expat))) |
| 21788 | |
| 21789 | (define-public python-mako |
| 21790 | (package |
| 21791 | (name "python-mako") |
| 21792 | (version "1.3.12") |
| 21793 | (source |
| 21794 | (origin |
| 21795 | (method git-fetch) |
| 21796 | (uri (git-reference |
| 21797 | (url "https://github.com/sqlalchemy/mako") |
| 21798 | (commit (string-append "rel_" (string-replace-substring |
| 21799 | version "." "_"))))) |
| 21800 | (file-name (git-file-name name version)) |
| 21801 | (sha256 |
| 21802 | (base32 "1cvx14yvsx13fnxbwjy4jh8yy87pa6lzfgqzkih4j6c8q0zjd0v0")))) |
| 21803 | (build-system pyproject-build-system) |
| 21804 | (native-inputs |
| 21805 | (list python-pytest |
| 21806 | python-setuptools)) |
| 21807 | (propagated-inputs |
| 21808 | (list python-markupsafe)) |
| 21809 | (home-page "https://www.makotemplates.org/") |
| 21810 | (synopsis "Templating language for Python") |
| 21811 | (description "Mako is a templating language for Python that compiles |
| 21812 | templates into Python modules.") |
| 21813 | (license license:expat))) |
| 21814 | |
| 21815 | (define-public python-cookiecutter |
| 21816 | (package |
| 21817 | (name "python-cookiecutter") |
| 21818 | (version "2.6.0") |
| 21819 | (source |
| 21820 | (origin |
| 21821 | (method url-fetch) |
| 21822 | (uri (pypi-uri "cookiecutter" version)) |
| 21823 | (sha256 |
| 21824 | (base32 "0762882zrvf3sslr9r7v8wkdwjckhm2clj4d831gvx54kqbgh8fv")))) |
| 21825 | (build-system pyproject-build-system) |
| 21826 | (arguments |
| 21827 | (list |
| 21828 | #:phases #~(modify-phases %standard-phases |
| 21829 | (add-before 'check 'pre-check |
| 21830 | (lambda _ |
| 21831 | ;; test_get_user_config.py requires a writable home |
| 21832 | ;; directory. |
| 21833 | (setenv "HOME" |
| 21834 | (getcwd)) |
| 21835 | ;; test_hooks.py dynamically creates shell scripts |
| 21836 | ;; with a /bin/bash shebang. We have to patch these. |
| 21837 | (substitute* "tests/test_hooks.py" |
| 21838 | (("/bin/bash") |
| 21839 | (string-append #$(this-package-native-input |
| 21840 | "bash-minimal") "/bin/bash")))))))) |
| 21841 | (native-inputs (list bash-minimal |
| 21842 | git-minimal/pinned |
| 21843 | python-freezegun |
| 21844 | python-pytest |
| 21845 | python-pytest-mock |
| 21846 | python-setuptools |
| 21847 | python-wheel)) |
| 21848 | (propagated-inputs (list python-arrow |
| 21849 | python-binaryornot |
| 21850 | python-click |
| 21851 | python-jinja2 |
| 21852 | python-pyyaml |
| 21853 | python-requests |
| 21854 | python-rich |
| 21855 | python-slugify)) |
| 21856 | (home-page "https://github.com/cookiecutter/cookiecutter") |
| 21857 | (synopsis |
| 21858 | "Command-line utility that creates projects from project templates") |
| 21859 | (description |
| 21860 | "This package provides a command-line utility that creates projects from |
| 21861 | project templates, e.g. creating a Python package project from a Python package |
| 21862 | project template.") |
| 21863 | (license license:bsd-3))) |
| 21864 | |
| 21865 | (define-public python-pyquery |
| 21866 | (package |
| 21867 | (name "python-pyquery") |
| 21868 | (version "2.0.1") |
| 21869 | (source |
| 21870 | (origin |
| 21871 | (method url-fetch) |
| 21872 | (uri (pypi-uri "pyquery" version)) |
| 21873 | (sha256 |
| 21874 | (base32 |
| 21875 | "1brg6aawb9m5mdfmc6g7v5r6pczbx67r4l9cn5yh6bdi0qkvp501")))) |
| 21876 | (build-system pyproject-build-system) |
| 21877 | (arguments |
| 21878 | (list |
| 21879 | #:test-flags |
| 21880 | #~(list #$@(map (lambda (test) (string-append |
| 21881 | "--deselect=tests/test_pyquery.py::" |
| 21882 | test)) |
| 21883 | (list |
| 21884 | ;; AssertionError: 'REQUEST_METHOD: POST' not found in '' |
| 21885 | "TestWebScrapping::test_post" |
| 21886 | ;; AssertionError: 'HTTP_X_FOO: bar' not found in '' |
| 21887 | "TestWebScrapping::test_session" |
| 21888 | ;; Assertion is not equal. |
| 21889 | "TestManipulating::test_val_for_textarea" |
| 21890 | "TestHTMLParser::test_replaceWith" |
| 21891 | "TestHTMLParser::test_replaceWith_with_function" |
| 21892 | ;; Network access is required. |
| 21893 | "TestWebScrapping::test_get" |
| 21894 | "TestWebScrappingEncoding::test_get"))))) |
| 21895 | (native-inputs |
| 21896 | (list python-pytest |
| 21897 | python-requests |
| 21898 | python-setuptools |
| 21899 | python-webob |
| 21900 | python-webtest |
| 21901 | python-wheel)) |
| 21902 | (propagated-inputs |
| 21903 | (list python-cssselect python-lxml)) |
| 21904 | (home-page "https://github.com/gawel/pyquery") |
| 21905 | (synopsis "Make jQuery-like queries on xml documents") |
| 21906 | (description "pyquery allows you to make jQuery queries on xml documents. |
| 21907 | The API is as much as possible the similar to jQuery. pyquery uses lxml for |
| 21908 | fast xml and html manipulation.") |
| 21909 | (license license:bsd-3))) |
| 21910 | |
| 21911 | (define-public python-amqp |
| 21912 | (package |
| 21913 | (name "python-amqp") |
| 21914 | (version "5.1.1") |
| 21915 | (source |
| 21916 | (origin |
| 21917 | (method url-fetch) |
| 21918 | (uri (pypi-uri "amqp" version)) |
| 21919 | (sha256 |
| 21920 | (base32 "1qmmffiy48nady7is8529vxcyqbq88v5zgawqr3fk4q8rkz166rc")))) |
| 21921 | (build-system pyproject-build-system) |
| 21922 | (arguments |
| 21923 | (list ; Integration tests require network connectivity. |
| 21924 | #:test-flags '(list "--ignore=t/integration/test_rmq.py"))) |
| 21925 | (native-inputs (list python-pytest python-setuptools python-wheel)) |
| 21926 | (propagated-inputs (list python-vine)) |
| 21927 | (home-page "https://github.com/celery/py-amqp") |
| 21928 | (synopsis "Low-level AMQP client for Python (fork of amqplib)") |
| 21929 | (description |
| 21930 | "This is a fork of amqplib which was originally written by Barry Pederson. |
| 21931 | It is maintained by the Celery project, and used by kombu as a pure python |
| 21932 | alternative when librabbitmq is not available.") |
| 21933 | (license license:lgpl2.1+))) |
| 21934 | |
| 21935 | (define-public python-benchmark-4dn |
| 21936 | (package |
| 21937 | (name "python-benchmark-4dn") |
| 21938 | (version "0.5.24") |
| 21939 | (source (origin |
| 21940 | (method url-fetch) |
| 21941 | (uri (pypi-uri "benchmark_4dn" version)) |
| 21942 | (sha256 |
| 21943 | (base32 |
| 21944 | "1cjin99p8mrh4nkbr4hsdfks9c22dfw3gk5ad80b4rxngs8mwj0s")))) |
| 21945 | (properties '(("upstream-name" . "benchmark_4dn"))) |
| 21946 | (build-system pyproject-build-system) |
| 21947 | ;; There are none. |
| 21948 | (arguments (list #:tests? #false)) |
| 21949 | (native-inputs |
| 21950 | (list python-poetry-core)) |
| 21951 | (home-page "https://github.com/SooLee/Benchmark/") |
| 21952 | (synopsis "Benchmark functions for CWL workflows") |
| 21953 | (description |
| 21954 | "This package provides benchmark functions that return total space, memory, |
| 21955 | CPUs required per given input size, and parameters for CWL workflows.") |
| 21956 | (license license:expat))) |
| 21957 | |
| 21958 | (define-public python-beniget |
| 21959 | (package |
| 21960 | (name "python-beniget") |
| 21961 | (version "0.5.0") |
| 21962 | (source |
| 21963 | (origin |
| 21964 | (method url-fetch) |
| 21965 | (uri (pypi-uri "beniget" version)) |
| 21966 | (sha256 |
| 21967 | (base32 "08ig66dp3xjl3nhqlpdkv0bl1m0m5mr1x2yrncz3vpn7ivx13bz7")))) |
| 21968 | (build-system pyproject-build-system) |
| 21969 | (native-inputs |
| 21970 | (list python-pytest |
| 21971 | python-setuptools)) |
| 21972 | (propagated-inputs |
| 21973 | (list python-gast)) |
| 21974 | (home-page "https://github.com/serge-sans-paille/beniget") |
| 21975 | (synopsis "Extract semantic information about static Python code") |
| 21976 | (description |
| 21977 | "Beniget is a collection of analyzers for Python @acronym{AST, |
| 21978 | Abstract Syntax Tree}. It is a building block for writing a static analyzer |
| 21979 | or compiler for Python.") |
| 21980 | (license license:bsd-3))) |
| 21981 | |
| 21982 | (define-public python-kombu |
| 21983 | (package |
| 21984 | (name "python-kombu") |
| 21985 | (version "5.6.2") |
| 21986 | (source |
| 21987 | (origin |
| 21988 | (method git-fetch) |
| 21989 | (uri (git-reference |
| 21990 | (url "https://github.com/celery/kombu") |
| 21991 | (commit (string-append "v" version)))) |
| 21992 | (file-name (git-file-name name version)) |
| 21993 | (sha256 |
| 21994 | (base32 "1yglhylq1vfi43yv2q02k9kf5kwdr0xhrmghmmhyna87qd108ir7")))) |
| 21995 | (build-system pyproject-build-system) |
| 21996 | (arguments |
| 21997 | (list |
| 21998 | ;; tests: 854 passed, 193 skipped |
| 21999 | #:test-flags |
| 22000 | #~(list |
| 22001 | ;; TODO: Package azure-identity (required for this file) |
| 22002 | "--ignore=t/unit/transport/test_azurestoragequeues.py" |
| 22003 | ;; XXX: Requires google-cloud-pubsub. |
| 22004 | "--ignore=t/unit/transport/test_gcpubsub.py" |
| 22005 | ;; XXX: Requires pyro, see: |
| 22006 | ;; <https://codeberg.org/guix/guix/issues/5857> |
| 22007 | "--ignore=t/unit/transport/test_pyro.py") |
| 22008 | #:phases |
| 22009 | #~(modify-phases %standard-phases |
| 22010 | (add-after 'unpack 'relax-requirements |
| 22011 | (lambda _ |
| 22012 | (substitute* "requirements/default.txt" |
| 22013 | (("tzdata>=2025.2") |
| 22014 | "tzdata>=2025.1"))))))) |
| 22015 | (native-inputs |
| 22016 | (list python-botocore |
| 22017 | python-pytest |
| 22018 | python-pytest-freezer |
| 22019 | python-pytest-sugar |
| 22020 | python-setuptools)) |
| 22021 | (propagated-inputs |
| 22022 | (list python-amqp |
| 22023 | python-packaging |
| 22024 | python-tzdata |
| 22025 | python-vine)) |
| 22026 | (home-page "https://kombu.readthedocs.io") |
| 22027 | (synopsis "Message passing library for Python") |
| 22028 | (description |
| 22029 | "The aim of Kombu is to make messaging in Python as easy as possible by |
| 22030 | providing an idiomatic high-level interface for the AMQ protocol, and also |
| 22031 | provide proven and tested solutions to common messaging problems. AMQP is the |
| 22032 | Advanced Message Queuing Protocol, an open standard protocol for message |
| 22033 | orientation, queuing, routing, reliability and security, for which the |
| 22034 | RabbitMQ messaging server is the most popular implementation.") |
| 22035 | (license license:bsd-3))) |
| 22036 | |
| 22037 | (define-public python-billiard |
| 22038 | (package |
| 22039 | (name "python-billiard") |
| 22040 | (version "4.2.2") |
| 22041 | (source |
| 22042 | (origin |
| 22043 | (method git-fetch) |
| 22044 | (uri (git-reference |
| 22045 | (url "https://github.com/celery/billiard") |
| 22046 | (commit (string-append "v" version)))) |
| 22047 | (file-name (git-file-name name version)) |
| 22048 | (sha256 |
| 22049 | (base32 "1p08w9msiajhg23ifcgnkv8jlbnh3ip3qhxahl5q0338sk4kah19")))) |
| 22050 | (build-system pyproject-build-system) |
| 22051 | (arguments |
| 22052 | (list |
| 22053 | #:phases |
| 22054 | #~(modify-phases %standard-phases |
| 22055 | (add-after 'unpack 'remove-win-files |
| 22056 | (lambda _ |
| 22057 | (for-each delete-file-recursively |
| 22058 | '("billiard/popen_spawn_win32.py" |
| 22059 | "billiard/_win.py"))))))) |
| 22060 | (native-inputs (list python-psutil python-pytest python-setuptools)) |
| 22061 | (home-page "https://github.com/celery/billiard") |
| 22062 | (synopsis "Python multiprocessing fork with improvements and bugfixes") |
| 22063 | (description |
| 22064 | "Billiard is a fork of the Python 2.7 multiprocessing package. The |
| 22065 | multiprocessing package itself is a renamed and updated version of R Oudkerk's |
| 22066 | pyprocessing package. This standalone variant is intended to be compatible with |
| 22067 | Python 2.4 and 2.5, and will draw its fixes/improvements from python-trunk.") |
| 22068 | (license license:bsd-3))) |
| 22069 | |
| 22070 | (define-public python-celery |
| 22071 | (package |
| 22072 | (name "python-celery") |
| 22073 | (version "5.6.3") |
| 22074 | (source |
| 22075 | (origin |
| 22076 | (method url-fetch) |
| 22077 | (uri (pypi-uri "celery" version)) |
| 22078 | (sha256 |
| 22079 | (base32 "04i9w7sakiahf2593mshxxwqis19hnyrmr8vy3lq5f2l42yhcw0p")))) |
| 22080 | (build-system pyproject-build-system) |
| 22081 | (arguments |
| 22082 | (list |
| 22083 | ;; tests: 3362 passed, 38 skipped, 10 deselected, 3 xfailed, 63 |
| 22084 | ;; warnings, 28808 subtests passed |
| 22085 | #:test-flags |
| 22086 | ;; The MongoDB backend test appears to expect an older version of |
| 22087 | ;; MongoDB which provided its own bson module, fails with " |
| 22088 | ;; AttributeError: module 'bson' has no attribute 'encode'". |
| 22089 | #~(list "--ignore=t/unit/backends/test_mongodb.py" |
| 22090 | ;; XXX: Requires google-cloud-firestore |
| 22091 | "--ignore=t/unit/backends/test_gcs.py" |
| 22092 | "-k" (string-join |
| 22093 | ;; AssertionError. |
| 22094 | (list "not test_check_privileges_no_fchown" |
| 22095 | ;; These 3 tests error out on ci.guix.gnu.org with |
| 22096 | ;; OSError: [Errno 24] Too many open files |
| 22097 | "test_register_with_event_loop__no_on_tick_dupes" |
| 22098 | "test_with_autoscaler_file_descriptor_safety" |
| 22099 | "test_with_file_descriptor_safety" |
| 22100 | ;; XXX: Fails to compare local timezones. |
| 22101 | "test_use_local_timezone" |
| 22102 | ;; assert 'No such option: --ini' in <...> |
| 22103 | "test_preload_options[subcommand_with_params0]" |
| 22104 | "test_preload_options[subcommand_with_params1]") |
| 22105 | " and not ")) |
| 22106 | #:phases |
| 22107 | #~(modify-phases %standard-phases |
| 22108 | (add-before 'check 'increase-resource-limits |
| 22109 | (lambda* (#:key tests? #:allow-other-keys) |
| 22110 | (when tests? |
| 22111 | ;; XXX: Copied from ungoogled-chromium. Try increasing the |
| 22112 | ;; soft resource limit of max open files to 2048, or equal to |
| 22113 | ;; the hard limit, whichever is lower. |
| 22114 | (call-with-values (lambda () (getrlimit 'nofile)) |
| 22115 | (lambda (soft hard) |
| 22116 | (when (and soft (< soft 2048)) |
| 22117 | (if hard |
| 22118 | (setrlimit 'nofile (min hard 2048) hard) |
| 22119 | (setrlimit 'nofile 2048 #f)) |
| 22120 | (format #t |
| 22121 | "increased maximum number of open files from ~d to ~d~%" |
| 22122 | soft (if hard (min hard 2048) 2048))))))))))) |
| 22123 | (native-inputs |
| 22124 | (list python-azure-core |
| 22125 | python-dnspython |
| 22126 | python-flaky |
| 22127 | python-gevent |
| 22128 | python-google-cloud-storage |
| 22129 | python-iniconfig |
| 22130 | python-moto |
| 22131 | python-msgpack |
| 22132 | python-pymongo |
| 22133 | python-pytest |
| 22134 | python-pytest-celery |
| 22135 | python-pytest-click |
| 22136 | python-pytest-order |
| 22137 | python-pytest-timeout |
| 22138 | python-redis |
| 22139 | python-setuptools)) |
| 22140 | (propagated-inputs |
| 22141 | (list python-billiard |
| 22142 | python-click |
| 22143 | python-click-didyoumean |
| 22144 | python-click-plugins |
| 22145 | python-click-repl |
| 22146 | python-dateutil |
| 22147 | python-kombu |
| 22148 | python-tzlocal |
| 22149 | python-vine)) |
| 22150 | (home-page "https://celeryproject.org") |
| 22151 | (synopsis "Distributed Task Queue") |
| 22152 | (description |
| 22153 | "Celery is an asynchronous task queue/job queue based on distributed |
| 22154 | message passing. It is focused on real-time operation, but supports |
| 22155 | scheduling as well. The execution units, called tasks, are executed |
| 22156 | concurrently on a single or more worker servers using multiprocessing, |
| 22157 | Eventlet, or gevent. Tasks can execute asynchronously (in the background) or |
| 22158 | synchronously (wait until ready).") |
| 22159 | (license license:bsd-3))) |
| 22160 | |
| 22161 | ;; A bare minimal package, mainly to use in tests and reduce closure |
| 22162 | ;; size. Tests are left out in the main package to slim down native-inputs. |
| 22163 | (define-public python-celery-minimal |
| 22164 | (package/inherit python-celery |
| 22165 | (name "python-celery-minimal") |
| 22166 | (arguments |
| 22167 | (list #:tests? #f)) |
| 22168 | (native-inputs |
| 22169 | (list python-setuptools)))) |
| 22170 | |
| 22171 | (define-public python-anyqt |
| 22172 | (package |
| 22173 | (name "python-anyqt") |
| 22174 | (version "0.2.1") |
| 22175 | (source |
| 22176 | (origin |
| 22177 | (method git-fetch) |
| 22178 | (uri (git-reference |
| 22179 | (url "https://github.com/ales-erjavec/anyqt") |
| 22180 | (commit version))) |
| 22181 | (file-name (git-file-name name version)) |
| 22182 | (sha256 |
| 22183 | (base32 "0dci4sx53icd3jxv5gm22yr5g4dcyqbyvkkwliqpmbkxxjxj0dc8")))) |
| 22184 | (build-system pyproject-build-system) |
| 22185 | (arguments |
| 22186 | (list |
| 22187 | ;; XXX: Qt tests require Qt modules, see test/test_import.py. |
| 22188 | ;; TODO Add/configure the right Qt inputs. |
| 22189 | #:test-flags |
| 22190 | #~(list "--ignore-glob=tests/test_q*.py") |
| 22191 | #:phases |
| 22192 | #~(modify-phases %standard-phases |
| 22193 | (add-after 'unpack 'delete-files |
| 22194 | ;; Delete files related to other operating systems. |
| 22195 | (lambda _ |
| 22196 | (delete-file "AnyQt/QtMacExtras.py") |
| 22197 | (delete-file "AnyQt/QtWinExtras.py")))))) |
| 22198 | (native-inputs |
| 22199 | (list python-pyqt-6 |
| 22200 | python-pytest |
| 22201 | python-pytest-qt |
| 22202 | python-setuptools)) |
| 22203 | (home-page "https://github.com/ales-erjavec/anyqt") |
| 22204 | (synopsis "PyQt compatibility layer") |
| 22205 | (description |
| 22206 | "This package provides a PyQt/PySide compatibility layer. More precisely, |
| 22207 | it provides compatibility for the following modules: PyQt4, PyQt5, PyQt6, |
| 22208 | PySide, PySide2.") |
| 22209 | (license license:gpl3))) |
| 22210 | |
| 22211 | (define-public python-qasync |
| 22212 | (package |
| 22213 | (name "python-qasync") |
| 22214 | (version "0.28.0") |
| 22215 | (source |
| 22216 | (origin |
| 22217 | (method git-fetch) |
| 22218 | (uri (git-reference |
| 22219 | (url "https://github.com/CabbageDevelopment/qasync/") |
| 22220 | (commit (string-append "v" version)))) |
| 22221 | (file-name (git-file-name name version)) |
| 22222 | (sha256 |
| 22223 | (base32 "13i5riq7ig4csxlx61fzb8xl12ny0dkwj4h8f8r95xz5rii7a0kr")))) |
| 22224 | (build-system pyproject-build-system) |
| 22225 | (arguments |
| 22226 | (list |
| 22227 | #:phases |
| 22228 | #~(modify-phases %standard-phases |
| 22229 | (add-before 'check 'set-qpa |
| 22230 | (lambda _ |
| 22231 | (setenv "QT_QPA_PLATFORM" "offscreen")))))) |
| 22232 | (native-inputs |
| 22233 | (list python-pytest python-uv-build)) |
| 22234 | (propagated-inputs |
| 22235 | (list python-pyqt-6)) |
| 22236 | (home-page "https://github.com/CabbageDevelopment/qasync") |
| 22237 | (synopsis "Implementation of the PEP 3156 Event-Loop with Qt") |
| 22238 | (description |
| 22239 | "@code{qasync} allows coroutines to be used in PyQt/PySide applications |
| 22240 | by providing an implementation of the PEP 3156 event-loop.") |
| 22241 | (license license:bsd-2))) |
| 22242 | |
| 22243 | (define-public python-editor |
| 22244 | (package |
| 22245 | (name "python-editor") |
| 22246 | (version "1.8.0") |
| 22247 | (source |
| 22248 | (origin |
| 22249 | (method git-fetch) |
| 22250 | (uri (git-reference |
| 22251 | (url "https://github.com/rec/editor") |
| 22252 | (commit (string-append "v" version)))) |
| 22253 | (file-name (git-file-name name version)) |
| 22254 | (sha256 |
| 22255 | (base32 "0xc8p92n7lsgaah0xbaxyml2l8mfajb7v8kdiwy5rw6mh3phbwlr")))) |
| 22256 | (build-system pyproject-build-system) |
| 22257 | (native-inputs (list python-hatchling python-pytest python-tdir)) |
| 22258 | (propagated-inputs (list python-runs python-xmod)) |
| 22259 | (home-page "https://rec.github.io/editor/") |
| 22260 | (synopsis "Open the default text editor") |
| 22261 | (description |
| 22262 | "@code{editor} opens the default text editor to edit an existing file, a |
| 22263 | new file, or a tempfile, blocks while the user edits text, then returns the |
| 22264 | contents of the file.") |
| 22265 | (license license:expat))) |
| 22266 | |
| 22267 | (define-public python-multiprocessing-logging |
| 22268 | (package |
| 22269 | (name "python-multiprocessing-logging") |
| 22270 | (version "0.3.4") |
| 22271 | (home-page "https://github.com/jruere/multiprocessing-logging") |
| 22272 | (source |
| 22273 | (origin |
| 22274 | (method git-fetch) |
| 22275 | (uri (git-reference |
| 22276 | (url home-page) |
| 22277 | (commit (string-append "v" version)))) |
| 22278 | (file-name (git-file-name name version)) |
| 22279 | (sha256 |
| 22280 | (base32 "0ib1plsyi4g68n0crc2cqhk54fccsmcijzh66g89fd3lgababgxd")))) |
| 22281 | (build-system pyproject-build-system) |
| 22282 | (arguments (list #:test-backend #~'unittest)) |
| 22283 | (native-inputs (list python-setuptools)) |
| 22284 | (synopsis "Manage logs from multiple processes") |
| 22285 | (description |
| 22286 | "This Python module implements a multiprocessing-aware @code{Handler} |
| 22287 | that, when set on the root @code{Logger}, will tunnel log records to the |
| 22288 | main process so that they are handled correctly.") |
| 22289 | (license license:lgpl3+))) |
| 22290 | |
| 22291 | (define-public python-munkres |
| 22292 | (package |
| 22293 | (name "python-munkres") |
| 22294 | (version "1.1.4") |
| 22295 | (source |
| 22296 | (origin |
| 22297 | (method url-fetch) |
| 22298 | (uri (pypi-uri "munkres" version)) |
| 22299 | (sha256 |
| 22300 | (base32 "00yvj8bxmhhhhd74v7j0x673is7vizmxwgb3dd5xmnkr74ybyi7w")))) |
| 22301 | (build-system pyproject-build-system) |
| 22302 | (arguments |
| 22303 | (list |
| 22304 | ;; See https://github.com/bmc/munkres/issues/40 |
| 22305 | #:test-flags |
| 22306 | (if (member (%current-system) %32bit-supported-systems) |
| 22307 | #~(list "-k" "not test_profit_float") |
| 22308 | #~(list)))) |
| 22309 | (native-inputs (list python-pytest python-setuptools)) |
| 22310 | (home-page "https://software.clapper.org/munkres/") |
| 22311 | (synopsis "Implementation of the Munkres algorithm") |
| 22312 | (description |
| 22313 | "The Munkres module provides an implementation of the Munkres algorithm |
| 22314 | (also called the Hungarian algorithm or the Kuhn-Munkres algorithm), useful |
| 22315 | for solving the Assignment Problem.") |
| 22316 | (license license:bsd-3))) |
| 22317 | |
| 22318 | (define-public python-codespell |
| 22319 | (package |
| 22320 | (name "python-codespell") |
| 22321 | (version "2.4.3") |
| 22322 | (source |
| 22323 | (origin |
| 22324 | (method git-fetch) |
| 22325 | (uri (git-reference |
| 22326 | (url "https://github.com/codespell-project/codespell") |
| 22327 | (commit (string-append "v" version)))) |
| 22328 | (file-name (git-file-name name version)) |
| 22329 | (sha256 |
| 22330 | (base32 "1c1wnl14af496s5iwsc0bp6pg4i8yankr7wvxxb66dc8s87n2rd1")))) |
| 22331 | (build-system pyproject-build-system) |
| 22332 | (native-inputs |
| 22333 | (list python-pygments |
| 22334 | python-pytest |
| 22335 | python-pytest-dependency |
| 22336 | python-setuptools |
| 22337 | python-setuptools-scm)) |
| 22338 | (propagated-inputs |
| 22339 | (list python-chardet)) |
| 22340 | (home-page "https://github.com/codespell-project/codespell/") |
| 22341 | (synopsis "Spellchecker for code") |
| 22342 | (description |
| 22343 | "Codespell fixes common misspellings in text files. It's designed |
| 22344 | primarily for checking misspelled words in source code, but it can be used |
| 22345 | with other files as well. It does not check for word membership in a complete |
| 22346 | dictionary, but instead looks for a set of common misspellings. Therefore it |
| 22347 | should catch errors like \"adn\", but it will not catch \"adnasdfasdf\". This |
| 22348 | also means it shouldn't generate false-positives when you use a niche term it |
| 22349 | doesn't know about.") |
| 22350 | (license |
| 22351 | (list |
| 22352 | ; for codespell and codespell_lib |
| 22353 | license:gpl2 |
| 22354 | ; for dictionary*.txt |
| 22355 | license:cc-by-sa3.0)))) |
| 22356 | |
| 22357 | (define-public python-jellyfish |
| 22358 | (package |
| 22359 | (name "python-jellyfish") |
| 22360 | (version "1.2.1") |
| 22361 | (source |
| 22362 | (origin |
| 22363 | (method git-fetch) |
| 22364 | (uri (git-reference |
| 22365 | (url "https://github.com/jamesturk/jellyfish") |
| 22366 | (commit (string-append "v" version)))) |
| 22367 | (file-name (git-file-name name version)) |
| 22368 | (sha256 |
| 22369 | (base32 "1zsbvyq608yrfv29hlwjkr6ycrghy8s5hpwnj3aa9symihazpb4c")))) |
| 22370 | (build-system pyproject-build-system) |
| 22371 | (arguments |
| 22372 | (list |
| 22373 | #:imported-modules (append %cargo-build-system-modules |
| 22374 | %pyproject-build-system-modules) |
| 22375 | #:modules '(((guix build cargo-build-system) #:prefix cargo:) |
| 22376 | (guix build pyproject-build-system) |
| 22377 | (guix build utils)) |
| 22378 | #:phases |
| 22379 | #~(modify-phases %standard-phases |
| 22380 | (add-after 'unpack 'prepare-cargo-build-system |
| 22381 | (lambda args |
| 22382 | (for-each |
| 22383 | (lambda (phase) |
| 22384 | (format #t "Running cargo phase: ~a~%" phase) |
| 22385 | (apply (assoc-ref cargo:%standard-phases phase) |
| 22386 | #:cargo-target #$(cargo-triplet) |
| 22387 | args)) |
| 22388 | '(unpack-rust-crates |
| 22389 | configure |
| 22390 | check-for-pregenerated-files |
| 22391 | patch-cargo-checksums))))))) |
| 22392 | (inputs (cons* maturin (cargo-inputs 'jellyfish))) |
| 22393 | (native-inputs |
| 22394 | (append |
| 22395 | (list python-pytest |
| 22396 | python-setuptools |
| 22397 | rust |
| 22398 | `(,rust "cargo")) |
| 22399 | (or (and=> (%current-target-system) |
| 22400 | (compose list make-rust-sysroot)) |
| 22401 | '()))) |
| 22402 | (home-page "https://www.jpt.sh/projects/jellyfish/") |
| 22403 | (synopsis "Approximate and phonetic matching of strings") |
| 22404 | (description "Jellyfish uses a variety of string comparison and phonetic |
| 22405 | encoding algorithms to do fuzzy string matching.") |
| 22406 | (license license:bsd-2))) |
| 22407 | |
| 22408 | (define-public python-pdfminer-six |
| 22409 | (package |
| 22410 | (name "python-pdfminer-six") |
| 22411 | (version "20260107") |
| 22412 | ;; There are no tests in the PyPI tarball. |
| 22413 | (source |
| 22414 | (origin |
| 22415 | (method git-fetch) |
| 22416 | (uri (git-reference |
| 22417 | (url "https://github.com/pdfminer/pdfminer.six") |
| 22418 | (commit version))) |
| 22419 | (file-name (git-file-name name version)) |
| 22420 | (sha256 |
| 22421 | (base32 "10f0g1zwbahfc5lrg84c8fiav184h0jr86y6ra9dqb81zb0875dj")))) |
| 22422 | (build-system pyproject-build-system) |
| 22423 | (arguments |
| 22424 | (list #:phases |
| 22425 | #~(modify-phases %standard-phases |
| 22426 | ;; Tests write to the source tree. |
| 22427 | (add-after 'unpack 'make-git-checkout-writable |
| 22428 | (lambda _ |
| 22429 | (for-each make-file-writable (find-files "."))))))) |
| 22430 | (propagated-inputs |
| 22431 | (list python-charset-normalizer python-cryptography)) |
| 22432 | (native-inputs |
| 22433 | (list python-pytest python-setuptools python-setuptools-scm)) |
| 22434 | (home-page "https://github.com/pdfminer/pdfminer.six") |
| 22435 | (synopsis "PDF parser and analyzer") |
| 22436 | (description "@code{pdfminer.six} is a community maintained fork of |
| 22437 | the original PDFMiner. It is a tool for extracting information from PDF |
| 22438 | documents. It focuses on getting and analyzing text data. Pdfminer.six |
| 22439 | extracts the text from a page directly from the sourcecode of the PDF. It |
| 22440 | can also be used to get the exact location, font or color of the text.") |
| 22441 | (license license:expat))) |
| 22442 | |
| 22443 | (define-public python-rarfile |
| 22444 | (package |
| 22445 | (name "python-rarfile") |
| 22446 | (version "4.2") |
| 22447 | (source |
| 22448 | (origin |
| 22449 | (method git-fetch) |
| 22450 | (uri (git-reference |
| 22451 | (url "https://github.com/markokr/rarfile") |
| 22452 | (commit (string-append "v" version)))) |
| 22453 | (file-name (git-file-name name version)) |
| 22454 | (sha256 |
| 22455 | (base32 "1lm4vz4w0hrnzln7w10ijhdiwxy7gz45m44zw4fz7rdnn7c06b36")))) |
| 22456 | (build-system pyproject-build-system) |
| 22457 | (arguments |
| 22458 | (list |
| 22459 | #:tests? #f ;The bsdtar utility is very limited and most tests fail. |
| 22460 | #:phases |
| 22461 | #~(modify-phases %standard-phases |
| 22462 | (add-after 'unpack 'patch |
| 22463 | (lambda* (#:key inputs #:allow-other-keys) |
| 22464 | (substitute* "rarfile.py" |
| 22465 | ;; Disable unrar and unar, which are unavailable on Guix. |
| 22466 | (("(unrar|unar)=True" all tool) |
| 22467 | (string-append tool "=False")) |
| 22468 | ;; Hardcode path to bsdtar |
| 22469 | (("\"bsdtar\"") |
| 22470 | (format #f "~s" |
| 22471 | (search-input-file inputs "bin/bsdtar"))))))))) |
| 22472 | (native-inputs (list python-pytest python-setuptools)) |
| 22473 | (inputs (list libarchive)) |
| 22474 | (home-page "https://github.com/markokr/rarfile") |
| 22475 | (synopsis "RAR archive reader for Python") |
| 22476 | (description |
| 22477 | "This is Python module for RAR archive reading. The interface is made as |
| 22478 | zipfile like as possible.") |
| 22479 | (license license:isc))) |
| 22480 | |
| 22481 | (define-public python-slugid |
| 22482 | (package |
| 22483 | (name "python-slugid") |
| 22484 | (version "2.0.0") |
| 22485 | (source |
| 22486 | (origin |
| 22487 | (method git-fetch) |
| 22488 | (uri (git-reference |
| 22489 | (url "https://github.com/taskcluster/slugid.py") |
| 22490 | (commit (string-append "v" version)))) |
| 22491 | (file-name (git-file-name name version)) |
| 22492 | (sha256 |
| 22493 | (base32 "1h64p2jlqv6lsmw8h2j203kx3bhv72cwzpk5gdhsaamw30cp3h1i")))) |
| 22494 | (build-system pyproject-build-system) |
| 22495 | (arguments (list #:test-backend #~'nose)) |
| 22496 | (native-inputs (list python-pynose python-setuptools)) |
| 22497 | (home-page "http://taskcluster.github.io/slugid.py") |
| 22498 | (synopsis "Module for Base64 encoded UUID v4 slugs") |
| 22499 | (description |
| 22500 | "This package provides a module for generating v4 UUIDs and encoding them |
| 22501 | into 22 character URL-safe base64 slug representation.") |
| 22502 | (license license:mpl2.0))) |
| 22503 | |
| 22504 | (define-public python-rich |
| 22505 | (package |
| 22506 | (name "python-rich") |
| 22507 | (version "15.0.0") |
| 22508 | (source |
| 22509 | (origin |
| 22510 | (method git-fetch) |
| 22511 | (uri (git-reference |
| 22512 | (url "https://github.com/willmcgugan/rich") |
| 22513 | (commit (string-append "v" version)))) |
| 22514 | (file-name (git-file-name name version)) |
| 22515 | (sha256 |
| 22516 | (base32 "1qs8n1hcjxcpwbfjjlzfmywfczxzcpvjkk3ay04kdbi1lvlynkaj")))) |
| 22517 | (build-system pyproject-build-system) |
| 22518 | ;; The test_brokenpipeerror is flaky. |
| 22519 | (arguments (list #:test-flags #~(list "-k" "not test_brokenpipeerror"))) |
| 22520 | (native-inputs |
| 22521 | (list python-poetry-core |
| 22522 | python-pytest |
| 22523 | which)) |
| 22524 | (propagated-inputs |
| 22525 | (list python-markdown-it-py |
| 22526 | python-pygments)) |
| 22527 | (home-page "https://github.com/willmcgugan/rich") |
| 22528 | (synopsis "Render rich text and more to the terminal") |
| 22529 | (description |
| 22530 | "This is a Python package for rendering rich text, tables, progress bars, |
| 22531 | syntax highlighting, markdown and more to the terminal.") |
| 22532 | (license license:expat))) |
| 22533 | |
| 22534 | (define-public python-rich-click |
| 22535 | (package |
| 22536 | (name "python-rich-click") |
| 22537 | (version "1.9.8") |
| 22538 | (source |
| 22539 | (origin |
| 22540 | (method git-fetch) |
| 22541 | (uri (git-reference |
| 22542 | (url "https://github.com/ewels/rich-click") |
| 22543 | (commit (string-append "v" version)))) |
| 22544 | (file-name (git-file-name name version)) |
| 22545 | (sha256 |
| 22546 | (base32 "1xgsblpkp4f43y579614n6cp8br2acms8vdj8gpqxa05csap0fqn")))) |
| 22547 | (build-system pyproject-build-system) |
| 22548 | (arguments |
| 22549 | (list |
| 22550 | #:test-flags |
| 22551 | ;; python-typer 0.26 vendored python-click and broke a lot of things. |
| 22552 | ;; See <https://github.com/ewels/rich-click/issues/330> and |
| 22553 | ;; <https://github.com/ewels/rich-click/commit/989c38cf4ed918a25fa523c8191c66b42315cb10>. |
| 22554 | ;; 136 passed, 6 skipped, 6 deselected |
| 22555 | #~(list "-k" "not _typer_"))) |
| 22556 | (native-inputs |
| 22557 | (list python-inline-snapshot |
| 22558 | python-pytest |
| 22559 | python-setuptools |
| 22560 | python-typer)) |
| 22561 | (propagated-inputs |
| 22562 | (list python-click |
| 22563 | python-rich)) |
| 22564 | (home-page "https://github.com/ewels/rich-click") |
| 22565 | (synopsis "Format click help output nicely with rich") |
| 22566 | (description "Click is a \"Python package for creating beautiful command |
| 22567 | line interfaces\". Rich is a \"Python library for rich text and beautiful |
| 22568 | formatting in the terminal\". The intention of rich-click is to provide |
| 22569 | attractive help output from click, formatted with rich, with minimal |
| 22570 | customization required.") |
| 22571 | (license license:expat))) |
| 22572 | |
| 22573 | (define-public python-magic |
| 22574 | (package |
| 22575 | (name "python-magic") |
| 22576 | (version "0.4.27") |
| 22577 | (home-page "https://github.com/ahupp/python-magic") |
| 22578 | (source |
| 22579 | (origin |
| 22580 | (method git-fetch) |
| 22581 | (uri (git-reference (url home-page) (commit version))) |
| 22582 | (file-name (git-file-name name version)) |
| 22583 | (sha256 |
| 22584 | (base32 "1x11kfn4g244fia9a7y4ly8dqv5zsxfg3l5azc54dl6gkp2bk7vx")))) |
| 22585 | (build-system pyproject-build-system) |
| 22586 | (arguments |
| 22587 | (list |
| 22588 | #:test-backend #~'custom |
| 22589 | #:test-flags #~(list "test/libmagic_test.py") |
| 22590 | #:phases |
| 22591 | #~(modify-phases %standard-phases |
| 22592 | (add-after 'unpack 'fix-tests |
| 22593 | (lambda _ |
| 22594 | ;; Adjust expected output for [email protected]. |
| 22595 | (substitute* "test/libmagic_test.py" |
| 22596 | (("PDF document, version 1\\.2, 2 pages") |
| 22597 | "PDF document, version 1.2, 2 page(s)")))) |
| 22598 | ;; Replace a specific method call with a hard-coded path to the |
| 22599 | ;; necessary libmagic.so file in the store. |
| 22600 | (add-before 'build 'hard-code-path-to-libmagic |
| 22601 | (lambda* (#:key inputs #:allow-other-keys) |
| 22602 | (substitute* "magic/loader.py" |
| 22603 | (("find_library\\('magic'\\)") |
| 22604 | (format #f "~s" |
| 22605 | (search-input-file inputs "lib/libmagic.so"))))))))) |
| 22606 | (native-inputs (list which python-setuptools)) |
| 22607 | (inputs |
| 22608 | ;; python-magic needs to be able to find libmagic.so. |
| 22609 | (list file)) |
| 22610 | (synopsis "File type identification using libmagic") |
| 22611 | (description |
| 22612 | "This module uses ctypes to access the libmagic file type identification |
| 22613 | library. It makes use of the local magic database and supports both textual |
| 22614 | and MIME-type output. Note that this module and the python-file module both |
| 22615 | provide a \"magic.py\" file; these two modules, which are different and were |
| 22616 | developed separately, both serve the same purpose: to provide Python bindings |
| 22617 | for libmagic.") |
| 22618 | (license license:expat))) |
| 22619 | |
| 22620 | (define-public python-securetar |
| 22621 | (package |
| 22622 | (name "python-securetar") |
| 22623 | (version "2025.1.4") |
| 22624 | (source |
| 22625 | (origin |
| 22626 | (method git-fetch) |
| 22627 | (uri (git-reference |
| 22628 | (url "https://github.com/pvizeli/securetar") |
| 22629 | (commit version))) |
| 22630 | (file-name (git-file-name name version)) |
| 22631 | (sha256 |
| 22632 | (base32 "1b9m29j4mjiv7925wrbiyj6vyx7m9qmdz40zqd4vgxhz4pq6x3xw")))) |
| 22633 | (build-system pyproject-build-system) |
| 22634 | (native-inputs (list python-setuptools python-wheel python-pytest)) |
| 22635 | (propagated-inputs (list python-cryptography)) |
| 22636 | (home-page "https://github.com/pvizeli/securetar") |
| 22637 | (synopsis "Python module to handle tarfile backups") |
| 22638 | (description |
| 22639 | "This library provides a streaming wrapper around python tarfile and allow |
| 22640 | secure handling files and support encryption.") |
| 22641 | (license license:asl2.0))) |
| 22642 | |
| 22643 | (define-public python-pkgconfig |
| 22644 | (package |
| 22645 | (name "python-pkgconfig") |
| 22646 | (version "1.6.0") |
| 22647 | (source |
| 22648 | (origin |
| 22649 | (method git-fetch) |
| 22650 | (uri (git-reference |
| 22651 | (url "https://github.com/matze/pkgconfig") |
| 22652 | (commit (string-append "v" version)))) |
| 22653 | (file-name (git-file-name name version)) |
| 22654 | (sha256 |
| 22655 | (base32 "0xlfghjbx04gls3ad1ncggpi4xvjxcirrm3bamv5gp9wv3z5ln8s")))) |
| 22656 | (build-system pyproject-build-system) |
| 22657 | (arguments |
| 22658 | (list |
| 22659 | #:phases |
| 22660 | #~(modify-phases %standard-phases |
| 22661 | (add-after 'unpack 'fix-test-data |
| 22662 | (lambda _ |
| 22663 | (substitute* "tests/data/fake-openssl.pc" |
| 22664 | (("Requires: libssl libcrypto") "")))) |
| 22665 | (add-before 'build 'set-pkg-config-path |
| 22666 | (lambda* (#:key inputs #:allow-other-keys) |
| 22667 | (setenv "PKG_CONFIG" |
| 22668 | (search-input-file inputs "/bin/pkg-config")) |
| 22669 | (substitute* "src/pkgconfig/pkgconfig.py" |
| 22670 | (("'pkg-config'") |
| 22671 | (format #f "~s" |
| 22672 | (search-input-file inputs "/bin/pkg-config"))))))))) |
| 22673 | (native-inputs (list python-poetry-core python-pytest)) |
| 22674 | (inputs (list pkg-config)) |
| 22675 | (home-page "https://github.com/matze/pkgconfig") |
| 22676 | (synopsis "Python interface for pkg-config") |
| 22677 | (description "This module provides a Python interface to pkg-config. It |
| 22678 | can be used to find all pkg-config packages, check if a package exists, |
| 22679 | check if a package meets certain version requirements, query CFLAGS and |
| 22680 | LDFLAGS and parse the output to build extensions with setup.py.") |
| 22681 | (license license:expat))) |
| 22682 | |
| 22683 | ;; This package is unmaintained since 2014, but still used in `khmer'. |
| 22684 | (define-public python-bz2file |
| 22685 | (package |
| 22686 | (name "python-bz2file") |
| 22687 | (version "0.98") |
| 22688 | (source |
| 22689 | (origin |
| 22690 | (method url-fetch) |
| 22691 | (uri (pypi-uri "bz2file" version)) |
| 22692 | (sha256 |
| 22693 | (base32 "126s53fkpx04f33a829yqqk8fj4png3qwg4m66cvlmhmwc8zihb4")))) |
| 22694 | (build-system pyproject-build-system) |
| 22695 | (arguments (list #:tests? #f)) ; Tests use deprecated python modules. |
| 22696 | (native-inputs (list python-setuptools)) |
| 22697 | (home-page "https://github.com/nvawda/bz2file") |
| 22698 | (synopsis "Read and write bzip2-compressed files") |
| 22699 | (description |
| 22700 | "Bz2file is a Python library for reading and writing bzip2-compressed |
| 22701 | files. It contains a drop-in replacement for the I/O interface in the |
| 22702 | standard library's @code{bz2} module, including features from the latest |
| 22703 | development version of CPython that are not available in older releases.") |
| 22704 | (license license:asl2.0))) |
| 22705 | |
| 22706 | (define-public python-future |
| 22707 | (package |
| 22708 | (name "python-future") |
| 22709 | (version "1.0.0") |
| 22710 | (source |
| 22711 | (origin |
| 22712 | (method url-fetch) |
| 22713 | (uri (pypi-uri "future" version)) |
| 22714 | (sha256 |
| 22715 | (base32 "01bvq2a5vgxffq8555rvwhxw161m9y54z2j5w7d1x1h7jcq6hadx")))) |
| 22716 | (build-system pyproject-build-system) |
| 22717 | (arguments |
| 22718 | (list |
| 22719 | #:test-flags |
| 22720 | ;; Self tests failed. |
| 22721 | #~(list "--ignore=tests/test_future/test_futurize.py" |
| 22722 | "-k" (string-join |
| 22723 | ;; Self tests failed. |
| 22724 | (list "not test_division" |
| 22725 | "test_functions_unchanged" |
| 22726 | "test_mixed_annotations" |
| 22727 | "test_multiple_param_annotations" |
| 22728 | "test_print" |
| 22729 | "test_range_slice" |
| 22730 | ;; Network access is required. |
| 22731 | "test_ftp" |
| 22732 | "test_main" |
| 22733 | "test_moves_urllib_request_http" |
| 22734 | "test_urllib_request_http" |
| 22735 | ;; Tests failing on Python 3.12 |
| 22736 | "test_converting_drive_letter" |
| 22737 | "test_converting_drive_letter" |
| 22738 | "test_converting_when_no_drive_letter" |
| 22739 | "test_converting_when_no_drive_letter" |
| 22740 | "test_converting_when_no_drive_letter" |
| 22741 | "test_converting_when_no_drive_letter" |
| 22742 | "test_isinstance_recursion_limit" |
| 22743 | "test_roundtrip_pathname2url" |
| 22744 | "test_roundtrip_pathname2url" |
| 22745 | "test_roundtrip_url2pathname" |
| 22746 | "test_roundtrip_url2pathname" |
| 22747 | "test_subclass_recursion_limit") |
| 22748 | " and not ")))) |
| 22749 | (native-inputs |
| 22750 | (list python-pytest |
| 22751 | python-setuptools)) |
| 22752 | (home-page "https://python-future.org") |
| 22753 | (synopsis "Single-source support for Python 3 and 2") |
| 22754 | (description |
| 22755 | "@code{python-future} is the missing compatibility layer between Python 2 |
| 22756 | and Python 3. It allows you to use a single, clean Python 3.x-compatible |
| 22757 | codebase to support both Python 2 and Python 3 with minimal overhead.") |
| 22758 | (license license:expat))) |
| 22759 | |
| 22760 | (define-public python-cysignals |
| 22761 | (package |
| 22762 | (name "python-cysignals") |
| 22763 | (version "1.12.3") |
| 22764 | (source |
| 22765 | (origin |
| 22766 | (method url-fetch) |
| 22767 | (uri (pypi-uri "cysignals" version)) |
| 22768 | (sha256 |
| 22769 | (base32 "1syixz6xlmy1pjcr03ij7hcvaklgjy4mmwggssrmmnr9pxnn5xw9")))) |
| 22770 | (build-system pyproject-build-system) |
| 22771 | (native-inputs (list python-meson |
| 22772 | python-cython |
| 22773 | python-pytest)) |
| 22774 | (home-page "https://github.com/sagemath/cysignals") |
| 22775 | (synopsis "Handling of interrupts and signals for Cython") |
| 22776 | (description |
| 22777 | "The cysignals package provides mechanisms to handle interrupts (and |
| 22778 | other signals and errors) in Cython code, using two related approaches, |
| 22779 | for mixed Cython/Python code or external C libraries and pure Cython code, |
| 22780 | respectively.") |
| 22781 | (license license:lgpl3+))) |
| 22782 | |
| 22783 | (define-public python-rope |
| 22784 | (package |
| 22785 | (name "python-rope") |
| 22786 | (version "1.13.0") |
| 22787 | (source |
| 22788 | (origin |
| 22789 | (method url-fetch) |
| 22790 | (uri (pypi-uri "rope" version)) |
| 22791 | (sha256 |
| 22792 | (base32 |
| 22793 | "1078mkzivz45my8x2y5gxisr0vba630xj7yxx7anr068xhnpshsi")))) |
| 22794 | (build-system pyproject-build-system) |
| 22795 | (arguments |
| 22796 | (list |
| 22797 | #:test-flags |
| 22798 | #~(list "-k" "test_version_hash_varies_on_get_file_content"))) |
| 22799 | (propagated-inputs (list python-pytoolconfig)) |
| 22800 | (native-inputs |
| 22801 | (list python-pytest python-pytest-timeout python-setuptools)) |
| 22802 | (home-page "https://github.com/python-rope/rope") |
| 22803 | (synopsis "Refactoring library for Python") |
| 22804 | (description |
| 22805 | "Rope is a refactoring library for Python. It facilitates the renaming, |
| 22806 | moving and extracting of attributes, functions, modules, fields and parameters |
| 22807 | in Python source code. These refactorings can also be applied to occurrences |
| 22808 | in strings and comments.") |
| 22809 | (license license:lgpl3+))) |
| 22810 | |
| 22811 | (define-public python-py3status |
| 22812 | (package |
| 22813 | (name "python-py3status") |
| 22814 | (version "3.62") |
| 22815 | (source |
| 22816 | (origin |
| 22817 | (method git-fetch) |
| 22818 | (uri (git-reference |
| 22819 | (url "https://github.com/ultrabug/py3status") |
| 22820 | (commit version))) |
| 22821 | (file-name (git-file-name name version)) |
| 22822 | (sha256 |
| 22823 | (base32 "13ggwr35w5isylrg1n7akhycm18r03bxin95hdpcmqg7fvqyfppz")))) |
| 22824 | (build-system pyproject-build-system) |
| 22825 | (arguments |
| 22826 | (list |
| 22827 | #:phases |
| 22828 | #~(modify-phases %standard-phases |
| 22829 | (add-before 'build 'hardcode-file-path |
| 22830 | (lambda* (#:key inputs #:allow-other-keys) |
| 22831 | (substitute* "py3status/parse_config.py" |
| 22832 | (("\\[\"file\", \"-b\"") |
| 22833 | (format #f "[~s, \"-b\"" |
| 22834 | (search-input-file inputs "bin/file"))))))))) |
| 22835 | (native-inputs (list python-hatchling python-pytest)) |
| 22836 | (inputs (list file)) |
| 22837 | (home-page "https://github.com/ultrabug/py3status") |
| 22838 | (synopsis "Extensible i3status wrapper written in Python") |
| 22839 | (description |
| 22840 | "py3status is an i3status wrapper which extends i3status functionality in |
| 22841 | a modular way, allowing you to extend your panel with your own code, |
| 22842 | responding to click events and updating clock every second.") |
| 22843 | (license license:bsd-3))) |
| 22844 | |
| 22845 | (define-public python-greenlet |
| 22846 | (package |
| 22847 | (name "python-greenlet") |
| 22848 | (version "3.5.1") |
| 22849 | (source |
| 22850 | (origin |
| 22851 | (method git-fetch) |
| 22852 | (uri (git-reference |
| 22853 | (url "https://github.com/python-greenlet/greenlet") |
| 22854 | (commit version))) |
| 22855 | (file-name (git-file-name name version)) |
| 22856 | (sha256 |
| 22857 | (base32 "1hvnpkmd9r9li62p5gmidkyq4zazi5adw5c2cah8w2f4n47zg7ix")))) |
| 22858 | (build-system pyproject-build-system) |
| 22859 | (arguments |
| 22860 | (list |
| 22861 | #:test-flags #~(list "--pyargs" "greenlet") |
| 22862 | #:phases |
| 22863 | #~(modify-phases %standard-phases |
| 22864 | (add-before 'check 'remove-local-source |
| 22865 | (lambda _ |
| 22866 | (delete-file-recursively "src/greenlet")))))) |
| 22867 | (native-inputs |
| 22868 | (list python-objgraph |
| 22869 | python-pytest |
| 22870 | python-psutil |
| 22871 | python-setuptools)) |
| 22872 | (home-page "https://greenlet.readthedocs.io/") |
| 22873 | (synopsis "Lightweight in-process concurrent programming") |
| 22874 | (description |
| 22875 | "Greenlet package is a spin-off of Stackless, a version of CPython |
| 22876 | that supports micro-threads called \"tasklets\". Tasklets run |
| 22877 | pseudo-concurrently (typically in a single or a few OS-level threads) and |
| 22878 | are synchronized with data exchanges on \"channels\".") |
| 22879 | (license (list license:psfl license:expat)))) |
| 22880 | |
| 22881 | (define-public python-objgraph |
| 22882 | (package |
| 22883 | (name "python-objgraph") |
| 22884 | (version "3.6.2") |
| 22885 | (source |
| 22886 | (origin |
| 22887 | (method url-fetch) |
| 22888 | (uri (pypi-uri "objgraph" version)) |
| 22889 | (sha256 |
| 22890 | (base32 "1n0swlq11w36r2p6x7b4y0zz10dgzpdc8qasyk3y68kl1zsg5f80")))) |
| 22891 | (build-system pyproject-build-system) |
| 22892 | (arguments |
| 22893 | (list |
| 22894 | #:test-flags |
| 22895 | #~(list "tests.py" |
| 22896 | ;; AssertionError: [0, 1, 2] not found in [[], [], [], [], [], |
| 22897 | ;; [], [], [], [], [], [], [], ... |
| 22898 | "-k" "not test_at_addrs"))) |
| 22899 | (native-inputs |
| 22900 | (list graphviz |
| 22901 | python-pytest |
| 22902 | python-setuptools)) |
| 22903 | (propagated-inputs |
| 22904 | (list python-graphviz)) |
| 22905 | (home-page "https://mg.pov.lt/objgraph/") |
| 22906 | (synopsis "Draw Python object reference graphs with graphviz") |
| 22907 | (description |
| 22908 | "This package provides tools to draw Python object reference graphs with |
| 22909 | graphviz.") |
| 22910 | (license license:expat))) |
| 22911 | |
| 22912 | (define-public python-gevent |
| 22913 | (package |
| 22914 | (name "python-gevent") |
| 22915 | (version "24.11.1") |
| 22916 | (source (origin |
| 22917 | (method url-fetch) |
| 22918 | (uri (pypi-uri "gevent" version)) |
| 22919 | (sha256 |
| 22920 | (base32 |
| 22921 | "1jhs1k49nfhv59c0li6bcpvkr6pzmxkdgfm56gns7r792j8l3lcb")) |
| 22922 | (modules '((guix build utils))) |
| 22923 | (snippet |
| 22924 | '(begin |
| 22925 | ;; unbunding libev and c-ares |
| 22926 | (delete-file-recursively "deps") |
| 22927 | ;; Remove cythonized files. |
| 22928 | (with-directory-excursion "src/gevent" |
| 22929 | (for-each delete-file |
| 22930 | (append (list "resolver/cares.c" |
| 22931 | "queue.c" |
| 22932 | "local.c" |
| 22933 | "libev/corecext.h" |
| 22934 | "libev/corecext.c" |
| 22935 | "greenlet.c" |
| 22936 | "event.c" |
| 22937 | "_waiter.c" |
| 22938 | "_tracer.c" |
| 22939 | "_semaphore.c" |
| 22940 | "_imap.c" |
| 22941 | "_ident.c" |
| 22942 | "_hub_primitives.c" |
| 22943 | "_hub_local.c" |
| 22944 | "_greenlet_primitives.c" |
| 22945 | "_abstract_linkable.c") |
| 22946 | (find-files "." "\\.html$")))))))) |
| 22947 | (build-system pyproject-build-system) |
| 22948 | (arguments |
| 22949 | (list |
| 22950 | #:test-flags |
| 22951 | '(list |
| 22952 | ;; These tests relies on networking which is |
| 22953 | ;; not available in the build container. |
| 22954 | "test__getaddrinfo_import.py" |
| 22955 | ;; These tests rely on KeyboardInterrupts which do not |
| 22956 | ;; work inside the build container for some reason |
| 22957 | ;; (lack of controlling terminal?). |
| 22958 | "test__issues461_471.py" |
| 22959 | ;; TODO: Patch out the tests that use getprotobyname, etc |
| 22960 | ;; instead of disabling all the tests from these files. |
| 22961 | "test__resolver_dnspython.py" |
| 22962 | ;; This test contains 'test_unlink', which |
| 22963 | ;; fails on i686 (see: https://github.com/gevent/gevent/issues/1558). |
| 22964 | "test__core_stat.py") |
| 22965 | #:phases |
| 22966 | #~(modify-phases %standard-phases |
| 22967 | (add-before 'patch-source-shebangs 'patch-hard-coded-paths |
| 22968 | (lambda _ |
| 22969 | (substitute* "src/gevent/subprocess.py" |
| 22970 | (("/bin/sh") (which "sh"))) |
| 22971 | (for-each (lambda (file) |
| 22972 | (substitute* file |
| 22973 | (("/bin/sh") (which "sh")) |
| 22974 | (("/bin/true") (which "true")))) |
| 22975 | (find-files "src/greentest" "\\.py$")))) |
| 22976 | (add-before 'build 'do-not-use-bundled-sources |
| 22977 | (lambda _ |
| 22978 | (setenv "GEVENTSETUP_EMBED" "0") |
| 22979 | |
| 22980 | ;; Prevent building bundled libev. |
| 22981 | (substitute* "setup.py" |
| 22982 | (("run_make=_BUILDING") |
| 22983 | "run_make=False")))) |
| 22984 | (add-before 'build 'augment-C_INCLUDE_PATH |
| 22985 | (lambda* (#:key inputs #:allow-other-keys) |
| 22986 | (let* ((python (dirname (dirname |
| 22987 | (search-input-file |
| 22988 | inputs "bin/python")))) |
| 22989 | (version (python-version python)) |
| 22990 | (greenlet (string-append |
| 22991 | #$(this-package-input "python-greenlet") |
| 22992 | "/include/python" version))) |
| 22993 | (setenv "C_INCLUDE_PATH" |
| 22994 | (string-append greenlet "/:" |
| 22995 | (or (getenv "C_INCLUDE_PATH") |
| 22996 | "")))))) |
| 22997 | (add-before 'check 'pretend-to-be-CI |
| 22998 | (lambda _ |
| 22999 | ;; A few tests are skipped due to network constraints or |
| 23000 | ;; get longer timeouts when running in a CI environment. |
| 23001 | ;; Piggy-back on that, as we need the same adjustments. |
| 23002 | (setenv "TRAVIS" "1") |
| 23003 | (setenv "APPVEYOR" "1"))) |
| 23004 | (add-before 'check 'adjust-tests |
| 23005 | (lambda* (#:key test-flags #:allow-other-keys) |
| 23006 | (call-with-output-file "skipped_tests.txt" |
| 23007 | (lambda (port) |
| 23008 | (format port "~a~%" (string-join test-flags "\n")))))) |
| 23009 | (replace 'check |
| 23010 | (lambda* (#:key tests? #:allow-other-keys) |
| 23011 | (when tests? |
| 23012 | ;; Use the build daemons configured number of workers. |
| 23013 | (setenv "NWORKERS" (number->string (parallel-job-count))) |
| 23014 | (invoke "python" "-m" "gevent.tests" "-unone" "--config" |
| 23015 | "known_failures.py" "--ignore" "skipped_tests.txt"))))))) |
| 23016 | (propagated-inputs |
| 23017 | (list python-greenlet python-zope-event python-zope-interface)) |
| 23018 | (native-inputs |
| 23019 | (list python-cffi |
| 23020 | python-cython |
| 23021 | python-dnspython |
| 23022 | python-idna |
| 23023 | python-objgraph |
| 23024 | python-psutil |
| 23025 | python-requests |
| 23026 | python-setuptools)) |
| 23027 | (inputs |
| 23028 | (list c-ares libev libuv)) |
| 23029 | (home-page "https://www.gevent.org/") |
| 23030 | (synopsis "Coroutine-based network library") |
| 23031 | (description |
| 23032 | "@code{gevent} is a coroutine-based Python networking library that uses |
| 23033 | @code{greenlet} to provide a high-level synchronous API on top of the |
| 23034 | @code{libev} event loop.") |
| 23035 | (license license:expat))) |
| 23036 | |
| 23037 | (define-public python-fastimport |
| 23038 | (package |
| 23039 | (name "python-fastimport") |
| 23040 | (version "0.9.16") |
| 23041 | (source |
| 23042 | (origin |
| 23043 | (method git-fetch) |
| 23044 | (uri (git-reference |
| 23045 | (url "https://github.com/jelmer/python-fastimport") |
| 23046 | (commit (string-append "v" version)))) |
| 23047 | (file-name (git-file-name name version)) |
| 23048 | (sha256 |
| 23049 | (base32 "1pbnp9ffjs09ngva9qcizpscxl9s47rmd4dhxl62f5iwl6c46798")))) |
| 23050 | (build-system pyproject-build-system) |
| 23051 | (arguments (list #:test-backend #~'unittest)) |
| 23052 | (native-inputs (list python-setuptools)) |
| 23053 | (home-page "https://github.com/jelmer/python-fastimport") |
| 23054 | (synopsis "VCS fastimport parser and generator in Python") |
| 23055 | (description |
| 23056 | "This package provides a parser for and generator of the Git |
| 23057 | @url{https://www.kernel.org/pub/software/scm/git/docs/git-fast-import.html,fastimport} |
| 23058 | format.") |
| 23059 | (license license:gpl2+))) |
| 23060 | |
| 23061 | (define-public python-pika |
| 23062 | (package |
| 23063 | (name "python-pika") |
| 23064 | (version "1.3.2") |
| 23065 | (source |
| 23066 | (origin |
| 23067 | (method git-fetch) |
| 23068 | (uri (git-reference |
| 23069 | (url "https://github.com/pika/pika") |
| 23070 | (commit version))) |
| 23071 | (file-name (git-file-name name version)) |
| 23072 | (sha256 |
| 23073 | (base32 "0bmp79lds26y2976xrpf53r3acqzpf3wpkprhlh3asqpfv5pwipb")))) |
| 23074 | (build-system pyproject-build-system) |
| 23075 | (arguments |
| 23076 | (list |
| 23077 | #:test-flags |
| 23078 | ;; XXX: These test most likely require a running RabbitMQ server. |
| 23079 | #~(list "--ignore=tests/acceptance/blocking_adapter_test.py") |
| 23080 | #:phases |
| 23081 | #~(modify-phases %standard-phases |
| 23082 | (add-before 'check 'configure-tests |
| 23083 | (lambda* (#:key tests? #:allow-other-keys) |
| 23084 | (when tests? |
| 23085 | (setenv "PYTHONPATH" (getcwd)))))))) |
| 23086 | (native-inputs (list python-pytest |
| 23087 | python-gevent |
| 23088 | python-tornado |
| 23089 | python-twisted |
| 23090 | python-setuptools)) |
| 23091 | (home-page "https://pika.readthedocs.org") |
| 23092 | (synopsis "Pure Python AMQP Client Library") |
| 23093 | (description |
| 23094 | "Pika is a pure-Python implementation of the AMQP (Advanced Message Queuing |
| 23095 | Protocol) 0-9-1 protocol that tries to stay fairly independent of the underlying |
| 23096 | network support library.") |
| 23097 | (license license:bsd-3))) |
| 23098 | |
| 23099 | (define-public python-pykka |
| 23100 | (package |
| 23101 | (name "python-pykka") |
| 23102 | (version "4.4.2") |
| 23103 | (source |
| 23104 | (origin |
| 23105 | (method git-fetch) |
| 23106 | (uri (git-reference |
| 23107 | (url "https://github.com/jodal/pykka") |
| 23108 | (commit (string-append "v" version)))) |
| 23109 | (file-name (git-file-name name version)) |
| 23110 | (sha256 |
| 23111 | (base32 "15z6x31269l0zbxjv8afgi34smrh5fd3iwbjyh1342msry6msgla")))) |
| 23112 | (build-system pyproject-build-system) |
| 23113 | (native-inputs (list python-hatchling python-pytest python-pytest-mock)) |
| 23114 | (home-page "https://pykka.readthedocs.io") |
| 23115 | (synopsis "Implementation of the actor model") |
| 23116 | (description |
| 23117 | "Pykka implements the actor model in Python, which introduces some simple |
| 23118 | rules to control the sharing of state and cooperation between execution units, |
| 23119 | and makes it easier to build concurrent applications.") |
| 23120 | (license license:asl2.0))) |
| 23121 | |
| 23122 | ;; WARNING: This package is a dependency of mesa. |
| 23123 | ;; XXX: This project was archived by the owner on Dec 21, 2025. It is now |
| 23124 | ;; read-only. Consider to remove when nothing depends on it. |
| 23125 | (define-public python-ply |
| 23126 | (package |
| 23127 | (name "python-ply") |
| 23128 | (version "3.11") |
| 23129 | (source |
| 23130 | (origin |
| 23131 | (method url-fetch) |
| 23132 | (uri (pypi-uri "ply" version)) |
| 23133 | (sha256 |
| 23134 | (base32 "18qx113g9bi1ac4indd5phma82zcdq601lxncp3vjn43m2mc3iq0")))) |
| 23135 | (build-system pyproject-build-system) |
| 23136 | (arguments (list #:tests? #f)) ;XXX: not tests in PyPI archive, there are in Git |
| 23137 | (native-inputs |
| 23138 | (list python-setuptools)) |
| 23139 | (home-page "http://www.dabeaz.com/ply/") |
| 23140 | (synopsis "Python Lex & Yacc") |
| 23141 | (description "PLY is a @code{lex}/@code{yacc} implemented purely in Python. |
| 23142 | It uses LR parsing and does extensive error checking.") |
| 23143 | (license license:bsd-3))) |
| 23144 | |
| 23145 | (define-public python-kazoo |
| 23146 | (package |
| 23147 | (name "python-kazoo") |
| 23148 | (version "2.10.0") |
| 23149 | (source |
| 23150 | (origin |
| 23151 | (method git-fetch) |
| 23152 | (uri (git-reference |
| 23153 | (url "https://github.com/python-zk/kazoo") |
| 23154 | (commit version))) |
| 23155 | (file-name (git-file-name name version)) |
| 23156 | (sha256 |
| 23157 | (base32 "1ic1ky4v64jw59in02hqmyxskd98v32msd46pmsp39l7iighjrn2")))) |
| 23158 | (build-system pyproject-build-system) |
| 23159 | (arguments (list #:tests? #f)) ; XXX: needs zookeeper |
| 23160 | (native-inputs (list python-setuptools)) |
| 23161 | (home-page "https://kazoo.readthedocs.org") |
| 23162 | (synopsis "High-level Zookeeper client library") |
| 23163 | (description |
| 23164 | "Kazoo is a Python client library for the Apache Zookeeper distributed |
| 23165 | application service. It is designed to be easy to use and to avoid common |
| 23166 | programming errors.") |
| 23167 | (license license:asl2.0))) |
| 23168 | |
| 23169 | (define-public python-columnize |
| 23170 | (package |
| 23171 | (name "python-columnize") |
| 23172 | (version "0.3.11") |
| 23173 | (source |
| 23174 | (origin |
| 23175 | (method url-fetch) |
| 23176 | (uri (pypi-uri "columnize" version)) |
| 23177 | (sha256 |
| 23178 | (base32 "1clb3lfw694crq8m767q0yjaazkplcrbzdr9fr2w39hhndivhcd6")))) |
| 23179 | (build-system pyproject-build-system) |
| 23180 | (native-inputs (list python-pytest python-setuptools)) |
| 23181 | (home-page "https://github.com/rocky/pycolumnize") |
| 23182 | (synopsis "Format a simple (i.e. not nested) list into aligned columns.") |
| 23183 | (description |
| 23184 | "This package provides a way to format a simple (i.e. not nested) list |
| 23185 | into aligned columns.") |
| 23186 | (license license:expat))) |
| 23187 | |
| 23188 | (define-public python-pysol-cards |
| 23189 | (package |
| 23190 | (name "python-pysol-cards") |
| 23191 | (version "0.24.0") |
| 23192 | (source |
| 23193 | (origin |
| 23194 | (method url-fetch) |
| 23195 | (uri (pypi-uri "pysol_cards" version)) |
| 23196 | (sha256 |
| 23197 | (base32 "0jsd7mqp0ak8zidg540b9hjncgx8diy9lv85zj6mi88sm0nlk1d9")))) |
| 23198 | (build-system pyproject-build-system) |
| 23199 | (arguments |
| 23200 | (list |
| 23201 | #:phases |
| 23202 | #~(modify-phases %standard-phases |
| 23203 | (replace 'check |
| 23204 | (lambda* (#:key test-flags tests? #:allow-other-keys) |
| 23205 | (when tests? |
| 23206 | (apply invoke |
| 23207 | "python" |
| 23208 | "-m" |
| 23209 | "unittest" |
| 23210 | "discover" |
| 23211 | "tests" |
| 23212 | test-flags))))))) |
| 23213 | (native-inputs (list python-setuptools python-wheel)) |
| 23214 | (home-page "https://github.com/shlomif/pysol_cards") |
| 23215 | (synopsis "Deal PySol FC Cards") |
| 23216 | (description |
| 23217 | "The pysol-cards python modules provide code to generate the initial deals of |
| 23218 | some PySol games.") |
| 23219 | (license license:expat))) |
| 23220 | |
| 23221 | (define-public python-freecell-solver |
| 23222 | (package |
| 23223 | (name "python-freecell-solver") |
| 23224 | (version "0.6.0") |
| 23225 | (source |
| 23226 | (origin |
| 23227 | (method url-fetch) |
| 23228 | (uri (pypi-uri "freecell_solver" version)) |
| 23229 | (sha256 |
| 23230 | (base32 "0cq77dmq21laqk8fhl61m33lbckymzk312r263x2mv93mccf8jrm")))) |
| 23231 | (build-system pyproject-build-system) |
| 23232 | (propagated-inputs (list python-cffi)) |
| 23233 | (native-inputs (list python-pytest python-setuptools)) |
| 23234 | (home-page "https://pypi.org/project/freecell-solver/") |
| 23235 | (synopsis "Freecell Solver bindings") |
| 23236 | (description |
| 23237 | "This package provides Python bindings for the freecell-solver |
| 23238 | package. Freecell Solver is a program that automatically solves layouts of |
| 23239 | Freecell and similar variants of Card Solitaire such as Eight Off, Forecell, |
| 23240 | and Seahaven Towers, as well as Simple Simon boards.") |
| 23241 | (license license:expat))) |
| 23242 | |
| 23243 | (define-public python-inflection |
| 23244 | (package |
| 23245 | (name "python-inflection") |
| 23246 | (version "0.5.1") |
| 23247 | (source |
| 23248 | (origin |
| 23249 | (method git-fetch) |
| 23250 | (uri (git-reference |
| 23251 | (url "https://github.com/jpvanhal/inflection") |
| 23252 | (commit version))) |
| 23253 | (file-name (git-file-name name version)) |
| 23254 | (sha256 |
| 23255 | (base32 "0mvs6wgpi963k7mqrwzdkh32m29zcm772q0fy7pwszlcsh3l50kg")))) |
| 23256 | (build-system pyproject-build-system) |
| 23257 | (native-inputs (list python-pytest python-setuptools)) |
| 23258 | (home-page "https://github.com/jpvanhal/inflection") |
| 23259 | (synopsis "Python string transformation library") |
| 23260 | (description |
| 23261 | "Inflection is a string transformation library. It singularizes |
| 23262 | and pluralizes English words, and transforms strings from CamelCase to |
| 23263 | underscored string.") |
| 23264 | (license license:expat))) |
| 23265 | |
| 23266 | (define-public python-krb5 |
| 23267 | (package |
| 23268 | (name "python-krb5") |
| 23269 | (version "0.5.1") |
| 23270 | (source |
| 23271 | (origin |
| 23272 | (method url-fetch) |
| 23273 | (uri (pypi-uri "krb5" version)) |
| 23274 | (sha256 |
| 23275 | (base32 "1jivws8dsscsmyqngbc71r4qw8qmn98pqmhylz01r5dd1ljfw9bi")))) |
| 23276 | (build-system pyproject-build-system) |
| 23277 | (inputs (list mit-krb5)) |
| 23278 | (native-inputs (list python-cython python-k5test python-pytest |
| 23279 | python-setuptools python-wheel)) |
| 23280 | (home-page "https://github.com/jborean93/pykrb5") |
| 23281 | (synopsis "Kerberos API bindings for Python") |
| 23282 | (description "This library provides Python functions that wraps the |
| 23283 | Kerberos 5 C API.") |
| 23284 | (license license:expat))) |
| 23285 | |
| 23286 | (define-public python-pylev |
| 23287 | (package |
| 23288 | (name "python-pylev") |
| 23289 | (version "1.4.0") |
| 23290 | (source |
| 23291 | (origin |
| 23292 | (method git-fetch) |
| 23293 | (uri (git-reference |
| 23294 | (url "https://github.com/toastdriven/pylev") |
| 23295 | (commit (string-append "v" version)))) |
| 23296 | (file-name (git-file-name name version)) |
| 23297 | (sha256 |
| 23298 | (base32 "0fgxjdnvnvavnxmxxd0fl5jyr2f31g3a26bwyxcpy56mgpd095c1")))) |
| 23299 | (build-system pyproject-build-system) |
| 23300 | (arguments |
| 23301 | (list |
| 23302 | #:test-backend #~'custom |
| 23303 | #:test-flags #~(list "tests.py"))) |
| 23304 | (native-inputs (list python-setuptools)) |
| 23305 | (home-page "https://github.com/toastdriven/pylev") |
| 23306 | (synopsis "Levenshtein distance implementation in Python") |
| 23307 | (description |
| 23308 | "Pure Python Levenshtein implementation, based off the Wikipedia code |
| 23309 | samples at @url{http://en.wikipedia.org/wiki/Levenshtein_distance}.") |
| 23310 | (license license:bsd-3))) |
| 23311 | |
| 23312 | (define-public python-cleo |
| 23313 | (package |
| 23314 | (name "python-cleo") |
| 23315 | (version "2.1.0") |
| 23316 | (source (origin |
| 23317 | (method url-fetch) |
| 23318 | (uri (pypi-uri "cleo" version)) |
| 23319 | (sha256 |
| 23320 | (base32 |
| 23321 | "08ym7xaalxzka3k9wp7i05n6j9xmmjs1y02ilrz0lrhkbl5qhb0b")))) |
| 23322 | (build-system pyproject-build-system) |
| 23323 | (native-inputs |
| 23324 | (list python-poetry-core |
| 23325 | python-mock |
| 23326 | python-pytest-mock |
| 23327 | python-pytest)) |
| 23328 | (propagated-inputs |
| 23329 | (list python-crashtest python-rapidfuzz)) |
| 23330 | (home-page "https://github.com/sdispater/cleo") |
| 23331 | (synopsis "Command-line arguments library for Python") |
| 23332 | (description |
| 23333 | "Cleo allows you to create command-line commands with signature in |
| 23334 | docstring and colored output.") |
| 23335 | (license license:expat))) |
| 23336 | |
| 23337 | (define-public python-shellingham |
| 23338 | (package |
| 23339 | (name "python-shellingham") |
| 23340 | (version "1.5.4") |
| 23341 | (source |
| 23342 | (origin |
| 23343 | (method url-fetch) |
| 23344 | (uri (pypi-uri "shellingham" version)) |
| 23345 | (sha256 |
| 23346 | (base32 "1ph46hv920ha9clwxgrllbrphh0ww4v4pjmkbb9mnzj8kmrs1g4d")))) |
| 23347 | (build-system pyproject-build-system) |
| 23348 | (native-inputs |
| 23349 | (list python-pytest python-pytest-mock python-setuptools python-wheel)) |
| 23350 | (home-page "https://github.com/sarugaku/shellingham") |
| 23351 | (synopsis "Tool to detect surrounding shell") |
| 23352 | (description |
| 23353 | "Shellingham detects what shell the current Python executable is |
| 23354 | running in.") |
| 23355 | (license license:isc))) |
| 23356 | |
| 23357 | (define-public python-shshsh |
| 23358 | (package |
| 23359 | (name "python-shshsh") |
| 23360 | (version "1.0.5") |
| 23361 | (source |
| 23362 | (origin |
| 23363 | (method git-fetch) |
| 23364 | (uri |
| 23365 | (git-reference |
| 23366 | (url "https://github.com/zqqqqz2000/shshsh") |
| 23367 | (commit |
| 23368 | "fd21c8696aebaae04507760c16cb45979291fef5"))) |
| 23369 | (file-name (git-file-name name version)) |
| 23370 | (sha256 |
| 23371 | (base32 |
| 23372 | "1wzqyj1a6jj6cyv5ymzy834qm2lyq80yy1kfz0q0zayq9gm1cj7f")))) |
| 23373 | (build-system pyproject-build-system) |
| 23374 | (native-inputs |
| 23375 | (list python-poetry-core |
| 23376 | python-pytest)) |
| 23377 | (home-page "https://github.com/zqqqqz2000/shshsh") |
| 23378 | (synopsis "Write Shell commands simply and safely within Python") |
| 23379 | (description "This package provides a way to write Shell commands from |
| 23380 | within Python. Python functions can be chained together to process input |
| 23381 | Bash control characters are escapted so that parameters can be passed |
| 23382 | without worrying about command injection.") |
| 23383 | (license license:expat))) |
| 23384 | |
| 23385 | (define-public python-memcached |
| 23386 | (package |
| 23387 | (name "python-memcached") |
| 23388 | (version "1.62") |
| 23389 | (source |
| 23390 | (origin |
| 23391 | (method git-fetch) |
| 23392 | (uri (git-reference |
| 23393 | (url "https://github.com/linsomniac/python-memcached") |
| 23394 | (commit version))) |
| 23395 | (file-name (git-file-name name version)) |
| 23396 | (sha256 |
| 23397 | (base32 "1chw36v1g4zz32s2qc2ql1hzrd1ys8d4abjdjnjgg8anpx13hjj2")))) |
| 23398 | (build-system pyproject-build-system) |
| 23399 | (arguments |
| 23400 | (list |
| 23401 | #:tests? #f ;Requires a connection to a socket. |
| 23402 | #:test-backend #~'unittest)) |
| 23403 | (native-inputs (list python-setuptools)) |
| 23404 | (home-page "https://github.com/linsomniac/python-memcached") |
| 23405 | (synopsis "Pure python memcached client") |
| 23406 | (description |
| 23407 | "This software is a pure Python interface to the memcached memory cache |
| 23408 | daemon. It is the client side software which allows storing values in one or |
| 23409 | more, possibly remote, memcached servers.") |
| 23410 | (license license:psfl))) |
| 23411 | |
| 23412 | (define-public python-mergedeep |
| 23413 | (package |
| 23414 | (name "python-mergedeep") |
| 23415 | (version "1.3.4") |
| 23416 | (source |
| 23417 | (origin |
| 23418 | (method git-fetch) |
| 23419 | (uri (git-reference |
| 23420 | (url "https://github.com/clarketm/mergedeep") |
| 23421 | (commit (string-append "v" version)))) |
| 23422 | (file-name (git-file-name name version)) |
| 23423 | (sha256 |
| 23424 | (base32 "1msvvdzk33sxzgyvs4fs8dlsrsi7fjj038z83s0yw5h8m8d78469")))) |
| 23425 | (build-system pyproject-build-system) |
| 23426 | (arguments (list #:test-backend #~'unittest)) |
| 23427 | (native-inputs (list python-setuptools)) |
| 23428 | (home-page "https://github.com/clarketm/mergedeep") |
| 23429 | (synopsis "Deep merge function for Python") |
| 23430 | (description |
| 23431 | "This package provides a deep merge function for Python, useful to |
| 23432 | combine multiple data objects as one.") |
| 23433 | (license license:expat))) |
| 23434 | |
| 23435 | (define-public python-clikit |
| 23436 | (package |
| 23437 | (name "python-clikit") |
| 23438 | (version "0.6.2") |
| 23439 | (source |
| 23440 | (origin |
| 23441 | (method git-fetch) |
| 23442 | (uri (git-reference |
| 23443 | (url "https://github.com/sdispater/clikit") |
| 23444 | (commit version))) |
| 23445 | (file-name (git-file-name name version)) |
| 23446 | (sha256 |
| 23447 | (base32 "1l11iriqc61m30fp17yxwkgl5900kiw8x8vw2i93n1jh2lv182y4")))) |
| 23448 | (build-system pyproject-build-system) |
| 23449 | (arguments |
| 23450 | (list |
| 23451 | #:phases |
| 23452 | #~(modify-phases %standard-phases |
| 23453 | (add-after 'unpack 'relax-requirements |
| 23454 | (lambda _ |
| 23455 | (substitute* "pyproject.toml" |
| 23456 | (("^crashtest.*") |
| 23457 | (format #f "crashtest=~s" |
| 23458 | #$(package-version |
| 23459 | (this-package-input "python-crashtest")))))))))) |
| 23460 | (native-inputs (list python-poetry-core python-pytest python-pytest-mock)) |
| 23461 | (propagated-inputs (list python-crashtest python-pastel python-pylev)) |
| 23462 | (home-page "https://github.com/sdispater/clikit") |
| 23463 | (synopsis "Group of utilities to build command line interfaces") |
| 23464 | (description |
| 23465 | "CliKit is a group of utilities to build testable command line |
| 23466 | interfaces.") |
| 23467 | (license license:expat))) |
| 23468 | |
| 23469 | (define-public python-cattrs |
| 23470 | (package |
| 23471 | (name "python-cattrs") |
| 23472 | (version "26.1.0") |
| 23473 | (source |
| 23474 | (origin |
| 23475 | (method git-fetch) |
| 23476 | (uri (git-reference |
| 23477 | (url "https://github.com/python-attrs/cattrs") |
| 23478 | (commit (string-append "v" version)))) |
| 23479 | (file-name (git-file-name name version)) |
| 23480 | (sha256 |
| 23481 | (base32 "0msn1zgv7shlh7nnmhydg7gv6j0y9yy1061f7qcj31jhzd7bnl4b")))) |
| 23482 | (build-system pyproject-build-system) |
| 23483 | (arguments |
| 23484 | (list |
| 23485 | ;; tests: 1010 passed, 15 xfailed |
| 23486 | #:test-flags |
| 23487 | #~(list "-m" "not benchmark" |
| 23488 | "--numprocesses" (number->string (parallel-job-count))) |
| 23489 | #:phases |
| 23490 | #~(modify-phases %standard-phases |
| 23491 | (add-after 'unpack 'fix-pytest-config |
| 23492 | (lambda _ |
| 23493 | (substitute* "pyproject.toml" |
| 23494 | ;; All options are benchmark related. |
| 23495 | (("addopts =.*") "\n"))))))) |
| 23496 | (native-inputs |
| 23497 | (list python-hatchling |
| 23498 | python-hatch-vcs |
| 23499 | python-immutables |
| 23500 | python-pytest |
| 23501 | python-pytest-benchmark |
| 23502 | python-pytest-xdist)) |
| 23503 | (propagated-inputs |
| 23504 | (list python-attrs |
| 23505 | python-typing-extensions |
| 23506 | ;; [optional] |
| 23507 | python-cbor2 |
| 23508 | python-msgpack |
| 23509 | python-msgspec |
| 23510 | python-orjson |
| 23511 | python-pymongo ;for the bson module |
| 23512 | python-pyyaml |
| 23513 | python-tomli-w |
| 23514 | python-tomlkit |
| 23515 | python-ujson)) |
| 23516 | (home-page "https://github.com/python-attrs/cattrs") |
| 23517 | (synopsis "Python library for structuring and unstructuring data") |
| 23518 | (description "@code{cattrs} is an Python library for structuring and |
| 23519 | unstructuring data. @code{cattrs} works best with @code{attrs} classes, |
| 23520 | @code{dataclasses} and the usual Python collections, but other kinds of |
| 23521 | classes can also be supported by manually registering converters.") |
| 23522 | (license license:expat))) |
| 23523 | |
| 23524 | ;; A bare minimal package, mainly to use in tests and reduce closure |
| 23525 | ;; size. Tests are left out in the main package to slim down native-inputs and |
| 23526 | ;; optional propagated-inputs. |
| 23527 | (define-public python-cattrs-minimal |
| 23528 | (package/inherit python-cattrs |
| 23529 | (name "python-cattrs-minimal") |
| 23530 | (arguments |
| 23531 | (substitute-keyword-arguments arguments |
| 23532 | ((#:tests? _ #t) #f))) |
| 23533 | (native-inputs |
| 23534 | (list python-hatchling |
| 23535 | python-hatch-vcs)) |
| 23536 | (propagated-inputs |
| 23537 | (list python-attrs |
| 23538 | python-typing-extensions)))) |
| 23539 | |
| 23540 | (define-public python-cachy |
| 23541 | (package |
| 23542 | (name "python-cachy") |
| 23543 | (version "0.3.0") |
| 23544 | (source |
| 23545 | (origin |
| 23546 | (method url-fetch) |
| 23547 | (uri (pypi-uri "cachy" version)) |
| 23548 | (sha256 |
| 23549 | (base32 "1cb9naly8ampzlky7h74n5wj628l7jkpsh0c0jz0namlrvs82r8q")))) |
| 23550 | (build-system pyproject-build-system) |
| 23551 | (arguments |
| 23552 | (list |
| 23553 | #:phases |
| 23554 | #~(modify-phases %standard-phases |
| 23555 | (replace 'check |
| 23556 | (lambda* (#:key tests? #:allow-other-keys) |
| 23557 | (when tests? |
| 23558 | ;; Make it compatible with python-flexmock 0.12. |
| 23559 | (substitute* (find-files "tests" "\\.py$") |
| 23560 | (("from flexmock import flexmock, flexmock_teardown") |
| 23561 | (string-append "from flexmock import flexmock\n" |
| 23562 | "from flexmock._api import flexmock_teardown"))) |
| 23563 | (invoke "pifpaf" "run" "memcached" "--port" "11211" "--" |
| 23564 | "pytest"))))))) |
| 23565 | (native-inputs |
| 23566 | (list memcached |
| 23567 | python-fakeredis |
| 23568 | python-flexmock |
| 23569 | python-pifpaf |
| 23570 | python-pytest |
| 23571 | python-setuptools |
| 23572 | python-wheel)) |
| 23573 | (propagated-inputs |
| 23574 | (list python-memcached |
| 23575 | python-msgpack |
| 23576 | python-redis)) |
| 23577 | (home-page "https://github.com/sdispater/cachy") |
| 23578 | (synopsis "Simple yet effective caching library") |
| 23579 | (description |
| 23580 | "Cachy provides a simple yet effective caching library. A simple but |
| 23581 | powerful API: thread-safety; decorator syntax; support for memcached, redis, |
| 23582 | database, file, dict stores. Cachy supports python versions 2.7+ and 3.2+.") |
| 23583 | (license license:expat))) |
| 23584 | |
| 23585 | (define-public python-pyproject-api |
| 23586 | (package |
| 23587 | (name "python-pyproject-api") |
| 23588 | (version "1.10.0") |
| 23589 | (source |
| 23590 | (origin |
| 23591 | (method url-fetch) |
| 23592 | (uri (pypi-uri "pyproject_api" version)) |
| 23593 | (sha256 |
| 23594 | (base32 "0c5kpg0fpqvvimzxjq2a9kdijk601393wxqwwvz4mp7b5vcg5ij0")))) |
| 23595 | (build-system pyproject-build-system) |
| 23596 | (native-inputs |
| 23597 | (list python-hatch-vcs |
| 23598 | python-hatchling |
| 23599 | python-pytest |
| 23600 | python-pytest-mock |
| 23601 | python-setuptools)) |
| 23602 | (propagated-inputs |
| 23603 | (list python-packaging python-tomli)) |
| 23604 | (home-page "https://pyproject-api.readthedocs.io/latest/") |
| 23605 | (synopsis "API to interact with the Python pyproject.toml based projects") |
| 23606 | (description |
| 23607 | "@code{pyproject-api} aims to abstract away interaction with |
| 23608 | @code{pyproject.toml} style projects in a flexible way.") |
| 23609 | (license license:expat))) |
| 23610 | |
| 23611 | (define-public python-lark |
| 23612 | (package |
| 23613 | (name "python-lark") |
| 23614 | (version "1.2.2") |
| 23615 | (source |
| 23616 | (origin |
| 23617 | (method url-fetch) |
| 23618 | (uri (pypi-uri "lark" version)) |
| 23619 | (sha256 |
| 23620 | (base32 "107d1w24b3ln4zwsw4yvkfhff6bk5n3cpvlgbbqww5ndc80pv06a")))) |
| 23621 | (build-system pyproject-build-system) |
| 23622 | (native-inputs (list python-pytest python-setuptools python-wheel)) |
| 23623 | (home-page "https://github.com/lark-parser/lark") |
| 23624 | (synopsis "Multi-language parser for Python") |
| 23625 | (description |
| 23626 | "Lark is a parser built with a focus on ergonomics, performance and |
| 23627 | resilience. Lark can parse all context-free languages. That means it is |
| 23628 | capable of parsing almost any programming language out there, and to |
| 23629 | some degree most natural languages too.") |
| 23630 | (license license:expat))) |
| 23631 | |
| 23632 | (define-public python-find-libpython |
| 23633 | (package |
| 23634 | (name "python-find-libpython") |
| 23635 | (version "0.5.1") |
| 23636 | (source |
| 23637 | (origin |
| 23638 | (method git-fetch) |
| 23639 | (uri (git-reference |
| 23640 | (url "https://github.com/ktbarrett/find_libpython") |
| 23641 | (commit (string-append "v" version)))) |
| 23642 | (file-name (git-file-name name version)) |
| 23643 | (sha256 |
| 23644 | (base32 "0r4mzmlbgzbxldxhw55b6haj9xybx1wwm9pvpr665mhsxgxaaqc3")))) |
| 23645 | (build-system pyproject-build-system) |
| 23646 | (native-inputs (list python-pytest python-setuptools)) |
| 23647 | (home-page "https://github.com/ktbarrett/find_libpython") |
| 23648 | (synopsis "Find the path to the @code{libpython} dynamic library") |
| 23649 | (description |
| 23650 | "@code{find_libpython} helps find the path to the |
| 23651 | @code{libpython} dynamic library for the current Python environment. It is |
| 23652 | both a script and a Python package.") |
| 23653 | (license license:expat))) |
| 23654 | |
| 23655 | (define-public python-libcst |
| 23656 | (package |
| 23657 | (name "python-libcst") |
| 23658 | (version "1.6.0") |
| 23659 | (source (origin |
| 23660 | (method url-fetch) |
| 23661 | (uri (pypi-uri "libcst" version)) |
| 23662 | (sha256 |
| 23663 | (base32 |
| 23664 | "1nzhvg52whpmfv8fkrnv7rlrmgc5m43hpyp8ra9kffx47yzcs3p8")) |
| 23665 | (snippet |
| 23666 | #~(begin (use-modules (guix build utils)) |
| 23667 | ;; This is mostly to keep the cargo-build-system happy |
| 23668 | (with-output-to-file "Cargo.toml" |
| 23669 | (lambda () |
| 23670 | (format #t "\ |
| 23671 | [workspace] |
| 23672 | |
| 23673 | members = [ |
| 23674 | \"native\",]"))))))) |
| 23675 | (build-system cargo-build-system) |
| 23676 | (arguments |
| 23677 | (list |
| 23678 | #:install-source? #false |
| 23679 | #:cargo-test-flags |
| 23680 | ;; According to .github/workflows/ci.yml |
| 23681 | '(list "--manifest-path=native/Cargo.toml" |
| 23682 | "--release" |
| 23683 | "--no-default-features") |
| 23684 | #:imported-modules `(,@%pyproject-build-system-modules |
| 23685 | ,@%cargo-build-system-modules) |
| 23686 | #:modules `((guix build cargo-build-system) |
| 23687 | ((guix build pyproject-build-system) #:prefix py:) |
| 23688 | (guix build utils)) |
| 23689 | #:phases |
| 23690 | #~(modify-phases %standard-phases |
| 23691 | (add-after 'unpack 'prepare-source |
| 23692 | (lambda _ |
| 23693 | (delete-file "native/Cargo.lock"))) |
| 23694 | (replace 'build |
| 23695 | (assoc-ref py:%standard-phases 'build)) |
| 23696 | (add-after 'install 'wrap |
| 23697 | (lambda _ |
| 23698 | ;; Collection of python- and pyproject-build-system phases |
| 23699 | ;; between 'install and 'check. |
| 23700 | (assoc-ref py:%standard-phases 'add-install-to-pythonpath) |
| 23701 | (assoc-ref py:%standard-phases 'add-install-to-path) |
| 23702 | (assoc-ref py:%standard-phases 'wrap) |
| 23703 | (assoc-ref py:%standard-phases 'create-entrypoints) |
| 23704 | (assoc-ref py:%standard-phases 'compile-bytecode))) |
| 23705 | ;; We are not the only ones who cannot load libcst.native |
| 23706 | ;; during the 'check phase |
| 23707 | ;; https://github.com/Instagram/LibCST/issues/1176 |
| 23708 | ;; (add-after 'wrap 'python-check |
| 23709 | ;; (lambda args |
| 23710 | ;; (apply (assoc-ref py:%standard-phases 'check) |
| 23711 | ;; #:test-flags '() |
| 23712 | ;; args))) |
| 23713 | (replace 'install |
| 23714 | (assoc-ref py:%standard-phases 'install))))) |
| 23715 | (native-inputs |
| 23716 | (list python-minimal-wrapper |
| 23717 | python-hypothesmith |
| 23718 | python-pytest |
| 23719 | python-setuptools |
| 23720 | python-setuptools-rust |
| 23721 | python-setuptools-scm |
| 23722 | python-wheel)) |
| 23723 | (inputs (cons maturin (cargo-inputs 'python-libcst))) |
| 23724 | (propagated-inputs |
| 23725 | (list python-pyyaml)) |
| 23726 | (home-page "https://github.com/Instagram/LibCST") |
| 23727 | (synopsis "Concrete Syntax Tree (CST) parser and serializer library for Python") |
| 23728 | (description |
| 23729 | "LibCST parses Python source code as a CST tree that keeps all |
| 23730 | formatting details (comments, whitespaces, parentheses, etc). It's useful |
| 23731 | for building automated refactoring (codemod) applications and linters. |
| 23732 | LibCST creates a compromise between an Abstract Syntax Tree (AST) and |
| 23733 | a traditional Concrete Syntax Tree (CST). By carefully reorganizing and |
| 23734 | naming node types and fields, LibCST creates a lossless CST that looks and |
| 23735 | feels like an AST.") |
| 23736 | (license (list license:expat |
| 23737 | ;; Some files unde libcst/_parser/ are under Python Software |
| 23738 | ;; Foundation license (see LICENSE file for details) |
| 23739 | license:psfl |
| 23740 | ;; libcst/_add_slots.py |
| 23741 | license:asl2.0)))) |
| 23742 | |
| 23743 | (define-public python-libcst-minimal |
| 23744 | (hidden-package |
| 23745 | (package |
| 23746 | (inherit python-libcst) |
| 23747 | (name "python-libcst-minimal") |
| 23748 | (arguments |
| 23749 | (substitute-keyword-arguments arguments |
| 23750 | ((#:tests? _ #t) #f))) |
| 23751 | (native-inputs |
| 23752 | (list python-minimal-wrapper |
| 23753 | python-setuptools |
| 23754 | python-setuptools-rust |
| 23755 | python-setuptools-scm |
| 23756 | python-wheel))))) |
| 23757 | |
| 23758 | (define-public python-lazy-loader |
| 23759 | (package |
| 23760 | (name "python-lazy-loader") |
| 23761 | (version "0.4") |
| 23762 | (source (origin |
| 23763 | (method url-fetch) |
| 23764 | (uri (pypi-uri "lazy_loader" version)) |
| 23765 | (sha256 |
| 23766 | (base32 |
| 23767 | "1lacaz292qxpgw6kxiirkx6sv9c5883nq4ssm3hs94cvb2153is7")))) |
| 23768 | (build-system pyproject-build-system) |
| 23769 | (native-inputs |
| 23770 | (list python-numpy python-pytest python-setuptools)) |
| 23771 | (propagated-inputs |
| 23772 | (list python-flit-core |
| 23773 | python-setuptools |
| 23774 | python-wheel)) |
| 23775 | (home-page "https://scientific-python.org/specs/spec-0001/") |
| 23776 | (synopsis "Load subpackages and functions on demand") |
| 23777 | (description "@code{python-lazy-loader} makes it easy to load subpackages |
| 23778 | and functions on demand. Its main features are: |
| 23779 | |
| 23780 | @itemize |
| 23781 | @item Allow subpackages to be made visible to users without incurring import |
| 23782 | costs. |
| 23783 | @item Allow external libraries to be imported only when used, improving import |
| 23784 | times. |
| 23785 | @end itemize") |
| 23786 | (license license:bsd-3))) |
| 23787 | |
| 23788 | (define-public python-lazy-object-proxy |
| 23789 | (package |
| 23790 | (name "python-lazy-object-proxy") |
| 23791 | (version "1.12.0") |
| 23792 | (source |
| 23793 | (origin |
| 23794 | (method git-fetch) |
| 23795 | (uri (git-reference |
| 23796 | (url "https://github.com/ionelmc/python-lazy-object-proxy") |
| 23797 | (commit (string-append "v" version)))) |
| 23798 | (file-name (git-file-name name version)) |
| 23799 | (sha256 |
| 23800 | (base32 "1qig879igkjmj4mir26b0n40w3vn5jqn293172s6npxnb4k90kzk")))) |
| 23801 | (build-system pyproject-build-system) |
| 23802 | (native-inputs |
| 23803 | (list python-pytest |
| 23804 | python-pytest-benchmark |
| 23805 | python-setuptools |
| 23806 | python-setuptools-scm)) |
| 23807 | (home-page "https://github.com/ionelmc/python-lazy-object-proxy") |
| 23808 | (synopsis "Lazy object proxy for Python") |
| 23809 | (description |
| 23810 | "Lazy object proxy is an object that wraps a callable but defers the call |
| 23811 | until the object is actually required, and caches the result of said call.") |
| 23812 | (license license:bsd-2))) |
| 23813 | |
| 23814 | (define-public python-dnspython |
| 23815 | ;; TODO: Move to (gnu packages python-web). |
| 23816 | (package |
| 23817 | (name "python-dnspython") |
| 23818 | (version "2.8.0") |
| 23819 | (source |
| 23820 | (origin |
| 23821 | (method url-fetch) |
| 23822 | (uri (pypi-uri "dnspython" version)) |
| 23823 | (sha256 |
| 23824 | (base32 "03vdy97rh9kxwzyjymlrw235ljmqk4awcij0khcb2b25jrlkq78q")))) |
| 23825 | (build-system pyproject-build-system) |
| 23826 | (arguments |
| 23827 | (list |
| 23828 | ;; tests: 1216 passed, 198 skipped, 2 deselected |
| 23829 | #:test-flags |
| 23830 | #~(list |
| 23831 | ;; AssertionError: assert False |
| 23832 | "--deselect=tests/test_features.py::test_have" |
| 23833 | ;; dns.exception.SyntaxError: protocol not found |
| 23834 | "--deselect=tests/test_rdata.py::RdataTestCase::test_misc_good_WKS_text") |
| 23835 | #:phases |
| 23836 | #~(modify-phases %standard-phases |
| 23837 | (add-after 'unpack 'patch-getprotobyname-calls |
| 23838 | ;; These calls are problematic in the build environment as there is |
| 23839 | ;; no /etc/protocols. This breaks the sanity-check phase of any |
| 23840 | ;; package depending on this one. |
| 23841 | (lambda _ |
| 23842 | (substitute* "dns/rdtypes/IN/WKS.py" |
| 23843 | (("socket.getprotobyname\\('tcp'\\)") |
| 23844 | "6") |
| 23845 | (("socket.getprotobyname\\('udp'\\)") |
| 23846 | "17"))))))) |
| 23847 | (native-inputs |
| 23848 | (list python-hatchling |
| 23849 | python-pytest)) |
| 23850 | (propagated-inputs |
| 23851 | (append |
| 23852 | (if (supported-package? python-cryptography) |
| 23853 | (list ;; DNSSEC |
| 23854 | python-cryptography |
| 23855 | ;; DNS over Quic |
| 23856 | python-aioquic |
| 23857 | ;; DNS over HTTPS |
| 23858 | python-h2 |
| 23859 | python-httpcore |
| 23860 | python-httpx) |
| 23861 | '()) |
| 23862 | (list python-idna |
| 23863 | python-trio))) |
| 23864 | (home-page "https://www.dnspython.org") |
| 23865 | (synopsis "DNS toolkit for Python") |
| 23866 | (description |
| 23867 | "dnspython is a DNS toolkit for Python. It supports almost all record |
| 23868 | types. It can be used for queries, zone transfers, and dynamic updates. |
| 23869 | It supports TSIG authenticated messages and EDNS0.") |
| 23870 | (license license:expat))) |
| 23871 | |
| 23872 | ;; A bare minimal package, mainly to use in tests and reduce closure size. |
| 23873 | ;; Tests are left out in the main package to slim down native-inputs and |
| 23874 | ;; propagated-inputs. |
| 23875 | (define-public python-dnspython-minimal |
| 23876 | (package/inherit python-dnspython |
| 23877 | (name "python-dnspython-minimal") |
| 23878 | (arguments |
| 23879 | (substitute-keyword-arguments arguments |
| 23880 | ((#:tests? _ #t) #f))) |
| 23881 | (native-inputs |
| 23882 | (list python-hatchling)) |
| 23883 | (propagated-inputs '()))) |
| 23884 | |
| 23885 | (define-public python-py3dns |
| 23886 | (package |
| 23887 | (name "python-py3dns") |
| 23888 | (version "4.0.2") |
| 23889 | (source |
| 23890 | (origin |
| 23891 | (method url-fetch) |
| 23892 | (uri (pypi-uri "py3dns" version)) |
| 23893 | (sha256 |
| 23894 | (base32 "0fcac412kh34r3gxvn7dc1srmjii2qs6n3lgyxh3q57cxj02wrcq")))) |
| 23895 | (build-system pyproject-build-system) |
| 23896 | (arguments |
| 23897 | ;; This package wants to read /etc/resolv.conf. We can't patch it without |
| 23898 | ;; removing functionality so we don't run tests. |
| 23899 | (list #:tests? #f)) |
| 23900 | (native-inputs (list python-flit-core)) |
| 23901 | (home-page "https://launchpad.net/py3dns") |
| 23902 | (synopsis "Python 3 DNS library") |
| 23903 | (description |
| 23904 | "This Python 3 module provides a DNS API for looking up DNS entries from |
| 23905 | within Python 3 modules and applications. This module is a simple, |
| 23906 | lightweight implementation.") |
| 23907 | (license license:psfl))) |
| 23908 | |
| 23909 | (define-public python-email-validator |
| 23910 | (package |
| 23911 | (name "python-email-validator") |
| 23912 | (version "2.2.0") |
| 23913 | (source |
| 23914 | (origin |
| 23915 | (method url-fetch) |
| 23916 | (uri (pypi-uri "email_validator" version)) |
| 23917 | (sha256 |
| 23918 | (base32 "1dw28lv9lpsw2s7dylhih93fn72s8iqyfsp6497p2yk19hs0ysfb")))) |
| 23919 | (build-system pyproject-build-system) |
| 23920 | (arguments |
| 23921 | (list |
| 23922 | #:test-flags |
| 23923 | ;; dns.resolver.NoResolverConfiguration: cannot open /etc/resolv.conf |
| 23924 | #~(list "-k" "not test_caching_dns_resolver"))) |
| 23925 | (native-inputs |
| 23926 | (list python-pytest |
| 23927 | python-setuptools |
| 23928 | python-wheel)) |
| 23929 | (propagated-inputs |
| 23930 | (list python-dnspython |
| 23931 | python-idna)) |
| 23932 | (home-page "https://github.com/JoshData/python-email-validator") |
| 23933 | (synopsis "Email address validation library for Python") |
| 23934 | (description |
| 23935 | "This library validates email address syntax and deliverability.") |
| 23936 | (license license:cc0))) |
| 23937 | |
| 23938 | (define-public python-faker |
| 23939 | (package |
| 23940 | (name "python-faker") |
| 23941 | (version "37.4.2") |
| 23942 | (source |
| 23943 | (origin |
| 23944 | (method url-fetch) |
| 23945 | (uri (pypi-uri "faker" version)) |
| 23946 | (sha256 |
| 23947 | (base32 "02kbql0mgjh98ilz5crxlkrsl9qdqlfa5gmqjn46br9hxax1na4f")))) |
| 23948 | (build-system pyproject-build-system) |
| 23949 | ;; tests: 2104 passed, 12 skipped, 2 warnings |
| 23950 | (native-inputs |
| 23951 | (list python-freezegun |
| 23952 | python-pytest |
| 23953 | python-setuptools |
| 23954 | python-validators)) |
| 23955 | (propagated-inputs |
| 23956 | (list python-tzdata)) |
| 23957 | (home-page "https://github.com/joke2k/faker") |
| 23958 | (synopsis "Python package that generates fake data") |
| 23959 | (description |
| 23960 | "Faker is a Python package that generates fake data such as names, |
| 23961 | addresses, and phone numbers.") |
| 23962 | (license license:expat))) |
| 23963 | |
| 23964 | (define-public python-pyaml |
| 23965 | (package |
| 23966 | (name "python-pyaml") |
| 23967 | (version "25.7.0") |
| 23968 | (source |
| 23969 | (origin |
| 23970 | (method url-fetch) |
| 23971 | (uri (pypi-uri "pyaml" version)) |
| 23972 | (sha256 |
| 23973 | (base32 "16yrflm7iyz82igpzlba16cbvwfwny2fnarf14mvz0b8q57ac4z1")))) |
| 23974 | (build-system pyproject-build-system) |
| 23975 | (native-inputs |
| 23976 | (list python-pytest |
| 23977 | python-setuptools)) |
| 23978 | (propagated-inputs |
| 23979 | (list python-pyyaml)) |
| 23980 | (home-page "https://github.com/mk-fg/pretty-yaml") |
| 23981 | (synopsis "YAML pretty-print library for Python") |
| 23982 | (description |
| 23983 | "pyaml is a PyYAML based python module to produce pretty and readable |
| 23984 | YAML-serialized data.") |
| 23985 | (license license:wtfpl2))) |
| 23986 | |
| 23987 | (define-public python-pyyaml-env-tag |
| 23988 | (package |
| 23989 | (name "python-pyyaml-env-tag") |
| 23990 | (version "1.1") |
| 23991 | (source |
| 23992 | (origin |
| 23993 | (method git-fetch) |
| 23994 | (uri (git-reference |
| 23995 | (url "https://github.com/waylan/pyyaml-env-tag") |
| 23996 | (commit version))) |
| 23997 | (file-name (git-file-name name version)) |
| 23998 | (sha256 |
| 23999 | (base32 "16zkwmnlzzsdlxs9ww3b51mcarni2ykmi0v7752l7j4najxw875n")))) |
| 24000 | (build-system pyproject-build-system) |
| 24001 | (native-inputs (list python-pytest python-setuptools)) |
| 24002 | (propagated-inputs (list python-pyyaml)) |
| 24003 | (home-page "https://github.com/waylan/pyyaml-env-tag") |
| 24004 | (synopsis "Custom YAML tag for environment variables") |
| 24005 | (description |
| 24006 | "This package provides a custom YAML tag for referencing environment |
| 24007 | variables in YAML files.") |
| 24008 | (license license:expat))) |
| 24009 | |
| 24010 | (define-public python-prompt-toolkit |
| 24011 | (package |
| 24012 | (name "python-prompt-toolkit") |
| 24013 | (version "3.0.51") |
| 24014 | (source |
| 24015 | (origin |
| 24016 | (method url-fetch) |
| 24017 | (uri (pypi-uri "prompt_toolkit" version)) |
| 24018 | (sha256 |
| 24019 | (base32 "1valgcf324yy0sf7rrbm2ivc4a65n8gvnj0vdz491z177cp1c6lk")))) |
| 24020 | (build-system pyproject-build-system) |
| 24021 | (arguments |
| 24022 | (list |
| 24023 | #:phases |
| 24024 | #~(modify-phases %standard-phases |
| 24025 | (add-before 'check 'pre-check |
| 24026 | (lambda _ |
| 24027 | ;; HOME is needed for the test |
| 24028 | ;; "test_pathcompleter_can_expanduser". |
| 24029 | (setenv "HOME" "/tmp")))))) |
| 24030 | (native-inputs |
| 24031 | (list python-pytest |
| 24032 | python-setuptools)) |
| 24033 | (propagated-inputs |
| 24034 | (list python-wcwidth)) |
| 24035 | (home-page "https://github.com/prompt-toolkit/python-prompt-toolkit") |
| 24036 | (synopsis "Library for building command line interfaces in Python") |
| 24037 | (description |
| 24038 | "Prompt-Toolkit is a library for building interactive command line |
| 24039 | interfaces in Python. It's like GNU Readline but it also features syntax |
| 24040 | highlighting while typing, out-of-the-box multi-line input editing, advanced |
| 24041 | code completion, incremental search, support for Chinese double-width |
| 24042 | characters, mouse support, and auto suggestions.") |
| 24043 | (license license:bsd-3))) |
| 24044 | |
| 24045 | (define-public python-proselint |
| 24046 | (package |
| 24047 | (name "python-proselint") |
| 24048 | (version "0.14.0") |
| 24049 | (source |
| 24050 | (origin |
| 24051 | (method url-fetch) |
| 24052 | (uri (pypi-uri "proselint" version)) |
| 24053 | (sha256 |
| 24054 | (base32 "11hfd207bhsvb0iznlnbr0w7jxihvn3ismpjbmz7c57a5ckn8jb2")))) |
| 24055 | (build-system pyproject-build-system) |
| 24056 | (arguments |
| 24057 | (list |
| 24058 | #:phases |
| 24059 | #~(modify-phases %standard-phases |
| 24060 | (add-after 'unpack 'set-home-directory |
| 24061 | (lambda _ |
| 24062 | (setenv "HOME" "/tmp")))))) |
| 24063 | (native-inputs |
| 24064 | (list python-poetry-core |
| 24065 | python-pytest)) |
| 24066 | (propagated-inputs |
| 24067 | (list python-click)) |
| 24068 | (home-page "http://proselint.com/") |
| 24069 | (synopsis "Linter for prose") |
| 24070 | (description "@code{python-proselint} is a linter for English prose, that |
| 24071 | scans through a file and detects issues.") |
| 24072 | (license license:bsd-3))) |
| 24073 | |
| 24074 | (define-public python-jedi |
| 24075 | (package |
| 24076 | (name "python-jedi") |
| 24077 | (version "0.19.2") |
| 24078 | (source |
| 24079 | (origin |
| 24080 | (method git-fetch) |
| 24081 | (uri (git-reference |
| 24082 | (url "https://github.com/davidhalter/jedi") |
| 24083 | (commit (string-append "v" version)) |
| 24084 | (recursive? #true))) |
| 24085 | (file-name (git-file-name name version)) |
| 24086 | (sha256 |
| 24087 | (base32 |
| 24088 | "0w8rrw6s4bzr5csds8bhasrmzh9q77zh5dzisjysl8cb5qjx0w6s")))) |
| 24089 | (build-system pyproject-build-system) |
| 24090 | (arguments |
| 24091 | (list |
| 24092 | #:phases |
| 24093 | '(modify-phases %standard-phases |
| 24094 | (add-before 'check 'set-HOME |
| 24095 | (lambda _ (setenv "HOME" "/tmp")))))) |
| 24096 | (native-inputs |
| 24097 | (list python-docopt |
| 24098 | python-pytest |
| 24099 | python-setuptools |
| 24100 | python-wheel)) |
| 24101 | (propagated-inputs |
| 24102 | (list python-parso)) |
| 24103 | (home-page "https://github.com/davidhalter/jedi") |
| 24104 | (synopsis "Autocompletion and static analysis library for Python") |
| 24105 | (description |
| 24106 | "Jedi is a static analysis tool for Python that can be used in Integrated |
| 24107 | Development Environments (@dfn{IDE}s) and text editors. It understands Python |
| 24108 | on a deeper level than many other static analysis frameworks for Python. |
| 24109 | |
| 24110 | Jedi understands docstrings and you can use Jedi autocompletion in your REPL |
| 24111 | as well.") |
| 24112 | (license license:expat))) |
| 24113 | |
| 24114 | (define-public ptpython |
| 24115 | (package |
| 24116 | (name "ptpython") |
| 24117 | (version "3.0.20") |
| 24118 | (source |
| 24119 | (origin |
| 24120 | (method git-fetch) |
| 24121 | (uri (git-reference |
| 24122 | (url "https://github.com/jonathanslenders/ptpython") |
| 24123 | (commit version))) |
| 24124 | (file-name (git-file-name name version)) |
| 24125 | (sha256 |
| 24126 | (base32 "0qbj7d4qkzl8l05kpmm19953lmqk379i17ab8g3sfnmfpsy3ji5m")))) |
| 24127 | (build-system pyproject-build-system) |
| 24128 | (arguments |
| 24129 | (list |
| 24130 | ;; XXX: There is a tests/run_tests.py file but all it does is a |
| 24131 | ;; sanity check. |
| 24132 | #:tests? #f)) |
| 24133 | (native-inputs (list python-setuptools)) |
| 24134 | (propagated-inputs |
| 24135 | (list python-appdirs python-jedi python-prompt-toolkit python-pygments)) |
| 24136 | (home-page "https://github.com/jonathanslenders/ptpython") |
| 24137 | (synopsis "Python Read-Eval-Print-Loop with nice IDE-like features") |
| 24138 | (description |
| 24139 | "ptpython is a Python read-eval-print loop with IDE-like features. |
| 24140 | It supports syntax highlighting, multiline editing, autocompletion, mouse, |
| 24141 | color schemes, bracketed paste, Vi and Emacs keybindings, Chinese characters |
| 24142 | etc.") |
| 24143 | (license license:bsd-3))) |
| 24144 | |
| 24145 | (define-public python-easyprocess |
| 24146 | (package |
| 24147 | (name "python-easyprocess") |
| 24148 | (version "1.1") |
| 24149 | (source |
| 24150 | (origin |
| 24151 | (method git-fetch) |
| 24152 | (uri (git-reference |
| 24153 | (url "https://github.com/ponty/easyprocess") |
| 24154 | (commit version))) |
| 24155 | (file-name (git-file-name name version)) |
| 24156 | (sha256 |
| 24157 | (base32 "1dysr0z2mijhxl4z86wxf4w94sszdm4i2w3id0a6qwyid6xqjksp")))) |
| 24158 | (build-system pyproject-build-system) |
| 24159 | (arguments |
| 24160 | ;; Tests require pyvirtualdisplay, which requires this package. |
| 24161 | (list #:tests? #f)) |
| 24162 | (native-inputs (list python-setuptools)) |
| 24163 | (home-page "https://github.com/ponty/easyprocess") |
| 24164 | (synopsis "Python subprocess interface") |
| 24165 | (description |
| 24166 | "@code{easyprocess} is an easy to use Python subprocess interface.") |
| 24167 | (license license:bsd-3))) |
| 24168 | |
| 24169 | (define-public python-entrypoint2 |
| 24170 | (package |
| 24171 | (name "python-entrypoint2") |
| 24172 | (version "0.2.4") |
| 24173 | (source |
| 24174 | (origin |
| 24175 | (method url-fetch) |
| 24176 | (uri (pypi-uri "entrypoint2" version)) |
| 24177 | (sha256 |
| 24178 | (base32 "1qyxq54r2fbh09ab5sffbxajy8arbk6czxz5lq3ccr9qrypw6w27")))) |
| 24179 | (build-system pyproject-build-system) |
| 24180 | (native-inputs (list python-easyprocess |
| 24181 | python-pytest |
| 24182 | python-setuptools |
| 24183 | python-wheel)) |
| 24184 | (home-page "https://github.com/ponty/entrypoint2") |
| 24185 | (synopsis "Command-line interface for Python modules") |
| 24186 | (description |
| 24187 | "@code{entrypoint2} is an easy to use command-line interface for Python |
| 24188 | modules based on @code{argparse}. It translates function signature and |
| 24189 | documentation to argparse configuration.") |
| 24190 | (license license:bsd-3))) |
| 24191 | |
| 24192 | (define-public python-pyvirtualdisplay |
| 24193 | (package |
| 24194 | (name "python-pyvirtualdisplay") |
| 24195 | (version "3.0") |
| 24196 | (source |
| 24197 | (origin |
| 24198 | (method url-fetch) |
| 24199 | (uri (pypi-uri "PyVirtualDisplay" version)) |
| 24200 | (sha256 |
| 24201 | (base32 "0nb1s7nilakrkcm0vq08pz9mh8rzyhjm9jkyn1gp5sxnrv1mnx89")))) |
| 24202 | (build-system pyproject-build-system) |
| 24203 | (arguments |
| 24204 | (list |
| 24205 | ;; tests: 27 passed, 8 deselected |
| 24206 | #:test-flags |
| 24207 | ;; TODO: Add libxcb to python-pillow on the next python-team cycle. |
| 24208 | ;; OSError: Pillow was built without XCB support |
| 24209 | #~(list #$@(map (lambda (test) (string-append "--deselect=" |
| 24210 | "tests/" |
| 24211 | test)) |
| 24212 | (list "test_smart.py::test_slowshot" |
| 24213 | "test_smart.py::test_slowshot_with" |
| 24214 | "test_smart.py::test_slowshot_nocrop" |
| 24215 | "test_smart.py::test_slowshot_timeout" |
| 24216 | "test_smart.py::test_slowshot_timeout_nocrop" |
| 24217 | "test_smart2.py::test_double" |
| 24218 | "test_smart_thread.py::test_smart" |
| 24219 | "test_examples.py::test_screenshot"))))) |
| 24220 | (native-inputs |
| 24221 | (list python-easyprocess |
| 24222 | python-entrypoint2 |
| 24223 | python-psutil |
| 24224 | python-pytest |
| 24225 | python-setuptools |
| 24226 | python-vncdotool-bootstrap |
| 24227 | xmessage |
| 24228 | xorg-server-for-tests)) |
| 24229 | (home-page "https://github.com/ponty/pyvirtualdisplay") |
| 24230 | (synopsis "Python wrapper for Xvfb, Xephyr and Xvnc") |
| 24231 | (description |
| 24232 | "@code{pyvirtualdisplay} is a Python wrapper for Xvfb, Xephyr and Xvnc.") |
| 24233 | (license license:bsd-3))) |
| 24234 | |
| 24235 | (define-public python-pyserial |
| 24236 | (package |
| 24237 | (name "python-pyserial") |
| 24238 | ;; 3.5 (2020-11-23), use the latest commit as upstream stopped publishing |
| 24239 | ;; releases on PyPI or tagging new versions. |
| 24240 | (properties '((commit . "a5c48d445fbc1943d4fabf8d9090a50fda3172fd") |
| 24241 | (revision . "0"))) |
| 24242 | (version (git-version "3.5" |
| 24243 | (assoc-ref properties 'revision) |
| 24244 | (assoc-ref properties 'commit))) |
| 24245 | (source |
| 24246 | (origin |
| 24247 | (method git-fetch) |
| 24248 | (uri (git-reference |
| 24249 | (url "https://github.com/pyserial/pyserial") |
| 24250 | (commit (assoc-ref properties 'commit)))) |
| 24251 | (file-name (git-file-name name version)) |
| 24252 | (sha256 |
| 24253 | (base32 "1mfqs5g4qgp6lll859hy3i4gz7nn95g057s80k01jn2mza12swjp")))) |
| 24254 | (build-system pyproject-build-system) |
| 24255 | (native-inputs |
| 24256 | (list python-pyfakefs |
| 24257 | python-pytest |
| 24258 | python-setuptools)) |
| 24259 | (home-page "https://github.com/pyserial/pyserial") |
| 24260 | (synopsis "Python Serial Port Bindings") |
| 24261 | (description |
| 24262 | "@code{pyserial} provide serial port bindings for Python. It supports |
| 24263 | different byte sizes, stop bits, parity and flow control with RTS/CTS and/or |
| 24264 | Xon/Xoff. The port is accessed in RAW mode.") |
| 24265 | (license license:bsd-3))) |
| 24266 | |
| 24267 | (define-public python-pyserial-asyncio |
| 24268 | (package |
| 24269 | (name "python-pyserial-asyncio") |
| 24270 | (version "0.6") |
| 24271 | (source |
| 24272 | (origin |
| 24273 | (method git-fetch) |
| 24274 | (uri (git-reference |
| 24275 | (url "https://github.com/pyserial/pyserial-asyncio") |
| 24276 | (commit (string-append "v" version)))) |
| 24277 | (file-name (git-file-name name version)) |
| 24278 | (sha256 |
| 24279 | (base32 "0c8kzy2a4awsh580qrniwq0vyydlsvicjw79r270sqflxmjlns6n")))) |
| 24280 | (build-system pyproject-build-system) |
| 24281 | (arguments (list #:test-backend #~'unittest)) |
| 24282 | (native-inputs (list python-setuptools)) |
| 24283 | (propagated-inputs (list python-pyserial)) |
| 24284 | (home-page "https://github.com/pyserial/pyserial-asyncio") |
| 24285 | (synopsis "Pyserial asynchronous I/O extension") |
| 24286 | (description |
| 24287 | "This package extends Pyserial with asynchronous I/O support.") |
| 24288 | (license license:bsd-3))) |
| 24289 | |
| 24290 | (define-public python-pymemcache |
| 24291 | (package |
| 24292 | (name "python-pymemcache") |
| 24293 | (version "4.0.0") |
| 24294 | (source |
| 24295 | (origin |
| 24296 | (method url-fetch) |
| 24297 | (uri (pypi-uri "pymemcache" version)) |
| 24298 | (sha256 |
| 24299 | (base32 "157z9blr8pjg9x84jph5hm0z2l6yaq6n421jcf1hzqn1pg8rpgr7")))) |
| 24300 | (build-system pyproject-build-system) |
| 24301 | (arguments |
| 24302 | ;; We don't have the zstd module. |
| 24303 | (list |
| 24304 | #:test-flags |
| 24305 | '(list "--ignore=pymemcache/test/test_compression.py"))) |
| 24306 | (native-inputs |
| 24307 | (list python-faker |
| 24308 | python-pytest |
| 24309 | python-setuptools |
| 24310 | python-wheel)) |
| 24311 | (home-page "https://github.com/pinterest/pymemcache") |
| 24312 | (synopsis "Comprehensive, fast, pure Python memcached client") |
| 24313 | (description |
| 24314 | "This package provides a comprehensive, fast, pure Python memcached |
| 24315 | client.") |
| 24316 | (license license:asl2.0))) |
| 24317 | |
| 24318 | (define-public python-pymodbus |
| 24319 | (package |
| 24320 | (name "python-pymodbus") |
| 24321 | (version "3.8.6") |
| 24322 | (source |
| 24323 | (origin |
| 24324 | (method git-fetch) |
| 24325 | (uri (git-reference |
| 24326 | (url "https://github.com/riptideio/pymodbus") |
| 24327 | (commit (string-append "v" version)))) |
| 24328 | (file-name (git-file-name name version)) |
| 24329 | (sha256 |
| 24330 | (base32 "1sncllh01c6vqq4fh9k3yg9fchmmw661rcp0066l7fis6sp4yw82")))) |
| 24331 | (build-system pyproject-build-system) |
| 24332 | (arguments |
| 24333 | (list |
| 24334 | #:test-flags |
| 24335 | #~(list "--ignore" |
| 24336 | "test/server/test_simulator_api.py" |
| 24337 | ;; These tests require the presence of a certificate. |
| 24338 | "--ignore-glob" |
| 24339 | "test/examples/*" |
| 24340 | "--ignore" |
| 24341 | "test/client/test_client.py"))) |
| 24342 | (native-inputs (list python-mock |
| 24343 | python-pytest |
| 24344 | python-pytest-asyncio |
| 24345 | python-pytest-xdist |
| 24346 | python-redis |
| 24347 | python-setuptools |
| 24348 | python-sqlalchemy |
| 24349 | python-tornado |
| 24350 | python-twisted |
| 24351 | python-wheel)) |
| 24352 | (propagated-inputs (list python-pyserial |
| 24353 | python-six |
| 24354 | ;; For the REPL. |
| 24355 | python-aiohttp |
| 24356 | python-click |
| 24357 | python-prompt-toolkit |
| 24358 | python-pygments |
| 24359 | python-pyserial-asyncio)) |
| 24360 | (home-page "https://github.com/riptideio/pymodbus/") |
| 24361 | (synopsis "Modbus protocol stack in Python") |
| 24362 | (description |
| 24363 | "Pymodbus is a full Modbus protocol implementation using |
| 24364 | @code{asyncio}, @code{tornado} or @code{twisted} for its asynchronous |
| 24365 | communications core. It includes the following @emph{client} features: |
| 24366 | @itemize |
| 24367 | @item full read/write protocol on discrete and register |
| 24368 | @item most of the extended protocol (diagnostic/file/pipe/setting/information) |
| 24369 | @item TCP, UDP, Serial ASCII, Serial RTU, and Serial Binary |
| 24370 | @item asynchronous and synchronous versions |
| 24371 | @item payload builder/decoder utilities |
| 24372 | @item pymodbus read eval print loop (REPL). |
| 24373 | @end itemize |
| 24374 | It also includes the following @emph{server} features: |
| 24375 | @itemize |
| 24376 | @item can function as a fully implemented Modbus server |
| 24377 | @item TCP, UDP, Serial ASCII, Serial RTU, and Serial Binary |
| 24378 | @item asynchronous and synchronous versions |
| 24379 | @item full server control context (device information, counters, etc) |
| 24380 | @item a number of backing contexts (database, redis, sqlite, a slave device). |
| 24381 | @end itemize") |
| 24382 | (license license:bsd-3))) |
| 24383 | |
| 24384 | (define-public python-exodriver |
| 24385 | (package |
| 24386 | (name "python-exodriver") |
| 24387 | (version "2.6.0") |
| 24388 | (source (origin |
| 24389 | (method git-fetch) |
| 24390 | (uri (git-reference |
| 24391 | (url "https://github.com/labjack/exodriver") |
| 24392 | (commit (string-append "v" version)))) |
| 24393 | (file-name (git-file-name name version)) |
| 24394 | (sha256 |
| 24395 | (base32 |
| 24396 | "1ikjz8147p14s814yabdq821y691klnr2yg54zgsymcc97kvwp2q")))) |
| 24397 | (outputs (list "out" |
| 24398 | "doc")) ;544 KiB of examples |
| 24399 | (build-system gnu-build-system) |
| 24400 | (arguments |
| 24401 | (list |
| 24402 | #:tests? #f ;no test suite |
| 24403 | #:make-flags #~(list (string-append "CC=" #$(cc-for-target)) |
| 24404 | (string-append "PREFIX=" #$output) |
| 24405 | "RUN_LDCONFIG=0" |
| 24406 | "LINK_SO=1") |
| 24407 | #:phases |
| 24408 | #~(modify-phases %standard-phases |
| 24409 | (delete 'configure) |
| 24410 | (replace 'build |
| 24411 | (lambda* (#:key make-flags #:allow-other-keys #:rest args) |
| 24412 | (with-directory-excursion "liblabjackusb" |
| 24413 | (apply (assoc-ref %standard-phases 'build) |
| 24414 | `(,@args #:make-flags ,make-flags))))) |
| 24415 | (replace 'install |
| 24416 | (lambda* (#:key make-flags #:allow-other-keys #:rest args) |
| 24417 | (with-directory-excursion "liblabjackusb" |
| 24418 | (apply (assoc-ref %standard-phases 'install) |
| 24419 | `(,@args #:make-flags ,make-flags))) |
| 24420 | ;; Install udev rules. |
| 24421 | (install-file "90-labjack.rules" |
| 24422 | (string-append #$output "/lib/udev/rules.d")) |
| 24423 | ;; Install examples. |
| 24424 | (let ((doc (string-append #$output:doc "/share/doc/" #$name))) |
| 24425 | (mkdir-p doc) |
| 24426 | (copy-recursively "examples" |
| 24427 | (string-append doc "/examples")))))))) |
| 24428 | (inputs (list libusb)) |
| 24429 | (home-page "https://github.com/labjack/exodriver") |
| 24430 | (synopsis "USB driver for LabJack data acquisition instruments") |
| 24431 | (description "This package provides @code{liblabjackusb}, a USB library for low-level |
| 24432 | communication with the U3, U6, UE9, Digit, T4 and T7 LabJack data acquisition |
| 24433 | instruments. A udev rule is also included to allow unprivileged users to |
| 24434 | communicate with the instruments via USB.") |
| 24435 | (license license:expat))) ;see README |
| 24436 | |
| 24437 | (define-public python-labjack |
| 24438 | (package |
| 24439 | (name "python-labjack") |
| 24440 | (version "2.1.0") |
| 24441 | (source (origin |
| 24442 | (method url-fetch) |
| 24443 | (uri (pypi-uri "LabJackPython" version)) |
| 24444 | (sha256 |
| 24445 | (base32 |
| 24446 | "0q516y0gzxlk298whiaw0qdi4jcmx7l5y3mp5g5lj68nrvhqzyy4")))) |
| 24447 | (build-system pyproject-build-system) |
| 24448 | (arguments |
| 24449 | (list |
| 24450 | #:tests? #f ;no test suite |
| 24451 | #:phases |
| 24452 | #~(modify-phases %standard-phases |
| 24453 | (add-after 'unpack 'patch-liblabjackusb.so |
| 24454 | (lambda* (#:key inputs #:allow-other-keys) |
| 24455 | (substitute* (find-files "." "\\.py$") |
| 24456 | (("ctypes.CDLL\\(\"liblabjackusb.so\"") |
| 24457 | (format #f "ctypes.CDLL(~s" |
| 24458 | (search-input-file inputs |
| 24459 | "lib/liblabjackusb.so"))))))))) |
| 24460 | (native-inputs (list python-setuptools)) |
| 24461 | ;; exodriver is provided as a regular input, as only its shared object is |
| 24462 | ;; used, not its Python API. |
| 24463 | (inputs (list python-exodriver)) |
| 24464 | (home-page "https://labjack.com/support/software/examples/ud/labjackpython") |
| 24465 | (synopsis "Python library for LabJack U3, U6, UE9 and U12") |
| 24466 | (description |
| 24467 | "This Python library allows communicating with the U3, U6, UE9 and U12 |
| 24468 | LabJack data acquisition (DAQ) modules.") |
| 24469 | (license license:expat))) ;see setup.py |
| 24470 | |
| 24471 | (define-public python-kivy-garden |
| 24472 | (package |
| 24473 | (name "python-kivy-garden") |
| 24474 | (version "0.1.5") |
| 24475 | (source |
| 24476 | (origin |
| 24477 | (method git-fetch) ; source was removed from PyPI |
| 24478 | (uri (git-reference |
| 24479 | (url "https://github.com/kivy-garden/garden") |
| 24480 | (commit (string-append "v" version)))) |
| 24481 | (file-name (git-file-name name version)) |
| 24482 | (sha256 |
| 24483 | (base32 "1pvjblaljrcmjkq6hsa89zkh9ggdval58d2lwzd69vlma8y03qy4")))) |
| 24484 | (build-system pyproject-build-system) |
| 24485 | (arguments |
| 24486 | (list |
| 24487 | #:tests? #f)) ; no tests in PyPI or Git distributions |
| 24488 | (native-inputs |
| 24489 | (list python-setuptools |
| 24490 | python-wheel)) |
| 24491 | (propagated-inputs |
| 24492 | (list python-requests)) |
| 24493 | (home-page "https://github.com/kivy-garden/garden") |
| 24494 | (synopsis "Garden tool for Kivy flowers") |
| 24495 | (description |
| 24496 | "This package provides the @command{garden} command to install packages |
| 24497 | for Kivy, the multitouch application platform.") |
| 24498 | (license license:expat))) |
| 24499 | |
| 24500 | (define-public python-async-lru |
| 24501 | (package |
| 24502 | (name "python-async-lru") |
| 24503 | (version "2.0.4") |
| 24504 | (source |
| 24505 | (origin |
| 24506 | (method url-fetch) |
| 24507 | (uri (pypi-uri "async-lru" version)) |
| 24508 | (sha256 |
| 24509 | (base32 "09sn3bc3gc2flijm9k8kn4hmbnlkaddhqahb49izy188yrfrm9dq")))) |
| 24510 | (build-system pyproject-build-system) |
| 24511 | (native-inputs |
| 24512 | (list python-pytest |
| 24513 | python-pytest-asyncio |
| 24514 | python-pytest-timeout |
| 24515 | python-setuptools |
| 24516 | python-wheel)) |
| 24517 | (propagated-inputs |
| 24518 | (list python-typing-extensions)) |
| 24519 | (home-page "https://github.com/aio-libs/async-lru") |
| 24520 | (synopsis "Simple LRU cache for asyncio") |
| 24521 | (description |
| 24522 | "This package is a port of Python's built-in @code{functools.lru_cache} |
| 24523 | function for @code{asyncio}. To better handle async behaviour, it also |
| 24524 | ensures multiple concurrent calls will only result in 1 call to the wrapped |
| 24525 | function, with all awaits receiving the result of that call when it |
| 24526 | completes.") |
| 24527 | (license license:expat))) |
| 24528 | |
| 24529 | (define-public python-asyncinject |
| 24530 | (package |
| 24531 | (name "python-asyncinject") |
| 24532 | (version "0.6.1") |
| 24533 | (source |
| 24534 | (origin |
| 24535 | (method git-fetch) |
| 24536 | (uri (git-reference |
| 24537 | (url "https://github.com/simonw/asyncinject") |
| 24538 | (commit version))) |
| 24539 | (file-name (git-file-name name version)) |
| 24540 | (sha256 |
| 24541 | (base32 "127ahb32x2qqjk17a667adrvrl63ima8khifq6dfm0q3vlfslxnn")))) |
| 24542 | (build-system pyproject-build-system) |
| 24543 | (native-inputs |
| 24544 | (list python-pytest |
| 24545 | python-pytest-asyncio |
| 24546 | python-setuptools)) |
| 24547 | (home-page "https://github.com/simonw/asyncinject") |
| 24548 | (synopsis |
| 24549 | "Run async workflows using pytest-fixtures-style dependency injection") |
| 24550 | (description |
| 24551 | "This package lets you run asynchronous workflows using |
| 24552 | pytest-fixtures-style dependency injection.") |
| 24553 | (license license:asl2.0))) |
| 24554 | |
| 24555 | (define-public python-binaryornot |
| 24556 | (package |
| 24557 | (name "python-binaryornot") |
| 24558 | (version "0.6.0") |
| 24559 | (source |
| 24560 | (origin |
| 24561 | (method git-fetch) |
| 24562 | (uri (git-reference |
| 24563 | (url "https://github.com/audreyr/binaryornot") |
| 24564 | (commit (string-append "v" version)))) |
| 24565 | (file-name (git-file-name name version)) |
| 24566 | (sha256 |
| 24567 | (base32 "008r45bbhax8flcc0cp5fm2p9niclf0kg773s2y2p1x1j5qjx1jb")))) |
| 24568 | (build-system pyproject-build-system) |
| 24569 | (arguments |
| 24570 | (list |
| 24571 | #:test-flags |
| 24572 | ;; FileNotFoundError: [Errno 2] No such file or directory: 'uv' |
| 24573 | #~(list (string-append "--deselect=tests/test_sdist.py" |
| 24574 | "::TestSdistContents" |
| 24575 | "::test_sdist_includes_pyc_fixtures")))) |
| 24576 | (native-inputs |
| 24577 | (list python-hatchling |
| 24578 | python-pytest)) |
| 24579 | (home-page "https://github.com/audreyr/binaryornot") |
| 24580 | (synopsis "Package to check if a file is binary or text") |
| 24581 | (description "Ultra-lightweight pure Python package to check if a file is |
| 24582 | binary or text.") |
| 24583 | (license license:bsd-3))) |
| 24584 | |
| 24585 | (define-public python-bson |
| 24586 | (package |
| 24587 | (name "python-bson") |
| 24588 | (properties '((commit . "4e6b4c206f7204034ef74bff8ae84a95d76d1684") |
| 24589 | (revision . "0"))) |
| 24590 | (version (git-version "0.5.10" |
| 24591 | (assoc-ref properties 'revision) |
| 24592 | (assoc-ref properties 'commit))) |
| 24593 | (source |
| 24594 | (origin |
| 24595 | (method git-fetch) ;for tests |
| 24596 | (uri (git-reference |
| 24597 | (url "https://github.com/py-bson/bson") |
| 24598 | (commit (assoc-ref properties 'commit)))) |
| 24599 | (file-name (git-file-name name version)) |
| 24600 | (sha256 |
| 24601 | (base32 |
| 24602 | "015db9gfqcirv3zjscvh5hyfw8cixjsbvfxaqdzji863vrvl5ns8")))) |
| 24603 | (build-system pyproject-build-system) |
| 24604 | (native-inputs |
| 24605 | (list python-pytest |
| 24606 | python-setuptools)) |
| 24607 | (propagated-inputs |
| 24608 | (list python-dateutil |
| 24609 | python-six)) |
| 24610 | (home-page "https://github.com/py-bson/bson") |
| 24611 | (synopsis "BSON (Binary JSON) codec for Python") |
| 24612 | (description "@code{bson} is a Python library implementing a BSON (Binary |
| 24613 | JSON) codec.") |
| 24614 | (license license:asl2.0))) |
| 24615 | |
| 24616 | (define-public python-nltk |
| 24617 | (package |
| 24618 | (name "python-nltk") |
| 24619 | (version "3.9.1") |
| 24620 | (source |
| 24621 | (origin |
| 24622 | (method url-fetch) |
| 24623 | (uri (pypi-uri "nltk" version)) |
| 24624 | (sha256 |
| 24625 | (base32 "0s78gayd45vl1wvpa0a44ydij6ybb7xfar8jz2j8kgg47nyjglc7")))) |
| 24626 | (build-system pyproject-build-system) |
| 24627 | (arguments |
| 24628 | ;; Tests require some extra resources to be downloaded. |
| 24629 | ;; TODO Try packaging these resources. |
| 24630 | '(#:tests? #f)) |
| 24631 | (propagated-inputs (list python-click python-joblib python-regex |
| 24632 | python-tqdm)) |
| 24633 | (native-inputs (list python-setuptools python-wheel)) |
| 24634 | (home-page "https://www.nltk.org/") |
| 24635 | (synopsis "Natural Language Toolkit") |
| 24636 | (description |
| 24637 | "NLTK provides interfaces to over 50 corpora and lexical resources such as |
| 24638 | WordNet, along with a suite of text processing libraries for classification, |
| 24639 | tokenization, stemming, tagging, parsing, and semantic reasoning, wrappers for |
| 24640 | natural language processing libraries.") |
| 24641 | (license license:asl2.0))) |
| 24642 | |
| 24643 | (define-public python-pymongo |
| 24644 | (package |
| 24645 | (name "python-pymongo") |
| 24646 | (version "4.17.0") |
| 24647 | (source |
| 24648 | (origin |
| 24649 | (method git-fetch) |
| 24650 | (uri (git-reference |
| 24651 | (url "https://github.com/mongodb/mongo-python-driver") |
| 24652 | (commit version))) |
| 24653 | (file-name (git-file-name name version)) |
| 24654 | (sha256 |
| 24655 | (base32 "0ybp4klx2advd0aka4d0915vwvydid3cil16x497amc4wiigndhx")))) |
| 24656 | (build-system pyproject-build-system) |
| 24657 | (arguments |
| 24658 | (list |
| 24659 | ;; tests: 1354 passed, 6514 skipped, 838 deselected, 38 subtests passed |
| 24660 | #:test-flags |
| 24661 | #~(list |
| 24662 | ;; pytest.PytestDeprecationWarning: Overriding the |
| 24663 | ;; "event_loop_policy" fixture is deprecated and will be removed in a |
| 24664 | ;; future version of pytest-asyncio. Use the |
| 24665 | ;; "pytest_asyncio_loop_factories" hook to customize event loop |
| 24666 | ;; creation. |
| 24667 | "-W" "ignore::DeprecationWarning" |
| 24668 | ;; Run only default unit tests, no benchmark and networking tests. |
| 24669 | "-m" "default_async or default" |
| 24670 | ;; Tests need access to /etc/resolve.conf. |
| 24671 | "--ignore=test/asynchronous/test_srv_polling.py" |
| 24672 | "--ignore=test/test_client.py" |
| 24673 | "--ignore=test/test_srv_polling.py" |
| 24674 | ;; XXX: Tests fail with assertion is not equal. |
| 24675 | "-k" "not test_test_uri_options_srv-options_SRV_URI"))) |
| 24676 | (native-inputs |
| 24677 | (list python-hatch-requirements-txt |
| 24678 | python-hatchling |
| 24679 | python-pytest |
| 24680 | python-pytest-asyncio |
| 24681 | python-setuptools)) |
| 24682 | (propagated-inputs |
| 24683 | (list python-dnspython)) |
| 24684 | (home-page "https://github.com/mongodb/mongo-python-driver") |
| 24685 | (synopsis "Python driver for MongoDB") |
| 24686 | (description |
| 24687 | "The PyMongo distribution contains tools for interacting with MongoDB |
| 24688 | database from Python. The @code{bson} package is an implementation of the |
| 24689 | @url{http://bsonspec.org/, BSON format} for Python. The @code{pymongo} |
| 24690 | package is a native Python driver for MongoDB, offering both synchronous and |
| 24691 | asynchronous APIs. The @code{gridfs} package is a gridfs implementation on |
| 24692 | top of @code{pymongo}.") |
| 24693 | (license license:asl2.0))) |
| 24694 | |
| 24695 | (define-public python-py-consul |
| 24696 | (package |
| 24697 | (name "python-py-consul") |
| 24698 | (version "1.6.0") |
| 24699 | (source |
| 24700 | (origin |
| 24701 | (method git-fetch) |
| 24702 | (uri (git-reference |
| 24703 | ;; Fork from https://github.com/cablehead/python-consul |
| 24704 | (url "https://github.com/criteo/py-consul") |
| 24705 | (commit (string-append "v" version)))) |
| 24706 | (file-name (git-file-name name version)) |
| 24707 | (sha256 |
| 24708 | (base32 "0jx0sx572akir5ks30d1hvxwmy2apc51idm5k73dfp9biyjhbllh")))) |
| 24709 | (build-system pyproject-build-system) |
| 24710 | (arguments (list #:tests? #f)) ; Tests require docker. |
| 24711 | (native-inputs (list python-setuptools)) |
| 24712 | (propagated-inputs (list python-requests)) |
| 24713 | (home-page "https://github.com/criteo/py-consul") |
| 24714 | (synopsis "Python client for Consul") |
| 24715 | (description |
| 24716 | "Python client for @url{http://www.consul.io/,Consul}, a tool for service |
| 24717 | discovery, monitoring and configuration.") |
| 24718 | (license license:expat))) |
| 24719 | |
| 24720 | (define-public python-schematics |
| 24721 | (package |
| 24722 | (name "python-schematics") |
| 24723 | (version "2.1.1") |
| 24724 | (source |
| 24725 | (origin |
| 24726 | (method git-fetch) |
| 24727 | (uri (git-reference |
| 24728 | (url "https://github.com/schematics/schematics") |
| 24729 | (commit (string-append "v" version)))) |
| 24730 | (file-name (git-file-name name version)) |
| 24731 | (sha256 |
| 24732 | (base32 "0nf14wy422f08zzxx4jv8kbym3asgfpjm7b2p51b8hgqgxqlmjcd")))) |
| 24733 | (build-system pyproject-build-system) |
| 24734 | (native-inputs |
| 24735 | (list python-dateutil python-mock python-pytest python-setuptools)) |
| 24736 | (home-page "https://github.com/schematics/schematics") |
| 24737 | (synopsis "Python Data Structures for Humans") |
| 24738 | (description |
| 24739 | "Schematics is a Python library to combine types into structures, |
| 24740 | validate them, and transform the shapes of your data based on simple |
| 24741 | descriptions. |
| 24742 | |
| 24743 | The internals are similar to ORM type systems, but there is no database layer |
| 24744 | in Schematics. Instead, building a database layer is easily made when |
| 24745 | Schematics handles everything except for writing the query. Schematics can be |
| 24746 | used for tasks where having a database involved is unusual.") |
| 24747 | (license license:bsd-3))) |
| 24748 | |
| 24749 | (define-public python-odfpy |
| 24750 | (package |
| 24751 | (name "python-odfpy") |
| 24752 | (version "1.4.2") |
| 24753 | (source |
| 24754 | (origin |
| 24755 | (method git-fetch) |
| 24756 | (uri (git-reference |
| 24757 | (url "https://github.com/eea/odfpy") |
| 24758 | (commit (string-append "release-" version)))) |
| 24759 | (file-name (git-file-name name version)) |
| 24760 | (sha256 |
| 24761 | (base32 "15y0fvkk8akgx30dxld7mdqhdrrkwr16jy1q0znkzvwcgmpywrf4")))) |
| 24762 | (build-system pyproject-build-system) |
| 24763 | (native-inputs (list python-pytest python-setuptools)) |
| 24764 | (propagated-inputs (list python-defusedxml)) |
| 24765 | (home-page "https://github.com/eea/odfpy") |
| 24766 | (synopsis "Python API and tools to manipulate OpenDocument files") |
| 24767 | (description |
| 24768 | "Collection of libraries and utility programs written in Python to |
| 24769 | manipulate OpenDocument 1.2 files.") |
| 24770 | (license |
| 24771 | ;; The software is mainly dual GPL2+ and ASL2.0, but includes a |
| 24772 | ;; number of files with other licenses. |
| 24773 | (list license:gpl2+ license:asl2.0 license:lgpl2.1+ license:cc-by-sa3.0)))) |
| 24774 | |
| 24775 | (define-public python-namex |
| 24776 | (package |
| 24777 | (name "python-namex") |
| 24778 | (version "0.0.7") |
| 24779 | (source |
| 24780 | (origin |
| 24781 | (method url-fetch) |
| 24782 | (uri (pypi-uri "namex" version)) |
| 24783 | (sha256 |
| 24784 | (base32 "16ynrq245c3nywv476izrc4bcacm9gxjzgr67ng91g929ny6bfl4")))) |
| 24785 | (build-system pyproject-build-system) |
| 24786 | (arguments (list #:tests? #false)) ;there are none |
| 24787 | (native-inputs (list python-setuptools python-wheel)) |
| 24788 | (home-page "https://github.com/fchollet/namex") |
| 24789 | (synopsis |
| 24790 | "Separate implementation and public API surface of Python packages") |
| 24791 | (description |
| 24792 | "This package provides a simple utility to separate the |
| 24793 | implementation of your Python package and its public API surface.") |
| 24794 | (license license:asl2.0))) |
| 24795 | |
| 24796 | (define-public python-natsort |
| 24797 | (package |
| 24798 | (name "python-natsort") |
| 24799 | (version "8.4.0") |
| 24800 | (source |
| 24801 | (origin |
| 24802 | (method url-fetch) |
| 24803 | (uri (pypi-uri "natsort" version)) |
| 24804 | (sha256 |
| 24805 | (base32 "10d53q50zn2s8iiszv01nr9r4imimc2dvplkl4ymj1sm1r52qca5")))) |
| 24806 | (build-system pyproject-build-system) |
| 24807 | (native-inputs |
| 24808 | (list glibc-utf8-locales ;; Tests want en_US.UTF-8 |
| 24809 | python-pytest |
| 24810 | python-pytest-mock |
| 24811 | python-setuptools)) |
| 24812 | (propagated-inputs |
| 24813 | (list python-fastnumbers |
| 24814 | python-pyicu)) |
| 24815 | (home-page "https://github.com/SethMMorton/natsort") |
| 24816 | (synopsis "Natural sorting for python and shell") |
| 24817 | (description |
| 24818 | "Natsort lets you apply natural sorting on lists instead of |
| 24819 | lexicographical. If you use the built-in @code{sorted} method in python on a |
| 24820 | list such as @code{[@code{a20}, @code{a9}, @code{a1}, @code{a4}, @code{a10}]}, |
| 24821 | it would be returned as @code{[@code{a1}, @code{a10}, @code{a20}, @code{a4}, |
| 24822 | @code{a9}]}. Natsort provides a function @code{natsorted} that identifies |
| 24823 | numbers and sorts them separately from strings. It can also sort version |
| 24824 | numbers, real numbers, mixed types and more, and comes with a shell command |
| 24825 | @command{natsort} that exposes this functionality in the command line.") |
| 24826 | (license license:expat))) |
| 24827 | |
| 24828 | (define-public python-graphql-core |
| 24829 | (package |
| 24830 | (name "python-graphql-core") |
| 24831 | (version "3.2.7") |
| 24832 | (source |
| 24833 | (origin |
| 24834 | (method git-fetch) |
| 24835 | (uri (git-reference |
| 24836 | (url "https://github.com/graphql-python/graphql-core") |
| 24837 | (commit (string-append "v" version)))) |
| 24838 | (file-name (git-file-name name version)) |
| 24839 | (sha256 |
| 24840 | (base32 "1jq23vm7lvy6h7rrhfa9iss50vh5anmk0n8kvdbqgrxnzqak43va")))) |
| 24841 | (build-system pyproject-build-system) |
| 24842 | (native-inputs |
| 24843 | (list python-gevent |
| 24844 | python-mock |
| 24845 | python-poetry-core |
| 24846 | python-pytest |
| 24847 | python-pytest-benchmark |
| 24848 | python-pytest-mock)) |
| 24849 | (propagated-inputs |
| 24850 | (list python-promise python-six)) |
| 24851 | (home-page "https://github.com/graphql-python/graphql-core") |
| 24852 | (synopsis "GraphQL implementation for Python") |
| 24853 | (description |
| 24854 | "GraphQL implementation for Python. GraphQL is a data query language and |
| 24855 | runtime designed and used to request and deliver data to mobile and web apps. |
| 24856 | This library is a port of @url{https://github.com/graphql/graphql-js,graphql-js} |
| 24857 | to Python.") |
| 24858 | (license license:expat))) |
| 24859 | |
| 24860 | (define-public python-graphql-relay |
| 24861 | (package |
| 24862 | (name "python-graphql-relay") |
| 24863 | (properties '((commit . "611c0333eeca53663d9b47f7994098edda81b087") |
| 24864 | (revision . "0"))) |
| 24865 | (version (git-version "3.1.5" |
| 24866 | (assoc-ref properties 'revision) |
| 24867 | (assoc-ref properties 'commit))) |
| 24868 | (source |
| 24869 | (origin |
| 24870 | (method git-fetch) |
| 24871 | (uri (git-reference |
| 24872 | (url "https://github.com/graphql-python/graphql-relay-py") |
| 24873 | (commit (assoc-ref properties 'commit)))) |
| 24874 | (file-name (git-file-name name version)) |
| 24875 | (sha256 |
| 24876 | (base32 "1bghnmyn6rsqji7j70yhvd6z0s4p71pdrm5144rn95dha3pdxih9")))) |
| 24877 | (build-system pyproject-build-system) |
| 24878 | (native-inputs |
| 24879 | (list python-pytest |
| 24880 | python-pytest-asyncio |
| 24881 | python-pytest-describe |
| 24882 | python-poetry-core)) |
| 24883 | (propagated-inputs (list python-graphql-core)) |
| 24884 | (home-page "https://github.com/graphql-python/graphql-relay-py") |
| 24885 | (synopsis "Relay implementation for Python") |
| 24886 | (description |
| 24887 | "This is a library to allow the easy creation of Relay-compliant servers |
| 24888 | using the GraphQL Python reference implementation of a GraphQL server. It |
| 24889 | should be noted that the code is a exact port of the original |
| 24890 | @url{https://github.com/graphql/graphql-relay-js,graphql-relay js |
| 24891 | implementation} from Facebook.") |
| 24892 | (license license:expat))) |
| 24893 | |
| 24894 | (define-public python-graphene |
| 24895 | (package |
| 24896 | (name "python-graphene") |
| 24897 | (version "3.4.3") |
| 24898 | (source |
| 24899 | (origin |
| 24900 | (method url-fetch) |
| 24901 | (uri (pypi-uri "graphene" version)) |
| 24902 | (sha256 |
| 24903 | (base32 "1aha3bnrafxd823q4swdmlvbprfb17v3fga4g3hffpz7ija8cdra")))) |
| 24904 | (build-system pyproject-build-system) |
| 24905 | (arguments |
| 24906 | (list #:tests? #f)) ;XXX: tests fail to load |
| 24907 | (native-inputs |
| 24908 | (list python-setuptools)) |
| 24909 | (propagated-inputs |
| 24910 | (list python-dateutil |
| 24911 | python-graphql-core |
| 24912 | python-graphql-relay |
| 24913 | python-typing-extensions)) |
| 24914 | (home-page "https://graphene-python.org/") |
| 24915 | (synopsis "GraphQL Framework for Python") |
| 24916 | (description |
| 24917 | "Graphene is a Python library for building GraphQL schemas/types. A |
| 24918 | GraphQL schema describes your data model, and provides a GraphQL server with |
| 24919 | an associated set of resolve methods that know how to fetch data.") |
| 24920 | (license license:expat))) |
| 24921 | |
| 24922 | (define-public python-rodi |
| 24923 | (package |
| 24924 | (name "python-rodi") |
| 24925 | (version "2.0.8") |
| 24926 | (source |
| 24927 | (origin |
| 24928 | (method git-fetch) |
| 24929 | (uri (git-reference |
| 24930 | (url "https://github.com/Neoteroi/rodi") |
| 24931 | (commit (string-append "v" version)))) |
| 24932 | (file-name (git-file-name name version)) |
| 24933 | (sha256 |
| 24934 | (base32 "0kf98yjllrq7vqcp07r2gmkqcviqglsnai3sdigdsrwrfc0b44yp")))) |
| 24935 | (build-system pyproject-build-system) |
| 24936 | (native-inputs |
| 24937 | (list python-hatchling |
| 24938 | python-pytest |
| 24939 | python-pytest-asyncio)) |
| 24940 | (home-page "https://github.com/Neoteroi/rodi") |
| 24941 | (synopsis "Dependency injection framework for Python") |
| 24942 | (description |
| 24943 | "Rodi is a dependency injection framework for Python applications. |
| 24944 | |
| 24945 | Its features include |
| 24946 | |
| 24947 | @itemize |
| 24948 | @item Type resolution by signature types annotations. |
| 24949 | @item Type resolution by class annotations. |
| 24950 | @item Type resolution by names and aliases. |
| 24951 | @item Build graph of objects without the need for source code changes. |
| 24952 | @item Minimum overhead to obtain services, once the objects graph is built. |
| 24953 | @item Support for singleton, transient, and scoped services. |
| 24954 | @end itemize") |
| 24955 | (license license:expat))) |
| 24956 | |
| 24957 | ;; XXX: The last time updated in 2015, consider to remove it when nothing is |
| 24958 | ;; depend on it. |
| 24959 | (define-public python-snowballstemmer |
| 24960 | (package |
| 24961 | (name "python-snowballstemmer") |
| 24962 | (version "2.2.0") |
| 24963 | (source |
| 24964 | (origin |
| 24965 | (method url-fetch) |
| 24966 | (uri (pypi-uri "snowballstemmer" version)) |
| 24967 | (sha256 |
| 24968 | (base32 "1ccwy75i0f5yi1vy6fyvr1gf43ydhjani45mswm43ls7hpmnvc89")))) |
| 24969 | (build-system pyproject-build-system) |
| 24970 | (arguments |
| 24971 | (list |
| 24972 | #:tests? #f)) ; no tests |
| 24973 | (native-inputs |
| 24974 | (list python-setuptools)) |
| 24975 | (home-page "https://github.com/shibukawa/snowball_py") |
| 24976 | (synopsis "Snowball stemming library collection for Python") |
| 24977 | (description |
| 24978 | "This package provides 16 word stemmer algorithms generated from Snowball |
| 24979 | algorithms. It includes the 15 original ones plus the Poerter English |
| 24980 | stemmer.") |
| 24981 | (license license:bsd-3))) |
| 24982 | |
| 24983 | (define-public python-setproctitle |
| 24984 | (package |
| 24985 | (name "python-setproctitle") |
| 24986 | (version "1.3.7") |
| 24987 | (source |
| 24988 | (origin |
| 24989 | (method git-fetch) |
| 24990 | (uri (git-reference |
| 24991 | (url "https://github.com/dvarrazzo/py-setproctitle") |
| 24992 | (commit (string-append "version-" version)))) |
| 24993 | (file-name (git-file-name name version)) |
| 24994 | (sha256 |
| 24995 | (base32 "0k51ypmr2p2c55dyl2pq3dclih9jk2zx7dxm8010li4pyfsrvwvm")))) |
| 24996 | (build-system pyproject-build-system) |
| 24997 | (arguments |
| 24998 | (list |
| 24999 | #:phases |
| 25000 | #~(modify-phases %standard-phases |
| 25001 | (add-before 'check 'configure-tests |
| 25002 | (lambda* (#:key tests? #:allow-other-keys) |
| 25003 | (when tests? |
| 25004 | (setenv "PYTHON" |
| 25005 | (or (which "python3") |
| 25006 | (which "python"))) |
| 25007 | (setenv "PYCONFIG" |
| 25008 | (if (which "python3-config") |
| 25009 | "python3-config --embed" |
| 25010 | "python-config")) |
| 25011 | (substitute* "tests/conftest.py" |
| 25012 | (("cc") "gcc")))))))) |
| 25013 | (native-inputs (list procps python-pytest python-setuptools)) ;required for tests |
| 25014 | (home-page "https://github.com/dvarrazzo/py-setproctitle") |
| 25015 | (synopsis |
| 25016 | "Setproctitle implementation for Python to customize the process title") |
| 25017 | (description |
| 25018 | "The library allows a process to change its title (as displayed by system |
| 25019 | tools such as @code{ps} and @code{top}). |
| 25020 | |
| 25021 | Changing the title is mostly useful in multi-process systems, for example when a |
| 25022 | master process is forked: changing the children's title allows identifying the |
| 25023 | task each process is busy with. The technique is used by PostgreSQL and the |
| 25024 | OpenSSH Server for example.") |
| 25025 | (license license:bsd-3))) |
| 25026 | |
| 25027 | (define-public python-pyelftools |
| 25028 | (package |
| 25029 | (name "python-pyelftools") |
| 25030 | (version "0.32") |
| 25031 | (source |
| 25032 | (origin |
| 25033 | (method git-fetch) |
| 25034 | (uri (git-reference |
| 25035 | (url "https://github.com/eliben/pyelftools") |
| 25036 | (commit (string-append "v" version)))) |
| 25037 | (file-name (git-file-name name version)) |
| 25038 | (sha256 |
| 25039 | (base32 "0wx18rj5hcra45ck407vfvg46rs1qcj3qjhfkprf6264zs6z1i77")) |
| 25040 | (snippet |
| 25041 | #~(begin |
| 25042 | ;; Delete bundled readelf and llvm-dwardump executables. Project |
| 25043 | ;; also ships quite a lot binary files mainly for tests, check |
| 25044 | ;; with: |
| 25045 | ;; |
| 25046 | ;; find . -type f ! -size 0 -exec grep -IL . "{}" \; |
| 25047 | ;; |
| 25048 | (delete-file "test/external_tools/readelf") |
| 25049 | (delete-file "test/external_tools/llvm-dwarfdump"))))) |
| 25050 | (build-system pyproject-build-system) |
| 25051 | (arguments |
| 25052 | (list |
| 25053 | #:phases |
| 25054 | #~(modify-phases %standard-phases |
| 25055 | (replace 'check |
| 25056 | (lambda* (#:key tests? #:allow-other-keys) |
| 25057 | (when tests? |
| 25058 | ;; Run just basic unit and example tests, dwarfdump and |
| 25059 | ;; readelf tests are not selected as they are fragile and |
| 25060 | ;; arch-specific. |
| 25061 | (invoke "python" "test/run_all_unittests.py") |
| 25062 | (invoke "python" "test/run_examples_test.py"))))))) |
| 25063 | (home-page "https://github.com/eliben/pyelftools") |
| 25064 | (native-inputs |
| 25065 | (list python-setuptools |
| 25066 | python-wheel)) |
| 25067 | (synopsis "Analyze binary and library file information") |
| 25068 | (description |
| 25069 | "This Python library provides interfaces for parsing and analyzing two |
| 25070 | binary and library file formats ; the Executable and Linking Format (ELF), and |
| 25071 | debugging information in the Debugging With Attributed Record |
| 25072 | Format (DWARF).") |
| 25073 | (license license:public-domain))) |
| 25074 | |
| 25075 | (define-public python-pefile |
| 25076 | (package |
| 25077 | (name "python-pefile") |
| 25078 | (version "2024.8.26") |
| 25079 | (source |
| 25080 | (origin |
| 25081 | (method git-fetch) |
| 25082 | (uri (git-reference |
| 25083 | (url "https://github.com/erocarrera/pefile") |
| 25084 | (commit (string-append "v" version)))) |
| 25085 | (file-name (git-file-name name version)) |
| 25086 | (sha256 |
| 25087 | (base32 "14bh23b7jipf2pxjivyn2khifal6fmk0pjsddrd3h1gd9n0wl9zd")) |
| 25088 | (snippet #~(delete-file "tests/test_data.tar.bz2.enc")))) |
| 25089 | (build-system pyproject-build-system) |
| 25090 | (arguments |
| 25091 | ;; XXX: Taken from tox.ini. Unclear why devs don't supply test data. |
| 25092 | ;; It seems clear however that test_data.tar.bz2.enc needs to be |
| 25093 | ;; decrypted and unpacked before we can run them. |
| 25094 | (list #:test-flags #~(list "--ignore=tests/pefile_test.py"))) |
| 25095 | (native-inputs (list python-pytest python-setuptools)) |
| 25096 | (propagated-inputs (list python-future)) |
| 25097 | (home-page "https://github.com/erocarrera/pefile") |
| 25098 | (synopsis "Portable Executable (PE) file parser") |
| 25099 | (description |
| 25100 | "This python library provides interfaces for parsing and working with |
| 25101 | Portable Executable (PE) files. It makes to most information from the header, |
| 25102 | as well as section details and data available.") |
| 25103 | (license license:expat))) |
| 25104 | |
| 25105 | (define-public python-pyemd |
| 25106 | (package |
| 25107 | (name "python-pyemd") |
| 25108 | (version "1.0.0") |
| 25109 | (source (origin |
| 25110 | (method url-fetch) |
| 25111 | (uri (pypi-uri "pyemd" version)) |
| 25112 | (sha256 |
| 25113 | (base32 |
| 25114 | "1zh0v47lxa33xg04jyvblzl1g4m3k2khx0b3xr6isnyinbkmlaxl")))) |
| 25115 | (build-system pyproject-build-system) |
| 25116 | (native-inputs |
| 25117 | (list python-cython |
| 25118 | python-pytest |
| 25119 | python-setuptools |
| 25120 | python-setuptools-scm)) |
| 25121 | (propagated-inputs |
| 25122 | (list python-numpy-1)) |
| 25123 | (home-page "https://github.com/wmayner/pyemd") |
| 25124 | (synopsis |
| 25125 | "Wrapper for Pele and Werman's implementation of the Earth Mover's Distance") |
| 25126 | (description |
| 25127 | "This package provides a Python wrapper for Ofir Pele and Michael |
| 25128 | Werman's implementation of the Earth Mover's Distance.") |
| 25129 | (license license:expat))) |
| 25130 | |
| 25131 | (define-public python-imagesize |
| 25132 | (package |
| 25133 | (name "python-imagesize") |
| 25134 | (version "2.0.0") |
| 25135 | (source |
| 25136 | (origin |
| 25137 | (method git-fetch) |
| 25138 | (uri (git-reference |
| 25139 | (url "https://github.com/shibukawa/imagesize_py") |
| 25140 | (commit version))) |
| 25141 | (file-name (git-file-name name version)) |
| 25142 | (sha256 |
| 25143 | (base32 "1r07r80d16hkwhnmz6sfvj8d4s3d6wg82j99dbr3iy78gc48wia0")))) |
| 25144 | (build-system pyproject-build-system) |
| 25145 | (arguments (list #:test-backend #~'unittest)) |
| 25146 | (native-inputs |
| 25147 | (list python-setuptools)) |
| 25148 | (home-page "https://github.com/shibukawa/imagesize_py") |
| 25149 | (synopsis "Gets image size of files in various formats in Python") |
| 25150 | (description |
| 25151 | "This package allows determination of image size from PNG, JPEG, |
| 25152 | JPEG2000 and GIF files in pure Python.") |
| 25153 | (license license:expat))) |
| 25154 | |
| 25155 | (define-public python-argcomplete |
| 25156 | (package |
| 25157 | (name "python-argcomplete") |
| 25158 | (version "3.7.2") |
| 25159 | (source |
| 25160 | (origin |
| 25161 | (method url-fetch) |
| 25162 | (uri (pypi-uri "argcomplete" version)) |
| 25163 | (sha256 |
| 25164 | (base32 |
| 25165 | "1ff6kwdkhn59w80bn30fn4bhgmf0ahipbldh5nvfsscr1fdbdn5a")))) |
| 25166 | (build-system pyproject-build-system) |
| 25167 | (arguments |
| 25168 | (list #:tests? #f)) ;XXX: tests requires tcsh, fish and full bash shells |
| 25169 | (native-inputs |
| 25170 | (list python-hatch-vcs |
| 25171 | python-hatchling |
| 25172 | python-pexpect)) |
| 25173 | (home-page "https://github.com/kislyuk/argcomplete") |
| 25174 | (synopsis "Shell tab completion for Python argparse") |
| 25175 | (description "argcomplete provides extensible command line tab completion |
| 25176 | of arguments and options for Python scripts using @code{argparse}. It's |
| 25177 | particularly useful for programs with many options or sub-parsers that can |
| 25178 | dynamically suggest completions ; for example, when browsing resources over |
| 25179 | the network.") |
| 25180 | (license license:asl2.0))) |
| 25181 | |
| 25182 | (define-public python-csscompressor |
| 25183 | (package |
| 25184 | (name "python-csscompressor") |
| 25185 | (version "0.9.5") |
| 25186 | (source |
| 25187 | (origin |
| 25188 | (method git-fetch) |
| 25189 | (uri (git-reference |
| 25190 | (url "https://github.com/sprymix/csscompressor") |
| 25191 | (commit (string-append "v" version)))) |
| 25192 | (file-name (git-file-name name version)) |
| 25193 | (sha256 |
| 25194 | (base32 "1gzzb474lgs8l539z2vyyvcvm1j7nxxnb5jk79ys63ysbg4jwmz8")))) |
| 25195 | (build-system pyproject-build-system) |
| 25196 | (native-inputs (list python-pytest python-setuptools)) |
| 25197 | (home-page "https://github.com/sprymix/csscompressor") |
| 25198 | (synopsis "Python port of YUI CSS Compressor") |
| 25199 | (description "This package provides a python port of YUI CSS Compressor.") |
| 25200 | (license license:bsd-3))) |
| 25201 | |
| 25202 | (define-public python-rcssmin |
| 25203 | (package |
| 25204 | (name "python-rcssmin") |
| 25205 | (version "1.2.0") |
| 25206 | (source |
| 25207 | (origin |
| 25208 | (method url-fetch) |
| 25209 | (uri (pypi-uri "rcssmin" version)) |
| 25210 | (sha256 |
| 25211 | (base32 |
| 25212 | "0k68sw163vc36nb3nck0kwwal4vb4hi6634rzx7z19ng28j8fdpl")))) |
| 25213 | (build-system pyproject-build-system) |
| 25214 | (native-inputs (list python-pytest python-setuptools python-wheel)) |
| 25215 | (home-page "http://opensource.perlig.de/rcssmin/") |
| 25216 | (synopsis "CSS Minifier") |
| 25217 | (description "The minifier is based on the semantics of the YUI compressor, |
| 25218 | which itself is based on the rule list by Isaac Schlueter.") |
| 25219 | (license license:asl2.0))) |
| 25220 | |
| 25221 | (define-public python-rjsmin |
| 25222 | (package |
| 25223 | (name "python-rjsmin") |
| 25224 | (version "1.2.3") |
| 25225 | (source |
| 25226 | (origin |
| 25227 | (method url-fetch) |
| 25228 | (uri (pypi-uri "rjsmin" version)) |
| 25229 | (sha256 |
| 25230 | (base32 |
| 25231 | "1ihcff58vz4xrv1180v46wy5m80z61y7ab8ajyy4zh54jcjbb20k")) |
| 25232 | (modules '((guix build utils))) |
| 25233 | (snippet |
| 25234 | '(for-each delete-file (find-files "bench" "\\.js$"))))) |
| 25235 | (build-system pyproject-build-system) |
| 25236 | (native-inputs |
| 25237 | (list python-pytest python-setuptools python-wheel)) |
| 25238 | (home-page "http://opensource.perlig.de/rjsmin/") |
| 25239 | (synopsis "Javascript Minifier") |
| 25240 | (description "@code{rJSmin} is a javascript minifier written in Python. |
| 25241 | The minifier is based on the semantics of jsmin.c by Douglas Crockford. The |
| 25242 | module is a re-implementation aiming for speed, so it can be used at |
| 25243 | runtime (rather than during a preprocessing step).") |
| 25244 | (license license:asl2.0))) |
| 25245 | |
| 25246 | (define-public python-cheetah |
| 25247 | (package |
| 25248 | (name "python-cheetah") |
| 25249 | (version "3.3.1") |
| 25250 | (source |
| 25251 | (origin |
| 25252 | (method url-fetch) |
| 25253 | (uri (pypi-uri "CT3" version)) |
| 25254 | (sha256 |
| 25255 | (base32 "1j36vampqip18jx0jzngb9rnkhhhl8hqnscg117y0d6cgrgm57qw")))) |
| 25256 | (build-system pyproject-build-system) |
| 25257 | (arguments |
| 25258 | (list |
| 25259 | #:test-backend #~'custom |
| 25260 | #:test-flags #~(list "Cheetah/Tests/Test.py") |
| 25261 | #:phases |
| 25262 | #~(modify-phases %standard-phases |
| 25263 | (add-after 'unpack 'use-absolute-python |
| 25264 | (lambda _ |
| 25265 | (substitute* "Cheetah/CheetahWrapper.py" |
| 25266 | (("#!/usr/bin/env python") |
| 25267 | (string-append "#!" (which "python")))))) |
| 25268 | (add-before 'check 'configure-tests |
| 25269 | (lambda* (#:key tests? #:allow-other-keys) |
| 25270 | (substitute* "Cheetah/Tests/ImportHooks.py" |
| 25271 | (("os.path.dirname\\(__file__\\)") |
| 25272 | (string-append "'" (getcwd) "/Cheetah/Tests'"))) |
| 25273 | (substitute* "Cheetah/Tests/Test.py" |
| 25274 | (("unittest.TextTestRunner\\(\\)") |
| 25275 | "unittest.TextTestRunner(verbosity=2)")) |
| 25276 | (setenv "TMPDIR" "/tmp")))))) |
| 25277 | (native-inputs (list python-setuptools)) |
| 25278 | (propagated-inputs (list python-markdown)) ;optional |
| 25279 | (home-page "https://cheetahtemplate.org/") |
| 25280 | (synopsis "Template engine") |
| 25281 | (description |
| 25282 | "Cheetah is a text-based template engine and Python code generator. |
| 25283 | |
| 25284 | Cheetah can be used as a standalone templating utility or referenced as a |
| 25285 | library from other Python applications. It has many potential uses, but web |
| 25286 | developers looking for a viable alternative to ASP, JSP, PHP and PSP are |
| 25287 | expected to be its principle user group. |
| 25288 | |
| 25289 | Features: |
| 25290 | @enumerate |
| 25291 | @item Generates HTML, SGML, XML, SQL, Postscript, form email, LaTeX, or any |
| 25292 | other text-based format. |
| 25293 | @item Cleanly separates content, graphic design, and program code. |
| 25294 | @item Blends the power and flexibility of Python with a simple template |
| 25295 | language that non-programmers can understand. |
| 25296 | @item Gives template writers full access to any Python data structure, module, |
| 25297 | function, object, or method in their templates. |
| 25298 | @item Makes code reuse easy by providing an object-orientated interface to |
| 25299 | templates that is accessible from Python code or other Cheetah templates. One |
| 25300 | template can subclass another and selectively reimplement sections of it. |
| 25301 | @item Provides a simple, yet powerful, caching mechanism that can dramatically |
| 25302 | improve the performance of a dynamic website. |
| 25303 | @item Compiles templates into optimized, yet readable, Python code. |
| 25304 | @end enumerate") |
| 25305 | (license (license:x11-style "file://LICENSE")))) |
| 25306 | |
| 25307 | (define-public python-chevron |
| 25308 | (package |
| 25309 | (name "python-chevron") |
| 25310 | (version "0.14.0") |
| 25311 | (source (origin |
| 25312 | (method url-fetch) |
| 25313 | (uri (pypi-uri "chevron" version)) |
| 25314 | (sha256 |
| 25315 | (base32 |
| 25316 | "1gqfh00ics2k1sm5g46l3bi8cl5fc5d1cwzh1ylvcxvdvypklqc7")))) |
| 25317 | (build-system pyproject-build-system) |
| 25318 | (arguments (list #:tests? #false)) ;there are none |
| 25319 | (native-inputs (list python-setuptools python-wheel)) |
| 25320 | (home-page "https://github.com/noahmorrison/chevron") |
| 25321 | (synopsis "Mustache templating language renderer") |
| 25322 | (description "This package provides a Python implementation of the |
| 25323 | Mustache templating language renderer.") |
| 25324 | (license license:expat))) |
| 25325 | |
| 25326 | (define-public python-dulwich |
| 25327 | (package |
| 25328 | (name "python-dulwich") |
| 25329 | (version "1.2.12") |
| 25330 | (source |
| 25331 | (origin |
| 25332 | (method git-fetch) |
| 25333 | (uri (git-reference |
| 25334 | (url "https://github.com/jelmer/dulwich") |
| 25335 | (commit (string-append "dulwich-" version)))) |
| 25336 | (file-name (git-file-name name version)) |
| 25337 | (sha256 |
| 25338 | (base32 "0in5pgqhnnbfqi5alcg85kiaxr8zww9iih7qsyy9g1yzlaxs0dvd")))) |
| 25339 | (build-system pyproject-build-system) |
| 25340 | (arguments |
| 25341 | (list |
| 25342 | ;; tests: 3796 passed, 89 skipped, 1 xfailed, 8 warnings, 33 subtests |
| 25343 | ;; passed |
| 25344 | #:test-flags |
| 25345 | ;; Exclude fuzzing from discovery, depends on python-atheris. |
| 25346 | #~(list "tests") |
| 25347 | #:phases |
| 25348 | #~(modify-phases %standard-phases |
| 25349 | (add-after 'unpack 'fix-tests |
| 25350 | (lambda* (#:key inputs #:allow-other-keys) |
| 25351 | (substitute* '("tests/test_hooks.py" |
| 25352 | "tests/porcelain/test_filters.py" |
| 25353 | "tests/test_repository.py" |
| 25354 | "tests/test_worktree.py") |
| 25355 | (("/bin/sh") |
| 25356 | (search-input-file inputs "/bin/sh"))))) |
| 25357 | (add-before 'check 'pre-check |
| 25358 | (lambda _ |
| 25359 | (setenv "PYTHONHASHSEED" "random") |
| 25360 | (setenv "TMPDIR" "/tmp")))))) |
| 25361 | (native-inputs |
| 25362 | (list git-minimal/pinned |
| 25363 | openssh-sans-x |
| 25364 | ;; python-atheris ;not packaged yet in Guix |
| 25365 | python-gevent |
| 25366 | python-geventhttpclient |
| 25367 | python-pytest |
| 25368 | python-setuptools |
| 25369 | python-setuptools-rust)) |
| 25370 | (propagated-inputs |
| 25371 | (list python-urllib3 |
| 25372 | ;; [optional] |
| 25373 | gnupg |
| 25374 | gpgme |
| 25375 | python-aiohttp |
| 25376 | python-fastimport |
| 25377 | python-merge3 |
| 25378 | python-munkres |
| 25379 | python-paramiko |
| 25380 | python-patiencediff |
| 25381 | python-rich)) |
| 25382 | (home-page "https://www.dulwich.io/") |
| 25383 | (synopsis "Git implementation in Python") |
| 25384 | (description "Dulwich is an implementation of the Git file formats and |
| 25385 | protocols written in pure Python.") |
| 25386 | ;; Can be used with either license. |
| 25387 | (license (list license:asl2.0 license:gpl2+)))) |
| 25388 | |
| 25389 | (define-public python-dunamai |
| 25390 | (package |
| 25391 | (name "python-dunamai") |
| 25392 | (version "1.26.0") |
| 25393 | (source |
| 25394 | (origin |
| 25395 | (method url-fetch) |
| 25396 | (uri (pypi-uri "dunamai" version)) |
| 25397 | (sha256 |
| 25398 | (base32 "0zgrl9rr5qij6zdc6vsc6gs4qin7k2brykh38280bv90m91sr5jk")))) |
| 25399 | (build-system pyproject-build-system) |
| 25400 | (arguments |
| 25401 | (list |
| 25402 | #:test-flags |
| 25403 | #~(list "-k" "not test__version__from_git__shallow") |
| 25404 | #:phases |
| 25405 | #~(modify-phases %standard-phases |
| 25406 | ;; These steps are taken from NixOS package definition: |
| 25407 | ;; nixpkgs/pkgs/development/python-modules/dunamai/default.nix |
| 25408 | (add-before 'check 'pre-check |
| 25409 | (lambda _ |
| 25410 | (setenv "PATH" (string-append #$output "/bin:" (getenv "PATH"))) |
| 25411 | (setenv "HOME" "/tmp") |
| 25412 | (invoke "git" "config" "--global" "user.email" "[email protected]") |
| 25413 | (invoke "git" "config" "--global" "user.name" "Nobody")))))) |
| 25414 | (propagated-inputs |
| 25415 | (list python-packaging)) |
| 25416 | (native-inputs |
| 25417 | (list git-minimal/pinned |
| 25418 | python-poetry-core |
| 25419 | python-pytest)) |
| 25420 | (home-page "https://github.com/mtkennerly/dunamai") |
| 25421 | (synopsis "Dynamic version generation") |
| 25422 | (description |
| 25423 | "Dunamai is Python library and command line tool for producing dynamic, |
| 25424 | standards-compliant version strings, derived from tags in your version control |
| 25425 | system. This facilitates uniquely identifying nightly or per-commit builds in |
| 25426 | continuous integration and releasing new versions of your software simply by |
| 25427 | creating a tag.") |
| 25428 | (license license:expat))) |
| 25429 | |
| 25430 | (define-public python-pbkdf2 |
| 25431 | (package |
| 25432 | (name "python-pbkdf2") |
| 25433 | (version "1.3") |
| 25434 | (source |
| 25435 | (origin |
| 25436 | (method url-fetch) |
| 25437 | (uri (pypi-uri "pbkdf2" version)) |
| 25438 | (sha256 |
| 25439 | (base32 "0yb99rl2mbsaamj571s1mf6vgniqh23v98k4632150hjkwv9fqxc")))) |
| 25440 | (build-system pyproject-build-system) |
| 25441 | (arguments |
| 25442 | (list |
| 25443 | #:test-backend #~'custom |
| 25444 | #:test-flags #~(list "test/test_pbkdf2.py"))) |
| 25445 | (native-inputs (list python-setuptools)) |
| 25446 | (home-page "https://www.dlitz.net/software/python-pbkdf2/") |
| 25447 | (synopsis "Password-based key derivation") |
| 25448 | (description |
| 25449 | "This module implements the password-based key derivation function, |
| 25450 | PBKDF2, specified in RSA PKCS#5 v2.0. |
| 25451 | |
| 25452 | PKCS#5 v2.0 Password-Based Key Derivation is a key derivation function which |
| 25453 | is part of the RSA Public Key Cryptography Standards series. The provided |
| 25454 | implementation takes a password or a passphrase and a salt value (and |
| 25455 | optionally a iteration count, a digest module, and a MAC module) and provides |
| 25456 | a file-like object from which an arbitrarily-sized key can be read.") |
| 25457 | (license license:expat))) |
| 25458 | |
| 25459 | (define-public python-qrcode |
| 25460 | (package |
| 25461 | (name "python-qrcode") |
| 25462 | (version "8.2") |
| 25463 | (source |
| 25464 | (origin |
| 25465 | (method url-fetch) |
| 25466 | (uri (pypi-uri "qrcode" version)) |
| 25467 | (sha256 |
| 25468 | (base32 "0v2h8vs1b80qhkc293w5dzvd439600ffzcznp5m16crb2yjg5hrm")))) |
| 25469 | (build-system pyproject-build-system) |
| 25470 | (native-inputs |
| 25471 | (list python-poetry-core |
| 25472 | python-pytest)) |
| 25473 | (home-page "https://github.com/lincolnloop/python-qrcode") |
| 25474 | (synopsis "QR Code image generator") |
| 25475 | (description |
| 25476 | "This package provides a pure Python QR Code generator module. It uses |
| 25477 | the Python Imaging Library (PIL) to allow for the generation of QR Codes. |
| 25478 | |
| 25479 | In addition this package provides a command line tool to generate QR codes and |
| 25480 | either write these QR codes to a file or do the output as ascii art at the |
| 25481 | console.") |
| 25482 | (license license:bsd-3))) |
| 25483 | |
| 25484 | (define-public python-rst2ansi |
| 25485 | (package |
| 25486 | (name "python-rst2ansi") |
| 25487 | (properties '((commit . "3728e16f8b8b1dc338e5df90ba2c4a93ee054b3f") |
| 25488 | (revision . "1"))) |
| 25489 | (version (git-version "0.1.5" |
| 25490 | (assoc-ref properties 'revision) |
| 25491 | (assoc-ref properties 'commit))) |
| 25492 | (source |
| 25493 | (origin |
| 25494 | (method git-fetch) |
| 25495 | (uri (git-reference |
| 25496 | (url "https://github.com/Snaipe/python-rst-to-ansi") |
| 25497 | (commit (assoc-ref properties 'commit)))) |
| 25498 | (file-name (git-file-name name version)) |
| 25499 | (sha256 |
| 25500 | (base32 "0q8afblqhkrnzxla81ialifcwkh9ga5xzxzi0lhg2gjwhbynbfsp")))) |
| 25501 | (build-system pyproject-build-system) |
| 25502 | (arguments |
| 25503 | (list |
| 25504 | #:tests? #f ; 2 tests fail with additional line characters |
| 25505 | #:phases |
| 25506 | #~(modify-phases %standard-phases |
| 25507 | (replace 'check |
| 25508 | (lambda* (#:key tests? #:allow-other-keys) |
| 25509 | (when tests? |
| 25510 | (invoke "cram" "test" "-v"))))))) |
| 25511 | (native-inputs (list python-cram python-setuptools)) |
| 25512 | (propagated-inputs (list python-docutils)) |
| 25513 | (home-page "https://github.com/Snaipe/python-rst-to-ansi") |
| 25514 | (synopsis "Convert RST to ANSI-decorated console output") |
| 25515 | (description |
| 25516 | "Python module dedicated to rendering RST (reStructuredText) documents to |
| 25517 | ansi-escaped strings suitable for display in a terminal.") |
| 25518 | (license license:expat))) |
| 25519 | |
| 25520 | (define-public python-ansi2html |
| 25521 | (package |
| 25522 | (name "python-ansi2html") |
| 25523 | (version "1.9.2") |
| 25524 | (source |
| 25525 | (origin |
| 25526 | (method url-fetch) |
| 25527 | (uri (pypi-uri "ansi2html" version)) |
| 25528 | (sha256 |
| 25529 | (base32 "19f0ap4w66b35csmx4k97pnb9fkdfnmgliajn0kvhdsxaf3vylrl")))) |
| 25530 | (build-system pyproject-build-system) |
| 25531 | (native-inputs |
| 25532 | (list python-mock |
| 25533 | python-pytest |
| 25534 | python-setuptools |
| 25535 | python-wheel)) |
| 25536 | (home-page "https://github.com/ralphbean/ansi2html") |
| 25537 | (synopsis "Convert ANSI-decorated console output to HTML") |
| 25538 | (description |
| 25539 | "@command{ansi2html} is a Python library and command line utility for |
| 25540 | converting text with ANSI color codes to HTML or LaTeX.") |
| 25541 | (license license:gpl3+))) |
| 25542 | |
| 25543 | (define-public python-easy-ansi |
| 25544 | (package |
| 25545 | (name "python-easy-ansi") |
| 25546 | (version "2.1") |
| 25547 | (source |
| 25548 | (origin |
| 25549 | (method git-fetch) |
| 25550 | (uri (git-reference |
| 25551 | (url "https://gitlab.com/joeysbytes/easy-ansi") |
| 25552 | (commit (string-append "v" version)))) |
| 25553 | (file-name (git-file-name name version)) |
| 25554 | (sha256 |
| 25555 | (base32 "16zk4vyrr3hhb6aijmqchjlz181mgk7mi9zyyjd8i53h9rr00wkx")))) |
| 25556 | (build-system pyproject-build-system) |
| 25557 | (arguments |
| 25558 | (list |
| 25559 | #:phases |
| 25560 | #~(modify-phases %standard-phases |
| 25561 | (add-after 'install 'remove-extra |
| 25562 | (lambda* (#:key inputs outputs #:allow-other-keys) |
| 25563 | (with-directory-excursion (site-packages inputs outputs) |
| 25564 | (delete-file-recursively "tests") |
| 25565 | (delete-file "setup.py"))))))) |
| 25566 | (native-inputs (list python-pytest python-setuptools)) |
| 25567 | (home-page "https://gitlab.com/joeysbytes/easy-ansi") |
| 25568 | (synopsis "Terminal framework API") |
| 25569 | (description |
| 25570 | "Easy ANSI is a terminal framework API to give you an easy way to use |
| 25571 | colors, cursor control movements, and line/box drawing. It is not meant as a |
| 25572 | replacement to more full-featured frameworks (such as curses or urwid), but as |
| 25573 | a tool to quickly create nice-looking screens in your terminal window. You |
| 25574 | can even create animations with the cursor controls.") |
| 25575 | (license license:expat))) |
| 25576 | |
| 25577 | (define-public python-easy-ansi-0.3 |
| 25578 | (package |
| 25579 | (inherit python-easy-ansi) |
| 25580 | (name "python-easy-ansi") |
| 25581 | (version "0.3") |
| 25582 | (source |
| 25583 | (origin |
| 25584 | (method git-fetch) |
| 25585 | (uri (git-reference |
| 25586 | (url "https://gitlab.com/joeysbytes/easy-ansi") |
| 25587 | (commit (string-append "v" version)))) |
| 25588 | (file-name (git-file-name name version)) |
| 25589 | (sha256 |
| 25590 | (base32 "0albh55ynzs98qy9pln4qaxw5qhhh3lk09jy9bx19gycrp1c3lc3")))) |
| 25591 | (arguments '()))) |
| 25592 | |
| 25593 | (define-public python-pycosat |
| 25594 | (package |
| 25595 | (name "python-pycosat") |
| 25596 | (version "0.6.6") |
| 25597 | (source |
| 25598 | (origin |
| 25599 | (method git-fetch) |
| 25600 | (uri (git-reference |
| 25601 | (url "https://github.com/ContinuumIO/pycosat") |
| 25602 | (commit version))) |
| 25603 | (file-name (git-file-name name version)) |
| 25604 | (sha256 |
| 25605 | (base32 "1p62d7fqny4ayr218lshrp35g75ljaxlgza9yr2hm44aqggvmqbw")))) |
| 25606 | ;; TODO: Unundle picosat. http://fmv.jku.at/picosat/ |
| 25607 | (build-system pyproject-build-system) |
| 25608 | (arguments (list #:test-backend #~'unittest)) |
| 25609 | (native-inputs (list unzip python-setuptools)) |
| 25610 | (home-page "https://github.com/ContinuumIO/pycosat") |
| 25611 | (synopsis "Bindings to picosat (a SAT solver)") |
| 25612 | (description |
| 25613 | "This package provides efficient Python bindings to @code{picosat} on the |
| 25614 | C level. When importing pycosat, the @code{picosat} solver becomes part of |
| 25615 | the Python process itself. @code{picosat} is a @dfn{Boolean Satisfiability |
| 25616 | Problem} (SAT) solver.") |
| 25617 | (license license:expat))) |
| 25618 | |
| 25619 | (define-public python-pypeg2 |
| 25620 | (package |
| 25621 | (name "python-pypeg2") |
| 25622 | (version "2.15.2") |
| 25623 | (source |
| 25624 | (origin |
| 25625 | (method url-fetch) |
| 25626 | (uri (pypi-uri "pyPEG2" version)) |
| 25627 | (sha256 |
| 25628 | (base32 "0v8ziaam2r637v94ra4dbjw6jzxz99gs5x4i585kgag1v204yb9b")))) |
| 25629 | (build-system pyproject-build-system) |
| 25630 | (native-inputs (list python-pytest python-setuptools)) |
| 25631 | (propagated-inputs (list python-lxml)) |
| 25632 | (home-page "https://fdik.org/pyPEG/") |
| 25633 | (synopsis "Parsing Expression Grammars in Python") |
| 25634 | (description |
| 25635 | "PyPEG is an intrinsic parser interpreter framework for Python. It is |
| 25636 | based on Parsing Expression Grammars, PEG. With pyPEG you can parse many |
| 25637 | formal languages.") |
| 25638 | (license license:gpl2))) |
| 25639 | |
| 25640 | (define-public python-pyformlang |
| 25641 | (package |
| 25642 | (name "python-pyformlang") |
| 25643 | (version "1.0.10") |
| 25644 | (source |
| 25645 | (origin |
| 25646 | (method url-fetch) |
| 25647 | (uri (pypi-uri "pyformlang" version)) |
| 25648 | (sha256 |
| 25649 | (base32 "0szgy4pqfixmswjs37qgma4qa3bsadpp3l1xflrpfi10aa8hh2sp")))) |
| 25650 | (build-system pyproject-build-system) |
| 25651 | (native-inputs |
| 25652 | (list python-pytest |
| 25653 | python-setuptools |
| 25654 | python-wheel)) |
| 25655 | (propagated-inputs |
| 25656 | (list python-networkx |
| 25657 | python-numpy |
| 25658 | python-pydot)) |
| 25659 | (home-page "https://github.com/Aunsiels/pyformlang") |
| 25660 | (synopsis "Framework for interacting with formal grammars") |
| 25661 | (description |
| 25662 | "This package provides a framework for working with formal |
| 25663 | language grammars. The library was originally developed for educational |
| 25664 | purposes and therefore implements many textbook algorithms regarding the |
| 25665 | manipulation and interaction with formal grammars.") |
| 25666 | (license license:expat))) |
| 25667 | |
| 25668 | (define-public python-incremental |
| 25669 | (package |
| 25670 | (name "python-incremental") |
| 25671 | (version "24.7.2") |
| 25672 | (source |
| 25673 | (origin |
| 25674 | (method url-fetch) |
| 25675 | (uri (pypi-uri "incremental" version)) |
| 25676 | (sha256 |
| 25677 | (base32 |
| 25678 | "1jb4skmy8awix345jk2pnar0sxmrf1gvn3kg9xyyivv0xr3iskzv")))) |
| 25679 | (build-system pyproject-build-system) |
| 25680 | (arguments |
| 25681 | ;; Tests require twisted, which needs this package. |
| 25682 | (list #:tests? #false |
| 25683 | #:build-backend "setuptools.build_meta")) |
| 25684 | (native-inputs |
| 25685 | (list python-setuptools)) |
| 25686 | (home-page "https://github.com/hawkowl/incremental") |
| 25687 | (synopsis "Library for versioning Python projects") |
| 25688 | (description "Incremental is a small library that versions your Python |
| 25689 | projects.") |
| 25690 | (license license:expat))) |
| 25691 | |
| 25692 | (define-public python-invoke |
| 25693 | (package |
| 25694 | (name "python-invoke") |
| 25695 | (version "2.2.1") |
| 25696 | (source |
| 25697 | (origin |
| 25698 | (method url-fetch) |
| 25699 | (uri (pypi-uri "invoke" version)) |
| 25700 | (sha256 |
| 25701 | (base32 "01z73gmbmf5q3ynr3yfz894rrwr2v9406n94n1wjp4s89adz8nsi")))) |
| 25702 | ;; TODO: invoke/vendor contains: |
| 25703 | ;; - fluidity -> https://github.com/nsi-iff/fluidity (14y old) |
| 25704 | ;; - lexicon -> https://github.com/bitprophet/lexicon (2y old) |
| 25705 | ;; - yaml -> https://github.com/yaml/pyyaml (2y old) |
| 25706 | (build-system pyproject-build-system) |
| 25707 | (arguments |
| 25708 | (list |
| 25709 | ;; XXX: Requires many dependencies that are not yet in Guix. |
| 25710 | #:tests? #f |
| 25711 | #:phases |
| 25712 | #~(modify-phases %standard-phases |
| 25713 | (add-after 'unpack 'fix-bash-path |
| 25714 | (lambda _ |
| 25715 | (let ((bash #$(this-package-input "bash-minimal"))) |
| 25716 | (substitute* "invoke/config.py" |
| 25717 | (("shell = \"/bin/bash\"") |
| 25718 | (string-append "shell = \"" bash "/bin/bash\""))))))))) |
| 25719 | (native-inputs |
| 25720 | (list python-setuptools |
| 25721 | python-wheel)) |
| 25722 | (inputs |
| 25723 | (list bash-minimal)) |
| 25724 | (home-page "https://www.pyinvoke.org/") |
| 25725 | (synopsis "Pythonic task execution") |
| 25726 | (description |
| 25727 | "Invoke is a Python task execution tool and library, drawing inspiration |
| 25728 | from various sources to arrive at a powerful and clean feature set. It is |
| 25729 | evolved from the Fabric project, but focuses on local and abstract concerns |
| 25730 | instead of servers and network commands.") |
| 25731 | (license license:bsd-3))) |
| 25732 | |
| 25733 | (define-public python-automat |
| 25734 | (package |
| 25735 | (name "python-automat") |
| 25736 | (version "24.8.1") |
| 25737 | (source (origin |
| 25738 | (method url-fetch) |
| 25739 | (uri (pypi-uri "Automat" version)) |
| 25740 | (sha256 |
| 25741 | (base32 |
| 25742 | "123d63k8wg9pfv9j7hr0kd1kw23m0rwdx7irsa55ncpncg7jfhmk")))) |
| 25743 | (build-system pyproject-build-system) |
| 25744 | (arguments |
| 25745 | (list |
| 25746 | #:phases |
| 25747 | #~(modify-phases %standard-phases |
| 25748 | (replace 'check |
| 25749 | (lambda* (#:key tests? test-flags #:allow-other-keys) |
| 25750 | (with-directory-excursion #$output |
| 25751 | (apply invoke "pytest" "-vv" test-flags)))) |
| 25752 | ;; Remove script, because it depends on python-twisted. |
| 25753 | (add-after 'unpack 'remove-entrypoint |
| 25754 | (lambda _ |
| 25755 | (substitute* "pyproject.toml" |
| 25756 | (("automat-visualize = \"automat._visualize:tool\"") ""))))))) |
| 25757 | (native-inputs |
| 25758 | (list python-pytest python-setuptools python-setuptools-scm python-wheel)) |
| 25759 | (propagated-inputs |
| 25760 | (list python-graphviz python-typing-extensions)) |
| 25761 | (home-page "https://github.com/glyph/Automat") |
| 25762 | (synopsis "Self-service finite-state machines") |
| 25763 | (description "Automat is a library for concise, idiomatic Python |
| 25764 | expression of finite-state automata (particularly deterministic finite-state |
| 25765 | transducers).") |
| 25766 | (license license:expat))) |
| 25767 | |
| 25768 | (define-public python-constantly |
| 25769 | (package |
| 25770 | (name "python-constantly") |
| 25771 | (version "23.10.4") |
| 25772 | (source |
| 25773 | (origin |
| 25774 | (method url-fetch) |
| 25775 | (uri (pypi-uri "constantly" version)) |
| 25776 | (sha256 |
| 25777 | (base32 "1gbw3izhn1gx1rgc61jbfr4dr535fxhynifp7jrhpb726c5bg4ma")))) |
| 25778 | (build-system pyproject-build-system) |
| 25779 | (arguments |
| 25780 | (list #:tests? #f)) ;cycles with python-twisted |
| 25781 | (native-inputs |
| 25782 | (list python-setuptools |
| 25783 | python-versioneer)) |
| 25784 | (home-page "https://github.com/twisted/constantly") |
| 25785 | (synopsis "Symbolic constants in Python") |
| 25786 | (description "Constantly is a Python library that provides symbolic |
| 25787 | constant support. It includes collections and constants with text, numeric, |
| 25788 | and bit flag values.") |
| 25789 | (license license:expat))) |
| 25790 | |
| 25791 | (define-public python-attrs |
| 25792 | (package |
| 25793 | (name "python-attrs") |
| 25794 | (version "26.1.0") |
| 25795 | (source |
| 25796 | (origin |
| 25797 | (method git-fetch) |
| 25798 | (uri (git-reference |
| 25799 | (url "https://github.com/python-attrs/attrs/") |
| 25800 | (commit version))) |
| 25801 | (file-name (git-file-name name version)) |
| 25802 | (sha256 |
| 25803 | (base32 "17gagrqbg4fg7prpsqx746frfzcml13lnzqjjsah0jqc5qxd8yaf")))) |
| 25804 | (build-system pyproject-build-system) |
| 25805 | (native-inputs |
| 25806 | (list python-hatch-fancy-pypi-readme |
| 25807 | python-hatch-vcs |
| 25808 | python-hatchling |
| 25809 | python-hypothesis |
| 25810 | python-pytest)) |
| 25811 | (home-page "https://github.com/python-attrs/attrs/") |
| 25812 | (synopsis "Attributes without boilerplate") |
| 25813 | (description "@code{attrs} is a Python package with class decorators that |
| 25814 | ease the chores of implementing the most common attribute-related object |
| 25815 | protocols.") |
| 25816 | (license license:expat))) |
| 25817 | |
| 25818 | (define-public python-attrs-bootstrap |
| 25819 | (package |
| 25820 | (inherit python-attrs) |
| 25821 | (name "python-attrs-bootstrap") |
| 25822 | (native-inputs (list python-hatchling |
| 25823 | python-hatch-fancy-pypi-readme |
| 25824 | python-hatch-vcs)) |
| 25825 | (arguments `(#:tests? #f)))) |
| 25826 | |
| 25827 | (define-public python-astroid |
| 25828 | (package |
| 25829 | (name "python-astroid") |
| 25830 | (version "4.0.4") |
| 25831 | (source |
| 25832 | (origin |
| 25833 | (method git-fetch) |
| 25834 | (uri (git-reference |
| 25835 | (url "https://github.com/PyCQA/astroid") |
| 25836 | (commit (string-append "v" version)))) |
| 25837 | (file-name (git-file-name name version)) |
| 25838 | (sha256 |
| 25839 | (base32 "0dfvih7drm22dvppjangaxlmrq21wazfyglhm3n32rgh6g6m6qms")))) |
| 25840 | (build-system pyproject-build-system) |
| 25841 | (native-inputs |
| 25842 | (list python-mypy-minimal |
| 25843 | python-pytest |
| 25844 | python-setuptools)) |
| 25845 | (home-page "https://github.com/PyCQA/astroid") |
| 25846 | (synopsis "Python source code base representation") |
| 25847 | (description "@code{python-astroid} provides a common base representation |
| 25848 | of Python source code for projects such as pychecker, pyreverse, pylint, etc. |
| 25849 | It provides a compatible representation which comes from the _ast module. It |
| 25850 | rebuilds the tree generated by the builtin _ast module by recursively walking |
| 25851 | down the AST and building an extended ast. The new node classes have |
| 25852 | additional methods and attributes for different usages. They include some |
| 25853 | support for static inference and local name scopes. Furthermore, astroid |
| 25854 | builds partial trees by inspecting living objects.") |
| 25855 | (license license:lgpl2.1+))) |
| 25856 | |
| 25857 | (define-public python-isbnlib |
| 25858 | (package |
| 25859 | (name "python-isbnlib") |
| 25860 | (version "3.10.14") |
| 25861 | (source |
| 25862 | (origin |
| 25863 | (method git-fetch) |
| 25864 | (uri (git-reference |
| 25865 | (url "https://github.com/xlcnd/isbnlib") |
| 25866 | (commit (string-append "v" version)))) |
| 25867 | (file-name (git-file-name name version)) |
| 25868 | (sha256 |
| 25869 | (base32 "07vpq8y0mn16489d1pl4zxgczgl1s2ydli4lci7f73z4zv179akp")))) |
| 25870 | (build-system pyproject-build-system) |
| 25871 | (arguments |
| 25872 | (list |
| 25873 | #:test-flags #~(list "-m" "not network"))) |
| 25874 | (native-inputs (list python-pytest python-setuptools)) |
| 25875 | (home-page "https://github.com/xlcnd/isbnlib") |
| 25876 | (synopsis "Python library to work with ISBN strings") |
| 25877 | (description |
| 25878 | "@code{python-isbnlib} is a (pure) python library that provides several |
| 25879 | useful methods and functions to validate, clean, transform, hyphenate and get |
| 25880 | metadata for ISBN strings. Its origin was as the core of isbntools. This |
| 25881 | short version, is suitable to be include as a dependency in other projects.") |
| 25882 | (license license:lgpl3+))) |
| 25883 | |
| 25884 | (define-public python-isoduration |
| 25885 | ;; XXX: The project might be abandoned, consider to remove when nothing |
| 25886 | ;; depends on it. |
| 25887 | (package |
| 25888 | (name "python-isoduration") |
| 25889 | (version "20.11.0") |
| 25890 | (source |
| 25891 | (origin |
| 25892 | (method git-fetch) |
| 25893 | (uri (git-reference |
| 25894 | (url "https://github.com/bolsote/isoduration") |
| 25895 | (commit version))) |
| 25896 | (file-name (git-file-name name version)) |
| 25897 | (sha256 |
| 25898 | (base32 "1naml13qa1inr6k0j25jgw49r3wnkvwq5xc0v4navz6mxlgsrfp8")))) |
| 25899 | (build-system pyproject-build-system) |
| 25900 | (arguments |
| 25901 | (list |
| 25902 | ;; E ModuleNotFoundError: No module named 'isodate' |
| 25903 | #:test-flags #~(list "--ignore=tests/test_benchmark.py"))) |
| 25904 | (native-inputs |
| 25905 | (list python-pytest |
| 25906 | python-setuptools)) |
| 25907 | (propagated-inputs |
| 25908 | (list python-arrow)) |
| 25909 | (home-page "https://github.com/bolsote/isoduration") |
| 25910 | (synopsis "Operations with ISO 8601 durations") |
| 25911 | (description "ISO 8601 is most commonly known as a way to exchange |
| 25912 | datetimes in textual format. A lesser known aspect of the standard is the |
| 25913 | representation of durations. The state of the art of ISO 8601 duration |
| 25914 | handling in Python is more or less limited to what's offered by isodate. This |
| 25915 | package attempts to address the shortcomings of @code{isodate}.") |
| 25916 | (license license:isc))) |
| 25917 | |
| 25918 | (define-public python-isort |
| 25919 | (package |
| 25920 | (name "python-isort") |
| 25921 | (version "9.0.1") |
| 25922 | (source |
| 25923 | (origin |
| 25924 | (method git-fetch) ;no tests in PyPI archive |
| 25925 | (uri (git-reference |
| 25926 | (url "https://github.com/PyCQA/isort") |
| 25927 | (commit version))) |
| 25928 | (file-name (git-file-name name version)) |
| 25929 | (modules '((guix build utils))) |
| 25930 | (snippet '(for-each delete-file (find-files "." "\\.whl$"))) |
| 25931 | (sha256 |
| 25932 | (base32 "0xrhrk245v7wqrh6ql1ysnfb1v6sh0mrzbvyaxq36hddvxdx7f45")))) |
| 25933 | (build-system pyproject-build-system) |
| 25934 | (arguments |
| 25935 | (list |
| 25936 | #:test-flags |
| 25937 | ;; Ignore benchmark and integration to reduce closure size. |
| 25938 | #~(list "--ignore=tests/benchmark/" |
| 25939 | "--ignore=tests/integration/" |
| 25940 | "--ignore=tests/unit/profiles/test_black.py" |
| 25941 | "-k" (string-join |
| 25942 | (list "not test_gitignore" |
| 25943 | "test_isort_supports_shared_profiles_issue_970" |
| 25944 | "test_requirements_dir" |
| 25945 | "test_requirements_finder" |
| 25946 | "test_sort_configurable_sort_issue_1732" |
| 25947 | "test_sort_imports_error_handling") |
| 25948 | " and not ")))) |
| 25949 | ;; TODO: Package example plugins separately, available in PyPI: |
| 25950 | ;; - example_isort_formatting_plugin |
| 25951 | ;; - example_isort_sorting_plugin |
| 25952 | ;; - example_shared_isort_profile |
| 25953 | (native-inputs |
| 25954 | (list python-black |
| 25955 | python-colorama |
| 25956 | python-hatch-vcs |
| 25957 | python-hatchling |
| 25958 | python-hypothesis |
| 25959 | python-pylama |
| 25960 | python-pytest)) |
| 25961 | (propagated-inputs |
| 25962 | ;; XXX: python-mypy-extensions can be dropped when |
| 25963 | ;; https://github.com/PyCQA/isort/issues/2629 is fixed. |
| 25964 | (list python-mypy-extensions)) |
| 25965 | (home-page "https://github.com/PyCQA/isort") |
| 25966 | (synopsis "Python utility/library to sort python imports") |
| 25967 | (description |
| 25968 | "@code{python-isort} is a python utility/library to sort imports |
| 25969 | alphabetically, and automatically separated into sections. It provides a |
| 25970 | command line utility, a python library and plugins for various editors.") |
| 25971 | (license license:expat))) |
| 25972 | |
| 25973 | (define-public python-configparser |
| 25974 | (package |
| 25975 | (name "python-configparser") |
| 25976 | (version "7.2.0") |
| 25977 | (source |
| 25978 | (origin |
| 25979 | (method url-fetch) |
| 25980 | (uri (pypi-uri "configparser" version)) |
| 25981 | (sha256 |
| 25982 | (base32 "0w3vichm4igwvh7r560rw58xi4s1yf9x1cyi6syszqqnx65cqadn")))) |
| 25983 | (build-system pyproject-build-system) |
| 25984 | (native-inputs |
| 25985 | (list python-pytest |
| 25986 | python-setuptools |
| 25987 | python-setuptools-scm |
| 25988 | python-wheel)) |
| 25989 | (home-page "https://github.com/jaraco/configparser/") |
| 25990 | (synopsis "Backport of configparser from python 3.5") |
| 25991 | (description "@code{python-configparser} is a backport of |
| 25992 | @code{configparser} from Python 3.5 so that it can be used directly |
| 25993 | in other versions.") |
| 25994 | (license license:expat))) |
| 25995 | |
| 25996 | (define-public python-mando |
| 25997 | (package |
| 25998 | (name "python-mando") |
| 25999 | (version "0.8.2") |
| 26000 | (source |
| 26001 | (origin |
| 26002 | (method url-fetch) |
| 26003 | (uri (pypi-uri "mando" version)) |
| 26004 | (sha256 |
| 26005 | (base32 "1ddn4h1fvc9f8z2p8l88jyazxnp0h7rmh711i2hwkipxlbcmk5jk")))) |
| 26006 | (build-system pyproject-build-system) |
| 26007 | (native-inputs |
| 26008 | (list python-pytest python-setuptools)) |
| 26009 | (home-page "https://mando.readthedocs.org/") |
| 26010 | (synopsis "Wrapper around argparse, allowing creation of complete CLI applications") |
| 26011 | (description |
| 26012 | "This package is a wrapper around argparse, allowing you to write complete CLI |
| 26013 | applications in seconds while maintaining all the flexibility.") |
| 26014 | (license license:expat))) |
| 26015 | |
| 26016 | (define-public python-mwclient |
| 26017 | (package |
| 26018 | (name "python-mwclient") |
| 26019 | (version "0.11.0") |
| 26020 | (source |
| 26021 | (origin |
| 26022 | (method git-fetch) |
| 26023 | (uri (git-reference |
| 26024 | (url "https://github.com/mwclient/mwclient") |
| 26025 | (commit (string-append "v" version)))) |
| 26026 | (file-name (git-file-name name version)) |
| 26027 | (sha256 |
| 26028 | (base32 "14kg353vzrwh7zks7zsza4hfb2n5vxprh9hnw4rjsimm8509axda")))) |
| 26029 | (build-system pyproject-build-system) |
| 26030 | (propagated-inputs |
| 26031 | (list python-requests-oauthlib)) |
| 26032 | (native-inputs |
| 26033 | (list python-mock |
| 26034 | python-pytest |
| 26035 | python-responses |
| 26036 | python-setuptools)) |
| 26037 | (home-page "https://github.com/btongminh/mwclient") |
| 26038 | (synopsis "MediaWiki API client") |
| 26039 | (description "This package provides a MediaWiki API client.") |
| 26040 | (license license:expat))) |
| 26041 | |
| 26042 | (define-public python-kneed |
| 26043 | (package |
| 26044 | (name "python-kneed") |
| 26045 | (version "0.8.5") |
| 26046 | (source |
| 26047 | (origin |
| 26048 | (method git-fetch) |
| 26049 | (uri (git-reference |
| 26050 | (url "https://github.com/arvkevi/kneed") |
| 26051 | (commit (string-append "v" version)))) |
| 26052 | (file-name (git-file-name name version)) |
| 26053 | (sha256 |
| 26054 | (base32 "0kcglaql1nqvjv5q62myybznii1n1akln5yacp63rg8xv7l0zad1")))) |
| 26055 | (build-system pyproject-build-system) |
| 26056 | (arguments |
| 26057 | (list |
| 26058 | #:test-flags #~(list "--ignore=tests/test_no_matplotlib.py"))) |
| 26059 | (native-inputs (list python-hatchling python-pytest)) |
| 26060 | (propagated-inputs (list python-matplotlib python-numpy python-scipy)) |
| 26061 | (home-page "https://github.com/arvkevi/kneed") |
| 26062 | (synopsis "Knee-point detection in Python") |
| 26063 | (description |
| 26064 | "This package implements the kneedle algorithm. Given a set of x and y |
| 26065 | values, kneed will return the knee point of the function. The knee point is |
| 26066 | the point of maximum curvature.") |
| 26067 | (license license:bsd-3))) |
| 26068 | |
| 26069 | (define-public python-diff-cover |
| 26070 | (package |
| 26071 | (name "python-diff-cover") |
| 26072 | (version "9.7.1") |
| 26073 | (source |
| 26074 | (origin |
| 26075 | (method url-fetch) |
| 26076 | (uri (pypi-uri "diff_cover" version)) |
| 26077 | (sha256 |
| 26078 | (base32 "0j1m8rfs080zsil516pvr0hy3x24dny4c77ilzfjgp5pcjy7hfx0")))) |
| 26079 | (build-system pyproject-build-system) |
| 26080 | (arguments |
| 26081 | (list |
| 26082 | #:test-flags |
| 26083 | ;; Dropp check of flake8 in tests. |
| 26084 | #~(list "-k" "not test_file_does_not_exist"))) |
| 26085 | (native-inputs |
| 26086 | (list python-pycodestyle |
| 26087 | python-poetry-core |
| 26088 | python-pyflakes |
| 26089 | python-pylint |
| 26090 | python-pytest |
| 26091 | python-pytest-datadir |
| 26092 | python-pytest-mock)) |
| 26093 | (propagated-inputs |
| 26094 | (list python-chardet |
| 26095 | python-jinja2 |
| 26096 | python-pluggy |
| 26097 | python-pygments |
| 26098 | python-setuptools ; For pkg_resources. |
| 26099 | python-tomli)) |
| 26100 | (home-page "https://github.com/Bachmann1234/diff_cover") |
| 26101 | (synopsis "Run coverage and linting reports on diffs") |
| 26102 | (description |
| 26103 | "Automatically find diff lines that need test coverage. It also finds |
| 26104 | diff lines that have violations (according to tools such as pycodestyle, |
| 26105 | pyflakes, flake8, or pylint). This is used as a code quality metric during |
| 26106 | code reviews.") |
| 26107 | (license license:asl2.0))) |
| 26108 | |
| 26109 | (define-public python-diff-match-patch |
| 26110 | (package |
| 26111 | (name "python-diff-match-patch") |
| 26112 | (version "20241021") |
| 26113 | (source |
| 26114 | (origin |
| 26115 | (method url-fetch) |
| 26116 | (uri (pypi-uri "diff_match_patch" version)) |
| 26117 | (sha256 |
| 26118 | (base32 |
| 26119 | "0wshhdnxvb7l45pjrj1fhrhvh7b6p1l2kvim559q9054kylmgbmy")))) |
| 26120 | (build-system pyproject-build-system) |
| 26121 | (native-inputs (list python-flit-core python-pytest)) |
| 26122 | (home-page "https://github.com/diff-match-patch-python/diff-match-patch") |
| 26123 | (synopsis "Synchronize plain text") |
| 26124 | (description "Diff Match and Patch libraries offer robust algorithms to |
| 26125 | perform the operations required for synchronizing plain text.") |
| 26126 | (license license:asl2.0))) |
| 26127 | |
| 26128 | (define-public python-icdiff |
| 26129 | (package |
| 26130 | (name "python-icdiff") |
| 26131 | (version "2.0.7") |
| 26132 | (source (origin |
| 26133 | (method git-fetch) |
| 26134 | (uri (git-reference |
| 26135 | (url "https://github.com/jeffkaufman/icdiff") |
| 26136 | (commit (string-append "release-" version)))) |
| 26137 | (file-name (git-file-name name version)) |
| 26138 | (sha256 |
| 26139 | (base32 |
| 26140 | "0kwgglbnpvsv5qb59yl0pvihr1ca5m8l6cq8hjski5y62g33zv2w")))) |
| 26141 | (build-system pyproject-build-system) |
| 26142 | (arguments |
| 26143 | (list #:tests? #f)) ; there are no test scripts |
| 26144 | (native-inputs (list python-setuptools python-wheel)) |
| 26145 | (home-page "https://www.jefftk.com/icdiff") |
| 26146 | (synopsis "Improved colored diff") |
| 26147 | (description "This package provides colored diff functions that highlight |
| 26148 | parts of the lines that were modified.") |
| 26149 | (license license:psfl))) |
| 26150 | |
| 26151 | (define-public python-dirsync |
| 26152 | (package |
| 26153 | (name "python-dirsync") |
| 26154 | (version "2.2.6") |
| 26155 | (source |
| 26156 | (origin |
| 26157 | (method url-fetch) |
| 26158 | (uri (pypi-uri "dirsync" version)) |
| 26159 | (sha256 |
| 26160 | (base32 |
| 26161 | "1g3h0lva0mgmm4i5z62h8jkv9y1mp5xlvl2w2nfa3galbgn5gdak")))) |
| 26162 | (build-system pyproject-build-system) |
| 26163 | (arguments |
| 26164 | ;; No tests in PyPI release and GitHub repository does not have the |
| 26165 | ;; latest release tag. |
| 26166 | (list #:tests? #f)) |
| 26167 | (native-inputs (list python-setuptools python-wheel)) |
| 26168 | (home-page "https://github.com/tkhyn/dirsync") |
| 26169 | (synopsis "Advanced directory tree synchronisation tool") |
| 26170 | (description |
| 26171 | "Dirsync is an advanced directory tree synchronisation tool.") |
| 26172 | (license license:expat))) |
| 26173 | |
| 26174 | (define-public python-levenshtein |
| 26175 | (package |
| 26176 | (name "python-levenshtein") |
| 26177 | ;; 0.27.3 (2025-11-01), the latest changes provide compatibility with |
| 26178 | ;; Cython 3.2.x, see: <https://github.com/rapidfuzz/Levenshtein/pull/84>. |
| 26179 | (properties '((commit . "7c905d9f4e788a95f5f1696517e6ff06d639943f") |
| 26180 | (revision . "0"))) |
| 26181 | (version (git-version "0.27.3" |
| 26182 | (assoc-ref properties 'revision) |
| 26183 | (assoc-ref properties 'commit))) |
| 26184 | (source |
| 26185 | (origin |
| 26186 | (method git-fetch) |
| 26187 | (uri (git-reference |
| 26188 | (url "https://github.com/rapidfuzz/Levenshtein") |
| 26189 | (commit (assoc-ref properties 'commit)))) |
| 26190 | (file-name (git-file-name name version)) |
| 26191 | (sha256 |
| 26192 | (base32 "14jdpxyc28bqjv3rmj4a5nrg0p6v6hazqilh1hdwjrd71hlxa6s3")))) |
| 26193 | (build-system pyproject-build-system) |
| 26194 | (propagated-inputs (list python-rapidfuzz)) |
| 26195 | (native-inputs |
| 26196 | (list python-cython |
| 26197 | python-pytest |
| 26198 | python-scikit-build-core |
| 26199 | rapidfuzz-cpp)) |
| 26200 | (home-page "https://github.com/rapidfuzz/Levenshtein") |
| 26201 | (synopsis "Fast computation of Levenshtein distance and string similarity") |
| 26202 | (description |
| 26203 | "The Levenshtein Python C extension module contains functions for fast computation of |
| 26204 | @enumerate |
| 26205 | @item Levenshtein (edit) distance, and edit operations |
| 26206 | @item string similarity |
| 26207 | @item approximate median strings, and generally string averaging |
| 26208 | @item string sequence and set similarity |
| 26209 | @end enumerate |
| 26210 | It supports both normal and Unicode strings.") |
| 26211 | (license license:gpl2+))) |
| 26212 | |
| 26213 | (define-public python-factory-boy |
| 26214 | (package |
| 26215 | (name "python-factory-boy") |
| 26216 | (version "3.3.3") |
| 26217 | (source |
| 26218 | (origin |
| 26219 | (method url-fetch) |
| 26220 | (uri (pypi-uri "factory_boy" version)) |
| 26221 | (sha256 |
| 26222 | (base32 "00rx3v5y5l03vlkq6xqj4r7zbnlrx23h45mlyb3zm38j4v964s46")))) |
| 26223 | (build-system pyproject-build-system) |
| 26224 | (arguments |
| 26225 | ;; Tests are not included in the tarball. |
| 26226 | `(#:tests? #f)) |
| 26227 | (native-inputs (list python-setuptools)) |
| 26228 | (propagated-inputs (list python-faker)) |
| 26229 | (home-page "https://github.com/FactoryBoy/factory_boy") |
| 26230 | (synopsis "Versatile test fixtures replacement") |
| 26231 | (description "Factory_boy is a fixtures replacement based on thoughtbot’s |
| 26232 | factory_girl. As a fixtures replacement tool, it aims to replace static, hard |
| 26233 | to maintain fixtures with easy-to-use factories for complex object. Instead |
| 26234 | of building an exhaustive test setup with every possible combination of corner |
| 26235 | cases, factory_boy allows you to use objects customized for the current test, |
| 26236 | while only declaring the test-specific fields.") |
| 26237 | (license license:expat))) |
| 26238 | |
| 26239 | (define-public python-gtts |
| 26240 | (package |
| 26241 | (name "python-gtts") |
| 26242 | (version "2.5.4") |
| 26243 | (source |
| 26244 | (origin |
| 26245 | (method git-fetch) |
| 26246 | (uri (git-reference |
| 26247 | (url "https://github.com/pndurette/gTTS") |
| 26248 | (commit (string-append "v" version)))) |
| 26249 | (file-name (git-file-name name version)) |
| 26250 | (sha256 |
| 26251 | (base32 "0s1039c94lpijxidiprb8hq8v6z8zqf19xls3xlyy30jq7nx295g")))) |
| 26252 | (build-system pyproject-build-system) |
| 26253 | (arguments |
| 26254 | ;; Disable tests that require internet. |
| 26255 | (list #:test-flags '(list "-k" "not net"))) |
| 26256 | (native-inputs |
| 26257 | (list python-pytest python-setuptools python-testfixtures)) |
| 26258 | (propagated-inputs |
| 26259 | (list python-click-8.1 python-requests)) |
| 26260 | (home-page "https://github.com/pndurette/gTTS") |
| 26261 | (synopsis "Google Translate text-to-speech interface") |
| 26262 | (description |
| 26263 | "Google Text-to-Speech (gTTS) is a Python library and CLI tool to |
| 26264 | interface with the Google Translate text-to-speech API. It lets you write |
| 26265 | spoken MP3 data to a file, a file-like object (bytestring) for further audio |
| 26266 | manipulation, or @code{stdout}.") |
| 26267 | (license license:expat))) |
| 26268 | |
| 26269 | (define-public python-packaging-legacy |
| 26270 | (package |
| 26271 | (name "python-packaging-legacy") |
| 26272 | (version "23.0.post0") |
| 26273 | (source |
| 26274 | (origin |
| 26275 | (method url-fetch) |
| 26276 | (uri (pypi-uri "packaging_legacy" version)) |
| 26277 | (sha256 |
| 26278 | (base32 "1nyryxlc7fd4c0jmfp99az1s61vfv5xbi6017wqi4wd7j4ia8x69")))) |
| 26279 | (build-system pyproject-build-system) |
| 26280 | (propagated-inputs (list python-packaging)) |
| 26281 | (native-inputs |
| 26282 | (list python-pretend |
| 26283 | python-pytest |
| 26284 | python-setuptools |
| 26285 | python-wheel)) |
| 26286 | (home-page "https://pypi.org/project/packaging-legacy/") |
| 26287 | (synopsis "Core utilities for legacy Python packages") |
| 26288 | (description "This library provides support for legacy Python Packaging |
| 26289 | functionality removed from @code{packaging}.") |
| 26290 | (license license:asl2.0))) |
| 26291 | |
| 26292 | (define-public python-relatorio |
| 26293 | (package |
| 26294 | (name "python-relatorio") |
| 26295 | (version "0.11.1") |
| 26296 | (source |
| 26297 | (origin |
| 26298 | (method url-fetch) |
| 26299 | (uri (pypi-uri "relatorio" version)) |
| 26300 | (sha256 |
| 26301 | (base32 "0qa8f9xvvc60i41vpf386jqx65379dnn9xpjwp8zaibba5raz83v")))) |
| 26302 | (build-system pyproject-build-system) |
| 26303 | (native-inputs |
| 26304 | (list python-pytest |
| 26305 | python-setuptools)) |
| 26306 | (propagated-inputs |
| 26307 | (list python-genshi |
| 26308 | python-lxml |
| 26309 | python-magic)) |
| 26310 | (home-page "https://relatorio.tryton.org/") |
| 26311 | (synopsis "Templating library able to output ODT and PDF files") |
| 26312 | (description |
| 26313 | "Relatorio is a templating library which provides a way to easily output |
| 26314 | ODT, ODS, PNG, SVG and several other kinds of files. Support for more |
| 26315 | filetypes can be easily added by creating plugins for them.") |
| 26316 | (license license:gpl3+))) |
| 26317 | |
| 26318 | (define-public python-radon |
| 26319 | (package |
| 26320 | (name "python-radon") |
| 26321 | (version "6.0.1") |
| 26322 | (source |
| 26323 | (origin |
| 26324 | (method git-fetch) |
| 26325 | (uri (git-reference |
| 26326 | (url "https://github.com/rubik/radon") |
| 26327 | (commit (string-append "v" version)))) |
| 26328 | (file-name (git-file-name name version)) |
| 26329 | (sha256 |
| 26330 | (base32 "01n3idnrglgbjgwvvgs7yg9amjda3zs2659sp2zqpllp9gva73y9")))) |
| 26331 | (build-system pyproject-build-system) |
| 26332 | (arguments |
| 26333 | (list |
| 26334 | #:phases |
| 26335 | #~(modify-phases %standard-phases |
| 26336 | (add-after 'unpack 'relax-requirements |
| 26337 | (lambda _ |
| 26338 | (substitute* (list "pyproject.toml" "requirements.txt") |
| 26339 | (("(mando.*>=0\\.6),<0\\.8" _ mando-lower-bound) |
| 26340 | mando-lower-bound))))))) |
| 26341 | (propagated-inputs (list python-colorama python-mando)) |
| 26342 | (native-inputs (list python-poetry-core python-pytest python-pytest-mock |
| 26343 | python-setuptools)) |
| 26344 | (home-page "https://radon.readthedocs.org/") |
| 26345 | (synopsis "Code Metrics in Python") |
| 26346 | (description |
| 26347 | "Radon is a Python tool which computes various code metrics. Supported |
| 26348 | metrics are: |
| 26349 | @itemize @bullet |
| 26350 | @item raw metrics: SLOC, comment lines, blank lines, &c. |
| 26351 | @item Cyclomatic Complexity (i.e., McCabe’s Complexity) |
| 26352 | @item Halstead metrics (all of them) |
| 26353 | @item the Maintainability Index (a Visual Studio metric) |
| 26354 | @end itemize") |
| 26355 | (license license:expat))) |
| 26356 | |
| 26357 | (define-public python-rgbxy |
| 26358 | (package |
| 26359 | (name "python-rgbxy") |
| 26360 | (version "0.5") |
| 26361 | (source |
| 26362 | (origin |
| 26363 | (method url-fetch) |
| 26364 | (uri (pypi-uri "rgbxy" version)) |
| 26365 | (sha256 |
| 26366 | (base32 "0c3dgm1rf7ih79pgkj7adffn8hlyqh5qah8rbzlq436kz3srk83q")))) |
| 26367 | (build-system pyproject-build-system) |
| 26368 | (arguments |
| 26369 | (list #:tests? #f)) ;no tests in PyPI or Git |
| 26370 | (native-inputs |
| 26371 | (list python-setuptools)) |
| 26372 | (home-page "https://github.com/benknight/hue-python-rgb-converter") |
| 26373 | (synopsis "RGB conversion tool in Python") |
| 26374 | (description |
| 26375 | "This package implements functionality of RGB/CIE1931 'xy' gammuts |
| 26376 | conversion: Gamut A, B, and C.") |
| 26377 | (license license:expat))) |
| 26378 | |
| 26379 | (define-public python-jsonpointer |
| 26380 | (package |
| 26381 | (name "python-jsonpointer") |
| 26382 | (version "3.1.1") |
| 26383 | (source |
| 26384 | (origin |
| 26385 | (method git-fetch) |
| 26386 | (uri (git-reference |
| 26387 | (url "https://github.com/stefankoegl/python-json-pointer") |
| 26388 | (commit (string-append "v" version)))) |
| 26389 | (file-name (git-file-name name version)) |
| 26390 | (sha256 |
| 26391 | (base32 "1k7szx4k2h3zidw01i96fg9x5gnir5fdvlnpgb48xhg0si12ly1y")))) |
| 26392 | (build-system pyproject-build-system) |
| 26393 | (arguments (list #:test-backend #~'unittest)) |
| 26394 | (native-inputs |
| 26395 | (list python-setuptools)) |
| 26396 | (home-page "https://github.com/stefankoegl/python-json-pointer") |
| 26397 | (synopsis "Identify specific nodes in a JSON document") |
| 26398 | (description |
| 26399 | "@code{jsonpointer} allows you to access specific nodes by path in a JSON |
| 26400 | document (see RFC 6901).") |
| 26401 | (license license:bsd-3))) |
| 26402 | |
| 26403 | (define-public python-jsonpatch |
| 26404 | (package |
| 26405 | (name "python-jsonpatch") |
| 26406 | (version "1.33") |
| 26407 | (source |
| 26408 | (origin |
| 26409 | (method git-fetch) |
| 26410 | ;; pypi version lacks tests.js |
| 26411 | (uri (git-reference |
| 26412 | (url "https://github.com/stefankoegl/python-json-patch") |
| 26413 | (commit (string-append "v" version)))) |
| 26414 | (file-name (git-file-name name version)) |
| 26415 | (sha256 |
| 26416 | (base32 "0qidj3vrklygsid40y6qgxclssd85hbxnic1av833iy4hbml2w14")))) |
| 26417 | (build-system pyproject-build-system) |
| 26418 | (arguments |
| 26419 | (list #:test-backend #~'custom |
| 26420 | #:test-flags #~(list "tests.py"))) |
| 26421 | (native-inputs |
| 26422 | (list python-setuptools)) |
| 26423 | (propagated-inputs |
| 26424 | (list python-jsonpointer)) |
| 26425 | (home-page "https://github.com/stefankoegl/python-json-patch") |
| 26426 | (synopsis "Applying JSON Patches in Python 2.6+ and 3.x") |
| 26427 | (description "@code{jsonpatch} is a library and program that allows |
| 26428 | applying JSON Patches according to RFC 6902.") |
| 26429 | (license license:bsd-3))) |
| 26430 | |
| 26431 | (define-public python-rfc3987-syntax |
| 26432 | (package |
| 26433 | (name "python-rfc3987-syntax") |
| 26434 | (version "1.1.0") |
| 26435 | (source |
| 26436 | (origin |
| 26437 | (method git-fetch) |
| 26438 | (uri (git-reference |
| 26439 | (url "https://github.com/willynilly/rfc3987-syntax") |
| 26440 | (commit (string-append "v" version)))) |
| 26441 | (file-name (git-file-name name version)) |
| 26442 | (sha256 |
| 26443 | (base32 "13nmzq1ra5660c3k29c937q4kwq7qj7z6dv9bgr1ph57qb3kyc7a")))) |
| 26444 | (build-system pyproject-build-system) |
| 26445 | (native-inputs |
| 26446 | (list python-hatchling |
| 26447 | python-pytest)) |
| 26448 | (propagated-inputs |
| 26449 | (list python-lark)) |
| 26450 | (home-page "https://github.com/willynilly/rfc3987-syntax") |
| 26451 | (synopsis "RFC 3987 IRI validation built on a Lark grammar") |
| 26452 | (description |
| 26453 | "This package validates Internationalized Resource Identifiers (IRIs) and |
| 26454 | their components against the ABNF grammar from RFC 3987. Built on the Lark |
| 26455 | parser, it is an MIT-licensed alternative to the GPL-licensed @code{rfc3987} |
| 26456 | package, and provides the @code{format-nongpl} extra required by recent |
| 26457 | @code{jsonschema} releases.") |
| 26458 | (license license:expat))) |
| 26459 | |
| 26460 | (define-public python-rfc3986 |
| 26461 | (package |
| 26462 | (name "python-rfc3986") |
| 26463 | (version "2.0.0") |
| 26464 | (source |
| 26465 | (origin |
| 26466 | (method url-fetch) |
| 26467 | (uri (pypi-uri "rfc3986" version)) |
| 26468 | (sha256 |
| 26469 | (base32 "0716rg74cpmhi9f77ypnwcdsyfjplsgk1rnnmadq5zabpnfwzalp")))) |
| 26470 | (build-system pyproject-build-system) |
| 26471 | (native-inputs |
| 26472 | (list python-pytest python-setuptools)) |
| 26473 | (home-page "https://rfc3986.readthedocs.io/") |
| 26474 | (synopsis "Parse and validate URI references") |
| 26475 | (description |
| 26476 | "@code{rfc3986} is a Python implementation of RFC@tie{}3986 including |
| 26477 | validation and authority parsing. This module also supports RFC@tie{}6874 |
| 26478 | which adds support for zone identifiers to IPv6 addresses.") |
| 26479 | (license license:asl2.0))) |
| 26480 | |
| 26481 | (define-public python-rfc3986-validator |
| 26482 | (package |
| 26483 | (name "python-rfc3986-validator") |
| 26484 | (version "0.1.1") |
| 26485 | (source |
| 26486 | (origin |
| 26487 | (method url-fetch) |
| 26488 | (uri (pypi-uri "rfc3986_validator" version)) |
| 26489 | (sha256 |
| 26490 | (base32 "0mfh82r37ma5n54n8ibnqvmwr3j3f2ixqfjfmv1rwfqvjbkvsi1x")))) |
| 26491 | (build-system pyproject-build-system) |
| 26492 | (native-inputs |
| 26493 | (list python-pytest |
| 26494 | python-rfc3987 |
| 26495 | python-setuptools)) |
| 26496 | (home-page "https://github.com/naimetti/rfc3986-validator") |
| 26497 | (synopsis "Pure python rfc3986 validator") |
| 26498 | (description "This package implements a URI validator according to RFC3986 |
| 26499 | in pure Python.") |
| 26500 | (license license:expat))) |
| 26501 | |
| 26502 | (define-public python-rfc3987 |
| 26503 | (package |
| 26504 | (name "python-rfc3987") |
| 26505 | (version "1.3.8") |
| 26506 | (source |
| 26507 | (origin |
| 26508 | (method url-fetch) |
| 26509 | (uri (pypi-uri "rfc3987" version)) |
| 26510 | (sha256 |
| 26511 | (base32 |
| 26512 | "0cx7bhyjaylwnf9armxrkb3r0s37vf0vqf3bhbll9mb0lmbx5i6k")))) |
| 26513 | (build-system pyproject-build-system) |
| 26514 | (arguments |
| 26515 | (list #:test-backend #~'custom |
| 26516 | #:test-flags #~(list "-m" "doctest" "rfc3987.py"))) |
| 26517 | (native-inputs |
| 26518 | (list python-setuptools)) |
| 26519 | ;; Source: <https://codeberg.org/atufi/rfc3987>. |
| 26520 | (home-page "https://pypi.org/project/rfc3987/") |
| 26521 | (synopsis "Parsing and validation of URIs (RFC 3986) and IRIs (RFC 3987)") |
| 26522 | (description "@code{rfc3987} provides routines for parsing and |
| 26523 | validation of URIs (see RFC 3986) and IRIs (see RFC 3987).") |
| 26524 | (license license:gpl3+))) |
| 26525 | |
| 26526 | ;; The latest commit contains fixes for building with both python3 and python2. |
| 26527 | (define-public python-rfc6555 |
| 26528 | (package |
| 26529 | (name "python-rfc6555") |
| 26530 | (version "0.1.0") |
| 26531 | (source |
| 26532 | (origin |
| 26533 | (method git-fetch) |
| 26534 | (uri (git-reference |
| 26535 | (url "https://github.com/sethmlarson/rfc6555") |
| 26536 | (commit (string-append "v" version)))) |
| 26537 | (file-name (git-file-name name version)) |
| 26538 | (sha256 |
| 26539 | (base32 "0cynzrs3l6ywmkpcpx9m36604dav64sk3rk1s12hj49qqyx20v1f")))) |
| 26540 | (build-system pyproject-build-system) |
| 26541 | (arguments |
| 26542 | (list |
| 26543 | ;; Other tests require network access. |
| 26544 | #:test-flags #~(list "tests/test_ipv6.py"))) |
| 26545 | (native-inputs (list python-pytest python-setuptools)) |
| 26546 | (home-page "https://pypi.org/project/rfc6555/") |
| 26547 | (synopsis "Python implementation of RFC 6555") |
| 26548 | (description |
| 26549 | "Python implementation of the Happy Eyeballs Algorithm described in RFC |
| 26550 | 6555. Provided with a single file and dead-simple API to allow easy vendoring |
| 26551 | and integration into other projects.") |
| 26552 | (license license:asl2.0))) |
| 26553 | |
| 26554 | (define-public python-sacn |
| 26555 | (package |
| 26556 | (name "python-sacn") |
| 26557 | (version "1.11.0") |
| 26558 | (source |
| 26559 | (origin |
| 26560 | (method url-fetch) |
| 26561 | (uri (pypi-uri "sacn" version)) |
| 26562 | (sha256 |
| 26563 | (base32 "1sp0jmrjsd9g62kgi177fw4hi56h21s2p9khia3idmixgz53k2ql")))) |
| 26564 | (build-system pyproject-build-system) |
| 26565 | (native-inputs (list python-pytest python-setuptools python-wheel)) |
| 26566 | (home-page "https://github.com/Hundemeier/sacn") |
| 26567 | (synopsis "Python library for sending and receiving sACN data") |
| 26568 | (description |
| 26569 | "This package provides a Python library for sending and receiving |
| 26570 | sACN (Streaming Architecture for Control Networks) data, a standard |
| 26571 | protocol used for controlling lighting and other devices over |
| 26572 | a network.") |
| 26573 | (license license:expat))) |
| 26574 | |
| 26575 | (define-public python-bagit |
| 26576 | (package |
| 26577 | (name "python-bagit") |
| 26578 | (version "1.9.0") |
| 26579 | (source |
| 26580 | (origin |
| 26581 | (method git-fetch) ; no tests in PyPI |
| 26582 | (uri (git-reference |
| 26583 | (url "https://github.com/LibraryOfCongress/bagit-python") |
| 26584 | (commit (string-append "v" version)))) |
| 26585 | (file-name (git-file-name name version)) |
| 26586 | (sha256 |
| 26587 | (base32 |
| 26588 | "12qfqha70vhc8pclq0kzv7xk0i44ramnlkphybv7419vdl4aay40")))) |
| 26589 | (build-system pyproject-build-system) |
| 26590 | (arguments |
| 26591 | (list #:test-flags #~(list "test.py"))) |
| 26592 | (native-inputs |
| 26593 | (list python-pytest python-setuptools python-setuptools-scm python-wheel)) |
| 26594 | (home-page "https://libraryofcongress.github.io/bagit-python/") |
| 26595 | (synopsis "Create and validate BagIt packages") |
| 26596 | (description "Bagit is a Python library and command line utility for working |
| 26597 | with BagIt style packages. BagIt is a minimalist packaging format for digital |
| 26598 | preservation.") |
| 26599 | (license license:cc0))) |
| 26600 | |
| 26601 | (define-public python-prov |
| 26602 | (package |
| 26603 | (name "python-prov") |
| 26604 | (version "2.1.1") |
| 26605 | (source |
| 26606 | (origin |
| 26607 | (method git-fetch) |
| 26608 | (uri (git-reference |
| 26609 | (url "https://github.com/trungdong/prov") |
| 26610 | (commit version))) |
| 26611 | (file-name (git-file-name name version)) |
| 26612 | (sha256 |
| 26613 | (base32 "14y58x4gqc4lyhgy6iamzxamwj02sqf2bkma6p5ddiqsnilc4wx7")))) |
| 26614 | (build-system pyproject-build-system) |
| 26615 | (arguments |
| 26616 | (list |
| 26617 | #:test-backend #~'unittest |
| 26618 | #:test-flags #~(list "discover" "-s" "src") |
| 26619 | #:phases |
| 26620 | #~(modify-phases %standard-phases |
| 26621 | (add-before 'check 'disable-tests |
| 26622 | (lambda _ |
| 26623 | ;; prov.model.ProvException: The provided identifier |
| 26624 | ;; "http://www.example.org/bundle" is not valid |
| 26625 | (substitute* "src/prov/tests/qnames.py" |
| 26626 | (("test_namespace_inheritance") |
| 26627 | "disabled_test_namespace_inheritance") |
| 26628 | (("test_default_namespace_inheritance") |
| 26629 | "disabled_test_default_namespace_inheritance"))))))) |
| 26630 | (native-inputs |
| 26631 | (list python-setuptools)) |
| 26632 | (propagated-inputs |
| 26633 | (list graphviz |
| 26634 | python-dateutil |
| 26635 | python-networkx |
| 26636 | python-pydot |
| 26637 | ;; optional dependencies, also needed for tests |
| 26638 | python-lxml |
| 26639 | python-rdflib)) |
| 26640 | (home-page "https://github.com/trungdong/prov") |
| 26641 | (synopsis |
| 26642 | "W3C Provenance Data Model supporting PROV-JSON, PROV-XML and PROV-O (RDF)") |
| 26643 | (description |
| 26644 | "This package provides a library for W3C Provenance Data Model supporting |
| 26645 | PROV-O (RDF), PROV-XML, PROV-JSON import/export.") |
| 26646 | (license license:expat))) |
| 26647 | |
| 26648 | (define-public python-arcp |
| 26649 | (package |
| 26650 | (name "python-arcp") |
| 26651 | (version "0.2.1") |
| 26652 | (source |
| 26653 | (origin |
| 26654 | (method git-fetch) |
| 26655 | (uri (git-reference |
| 26656 | (url "https://github.com/stain/arcp-py") |
| 26657 | (commit version))) |
| 26658 | (file-name (git-file-name name version)) |
| 26659 | (sha256 |
| 26660 | (base32 "1wjygci60nmcdrgrhb0vwqmhspzdv3g69x2b92vjxq709ifrpgqp")))) |
| 26661 | (build-system pyproject-build-system) |
| 26662 | (arguments |
| 26663 | (list |
| 26664 | #:phases |
| 26665 | #~(modify-phases %standard-phases |
| 26666 | (add-after 'unpack 'patch-tests |
| 26667 | (lambda _ |
| 26668 | (substitute* "tests/test_parse.py" |
| 26669 | (("ni:///") |
| 26670 | "ni:"))))))) |
| 26671 | (native-inputs (list python-pytest python-setuptools)) |
| 26672 | (home-page "https://arcp.readthedocs.io/") |
| 26673 | (synopsis "Archive and Package URI parser and generator") |
| 26674 | (description |
| 26675 | "@acronym{arcp, Archive and Package} provides functions for creating |
| 26676 | @code{arcp_} URIs, which can be used for identifying or parsing hypermedia |
| 26677 | files packaged in an archive or package, like a ZIP file. arcp URIs can be |
| 26678 | used to consume or reference hypermedia resources bundled inside a file |
| 26679 | archive or an application package, as well as to resolve URIs for archive |
| 26680 | resources within a programmatic framework. This URI scheme provides |
| 26681 | mechanisms to generate a unique base URI to represent the root of the archive, |
| 26682 | so that relative URI references in a bundled resource can be resolved within |
| 26683 | the archive without having to extract the archive content on the local file |
| 26684 | system. An arcp URI can be used for purposes of isolation (e.g. when |
| 26685 | consuming multiple archives), security constraints (avoiding \"climb out\" |
| 26686 | from the archive), or for externally identiyfing sub-resources referenced by |
| 26687 | hypermedia formats.") |
| 26688 | (license license:asl2.0))) |
| 26689 | |
| 26690 | ;; XXX: Project has no updates since 2019, consider to remove when nothing |
| 26691 | ;; depends on it in the next refresh cycle. |
| 26692 | ;; See: <https://github.com/pipermerriam/flex/issues/237>. |
| 26693 | (define-public python-flex |
| 26694 | (package |
| 26695 | (name "python-flex") |
| 26696 | (version "6.14.1") |
| 26697 | (source |
| 26698 | (origin |
| 26699 | (method url-fetch) |
| 26700 | (uri (pypi-uri "flex" version)) |
| 26701 | (sha256 |
| 26702 | (base32 |
| 26703 | "1sr91f5sqywj4040jm3cq4333fp8hbmmr7v6v05a3h0sgyixcbi9")))) |
| 26704 | (build-system pyproject-build-system) |
| 26705 | (arguments (list #:tests? #f)) ;no tests in PyPI archive |
| 26706 | (native-inputs |
| 26707 | (list python-setuptools)) |
| 26708 | (propagated-inputs |
| 26709 | (list python-click |
| 26710 | python-jsonpointer |
| 26711 | python-pyyaml |
| 26712 | python-requests |
| 26713 | python-rfc3987 |
| 26714 | python-six |
| 26715 | python-strict-rfc3339 |
| 26716 | python-validate-email)) |
| 26717 | (home-page "https://github.com/pipermerriam/flex") |
| 26718 | (synopsis "Validates Swagger schemata") |
| 26719 | (description "@code{flex} can be used to validate Swagger schemata.") |
| 26720 | (license license:bsd-3))) |
| 26721 | |
| 26722 | (define-public python-marshmallow |
| 26723 | (package |
| 26724 | (name "python-marshmallow") |
| 26725 | (version "4.0.0") |
| 26726 | (source |
| 26727 | (origin |
| 26728 | (method url-fetch) |
| 26729 | (uri (pypi-uri "marshmallow" version)) |
| 26730 | (sha256 |
| 26731 | (base32 "0mcd5aqs33hijapnj2a3g580pfaghp8h3vcpzdf979wrqam80viv")))) |
| 26732 | (build-system pyproject-build-system) |
| 26733 | (arguments |
| 26734 | (list |
| 26735 | ;; tests: x86_64 1117 passed |
| 26736 | ;; i686-linux 1116 passed, 1 deselected |
| 26737 | #:test-flags |
| 26738 | #~(list #$@(if (target-64bit?) |
| 26739 | '() |
| 26740 | ;; OverflowError |
| 26741 | '((string-append "--deselect=tests/test_utils.py" |
| 26742 | "::test_from_timestamp_with_overflow_value")))))) |
| 26743 | (native-inputs |
| 26744 | (list python-flit-core |
| 26745 | python-pytest |
| 26746 | python-simplejson |
| 26747 | tzdata-for-tests)) |
| 26748 | (home-page "https://github.com/marshmallow-code/marshmallow") |
| 26749 | (synopsis "Convert complex datatypes to and from native Python datatypes") |
| 26750 | (description |
| 26751 | "@code{marshmallow} provides a library for converting complex datatypes |
| 26752 | to and from native Python datatypes.") |
| 26753 | (license license:expat))) |
| 26754 | |
| 26755 | (define-public python-marshmallow-3 |
| 26756 | (package |
| 26757 | (inherit python-marshmallow) |
| 26758 | (version "3.22.0") |
| 26759 | (source |
| 26760 | (origin |
| 26761 | (method url-fetch) |
| 26762 | (uri (pypi-uri "marshmallow" version)) |
| 26763 | (sha256 |
| 26764 | (base32 "0gl2qmq5sqf1b3f84zd7yzkznaknr6j5lnbxcfw0n8ja20lzawj9")))) |
| 26765 | (arguments '()) |
| 26766 | (native-inputs |
| 26767 | (list python-pytest |
| 26768 | python-pytz |
| 26769 | python-simplejson |
| 26770 | python-flit-core)) |
| 26771 | (propagated-inputs |
| 26772 | (list python-packaging)))) |
| 26773 | |
| 26774 | |
| 26775 | (define-public python-apispec |
| 26776 | (package |
| 26777 | (name "python-apispec") |
| 26778 | (version "6.8.2") |
| 26779 | (source |
| 26780 | (origin |
| 26781 | (method url-fetch) |
| 26782 | (uri (pypi-uri "apispec" version)) |
| 26783 | (sha256 |
| 26784 | (base32 "09lza66036a3i1blwrc6qpvw48pzflmabhd0dfshq9ghzjwnjnyf")))) |
| 26785 | (build-system pyproject-build-system) |
| 26786 | (native-inputs |
| 26787 | (list python-flit-core |
| 26788 | python-openapi-spec-validator |
| 26789 | python-pytest)) |
| 26790 | (propagated-inputs |
| 26791 | (list python-marshmallow |
| 26792 | python-packaging |
| 26793 | python-pyyaml)) |
| 26794 | (home-page "https://github.com/marshmallow-code/apispec") |
| 26795 | (synopsis "Swagger/OpenAPI specification generator") |
| 26796 | (description |
| 26797 | "@code{python-apispec} is a pluggable API specification generator. It |
| 26798 | currently supports the OpenAPI specification, formerly known as Swagger.") |
| 26799 | (license license:expat))) |
| 26800 | |
| 26801 | (define-public python-apispec-webframeworks |
| 26802 | (package |
| 26803 | (name "python-apispec-webframeworks") |
| 26804 | (version "1.2.0") |
| 26805 | (source |
| 26806 | (origin |
| 26807 | (method url-fetch) |
| 26808 | (uri (pypi-uri "apispec_webframeworks" version)) |
| 26809 | (sha256 |
| 26810 | (base32 "10gxjwmk8w67b7vcivcky4hrpv1gx8acrshnyp1169va4s62i2an")))) |
| 26811 | (build-system pyproject-build-system) |
| 26812 | (native-inputs |
| 26813 | (list python-aiohttp |
| 26814 | python-flit-core |
| 26815 | python-bottle |
| 26816 | python-flask |
| 26817 | python-pytest |
| 26818 | python-pyyaml |
| 26819 | python-tornado |
| 26820 | python-wheel)) |
| 26821 | (propagated-inputs |
| 26822 | (list python-apispec)) |
| 26823 | (home-page "https://github.com/marshmallow-code/apispec-webframeworks") |
| 26824 | (synopsis "Web framework plugins for apispec") |
| 26825 | (description "This package provides plugins for using @code{apispec} with |
| 26826 | web frameworks.") |
| 26827 | (license license:expat))) |
| 26828 | |
| 26829 | (define-public python-flasgger |
| 26830 | (package |
| 26831 | (name "python-flasgger") |
| 26832 | (version "0.9.7.1") |
| 26833 | (source |
| 26834 | (origin |
| 26835 | (method git-fetch) |
| 26836 | (uri (git-reference |
| 26837 | (url "https://github.com/rochacbruno/flasgger") |
| 26838 | (commit (string-append "v" version)))) |
| 26839 | (file-name (git-file-name name version)) |
| 26840 | (sha256 |
| 26841 | (base32 "08dnn19swfa5lsscj38hil41b3xnqvwgwnx9q2vg9kv26bs1zcah")) |
| 26842 | (patches |
| 26843 | (list |
| 26844 | (origin |
| 26845 | (method url-fetch) |
| 26846 | (uri |
| 26847 | (string-append "https://github.com/flasgger/flasgger/commit/" |
| 26848 | "08591b60e988c0002fcf1b1e9f98b78e041d2732.patch")) |
| 26849 | (sha256 |
| 26850 | (base32 "0a9gprhbm4xjc5pg01agh6i99alkknah7z6281f0z8amjyss91rg"))))))) |
| 26851 | (build-system pyproject-build-system) |
| 26852 | (arguments |
| 26853 | (list |
| 26854 | #:test-flags |
| 26855 | #~(list "--ignore=tests/test_examples.py" |
| 26856 | "tests"))) |
| 26857 | (propagated-inputs |
| 26858 | (list python-flask |
| 26859 | python-pyyaml |
| 26860 | python-jsonschema |
| 26861 | python-mistune |
| 26862 | python-six)) |
| 26863 | (native-inputs |
| 26864 | (list python-pytest |
| 26865 | python-setuptools)) |
| 26866 | (home-page "https://github.com/rochacbruno/flasgger/") |
| 26867 | (synopsis "Extract Swagger specs from your Flask project") |
| 26868 | (description "@code{python-flasgger} allows extracting Swagger specs |
| 26869 | from your Flask project. It is a fork of Flask-Swagger.") |
| 26870 | (license license:expat))) |
| 26871 | |
| 26872 | (define-public python-apache-libcloud |
| 26873 | (package |
| 26874 | (name "python-apache-libcloud") |
| 26875 | (version "3.8.0") |
| 26876 | (source |
| 26877 | (origin |
| 26878 | (method url-fetch) |
| 26879 | (uri (pypi-uri "apache-libcloud" version)) |
| 26880 | (sha256 |
| 26881 | (base32 "14bc4z246ka0h6kywpxqdfgb2c5y6lfclpx99ki2bhiv285lrgvm")))) |
| 26882 | (build-system pyproject-build-system) |
| 26883 | (arguments |
| 26884 | (list |
| 26885 | #:tests? #f ; XXX: all tests fail requiring additional credentials |
| 26886 | #:phases |
| 26887 | #~(modify-phases %standard-phases |
| 26888 | (add-after 'unpack 'patch-ssh |
| 26889 | (lambda* (#:key inputs #:allow-other-keys) |
| 26890 | (substitute* "libcloud/compute/ssh.py" |
| 26891 | (("'ssh'") |
| 26892 | (format #f "~s" (search-input-file inputs "/bin/ssh")))))) |
| 26893 | (add-after 'unpack 'patch-tests |
| 26894 | (lambda _ |
| 26895 | (substitute* "libcloud/test/compute/test_ssh_client.py" |
| 26896 | (("^class ShellOutSSHClientTests") |
| 26897 | "@unittest.skip(\"Guix container doesn't have ssh service\") |
| 26898 | class ShellOutSSHClientTests")))) |
| 26899 | (add-before 'check 'copy-secret |
| 26900 | (lambda _ |
| 26901 | (copy-file "libcloud/test/secrets.py-dist" |
| 26902 | "libcloud/test/secrets.py")))))) |
| 26903 | (inputs |
| 26904 | (list openssh)) |
| 26905 | (propagated-inputs |
| 26906 | (list python-requests)) |
| 26907 | (native-inputs |
| 26908 | (list python-pytest python-requests-mock python-setuptools)) |
| 26909 | (home-page "https://libcloud.apache.org/") |
| 26910 | (synopsis "Unified Cloud API") |
| 26911 | (description |
| 26912 | "@code{libcloud} is a Python library for interacting with many of the |
| 26913 | popular cloud service providers using a unified API.") |
| 26914 | (license license:asl2.0))) |
| 26915 | |
| 26916 | (define-public python-smmap |
| 26917 | (package |
| 26918 | (name "python-smmap") |
| 26919 | (version "5.0.2") |
| 26920 | (source |
| 26921 | (origin |
| 26922 | (method url-fetch) |
| 26923 | (uri (pypi-uri "smmap" version)) |
| 26924 | (sha256 |
| 26925 | (base32 "1mcai5vf9bgz389y4sqgj6w22wn7zmc7m33y3j50ryjq76h6bsi6")))) |
| 26926 | (build-system pyproject-build-system) |
| 26927 | (native-inputs |
| 26928 | (list python-pytest |
| 26929 | python-setuptools |
| 26930 | python-wheel)) |
| 26931 | (home-page "https://github.com/Byron/smmap") |
| 26932 | (synopsis "Python sliding window memory map manager") |
| 26933 | (description "@code{smmap} is a pure Python implementation of a sliding |
| 26934 | window memory map manager.") |
| 26935 | (license license:bsd-3))) |
| 26936 | |
| 26937 | (define-public python-regex |
| 26938 | (package |
| 26939 | (name "python-regex") |
| 26940 | (version "2026.2.28") |
| 26941 | (source |
| 26942 | (origin |
| 26943 | (method git-fetch) |
| 26944 | (uri (git-reference |
| 26945 | (url "https://github.com/mrabarnett/mrab-regex") |
| 26946 | (commit version))) |
| 26947 | (file-name (git-file-name name version)) |
| 26948 | (sha256 |
| 26949 | (base32 "10pyq4b2a0qbvmfn0ip6h51lqf4g59kgca4zn3g8hg62ha5kwf13")))) |
| 26950 | (build-system pyproject-build-system) |
| 26951 | (arguments |
| 26952 | (list |
| 26953 | #:test-backend #~'unittest |
| 26954 | #:test-flags #~(list "-v" "regex.tests.test_regex") |
| 26955 | #:phases |
| 26956 | #~(modify-phases %standard-phases |
| 26957 | (add-before 'check 'remove-local-source |
| 26958 | (lambda _ |
| 26959 | (delete-file-recursively "regex")))))) |
| 26960 | (native-inputs |
| 26961 | (list python-setuptools)) |
| 26962 | (home-page "https://github.com/mrabarnett/mrab-regex") |
| 26963 | (synopsis "Alternative regular expression module") |
| 26964 | (description |
| 26965 | "This regular expression implementation is backwards-compatible with the |
| 26966 | standard @code{re} module, but offers additional functionality like full |
| 26967 | case-folding for case-insensitive matches in Unicode.") |
| 26968 | (license license:psfl))) |
| 26969 | |
| 26970 | (define-public python-pysocks |
| 26971 | (package |
| 26972 | (name "python-pysocks") |
| 26973 | (version "1.7.1") |
| 26974 | (source |
| 26975 | (origin |
| 26976 | (method url-fetch) |
| 26977 | (uri (pypi-uri "PySocks" version)) |
| 26978 | (sha256 |
| 26979 | (base32 |
| 26980 | "184sg65mbmih6ljblfsxcmq5js5l7dj3gpn618w9q5dy3rbh921z")))) |
| 26981 | (build-system pyproject-build-system) |
| 26982 | (arguments `(#:tests? #f)) |
| 26983 | (native-inputs |
| 26984 | (list python-setuptools)) |
| 26985 | (home-page "https://github.com/Anorov/PySocks") |
| 26986 | (synopsis "SOCKS client module") |
| 26987 | (description "@code{pysocks} is an updated and semi-actively maintained |
| 26988 | version of @code{SocksiPy} with bug fixes and extra features.") |
| 26989 | (license license:bsd-3))) |
| 26990 | |
| 26991 | (define-public python-pydub |
| 26992 | ;; TODO: Move to (gnu packages audio) |
| 26993 | (package |
| 26994 | (name "python-pydub") |
| 26995 | (version "0.25.1") |
| 26996 | (source |
| 26997 | (origin |
| 26998 | (method git-fetch) |
| 26999 | (uri (git-reference |
| 27000 | (url "https://github.com/jiaaro/pydub") |
| 27001 | (commit (string-append "v" version)))) |
| 27002 | (file-name (git-file-name name version)) |
| 27003 | (sha256 |
| 27004 | (base32 "0xskllq66wqndjfmvp58k26cv3w480sqsil6ifwp4gghir7hqc8m")) |
| 27005 | (patches |
| 27006 | (list |
| 27007 | ;; See: <https://github.com/jiaaro/pydub/pull/769>. |
| 27008 | (origin |
| 27009 | (method url-fetch) |
| 27010 | (uri |
| 27011 | (string-append "https://github.com/jiaaro/pydub/commit/" |
| 27012 | "66c1bf7813ae8621a71484fdcdf609734c0d8efd.patch")) |
| 27013 | (sha256 |
| 27014 | (base32 "17nlbw79gv9mag6xpd46al5f1bgqcncffh151znn0fmhj8i9rgz3"))))))) |
| 27015 | (build-system pyproject-build-system) |
| 27016 | (arguments |
| 27017 | (list |
| 27018 | #:test-backend ''unittest |
| 27019 | #:phases |
| 27020 | #~(modify-phases %standard-phases |
| 27021 | (add-after 'unpack 'fix-ffmpeg-path |
| 27022 | (lambda* (#:key inputs #:allow-other-keys) |
| 27023 | (let ((bin (dirname (search-input-file inputs "bin/ffmpeg")))) |
| 27024 | (substitute* "pydub/utils.py" |
| 27025 | (("return \"ffmpeg\"") |
| 27026 | (string-append "return \"" bin "/ffmpeg\"")) |
| 27027 | (("return \"ffplay\"") |
| 27028 | (string-append "return \"" bin "/ffplay\"")) |
| 27029 | (("return \"ffprobe\"") |
| 27030 | (string-append "return \"" bin "/ffprobe\"")) |
| 27031 | (("warn\\(\"Couldn't find ff") |
| 27032 | "# warn\\(\"Couldn't find ff")))))))) |
| 27033 | (native-inputs (list python-setuptools)) |
| 27034 | (home-page "https://pydub.com") |
| 27035 | (inputs (list ffmpeg)) |
| 27036 | (propagated-inputs (list python-scipy)) |
| 27037 | (synopsis "Manipulate audio with a high level interface in Python") |
| 27038 | (description |
| 27039 | "@code{pydub} makes it easy to manipulate audio in Python. It relies on |
| 27040 | @code{ffmpeg} to open various audio formats.") |
| 27041 | (license license:expat))) ; MIT license |
| 27042 | |
| 27043 | (define-public python-pkginfo |
| 27044 | (package |
| 27045 | (name "python-pkginfo") |
| 27046 | (version "1.12.1.2") |
| 27047 | (source |
| 27048 | (origin |
| 27049 | (method url-fetch) |
| 27050 | (uri (pypi-uri "pkginfo" version)) |
| 27051 | (sha256 |
| 27052 | (base32 |
| 27053 | "0ysbl0rhy8chvx58zi5qb61jli76dcyblklnc0118vy39a15gnaw")))) |
| 27054 | (build-system pyproject-build-system) |
| 27055 | (arguments |
| 27056 | ;; Wheel metatda version mismatched: AssertionError: assert '2.4' == '2.3' |
| 27057 | (list #:test-flags #~(list "-k" "not test_installed_ctor_w_dist_info"))) |
| 27058 | (native-inputs |
| 27059 | (list python-pytest |
| 27060 | python-setuptools |
| 27061 | python-wheel)) |
| 27062 | (home-page "https://code.launchpad.net/~tseaver/pkginfo/trunk") |
| 27063 | (synopsis "Query metadatdata from sdists, bdists, and installed packages") |
| 27064 | (description |
| 27065 | "API to query the distutils metadata written in @file{PKG-INFO} inside a |
| 27066 | source distriubtion (an sdist) or a binary distribution (e.g., created by |
| 27067 | running bdist_egg). It can also query the EGG-INFO directory of an installed |
| 27068 | distribution, and the *.egg-info stored in a \"development checkout\" (e.g, |
| 27069 | created by running @code{python setup.py develop}).") |
| 27070 | (license license:expat))) |
| 27071 | |
| 27072 | (define-public python-rbfly |
| 27073 | (package |
| 27074 | (name "python-rbfly") |
| 27075 | (version "0.11.0") |
| 27076 | (source |
| 27077 | (origin |
| 27078 | (method url-fetch) |
| 27079 | (uri (pypi-uri "rbfly" version)) |
| 27080 | (sha256 |
| 27081 | (base32 "12xwf8zdvc5pf4nlpblml3jbn3gksgkyw9zw6jfsrvddv3hsm1b0")))) |
| 27082 | (build-system pyproject-build-system) |
| 27083 | (arguments |
| 27084 | (list |
| 27085 | #:test-flags |
| 27086 | #~(list "--pyargs" "rbfly" |
| 27087 | #$@(if (target-64bit?) |
| 27088 | '() |
| 27089 | '((string-append "--deselect=tests/amqp/test_message.py" |
| 27090 | "::test_encode_amqp_string_too_long")))) |
| 27091 | #:phases |
| 27092 | #~(modify-phases %standard-phases |
| 27093 | (add-before 'check 'remove-local-source |
| 27094 | (lambda _ |
| 27095 | (delete-file-recursively "rbfly")))))) |
| 27096 | (native-inputs |
| 27097 | (list python-cython |
| 27098 | python-pytest |
| 27099 | python-pytest-asyncio |
| 27100 | python-pytest-timeout |
| 27101 | python-setuptools)) |
| 27102 | (home-page "https://wrobell.dcmod.org/rbfly/") |
| 27103 | (synopsis "Work with RabbitMQ Streams in Python") |
| 27104 | (description |
| 27105 | "This package implements a functionality to deal with |
| 27106 | @url{https://www.rabbitmq.com/streams.html, RabbitMQ Streams} using |
| 27107 | @url{https://docs.python.org/3/library/asyncio.html, @code{asyncio}}. |
| 27108 | |
| 27109 | It is designed and implemented with the following qualities in mind: |
| 27110 | @itemize |
| 27111 | @item asynchronous Pythonic API with type annotations |
| 27112 | @item use of |
| 27113 | @url{https://en.wikipedia.org/wiki/Advanced_Message_Queuing_Protocol, AMQP} |
| 27114 | 1.0 message format to enable interoperability between RabbitMQ Stream. clients |
| 27115 | @item auto reconnection to RabbitMQ broker with lazily created connection |
| 27116 | objects |
| 27117 | @end itemize |
| 27118 | |
| 27119 | Support of many RabbitMQ Streams broker features: |
| 27120 | @itemize |
| 27121 | @item publishing single messages, or in batches, with confirmation |
| 27122 | @item subscribing to a stream at a specific point in time, from a specific |
| 27123 | offset, or using offset reference |
| 27124 | @item stream message filtering |
| 27125 | @item writing stream offset reference |
| 27126 | @item message deduplication |
| 27127 | @item integration with AMQP 1.0 ecosystem at message format level |
| 27128 | @end itemize") |
| 27129 | (license license:gpl3+))) |
| 27130 | |
| 27131 | (define-public python-jsonrpclib-pelix |
| 27132 | (package |
| 27133 | (name "python-jsonrpclib-pelix") |
| 27134 | (version "0.3.2") |
| 27135 | (source |
| 27136 | (origin |
| 27137 | (method git-fetch) |
| 27138 | (uri (git-reference |
| 27139 | (url "https://github.com/tcalmant/jsonrpclib") |
| 27140 | (commit (string-append "v" version)))) |
| 27141 | (file-name (git-file-name name version)) |
| 27142 | (sha256 |
| 27143 | (base32 "1mhnqmgcplsxc4zygxy4hm99si7p2rpyl4bpmilzqc51k2r3khzl")))) |
| 27144 | (build-system pyproject-build-system) |
| 27145 | (arguments |
| 27146 | (list |
| 27147 | #:test-flags #~(list "--deselect=\ |
| 27148 | tests/test_internal.py::InternalTests::test_multicall_success"))) |
| 27149 | (native-inputs (list python-pytest python-setuptools)) |
| 27150 | (home-page "https://github.com/tcalmant/jsonrpclib") |
| 27151 | (synopsis "JSON-RPC 2.0 client library for Python") |
| 27152 | (description |
| 27153 | "This library implements the JSON-RPC v2.0 specification |
| 27154 | (backwards-compatible) as a client library for Python. This version is a fork |
| 27155 | of jsonrpclib by Josh Marshall, usable with Pelix remote services.") |
| 27156 | (license license:asl2.0))) |
| 27157 | |
| 27158 | (define-public python-setuptools-git |
| 27159 | ;; XXX: The project is abandoned since 2018, consider to remove in the next |
| 27160 | ;; refresh cycle. |
| 27161 | (package |
| 27162 | (name "python-setuptools-git") |
| 27163 | (version "1.2") |
| 27164 | (source |
| 27165 | (origin |
| 27166 | (method url-fetch) |
| 27167 | (uri (pypi-uri "setuptools-git" version)) |
| 27168 | (sha256 |
| 27169 | (base32 "0i84qjwp5m0l9qagdjww2frdh63r37km1c48mrvbmaqsl1ni6r7z")))) |
| 27170 | (build-system pyproject-build-system) |
| 27171 | (arguments |
| 27172 | (list |
| 27173 | #:tests? #f ;no tests in PyPI |
| 27174 | #:phases |
| 27175 | #~(modify-phases %standard-phases |
| 27176 | ;; This is needed for tests. |
| 27177 | (add-after 'unpack 'configure-git |
| 27178 | (lambda _ |
| 27179 | (setenv "HOME" "/tmp") |
| 27180 | (invoke "git" "config" "--global" "user.email" "guix") |
| 27181 | (invoke "git" "config" "--global" "user.name" "guix")))))) |
| 27182 | (native-inputs |
| 27183 | (list git-minimal/pinned python-setuptools python-wheel)) |
| 27184 | (home-page "https://github.com/msabramo/setuptools-git") |
| 27185 | (synopsis "Setuptools revision control system plugin for Git") |
| 27186 | (description |
| 27187 | "This package provides a plugin for Setuptools for revision control with |
| 27188 | Git.") |
| 27189 | (license license:bsd-3))) |
| 27190 | |
| 27191 | (define-public python-setuptools-rust |
| 27192 | (package |
| 27193 | (name "python-setuptools-rust") |
| 27194 | (version "1.11.1") |
| 27195 | (source |
| 27196 | (origin |
| 27197 | (method url-fetch) |
| 27198 | (uri (pypi-uri "setuptools_rust" version)) |
| 27199 | (sha256 |
| 27200 | (base32 "1h3nbg1nlshzrqy7vz4q4g9wbz85dqkn6385p0ad7kjj48ww9avx")))) |
| 27201 | (build-system pyproject-build-system) |
| 27202 | (arguments |
| 27203 | (list #:tests? #f)) ;tests require Cargo |
| 27204 | (propagated-inputs |
| 27205 | (list python-semantic-version |
| 27206 | python-setuptools)) |
| 27207 | (home-page "https://github.com/PyO3/setuptools-rust") |
| 27208 | (synopsis "Setuptools plugin for Rust extensions") |
| 27209 | (description |
| 27210 | "@code{setuptools-rust} is a plugin for @code{setuptools} to build |
| 27211 | Rust Python extensions implemented with @code{PyO3} or @code{rust-cpython}.") |
| 27212 | (license license:expat))) |
| 27213 | |
| 27214 | (define-public python-setuptools-gettext |
| 27215 | (package |
| 27216 | (name "python-setuptools-gettext") |
| 27217 | (version "0.1.14") |
| 27218 | (source |
| 27219 | (origin |
| 27220 | (method git-fetch) |
| 27221 | (uri (git-reference |
| 27222 | (url "https://github.com/breezy-team/setuptools-gettext") |
| 27223 | (commit (string-append "v" version)))) |
| 27224 | (file-name (git-file-name name version)) |
| 27225 | (sha256 |
| 27226 | (base32 "1m6a3qjwvqbvlzwqap7050rqsxb7nwibl38iklnqz8363iclm76k")))) |
| 27227 | (build-system pyproject-build-system) |
| 27228 | (native-inputs (list python-pytest python-tomli python-setuptools)) |
| 27229 | (home-page "https://github.com/breezy-team/setuptools-gettext") |
| 27230 | (synopsis "Setuptools plugin for gettext") |
| 27231 | (description "This package provides a plugin for Setuptools for gettext.") |
| 27232 | (license license:gpl2+))) |
| 27233 | |
| 27234 | (define-public python-pyclibrary |
| 27235 | ;; XXX: https://github.com/MatthieuDartiailh/pyclibrary/issues/82 |
| 27236 | (let ((commit "4e1e243a0bdfefa188d93ebdf3b60c6861244855") |
| 27237 | (revision "0")) |
| 27238 | (package |
| 27239 | (name "python-pyclibrary") |
| 27240 | (version (git-version "0.2.2" revision commit)) |
| 27241 | (source |
| 27242 | (origin |
| 27243 | (method git-fetch) |
| 27244 | (uri (git-reference |
| 27245 | (url "https://github.com/MatthieuDartiailh/pyclibrary") |
| 27246 | (commit commit))) |
| 27247 | (file-name (git-file-name name version)) |
| 27248 | (sha256 |
| 27249 | (base32 "1sza6n2fg8zml0v1s5zwzrlsb79s2abn1n4pr1l8r15al4g9z0c6")))) |
| 27250 | (build-system pyproject-build-system) |
| 27251 | (native-inputs |
| 27252 | (list python-pytest |
| 27253 | python-setuptools |
| 27254 | python-setuptools-scm)) |
| 27255 | (propagated-inputs |
| 27256 | (list python-pyparsing)) |
| 27257 | (home-page "https://github.com/MatthieuDartiailh/pyclibrary") |
| 27258 | (synopsis "Wrap dynamic libraries in Python") |
| 27259 | (description |
| 27260 | "This package helps wrapping dynamic libraries in Python. It includes |
| 27261 | a pure-Python C parser and an automation library that uses C header file |
| 27262 | definitions to simplify the use of C bindings.") |
| 27263 | (license license:expat)))) |
| 27264 | |
| 27265 | (define-public python-pyclipper |
| 27266 | (package |
| 27267 | (name "python-pyclipper") |
| 27268 | (version "1.3.0.post6") |
| 27269 | (source |
| 27270 | (origin |
| 27271 | (method git-fetch) |
| 27272 | (uri (git-reference |
| 27273 | (url "https://github.com/greginvm/pyclipper") |
| 27274 | (commit version))) |
| 27275 | (file-name (git-file-name name version)) |
| 27276 | (sha256 |
| 27277 | (base32 "1ijr7sx3203b3ppvsn1zyy8nfz93nbi60l8dxj2hdd6sj25g8q5k")))) |
| 27278 | (build-system pyproject-build-system) |
| 27279 | (arguments |
| 27280 | (list |
| 27281 | #:phases |
| 27282 | #~(modify-phases %standard-phases |
| 27283 | (add-before 'build 'cythonize-sources |
| 27284 | (lambda _ |
| 27285 | (with-directory-excursion "src/pyclipper" |
| 27286 | (invoke "cython" "--cplus" "_pyclipper.pyx"))))))) |
| 27287 | (native-inputs |
| 27288 | (list python-cython |
| 27289 | python-pytest |
| 27290 | python-setuptools |
| 27291 | python-setuptools-scm)) |
| 27292 | (home-page "https://github.com/greginvm/pyclipper") |
| 27293 | (synopsis "Wrapper for Angus Johnson's Clipper library") |
| 27294 | (description |
| 27295 | "Pyclipper is a Cython wrapper for the C++ translation of the |
| 27296 | Angus Johnson's polygon clipping Clipper library (ver. 6.4.2).") |
| 27297 | (license license:expat))) |
| 27298 | |
| 27299 | (define-public python-semver |
| 27300 | (package |
| 27301 | (name "python-semver") |
| 27302 | (version "3.0.4") |
| 27303 | (source |
| 27304 | (origin |
| 27305 | (method url-fetch) |
| 27306 | (uri (pypi-uri "semver" version)) |
| 27307 | (sha256 |
| 27308 | (base32 "00lnb1mpppgq041kwcbg405rqsi2mzl8dw1s0c8hmvd5hk2xiixg")))) |
| 27309 | (build-system pyproject-build-system) |
| 27310 | (native-inputs (list python-pytest python-setuptools)) |
| 27311 | (home-page "https://github.com/k-bx/python-semver") |
| 27312 | (synopsis "Python helper for Semantic Versioning") |
| 27313 | (description |
| 27314 | "This package provides a Python library for @url{Semantic Versioning, |
| 27315 | http://semver.org/}.") |
| 27316 | (license license:bsd-3))) |
| 27317 | |
| 27318 | (define-public python-phonenumbers |
| 27319 | (package |
| 27320 | (name "python-phonenumbers") |
| 27321 | (version "8.13.37") |
| 27322 | (source |
| 27323 | (origin |
| 27324 | (method git-fetch) |
| 27325 | (uri (git-reference |
| 27326 | (url "https://github.com/daviddrysdale/python-phonenumbers") |
| 27327 | (commit (string-append "v" version)))) |
| 27328 | (file-name (git-file-name name version)) |
| 27329 | (sha256 |
| 27330 | (base32 "1bgab6s7l2bqg671sns138c9qr9f8ndvjr4ig8l3ik9q054l9k9n")))) |
| 27331 | (build-system pyproject-build-system) |
| 27332 | (arguments |
| 27333 | (list |
| 27334 | #:test-backend #~'custom |
| 27335 | #:test-flags #~(list "-m" "testwrapper") |
| 27336 | #:phases |
| 27337 | #~(modify-phases %standard-phases |
| 27338 | (add-after 'unpack 'chdir |
| 27339 | (lambda _ |
| 27340 | (chdir "python")))))) |
| 27341 | (propagated-inputs (list python-protobuf)) |
| 27342 | (native-inputs (list python-setuptools)) |
| 27343 | (home-page "https://github.com/daviddrysdale/python-phonenumbers") |
| 27344 | (synopsis "Python library for dealing with international phone numbers") |
| 27345 | (description |
| 27346 | "This package provides a Python port of Google's libphonenumber library.") |
| 27347 | (license license:asl2.0))) |
| 27348 | |
| 27349 | (define-public python-heapdict |
| 27350 | (package |
| 27351 | (name "python-heapdict") |
| 27352 | (version "1.0.1") |
| 27353 | (source |
| 27354 | (origin |
| 27355 | (method url-fetch) |
| 27356 | (uri (pypi-uri "HeapDict" version)) |
| 27357 | (sha256 |
| 27358 | (base32 |
| 27359 | "1dnd7v9adqd21bf4ih2wzn9a7b41m0nccb0vbxny9n037rxzb5c4")))) |
| 27360 | (build-system pyproject-build-system) |
| 27361 | (arguments (list #:test-backend #~'unittest)) |
| 27362 | (native-inputs (list python-setuptools)) |
| 27363 | (home-page "http://stutzbachenterprises.com/") |
| 27364 | (synopsis "Heap with decrease-key and increase-key operations") |
| 27365 | (description |
| 27366 | "heapdict implements the MutableMapping ABC, meaning it works pretty much |
| 27367 | like a regular Python @code{dict}. It’s designed to be used as a priority |
| 27368 | queue.") |
| 27369 | (license license:bsd-3))) |
| 27370 | |
| 27371 | (define-public python-send2trash |
| 27372 | (package |
| 27373 | (name "python-send2trash") |
| 27374 | (version "1.8.2") |
| 27375 | (source |
| 27376 | (origin (method git-fetch) |
| 27377 | ;; Source tarball on PyPI doesn't include tests. |
| 27378 | (uri (git-reference |
| 27379 | (url "https://github.com/arsenetar/send2trash") |
| 27380 | (commit version))) |
| 27381 | (file-name (git-file-name name version)) |
| 27382 | (sha256 |
| 27383 | (base32 |
| 27384 | "0dl9nv3h3kkcavwiswzg76pksqczq448gbdvlbz88bm71zvdshx7")))) |
| 27385 | (build-system pyproject-build-system) |
| 27386 | (arguments |
| 27387 | (list |
| 27388 | #:phases |
| 27389 | '(modify-phases %standard-phases |
| 27390 | (add-before 'check 'pre-check |
| 27391 | (lambda _ (setenv "HOME" "/tmp")))))) |
| 27392 | (native-inputs (list python-pytest python-setuptools python-wheel)) |
| 27393 | (home-page "https://github.com/arsenetar/send2trash") |
| 27394 | (synopsis "Send files to the user's @file{~/Trash} directory") |
| 27395 | (description "This package provides a Python library to send files to the |
| 27396 | user's @file{~/Trash} directory.") |
| 27397 | (license license:bsd-3))) |
| 27398 | |
| 27399 | (define-public python-pyfavicon |
| 27400 | (package |
| 27401 | (name "python-pyfavicon") |
| 27402 | (version "0.1.1") |
| 27403 | (source |
| 27404 | (origin |
| 27405 | (method git-fetch) |
| 27406 | (uri (git-reference |
| 27407 | (url "https://github.com/bilelmoussaoui/pyfavicon") |
| 27408 | (commit version))) |
| 27409 | (file-name (git-file-name name version)) |
| 27410 | (sha256 |
| 27411 | (base32 "04mx8vbi6j9l8daqa18sv0kkcyqv4wbc9z4ma77w68baq6ss0jzf")))) |
| 27412 | (build-system pyproject-build-system) |
| 27413 | (arguments |
| 27414 | (list |
| 27415 | #:test-flags |
| 27416 | #~(list "-k" (string-join (list |
| 27417 | ;; Socket name resolution fails. |
| 27418 | "not test_url_icon_link_type" |
| 27419 | "test_icon_sizes" |
| 27420 | ;; Tuples differ. |
| 27421 | "test_largest_icon") |
| 27422 | " and not ")))) |
| 27423 | (native-inputs (list python-pytest python-setuptools)) |
| 27424 | (propagated-inputs |
| 27425 | (list python-aiohttp python-beautifulsoup4 python-pillow)) |
| 27426 | (home-page "https://github.com/bilelmoussaoui/pyfavicon") |
| 27427 | (synopsis "Async favicon fetcher") |
| 27428 | (description |
| 27429 | "@code{pyfavicon} is an async favicon fetcher.") |
| 27430 | (license license:expat))) |
| 27431 | |
| 27432 | (define-public python-funcy |
| 27433 | (package |
| 27434 | (name "python-funcy") |
| 27435 | (version "1.11") |
| 27436 | (source |
| 27437 | (origin |
| 27438 | (method git-fetch) |
| 27439 | (uri (git-reference |
| 27440 | (url "https://github.com/Suor/funcy") |
| 27441 | (commit version))) |
| 27442 | (sha256 |
| 27443 | (base32 "1s98vkjnq3zq71737hn8xa15kssvmy1sfzsll3vrlv53902418mw")) |
| 27444 | (file-name (git-file-name name version)))) |
| 27445 | (build-system pyproject-build-system) |
| 27446 | (native-inputs |
| 27447 | (list python-pytest python-whatever python-setuptools python-wheel)) |
| 27448 | (home-page "https://github.com/Suor/funcy") |
| 27449 | (synopsis "Functional tools") |
| 27450 | (description "@code{funcy} is a library that provides functional tools. |
| 27451 | Examples are: |
| 27452 | @enumerate |
| 27453 | @item merge - Merges collections of the same type |
| 27454 | @item walk - Type-preserving map |
| 27455 | @item select - Selects a part of a collection |
| 27456 | @item take - Takes the first n items of a collection |
| 27457 | @item first - Takes the first item of a collection |
| 27458 | @item remove - Predicated-removes items of a collection |
| 27459 | @item concat - Concatenates two collections |
| 27460 | @item flatten - Flattens a collection with subcollections |
| 27461 | @item distinct - Returns only distinct items |
| 27462 | @item split - Predicated-splits a collection |
| 27463 | @item split_at - Splits a collection at a given item |
| 27464 | @item group_by - Groups items by group |
| 27465 | @item pairwise - Pairs off adjacent items |
| 27466 | @item partial - Partially-applies a function |
| 27467 | @item curry - Curries a function |
| 27468 | @item compose - Composes functions |
| 27469 | @item complement - Complements a predicate |
| 27470 | @item all_fn - \"all\" with predicate |
| 27471 | @end enumerate") |
| 27472 | (license license:bsd-3))) |
| 27473 | |
| 27474 | (define-public python-funcy-1.14 |
| 27475 | (package/inherit python-funcy |
| 27476 | (name "python-funcy") |
| 27477 | (version "1.14") |
| 27478 | (source |
| 27479 | (origin |
| 27480 | (method git-fetch) |
| 27481 | (uri (git-reference |
| 27482 | (url "https://github.com/Suor/funcy") |
| 27483 | (commit version))) |
| 27484 | (sha256 |
| 27485 | (base32 "1chgi60z3c97m9l23vf5cpyp0nidkqlpxc55q5k5pz41ms3d0440")) |
| 27486 | (file-name (git-file-name name version)))))) |
| 27487 | |
| 27488 | (define-public python-isoweek |
| 27489 | (package |
| 27490 | (name "python-isoweek") |
| 27491 | (version "1.3.3") |
| 27492 | (source |
| 27493 | (origin |
| 27494 | (method url-fetch) |
| 27495 | (uri (pypi-uri "isoweek" version)) |
| 27496 | (sha256 |
| 27497 | (base32 "1s7zsf0pab0l9gn6456qadnz5i5h90hafcjwnhx5mq23qjxggwvk")))) |
| 27498 | (build-system pyproject-build-system) |
| 27499 | (arguments (list #:test-backend #~'unittest)) |
| 27500 | (native-inputs (list python-setuptools)) |
| 27501 | (home-page "https://github.com/gisle/isoweek") |
| 27502 | (synopsis "Objects representing a week") |
| 27503 | (description "The @code{isoweek} module provide the class Week that |
| 27504 | implements the week definition of ISO 8601. This standard also defines |
| 27505 | a notation for identifying weeks; yyyyWww (where the W is a literal). |
| 27506 | Week instances stringify to this form.") |
| 27507 | (license license:bsd-3))) |
| 27508 | |
| 27509 | (define-public bpython |
| 27510 | (package |
| 27511 | (name "bpython") |
| 27512 | (version "0.25") |
| 27513 | (source |
| 27514 | (origin |
| 27515 | (method url-fetch) |
| 27516 | (uri (pypi-uri "bpython" version)) |
| 27517 | (sha256 |
| 27518 | (base32 "0ny6cqhpil7z36djc4ixakri65kb1rdn3d4ckmpc5p7nks8gqin2")))) |
| 27519 | (build-system pyproject-build-system) |
| 27520 | (arguments |
| 27521 | (list |
| 27522 | #:test-flags |
| 27523 | ;; Tests can't import curtsies, pygments and urwid. |
| 27524 | #~(list "-k" (string-join |
| 27525 | (list "not test_issue108" |
| 27526 | "test_issue133") |
| 27527 | " and not " )) |
| 27528 | #:phases |
| 27529 | #~(modify-phases %standard-phases |
| 27530 | (add-after 'wrap 'add-aliases |
| 27531 | ;; For symmetry to bpython2, add symlinks bypthon3, bpdb3, etc. |
| 27532 | (lambda _ |
| 27533 | (for-each |
| 27534 | (lambda (old new) |
| 27535 | (symlink old (string-append #$output "/bin/" new))) |
| 27536 | '("bpython" "bpython-urwid" "bpdb") |
| 27537 | '("bpython3" "bpython3-urwid" "bpdb3"))))))) |
| 27538 | (native-inputs |
| 27539 | (list python-mock |
| 27540 | python-pytest |
| 27541 | python-setuptools)) |
| 27542 | (propagated-inputs |
| 27543 | (list python-curtsies |
| 27544 | python-cwcwidth |
| 27545 | python-greenlet |
| 27546 | python-pygments |
| 27547 | python-pyxdg |
| 27548 | python-requests |
| 27549 | ;; [optional] |
| 27550 | python-pyperclip |
| 27551 | python-jedi |
| 27552 | python-urwid-2 |
| 27553 | python-watchdog)) |
| 27554 | (home-page "https://bpython-interpreter.org/") |
| 27555 | (synopsis "Fancy interface to the Python interpreter") |
| 27556 | (description "Bpython is a fancy interface to the Python |
| 27557 | interpreter. bpython's main features are |
| 27558 | |
| 27559 | @enumerate |
| 27560 | @item in-line syntax highlighting, |
| 27561 | @item readline-like autocomplete with suggestions displayed as you type, |
| 27562 | @item expected parameter list for any Python function, |
| 27563 | @item \"rewind\" function to pop the last line of code from memory and |
| 27564 | re-evaluate, |
| 27565 | @item send the code you've entered off to a pastebin, |
| 27566 | @item save the code you've entered to a file, and |
| 27567 | @item auto-indentation. |
| 27568 | @end enumerate") |
| 27569 | (license license:expat))) |
| 27570 | |
| 27571 | (define-public python-pyinotify |
| 27572 | (package |
| 27573 | (name "python-pyinotify") |
| 27574 | (version "0.9.6") |
| 27575 | (source |
| 27576 | (origin |
| 27577 | (method git-fetch) |
| 27578 | (uri (git-reference |
| 27579 | (url "https://github.com/seb-m/pyinotify") |
| 27580 | (commit version))) |
| 27581 | (file-name (git-file-name name version)) |
| 27582 | (sha256 |
| 27583 | (base32 "0qfvs1sfvlpfb10rxlivwa96mg0ibczis554s2rx32s11nynzvbk")))) |
| 27584 | (build-system pyproject-build-system) |
| 27585 | (arguments |
| 27586 | (list |
| 27587 | #:tests? #f ;no tests |
| 27588 | #:phases |
| 27589 | #~(modify-phases %standard-phases |
| 27590 | (add-after 'unpack 'drop-shebang |
| 27591 | (lambda _ |
| 27592 | ;; Dropping this shebang prevents the build system from adding |
| 27593 | ;; python-wrapper as an input, reducing package closure size from |
| 27594 | ;; ~200 MiB to ~0.2 MiB. |
| 27595 | (substitute* "python3/pyinotify.py" |
| 27596 | (("#!/usr/bin/env python") ""))))))) |
| 27597 | (native-inputs |
| 27598 | (list python-setuptools)) |
| 27599 | (propagated-inputs |
| 27600 | (list python-pyasyncore)) |
| 27601 | (home-page "https://github.com/seb-m/pyinotify") |
| 27602 | (synopsis "Python library for monitoring inotify events") |
| 27603 | (description |
| 27604 | "@code{pyinotify} provides a Python interface for monitoring file system |
| 27605 | events on Linux.") |
| 27606 | (license license:expat))) |
| 27607 | |
| 27608 | (define-public python-pyinotify-cli |
| 27609 | (package |
| 27610 | (inherit python-pyinotify) |
| 27611 | (name "python-pyinotify-cli") |
| 27612 | (arguments |
| 27613 | (substitute-keyword-arguments arguments |
| 27614 | ((#:phases phases #~%standard-phases) |
| 27615 | #~(modify-phases #$phases |
| 27616 | (delete 'drop-shebang) |
| 27617 | (add-after 'install 'install-entrypoint |
| 27618 | (lambda _ |
| 27619 | (let ((entrypoint |
| 27620 | (string-append #$output "/lib/python" |
| 27621 | (python-version (which "python")) |
| 27622 | "/site-packages/pyinotify.py")) |
| 27623 | (bin (string-append #$output "/bin"))) |
| 27624 | (mkdir-p bin) |
| 27625 | (invoke "chmod" "+x" entrypoint) |
| 27626 | (symlink |
| 27627 | entrypoint (string-append #$output "/bin/pyinotify"))))))))) |
| 27628 | (description |
| 27629 | "This package provides, in addition to the @code{pyinotify} Python library, |
| 27630 | a command line application exposing the same functionality."))) |
| 27631 | |
| 27632 | (define-public python-latex2pydata |
| 27633 | (package |
| 27634 | (name "python-latex2pydata") |
| 27635 | (version "0.5.0") |
| 27636 | (source |
| 27637 | (origin |
| 27638 | (method url-fetch) |
| 27639 | (uri (pypi-uri "latex2pydata" version)) |
| 27640 | (sha256 |
| 27641 | (base32 "12a2ayhgp5plxkdikhy3myin14ydkj0msgb5j82dfvis7h4d5jmw")))) |
| 27642 | (build-system pyproject-build-system) |
| 27643 | (native-inputs (list python-setuptools python-wheel python-pytest)) |
| 27644 | (home-page "https://github.com/gpoore/latex2pydata") |
| 27645 | (synopsis "Load data from LaTeX in Python literal format") |
| 27646 | (description |
| 27647 | "This package is designed to load data in Python literal format that was |
| 27648 | saved to file by the @code{latex2pydata} LaTeX package. This allows data to be |
| 27649 | passed from LaTeX to Python.") |
| 27650 | (license license:bsd-3))) |
| 27651 | |
| 27652 | (define-public python-latexcodec |
| 27653 | (package |
| 27654 | (name "python-latexcodec") |
| 27655 | (version "3.0.1") |
| 27656 | (source |
| 27657 | (origin |
| 27658 | (method git-fetch) |
| 27659 | (uri (git-reference |
| 27660 | (url "https://github.com/mcmtroffaes/latexcodec/") |
| 27661 | (commit version))) |
| 27662 | (file-name (git-file-name name version)) |
| 27663 | (sha256 |
| 27664 | (base32 "0j4hkn161h0hsx3ixs85dqnsaya27ck9c2ri1lv8cayc5a9kqvcp")))) |
| 27665 | (build-system pyproject-build-system) |
| 27666 | (native-inputs (list python-pytest python-setuptools)) |
| 27667 | (home-page "https://readthedocs.org/projects/latexcodec/") |
| 27668 | (synopsis "Work with LaTeX code in Python") |
| 27669 | (description "Lexer and codec to work with LaTeX code in Python.") |
| 27670 | (license license:expat))) |
| 27671 | |
| 27672 | (define-public python-latexminted |
| 27673 | (package |
| 27674 | (name "python-latexminted") |
| 27675 | (version "0.7.1") |
| 27676 | (source |
| 27677 | (origin |
| 27678 | (method url-fetch) |
| 27679 | (uri (pypi-uri "latexminted" version)) |
| 27680 | (sha256 |
| 27681 | (base32 "1yj08q1bpy0lk3gk6zs9b7ik83mwn9d7s85fpvyj1wk06iphj96p")))) |
| 27682 | (build-system pyproject-build-system) |
| 27683 | (arguments (list #:tests? #f)) ; No tests upstream. |
| 27684 | (propagated-inputs (list python-latex2pydata |
| 27685 | python-latexrestricted |
| 27686 | python-pygments)) |
| 27687 | (native-inputs (list texlive-kpathsea python-setuptools)) |
| 27688 | (home-page "https://github.com/gpoore/minted") |
| 27689 | (synopsis "Python library for the LaTeX minted package") |
| 27690 | (description "This Python package provides the Python side of the |
| 27691 | @code{texlive-minted} LaTeX package. It performs syntax highlighting using the |
| 27692 | @code{python-pygments} library. It also provides several code formatting and |
| 27693 | manipulation features implemented in Python that would be difficult to perform |
| 27694 | in LaTeX, such as dedenting code and extracting code snippets from source files |
| 27695 | using regular expressions.") |
| 27696 | (license license:lppl1.3c+))) |
| 27697 | |
| 27698 | (define-public python-latexrestricted |
| 27699 | (package |
| 27700 | (name "python-latexrestricted") |
| 27701 | (version "0.6.2") |
| 27702 | (source |
| 27703 | (origin |
| 27704 | (method url-fetch) |
| 27705 | (uri (pypi-uri "latexrestricted" version)) |
| 27706 | (sha256 |
| 27707 | (base32 "0q5alxifggf0k9wjkyfyj1l0xyhn3xaiiy6057zq39cp26j227fm")))) |
| 27708 | (build-system pyproject-build-system) |
| 27709 | (arguments |
| 27710 | (list |
| 27711 | #:tests? #f ;no test |
| 27712 | #:phases |
| 27713 | #~(modify-phases %standard-phases |
| 27714 | (add-after 'unpack 'fix-paths |
| 27715 | (lambda* (#:key inputs #:allow-other-keys) |
| 27716 | (let ((pystr (lambda (s) (string-append "'" s "'"))) |
| 27717 | (kpse (search-input-file inputs "/bin/kpsewhich"))) |
| 27718 | (substitute* "latexrestricted/_latex_config.py" |
| 27719 | ;; `latexminted' relies on SELFAUTOLOC to locate `kpsewhich', but |
| 27720 | ;; this variable is bogus in Guix because binaries are scattered |
| 27721 | ;; across multiple directories. This phase sets SELFAUTOLOC to |
| 27722 | ;; the specific directory containing `kpsewhich'. |
| 27723 | (("os\\.getenv\\('SELFAUTOLOC'\\)") |
| 27724 | (pystr (dirname kpse))) |
| 27725 | ;; Refer to kpse by store path instead of looking it upein $PATH. |
| 27726 | (("shutil.which\\('kpse'.*$") |
| 27727 | (string-append (pystr kpse) "\n"))))))))) |
| 27728 | (native-inputs (list python-setuptools python-wheel)) |
| 27729 | (inputs (list texlive-kpathsea)) |
| 27730 | (home-page "https://github.com/gpoore/latexrestricted") |
| 27731 | (synopsis |
| 27732 | "Library for creating executables compatible with LaTeX's shell escape") |
| 27733 | (description |
| 27734 | "This Python package is designed to simplify the process of creating Python |
| 27735 | executables compatible with LaTeX restricted shell escape. Restricted shell |
| 27736 | escape allows LaTeX to run trusted executables as part of compiling documents. |
| 27737 | These executables have restricted access to the file system and restricted |
| 27738 | ability to launch subprocesses.") |
| 27739 | (license license:lppl1.3+))) |
| 27740 | |
| 27741 | (define-public python-pybloom-live |
| 27742 | (package |
| 27743 | (name "python-pybloom-live") |
| 27744 | (version "4.0.0") |
| 27745 | (source (origin |
| 27746 | (method url-fetch) |
| 27747 | (uri (pypi-uri "pybloom_live" version)) |
| 27748 | (sha256 |
| 27749 | (base32 |
| 27750 | "040i6bjqvl33j30v865shsk30s3h7f16pqwiaj5kig857dfmqm4r")))) |
| 27751 | (build-system pyproject-build-system) |
| 27752 | (propagated-inputs (list python-bitarray python-xxhash)) |
| 27753 | (native-inputs (list python-pytest python-setuptools python-wheel)) |
| 27754 | (home-page "https://github.com/joseph-fox/python-bloomfilter") |
| 27755 | (synopsis "Bloom filter") |
| 27756 | (description "This package provides a scalable Bloom filter implemented in |
| 27757 | Python.") |
| 27758 | (license license:expat))) |
| 27759 | |
| 27760 | ;; XXX: Not maintained since 2020. |
| 27761 | (define-public python-pybktree |
| 27762 | (package |
| 27763 | (name "python-pybktree") |
| 27764 | (version "1.1") |
| 27765 | (source |
| 27766 | (origin |
| 27767 | (method url-fetch) |
| 27768 | (uri (pypi-uri "pybktree" version)) |
| 27769 | (sha256 |
| 27770 | (base32 "0asd2lw9c5l5wi4z24k7gkhlprpdkcvs8d94szk56x9xvmy07h7f")))) |
| 27771 | (build-system pyproject-build-system) |
| 27772 | (arguments |
| 27773 | (list #:tests? #f)) ;no tests provided |
| 27774 | (native-inputs (list python-setuptools)) |
| 27775 | (home-page "https://github.com/Jetsetter/pybktree") |
| 27776 | (synopsis "Pythonic BK-tree data structure") |
| 27777 | (description |
| 27778 | "This package provides a BK-tree data structure to allow fast querying of |
| 27779 | close matches in Python.") |
| 27780 | (license license:expat))) |
| 27781 | |
| 27782 | (define-public python-pybtex |
| 27783 | (package |
| 27784 | (name "python-pybtex") |
| 27785 | (version "0.25.0") |
| 27786 | (source |
| 27787 | (origin |
| 27788 | (method git-fetch) |
| 27789 | (uri (git-reference |
| 27790 | (url "https://codeberg.org/pybtex/pybtex") |
| 27791 | (commit version))) |
| 27792 | (file-name (git-file-name name version)) |
| 27793 | (sha256 |
| 27794 | (base32 "12rixrciizlvdxxja7qm6c02yzyslzd0jcv07niaii1ly0dg1fq4")))) |
| 27795 | (build-system pyproject-build-system) |
| 27796 | (native-inputs (list python-pytest python-setuptools)) |
| 27797 | (propagated-inputs (list python-latexcodec python-pyyaml)) |
| 27798 | (home-page "https://pybtex.org/") |
| 27799 | (synopsis "BibTeX-compatible bibliography processor") |
| 27800 | (description |
| 27801 | "Pybtex is a BibTeX-compatible bibliography processor written in Python. |
| 27802 | You can simply type pybtex instead of bibtex.") |
| 27803 | (license license:expat))) |
| 27804 | |
| 27805 | (define-public python-pybtex-apa-style |
| 27806 | (package |
| 27807 | (name "python-pybtex-apa-style") |
| 27808 | (version "1.3") |
| 27809 | (source |
| 27810 | (origin |
| 27811 | (method url-fetch) |
| 27812 | (uri (pypi-uri "pybtex-apa-style" version)) |
| 27813 | (sha256 |
| 27814 | (base32 "1cmgcpcvs9jcw4yxhiy217hdngp9p9nlp5x6s2qmkwj0iwgd39iq")))) |
| 27815 | (build-system pyproject-build-system) |
| 27816 | (arguments |
| 27817 | (list |
| 27818 | #:test-backend #~'custom |
| 27819 | #:test-flags |
| 27820 | #~(list "-c" (string-append "import sys, pybtex.plugin;" |
| 27821 | " sys.exit('apa' not" |
| 27822 | " in pybtex.plugin.enumerate_plugin_names" |
| 27823 | "('pybtex.style.labels'))")))) |
| 27824 | (native-inputs (list python-pybtex python-setuptools)) |
| 27825 | (home-page "https://github.com/naeka/pybtex-apa-style") |
| 27826 | (synopsis "APA style for pybtex") |
| 27827 | (description |
| 27828 | "This package provides support for the APA style within pybtex.") |
| 27829 | (license license:expat))) |
| 27830 | |
| 27831 | (define-public python-pybtex-docutils |
| 27832 | (package |
| 27833 | (name "python-pybtex-docutils") |
| 27834 | (version "1.0.3") |
| 27835 | (source |
| 27836 | (origin |
| 27837 | (method git-fetch) |
| 27838 | (uri (git-reference |
| 27839 | (url "https://github.com/mcmtroffaes/pybtex-docutils") |
| 27840 | (commit version))) |
| 27841 | (file-name (git-file-name name version)) |
| 27842 | (sha256 |
| 27843 | (base32 "0s21ik0ql7qi3cf6v5fdmlwbzidwdqpsswwsh1vihhz066n2ycps")))) |
| 27844 | (build-system pyproject-build-system) |
| 27845 | (propagated-inputs (list python-docutils python-pybtex)) |
| 27846 | (native-inputs (list python-setuptools python-pytest)) |
| 27847 | (home-page "https://github.com/mcmtroffaes/pybtex-docutils") |
| 27848 | (synopsis "Docutils backend for pybtex") |
| 27849 | (description "The pybtex docutils backend allows bibtex citations to be |
| 27850 | inserted into documentation generated by docutils.") |
| 27851 | (license license:expat))) |
| 27852 | |
| 27853 | (define-public python-onetimepass |
| 27854 | (package |
| 27855 | (name "python-onetimepass") |
| 27856 | (version "1.0.1") |
| 27857 | (source |
| 27858 | (origin |
| 27859 | (method git-fetch) |
| 27860 | (uri (git-reference |
| 27861 | (url "https://github.com/tadeck/onetimepass/") |
| 27862 | (commit (string-append "v" version)))) |
| 27863 | (file-name (git-file-name name version)) |
| 27864 | (sha256 |
| 27865 | (base32 "0wmv62l3r8r4428gdzyj80lhgadfqvj220khz1wnm9alyzg60wkh")))) |
| 27866 | (build-system pyproject-build-system) |
| 27867 | (arguments (list #:tests? #f)) ; Requires unpackaged timecop. |
| 27868 | (native-inputs (list python-setuptools)) |
| 27869 | (propagated-inputs (list python-six)) |
| 27870 | (home-page "https://github.com/tadeck/onetimepass/") |
| 27871 | (synopsis "One-time password library") |
| 27872 | (description |
| 27873 | "Python one-time password library for HMAC-based (HOTP) and time-based |
| 27874 | (TOTP) passwords.") |
| 27875 | (license license:expat))) |
| 27876 | |
| 27877 | (define-public python-online-judge-api-client |
| 27878 | (package |
| 27879 | (name "python-online-judge-api-client") |
| 27880 | (properties '((commit . "615c345f169e2603e0b907287559a4535fc3c6f9") |
| 27881 | (revision . "0"))) |
| 27882 | (version (git-version "10.10.1" |
| 27883 | (assoc-ref properties 'revision) |
| 27884 | (assoc-ref properties 'commit))) |
| 27885 | (source |
| 27886 | (origin |
| 27887 | (method git-fetch) |
| 27888 | (uri (git-reference |
| 27889 | (url "https://github.com/online-judge-tools/api-client") |
| 27890 | (commit (assoc-ref properties 'commit)))) |
| 27891 | (file-name (git-file-name name version)) |
| 27892 | (sha256 |
| 27893 | (base32 "13m3cxv6bd3igj6649149xb27ljmzqzpli6hpfrywvgbm238hbws")) |
| 27894 | (patches |
| 27895 | (search-patches "python-online-judge-api-client-tests.patch")) |
| 27896 | )) |
| 27897 | (build-system pyproject-build-system) |
| 27898 | (arguments |
| 27899 | (list |
| 27900 | #:test-flags |
| 27901 | #~(list "--ignore-glob=tests/get_contest_*.py" |
| 27902 | "--ignore-glob=tests/get_problem_*.py") |
| 27903 | #:phases |
| 27904 | #~(modify-phases %standard-phases |
| 27905 | (add-before 'check 'configure-tests |
| 27906 | (lambda* (#:key inputs outputs #:allow-other-keys) |
| 27907 | (delete-file-recursively |
| 27908 | (string-append (site-packages inputs outputs) |
| 27909 | "/tests")) |
| 27910 | (call-with-output-file "pytest.ini" |
| 27911 | (lambda (port) |
| 27912 | (format port "\ |
| 27913 | [pytest] |
| 27914 | python_files = tests/*.py")))))))) |
| 27915 | (native-inputs (list python-pytest python-setuptools)) |
| 27916 | (propagated-inputs |
| 27917 | (list python-appdirs |
| 27918 | python-beautifulsoup4 |
| 27919 | python-colorlog |
| 27920 | python-lxml |
| 27921 | python-requests |
| 27922 | python-toml |
| 27923 | python-jsonschema)) |
| 27924 | (home-page "https://github.com/online-judge-tools/api-client") |
| 27925 | (synopsis "API client for various online judges") |
| 27926 | (description |
| 27927 | "This is an API client for various online judges, used as the backend |
| 27928 | library of @code{oj} command. You can use the Python library |
| 27929 | (@code{onlinejudge} module) and the command-line interface (@command{oj-api} |
| 27930 | command) which talks JSON compatible with jmerle/competitive-companion.") |
| 27931 | (license license:expat))) |
| 27932 | |
| 27933 | (define-public online-judge-tools |
| 27934 | (package |
| 27935 | (name "online-judge-tools") |
| 27936 | (version "11.5.1") |
| 27937 | ;; Source distributions are not uploaded to PyPI. |
| 27938 | ;; https://pypi.org/project/online-judge-tools/11.5.1/#files |
| 27939 | (source |
| 27940 | (origin |
| 27941 | (method git-fetch) |
| 27942 | (uri (git-reference |
| 27943 | (url "https://github.com/online-judge-tools/oj") |
| 27944 | (commit (string-append "v" version)))) |
| 27945 | (file-name (git-file-name name version)) |
| 27946 | (sha256 |
| 27947 | (base32 "0zkzmmjgjb6lyrzq1ip54cpnp7al9a7mcyjyi5vx58bvnx3q0c6m")) |
| 27948 | (patches (search-patches "online-judge-tools.patch")))) |
| 27949 | (build-system pyproject-build-system) |
| 27950 | (arguments |
| 27951 | (list |
| 27952 | #:test-flags |
| 27953 | ;; These tests require network connections |
| 27954 | #~(list "--ignore=tests/command_version.py"))) |
| 27955 | (native-inputs (list python-pytest python-setuptools)) |
| 27956 | (inputs (list time)) |
| 27957 | (propagated-inputs (list python-online-judge-api-client python-colorama |
| 27958 | python-requests)) |
| 27959 | (home-page "https://github.com/online-judge-tools/oj") |
| 27960 | (synopsis "Command to help solving problems on various online judges") |
| 27961 | (description |
| 27962 | "@command{oj} is a command line tool to help solving problems on |
| 27963 | various online judges. This command automates downloading sample |
| 27964 | cases, generating additional test cases, testing for your code, and |
| 27965 | submitting it.") |
| 27966 | (license license:expat))) |
| 27967 | |
| 27968 | (define-public python-mpv-jsonipc |
| 27969 | (package |
| 27970 | (name "python-mpv-jsonipc") |
| 27971 | (version "1.2.0") |
| 27972 | (source |
| 27973 | (origin |
| 27974 | (method url-fetch) |
| 27975 | (uri (pypi-uri "python-mpv-jsonipc" version)) |
| 27976 | (sha256 |
| 27977 | (base32 "0ymdwrx544a6gn6wm9dixpgzbfrbpxvcj5ys7m41cgb4lvpvx691")))) |
| 27978 | (build-system pyproject-build-system) |
| 27979 | (arguments (list #:tests? #f)) ;No test suite. |
| 27980 | (native-inputs (list python-setuptools python-wheel)) |
| 27981 | (home-page "https://github.com/iwalton3/python-mpv-jsonipc") |
| 27982 | (synopsis "Python API to control MPV using JSON IPC") |
| 27983 | (description "Python MPV JSONIPC implements an interface similar to |
| 27984 | python-mpv, but it uses the JSON IPC protocol instead of the C API.") |
| 27985 | (license license:asl2.0))) |
| 27986 | |
| 27987 | (define-public python-jellyfin-apiclient |
| 27988 | (package |
| 27989 | (name "python-jellyfin-apiclient") |
| 27990 | (version "1.11.0") |
| 27991 | (source |
| 27992 | (origin |
| 27993 | (method git-fetch) |
| 27994 | (uri |
| 27995 | (git-reference |
| 27996 | (url "https://github.com/jellyfin/jellyfin-apiclient-python.git") |
| 27997 | (commit (string-append "v" version)))) |
| 27998 | (sha256 |
| 27999 | (base32 "1l30r7s4djvcsnf342af8mvh4c68v9b37j5y47k6cpaj8fj78lac")))) |
| 28000 | (build-system pyproject-build-system) |
| 28001 | (native-inputs (list python-setuptools python-pytest python-wheel)) |
| 28002 | (propagated-inputs (list python-certifi python-requests python-urllib3 |
| 28003 | python-websocket-client)) |
| 28004 | (home-page "https://github.com/jellyfin/jellyfin-apiclient-python") |
| 28005 | (synopsis "Python API client for Jellyfin") |
| 28006 | (description "The Jellyfin ApiClient Python package makes it possible |
| 28007 | to use the Jellyfin API from Python. It was extracted from the Jellyfin |
| 28008 | Kodi plugin.") |
| 28009 | (license license:gpl3+))) |
| 28010 | |
| 28011 | (define-public python-parso |
| 28012 | (package |
| 28013 | (name "python-parso") |
| 28014 | (version "0.8.5") |
| 28015 | (source |
| 28016 | (origin |
| 28017 | (method url-fetch) |
| 28018 | (uri (pypi-uri "parso" version)) |
| 28019 | (sha256 |
| 28020 | (base32 "0npyvabbvdp9ci3vhpg8dsfmxw2hljlb4j1g6p7bs650m5a76k83")))) |
| 28021 | (build-system pyproject-build-system) |
| 28022 | (native-inputs |
| 28023 | (list python-pytest |
| 28024 | python-setuptools)) |
| 28025 | (home-page "https://github.com/davidhalter/parso") |
| 28026 | (synopsis "Python Parser") |
| 28027 | (description "Parso is a Python parser that supports error recovery and |
| 28028 | round-trip parsing for different Python versions (in multiple Python versions). |
| 28029 | Parso is also able to list multiple syntax errors in your Python file.") |
| 28030 | (license license:expat))) |
| 28031 | |
| 28032 | (define-public python-async-generator |
| 28033 | (package |
| 28034 | (name "python-async-generator") |
| 28035 | (version "1.10") |
| 28036 | (source |
| 28037 | (origin |
| 28038 | (method url-fetch) |
| 28039 | (uri (pypi-uri "async_generator" version)) |
| 28040 | (sha256 |
| 28041 | (base32 |
| 28042 | "0i11f6z6lix8ixi3vsk6s76zvvpmgrw6zjrcwjm0m4hjdh83vfvf")))) |
| 28043 | (build-system pyproject-build-system) |
| 28044 | (native-inputs |
| 28045 | (list python-pytest python-setuptools)) |
| 28046 | (home-page "https://github.com/python-trio/async_generator") |
| 28047 | (synopsis "Async generators and context managers for Python 3.5+") |
| 28048 | (description "@code{async_generator} back-ports Python 3.6's native async |
| 28049 | generators and Python 3.7's context managers into Python 3.5.") |
| 28050 | ;; Dual licensed. |
| 28051 | (license (list license:expat license:asl2.0)))) |
| 28052 | |
| 28053 | (define-public python-async-timeout |
| 28054 | (package |
| 28055 | (name "python-async-timeout") |
| 28056 | (version "5.0.1") |
| 28057 | (source |
| 28058 | (origin |
| 28059 | (method url-fetch) |
| 28060 | (uri (pypi-uri "async_timeout" version)) |
| 28061 | (sha256 |
| 28062 | (base32 "1lvparrx5sfnapaq4mwk0ai7kqrwg6h2ykc2gqc5wsjs7mx1lcnr")))) |
| 28063 | (build-system pyproject-build-system) |
| 28064 | (native-inputs |
| 28065 | (list python-pytest |
| 28066 | python-pytest-asyncio |
| 28067 | python-setuptools |
| 28068 | python-wheel)) |
| 28069 | (home-page "https://github.com/aio-libs/async-timeout") |
| 28070 | (synopsis "Timeout context manager for asyncio programs") |
| 28071 | (description |
| 28072 | "@code{async-timeout} provides a timeout timeout context manager |
| 28073 | compatible with @code{asyncio}.") |
| 28074 | (license license:asl2.0))) |
| 28075 | |
| 28076 | (define-public python-async-timeout-4 |
| 28077 | (package |
| 28078 | (inherit python-async-timeout) |
| 28079 | (name "python-async-timeout") |
| 28080 | (version "4.0.3") |
| 28081 | (source |
| 28082 | (origin |
| 28083 | (method url-fetch) |
| 28084 | (uri (pypi-uri "async-timeout" version)) |
| 28085 | (sha256 |
| 28086 | (base32 "0bsj4z28ggxh1b6h6dvhx2mk6yqgb88bg8lyslpd10jdx1mxjh26")))))) |
| 28087 | |
| 28088 | (define-public python-glob2 |
| 28089 | (package |
| 28090 | (name "python-glob2") |
| 28091 | (version "0.7") |
| 28092 | (source |
| 28093 | (origin |
| 28094 | (method git-fetch) |
| 28095 | (uri (git-reference |
| 28096 | (url "https://github.com/miracle2k/python-glob2") |
| 28097 | (commit (string-append "v" version)))) |
| 28098 | (file-name (git-file-name name version)) |
| 28099 | (sha256 |
| 28100 | (base32 "160nh2ay9lw2hi0rixpzb2k87r6ql56k0j2cm87lqz8xc8zbw919")))) |
| 28101 | (build-system pyproject-build-system) |
| 28102 | (arguments |
| 28103 | (list |
| 28104 | #:phases |
| 28105 | #~(modify-phases %standard-phases |
| 28106 | (add-after 'unpack 'patch-tests-for-pytest8 |
| 28107 | ;; See: <https://github.com/miracle2k/python-glob2/issues/30>. |
| 28108 | (lambda _ |
| 28109 | (substitute* "test.py" |
| 28110 | (("setup\\(") "setup_method(") |
| 28111 | (("teardown\\(") "teardown_method(")) |
| 28112 | (rename-file "test.py" "glob2_test.py")))))) |
| 28113 | (native-inputs (list python-pytest python-setuptools)) |
| 28114 | (home-page "https://github.com/miracle2k/python-glob2/") |
| 28115 | (synopsis "Extended Version of the python buildin glob module") |
| 28116 | (description "This is an extended version of the Python |
| 28117 | @url{http://docs.python.org/library/glob.html, built-in glob module} which |
| 28118 | adds: |
| 28119 | |
| 28120 | @itemize |
| 28121 | @item The ability to capture the text matched by glob patterns, and return |
| 28122 | those matches alongside the file names. |
| 28123 | @item A recursive @code{**} globbing syntax, akin for example to the |
| 28124 | @code{globstar} option of Bash. |
| 28125 | @item The ability to replace the file system functions used, in order to glob |
| 28126 | on virtual file systems. |
| 28127 | @item Compatible with Python 2 and Python 3 (tested with 3.3). |
| 28128 | @end itemize |
| 28129 | |
| 28130 | Glob2 currently based on the glob code from Python 3.3.1.") |
| 28131 | (license license:bsd-2))) |
| 28132 | |
| 28133 | (define-public python-gipc |
| 28134 | (package |
| 28135 | (name "python-gipc") |
| 28136 | (version "1.8.0") |
| 28137 | (source |
| 28138 | (origin |
| 28139 | (method git-fetch) |
| 28140 | (uri (git-reference |
| 28141 | (url "https://github.com/jgehrcke/gipc") |
| 28142 | (commit version))) |
| 28143 | (file-name (git-file-name name version)) |
| 28144 | (sha256 |
| 28145 | (base32 "18w1fi3gh8i3kl58n6jpixzc2w42znxqhb3lj6hwn1641wq2hyrz")))) |
| 28146 | (build-system pyproject-build-system) |
| 28147 | (arguments |
| 28148 | (list |
| 28149 | #:phases |
| 28150 | #~(modify-phases %standard-phases |
| 28151 | (add-after 'unpack 'adjust-for-pytest-8 |
| 28152 | (lambda _ |
| 28153 | (substitute* "test/test_gipc.py" |
| 28154 | (("def setup") "def setup_method") |
| 28155 | (("def teardown") "def teardown_method"))))))) |
| 28156 | (native-inputs |
| 28157 | (list python-pytest |
| 28158 | python-setuptools)) |
| 28159 | (propagated-inputs |
| 28160 | (list python-gevent)) |
| 28161 | (home-page "https://gehrcke.de/gipc/") |
| 28162 | (synopsis "Child process management in the context of gevent") |
| 28163 | (description |
| 28164 | "Usage of Python's multiprocessing package in a gevent-powered |
| 28165 | application may raise problems. With @code{gipc}, process-based child |
| 28166 | processes can safely be created anywhere within a gevent-powered |
| 28167 | application.") |
| 28168 | (license license:expat))) |
| 28169 | |
| 28170 | (define-public python-beautifultable |
| 28171 | (package |
| 28172 | (name "python-beautifultable") |
| 28173 | (version "1.1.0") |
| 28174 | (source |
| 28175 | (origin |
| 28176 | (method git-fetch) |
| 28177 | (uri (git-reference |
| 28178 | (url "https://github.com/pri22296/beautifultable") |
| 28179 | (commit (string-append "v" version)))) |
| 28180 | (file-name (git-file-name name version)) |
| 28181 | (sha256 |
| 28182 | (base32 "0b6c7dpc45sm3vn65qm00q20sdgpi78xxzwc0rij7hnj9c45w97x")))) |
| 28183 | (build-system pyproject-build-system) |
| 28184 | (arguments |
| 28185 | (list |
| 28186 | ;; Fails because a None is converted to nan, probably due to Pandas 3. |
| 28187 | #:test-flags |
| 28188 | #~(list "-k" "not test_df_export_scenario2" "test.py"))) |
| 28189 | (native-inputs (list python-pandas |
| 28190 | python-pytest |
| 28191 | python-setuptools)) |
| 28192 | (propagated-inputs (list python-wcwidth)) |
| 28193 | (home-page "https://github.com/pri22296/beautifultable") |
| 28194 | (synopsis "Print ASCII tables for terminals") |
| 28195 | (description |
| 28196 | "@code{python-beautifultable} provides a class for easily printing |
| 28197 | tabular data in a visually appealing ASCII format to a terminal. |
| 28198 | |
| 28199 | Features include, but are not limited to: |
| 28200 | @itemize |
| 28201 | @item Full customization of the look and feel of the table |
| 28202 | @item Row and column accessors. |
| 28203 | @item Full support for colors using ANSI sequences or any library. |
| 28204 | @item Plenty of predefined styles and option to create custom ones. |
| 28205 | @item Support for Unicode characters. |
| 28206 | @item Supports streaming table when data is slow to retrieve. |
| 28207 | @end itemize") |
| 28208 | (license license:expat))) |
| 28209 | |
| 28210 | (define-public python-globber |
| 28211 | (package |
| 28212 | (name "python-globber") |
| 28213 | (version "0.2.1") |
| 28214 | (source |
| 28215 | (origin |
| 28216 | (method git-fetch) |
| 28217 | (uri (git-reference |
| 28218 | (url "https://github.com/asharov/globber") |
| 28219 | (commit version))) |
| 28220 | (file-name (git-file-name name version)) |
| 28221 | (sha256 |
| 28222 | (base32 "055xf7ja7zjhxis0ab5fnfsx16fsvr5fvc6mixqybanwxh8sgfjk")))) |
| 28223 | (build-system pyproject-build-system) |
| 28224 | (native-inputs (list python-pytest python-setuptools)) |
| 28225 | (home-page "https://github.com/asharov/globber") |
| 28226 | (synopsis "Library for string matching with glob patterns") |
| 28227 | (description |
| 28228 | "Globber is a Python library for matching file names against glob patterns. |
| 28229 | In contrast to other glob-matching libraries, it matches arbitrary strings and |
| 28230 | doesn't require the matched names to be existing files. In addition, it |
| 28231 | supports the globstar @code{**} operator to match an arbitrary number of |
| 28232 | path components.") |
| 28233 | (license license:asl2.0))) |
| 28234 | |
| 28235 | ;; XXX: Not maintained since 2021. |
| 28236 | (define-public python-git-hammer |
| 28237 | (package |
| 28238 | (name "python-git-hammer") |
| 28239 | (version "0.3.2") |
| 28240 | (source |
| 28241 | (origin |
| 28242 | (method git-fetch) |
| 28243 | (uri (git-reference |
| 28244 | (url "https://github.com/asharov/git-hammer") |
| 28245 | (commit version))) |
| 28246 | (file-name (git-file-name name version)) |
| 28247 | (sha256 |
| 28248 | (base32 "0j0skpbhi7js45hp1w2n87093yz1hjdg5y3kicwvm84fb8i38gvx")))) |
| 28249 | (build-system pyproject-build-system) |
| 28250 | (arguments |
| 28251 | (list |
| 28252 | #:phases |
| 28253 | #~(modify-phases %standard-phases |
| 28254 | (add-after 'unpack 'relax-requirements |
| 28255 | (lambda _ |
| 28256 | (substitute* "setup.py" |
| 28257 | (("matplotlib <3.1") "matplotlib"))))))) |
| 28258 | (native-inputs |
| 28259 | (list python-pytest |
| 28260 | python-setuptools)) |
| 28261 | (propagated-inputs |
| 28262 | (list python-beautifultable |
| 28263 | python-dateutil |
| 28264 | python-gitpython |
| 28265 | python-globber |
| 28266 | python-matplotlib |
| 28267 | python-sqlalchemy |
| 28268 | python-sqlalchemy-utils)) |
| 28269 | (home-page "https://github.com/asharov/git-hammer") |
| 28270 | (synopsis "Provide statistics for git repositories") |
| 28271 | (description |
| 28272 | "Git Hammer is a statistics tool for projects in git repositories. Its major |
| 28273 | feature is tracking the number of lines authored by each person for every |
| 28274 | commit, but it also includes some other useful statistics.") |
| 28275 | (license license:asl2.0))) |
| 28276 | |
| 28277 | (define-public python-gitignore-parser |
| 28278 | (package |
| 28279 | (name "python-gitignore-parser") |
| 28280 | (version "0.1.13") |
| 28281 | (source |
| 28282 | (origin |
| 28283 | (method git-fetch) |
| 28284 | (uri (git-reference |
| 28285 | (url "https://github.com/mherrmann/gitignore_parser") |
| 28286 | (commit (string-append "v" version)))) |
| 28287 | (file-name (git-file-name name version)) |
| 28288 | (sha256 |
| 28289 | (base32 "0lx1lip9p70my7z77szxc6izg3dj3000r6z71f2bnx2z13rl5pld")))) |
| 28290 | (build-system pyproject-build-system) |
| 28291 | (arguments (list #:test-backend #~'unittest)) |
| 28292 | (native-inputs (list python-setuptools)) |
| 28293 | (home-page "https://github.com/mherrmann/gitignore_parser") |
| 28294 | (synopsis "Spec-compliant gitignore parser for Python") |
| 28295 | (description |
| 28296 | "This package provides a spec-compliant gitignore parser for Python.") |
| 28297 | (license license:expat))) |
| 28298 | |
| 28299 | (define-public python-fusepy |
| 28300 | (package |
| 28301 | (name "python-fusepy") |
| 28302 | (version "2.0.4") |
| 28303 | (source |
| 28304 | (origin |
| 28305 | (method git-fetch) |
| 28306 | (uri (git-reference |
| 28307 | (url "https://github.com/fusepy/fusepy") |
| 28308 | (commit (string-append "v" version)))) |
| 28309 | (file-name (git-file-name name version)) |
| 28310 | (sha256 |
| 28311 | (base32 "10smh49lzmqam6ddxcnp1dajy4s9hi5ri3qp1rhwdyfsaq3pay81")))) |
| 28312 | (build-system pyproject-build-system) |
| 28313 | (arguments |
| 28314 | (list |
| 28315 | #:tests? #f ; No formalized tests. |
| 28316 | #:phases |
| 28317 | #~(modify-phases %standard-phases |
| 28318 | (add-before 'build 'set-library-file-name |
| 28319 | (lambda* (#:key inputs #:allow-other-keys) |
| 28320 | (substitute* "fuse.py" |
| 28321 | (("find_library\\('fuse'\\)") |
| 28322 | (format #f "~s" |
| 28323 | (search-input-file inputs "lib/libfuse.so"))))))))) |
| 28324 | (native-inputs (list python-setuptools)) |
| 28325 | (propagated-inputs (list fuse-2)) |
| 28326 | (home-page "https://github.com/fusepy/fusepy") |
| 28327 | (synopsis "Simple ctypes bindings for FUSE") |
| 28328 | (description |
| 28329 | "Python module that provides a simple interface to FUSE and MacFUSE. The |
| 28330 | binding is created using the standard @code{ctypes} library.") |
| 28331 | (license license:isc))) |
| 28332 | |
| 28333 | (define-public pybind11 |
| 28334 | (package |
| 28335 | (name "pybind11") |
| 28336 | (version "3.0.4") |
| 28337 | (source (origin |
| 28338 | (method git-fetch) |
| 28339 | (uri (git-reference |
| 28340 | (url "https://github.com/pybind/pybind11") |
| 28341 | (commit (string-append "v" version)))) |
| 28342 | (sha256 |
| 28343 | (base32 |
| 28344 | "1ad9215jz078al84h43f6fhwg80d7sjdc72r8hi3n419x8hag4j1")) |
| 28345 | (file-name (git-file-name name version)))) |
| 28346 | (build-system cmake-build-system) |
| 28347 | (arguments |
| 28348 | (list |
| 28349 | ;; TODO: Rewrite package definition with pyproject, I had issues to |
| 28350 | ;; enable tests and install includes, see the discussion in |
| 28351 | ;; guix/guix!4696 where it was initially proposed. |
| 28352 | #:configure-flags |
| 28353 | #~(list "-DPYBIND11_NOPYTHON=OFF" |
| 28354 | "-DPYBIND11_PYTEST_ARGS=-v" |
| 28355 | "-DPYBIND11_TEST_SMART_HOLDER=ON") |
| 28356 | #:phases |
| 28357 | #~(modify-phases %standard-phases |
| 28358 | (add-after 'install 'build-python-library |
| 28359 | (lambda _ |
| 28360 | (with-directory-excursion "../source" |
| 28361 | (setenv "PYBIND11_USE_CMAKE" "yes") |
| 28362 | (invoke "pip" "install" "--no-deps" "--no-build-isolation" |
| 28363 | "--prefix" #$output ".")))) |
| 28364 | (replace 'check |
| 28365 | (lambda* (#:key tests? #:allow-other-keys) |
| 28366 | (when tests? |
| 28367 | ;; Steps are taken from <.github/workflows/ci.yml>. |
| 28368 | (invoke "cmake" "--build" "." |
| 28369 | "--target" "pytest") |
| 28370 | (invoke "cmake" "--build" "." |
| 28371 | "--target" "cpptest") |
| 28372 | (invoke "cmake" "--build" "." |
| 28373 | "--target" "test_cmake_build") |
| 28374 | (invoke "cmake" "--build" "." |
| 28375 | "--target" "test_cross_module_rtti"))))))) |
| 28376 | (inputs (list boost)) |
| 28377 | (native-inputs |
| 28378 | (list catch2-2 |
| 28379 | eigen |
| 28380 | python-pytest |
| 28381 | python-wrapper |
| 28382 | python-scikit-build-core-bootstrap)) |
| 28383 | (home-page "https://github.com/pybind/pybind11/") |
| 28384 | (synopsis "Seamless operability between C++11 and Python") |
| 28385 | (description |
| 28386 | "@code{pybind11} is a lightweight header-only library that exposes C++ |
| 28387 | types in Python and vice versa, mainly to create Python bindings of existing |
| 28388 | C++ code. Its goals and syntax are similar to the @code{Boost.Python} |
| 28389 | library: to minimize boilerplate code in traditional extension modules by |
| 28390 | inferring type information using compile-time introspection.") |
| 28391 | (license license:bsd-3))) |
| 28392 | |
| 28393 | (define-public pybind11-2 |
| 28394 | (package |
| 28395 | (inherit pybind11) |
| 28396 | (name "pybind11") |
| 28397 | (version "2.13.6") |
| 28398 | (source |
| 28399 | (origin |
| 28400 | (method git-fetch) |
| 28401 | (uri (git-reference |
| 28402 | (url "https://github.com/pybind/pybind11") |
| 28403 | (commit (string-append "v" version)))) |
| 28404 | (file-name (git-file-name name version)) |
| 28405 | (sha256 |
| 28406 | (base32 "1dbnki0pnky39kr04afd9ks597bzjc530zbk33jjss53nfvdvlj8")))) |
| 28407 | (build-system cmake-build-system) |
| 28408 | (arguments |
| 28409 | (list |
| 28410 | #:configure-flags |
| 28411 | #~(list (string-append "-DCATCH_INCLUDE_DIR=" |
| 28412 | (assoc-ref %build-inputs "catch2") |
| 28413 | "/include/catch")) |
| 28414 | #:modules '((guix build cmake-build-system) |
| 28415 | ((guix build gnu-build-system) #:prefix gnu:) |
| 28416 | (guix build utils)) |
| 28417 | #:phases |
| 28418 | #~(modify-phases %standard-phases |
| 28419 | (replace 'check |
| 28420 | (lambda args |
| 28421 | (apply (assoc-ref gnu:%standard-phases 'check) args))) |
| 28422 | (add-after 'install 'install-python |
| 28423 | (lambda _ |
| 28424 | (with-directory-excursion "../source" |
| 28425 | (setenv "PYBIND11_USE_CMAKE" "yes") |
| 28426 | (invoke "python" "setup.py" "install" |
| 28427 | "--single-version-externally-managed" |
| 28428 | "--root=/" |
| 28429 | (string-append "--prefix=" #$output)))))))) |
| 28430 | (native-inputs |
| 28431 | (list catch2-1 |
| 28432 | eigen |
| 28433 | python-pytest |
| 28434 | python-setuptools |
| 28435 | python-wrapper)) |
| 28436 | (inputs '()))) |
| 28437 | |
| 28438 | (define-public python-pooch |
| 28439 | (package |
| 28440 | (name "python-pooch") |
| 28441 | (version "1.9.0") |
| 28442 | (source |
| 28443 | (origin |
| 28444 | (method git-fetch) |
| 28445 | (uri (git-reference |
| 28446 | (url "https://github.com/fatiando/pooch") |
| 28447 | (commit (string-append "v" version)))) |
| 28448 | (file-name (git-file-name name version)) |
| 28449 | (sha256 |
| 28450 | (base32 "0k8s9npjym80wpac77fvf1vnx5qm5c2pr7x39j8hh0cglfxmgii8")))) |
| 28451 | (build-system pyproject-build-system) |
| 28452 | (arguments |
| 28453 | (list |
| 28454 | #:test-flags #~(list "-m" "not network"))) |
| 28455 | (native-inputs |
| 28456 | (list python-pytest |
| 28457 | python-pytest-httpserver |
| 28458 | python-pytest-localftpserver |
| 28459 | python-setuptools |
| 28460 | python-setuptools-scm)) |
| 28461 | (propagated-inputs |
| 28462 | (list python-packaging |
| 28463 | python-platformdirs |
| 28464 | python-requests)) |
| 28465 | (home-page "https://github.com/fatiando/pooch") |
| 28466 | (synopsis "Manage your Python library's sample data files") |
| 28467 | (description |
| 28468 | "Pooch manages your Python library's sample data files: it automatically |
| 28469 | downloads and stores them in a local directory, with support for versioning |
| 28470 | and corruption checks.") |
| 28471 | (license license:bsd-3))) |
| 28472 | |
| 28473 | (define-public python-fasteners |
| 28474 | (package |
| 28475 | (name "python-fasteners") |
| 28476 | (version "0.20") |
| 28477 | (source (origin |
| 28478 | ;; No tests in the pypi tarball |
| 28479 | (method git-fetch) |
| 28480 | (uri (git-reference |
| 28481 | (url "https://github.com/harlowja/fasteners") |
| 28482 | (commit version))) |
| 28483 | (file-name (git-file-name name version)) |
| 28484 | (sha256 |
| 28485 | (base32 |
| 28486 | "0zf28x5n3svkxan97r89331s7dy0prix7111m0hf3mx5gk3nbj47")))) |
| 28487 | (build-system pyproject-build-system) |
| 28488 | (native-inputs (list python-diskcache python-eventlet python-more-itertools |
| 28489 | python-setuptools python-pytest)) |
| 28490 | (home-page "https://github.com/harlowja/fasteners") |
| 28491 | (synopsis "Python package that provides useful locks") |
| 28492 | (description |
| 28493 | "This package provides a Python program that provides following locks: |
| 28494 | |
| 28495 | @itemize |
| 28496 | @item Locking decorator |
| 28497 | @item Reader-writer locks |
| 28498 | @item Inter-process locks |
| 28499 | @item Generic helpers |
| 28500 | @end itemize\n") |
| 28501 | (license license:asl2.0))) |
| 28502 | |
| 28503 | (define-public python-requests-file |
| 28504 | (package |
| 28505 | (name "python-requests-file") |
| 28506 | (version "3.0.1") |
| 28507 | (source |
| 28508 | (origin |
| 28509 | (method git-fetch) |
| 28510 | (uri (git-reference |
| 28511 | (url "https://codeberg.org/dashea/requests-file") |
| 28512 | (commit version))) |
| 28513 | (file-name (git-file-name name version)) |
| 28514 | (sha256 |
| 28515 | (base32 "0wvz2fkx01libz731a9pfx0l5p44cd33ba8gs7kw5dksfzfwvark")))) |
| 28516 | (build-system pyproject-build-system) |
| 28517 | (native-inputs (list python-pytest python-setuptools)) |
| 28518 | (propagated-inputs (list python-requests)) |
| 28519 | (home-page "https://codeberg.org/dashea/requests-file") |
| 28520 | (synopsis "File transport adapter for Requests") |
| 28521 | (description |
| 28522 | "Requests-File is a transport adapter for use with the Requests Python |
| 28523 | library to allow local file system access via @code{file://} URLs.") |
| 28524 | (license license:asl2.0))) |
| 28525 | |
| 28526 | (define-public python-identify |
| 28527 | (package |
| 28528 | (name "python-identify") |
| 28529 | (version "2.6.14") |
| 28530 | (source |
| 28531 | (origin |
| 28532 | ;; There are no tests in the PyPI tarball. |
| 28533 | (method git-fetch) |
| 28534 | (uri (git-reference |
| 28535 | (url "https://github.com/chriskuehl/identify") |
| 28536 | (commit (string-append "v" version)))) |
| 28537 | (file-name (git-file-name name version)) |
| 28538 | (sha256 |
| 28539 | (base32 "1fbl7wvhky4rlv37p0531xnl037lq58d8wsxgyylj371bfz3m3wp")))) |
| 28540 | (build-system pyproject-build-system) |
| 28541 | (native-inputs |
| 28542 | (list python-pytest |
| 28543 | python-setuptools |
| 28544 | python-ukkonen)) |
| 28545 | (home-page "https://github.com/chriskuehl/identify") |
| 28546 | (synopsis "File identification library for Python") |
| 28547 | (description |
| 28548 | "@code{identify} is a file identification library for Python. Given |
| 28549 | a file (or some information about a file), return a set of standardized tags |
| 28550 | identifying what the file is.") |
| 28551 | (license license:expat))) |
| 28552 | |
| 28553 | (define-public python-nodeenv |
| 28554 | (package |
| 28555 | (name "python-nodeenv") |
| 28556 | (version "1.8.0") |
| 28557 | (source |
| 28558 | (origin |
| 28559 | ;; There's no tarball in PyPI. |
| 28560 | (method git-fetch) |
| 28561 | (uri (git-reference |
| 28562 | (url "https://github.com/ekalinin/nodeenv") |
| 28563 | (commit version))) |
| 28564 | (file-name (git-file-name name version)) |
| 28565 | (sha256 |
| 28566 | (base32 "0g8zp8zw5nnfc14ml0sil9yh7lnpz3xrdkazdkwg6pf5jqsxlvv9")))) |
| 28567 | (build-system pyproject-build-system) |
| 28568 | (arguments |
| 28569 | (list #:test-flags |
| 28570 | #~(list "-k" (string-append |
| 28571 | "not test_smoke" |
| 28572 | " and not test_smoke_n_system_special_chars")))) |
| 28573 | (native-inputs |
| 28574 | (list python-mock |
| 28575 | python-pytest |
| 28576 | python-setuptools |
| 28577 | python-wheel)) |
| 28578 | (home-page "https://ekalinin.github.io/nodeenv/") |
| 28579 | (synopsis "Create isolated node.js environments") |
| 28580 | (description |
| 28581 | "Nodeenv (node.js virtual environment) is a tool to create isolated |
| 28582 | node.js environments. It creates an environment that has its own installation |
| 28583 | directories, that doesn't share libraries with other node.js virtual |
| 28584 | environments.") |
| 28585 | (license license:bsd-3))) |
| 28586 | |
| 28587 | (define-public python-pynamecheap |
| 28588 | (package |
| 28589 | (name "python-pynamecheap") |
| 28590 | (version "0.0.3") |
| 28591 | (source |
| 28592 | (origin |
| 28593 | (method url-fetch) |
| 28594 | (uri (pypi-uri "PyNamecheap" version)) |
| 28595 | (sha256 |
| 28596 | (base32 "0wkbwz208j8nfrsmzmclvxg22ymknn0mlz76wbdza9k2bx2zja6l")))) |
| 28597 | (build-system pyproject-build-system) |
| 28598 | (arguments (list #:tests? #f)) ; No tests. |
| 28599 | (native-inputs (list python-setuptools)) |
| 28600 | (propagated-inputs (list python-requests)) |
| 28601 | (home-page "https://github.com/Bemmu/PyNamecheap") |
| 28602 | (synopsis "Namecheap API client in Python") |
| 28603 | (description |
| 28604 | "PyNamecheap is a Namecheap API client in Python.") |
| 28605 | (license license:expat))) |
| 28606 | |
| 28607 | (define-public python-pynput |
| 28608 | (package |
| 28609 | (name "python-pynput") |
| 28610 | (version "1.8.1") |
| 28611 | (source |
| 28612 | (origin |
| 28613 | (method git-fetch) |
| 28614 | (uri (git-reference |
| 28615 | (url "https://github.com/moses-palmer/pynput") |
| 28616 | (commit (string-append "v" version)))) |
| 28617 | (file-name (git-file-name name version)) |
| 28618 | (sha256 |
| 28619 | (base32 "00lnram5rm0amp5c1cjsw476bzi59g9m3l76ra29mp4jnz519sdc")))) |
| 28620 | (build-system pyproject-build-system) |
| 28621 | (arguments |
| 28622 | (list |
| 28623 | #:tests? #f ;XXX: tests can't be found with pytest or unittest |
| 28624 | #:phases |
| 28625 | #~(modify-phases %standard-phases |
| 28626 | (add-after 'unpack 'relax-requirements |
| 28627 | (lambda _ |
| 28628 | (substitute* "setup.py" |
| 28629 | (("RUNTIME_PACKAGES \\+ SETUP_PACKAGES") |
| 28630 | "RUNTIME_PACKAGES")))) |
| 28631 | (add-before 'sanity-check 'start-xserver |
| 28632 | (lambda* (#:key inputs #:allow-other-keys) |
| 28633 | (let ((Xvfb (search-input-file inputs "/bin/Xvfb"))) |
| 28634 | (system (format #f "~a :1 -screen 0 640x480x24 &" |
| 28635 | Xvfb)) |
| 28636 | (setenv "DISPLAY" ":1"))))))) |
| 28637 | (propagated-inputs |
| 28638 | (list python-evdev python-xlib)) |
| 28639 | (native-inputs |
| 28640 | (list python-setuptools xorg-server-for-tests)) |
| 28641 | (home-page "https://github.com/moses-palmer/pynput") |
| 28642 | (synopsis "Send virtual input commands") |
| 28643 | (description |
| 28644 | "This package provides tools to monitor and control user input devices in |
| 28645 | Python.") |
| 28646 | (license license:lgpl3))) |
| 28647 | |
| 28648 | (define-public python-pynixutil |
| 28649 | (package |
| 28650 | (name "python-pynixutil") |
| 28651 | (version "0.5.0") |
| 28652 | (source |
| 28653 | (origin |
| 28654 | (method git-fetch) |
| 28655 | (uri (git-reference |
| 28656 | (url "https://github.com/nix-community/pynixutil") |
| 28657 | (commit version))) |
| 28658 | (file-name (git-file-name name version)) |
| 28659 | (sha256 |
| 28660 | (base32 "1lnspcai7mqpv73bbd8kgyw63fxwgkwvfkl09b2bl5y2g2v7np6m")))) |
| 28661 | (build-system pyproject-build-system) |
| 28662 | (arguments |
| 28663 | (list |
| 28664 | #:test-flags |
| 28665 | ;; Tests require nix in the PATH. |
| 28666 | #~(list "--ignore=tests/test_drv.py") |
| 28667 | #:phases |
| 28668 | #~(modify-phases %standard-phases |
| 28669 | (add-after 'unpack 'use-poetry-core |
| 28670 | (lambda _ |
| 28671 | ;; Patch to use the core poetry API. |
| 28672 | (substitute* "pyproject.toml" |
| 28673 | (("poetry.masonry.api") "poetry.core.masonry.api"))))))) |
| 28674 | (native-inputs |
| 28675 | (list python-poetry-core |
| 28676 | python-pytest)) |
| 28677 | (home-page "https://github.com/nix-community/pynixutil") |
| 28678 | (synopsis "Utility functions for working with data from Nix in Python") |
| 28679 | (description |
| 28680 | "@code{pynixutil} provides functions for base32 encoding/decoding and |
| 28681 | derivation parsing, namingly @code{b32decode()}, @code{b32encode()} and |
| 28682 | @code{drvparse()}.") |
| 28683 | (license license:expat))) |
| 28684 | |
| 28685 | (define-public python-dns-lexicon |
| 28686 | (package |
| 28687 | (name "python-dns-lexicon") |
| 28688 | (version "3.21.1") |
| 28689 | (source |
| 28690 | (origin |
| 28691 | (method git-fetch) |
| 28692 | (uri (git-reference |
| 28693 | (url "https://github.com/dns-lexicon/dns-lexicon") |
| 28694 | (commit (string-append "v" version)))) |
| 28695 | (file-name (git-file-name name version)) |
| 28696 | (sha256 |
| 28697 | (base32 "138j8nrkrisn7kh5rqi2wz130p6vr4bkaw1pmbfpjkdjk118ng8c")))) |
| 28698 | (build-system pyproject-build-system) |
| 28699 | (arguments |
| 28700 | (list |
| 28701 | ;; Integration tests require network access. |
| 28702 | #:test-flags #~(list "--ignore-glob=tests/providers/*.py") |
| 28703 | #:phases |
| 28704 | #~(modify-phases %standard-phases |
| 28705 | (add-before 'check 'configure-tests |
| 28706 | (lambda _ |
| 28707 | (setenv "HOME" (getcwd))))))) |
| 28708 | (native-inputs (list nss-certs-for-test python-hatchling python-pytest)) |
| 28709 | (propagated-inputs |
| 28710 | (list python-beautifulsoup4 |
| 28711 | python-cryptography |
| 28712 | python-dnspython |
| 28713 | python-pyotp |
| 28714 | python-pyyaml |
| 28715 | python-requests |
| 28716 | python-tldextract)) |
| 28717 | (home-page "https://github.com/dns-lexicon/dns-lexicon") |
| 28718 | (synopsis "Manipulate DNS records on various DNS providers") |
| 28719 | (description |
| 28720 | "Lexicon provides a way to manipulate DNS records on multiple DNS |
| 28721 | providers in a standardized way. It has a CLI but it can also be used as a |
| 28722 | Python library. It was designed to be used in automation, specifically with |
| 28723 | Let's Encrypt.") |
| 28724 | (license license:expat))) |
| 28725 | |
| 28726 | (define-public python-cfgv |
| 28727 | (package |
| 28728 | (name "python-cfgv") |
| 28729 | (version "3.4.0") |
| 28730 | (source |
| 28731 | (origin |
| 28732 | ;; There are no tests in the PyPI tarball. |
| 28733 | (method git-fetch) |
| 28734 | (uri (git-reference |
| 28735 | (url "https://github.com/asottile/cfgv") |
| 28736 | (commit (string-append "v" version)))) |
| 28737 | (file-name (git-file-name name version)) |
| 28738 | (sha256 |
| 28739 | (base32 "0g7jg6dssyax6k85lk8afs8qdzgq138g6ij0jmmhgdv5fzks6k9z")))) |
| 28740 | (build-system pyproject-build-system) |
| 28741 | (native-inputs |
| 28742 | (list python-pytest python-setuptools python-wheel)) |
| 28743 | (home-page "https://github.com/asottile/cfgv") |
| 28744 | (synopsis "Configuration validation library") |
| 28745 | (description |
| 28746 | "This library helps to validate configuration files and produce human |
| 28747 | readable error messages.") |
| 28748 | (license license:expat))) |
| 28749 | |
| 28750 | (define-public python-commandlines |
| 28751 | (package |
| 28752 | (name "python-commandlines") |
| 28753 | (version "0.4.1") |
| 28754 | (source |
| 28755 | (origin |
| 28756 | (method git-fetch) |
| 28757 | (uri (git-reference |
| 28758 | (url "https://github.com/chrissimpkins/commandlines") |
| 28759 | (commit (string-append "v" version)))) |
| 28760 | (file-name (git-file-name name version)) |
| 28761 | (sha256 |
| 28762 | (base32 "03mxsknqbiwdl4cydnmr3dbid5rh1y1pwfcnbf6k4sf0wiw98y67")))) |
| 28763 | (build-system pyproject-build-system) |
| 28764 | (native-inputs (list python-pytest python-setuptools)) |
| 28765 | (home-page "https://github.com/chrissimpkins/commandlines") |
| 28766 | (synopsis "Command line argument to object parsing library") |
| 28767 | (description |
| 28768 | "@code{Commandlines} is a Python library for command line application |
| 28769 | development that supports command line argument parsing, command string |
| 28770 | validation testing and application logic.") |
| 28771 | (license license:expat))) |
| 28772 | |
| 28773 | ;; Make sure to upgrade python-llvmlite in (gnu packages llvm) together with |
| 28774 | ;; python-numba. They have a very inflexible relationship. |
| 28775 | (define-public python-numba |
| 28776 | (package |
| 28777 | (name "python-numba") |
| 28778 | (version "0.66.0") |
| 28779 | (source |
| 28780 | (origin |
| 28781 | (method url-fetch) |
| 28782 | (uri (pypi-uri "numba" version)) |
| 28783 | (sha256 |
| 28784 | (base32 |
| 28785 | "0qyk70nfvhxqxm1vz1qq072n9jvpl6hab8ymlslmxh161qxfc05r")))) |
| 28786 | (build-system pyproject-build-system) |
| 28787 | (arguments |
| 28788 | (list |
| 28789 | ;; tests: 10743 tests (skipped=699, expected failures=23) |
| 28790 | #:test-backend #~'custom |
| 28791 | #:test-flags |
| 28792 | ;; Check <buildscripts> directory for more build/tests examples. |
| 28793 | #~(list "-m" "numba.runtests" |
| 28794 | "--exclude-tags='long_running'" |
| 28795 | "--multiprocess" (number->string (min 8 (parallel-job-count))) |
| 28796 | "-b" |
| 28797 | "-v" |
| 28798 | "--" |
| 28799 | "numba.tests") |
| 28800 | #:phases |
| 28801 | #~(modify-phases %standard-phases |
| 28802 | (add-after 'unpack 'disable-failing-tests |
| 28803 | (lambda _ |
| 28804 | ;; This expects to be able to run pip. |
| 28805 | (delete-file "numba/tests/test_sysinfo.py") |
| 28806 | ;; This fails nondeterministically, possibly depending on CPU. |
| 28807 | ;; https://github.com/numba/numba/issues/8282. |
| 28808 | (substitute* "numba/tests/test_function_type.py" |
| 28809 | (("def test_wrapper_address_protocol_libm") |
| 28810 | "def disabled_test_wrapper_address_protocol_libm")) |
| 28811 | (substitute* "numba/tests/test_caching.py" |
| 28812 | ;; RuntimeError: cannot cache function 'simple_usecase': no |
| 28813 | ;; locator available for file |
| 28814 | (("def test_non_creatable_pycache") |
| 28815 | "def __off_test_non_creatable_pycache") |
| 28816 | (("def test_non_writable_pycache") |
| 28817 | "def __off_test_non_writable_pycache") |
| 28818 | ;; AssertionError: None is not an instance of <class |
| 28819 | ;; 'numba.core.caching.UserWideCacheLocator'> |
| 28820 | (("def test_frozen") |
| 28821 | "def __off_test_frozen")))) |
| 28822 | (add-before 'build 'disable-proprietary-features |
| 28823 | (lambda _ |
| 28824 | (setenv "NUMBA_DISABLE_HSA" "1") |
| 28825 | (setenv "NUMBA_DISABLE_CUDA" "1"))) |
| 28826 | (add-before 'check 'pre-check |
| 28827 | (lambda _ |
| 28828 | (setenv "HOME" "/tmp") |
| 28829 | ;; XXX: Something is wrong with the PYTHONPATH when running the |
| 28830 | ;; tests from the build directory, as it complains about not |
| 28831 | ;; being able to import certain modules. |
| 28832 | (delete-file-recursively "numba")))))) |
| 28833 | (native-inputs |
| 28834 | (list python-setuptools)) |
| 28835 | (propagated-inputs |
| 28836 | (list python-llvmlite |
| 28837 | python-numpy)) |
| 28838 | (home-page "https://numba.pydata.org") |
| 28839 | (synopsis "Compile Python code using LLVM") |
| 28840 | (description "Numba gives you the power to speed up your applications with |
| 28841 | high performance functions written directly in Python. With a few |
| 28842 | annotations, array-oriented and math-heavy Python code can be just-in-time |
| 28843 | compiled to native machine instructions, similar in performance to C, C++ and |
| 28844 | Fortran, without having to switch languages or Python interpreters. |
| 28845 | |
| 28846 | Numba works by generating optimized machine code using the LLVM compiler |
| 28847 | infrastructure at import time, runtime, or statically (using the included pycc |
| 28848 | tool).") |
| 28849 | (license license:bsd-3))) |
| 28850 | |
| 28851 | (define-public python-numcodecs |
| 28852 | (package |
| 28853 | (name "python-numcodecs") |
| 28854 | (version "0.15.1") ;newer version needs c-blosc 1.26+ |
| 28855 | (source |
| 28856 | (origin |
| 28857 | (method git-fetch) |
| 28858 | (uri (git-reference |
| 28859 | (url "https://github.com/zarr-developers/numcodecs") |
| 28860 | (commit (string-append "v" version)))) |
| 28861 | (file-name (git-file-name name version)) |
| 28862 | (sha256 |
| 28863 | (base32 "19i30k4zn6rjqlrfk20yh75r1di3j7mli2mn9n3pyxmwaq7hiasz")) |
| 28864 | (modules '((guix build utils))) |
| 28865 | (snippet |
| 28866 | '(begin |
| 28867 | ;; Only add CFLAGS on architectures where they are supported |
| 28868 | (substitute* "setup.py" |
| 28869 | (("import sys") |
| 28870 | "import sys\nimport platform") |
| 28871 | (("os\\.name == 'posix'") |
| 28872 | (string-append "os.name + platform.machine() == 'posixx86_64' or" |
| 28873 | " os.name + platform.machine() == 'posixx86'"))) |
| 28874 | (delete-file-recursively "c-blosc"))))) |
| 28875 | (build-system pyproject-build-system) |
| 28876 | (arguments |
| 28877 | (list |
| 28878 | ;; tests: 714 passed, 39 skipped, 36 xfailed, 20 warnings |
| 28879 | #:phases |
| 28880 | #~(modify-phases %standard-phases |
| 28881 | (add-after 'unpack 'disable-avx2 |
| 28882 | (lambda _ |
| 28883 | (setenv "DISABLE_NUMCODECS_AVX2" "1"))) |
| 28884 | (add-after 'unpack 'unbundle |
| 28885 | (lambda _ |
| 28886 | (substitute* "setup.py" |
| 28887 | (("sources=sources \\+ blosc_sources,") |
| 28888 | "sources=sources,") |
| 28889 | (("extra_compile_args=extra_compile_args") |
| 28890 | "extra_compile_args=list(base_compile_args)") |
| 28891 | (("'numcodecs.zstd',") |
| 28892 | "'numcodecs.zstd', libraries=['zstd'], ") |
| 28893 | (("'numcodecs.lz4',") |
| 28894 | "'numcodecs.lz4', libraries=['lz4'], ") |
| 28895 | (("'numcodecs.blosc',") |
| 28896 | "'numcodecs.blosc', libraries=['blosc'], ")))) |
| 28897 | (add-before 'build 'substitute-git-submodules |
| 28898 | (lambda _ |
| 28899 | (symlink #$(package-source (this-package-input "c-blosc")) |
| 28900 | "c-blosc"))) |
| 28901 | (replace 'check |
| 28902 | (lambda* (#:key tests? test-flags #:allow-other-keys) |
| 28903 | (with-directory-excursion #$output |
| 28904 | (apply invoke "pytest" "-vv" test-flags) |
| 28905 | (delete-file-recursively ".pytest_cache"))))))) |
| 28906 | (native-inputs |
| 28907 | (list python-cython |
| 28908 | python-py-cpuinfo |
| 28909 | python-pytest |
| 28910 | python-setuptools |
| 28911 | python-setuptools-scm)) |
| 28912 | (inputs |
| 28913 | (list c-blosc |
| 28914 | lz4 |
| 28915 | zlib |
| 28916 | (list zstd "lib"))) |
| 28917 | (propagated-inputs |
| 28918 | (list python-deprecated |
| 28919 | python-numpy |
| 28920 | ;; [optional] |
| 28921 | python-msgpack)) |
| 28922 | (home-page "https://github.com/zarr-developers/numcodecs") |
| 28923 | (synopsis "Buffer compression and transformation codecs") |
| 28924 | (description |
| 28925 | "This Python package provides buffer compression and transformation |
| 28926 | codecs for use in data storage and communication applications.") |
| 28927 | (license license:expat))) |
| 28928 | |
| 28929 | (define-public python-asciitree |
| 28930 | (package |
| 28931 | (name "python-asciitree") |
| 28932 | (version "0.3.3") |
| 28933 | (source |
| 28934 | (origin |
| 28935 | (method git-fetch) |
| 28936 | (uri (git-reference |
| 28937 | (url "https://github.com/mbr/asciitree") |
| 28938 | (commit version))) |
| 28939 | (file-name (git-file-name name version)) |
| 28940 | (sha256 |
| 28941 | (base32 "071wlpyi8pa262sj9xdy0zbj163z84dasxad363z3sfndqxw78h1")))) |
| 28942 | (build-system pyproject-build-system) |
| 28943 | (native-inputs (list python-pytest python-setuptools)) |
| 28944 | (home-page "https://github.com/mbr/asciitree") |
| 28945 | (synopsis "Draws ASCII trees") |
| 28946 | (description "This package draws tree structures using characters.") |
| 28947 | (license license:expat))) |
| 28948 | |
| 28949 | (define-public python-dill |
| 28950 | (package |
| 28951 | (name "python-dill") |
| 28952 | (version "0.4.1") |
| 28953 | (source |
| 28954 | (origin |
| 28955 | (method git-fetch) |
| 28956 | (uri (git-reference |
| 28957 | (url "https://github.com/uqfoundation/dill") |
| 28958 | (commit version))) |
| 28959 | (file-name (git-file-name name version)) |
| 28960 | (sha256 |
| 28961 | (base32 "09ig6820sd68cjixl5vkwkwvvgdii8qhaikc1rxhabhwxfymc7v2")))) |
| 28962 | (build-system pyproject-build-system) |
| 28963 | (arguments |
| 28964 | (list #:test-backend #~'custom |
| 28965 | #:test-flags #~(list "dill/tests/__main__.py"))) |
| 28966 | (native-inputs |
| 28967 | (list python-setuptools)) |
| 28968 | (home-page "http://dill.rtfd.io/") |
| 28969 | (synopsis "Serialize all of Python") |
| 28970 | (description "Dill extends Python's @code{pickle} module for serializing |
| 28971 | and de-serializing Python objects to the majority of the built-in Python |
| 28972 | types. Dill provides the user the same interface as the @code{pickle} module, |
| 28973 | and also includes some additional features. In addition to pickling Python |
| 28974 | objects, @code{dill} provides the ability to save the state of an interpreter |
| 28975 | session in a single command. Hence, it would be feasible to save a |
| 28976 | interpreter session, close the interpreter, ship the pickled file to another |
| 28977 | computer, open a new interpreter, unpickle the session and thus continue from |
| 28978 | the saved state of the original interpreter session.") |
| 28979 | (license license:bsd-3))) |
| 28980 | |
| 28981 | (define-public python-multiprocess |
| 28982 | (package |
| 28983 | (name "python-multiprocess") |
| 28984 | (version "0.70.18") |
| 28985 | (source |
| 28986 | (origin |
| 28987 | (method url-fetch) |
| 28988 | (uri (pypi-uri "multiprocess" version)) |
| 28989 | (sha256 |
| 28990 | (base32 |
| 28991 | "03bdxiincqq3g66vl3sf5ygagjz5sbrpr83djlipprmkwql72ngr")))) |
| 28992 | (build-system pyproject-build-system) |
| 28993 | (arguments |
| 28994 | (list |
| 28995 | #:phases |
| 28996 | #~(modify-phases %standard-phases |
| 28997 | (add-after 'unpack 'disable-broken-tests |
| 28998 | (lambda* (#:key inputs #:allow-other-keys) |
| 28999 | ;; The "wait_result" and "shared_memory..." tests are broken as |
| 29000 | ;; there is no keyboard interrupt. |
| 29001 | ;; |
| 29002 | ;; The "preload_resources" test fails as it cannot find |
| 29003 | ;; mp_preload.py. |
| 29004 | (substitute* |
| 29005 | (string-append "py" (python-version |
| 29006 | (assoc-ref inputs "python")) |
| 29007 | "/multiprocess/tests/__init__.py") |
| 29008 | (("^(.*)def test_(\ |
| 29009 | wait_result|\ |
| 29010 | shared_memory_SharedMemoryServer_ignores_sigint|\ |
| 29011 | preload_resources\ |
| 29012 | )" line indent) |
| 29013 | (string-append indent |
| 29014 | "@unittest.skip(\"Disabled by Guix\")\n" |
| 29015 | line))))) |
| 29016 | (replace 'check |
| 29017 | (lambda* (#:key tests? #:allow-other-keys) |
| 29018 | (if tests? |
| 29019 | (invoke "python" "-m" "multiprocess.tests") |
| 29020 | (format #t "test suite not run~%"))))))) |
| 29021 | (propagated-inputs |
| 29022 | (list python-dill)) |
| 29023 | (native-inputs (list python-setuptools)) |
| 29024 | (home-page "https://pypi.org/project/multiprocess/") |
| 29025 | (synopsis "Multiprocessing and multithreading in Python") |
| 29026 | (description |
| 29027 | "This package is a fork of the multiprocessing Python package, a package |
| 29028 | which supports the spawning of processes using the API of the standard |
| 29029 | library's @code{threading} module.") |
| 29030 | (license license:bsd-3))) |
| 29031 | |
| 29032 | (define-public python-multiprocessing-on-dill |
| 29033 | (package |
| 29034 | (name "python-multiprocessing-on-dill") |
| 29035 | (version "3.5.0a4") |
| 29036 | (source (origin |
| 29037 | (method url-fetch) |
| 29038 | (uri (pypi-uri "multiprocessing_on_dill" version)) |
| 29039 | (sha256 |
| 29040 | (base32 |
| 29041 | "1rs5a3hx1fcpfsxxkl5kx6g06c82wqjqgdqyny5l1ggl1wq0rmfn")))) |
| 29042 | (build-system pyproject-build-system) |
| 29043 | (propagated-inputs (list python-dill)) |
| 29044 | (native-inputs (list python-pytest python-setuptools python-wheel)) |
| 29045 | (home-page "https://github.com/sixty-north/multiprocessing_on_dill") |
| 29046 | (synopsis "Multiprocessing using dill instead of pickle") |
| 29047 | (description |
| 29048 | "This package provides a friendly fork of multiprocessing which uses dill |
| 29049 | instead of pickle.") |
| 29050 | (license license:psfl))) |
| 29051 | |
| 29052 | (define-public python-cytoolz |
| 29053 | (package |
| 29054 | (name "python-cytoolz") |
| 29055 | (version "1.0.1") |
| 29056 | (source |
| 29057 | (origin |
| 29058 | (method url-fetch) |
| 29059 | (uri (pypi-uri "cytoolz" version)) |
| 29060 | (sha256 |
| 29061 | (base32 "1mn7n916w8dfij3zq139a4szv12rwp94xxrnfvnv66wyp1hk3k49")) |
| 29062 | (modules '((guix build utils))) |
| 29063 | (snippet |
| 29064 | '(for-each delete-file (find-files "cytoolz" "\\.c$"))))) |
| 29065 | (build-system pyproject-build-system) |
| 29066 | (arguments |
| 29067 | (list #:test-flags #~(list "--pyargs" "cytoolz"))) |
| 29068 | (native-inputs |
| 29069 | (list python-cython |
| 29070 | python-pytest |
| 29071 | python-setuptools |
| 29072 | python-wheel)) |
| 29073 | (propagated-inputs |
| 29074 | (list python-toolz)) |
| 29075 | (home-page "https://github.com/pytoolz/cytoolz") |
| 29076 | (synopsis "High performance functional utilities") |
| 29077 | (description |
| 29078 | "The cytoolz package implements the same API as provided by toolz. The |
| 29079 | main differences are that @code{cytoolz} is faster and cytoolz offers a C API |
| 29080 | that is accessible to other projects developed in Cython.") |
| 29081 | (license license:bsd-3))) |
| 29082 | |
| 29083 | (define-public python-cloudpickle |
| 29084 | (package |
| 29085 | (name "python-cloudpickle") |
| 29086 | (version "3.1.0") |
| 29087 | (source |
| 29088 | (origin |
| 29089 | ;; Archive on pypi does not include test infrastructure. |
| 29090 | (method git-fetch) |
| 29091 | (uri (git-reference |
| 29092 | (url "https://github.com/cloudpipe/cloudpickle") |
| 29093 | (commit (string-append "v" version)))) |
| 29094 | (file-name (git-file-name name version)) |
| 29095 | (sha256 |
| 29096 | (base32 "16z0jdg5b1r23vw1l0bwsg40zcmnrbznr4frjac9kq5j6jm4fw6d")))) |
| 29097 | (build-system pyproject-build-system) |
| 29098 | (native-inputs |
| 29099 | (list python-flit-core |
| 29100 | python-psutil |
| 29101 | python-pytest)) |
| 29102 | (home-page "https://github.com/cloudpipe/cloudpickle") |
| 29103 | (synopsis "Extended pickling support for Python objects") |
| 29104 | (description |
| 29105 | "Cloudpickle makes it possible to serialize Python constructs not |
| 29106 | supported by the default pickle module from the Python standard library. It |
| 29107 | is especially useful for cluster computing where Python expressions are |
| 29108 | shipped over the network to execute on remote hosts, possibly close to the |
| 29109 | data.") |
| 29110 | (license license:bsd-3))) |
| 29111 | |
| 29112 | (define-public python-locket |
| 29113 | (package |
| 29114 | (name "python-locket") |
| 29115 | (version "1.0.0") |
| 29116 | (source |
| 29117 | (origin |
| 29118 | (method git-fetch) |
| 29119 | (uri (git-reference |
| 29120 | (url "https://github.com/mwilliamson/locket.py") |
| 29121 | (commit version))) |
| 29122 | (file-name (git-file-name name version)) |
| 29123 | (sha256 |
| 29124 | (base32 "0xx57gq5r7x58yd2mq6zxlr2kpzbyb0b5y5hiprgvkib948jxx0p")))) |
| 29125 | (build-system pyproject-build-system) |
| 29126 | ;; XXX: Requires python-spur, which requires another version of |
| 29127 | ;; python-paramiko. |
| 29128 | (arguments (list #:tests? #f)) |
| 29129 | (native-inputs (list python-setuptools)) |
| 29130 | (home-page "https://github.com/mwilliamson/locket.py") |
| 29131 | (synopsis "File-based locks for Python") |
| 29132 | (description |
| 29133 | "Locket implements a lock that can be used by multiple processes provided |
| 29134 | they use the same path.") |
| 29135 | (license license:bsd-2))) |
| 29136 | |
| 29137 | (define-public python-loky |
| 29138 | (package |
| 29139 | (name "python-loky") |
| 29140 | (version "3.5.6") |
| 29141 | (source |
| 29142 | (origin |
| 29143 | (method git-fetch) |
| 29144 | (uri (git-reference |
| 29145 | (url "https://github.com/joblib/loky") |
| 29146 | (commit version))) |
| 29147 | (file-name (git-file-name name version)) |
| 29148 | (sha256 |
| 29149 | (base32 "02za5z0hcy2mhinl1449ws6z475ydgm1mjxwj345f4kc7x7hj9jz")))) |
| 29150 | (build-system pyproject-build-system) |
| 29151 | (arguments |
| 29152 | (list |
| 29153 | #:test-flags |
| 29154 | #~(list "-k" (string-join |
| 29155 | (list |
| 29156 | ;; Requires process control. |
| 29157 | "not (test_kill_process_tree" |
| 29158 | ;; Hardware dependent tests. |
| 29159 | "test_only_physical_cores_error" |
| 29160 | ;; Depends on previous results. |
| 29161 | "test_wait_result)") |
| 29162 | " or ")))) |
| 29163 | (native-inputs |
| 29164 | (list python-packaging |
| 29165 | python-psutil |
| 29166 | python-pytest |
| 29167 | python-setuptools)) |
| 29168 | (propagated-inputs |
| 29169 | (list python-cloudpickle)) |
| 29170 | (home-page "https://loky.readthedocs.io") |
| 29171 | (synopsis "Robust and reusable Executor for joblib") |
| 29172 | (description |
| 29173 | "This package provides a robust implementation of |
| 29174 | @code{concurrent.futures.ProcessPoolExecutor}.") |
| 29175 | (license license:bsd-3))) |
| 29176 | |
| 29177 | (define-public python-partd |
| 29178 | (package |
| 29179 | (name "python-partd") |
| 29180 | (version "1.4.2") |
| 29181 | (source |
| 29182 | (origin |
| 29183 | (method git-fetch) |
| 29184 | (uri (git-reference |
| 29185 | (url "https://github.com/dask/partd/") |
| 29186 | (commit version))) |
| 29187 | (file-name (git-file-name name version)) |
| 29188 | (sha256 |
| 29189 | (base32 "0mwcr2cy0j5j8c9n2wlrlpc5v4za2cdh8jwhm7vpai53lqyvfjlf")) |
| 29190 | (patches |
| 29191 | (list |
| 29192 | (origin |
| 29193 | (method url-fetch) |
| 29194 | (uri |
| 29195 | ;; Fix PandasColumns compatibility with pandas 3.0 StringDtype, |
| 29196 | ;; from: <https://github.com/dask/partd/pull/83>. |
| 29197 | (string-append "https://github.com/dask/partd/commit/" |
| 29198 | "3efd8ec7e35a7c0aa1ba15ba2cf0766af99d3c21.patch")) |
| 29199 | (file-name (string-append name "-PR-83-pandas-3-support.patch")) |
| 29200 | (sha256 |
| 29201 | (base32 |
| 29202 | "1sc6vmrqgqjl4rnw9gv8ymdfaqdi5razww8b322f7hpwhpdydnhk"))))))) |
| 29203 | (build-system pyproject-build-system) |
| 29204 | (native-inputs |
| 29205 | (list python-pytest |
| 29206 | python-setuptools |
| 29207 | python-versioneer |
| 29208 | tzdata-for-tests)) |
| 29209 | (propagated-inputs |
| 29210 | (list python-locket |
| 29211 | python-toolz |
| 29212 | ;; [complete] |
| 29213 | python-blosc |
| 29214 | python-numpy |
| 29215 | python-pandas |
| 29216 | python-pyzmq)) |
| 29217 | (home-page "https://github.com/dask/partd/") |
| 29218 | (synopsis "Appendable key-value storage") |
| 29219 | (description |
| 29220 | "Partd stores key-value pairs. Values are raw bytes. We append on old |
| 29221 | values. Partd excels at shuffling operations.") |
| 29222 | (license license:bsd-3))) |
| 29223 | |
| 29224 | (define-public python-fsspec |
| 29225 | (package |
| 29226 | (name "python-fsspec") |
| 29227 | (version "2026.1.0") |
| 29228 | (source |
| 29229 | (origin |
| 29230 | (method git-fetch) |
| 29231 | (uri (git-reference |
| 29232 | (url "https://github.com/fsspec/filesystem_spec") |
| 29233 | (commit version))) |
| 29234 | (file-name (git-file-name name version)) |
| 29235 | (sha256 |
| 29236 | (base32 "049ybsinlvaa0br8ijm58jbrwbvaffbdv4gpxjcb2rc06qb4a2wg")))) |
| 29237 | (build-system pyproject-build-system) |
| 29238 | (arguments |
| 29239 | (list |
| 29240 | ;; tests: 1500 passed, 267 skipped, 3 deselected, 2 xfailed, 2 warnings |
| 29241 | #:test-flags |
| 29242 | #~(list "--ignore=fsspec/implementations/tests/test_github.py" |
| 29243 | "-k" (string-join |
| 29244 | ;; Test requires nentwork access |
| 29245 | (list "not test_async_cat_file_ranges" |
| 29246 | "test_gist_public_all_files" |
| 29247 | "test_gist_public_missing_file" |
| 29248 | "test_gist_public_one_file" |
| 29249 | ;; Test hangs |
| 29250 | "test_processes") |
| 29251 | " and not ")))) |
| 29252 | ;; The most of the inputs are optional, project does not force to include |
| 29253 | ;; any dependencies according to pyproject.toml. |
| 29254 | (propagated-inputs |
| 29255 | (list python-aiohttp python-libarchive-c python-requests python-tqdm)) |
| 29256 | (native-inputs |
| 29257 | (list nss-certs-for-test |
| 29258 | python-hatch-vcs |
| 29259 | python-hatchling |
| 29260 | python-numpy |
| 29261 | python-pytest |
| 29262 | python-pytest-asyncio |
| 29263 | python-pytest-mock |
| 29264 | python-pytest-rerunfailures)) |
| 29265 | (home-page "https://github.com/fsspec/filesystem_spec") |
| 29266 | (synopsis "File-system specification") |
| 29267 | (description "The purpose of this package is to produce a template or |
| 29268 | specification for a file-system interface, that specific implementations |
| 29269 | should follow, so that applications making use of them can rely on a common |
| 29270 | behavior and not have to worry about the specific internal implementation |
| 29271 | decisions with any given backend.") |
| 29272 | (license license:bsd-3))) |
| 29273 | |
| 29274 | (define-public python-ilinkedlist |
| 29275 | (package |
| 29276 | (name "python-ilinkedlist") |
| 29277 | (properties '((commit . "b5ea3f67833071c2e0aba2eac35e82496f469238") |
| 29278 | (revision . "0"))) |
| 29279 | (version (git-version "0.4.0" |
| 29280 | (assoc-ref properties 'revision) |
| 29281 | (assoc-ref properties 'commit))) |
| 29282 | (home-page "https://github.com/luther9/ilinkedlist-py") |
| 29283 | (source |
| 29284 | (origin |
| 29285 | (method git-fetch) |
| 29286 | (uri (git-reference |
| 29287 | (url home-page) |
| 29288 | (commit (assoc-ref properties 'commit)))) |
| 29289 | (file-name (git-file-name name version)) |
| 29290 | (sha256 |
| 29291 | (base32 "0lrs6arzm7dg70ny4ri06alhi40s03n71jsx5hsi0fimvwyvfhch")))) |
| 29292 | (build-system pyproject-build-system) |
| 29293 | (native-inputs (list python-pytest python-setuptools)) |
| 29294 | (synopsis "Immutable linked list library") |
| 29295 | (description |
| 29296 | "This is a implementation of immutable linked lists for Python. It |
| 29297 | contains @code{nil} (the empty linked list) and a @code{Pair} class for nodes. |
| 29298 | Since a linked list is treated as immutable, it is hashable, and its length |
| 29299 | can be retrieved in constant time. Some of the terminology is inspired by |
| 29300 | LISP. It is possible to create an improper list by creating a @code{Pair} |
| 29301 | with a non-list @code{cdr}.") |
| 29302 | (license license:gpl3+))) |
| 29303 | |
| 29304 | (define-public python-readlike |
| 29305 | (package |
| 29306 | (name "python-readlike") |
| 29307 | (version "0.1.3") |
| 29308 | (source |
| 29309 | (origin |
| 29310 | (method git-fetch) |
| 29311 | (uri (git-reference |
| 29312 | (url "https://github.com/jangler/readlike") |
| 29313 | (commit version))) |
| 29314 | (file-name (git-file-name name version)) |
| 29315 | (sha256 |
| 29316 | (base32 "1mw8j8ads8hqdbz42siwpffi4wi5s33z9g14a5c2i7vxp8m68qc1")))) |
| 29317 | (build-system pyproject-build-system) |
| 29318 | (native-inputs (list python-pytest python-setuptools)) |
| 29319 | (home-page "https://github.com/jangler/readlike") |
| 29320 | (synopsis "GNU Readline-like line editing module") |
| 29321 | (description |
| 29322 | "This Python module provides line editing functions similar to the default |
| 29323 | Emacs-style ones of GNU Readline. Unlike the Python standard library's |
| 29324 | @code{readline} package, this one allows access to those capabilities in settings |
| 29325 | outside of a standard command-line interface. It is especially well-suited to |
| 29326 | interfacing with Urwid, due to a shared syntax for describing key inputs. |
| 29327 | |
| 29328 | Currently, all stateless Readline commands are implemented. Yanking and history |
| 29329 | are not supported.") |
| 29330 | (license license:expat))) |
| 29331 | |
| 29332 | (define-public python-reparser |
| 29333 | (package |
| 29334 | (name "python-reparser") |
| 29335 | (version "1.4.3") |
| 29336 | (source |
| 29337 | (origin |
| 29338 | (method git-fetch) |
| 29339 | (uri (git-reference |
| 29340 | (url "https://github.com/xmikos/reparser") |
| 29341 | (commit (string-append "v" version)))) |
| 29342 | (file-name (git-file-name name version)) |
| 29343 | (sha256 |
| 29344 | (base32 "04v7h52wny0j2qj37501nk33j0s4amm134kagdicx2is49zylzq1")))) |
| 29345 | (build-system pyproject-build-system) |
| 29346 | (arguments (list #:tests? #f)) ; No tests. |
| 29347 | (native-inputs (list python-setuptools)) |
| 29348 | (home-page "https://github.com/xmikos/reparser") |
| 29349 | (synopsis "Lexer/parser for inline markup based on regular expressions") |
| 29350 | (description |
| 29351 | "This Python library provides a simple lexer/parser for inline markup based |
| 29352 | on regular expressions.") |
| 29353 | (license license:expat))) |
| 29354 | |
| 29355 | (define-public python-retrying |
| 29356 | (package |
| 29357 | (name "python-retrying") |
| 29358 | (version "1.4.1") |
| 29359 | (source |
| 29360 | (origin |
| 29361 | (method git-fetch) |
| 29362 | (uri (git-reference |
| 29363 | (url "https://github.com/groodt/retrying") |
| 29364 | (commit (string-append "v" version)))) |
| 29365 | (file-name (git-file-name name version)) |
| 29366 | (sha256 |
| 29367 | (base32 "0m1kf6mxmxzlf3sldzm50c3hq1hkh6fz1g97pdwyvbwdazb7blw9")))) |
| 29368 | (build-system pyproject-build-system) |
| 29369 | (native-inputs (list python-pytest python-setuptools)) |
| 29370 | (home-page "https://github.com/groodt/retrying") |
| 29371 | (synopsis "Library for adding retry behavior") |
| 29372 | (description "Retrying is a general-purpose retrying library to simplify |
| 29373 | the task of adding retry behavior to just about anything. |
| 29374 | |
| 29375 | Features: |
| 29376 | |
| 29377 | @itemize |
| 29378 | @item Generic Decorator API. |
| 29379 | @item Specify stop condition (i.e. limit by number of attempts). |
| 29380 | @item Specify wait condition (i.e. exponential backoff sleeping between attempts). |
| 29381 | @item Customize retrying on Exceptions. |
| 29382 | @item Customize retrying on expected returned result. |
| 29383 | @end itemize") |
| 29384 | (license license:asl2.0))) |
| 29385 | |
| 29386 | (define-public python-precis-i18n |
| 29387 | (package |
| 29388 | (name "python-precis-i18n") |
| 29389 | (version "1.1.1") |
| 29390 | (source |
| 29391 | (origin |
| 29392 | (method url-fetch) |
| 29393 | (uri (pypi-uri "precis_i18n" version)) |
| 29394 | (sha256 |
| 29395 | (base32 "0cdv2vbn0kwfq0pxj4l52s2xiaqablb2cgk0nph6r9cyqayf77rn")))) |
| 29396 | (build-system pyproject-build-system) |
| 29397 | (native-inputs |
| 29398 | (list python-pytest |
| 29399 | python-setuptools |
| 29400 | python-wheel)) |
| 29401 | (home-page "https://github.com/byllyfish/precis_i18n") |
| 29402 | (synopsis "Implementation of the PRECIS framework") |
| 29403 | (description |
| 29404 | "This module implements the PRECIS Framework as described in RFC 8264, |
| 29405 | RFC 8265 and RFC 8266.") |
| 29406 | (license license:expat))) |
| 29407 | |
| 29408 | (define-public python-absl-py |
| 29409 | (package |
| 29410 | (name "python-absl-py") |
| 29411 | (version "2.3.1") |
| 29412 | (source |
| 29413 | (origin |
| 29414 | (method url-fetch) |
| 29415 | (uri (pypi-uri "absl_py" version)) |
| 29416 | (sha256 |
| 29417 | (base32 "1jbzyyrmvmqwnyh053hdmh6q851sbvrg70yf3gnd5gvzdx920y59")))) |
| 29418 | (build-system pyproject-build-system) |
| 29419 | (arguments |
| 29420 | (list #:tests? #f)) ;tests require bazel |
| 29421 | (native-inputs |
| 29422 | (list python-hatchling)) |
| 29423 | (home-page "https://github.com/abseil/abseil-py") |
| 29424 | (synopsis "Abseil Python common libraries") |
| 29425 | (description |
| 29426 | "This package provides the Abseil Python Common Libraries, a collection |
| 29427 | of Python libraries for building Python applications.") |
| 29428 | (license license:asl2.0))) |
| 29429 | |
| 29430 | (define-public python-astor |
| 29431 | (package |
| 29432 | (name "python-astor") |
| 29433 | (properties '((commit . "df09001112f079db54e7c5358fa143e1e63e74c4") |
| 29434 | (revision . "0"))) |
| 29435 | (version (git-version "0.8.1" |
| 29436 | (assoc-ref properties 'revision) |
| 29437 | (assoc-ref properties 'commit))) |
| 29438 | (source |
| 29439 | (origin |
| 29440 | (method git-fetch) |
| 29441 | (uri (git-reference |
| 29442 | (url "https://github.com/berkerpeksag/astor") |
| 29443 | (commit (assoc-ref properties 'commit)))) |
| 29444 | (file-name (git-file-name name version)) |
| 29445 | (sha256 |
| 29446 | (base32 "0ymj0n23b6b4qc6x8ycysh2dipdry5a3gakcaf8nravzp5ma2psl")))) |
| 29447 | (build-system pyproject-build-system) |
| 29448 | (arguments |
| 29449 | (list |
| 29450 | ;; FIXME: Unclear why this test fails. |
| 29451 | #:test-flags #~(list "--deselect=\ |
| 29452 | tests/test_rtrip.py::RtripTestCase::test_convert_stdlib"))) |
| 29453 | (native-inputs (list python-pytest python-setuptools)) |
| 29454 | (home-page "https://github.com/berkerpeksag/astor") |
| 29455 | (synopsis "Read and write Python ASTs") |
| 29456 | (description |
| 29457 | "Astor is designed to allow easy manipulation of Python source via the |
| 29458 | Abstract Syntax Tree.") |
| 29459 | (license license:bsd-3))) |
| 29460 | |
| 29461 | (define-public python-astunparse |
| 29462 | ;; XXX: No updates since 2019, consider to remove when python-pytorch is |
| 29463 | ;; updated. |
| 29464 | (package |
| 29465 | (name "python-astunparse") |
| 29466 | (version "1.6.3") |
| 29467 | (source |
| 29468 | (origin |
| 29469 | (method url-fetch) |
| 29470 | (uri (pypi-uri "astunparse" version)) |
| 29471 | (sha256 |
| 29472 | (base32 "0wh8jjvwafxc7rvbyb13cdwndkicm7cry1bd8p1q9l7has23mnas")))) |
| 29473 | (build-system pyproject-build-system) |
| 29474 | (arguments '(#:tests? #f)) ; there are none |
| 29475 | (native-inputs |
| 29476 | (list python-setuptools)) |
| 29477 | (propagated-inputs |
| 29478 | (list python-six)) |
| 29479 | (home-page "https://github.com/simonpercivall/astunparse") |
| 29480 | (synopsis "AST unparser for Python") |
| 29481 | (description "This package provides an AST unparser for Python. It is a |
| 29482 | factored out version of @code{unparse} found in the Python source |
| 29483 | distribution.") |
| 29484 | (license license:bsd-3))) |
| 29485 | |
| 29486 | (define-public python-gast |
| 29487 | (package |
| 29488 | (name "python-gast") |
| 29489 | (version "0.7.0") |
| 29490 | (source |
| 29491 | (origin |
| 29492 | (method git-fetch) |
| 29493 | (uri (git-reference |
| 29494 | (url "https://github.com/serge-sans-paille/gast/") |
| 29495 | (commit version))) |
| 29496 | (file-name (git-file-name name version)) |
| 29497 | (sha256 |
| 29498 | (base32 "05sxx7ixkchxvgrzpkqmklhzvsqydnyzrvzwfd5xkd3cv1arg9m5")))) |
| 29499 | (build-system pyproject-build-system) |
| 29500 | (native-inputs |
| 29501 | (list python-pytest |
| 29502 | python-setuptools)) |
| 29503 | (home-page "https://github.com/serge-sans-paille/gast/") |
| 29504 | (synopsis "Generic Python AST that abstracts the underlying Python version") |
| 29505 | (description |
| 29506 | "GAST provides a compatibility layer between the AST of various Python |
| 29507 | versions, as produced by @code{ast.parse} from the standard @code{ast} |
| 29508 | module.") |
| 29509 | (license license:bsd-3))) |
| 29510 | |
| 29511 | ;; XXX: Not maintained since 2022, leaf package. |
| 29512 | (define-public python-attr |
| 29513 | (package |
| 29514 | (name "python-attr") |
| 29515 | (version "0.3.2") |
| 29516 | (source |
| 29517 | (origin |
| 29518 | (method url-fetch) |
| 29519 | (uri (pypi-uri "attr" version)) |
| 29520 | (sha256 |
| 29521 | (base32 "1x2627x0n2rxx8wib4cksbjjnncff8finq97k37dq70qd2kvrvhw")))) |
| 29522 | (build-system pyproject-build-system) |
| 29523 | (arguments |
| 29524 | (list #:test-backend #~'custom |
| 29525 | #:test-flags #~(list "-c" "import dry_attr; dry_attr.test()"))) |
| 29526 | (native-inputs |
| 29527 | (list python-setuptools)) |
| 29528 | (home-page "https://github.com/denis-ryzhkov/attr") |
| 29529 | (synopsis "Decorator for attributes of target function or class") |
| 29530 | (description "Simple decorator to set attributes of target function or |
| 29531 | class in a @acronym{DRY, Don't Repeat Yourself} way.") |
| 29532 | (license license:expat))) |
| 29533 | |
| 29534 | (define-public python-construct |
| 29535 | ;; Fixes not in a release yet. |
| 29536 | (let ((commit "c1171b16bda1d213ba4858f3e0e4d4003e4aae90") |
| 29537 | (revision "1")) |
| 29538 | (package |
| 29539 | (name "python-construct") |
| 29540 | (version (git-version "2.10.70" revision commit)) |
| 29541 | (source |
| 29542 | (origin |
| 29543 | (method git-fetch) |
| 29544 | (uri (git-reference |
| 29545 | (url "https://github.com/construct/construct") |
| 29546 | (commit commit))) |
| 29547 | (file-name (git-file-name name version)) |
| 29548 | (sha256 |
| 29549 | (base32 "03f6nvyzrq50nhqqwmmws983wwjg78yd9j09pl94vkmyjph33da5")))) |
| 29550 | (build-system pyproject-build-system) |
| 29551 | (arguments |
| 29552 | (list |
| 29553 | #:test-flags #~(list "--ignore=tests/test_benchmarks.py"))) |
| 29554 | (native-inputs |
| 29555 | (list python-pytest python-setuptools)) |
| 29556 | (propagated-inputs |
| 29557 | (list python-arrow |
| 29558 | python-cloudpickle |
| 29559 | python-cryptography |
| 29560 | python-lz4 |
| 29561 | python-numpy |
| 29562 | python-ruamel.yaml)) |
| 29563 | (home-page "https://construct.readthedocs.io") |
| 29564 | (synopsis "Declarative and symmetrical parser and builder for binary data") |
| 29565 | (description |
| 29566 | "This package provides both simple, atomic constructs (such as |
| 29567 | integers of various sizes), as well as composite ones which allow you |
| 29568 | form hierarchical and sequential structures of increasing complexity. |
| 29569 | It features bit and byte granularity, easy debugging and testing, an |
| 29570 | easy-to-extend subclass system, and lots of primitive constructs to |
| 29571 | make your work easier.") |
| 29572 | (license license:expat)))) |
| 29573 | |
| 29574 | (define-public python-outcome |
| 29575 | (package |
| 29576 | (name "python-outcome") |
| 29577 | (version "1.3.0.post0") |
| 29578 | (source |
| 29579 | (origin |
| 29580 | (method url-fetch) |
| 29581 | (uri (pypi-uri "outcome" version)) |
| 29582 | (sha256 |
| 29583 | (base32 "1f2327wzf57zwqw15kzk19ff2s52fa74cxxk8w0bhw99bzk05kwx")))) |
| 29584 | (build-system pyproject-build-system) |
| 29585 | (native-inputs |
| 29586 | (list python-pytest |
| 29587 | python-pytest-asyncio |
| 29588 | python-setuptools)) |
| 29589 | (propagated-inputs |
| 29590 | (list python-attrs)) |
| 29591 | (home-page "https://github.com/python-trio/outcome") |
| 29592 | (synopsis "Capture the outcome of Python function calls") |
| 29593 | (description |
| 29594 | "Capture the outcome of Python function calls. Extracted from the Trio |
| 29595 | project.") |
| 29596 | ;; Either license applies. |
| 29597 | (license (list license:expat license:asl2.0)))) |
| 29598 | |
| 29599 | (define-public python-humanize |
| 29600 | (package |
| 29601 | (name "python-humanize") |
| 29602 | (version "4.14.0") |
| 29603 | (source |
| 29604 | (origin |
| 29605 | (method url-fetch) |
| 29606 | (uri (pypi-uri "humanize" version)) |
| 29607 | (sha256 |
| 29608 | (base32 |
| 29609 | "03d9xdashy8bsxvg15nz3ih1nsl6na1cmc9mqh2xch56brq9581g")))) |
| 29610 | (build-system pyproject-build-system) |
| 29611 | (native-inputs |
| 29612 | (list python-freezegun |
| 29613 | python-hatch-vcs |
| 29614 | python-hatchling |
| 29615 | python-pytest)) |
| 29616 | (home-page "https://github.com/jmoiron/humanize") |
| 29617 | (synopsis "Print numerical information in a human-readable form") |
| 29618 | (description "This package provides a Python module that displays numbers |
| 29619 | and dates in \"human readable\" forms. For example, it would display |
| 29620 | \"12345591313\" as \"12.3 billion\".") |
| 29621 | (license license:expat))) |
| 29622 | |
| 29623 | (define-public python-annoy |
| 29624 | (package |
| 29625 | (name "python-annoy") |
| 29626 | (version "1.17.3") |
| 29627 | (source |
| 29628 | (origin |
| 29629 | (method git-fetch) |
| 29630 | (uri (git-reference |
| 29631 | (url "https://github.com/spotify/annoy") |
| 29632 | (commit (string-append "v" version)))) |
| 29633 | (file-name (git-file-name name version)) |
| 29634 | (sha256 |
| 29635 | (base32 "1zmdp1dws3i35a0psb10k6rkh3iaiq8s9ybxibvfjihbapidd4d0")))) |
| 29636 | (build-system pyproject-build-system) |
| 29637 | (arguments |
| 29638 | (list |
| 29639 | #:test-flags |
| 29640 | ;; urllib.error.URLError: <urlopen error [Errno -3] Temporary failure in |
| 29641 | ;; name resolution> |
| 29642 | #~(list "--deselect=test/accuracy_test.py::test_glove_25" |
| 29643 | "--deselect=test/accuracy_test.py::test_nytimes_16" |
| 29644 | "--deselect=test/accuracy_test.py::test_fashion_mnist"))) |
| 29645 | (native-inputs |
| 29646 | (list python-h5py |
| 29647 | python-numpy |
| 29648 | python-pytest |
| 29649 | python-setuptools)) |
| 29650 | (home-page "https://github.com/spotify/annoy/") |
| 29651 | (synopsis "Approximate nearest neighbors library") |
| 29652 | (description |
| 29653 | "Annoy is a C++ library with Python bindings to search for points in |
| 29654 | space that are close to a given query point. It also creates large read-only |
| 29655 | file-based data structures that are @code{mmap}ped into memory so that many |
| 29656 | processes may share the same data.") |
| 29657 | (license license:asl2.0))) |
| 29658 | |
| 29659 | (define-public python-croniter |
| 29660 | (package |
| 29661 | (name "python-croniter") |
| 29662 | (version "5.0.1") |
| 29663 | (source |
| 29664 | (origin |
| 29665 | (method git-fetch) |
| 29666 | (uri (git-reference |
| 29667 | (url "https://github.com/kiorky/croniter") |
| 29668 | (commit version))) |
| 29669 | (file-name (git-file-name name version)) |
| 29670 | (sha256 |
| 29671 | (base32 "146v641wicx2ipfdpqg1vysikbbhrhndmrnjj1hnv03fjvhqknq9")))) |
| 29672 | (build-system pyproject-build-system) |
| 29673 | (native-inputs (list python-pytest python-setuptools)) |
| 29674 | (propagated-inputs (list python-dateutil python-pytz)) |
| 29675 | (home-page "https://github.com/kiorky/croniter") |
| 29676 | (synopsis "Iterate datetime objects with cron-like syntax") |
| 29677 | (description |
| 29678 | "@code{croniter} provides iteration for datetime object with cron-like |
| 29679 | format.") |
| 29680 | (license license:expat))) |
| 29681 | |
| 29682 | (define-public python-crontab |
| 29683 | (package |
| 29684 | (name "python-crontab") |
| 29685 | (version "3.3.0") |
| 29686 | (source |
| 29687 | (origin |
| 29688 | (method url-fetch) |
| 29689 | (uri (pypi-uri "python_crontab" version)) |
| 29690 | (sha256 |
| 29691 | (base32 "06r9vqaplqd9saazqw3lprlbv4sb2an0zkjdxh23xpyxd3p8lz00")))) |
| 29692 | (build-system pyproject-build-system) |
| 29693 | (arguments |
| 29694 | (list #:test-flags |
| 29695 | ;; This test is made for Windows. |
| 29696 | #~(list "-k" "not test_07_non_posix_shell") |
| 29697 | #:phases |
| 29698 | #~(modify-phases %standard-phases |
| 29699 | (add-after 'unpack 'defaults-to-mcron |
| 29700 | (lambda* (#:key inputs #:allow-other-keys) |
| 29701 | (substitute* "crontab.py" |
| 29702 | (("/usr/bin/crontab") |
| 29703 | (search-input-file inputs "bin/crontab")))))))) |
| 29704 | (inputs |
| 29705 | (list mcron python-dateutil)) |
| 29706 | (native-inputs |
| 29707 | (list python-pytest python-setuptools)) |
| 29708 | (home-page "https://gitlab.com/doctormo/python-crontab/") |
| 29709 | (synopsis "Module for reading and writing crontab files") |
| 29710 | (description "This Python module can read, write crontab files, and |
| 29711 | access the system cron automatically and simply using a direct API.") |
| 29712 | (license license:lgpl3+))) |
| 29713 | |
| 29714 | (define-public python-apscheduler |
| 29715 | (package |
| 29716 | (name "python-apscheduler") |
| 29717 | (version "3.11.2") |
| 29718 | (source (origin |
| 29719 | (method url-fetch) |
| 29720 | (uri (pypi-uri "apscheduler" version)) |
| 29721 | (sha256 |
| 29722 | (base32 |
| 29723 | "0hgg7r3s1k6qj4fy3whrpyqj8vm0wvk3lk4c1h15z07caaq6d69a")))) |
| 29724 | (build-system pyproject-build-system) |
| 29725 | (arguments |
| 29726 | (list |
| 29727 | ;; tests: 701 passed, 252 skipped, 13 deselected, 201 warnings |
| 29728 | #:test-flags |
| 29729 | ;; XXX: Some tests hang or fail with verity of errors: |
| 29730 | ;; E RuntimeError: There is no current event loop in thread 'MainThread'. |
| 29731 | #~(list #$@(map (lambda (test) (string-append "--deselect=" |
| 29732 | "tests/test_executors.py::" |
| 29733 | test)) |
| 29734 | (list "test_broken_pool" |
| 29735 | "test_max_instances[processpool-pytz]" |
| 29736 | "test_max_instances[processpool-zoneinfo]" |
| 29737 | "test_run_coroutine_job_tornado" |
| 29738 | "test_run_job_error[processpool-pytz]" |
| 29739 | "test_run_job_error[processpool-zoneinfo]" |
| 29740 | "test_submit_job[processpool-pytz-error]" |
| 29741 | "test_submit_job[processpool-pytz-executed]" |
| 29742 | "test_submit_job[processpool-pytz-missed]" |
| 29743 | "test_submit_job[processpool-zoneinfo-error]" |
| 29744 | "test_submit_job[processpool-zoneinfo-executed]" |
| 29745 | "test_submit_job[processpool-zoneinfo-missed]"))))) |
| 29746 | (native-inputs |
| 29747 | (list python-anyio |
| 29748 | python-gevent |
| 29749 | python-pyside-6 |
| 29750 | python-pytest |
| 29751 | python-pytest-asyncio |
| 29752 | python-pytz |
| 29753 | python-setuptools |
| 29754 | python-setuptools-scm |
| 29755 | python-sqlalchemy |
| 29756 | python-tornado |
| 29757 | python-twisted)) |
| 29758 | (propagated-inputs |
| 29759 | (list python-tzlocal)) |
| 29760 | (home-page "https://github.com/agronholm/apscheduler") |
| 29761 | (synopsis "Task scheduling library for Python") |
| 29762 | (description "Advanced Python Scheduler (APScheduler) is a Python library |
| 29763 | that lets you schedule your Python code to be executed later, either just once |
| 29764 | or periodically. |
| 29765 | |
| 29766 | You can add new jobs or remove old ones on the fly as you please. If you store |
| 29767 | your jobs in a database, they will also survive scheduler restarts and maintain |
| 29768 | their state. When the scheduler is restarted, it will then run all the jobs it |
| 29769 | should have run while it was offline.") |
| 29770 | (license license:expat))) |
| 29771 | |
| 29772 | (define-public python-ifaddr |
| 29773 | (package |
| 29774 | (name "python-ifaddr") |
| 29775 | (version "0.2.0") |
| 29776 | (source |
| 29777 | (origin |
| 29778 | (method url-fetch) |
| 29779 | (uri (pypi-uri "ifaddr" version)) |
| 29780 | (sha256 |
| 29781 | (base32 "1m5fqjqf53m31qrl8fxp2sbwf4mvk5mbjpw2jm2x8rgpmg5by36c")) |
| 29782 | (snippet #~(delete-file "ifaddr/_win32.py")))) |
| 29783 | (build-system pyproject-build-system) |
| 29784 | (native-inputs |
| 29785 | (list python-pytest python-setuptools python-wheel)) |
| 29786 | (home-page "https://github.com/pydron/ifaddr") |
| 29787 | (synopsis "Network interface and IP address enumeration library") |
| 29788 | (description |
| 29789 | "This package provides a network interface and IP address enumeration |
| 29790 | library in Python.") |
| 29791 | (license license:expat))) |
| 29792 | |
| 29793 | (define-public python-berkeleydb |
| 29794 | (package |
| 29795 | (name "python-berkeleydb") |
| 29796 | (version "18.1.15") |
| 29797 | (source |
| 29798 | (origin |
| 29799 | (method url-fetch) |
| 29800 | (uri (pypi-uri "berkeleydb" version)) |
| 29801 | (sha256 |
| 29802 | (base32 "13kmvy6viay27khmj6ydryniirdsbqrc2mjnr2r6nk3m7la57yks")))) |
| 29803 | (build-system pyproject-build-system) |
| 29804 | (arguments |
| 29805 | (list |
| 29806 | #:test-backend #~'custom |
| 29807 | #:test-flags #~(list "test.py" "-v") |
| 29808 | #:phases |
| 29809 | #~(modify-phases %standard-phases |
| 29810 | (add-after 'unpack 'configure-locations |
| 29811 | (lambda* (#:key inputs #:allow-other-keys) |
| 29812 | (setenv "BERKELEYDB_DIR" |
| 29813 | (assoc-ref inputs "bdb")) |
| 29814 | (setenv "YES_I_HAVE_THE_RIGHT_TO_USE_THIS_BERKELEY_DB_VERSION" |
| 29815 | "1"))) |
| 29816 | (add-after 'unpack 'remove-legacy |
| 29817 | (lambda _ |
| 29818 | (substitute* "pyproject.toml" |
| 29819 | ((":__legacy__") ""))))))) |
| 29820 | (native-inputs (list python-setuptools)) |
| 29821 | (inputs (list bdb)) |
| 29822 | (home-page "https://www.jcea.es/programacion/pybsddb.htm") |
| 29823 | (synopsis "Python bindings for Oracle Berkeley DB") |
| 29824 | (description |
| 29825 | "This module provides a nearly complete wrapping of the Oracle/Sleepycat |
| 29826 | C API for the Database Environment, Database, Cursor, Log Cursor, Sequence and |
| 29827 | Transaction objects, and each of these is exposed as a Python type in the |
| 29828 | bsddb3.db module. The database objects can use various access methods: btree, |
| 29829 | hash, recno, and queue. Complete support of Berkeley DB distributed |
| 29830 | transactions. Complete support for Berkeley DB Replication Manager. |
| 29831 | Complete support for Berkeley DB Base Replication. Support for RPC.") |
| 29832 | (license license:bsd-3))) |
| 29833 | |
| 29834 | ;; Last version before rename to python-berkeleydb. |
| 29835 | ;; This package is close to deprecation. |
| 29836 | (define-public python-bsddb3 |
| 29837 | (package |
| 29838 | (inherit python-berkeleydb) |
| 29839 | (name "python-bsddb3") |
| 29840 | (version "6.2.9") |
| 29841 | (source |
| 29842 | (origin |
| 29843 | (method url-fetch) |
| 29844 | (uri (pypi-uri "bsddb3" version)) |
| 29845 | (sha256 |
| 29846 | (base32 "00bqdsfx8jgmfz5bgkx10nlw5bfsw11a86f91zkl53snvk45xl3h")))) |
| 29847 | (arguments |
| 29848 | (substitute-keyword-arguments arguments |
| 29849 | ;; Tests started failing from [email protected]. |
| 29850 | ;; The package is in a pre-deprecation phase, so I didn't bother |
| 29851 | ;; to try and patch them, but sanity-check passes so the package |
| 29852 | ;; itself is likely fine. |
| 29853 | ((#:tests? tests? #t) |
| 29854 | #f) |
| 29855 | ((#:phases phases #~%standard-phases) |
| 29856 | #~(modify-phases #$phases |
| 29857 | (delete 'remove-legacy))) |
| 29858 | ((#:test-flags test-flags #~(list)) |
| 29859 | #~(list "test3.py" "-v")))))) |
| 29860 | |
| 29861 | (define-public python-dbfread |
| 29862 | (package |
| 29863 | (name "python-dbfread") |
| 29864 | (properties '((commit . "dce544641065d966c76a97864b4e9908ec922ce8") |
| 29865 | (revision . "0"))) |
| 29866 | (version (git-version "2.0.7" |
| 29867 | (assoc-ref properties 'revision) |
| 29868 | (assoc-ref properties 'commit))) |
| 29869 | (source |
| 29870 | (origin |
| 29871 | (method git-fetch) |
| 29872 | (uri (git-reference |
| 29873 | (url "https://github.com/olemb/dbfread") |
| 29874 | (commit (assoc-ref properties 'commit)))) |
| 29875 | (file-name (git-file-name name version)) |
| 29876 | (sha256 |
| 29877 | (base32 "1m7dbgyf8yl6qhilzx41vzhcmkqmc36897wfqs2jngp4bnda64vd")))) |
| 29878 | (build-system pyproject-build-system) |
| 29879 | (arguments |
| 29880 | (list |
| 29881 | #:phases |
| 29882 | #~(modify-phases %standard-phases |
| 29883 | (add-after 'unpack 'relax-setup.py |
| 29884 | (lambda _ |
| 29885 | (substitute* "setup.py" |
| 29886 | (("python_requires.*") |
| 29887 | ""))))))) |
| 29888 | (native-inputs (list python-pytest python-setuptools)) |
| 29889 | (home-page "https://dbfread.readthedocs.io") |
| 29890 | (synopsis "Read DBF Files with Python") |
| 29891 | (description |
| 29892 | "This library reads DBF files and returns the data as native Python data |
| 29893 | types for further processing. It is primarily intended for batch jobs and |
| 29894 | one-off scripts.") |
| 29895 | (license license:expat))) |
| 29896 | |
| 29897 | (define-public python-cached-property |
| 29898 | (package |
| 29899 | (name "python-cached-property") |
| 29900 | (version "2.0.1") |
| 29901 | (source |
| 29902 | (origin |
| 29903 | (method url-fetch) |
| 29904 | (uri (pypi-uri "cached_property" version)) |
| 29905 | (sha256 |
| 29906 | (base32 "0hbni4q15n8wspdj48j6xvg977pgm1r5wwjq3x7hxvp30mqn2ka8")))) |
| 29907 | (build-system pyproject-build-system) |
| 29908 | (native-inputs |
| 29909 | (list python-freezegun |
| 29910 | python-pytest |
| 29911 | python-setuptools |
| 29912 | python-wheel)) |
| 29913 | (home-page "https://github.com/pydanny/cached-property") |
| 29914 | (synopsis "Decorator for caching properties in classes") |
| 29915 | (description |
| 29916 | "This package provides a decorator which makes caching |
| 29917 | time-or-computationally-expensive properties quick and easy and works in |
| 29918 | Python 2 or 3.") |
| 29919 | (license license:bsd-3))) |
| 29920 | |
| 29921 | (define-public python-folium |
| 29922 | (package |
| 29923 | (name "python-folium") |
| 29924 | (version "0.19.4") |
| 29925 | (source |
| 29926 | (origin |
| 29927 | ;; PyPI has a ".whl" file but not a proper source release. |
| 29928 | ;; Thus, fetch code from Git. |
| 29929 | (method git-fetch) |
| 29930 | (uri (git-reference |
| 29931 | (url "https://github.com/python-visualization/folium") |
| 29932 | (commit (string-append "v" version)))) |
| 29933 | (file-name (git-file-name name version)) |
| 29934 | (sha256 |
| 29935 | (base32 "1659hvvraax7npgsfi93l7vsd191ysvf5vj369f8h757blmwjd59")))) |
| 29936 | (build-system pyproject-build-system) |
| 29937 | (arguments |
| 29938 | (list #:test-flags |
| 29939 | ;; This file requires Selenium. |
| 29940 | #~(list "--ignore" "tests/selenium/test_selenium.py" |
| 29941 | "-k" (string-append |
| 29942 | ;; The tests below also require Selenium. |
| 29943 | "not test__repr_png_is_bytes" |
| 29944 | " and not test_valid_png" |
| 29945 | " and not test_valid_png_size" |
| 29946 | " and not test_geojson" |
| 29947 | " and not test_heat_map_with_weights" |
| 29948 | ;; This performs an online request. |
| 29949 | " and not test_json_request" |
| 29950 | ;; Requires geodatasets package. |
| 29951 | " and not test_timedynamic_geo_json" |
| 29952 | ;; AssertionError. |
| 29953 | " and not test_minimap")))) |
| 29954 | (propagated-inputs |
| 29955 | (list python-branca |
| 29956 | python-jinja2 |
| 29957 | python-numpy |
| 29958 | python-requests |
| 29959 | python-xyzservices)) |
| 29960 | (native-inputs |
| 29961 | (list python-geopandas |
| 29962 | python-nbconvert |
| 29963 | python-pandas |
| 29964 | python-pillow |
| 29965 | python-pytest |
| 29966 | python-selenium |
| 29967 | python-setuptools |
| 29968 | python-setuptools-scm |
| 29969 | python-wheel)) |
| 29970 | (home-page "https://github.com/python-visualization/folium") |
| 29971 | (synopsis "Make beautiful maps with Leaflet.js & Python") |
| 29972 | (description "@code{folium} makes it easy to visualize data that’s been |
| 29973 | manipulated in Python on an interactive leaflet map. It enables both the |
| 29974 | binding of data to a map for @code{choropleth} visualizations as well as |
| 29975 | passing rich vector/raster/HTML visualizations as markers on the map. |
| 29976 | |
| 29977 | The library has a number of built-in tilesets from OpenStreetMap, Mapbox, and |
| 29978 | Stamen, and supports custom tilesets with Mapbox or Cloudmade API keys. It |
| 29979 | supports Image, Video, GeoJSON and TopoJSON overlays.") |
| 29980 | (license license:expat))) |
| 29981 | |
| 29982 | (define-public python-mercantile |
| 29983 | (package |
| 29984 | (name "python-mercantile") |
| 29985 | (version "1.2.1") |
| 29986 | (source |
| 29987 | (origin |
| 29988 | (method git-fetch) |
| 29989 | (uri (git-reference |
| 29990 | (url "https://github.com/mapbox/mercantile") |
| 29991 | (commit version))) |
| 29992 | (file-name (git-file-name name version)) |
| 29993 | (sha256 |
| 29994 | (base32 "1b7kglzkjz1gmgjgk2y3n4gg70b8zdfg6kyqx2g7a3z7clxxf80f")))) |
| 29995 | (build-system pyproject-build-system) |
| 29996 | (propagated-inputs (list python-click)) |
| 29997 | (native-inputs (list python-check-manifest python-hypothesis python-pytest |
| 29998 | python-setuptools)) |
| 29999 | (home-page "https://github.com/mapbox/mercantile") |
| 30000 | (synopsis "Web mercator XYZ tile utilities") |
| 30001 | (description |
| 30002 | "The mercantile module provides @code{ul(xtile, ytile, zoom)} and |
| 30003 | @code{bounds(xtile, ytile, zoom)} functions that respectively return the upper |
| 30004 | left corner and bounding longitudes and latitudes for XYZ tiles, a |
| 30005 | @code{xy(lng, lat)} function that returns spherical mercator x and y |
| 30006 | coordinates, a @code{tile(lng, lat, zoom)} function that returns the tile |
| 30007 | containing a given point, and quadkey conversion functions |
| 30008 | @code{quadkey(xtile, ytile, zoom)} and @code{quadkey_to_tile(quadkey)} for |
| 30009 | translating between quadkey and tile coordinates.") |
| 30010 | (license license:bsd-3))) |
| 30011 | |
| 30012 | (define-public jube |
| 30013 | (package |
| 30014 | ;; This is a command-line tool, so no "python-" prefix. |
| 30015 | (name "jube") |
| 30016 | (version "2.7.1") |
| 30017 | (source |
| 30018 | (origin |
| 30019 | (method url-fetch) |
| 30020 | (uri (string-append |
| 30021 | "http://apps.fz-juelich.de/jsc/jube/jube2/download.php?version=" |
| 30022 | version)) |
| 30023 | (sha256 |
| 30024 | (base32 "1z7cz7z2awwc1mq18whs9p9n7476l4sg2nk6vy2xf97jidd512zy")) |
| 30025 | (file-name (string-append "jube-" version ".tar.gz")))) |
| 30026 | (build-system pyproject-build-system) |
| 30027 | (arguments |
| 30028 | (list |
| 30029 | #:tests? #f)) ; No tests. |
| 30030 | (propagated-inputs (list python-pyyaml)) |
| 30031 | (native-inputs (list python-setuptools)) |
| 30032 | (home-page "https://apps.fz-juelich.de/jsc/jube/jube2/docu/index.html") |
| 30033 | (synopsis "Benchmarking environment") |
| 30034 | (description |
| 30035 | "JUBE helps perform and analyze benchmarks in a systematic way. For each |
| 30036 | benchmarked application, benchmark data is stored in a format that allows JUBE |
| 30037 | to deduct the desired information. This data can be parsed by automatic pre- |
| 30038 | and post-processing scripts that draw information and store it more densely |
| 30039 | for manual interpretation.") |
| 30040 | (license license:gpl3+))) |
| 30041 | |
| 30042 | (define-public python-pyroutelib3 |
| 30043 | (package |
| 30044 | (name "python-pyroutelib3") |
| 30045 | (version "2.0.0") |
| 30046 | (source |
| 30047 | (origin |
| 30048 | (method git-fetch) |
| 30049 | (uri (git-reference |
| 30050 | (url "https://github.com/MKuranowski/pyroutelib3") |
| 30051 | (commit (string-append "v" version)))) |
| 30052 | (file-name (git-file-name name version)) |
| 30053 | (sha256 |
| 30054 | (base32 "18a86fggs9pjib97x47acqgccrsra1h7dkz21r94vsyrdindchns")))) |
| 30055 | (build-system pyproject-build-system) |
| 30056 | (propagated-inputs (list python-dateutil python-protobuf-5)) |
| 30057 | (native-inputs (list python-filelock python-flit-core python-pytest)) |
| 30058 | (home-page "https://github.com/MKuranowski/pyroutelib3") |
| 30059 | (synopsis "Library for simple routing on OSM data") |
| 30060 | (description "Library for simple routing on OSM data") |
| 30061 | (license license:gpl3+))) |
| 30062 | |
| 30063 | (define-public python-bibtexparser |
| 30064 | (package |
| 30065 | (name "python-bibtexparser") |
| 30066 | (version "2.0.1") |
| 30067 | (source |
| 30068 | (origin |
| 30069 | (method git-fetch) |
| 30070 | (uri (git-reference |
| 30071 | (url "https://github.com/sciunto-org/python-bibtexparser") |
| 30072 | (commit (string-append "v" version)))) |
| 30073 | (file-name (git-file-name name version)) |
| 30074 | (sha256 |
| 30075 | (base32 "1ww9vlc9x7svhd6ww62c7bfikyqv5qwgingc2s5rjizl9nai5wlv")))) |
| 30076 | (build-system pyproject-build-system) |
| 30077 | (propagated-inputs (list python-pylatexenc python-pyparsing)) |
| 30078 | (native-inputs |
| 30079 | (list python-pylatexenc python-pytest python-setuptools)) |
| 30080 | (home-page "https://github.com/sciunto-org/python-bibtexparser") |
| 30081 | (synopsis "Python library to parse BibTeX files") |
| 30082 | (description "BibtexParser is a Python library to parse BibTeX files.") |
| 30083 | (license (list license:bsd-3 license:lgpl3)))) |
| 30084 | |
| 30085 | (define-public python-bibtexparser-for-cobib |
| 30086 | (hidden-package |
| 30087 | (package |
| 30088 | (inherit python-bibtexparser) |
| 30089 | (name "python-bibtexparser") |
| 30090 | (version "1.4.0") |
| 30091 | (source |
| 30092 | (origin |
| 30093 | (method git-fetch) |
| 30094 | (uri (git-reference |
| 30095 | (url "https://github.com/sciunto-org/python-bibtexparser") |
| 30096 | (commit (string-append "v" version)))) |
| 30097 | (file-name (git-file-name name version)) |
| 30098 | (sha256 |
| 30099 | (base32 "0zrgfgmh37m9frq528vy66p2fhlxzrxyhj0inc6qwg0m717w9zbl"))))))) |
| 30100 | |
| 30101 | (define-public python-distro |
| 30102 | (package |
| 30103 | (name "python-distro") |
| 30104 | (version "1.9.0") |
| 30105 | (source |
| 30106 | (origin |
| 30107 | (method url-fetch) |
| 30108 | (uri (pypi-uri "distro" version)) |
| 30109 | (sha256 |
| 30110 | (base32 "1vfvkgfvrjpxpb48pf8rs2l5wfxij0plmffnw5p123wlv1ppr9rg")))) |
| 30111 | (build-system pyproject-build-system) |
| 30112 | (arguments |
| 30113 | (list |
| 30114 | #:test-flags |
| 30115 | #~(list "-k" (string-join |
| 30116 | ;; We are not on Ubunto distro: |
| 30117 | ;; AssertionError: assert '' == 'ubuntu'. |
| 30118 | (list "not test_ubuntu14normal_lsb_release" |
| 30119 | "test_trailingblanks_lsb_release" |
| 30120 | "test_ubuntu14nomodules_lsb_release") |
| 30121 | " and not ")))) |
| 30122 | (native-inputs |
| 30123 | (list python-pytest |
| 30124 | python-setuptools)) |
| 30125 | (home-page "https://github.com/python-distro/distro") |
| 30126 | (synopsis "OS platform information API") |
| 30127 | (description |
| 30128 | "@code{distro} provides information about the OS distribution it runs on, |
| 30129 | such as a reliable machine-readable ID, or version information. |
| 30130 | |
| 30131 | It is the recommended replacement for Python's original |
| 30132 | `platform.linux_distribution` function (which will be removed in Python 3.8). |
| 30133 | @code{distro} also provides a command-line interface to output the platform |
| 30134 | information in various formats.") |
| 30135 | (license license:asl2.0))) |
| 30136 | |
| 30137 | (define-public python-cairosvg |
| 30138 | (package |
| 30139 | (name "python-cairosvg") |
| 30140 | (version "2.8.2") |
| 30141 | (source |
| 30142 | (origin |
| 30143 | (method url-fetch) |
| 30144 | (uri (pypi-uri "cairosvg" version)) |
| 30145 | (sha256 |
| 30146 | (base32 "17zgbgw24jw70rfka9wa3ff5wymk9cmaqk4a6697mchpcglg9jq7")))) |
| 30147 | (build-system pyproject-build-system) |
| 30148 | (arguments |
| 30149 | (list #:test-flags #~(list "cairosvg/test_api.py"))) |
| 30150 | (native-inputs |
| 30151 | (list python-pytest |
| 30152 | python-setuptools)) |
| 30153 | (propagated-inputs |
| 30154 | (list python-cairocffi |
| 30155 | python-cssselect2 |
| 30156 | python-defusedxml |
| 30157 | python-pillow |
| 30158 | python-tinycss2)) |
| 30159 | (home-page "https://cairosvg.org/") |
| 30160 | (synopsis "SVG to PDF/PS/PNG converter based on Cairo") |
| 30161 | (description "CairoSVG is a SVG converter based on Cairo. It can export |
| 30162 | SVG files to PDF, PostScript and PNG files. The main part of CairoSVG is a |
| 30163 | SVG parser, trying to follow the SVG 1.1 recommendation from the W3C. Once |
| 30164 | parsed, the result is drawn to a Cairo surface that can be exported to |
| 30165 | qvarious formats: PDF, PostScript, PNG and even SVG.") |
| 30166 | (license license:lgpl3+))) |
| 30167 | |
| 30168 | (define-public python-pyphen |
| 30169 | (package |
| 30170 | (name "python-pyphen") |
| 30171 | (version "0.17.2") |
| 30172 | (source |
| 30173 | (origin |
| 30174 | (method git-fetch) |
| 30175 | (uri (git-reference |
| 30176 | (url "https://github.com/Kozea/Pyphen") |
| 30177 | (commit version))) |
| 30178 | (file-name (git-file-name name version)) |
| 30179 | (sha256 |
| 30180 | (base32 "1fqxc50vqj884b7f6d8qfvnvw34477lhsdznvpxsljjg9j2v4ipv")))) |
| 30181 | (build-system pyproject-build-system) |
| 30182 | (native-inputs (list python-flit-core python-pytest)) |
| 30183 | ;; TODO: Use the Guix system hyphenation packages hyphen-* rather than the |
| 30184 | ;; embedded set provided by upstream - like Debian does. |
| 30185 | (home-page "https://github.com/Kozea/Pyphen") |
| 30186 | (synopsis "Pure Python module to hyphenate text") |
| 30187 | (description "Pyphen is a pure Python module to hyphenate text using |
| 30188 | existing Hunspell hyphenation dictionaries.") |
| 30189 | (license (list license:gpl2 license:lgpl2.1 license:mpl1.1)))) |
| 30190 | |
| 30191 | (define-public python-intelhex |
| 30192 | (package |
| 30193 | (name "python-intelhex") |
| 30194 | (version "2.3.0") |
| 30195 | (source |
| 30196 | (origin |
| 30197 | (method git-fetch) |
| 30198 | (uri (git-reference |
| 30199 | (url "https://github.com/python-intelhex/intelhex") |
| 30200 | (commit version))) |
| 30201 | (file-name (git-file-name name version)) |
| 30202 | (sha256 |
| 30203 | (base32 "13p7x4ygfgqn27q3c8lam7a0z09764iymgs7lcvjvxgq52nqwf9c")))) |
| 30204 | (build-system pyproject-build-system) |
| 30205 | (arguments (list #:test-backend #~'unittest)) |
| 30206 | (native-inputs (list python-setuptools)) |
| 30207 | (home-page "https://github.com/python-intelhex/intelhex") |
| 30208 | (synopsis "Python library for Intel HEX files manipulations") |
| 30209 | (description |
| 30210 | "The Intel HEX file format is widely used in microprocessors and |
| 30211 | microcontrollers area (embedded systems etc.) as the de facto standard for |
| 30212 | representation of code to be programmed into microelectronic devices. This |
| 30213 | package provides an intelhex Python library to read, write, create from |
| 30214 | scratch and manipulate data from Intel HEX file format. It also includes |
| 30215 | several convenience Python scripts, including \"classic\" hex2bin and bin2hex |
| 30216 | converters and more, those based on the library itself.") |
| 30217 | (license license:bsd-3))) |
| 30218 | |
| 30219 | (define-public python-interlap |
| 30220 | (package |
| 30221 | (name "python-interlap") |
| 30222 | (version "0.2.7") |
| 30223 | (source |
| 30224 | (origin |
| 30225 | (method git-fetch) |
| 30226 | (uri (git-reference |
| 30227 | (url "https://github.com/brentp/interlap") |
| 30228 | (commit (string-append "v" version)))) |
| 30229 | (file-name (git-file-name name version)) |
| 30230 | (sha256 |
| 30231 | (base32 "0kmw72ilhsfx7piikl92b1s0rnax49qc7idjxsbwhvpklyjiylfm")))) |
| 30232 | (build-system pyproject-build-system) |
| 30233 | (arguments |
| 30234 | (list |
| 30235 | #:test-backend #~'custom |
| 30236 | #:test-flags #~(list "interlap.py"))) |
| 30237 | (native-inputs (list python-setuptools)) |
| 30238 | (home-page "https://brentp.github.io/interlap") |
| 30239 | (synopsis "Fast, simple interval overlap testing") |
| 30240 | (description |
| 30241 | "InterLap does fast interval overlap testing with a simple Python data |
| 30242 | structure.") |
| 30243 | (license license:expat))) |
| 30244 | |
| 30245 | (define-public python-pykwalify |
| 30246 | (package |
| 30247 | (name "python-pykwalify") |
| 30248 | (version "1.8.0") |
| 30249 | (source |
| 30250 | (origin |
| 30251 | (method git-fetch) |
| 30252 | (uri (git-reference |
| 30253 | (url "https://github.com/grokzen/pykwalify") |
| 30254 | (commit version))) |
| 30255 | (file-name (git-file-name name version)) |
| 30256 | (sha256 |
| 30257 | (base32 "1x46ray74hzqmsicq2qikxhdihyyz9himjmc5gvlvd8vzqr1gi8p")))) |
| 30258 | (build-system pyproject-build-system) |
| 30259 | (arguments |
| 30260 | (list |
| 30261 | #:test-flags |
| 30262 | ;; XXX: yaml safe_dump() has been removed. |
| 30263 | #~(list "--ignore=tests/test_unicode.py" |
| 30264 | "--deselect=tests/test_core.py::TestCore::test_core_files"))) |
| 30265 | (native-inputs |
| 30266 | (list python-pytest python-setuptools python-testfixtures)) |
| 30267 | (propagated-inputs |
| 30268 | (list python-dateutil python-docopt python-pyyaml python-ruamel.yaml)) |
| 30269 | (home-page "https://github.com/grokzen/pykwalify") |
| 30270 | (synopsis "Python lib/cli for JSON/YAML schema validation") |
| 30271 | (description |
| 30272 | "This package provides a parser, schema validator, and data binding tool |
| 30273 | for YAML and JSON.") |
| 30274 | (license license:expat))) |
| 30275 | |
| 30276 | (define-public python-pykakasi |
| 30277 | (package |
| 30278 | (name "python-pykakasi") |
| 30279 | (version "2.3.0") |
| 30280 | (source |
| 30281 | (origin |
| 30282 | (method url-fetch) |
| 30283 | (uri (pypi-uri "pykakasi" version)) |
| 30284 | (sha256 |
| 30285 | (base32 "18dhcw7myw5idajnfynjbvqxmyf9m0cygfwsavbbi7zmcf72l1gs")))) |
| 30286 | (build-system pyproject-build-system) |
| 30287 | (arguments (list #:test-flags ''("-k" "not test_aozora"))) |
| 30288 | (propagated-inputs (list python-deprecated python-importlib-resources |
| 30289 | python-jaconv)) |
| 30290 | (native-inputs (list python-coverage |
| 30291 | python-py-cpuinfo |
| 30292 | python-pytest |
| 30293 | python-pytest-benchmark |
| 30294 | python-setuptools |
| 30295 | python-setuptools-scm |
| 30296 | python-wheel)) |
| 30297 | (home-page "https://codeberg.org/miurahr/pykakasi") |
| 30298 | (synopsis "Kana kanji simple inversion library") |
| 30299 | (description |
| 30300 | "pykakasi is a Python Natural Language Processing @acronym{NLP, Natural |
| 30301 | Language Processing} library to transliterate hiragana, katakana and |
| 30302 | kanji (Japanese text) into rōmaji (Latin/Roman alphabet). It can handle |
| 30303 | characters in NFC form. |
| 30304 | |
| 30305 | Its algorithms are based on the kakasi library, which is written in C.") |
| 30306 | (license license:gpl3+))) |
| 30307 | |
| 30308 | (define-public python-dbus |
| 30309 | (package |
| 30310 | (name "python-dbus") |
| 30311 | (version "1.3.2") |
| 30312 | (source |
| 30313 | (origin |
| 30314 | (method url-fetch) |
| 30315 | (uri (pypi-uri "dbus-python" version)) |
| 30316 | (sha256 |
| 30317 | (base32 "1y28h90v2ib8zqhs3r2yr7ycg8ccwvw3gqkvadlm12v1129q2rxd")))) |
| 30318 | (build-system pyproject-build-system) |
| 30319 | (arguments |
| 30320 | (list |
| 30321 | #:tests? #f ;XXX: Tests require setup |
| 30322 | #:phases |
| 30323 | #~(modify-phases %standard-phases |
| 30324 | (add-after 'unpack 'patch-requirements |
| 30325 | (lambda _ |
| 30326 | (substitute* (list "pyproject.toml" "setup.py") |
| 30327 | (("'(ninja|patchelf)',?") "")) |
| 30328 | (substitute* "setup.cfg" |
| 30329 | (("(ninja|patchelf)") ""))))))) |
| 30330 | (native-inputs |
| 30331 | (list pkg-config |
| 30332 | meson |
| 30333 | ninja/pinned |
| 30334 | patchelf |
| 30335 | python-meson |
| 30336 | python-setuptools |
| 30337 | python-tappy)) |
| 30338 | (inputs |
| 30339 | (list dbus glib)) |
| 30340 | (propagated-inputs |
| 30341 | (list python-pygobject)) |
| 30342 | (home-page "https://dbus.freedesktop.org/doc/dbus-python/") |
| 30343 | (synopsis "Python bindings for libdbus") |
| 30344 | (description |
| 30345 | "This package provides Python bindings to libdbus, the reference |
| 30346 | implementation of the D-Bus protocol.") |
| 30347 | (license license:expat))) |
| 30348 | |
| 30349 | ;; Added on 2026-01-05 |
| 30350 | (define-deprecated-package python-dbus-python python-dbus) |
| 30351 | |
| 30352 | (define python-dbusmock-patch-paths-phase |
| 30353 | #~(lambda* (#:key inputs #:allow-other-keys) |
| 30354 | (substitute* "tests/test_api.py" |
| 30355 | (("/usr/bin/python3") |
| 30356 | (which "python3"))) |
| 30357 | (substitute* "dbusmock/testcase.py" |
| 30358 | (("\"dbus-daemon\"") |
| 30359 | (object->string |
| 30360 | (search-input-file inputs "/bin/dbus-daemon")))))) |
| 30361 | |
| 30362 | (define-public python-dbusmock |
| 30363 | (package |
| 30364 | (name "python-dbusmock") |
| 30365 | (version "0.37.2") |
| 30366 | (source |
| 30367 | (origin |
| 30368 | (method git-fetch) |
| 30369 | (uri (git-reference |
| 30370 | (url "https://github.com/martinpitt/python-dbusmock") |
| 30371 | (commit version))) |
| 30372 | (file-name (git-file-name name version)) |
| 30373 | (sha256 |
| 30374 | (base32 "1a70gi3qgjblg9z9id9z0fy3vlhb1cqbmmny14bqhv79qqskspj3")))) |
| 30375 | (build-system pyproject-build-system) |
| 30376 | (arguments |
| 30377 | (list |
| 30378 | #:modules `((guix build pyproject-build-system) |
| 30379 | (guix build utils) |
| 30380 | (ice-9 match)) |
| 30381 | #:phases |
| 30382 | #~(modify-phases %standard-phases |
| 30383 | (add-after 'unpack 'patch-paths |
| 30384 | #$python-dbusmock-patch-paths-phase) |
| 30385 | (replace 'check |
| 30386 | (lambda* (#:key tests? #:allow-other-keys) |
| 30387 | (when tests? |
| 30388 | (match (primitive-fork) |
| 30389 | (0 ;child process |
| 30390 | (execlp "pytest" "pytest" "-vv")) |
| 30391 | (pytest-pid |
| 30392 | (let loop () |
| 30393 | ;; Reap child processes; otherwise, python-dbusmock |
| 30394 | ;; would waste time polling for the dbus processes |
| 30395 | ;; it spawns to be reaped, in vain. |
| 30396 | (match (waitpid WAIT_ANY) |
| 30397 | ((pid . status) |
| 30398 | (if (= pid pytest-pid) |
| 30399 | (unless (zero? status) |
| 30400 | (error "`pytest' exited with status" |
| 30401 | status)) |
| 30402 | (loop))))))))))))) |
| 30403 | (native-inputs (list python-pytest python-setuptools upower which)) |
| 30404 | (inputs (list dbus)) |
| 30405 | (propagated-inputs (list python-dbus python-pygobject)) |
| 30406 | (home-page "https://github.com/martinpitt/python-dbusmock") |
| 30407 | (synopsis "Python library for mock D-Bus objects") |
| 30408 | (description |
| 30409 | "python-dbusmock allows for the easy creation of mock objects on D-Bus. |
| 30410 | This is useful for writing tests for software which talks to D-Bus services |
| 30411 | such as upower, systemd, logind, gnome-session or others, and it is hard (or |
| 30412 | impossible without root privileges) to set the state of the real services to |
| 30413 | what you expect in your tests.") |
| 30414 | (license license:lgpl3+))) |
| 30415 | |
| 30416 | (define-public python-dbusmock-for-tests |
| 30417 | (package |
| 30418 | (inherit python-dbusmock) |
| 30419 | (name "python-dbusmock-for-tests") |
| 30420 | (version "0.37.2") |
| 30421 | (source |
| 30422 | (origin |
| 30423 | (method git-fetch) |
| 30424 | (uri (git-reference |
| 30425 | (url "https://github.com/martinpitt/python-dbusmock") |
| 30426 | (commit version))) |
| 30427 | (file-name (git-file-name name version)) |
| 30428 | (sha256 |
| 30429 | (base32 "1a70gi3qgjblg9z9id9z0fy3vlhb1cqbmmny14bqhv79qqskspj3")))) |
| 30430 | (arguments |
| 30431 | (list |
| 30432 | #:tests? #f |
| 30433 | #:phases |
| 30434 | #~(modify-phases %standard-phases |
| 30435 | (add-after 'unpack 'patch-paths |
| 30436 | #$python-dbusmock-patch-paths-phase)))) |
| 30437 | (native-inputs (list python-setuptools which)) |
| 30438 | (properties '((hidden? . #t))))) |
| 30439 | |
| 30440 | (define-public python-jsonplus |
| 30441 | (package |
| 30442 | (name "python-jsonplus") |
| 30443 | (home-page "https://github.com/randomir/jsonplus") |
| 30444 | (properties '((commit . "a4450ce73a4464fcee9b08d96be3e13152b0cb3b") |
| 30445 | (revision . "0"))) |
| 30446 | (version (git-version "0.8.0" |
| 30447 | (assoc-ref properties 'revision) |
| 30448 | (assoc-ref properties 'commit))) |
| 30449 | (source |
| 30450 | (origin |
| 30451 | (method git-fetch) |
| 30452 | (uri (git-reference |
| 30453 | (url home-page) |
| 30454 | (commit (assoc-ref properties 'commit)))) |
| 30455 | (file-name (git-file-name name version)) |
| 30456 | (sha256 |
| 30457 | (base32 "1n7rr7fgy2g972si6zhindia362w34d696xjdicx25f39n88jcvk")))) |
| 30458 | (build-system pyproject-build-system) |
| 30459 | (arguments |
| 30460 | (list |
| 30461 | ;; XXX: Tests require the additional package moneyed. |
| 30462 | #:tests? #f |
| 30463 | #:phases |
| 30464 | #~(modify-phases %standard-phases |
| 30465 | (add-after 'unpack 'chdir |
| 30466 | (lambda _ |
| 30467 | (chdir "python")))))) |
| 30468 | (native-inputs (list python-setuptools)) |
| 30469 | (propagated-inputs |
| 30470 | (list python-dateutil python-simplejson python-sortedcontainers)) |
| 30471 | (synopsis "Serialize Python types to/from JSON") |
| 30472 | (description |
| 30473 | "This package provides functionality to serialize arbitrary data types |
| 30474 | to and from JSON. Common data types are implemented and it is easy to |
| 30475 | register custom encoders and decoders.") |
| 30476 | (license license:expat))) |
| 30477 | |
| 30478 | (define-public python-ioctl-opt |
| 30479 | (package |
| 30480 | (name "python-ioctl-opt") |
| 30481 | (version "1.3") |
| 30482 | (source |
| 30483 | (origin |
| 30484 | (method url-fetch) |
| 30485 | (uri (pypi-uri "ioctl-opt" version)) |
| 30486 | (sha256 |
| 30487 | (base32 "1ygjgkzn0i61zk2yr27aqnma08c8xpblhdixli9f20if1nlgkm2y")))) |
| 30488 | (build-system pyproject-build-system) |
| 30489 | (arguments |
| 30490 | (list #:tests? #f)) ;no tests |
| 30491 | (native-inputs (list python-setuptools)) |
| 30492 | (home-page "http://github.com/vpelletier/python-ioctl-opt") |
| 30493 | (synopsis "Functions to compute fnctl.ioctl's opt argument") |
| 30494 | (description |
| 30495 | "This package provides functions to compute fnctl.ioctl's opt argument.") |
| 30496 | (license license:gpl2+))) |
| 30497 | |
| 30498 | (define-public python-anyio |
| 30499 | (package |
| 30500 | (name "python-anyio") |
| 30501 | (version "4.12.1") |
| 30502 | (source |
| 30503 | (origin |
| 30504 | (method url-fetch) |
| 30505 | (uri (pypi-uri "anyio" version)) |
| 30506 | (sha256 |
| 30507 | (base32 |
| 30508 | "00ypzqzllinhj2x3ai5x5bvkdb0109nw59rdjdfg1lw59hxcrks1")) |
| 30509 | (patches |
| 30510 | ;; Patch uses Python 3.11 except* syntax so can yet be upstreamed. |
| 30511 | (search-patches "python-anyio-unuse-exceptiongroup-in-test.patch")))) |
| 30512 | (build-system pyproject-build-system) |
| 30513 | (arguments |
| 30514 | (list |
| 30515 | ;; tests: |
| 30516 | ;; - x86_64-linux: 1393 passed, 70 skipped, 2 deselected, 4 xfailed |
| 30517 | ;; - aarch64-linux: 1378 passed, 70 skipped, 17 deselected, 4 xfailed |
| 30518 | #:test-flags |
| 30519 | #~(list "-m" "not network" |
| 30520 | ;; Tests are shaky with a lot of DNS lookups. |
| 30521 | "--ignore=tests/test_sockets.py" |
| 30522 | #$@(map (lambda (ls) |
| 30523 | (string-append "--deselect=" (string-join ls "::"))) |
| 30524 | (append |
| 30525 | ;; _pytest.pytester.Pytester.TimeoutExpired: 3 second |
| 30526 | ;; timeout expired running: <...> |
| 30527 | '(("tests/test_pytest_plugin.py" |
| 30528 | "test_keyboardinterrupt_during_test")) |
| 30529 | (if (target-aarch64?) |
| 30530 | ;; Assertions are not equal on ARM. |
| 30531 | '(("tests/streams/test_tls.py" |
| 30532 | "TestTLSListener" |
| 30533 | "test_handshake_fail") |
| 30534 | ("tests/test_taskgroups.py" |
| 30535 | "test_shielded_cancel_sleep_time") |
| 30536 | ("tests/test_to_thread.py" |
| 30537 | "test_run_in_custom_limiter") |
| 30538 | ("tests/test_to_thread.py" |
| 30539 | "TestBlockingPortalProvider" |
| 30540 | "test_single_thread")) |
| 30541 | '())))))) |
| 30542 | (propagated-inputs |
| 30543 | (list python-idna |
| 30544 | python-sniffio |
| 30545 | python-typing-extensions)) |
| 30546 | (native-inputs |
| 30547 | (list python-blockbuster |
| 30548 | python-psutil |
| 30549 | python-pytest |
| 30550 | python-pytest-mock |
| 30551 | python-setuptools |
| 30552 | python-setuptools-scm |
| 30553 | python-trio |
| 30554 | python-trustme |
| 30555 | python-truststore |
| 30556 | python-uvloop)) |
| 30557 | (home-page "https://anyio.readthedocs.io") |
| 30558 | (synopsis "Compatibility layer for multiple asynchronous event loops") |
| 30559 | (description |
| 30560 | "AnyIO is an asynchronous networking and concurrency library that works |
| 30561 | on top of either asyncio or trio. It implements trio-like structured |
| 30562 | concurrency on top of asyncio, and works in harmony with the native SC of trio |
| 30563 | itself.") |
| 30564 | (license license:expat))) |
| 30565 | |
| 30566 | (define-public python-argh |
| 30567 | (package |
| 30568 | (name "python-argh") |
| 30569 | (version "0.31.3") |
| 30570 | (source |
| 30571 | (origin |
| 30572 | (method url-fetch) |
| 30573 | (uri (pypi-uri "argh" version)) |
| 30574 | (sha256 |
| 30575 | (base32 "1ycjb2f92iskvp27vq2a8vdbpmsij61apvmkn7k5xjhlpvc2607k")))) |
| 30576 | (build-system pyproject-build-system) |
| 30577 | (native-inputs (list python-flit-core python-pytest)) |
| 30578 | (home-page "https://github.com/neithere/argh/") |
| 30579 | (synopsis "Argparse wrapper with natural syntax") |
| 30580 | (description |
| 30581 | "Argh is a small library that provides several layers of abstraction |
| 30582 | on top of @code{python-argparse}. The layers can be mixed. It is always |
| 30583 | possible to declare a command with the highest possible (and least flexible) |
| 30584 | layer and then tune the behaviour with any of the lower layers including the |
| 30585 | native API of @code{python-argparse}.") |
| 30586 | (license license:lgpl3+))) |
| 30587 | |
| 30588 | (define-public python-pox |
| 30589 | (package |
| 30590 | (name "python-pox") |
| 30591 | (version "0.3.6") |
| 30592 | (source |
| 30593 | (origin |
| 30594 | (method url-fetch) |
| 30595 | (uri (pypi-uri "pox" version)) |
| 30596 | (sha256 |
| 30597 | (base32 |
| 30598 | "01gnsgz6wfmpmb57qr4cgpkampiy6l7c1kxa0hlacn81c0wyvvl4")))) |
| 30599 | (build-system pyproject-build-system) |
| 30600 | (arguments |
| 30601 | (list |
| 30602 | #:phases |
| 30603 | #~(modify-phases %standard-phases |
| 30604 | (replace 'check |
| 30605 | (lambda* (#:key tests? inputs outputs #:allow-other-keys) |
| 30606 | (when tests? |
| 30607 | (mkdir-p "/tmp/guix") |
| 30608 | (setenv "SHELL" "bash") |
| 30609 | (setenv "USERNAME" "guix") |
| 30610 | (setenv "HOME" "/tmp/guix") ; must end on USERNAME... |
| 30611 | (invoke "python" "./pox/tests/__main__.py"))))))) |
| 30612 | (native-inputs |
| 30613 | (list python-setuptools |
| 30614 | which)) ;pox/tests/test_shutils.py |
| 30615 | (home-page "https://pypi.org/project/pox/") |
| 30616 | (synopsis "Python utilities for file system exploration and automated builds") |
| 30617 | (description |
| 30618 | "Pox provides a collection of utilities for navigating and manipulating |
| 30619 | file systems. This module is designed to facilitate some of the low-level |
| 30620 | operating system interactions that are useful when exploring a file system on a |
| 30621 | remote host. Pox provides Python equivalents of several shell commands such |
| 30622 | as @command{which} and @command{find}. These commands allow automated |
| 30623 | discovery of what has been installed on an operating system, and where the |
| 30624 | essential tools are located.") |
| 30625 | (license license:bsd-3))) |
| 30626 | |
| 30627 | (define-public python-flit |
| 30628 | (package |
| 30629 | (name "python-flit") |
| 30630 | (version "3.12.0") ;same as python-flit-core |
| 30631 | (source |
| 30632 | (origin |
| 30633 | (method url-fetch) |
| 30634 | (uri (pypi-uri "flit" version)) |
| 30635 | (sha256 |
| 30636 | (base32 "0h1pxi2hgr95321bgl45l86693zl14l3shj0idsyg4k9v56z700w")))) |
| 30637 | (build-system pyproject-build-system) |
| 30638 | (arguments |
| 30639 | (list |
| 30640 | #:test-flags |
| 30641 | ;; These tests fail when FLIT_NO_NETWORK is set |
| 30642 | '(list "-k" "not test_invalid_classifier \ |
| 30643 | and not test_install_requires \ |
| 30644 | and not test_install_requires_extra \ |
| 30645 | and not test_validate_classifiers_private") |
| 30646 | #:phases |
| 30647 | #~(modify-phases %standard-phases |
| 30648 | (add-after 'unpack 'relax-pip-requirement |
| 30649 | ;; python -m pip is available by default, no need to |
| 30650 | ;; propagate pip. |
| 30651 | (lambda _ |
| 30652 | (substitute* "pyproject.toml" |
| 30653 | (("\"pip\",") |
| 30654 | "")))) |
| 30655 | (add-before 'check 'pre-check |
| 30656 | (lambda* (#:key tests? inputs outputs #:allow-other-keys) |
| 30657 | (when tests? |
| 30658 | (setenv "HOME" "/tmp") |
| 30659 | (setenv "FLIT_NO_NETWORK" "1"))))))) |
| 30660 | (propagated-inputs |
| 30661 | (list python-tomli-w |
| 30662 | python-flit-core |
| 30663 | python-docutils |
| 30664 | python-requests)) |
| 30665 | (native-inputs |
| 30666 | (list python-responses |
| 30667 | python-pytest |
| 30668 | python-testpath)) |
| 30669 | (home-page "https://flit.readthedocs.io/") |
| 30670 | (synopsis "Simple packaging tool for simple packages") |
| 30671 | (description "Flit is a simple way to put Python packages and modules on |
| 30672 | PyPI. Flit packages a single importable module or package at a time, using |
| 30673 | the import name as the name on PyPI. All subpackages and data files within a |
| 30674 | package are included automatically.") |
| 30675 | (license license:bsd-3))) |
| 30676 | |
| 30677 | (define-public python-fastentrypoints |
| 30678 | (package |
| 30679 | (name "python-fastentrypoints") |
| 30680 | (home-page "https://github.com/ninjaaron/fast-entry_points") |
| 30681 | (properties '((commit . "a3a26f320c7ae2191fde71b79d4f4bf325d162f3") |
| 30682 | (revision . "0"))) |
| 30683 | (version (git-version "0.12" |
| 30684 | (assoc-ref properties 'revision) |
| 30685 | (assoc-ref properties 'commit))) |
| 30686 | (source |
| 30687 | (origin |
| 30688 | (method git-fetch) |
| 30689 | (uri (git-reference |
| 30690 | (url home-page) |
| 30691 | (commit (assoc-ref properties 'commit)))) |
| 30692 | (file-name (git-file-name name version)) |
| 30693 | (sha256 |
| 30694 | (base32 "0d4xx9zz2xrdxgap8lbrc1mvslvdvddxk3s27zqv918iykkm70d0")))) |
| 30695 | (build-system pyproject-build-system) |
| 30696 | (arguments |
| 30697 | (list |
| 30698 | ;; XXX: Testing is non-standard and hardly configurable. |
| 30699 | #:tests? #f |
| 30700 | #:test-backend #~'custom |
| 30701 | #:test-flags #~(list "test/runtest.py"))) |
| 30702 | (native-inputs (list python-setuptools)) |
| 30703 | (synopsis "Makes entry_points specified in setup.py load more quickly") |
| 30704 | (description |
| 30705 | "Using entry_points in your setup.py makes scripts that start really |
| 30706 | slowly because it imports pkg_resources. This package allows such setup |
| 30707 | scripts to load entry points more quickly.") |
| 30708 | (license license:bsd-3))) |
| 30709 | |
| 30710 | (define-public python-funcparserlib |
| 30711 | (package |
| 30712 | (name "python-funcparserlib") |
| 30713 | (version "1.0.1") |
| 30714 | (source |
| 30715 | (origin |
| 30716 | ;; Source tarball on PyPi lacks tests. |
| 30717 | (method git-fetch) |
| 30718 | (uri (git-reference |
| 30719 | (url "https://github.com/vlasovskikh/funcparserlib") |
| 30720 | (commit version))) |
| 30721 | (file-name (git-file-name name version)) |
| 30722 | (sha256 |
| 30723 | (base32 "0dw3i4fyf3j9h1l7xfgs99fc2w2axk6xqk0sdag43k444ss4hkrc")))) |
| 30724 | (build-system pyproject-build-system) |
| 30725 | (arguments |
| 30726 | '(#:phases |
| 30727 | (modify-phases %standard-phases |
| 30728 | (replace 'check |
| 30729 | (lambda* (#:key tests? #:allow-other-keys) |
| 30730 | (when tests? |
| 30731 | (invoke "python" "-m" "unittest" "discover" "-v"))))))) |
| 30732 | ;; ModuleNotFoundError: No module named 'poetry' |
| 30733 | (native-inputs (list python-poetry-core python-six)) |
| 30734 | (home-page "https://github.com/vlasovskikh/funcparserlib") |
| 30735 | (synopsis |
| 30736 | "Recursive descent parsing library based on functional combinators") |
| 30737 | (description |
| 30738 | "This package is a recursive descent parsing library for Python based on |
| 30739 | functional combinators. Parser combinators are just higher-order functions |
| 30740 | that take parsers as their arguments and return them as result values.") |
| 30741 | (license license:expat))) |
| 30742 | |
| 30743 | (define-public python-cson |
| 30744 | (package |
| 30745 | (name "python-cson") |
| 30746 | (version "0.8") |
| 30747 | (source |
| 30748 | (origin |
| 30749 | (method git-fetch) |
| 30750 | (uri (git-reference |
| 30751 | (url "https://github.com/avakar/pycson") |
| 30752 | (commit version))) |
| 30753 | (file-name (git-file-name name version)) |
| 30754 | (sha256 |
| 30755 | (base32 "0d2zbmak0hzsl1w71dgc8x4q4vdfbpk46vwyi9vvvqv7gdqj59fn")))) |
| 30756 | (build-system pyproject-build-system) |
| 30757 | (native-inputs (list python-pytest python-setuptools python-wheel)) |
| 30758 | (propagated-inputs (list python-speg)) |
| 30759 | (home-page "https://github.com/avakar/pycson") |
| 30760 | (synopsis "Parser for Coffeescript Object Notation (CSON)") |
| 30761 | (description |
| 30762 | "This package is a parser for Coffeescript Object Notation (CSON).") |
| 30763 | (license license:expat))) |
| 30764 | |
| 30765 | (define-public python-aionotify |
| 30766 | (package |
| 30767 | (name "python-aionotify") |
| 30768 | (version "0.3.1") |
| 30769 | (source |
| 30770 | (origin |
| 30771 | ;; Source tarball on PyPi lacks tests |
| 30772 | (method git-fetch) |
| 30773 | (uri (git-reference |
| 30774 | (url "https://github.com/rbarrois/aionotify") |
| 30775 | (commit version))) |
| 30776 | (file-name (git-file-name name version)) |
| 30777 | (sha256 |
| 30778 | (base32 "1p08g0h4bjlra25cwysag7gifsrm35d5vkjfv845w1rig8b57q9s")))) |
| 30779 | (build-system pyproject-build-system) |
| 30780 | (native-inputs |
| 30781 | (list python-pytest |
| 30782 | python-setuptools |
| 30783 | python-wheel)) |
| 30784 | (home-page "https://github.com/rbarrois/aionotify") |
| 30785 | (synopsis "inotify library for Python") |
| 30786 | (description |
| 30787 | "@code{python-aionotify} is a simple, asyncio-based inotify library.") |
| 30788 | (license license:bsd-3))) |
| 30789 | |
| 30790 | (define-public python-forbiddenfruit |
| 30791 | (package |
| 30792 | (name "python-forbiddenfruit") |
| 30793 | (version "0.1.4") |
| 30794 | (source |
| 30795 | (origin |
| 30796 | (method git-fetch) |
| 30797 | (uri (git-reference |
| 30798 | (url "https://github.com/clarete/forbiddenfruit") |
| 30799 | (commit version))) |
| 30800 | (file-name (git-file-name name version)) |
| 30801 | (sha256 |
| 30802 | (base32 "16chhrxbbmg6lfbzm532fq0v00z8qihcsj0kg2b5jlgnb6qijwn8")))) |
| 30803 | (build-system pyproject-build-system) |
| 30804 | (arguments |
| 30805 | (list |
| 30806 | #:phases |
| 30807 | #~(modify-phases %standard-phases |
| 30808 | (replace 'check |
| 30809 | (lambda* (#:key tests? #:allow-other-keys) |
| 30810 | (when tests? |
| 30811 | (invoke "make" "prepare" "SKIP_DEPS=1") |
| 30812 | (invoke "nosetests"))))))) |
| 30813 | (native-inputs (list python-pynose python-setuptools)) |
| 30814 | (home-page "https://github.com/clarete/forbiddenfruit") |
| 30815 | (synopsis "Patch python built-in objects") |
| 30816 | (description "This project allows Python code to extend built-in types.") |
| 30817 | (license (list license:gpl3+ license:expat)))) |
| 30818 | |
| 30819 | (define-public python-k5test |
| 30820 | (package |
| 30821 | (name "python-k5test") |
| 30822 | (version "0.10.4") |
| 30823 | (source |
| 30824 | (origin |
| 30825 | (method url-fetch) |
| 30826 | (uri (pypi-uri "k5test" version)) |
| 30827 | (sha256 |
| 30828 | (base32 "0c7g9gk3vfgh1wbl4s1v15v283srsixkhgak7lxskxh2cqg4jlp1")))) |
| 30829 | (build-system pyproject-build-system) |
| 30830 | (arguments |
| 30831 | (list #:tests? #f)) ;no tests |
| 30832 | (native-inputs |
| 30833 | (list python-setuptools)) |
| 30834 | (inputs |
| 30835 | (list mit-krb5)) |
| 30836 | (home-page "https://github.com/pythongssapi/k5test") |
| 30837 | (synopsis "Library for setting up self-contained Kerberos 5 environments") |
| 30838 | (description |
| 30839 | "@code{k5test} is a library for setting up self-contained Kerberos 5 |
| 30840 | environments, and running Python unit tests inside those environments. It is |
| 30841 | based on the file of the same name found alongside the MIT Kerberos 5 unit |
| 30842 | tests.") |
| 30843 | (license license:isc))) |
| 30844 | |
| 30845 | (define-public python-gssapi |
| 30846 | (package |
| 30847 | (name "python-gssapi") |
| 30848 | (version "1.10.0") |
| 30849 | (source |
| 30850 | (origin |
| 30851 | (method url-fetch) |
| 30852 | (uri (pypi-uri "gssapi" version)) |
| 30853 | (sha256 |
| 30854 | (base32 "0qvpsx5kq746gixa7phxikkxmir3wy5dj94phg93mvhbq86mwjgi")))) |
| 30855 | (build-system pyproject-build-system) |
| 30856 | (arguments |
| 30857 | (list #:test-flags #~(list "--pyargs" "gssapi"))) |
| 30858 | (native-inputs |
| 30859 | (list python-cython |
| 30860 | python-k5test |
| 30861 | python-parameterized |
| 30862 | python-pytest |
| 30863 | python-setuptools)) |
| 30864 | (inputs |
| 30865 | (list mit-krb5)) |
| 30866 | (propagated-inputs |
| 30867 | (list python-decorator)) |
| 30868 | (home-page "https://github.com/pythongssapi/python-gssapi") |
| 30869 | (synopsis "Python GSSAPI Wrapper") |
| 30870 | (description |
| 30871 | "Python-GSSAPI provides both low-level and high level wrappers around the |
| 30872 | GSSAPI C libraries. While it focuses on the Kerberos mechanism, it should |
| 30873 | also be usable with other GSSAPI mechanisms.") |
| 30874 | (license license:isc))) |
| 30875 | |
| 30876 | (define-public python-check-manifest |
| 30877 | (package |
| 30878 | (name "python-check-manifest") |
| 30879 | (version "0.51") |
| 30880 | (source |
| 30881 | (origin |
| 30882 | (method url-fetch) |
| 30883 | (uri (pypi-uri "check_manifest" version)) |
| 30884 | (sha256 |
| 30885 | (base32 "0rvdkddnrh8hr42pqabpfrxb6ncswn7c9qrk7xb5lxbmfriwf0cq")))) |
| 30886 | (build-system pyproject-build-system) |
| 30887 | (arguments |
| 30888 | (list |
| 30889 | ;; tests: 127 passed, 20 skipped, 2 deselected |
| 30890 | #:test-flags |
| 30891 | ;; This tests requires setting up a venv which does not work |
| 30892 | ;; properly in the build environment. |
| 30893 | #~(list "--deselect=tests.py::Tests::test_build_sdist_pep517_no_isolation" |
| 30894 | "--deselect=tests.py::Tests::test_build_sdist_pep517_isolated"))) |
| 30895 | (native-inputs |
| 30896 | (list git-minimal/pinned python-pytest)) |
| 30897 | (propagated-inputs |
| 30898 | (list python-pypa-build python-setuptools)) |
| 30899 | (home-page "https://github.com/mgedmin/check-manifest") |
| 30900 | (synopsis "Check MANIFEST.in in a Python source package for completeness") |
| 30901 | (description "Python package can include a MANIFEST.in file to help with |
| 30902 | sending package files to the Python Package Index. This package checks that |
| 30903 | file to ensure it completely and accurately describes your project.") |
| 30904 | (license license:expat))) |
| 30905 | |
| 30906 | (define-public python-android-stringslib |
| 30907 | (package |
| 30908 | (name "python-android-stringslib") |
| 30909 | (version "0.1.2") |
| 30910 | (source |
| 30911 | (origin |
| 30912 | (method git-fetch) |
| 30913 | (uri (git-reference |
| 30914 | (url "https://framagit.org/tyreunom/python-android-strings-lib") |
| 30915 | (commit (string-append "v" version)))) |
| 30916 | (file-name (git-file-name name version)) |
| 30917 | (sha256 |
| 30918 | (base32 |
| 30919 | "0gij55qzzq1h83kfpvhai1vf78kkhyvxa6l17m2nl24454lhfin4")))) |
| 30920 | (build-system pyproject-build-system) |
| 30921 | (arguments (list #:tests? #f)) ; No tests. |
| 30922 | (native-inputs (list python-setuptools)) |
| 30923 | (home-page "https://framagit.org/tyreunom/python-android-strings-lib") |
| 30924 | (synopsis "Android strings.xml support") |
| 30925 | (description |
| 30926 | "Android Strings Lib provides support for android's strings.xml files. |
| 30927 | These files are used to translate strings in android apps.") |
| 30928 | (license license:expat))) |
| 30929 | |
| 30930 | (define-public python-pypng |
| 30931 | (package |
| 30932 | (name "python-pypng") |
| 30933 | (version "0.20220715.0") |
| 30934 | (source |
| 30935 | (origin |
| 30936 | (method url-fetch) |
| 30937 | (uri (pypi-uri "pypng" version)) |
| 30938 | (sha256 |
| 30939 | (base32 "1hg24zja235bkbny82hx7sy7qlzfbabxph2lvqaq61vgm4xl773k")))) |
| 30940 | (build-system pyproject-build-system) |
| 30941 | (arguments |
| 30942 | (list |
| 30943 | #:phases |
| 30944 | '(modify-phases %standard-phases |
| 30945 | (add-before 'check 'pre-check |
| 30946 | (lambda _ |
| 30947 | (setenv "PYTHONPATH" |
| 30948 | (string-append (getcwd) "/code:" |
| 30949 | (getenv "GUIX_PYTHONPATH")))))))) |
| 30950 | (native-inputs (list python-pytest python-setuptools python-wheel)) |
| 30951 | (home-page "https://github.com/drj11/pypng") |
| 30952 | (synopsis "Pure Python PNG image encoder/decoder") |
| 30953 | (description |
| 30954 | "The PyPNG module implements support for PNG images. It reads and writes |
| 30955 | PNG files with all allowable bit depths (1/2/4/8/16/24/32/48/64 bits per |
| 30956 | pixel) and colour combinations: greyscale (1/2/4/8/16 bit); RGB, RGBA, |
| 30957 | LA (greyscale with alpha) with 8/16 bits per channel; colour mapped |
| 30958 | images (1/2/4/8 bit). Adam7 interlacing is supported for reading and writing. |
| 30959 | A number of optional chunks can be specified (when writing) and |
| 30960 | understood (when reading): tRNS, bKGD, gAMA. |
| 30961 | |
| 30962 | PyPNG is not a high level toolkit for image processing (like PIL) and does not |
| 30963 | aim at being a replacement or competitor. Its strength lies in fine-grained |
| 30964 | extensive support of PNG features. It can also read and write Netpbm PAM |
| 30965 | files, with a focus on its use as an intermediate format for implementing |
| 30966 | custom PNG processing.") |
| 30967 | (license license:expat))) |
| 30968 | |
| 30969 | (define-public python-fuzzywuzzy |
| 30970 | (package |
| 30971 | (name "python-fuzzywuzzy") |
| 30972 | (version "0.18.0") |
| 30973 | (source |
| 30974 | (origin |
| 30975 | (method git-fetch) |
| 30976 | (uri (git-reference |
| 30977 | (url "https://github.com/seatgeek/fuzzywuzzy") |
| 30978 | (commit version))) |
| 30979 | (file-name (git-file-name name version)) |
| 30980 | (sha256 |
| 30981 | (base32 "0zh8xd9k95waipsdz516rn51ya9xxlxbd7ivbka4gnkqm9ah79mc")))) |
| 30982 | (build-system pyproject-build-system) |
| 30983 | (arguments |
| 30984 | (list |
| 30985 | #:test-flags |
| 30986 | #~(list "--deselect=test_fuzzywuzzy_pytest.py::test_process_warning"))) |
| 30987 | (native-inputs |
| 30988 | (list python-hypothesis |
| 30989 | python-pycodestyle |
| 30990 | python-pytest |
| 30991 | python-setuptools)) |
| 30992 | (propagated-inputs (list python-levenshtein)) |
| 30993 | (home-page "https://github.com/seatgeek/fuzzywuzzy") |
| 30994 | (synopsis "Fuzzy string matching in Python") |
| 30995 | (description |
| 30996 | "Approximate string matching using @emph{Levenshtein Distance} to |
| 30997 | calculate the differences between sequences.") |
| 30998 | (license license:gpl2))) |
| 30999 | |
| 31000 | (define-public python-block-tracing |
| 31001 | (package |
| 31002 | (name "python-block-tracing") |
| 31003 | (version "1.0.1") |
| 31004 | (source |
| 31005 | (origin |
| 31006 | (method url-fetch) |
| 31007 | (uri (pypi-uri "block_tracing" version)) |
| 31008 | (sha256 |
| 31009 | (base32 "0s2y729qr5rs7n506qfh8cssk8m2bi6k2y5vbrh2z3raf2d01alz")))) |
| 31010 | (build-system pyproject-build-system) |
| 31011 | (arguments (list #:tests? #f)) ; No tests. |
| 31012 | (native-inputs (list python-setuptools)) |
| 31013 | (home-page "https://github.com/rianhunter/block_tracing") |
| 31014 | (synopsis "Protect process memory") |
| 31015 | (description |
| 31016 | "@code{block_tracing} is a tiny Python library that can be used to |
| 31017 | prevent debuggers and other applications from inspecting the memory within |
| 31018 | your process.") |
| 31019 | (license license:expat))) |
| 31020 | |
| 31021 | (define-public python-json-e |
| 31022 | (package |
| 31023 | (name "python-json-e") |
| 31024 | (version "4.8.0") |
| 31025 | (source |
| 31026 | (origin |
| 31027 | (method git-fetch) ; no tests in PyPI release |
| 31028 | (uri (git-reference |
| 31029 | (url "https://github.com/json-e/json-e") |
| 31030 | (commit (string-append "v" version)))) |
| 31031 | (file-name (git-file-name name version)) |
| 31032 | (sha256 |
| 31033 | (base32 "1zsx17jjhvan1ziq5aaqwids3b9kzx3j8czf9qznqqqvb1n133g8")))) |
| 31034 | (build-system pyproject-build-system) |
| 31035 | (arguments |
| 31036 | (list |
| 31037 | #:phases |
| 31038 | #~(modify-phases %standard-phases |
| 31039 | ;; Git repository provides implementations for JavaScript, Golang, |
| 31040 | ;; Python and Rust, pick "py". |
| 31041 | (add-before 'build 'chdir-to-py |
| 31042 | (lambda _ |
| 31043 | (chdir "py")))))) |
| 31044 | (native-inputs |
| 31045 | (list python-freezegun |
| 31046 | python-pytest |
| 31047 | python-pyyaml |
| 31048 | python-setuptools |
| 31049 | python-wheel)) |
| 31050 | (home-page "https://json-e.js.org") |
| 31051 | (synopsis "Data-structure parameterizer for embedding context in JSON objects") |
| 31052 | (description |
| 31053 | "This package provides a data-structure parameterization system written |
| 31054 | for embedding context in JSON objects.") |
| 31055 | (license license:mpl2.0))) |
| 31056 | |
| 31057 | (define-public python-json-logger |
| 31058 | (package |
| 31059 | (name "python-json-logger") |
| 31060 | (version "4.0.0") |
| 31061 | (source |
| 31062 | (origin |
| 31063 | (method git-fetch) |
| 31064 | (uri (git-reference |
| 31065 | (url "https://github.com/nhairs/python-json-logger") |
| 31066 | (commit (string-append "v" version)))) |
| 31067 | (file-name (git-file-name name version)) |
| 31068 | (sha256 |
| 31069 | (base32 "0m64kh446q38lngw2p5rcfcx6rkq8vbrwl58lsi2c34phpwlqnv0")))) |
| 31070 | (build-system pyproject-build-system) |
| 31071 | (native-inputs |
| 31072 | (list python-freezegun |
| 31073 | python-mike |
| 31074 | python-msgspec |
| 31075 | python-orjson |
| 31076 | python-pypa-build |
| 31077 | python-pytest |
| 31078 | python-setuptools |
| 31079 | python-tzdata |
| 31080 | python-validate-pyproject |
| 31081 | python-typing-extensions)) |
| 31082 | (home-page "https://github.com/nhairs/python-json-logger") |
| 31083 | (synopsis "JSON log formatter in Python") |
| 31084 | (description "This library allows standard Python logging to output log data |
| 31085 | as JSON objects. With JSON we can make our logs more readable by machines and |
| 31086 | we can stop writing custom parsers for syslog-type records.") |
| 31087 | (license license:bsd-3))) |
| 31088 | |
| 31089 | (define-public python-daiquiri |
| 31090 | (package |
| 31091 | (name "python-daiquiri") |
| 31092 | (version "3.0.1") |
| 31093 | (source |
| 31094 | (origin |
| 31095 | (method git-fetch) |
| 31096 | (uri (git-reference |
| 31097 | (url "https://github.com/jd/daiquiri") |
| 31098 | (commit version))) |
| 31099 | (file-name (git-file-name name version)) |
| 31100 | (sha256 |
| 31101 | (base32 "0vfakncq87s6g67mqihjf32xarphd75c03ammvgavladz0pqhlg4")))) |
| 31102 | (build-system pyproject-build-system) |
| 31103 | (propagated-inputs (list python-json-logger)) |
| 31104 | (native-inputs (list python-mock python-pytest python-setuptools |
| 31105 | python-setuptools-scm)) |
| 31106 | (home-page "https://github.com/jd/daiquiri") |
| 31107 | (synopsis "Library to configure Python logging easily") |
| 31108 | (description |
| 31109 | "The daiquiri library provides an easy way to configure logging in |
| 31110 | Python. It also provides some custom formatters and handlers.") |
| 31111 | (license license:asl2.0))) |
| 31112 | |
| 31113 | (define-public python-pifpaf |
| 31114 | (package |
| 31115 | (name "python-pifpaf") |
| 31116 | (version "3.4.0") |
| 31117 | (source |
| 31118 | (origin |
| 31119 | (method git-fetch) |
| 31120 | (uri (git-reference |
| 31121 | (url "https://github.com/jd/pifpaf") |
| 31122 | (commit version))) |
| 31123 | (file-name (git-file-name name version)) |
| 31124 | (sha256 |
| 31125 | (base32 "1mj41h5xrkx71d7g5di3ykd4bsbgr7x432zbp63majgjci86gmm9")))) |
| 31126 | (build-system pyproject-build-system) |
| 31127 | (arguments |
| 31128 | (list |
| 31129 | #:phases |
| 31130 | #~(modify-phases %standard-phases |
| 31131 | (add-after 'install 'install-drivers |
| 31132 | (lambda* (#:key inputs outputs #:allow-other-keys) |
| 31133 | (let ((site (site-packages inputs outputs))) |
| 31134 | (copy-recursively "pifpaf/drivers" |
| 31135 | (string-append site "/pifpaf/drivers/")))))))) |
| 31136 | (propagated-inputs |
| 31137 | (list python-click |
| 31138 | python-daiquiri |
| 31139 | python-fixtures |
| 31140 | python-jinja2 |
| 31141 | python-pbr |
| 31142 | python-psutil |
| 31143 | python-xattr)) |
| 31144 | (native-inputs |
| 31145 | (list python-mock |
| 31146 | python-stestr |
| 31147 | python-packaging |
| 31148 | python-requests |
| 31149 | python-testrepository |
| 31150 | python-testtools |
| 31151 | python-setuptools)) |
| 31152 | (home-page "https://github.com/jd/pifpaf") |
| 31153 | (synopsis "Tools and fixtures to manage daemons for testing in Python") |
| 31154 | (description |
| 31155 | "Pifpaf is a suite of fixtures and a command-line tool that starts and |
| 31156 | stops daemons for a quick throw-away usage. This is typically useful when |
| 31157 | needing these daemons to run integration testing. It originally evolved from |
| 31158 | its precursor @code{overtest}.") |
| 31159 | (license license:asl2.0))) |
| 31160 | |
| 31161 | (define-public python-pytest-check-links |
| 31162 | (package |
| 31163 | (name "python-pytest-check-links") |
| 31164 | (version "0.10.1") |
| 31165 | (source |
| 31166 | (origin |
| 31167 | (method url-fetch) |
| 31168 | (uri (pypi-uri "pytest_check_links" version)) |
| 31169 | (sha256 |
| 31170 | (base32 "0vbp9nis2iwjz1rjc623bm2908y34xd7zj4yfk43giz6r29dsn3k")))) |
| 31171 | (build-system pyproject-build-system) |
| 31172 | (arguments |
| 31173 | (list #:tests? #f)) ;XXX: 12 failed, 4 passed, 2 skipped |
| 31174 | (native-inputs |
| 31175 | (list python-hatchling)) |
| 31176 | (propagated-inputs |
| 31177 | (list python-docutils |
| 31178 | python-html5lib |
| 31179 | python-nbconvert |
| 31180 | python-nbformat |
| 31181 | python-requests)) |
| 31182 | (home-page "https://github.com/jupyterlab/pytest-check-links") |
| 31183 | (synopsis "Check links in files") |
| 31184 | (description "This package provides a pytest plugin that checks URLs for |
| 31185 | HTML-containing files.") |
| 31186 | (license license:bsd-3))) |
| 31187 | |
| 31188 | (define-public python-json5 |
| 31189 | (package |
| 31190 | (name "python-json5") |
| 31191 | (version "0.9.25") |
| 31192 | (source |
| 31193 | (origin |
| 31194 | ;; sample.json5 is missing from PyPi source tarball |
| 31195 | (method git-fetch) |
| 31196 | (uri (git-reference |
| 31197 | (url "https://github.com/dpranke/pyjson5") |
| 31198 | (commit (string-append "v" version)))) |
| 31199 | (file-name (git-file-name name version)) |
| 31200 | (sha256 |
| 31201 | (base32 "1c96dqc8hn8c82q89rr7ix8d4da07ls3iac64f8jvjlgmhfik46q")))) |
| 31202 | (build-system pyproject-build-system) |
| 31203 | (native-inputs (list python-pytest python-setuptools python-wheel)) |
| 31204 | (home-page "https://github.com/dpranke/pyjson5") |
| 31205 | (synopsis "Python implementation of the JSON5 data format") |
| 31206 | (description |
| 31207 | "JSON5 extends the JSON data interchange format to make it slightly more |
| 31208 | usable as a configuration language. This Python package implements parsing and |
| 31209 | dumping of JSON5 data structures.") |
| 31210 | (license license:asl2.0))) |
| 31211 | |
| 31212 | (define-public python-farama-notifications |
| 31213 | (package |
| 31214 | (name "python-farama-notifications") |
| 31215 | (version "0.0.4") |
| 31216 | (source |
| 31217 | ;; The version on pypi does not include tests. |
| 31218 | (origin |
| 31219 | (method git-fetch) |
| 31220 | (uri (git-reference |
| 31221 | (url "https://github.com/Farama-Foundation/Farama-Notifications") |
| 31222 | (commit version))) |
| 31223 | (file-name (git-file-name name version)) |
| 31224 | (sha256 |
| 31225 | (base32 "1k1x48xpvhankw7vbjp20ljwran247aphc2qncqrxivrkgzwjjji")))) |
| 31226 | (build-system pyproject-build-system) |
| 31227 | (arguments |
| 31228 | (list |
| 31229 | #:phases |
| 31230 | '(modify-phases %standard-phases |
| 31231 | (replace 'check |
| 31232 | (lambda* (#:key tests? #:allow-other-keys) |
| 31233 | (when tests? |
| 31234 | (invoke "python3" "tests/ci-test.py"))))))) |
| 31235 | (native-inputs (list python-pytest python-setuptools python-wheel)) |
| 31236 | (home-page "https://github.com/Farama-Foundation/Farama-Notifications") |
| 31237 | (synopsis "Notifications for all Farama Foundation maintained libraries") |
| 31238 | (description |
| 31239 | "This package allows for providing notifications for all Farama |
| 31240 | Foundation maintained libraries.") |
| 31241 | (license license:expat))) |
| 31242 | |
| 31243 | (define-public python-frontmatter |
| 31244 | (package |
| 31245 | (name "python-frontmatter") |
| 31246 | (version "1.3.0") |
| 31247 | (source |
| 31248 | (origin |
| 31249 | (method git-fetch) |
| 31250 | (uri (git-reference |
| 31251 | (url "https://github.com/eyeseast/python-frontmatter") |
| 31252 | (commit (string-append "v" version)))) |
| 31253 | (file-name (git-file-name name version)) |
| 31254 | (sha256 |
| 31255 | (base32 "09kgl9kw96f1pyszqnm7slq1lw5nh4c8f59p6brz0ap2ydcfxykg")))) |
| 31256 | (build-system pyproject-build-system) |
| 31257 | (native-inputs |
| 31258 | (list python-hatchling |
| 31259 | python-pyaml |
| 31260 | python-pytest |
| 31261 | python-toml |
| 31262 | python-types-pyyaml |
| 31263 | python-types-toml |
| 31264 | python-uv-build)) |
| 31265 | (propagated-inputs (list python-pyyaml)) |
| 31266 | (home-page "https://github.com/eyeseast/python-frontmatter") |
| 31267 | (synopsis "Parse and manage posts with YAML (or other) frontmatter") |
| 31268 | (description |
| 31269 | "This package offers a useful way to add arbitrary, structured metadata |
| 31270 | to text documents, regardless of type. This is a small package to load and |
| 31271 | parse files (or just text) with YAML (or JSON, TOML or other) front matter.") |
| 31272 | (license license:expat))) |
| 31273 | |
| 31274 | (define-public python-frozendict |
| 31275 | (package |
| 31276 | (name "python-frozendict") |
| 31277 | (version "2.4.6") |
| 31278 | (source |
| 31279 | (origin |
| 31280 | (method url-fetch) |
| 31281 | (uri (pypi-uri "frozendict" version)) |
| 31282 | (sha256 |
| 31283 | (base32 "13ib358v66c9ykfz3plpxcs96ca6vkx8w84sjv26zlpvf1jd2z6z")))) |
| 31284 | (build-system pyproject-build-system) |
| 31285 | (native-inputs |
| 31286 | (list python-pytest |
| 31287 | python-setuptools |
| 31288 | python-wheel)) |
| 31289 | (home-page "https://github.com/Marco-Sulla/python-frozendict") |
| 31290 | (synopsis "Simple immutable mapping for Python") |
| 31291 | (description |
| 31292 | "@dfn{frozendict} is an immutable wrapper around dictionaries that |
| 31293 | implements the complete mapping interface. It can be used as a drop-in |
| 31294 | replacement for dictionaries where immutability is desired.") |
| 31295 | (license license:expat))) |
| 31296 | |
| 31297 | (define-public python-py-cpuinfo |
| 31298 | (package |
| 31299 | (name "python-py-cpuinfo") |
| 31300 | (version "9.0.0") |
| 31301 | (source |
| 31302 | (origin |
| 31303 | (method git-fetch) |
| 31304 | (uri (git-reference |
| 31305 | (url "https://github.com/workhorsy/py-cpuinfo") |
| 31306 | (commit (string-append "v" version)))) |
| 31307 | (file-name (git-file-name name version)) |
| 31308 | (sha256 |
| 31309 | (base32 |
| 31310 | "112gzmwbj3ndxv20ii7i70irp58adwrlzjdvx5gmh39aw21b96s3")))) |
| 31311 | (build-system pyproject-build-system) |
| 31312 | (arguments |
| 31313 | (list #:test-backend #~'custom |
| 31314 | #:test-flags #~(list "test_suite.py"))) |
| 31315 | (native-inputs |
| 31316 | (list python-setuptools)) |
| 31317 | (home-page "https://github.com/workhorsy/py-cpuinfo") |
| 31318 | (synopsis "Get CPU info with Python") |
| 31319 | (description |
| 31320 | "This Python module returns the CPU info by using the best sources of |
| 31321 | information for your operating system.") |
| 31322 | (license license:expat))) |
| 31323 | |
| 31324 | (define-public python-canonicaljson |
| 31325 | (package |
| 31326 | (name "python-canonicaljson") |
| 31327 | (version "2.0.0") |
| 31328 | (source |
| 31329 | (origin |
| 31330 | (method url-fetch) |
| 31331 | (uri (pypi-uri "canonicaljson" version)) |
| 31332 | (sha256 |
| 31333 | (base32 "0gqi5z8j3myfblrc96l0jykdsk863gad1lwvnnf5vp7sszqsxzg2")))) |
| 31334 | (build-system pyproject-build-system) |
| 31335 | (arguments |
| 31336 | (list #:test-backend #~'unittest)) |
| 31337 | (native-inputs |
| 31338 | (list python-setuptools)) |
| 31339 | (home-page "https://github.com/matrix-org/python-canonicaljson") |
| 31340 | (synopsis "Canonical JSON") |
| 31341 | (description |
| 31342 | "Deterministically encode JSON. |
| 31343 | |
| 31344 | @itemize |
| 31345 | @item Encodes objects and arrays as RFC 7159 JSON. |
| 31346 | @item Sorts object keys so that you get the same result each time. |
| 31347 | @item Has no insignificant whitespace to make the output as small as possible. |
| 31348 | @item Escapes only the characters that must be escaped, U+0000 to |
| 31349 | U+0019 / U+0022 / U+0056, to keep the output as small as possible. |
| 31350 | @item Uses the shortest escape sequence for each escaped character. |
| 31351 | @item Encodes the JSON as UTF-8. |
| 31352 | @item Can encode frozendict immutable dictionaries. |
| 31353 | @end itemize") |
| 31354 | (license license:asl2.0))) |
| 31355 | |
| 31356 | (define-public python-signedjson |
| 31357 | (package |
| 31358 | (name "python-signedjson") |
| 31359 | (version "1.1.4") |
| 31360 | (source |
| 31361 | (origin |
| 31362 | (method git-fetch) |
| 31363 | (uri (git-reference |
| 31364 | (url "https://github.com/matrix-org/python-signedjson") |
| 31365 | (commit (string-append "v" version)))) |
| 31366 | (file-name (git-file-name name version)) |
| 31367 | (sha256 |
| 31368 | (base32 "1wkgbwr0hdvafbhbqjibca06rxqbp95gg6rfd3ba6rkgl4g85i5z")))) |
| 31369 | (build-system pyproject-build-system) |
| 31370 | (propagated-inputs |
| 31371 | (list python-canonicaljson |
| 31372 | python-pynacl |
| 31373 | python-typing-extensions |
| 31374 | python-unpaddedbase64)) |
| 31375 | (native-inputs |
| 31376 | (list python-pytest python-setuptools-scm python-setuptools)) |
| 31377 | (home-page "https://github.com/matrix-org/python-signedjson") |
| 31378 | (synopsis "Sign JSON objects with ED25519 signatures") |
| 31379 | (description |
| 31380 | "Sign JSON objects with ED25519 signatures. |
| 31381 | |
| 31382 | @itemize |
| 31383 | @item More than one entity can sign the same object. |
| 31384 | @item Each entity can sign the object with more than one key making it easier to |
| 31385 | rotate keys |
| 31386 | @item ED25519 can be replaced with a different algorithm. |
| 31387 | @item Unprotected data can be added to the object under the @dfn{\"unsigned\"} |
| 31388 | key. |
| 31389 | @end itemize") |
| 31390 | (license license:asl2.0))) |
| 31391 | |
| 31392 | (define-public python-daemonize |
| 31393 | (package |
| 31394 | (name "python-daemonize") |
| 31395 | (version "2.5.0") |
| 31396 | (source |
| 31397 | (origin |
| 31398 | (method git-fetch) |
| 31399 | (uri (git-reference |
| 31400 | (url "https://github.com/thesharp/daemonize") |
| 31401 | (commit (string-append "v" version)))) |
| 31402 | (file-name (git-file-name name version)) |
| 31403 | (sha256 |
| 31404 | (base32 "0pz914x6dfq133nfv0y8q8fss4zr52ip8mq3ds50rx0ddlbb0k2x")))) |
| 31405 | (build-system pyproject-build-system) |
| 31406 | (arguments |
| 31407 | (list |
| 31408 | #:test-backend #~'custom |
| 31409 | #:test-flags #~(list "tests/test.py") |
| 31410 | #:phases |
| 31411 | #~(modify-phases %standard-phases |
| 31412 | (add-before 'check 'fix-tests |
| 31413 | (lambda _ |
| 31414 | ;; XXX: nobody has group nogroup on Guix. |
| 31415 | (substitute* "tests/test.py" |
| 31416 | (("grp\\.getgrnam\\(\"nobody\"\\)\\.gr_gid") |
| 31417 | (number->string (passwd:gid (getpw "nobody")))))))))) |
| 31418 | (native-inputs (list coreutils-minimal procps python-setuptools)) |
| 31419 | (home-page "https://github.com/thesharp/daemonize") |
| 31420 | (synopsis "Library for writing system daemons in Python") |
| 31421 | (description |
| 31422 | "Daemonize is a library for writing system daemons in Python.") |
| 31423 | (license license:expat))) |
| 31424 | |
| 31425 | (define-public python-pymacaroons |
| 31426 | (package |
| 31427 | (name "python-pymacaroons") |
| 31428 | (properties '((commit . "78c55c1d33a0b23ddc71140a9c999f957d79e9dd") |
| 31429 | (revision . "0"))) |
| 31430 | (version (git-version "0.13.0" |
| 31431 | (assoc-ref properties 'revision) |
| 31432 | (assoc-ref properties 'commit))) |
| 31433 | (source |
| 31434 | (origin |
| 31435 | (method git-fetch) |
| 31436 | (uri (git-reference |
| 31437 | (url "https://github.com/ecordell/pymacaroons") |
| 31438 | (commit (assoc-ref properties 'commit)))) |
| 31439 | (file-name (git-file-name name version)) |
| 31440 | (sha256 |
| 31441 | (base32 "0ybdxlx6crb7l850dzz50arqrm4d4dl5dvzlf8f7sdhdcn2lgr7m")))) |
| 31442 | (build-system pyproject-build-system) |
| 31443 | (arguments |
| 31444 | (list |
| 31445 | #:test-flags |
| 31446 | ;; XXX: Despite python-hypothesis, ModuleNotFoundError: |
| 31447 | ;; No module named 'hypothesis.specifiers' |
| 31448 | #~(list "--ignore=tests/property_tests/macaroon_property_tests.py"))) |
| 31449 | (native-inputs |
| 31450 | (list python-hypothesis |
| 31451 | python-mock |
| 31452 | python-pytest |
| 31453 | python-setuptools)) |
| 31454 | (propagated-inputs (list python-pynacl)) |
| 31455 | (home-page "https://github.com/ecordell/pymacaroons") |
| 31456 | (synopsis "Python Macaroon Library") |
| 31457 | (description |
| 31458 | "Macaroons, like cookies, are a form of bearer credential. Unlike opaque |
| 31459 | tokens, macaroons embed caveats that define specific authorization |
| 31460 | requirements for the target service, the service that issued the root macaroon |
| 31461 | and which is capable of verifying the integrity of macaroons it receives. |
| 31462 | |
| 31463 | Macaroons allow for delegation and attenuation of authorization. They are |
| 31464 | simple and fast to verify, and decouple authorization policy from the |
| 31465 | enforcement of that policy.") |
| 31466 | (license license:expat))) |
| 31467 | |
| 31468 | (define-public python-ldap3 |
| 31469 | (package |
| 31470 | (name "python-ldap3") |
| 31471 | (version "2.9.1") |
| 31472 | (home-page "https://github.com/cannatag/ldap3") |
| 31473 | (source |
| 31474 | (origin |
| 31475 | (method git-fetch) |
| 31476 | (uri (git-reference (url home-page) |
| 31477 | (commit (string-append "v" version)))) |
| 31478 | (file-name (git-file-name name version)) |
| 31479 | (sha256 |
| 31480 | (base32 "07nxbv41wpg5567r07yvm4chgs761drsvn53gn548zi26gmrpr07")))) |
| 31481 | (build-system pyproject-build-system) |
| 31482 | (arguments |
| 31483 | (list |
| 31484 | #:tests? #f ;TODO: Tests need a real LDAP server to run |
| 31485 | #:test-backend #~'nose)) |
| 31486 | (native-inputs |
| 31487 | (list python-pynose python-setuptools)) |
| 31488 | (propagated-inputs |
| 31489 | (list python-gssapi python-pyasn1)) |
| 31490 | (synopsis "Python LDAP client") |
| 31491 | (description |
| 31492 | "LDAP3 is a strictly RFC 4510 conforming LDAP V3 pure Python client |
| 31493 | library.") |
| 31494 | (license license:lgpl3+))) |
| 31495 | |
| 31496 | (define-public python-boltons |
| 31497 | (package |
| 31498 | (name "python-boltons") |
| 31499 | (version "25.0.0") |
| 31500 | (source |
| 31501 | (origin |
| 31502 | (method git-fetch) |
| 31503 | (uri (git-reference |
| 31504 | (url "https://github.com/mahmoud/boltons") |
| 31505 | (commit version))) |
| 31506 | (file-name (git-file-name name version)) |
| 31507 | (sha256 |
| 31508 | (base32 "0j061hd1iwcyz1rvasprjwwgb39x6h36n1l3dw310ig3pzbr84wh")))) |
| 31509 | (build-system pyproject-build-system) |
| 31510 | (native-inputs (list python-flit-core python-pytest-8 python-setuptools)) |
| 31511 | (home-page "https://github.com/mahmoud/boltons") |
| 31512 | (synopsis "Extensions to the Python standard library") |
| 31513 | (description |
| 31514 | "Boltons is a set of over 230 pure-Python utilities in the same spirit |
| 31515 | as — and yet conspicuously missing from — the standard library, including: |
| 31516 | |
| 31517 | @itemize |
| 31518 | @item Atomic file saving, bolted on with fileutils |
| 31519 | @item A highly-optimized OrderedMultiDict, in dictutils |
| 31520 | @item Two types of PriorityQueue, in queueutils |
| 31521 | @item Chunked and windowed iteration, in iterutils |
| 31522 | @item Recursive data structure iteration and merging, with iterutils.remap |
| 31523 | @item Exponential backoff functionality, including jitter, through |
| 31524 | iterutils.backoff |
| 31525 | @item A full-featured TracebackInfo type, for representing stack traces, in |
| 31526 | tbutils |
| 31527 | @end itemize") |
| 31528 | (license license:bsd-3))) |
| 31529 | |
| 31530 | (define-public python-eliot |
| 31531 | (package |
| 31532 | (name "python-eliot") |
| 31533 | (version "1.17.5") |
| 31534 | (source |
| 31535 | (origin |
| 31536 | (method url-fetch) |
| 31537 | (uri (pypi-uri "eliot" version)) |
| 31538 | (sha256 |
| 31539 | (base32 "0rx7isb3h5fvraycfgqm781asjjmqldn0qcv6s2r5fwc1p31ffvb")))) |
| 31540 | (build-system pyproject-build-system) |
| 31541 | (arguments |
| 31542 | (list |
| 31543 | ;; tests: 407 passed, 21 skipped, 2 deselected, 5479 warnings |
| 31544 | ;; Two tests fail with error: TypeError: Unsupported type. |
| 31545 | #:test-flags #~(list "-k" "not test_basic_types and not test_dataclass") |
| 31546 | #:phases |
| 31547 | #~(modify-phases %standard-phases |
| 31548 | (add-after 'unpack 'remove-journald-support |
| 31549 | (lambda _ |
| 31550 | (for-each delete-file |
| 31551 | '("eliot/tests/test_journald.py" |
| 31552 | "eliot/journald.py"))))))) |
| 31553 | (native-inputs |
| 31554 | (list python-pytest |
| 31555 | python-setuptools |
| 31556 | python-testtools)) |
| 31557 | (propagated-inputs |
| 31558 | (list python-boltons |
| 31559 | python-orjson |
| 31560 | python-pyrsistent |
| 31561 | python-zope-interface)) |
| 31562 | (home-page "https://github.com/itamarst/eliot/") |
| 31563 | (synopsis "Eliot: the logging system that tells you why it happened") |
| 31564 | (description |
| 31565 | "@dfn{eliot} is a Python logging system that outputs causal chains of |
| 31566 | actions: actions can spawn other actions, and eventually they either succeed |
| 31567 | or fail. The resulting logs tell you the story of what your software did: what |
| 31568 | happened, and what caused it.") |
| 31569 | (license license:asl2.0))) |
| 31570 | |
| 31571 | (define-public python-pem |
| 31572 | (package |
| 31573 | (name "python-pem") |
| 31574 | (version "23.1.0") |
| 31575 | (source |
| 31576 | (origin |
| 31577 | (method git-fetch) |
| 31578 | (uri (git-reference |
| 31579 | (url "https://github.com/hynek/pem") |
| 31580 | (commit version))) |
| 31581 | (file-name (git-file-name name version)) |
| 31582 | (sha256 |
| 31583 | (base32 "01x14j1pliyxvcx8hlwlwfchn893ddkxxpxbyqhyh6hjyag2ammd")))) |
| 31584 | (build-system pyproject-build-system) |
| 31585 | (native-inputs |
| 31586 | (list nss-certs-for-test |
| 31587 | python-certifi |
| 31588 | python-hatch-fancy-pypi-readme |
| 31589 | python-hatch-vcs |
| 31590 | python-hatchling |
| 31591 | python-pretend |
| 31592 | python-pyopenssl |
| 31593 | python-pytest |
| 31594 | python-twisted)) |
| 31595 | (home-page "https://pem.readthedocs.io/") |
| 31596 | (synopsis "Easy PEM file parsing in Python") |
| 31597 | (description |
| 31598 | "This package provides a Python module for parsing and splitting PEM files.") |
| 31599 | (license license:expat))) |
| 31600 | |
| 31601 | (define-public python-pysaml2 |
| 31602 | (package |
| 31603 | (name "python-pysaml2") |
| 31604 | (version "7.5.4") |
| 31605 | (source |
| 31606 | (origin |
| 31607 | (method git-fetch) |
| 31608 | (uri (git-reference |
| 31609 | (url "https://github.com/IdentityPython/pysaml2") |
| 31610 | (commit (string-append "v" version)))) |
| 31611 | (file-name (git-file-name name version)) |
| 31612 | (sha256 |
| 31613 | (base32 "1vxi6kmckaj0djn79xw8f0gdd569i2y6sywsywyvyrwdcf6k8fqc")))) |
| 31614 | (build-system pyproject-build-system) |
| 31615 | (arguments |
| 31616 | (list |
| 31617 | #:test-flags |
| 31618 | #~(list "-k" |
| 31619 | (string-join |
| 31620 | ;; XXX: encryption failures |
| 31621 | (list "not test_encrypted_response_6" |
| 31622 | "test_validate_cert_chains" |
| 31623 | "test_validate_with_root_cert" |
| 31624 | ;; XXX: xml parsing error |
| 31625 | "test_namespace_processing") " and not ")) |
| 31626 | #:phases |
| 31627 | #~(modify-phases %standard-phases |
| 31628 | (add-after 'unpack 'relax-requirements |
| 31629 | (lambda _ |
| 31630 | (substitute* "pyproject.toml" |
| 31631 | (("\"(pyopenssl|xmlschema).*\"" _ dep) |
| 31632 | (format #f "~s" dep)))))))) |
| 31633 | (native-inputs (list python-poetry-core python-pytest)) |
| 31634 | (propagated-inputs |
| 31635 | (list python-cryptography |
| 31636 | python-dateutil |
| 31637 | python-defusedxml |
| 31638 | python-pymongo |
| 31639 | python-pyopenssl |
| 31640 | python-responses |
| 31641 | python-requests |
| 31642 | python-xmlschema |
| 31643 | python-xmlsec)) |
| 31644 | (home-page "https://idpy.org") |
| 31645 | (synopsis "Python implementation of SAML Version 2 Standard") |
| 31646 | (description |
| 31647 | "PySAML2 is a pure python implementation of SAML Version 2 Standard. |
| 31648 | It contains all necessary pieces for building a SAML2 service provider or |
| 31649 | an identity provider. The distribution contains examples of both. |
| 31650 | |
| 31651 | This package was originally written to work in a WSGI environment, but |
| 31652 | there are extensions that allow you to use it with other frameworks.") |
| 31653 | (license license:asl2.0))) |
| 31654 | |
| 31655 | ;; XXX: Upstream note: Final PyPI release to mark the project as inactive. |
| 31656 | ;; This PyPI package is no longer actively maintained, but the underlying |
| 31657 | ;; library can be vendored. |
| 31658 | ;; |
| 31659 | ;; Version 2.0 lacks packaging instructions (setup.py, setup.pkg or |
| 31660 | ;; pyproject.toml) and can't be used as a common input, do not update this |
| 31661 | ;; package. |
| 31662 | (define-public python-click-plugins |
| 31663 | (package |
| 31664 | (name "python-click-plugins") |
| 31665 | (version "1.1.1.2") |
| 31666 | (source |
| 31667 | (origin |
| 31668 | (method git-fetch) |
| 31669 | (uri (git-reference |
| 31670 | (url "https://github.com/click-contrib/click-plugins") |
| 31671 | (commit version))) |
| 31672 | (file-name (git-file-name name version)) |
| 31673 | (sha256 |
| 31674 | (base32 "11i93dxb6vvlqb79p8qdbcxvcsb2bb2b9lbkqhv5hs93nry02gxl")))) |
| 31675 | (build-system pyproject-build-system) |
| 31676 | (arguments |
| 31677 | (list #:tests? #f)) ;5 failed, 2 passed, 1 warning |
| 31678 | (native-inputs |
| 31679 | (list python-setuptools)) |
| 31680 | (propagated-inputs |
| 31681 | (list python-click)) |
| 31682 | (synopsis "Extension for Click to register external CLI commands") |
| 31683 | (description |
| 31684 | "This package provides n extension module for Click to register external |
| 31685 | CLI commands via setuptools entry-points.") |
| 31686 | (home-page "https://github.com/click-contrib/click-plugins") |
| 31687 | (license license:bsd-3))) |
| 31688 | |
| 31689 | ;; XXX: Deprecated on <2026-03-23>. |
| 31690 | (define-deprecated-package python-click-plugins-1 python-click-plugins) |
| 31691 | |
| 31692 | (define-public python-diceware |
| 31693 | (package |
| 31694 | (name "python-diceware") |
| 31695 | (version "1.0.1") |
| 31696 | (source |
| 31697 | (origin |
| 31698 | (method url-fetch) |
| 31699 | (uri (pypi-uri "diceware" version)) |
| 31700 | (sha256 |
| 31701 | (base32 |
| 31702 | "0fb61yfqapygnpqawf3z286llkc0qfh1b3m1hlqanmhcky091djl")))) |
| 31703 | (build-system pyproject-build-system) |
| 31704 | (native-inputs |
| 31705 | (list python-pytest python-setuptools python-wheel)) |
| 31706 | (home-page "https://github.com/ulif/diceware/") |
| 31707 | (synopsis "Generates memorable passphrases") |
| 31708 | (description "This package generates passphrases by concatenating words |
| 31709 | randomly picked from wordlists. It supports several sources of |
| 31710 | randomness (including real life dice) and different wordlists (including |
| 31711 | cryptographically signed ones).") |
| 31712 | (license license:gpl3+))) |
| 31713 | |
| 31714 | (define-public python-dictdiffer |
| 31715 | (package |
| 31716 | (name "python-dictdiffer") |
| 31717 | (version "0.9.0") |
| 31718 | (source |
| 31719 | (origin |
| 31720 | (method git-fetch) |
| 31721 | (uri (git-reference |
| 31722 | (url "https://github.com/inveniosoftware/dictdiffer") |
| 31723 | (commit (string-append "v" version)))) |
| 31724 | (file-name (git-file-name name version)) |
| 31725 | (sha256 |
| 31726 | (base32 "1rc5jhjxzphip43frrlplcayng2cah1bzbzv6hpxnnjhg6rqy34m")))) |
| 31727 | (build-system pyproject-build-system) |
| 31728 | (arguments |
| 31729 | (list |
| 31730 | #:phases |
| 31731 | #~(modify-phases %standard-phases |
| 31732 | (add-after 'unpack 'relax-requirements |
| 31733 | (lambda _ |
| 31734 | (delete-file "pytest.ini") |
| 31735 | (substitute* "setup.py" |
| 31736 | (("'pytest-runner.*',") |
| 31737 | "'pytest',"))))))) |
| 31738 | (native-inputs |
| 31739 | (list python-pytest python-setuptools python-setuptools-scm)) |
| 31740 | (home-page "https://github.com/inveniosoftware/dictdiffer") |
| 31741 | (synopsis "Diff and patch Python dictionary objects") |
| 31742 | (description |
| 31743 | "Dictdiffer is a Python module that helps you to diff and patch |
| 31744 | dictionaries.") |
| 31745 | (license license:expat))) |
| 31746 | |
| 31747 | (define-public python-osc |
| 31748 | (package |
| 31749 | (name "python-osc") |
| 31750 | (version "1.9.3") |
| 31751 | (source |
| 31752 | (origin |
| 31753 | (method git-fetch) |
| 31754 | (uri (git-reference |
| 31755 | (url "https://github.com/attwad/python-osc") |
| 31756 | (commit (string-append "v" version)))) |
| 31757 | (file-name (git-file-name name version)) |
| 31758 | (sha256 |
| 31759 | (base32 "1d99q9ww278cjqbfdzahg17rhbkgk2rw6ixxm5z5iwnxnsrhfdwa")))) |
| 31760 | (build-system pyproject-build-system) |
| 31761 | (native-inputs (list python-setuptools)) |
| 31762 | (home-page "https://github.com/attwad/python-osc") |
| 31763 | (synopsis "Open Sound Control server and client implementations") |
| 31764 | (description |
| 31765 | "@code{python-osc} is a pure Python library with no external |
| 31766 | dependencies. It implements the @uref{http://opensoundcontrol.org/spec-1_0, |
| 31767 | Open Sound Control 1.0} specification.") |
| 31768 | (license license:unlicense))) |
| 31769 | |
| 31770 | (define-public python-cmd2 |
| 31771 | (package |
| 31772 | (name "python-cmd2") |
| 31773 | (version "2.5.11") |
| 31774 | (source |
| 31775 | (origin |
| 31776 | (method url-fetch) |
| 31777 | (uri (pypi-uri "cmd2" version)) |
| 31778 | (sha256 |
| 31779 | (base32 |
| 31780 | "0abl9aalyfbncw39d41gd3mmdgjvd7jlaa372r0lmghz0a2x781h")))) |
| 31781 | (build-system pyproject-build-system) |
| 31782 | (arguments |
| 31783 | (list #:test-flags '(list "-k" "not test_find_editor_not_specified \ |
| 31784 | and not test_transcript"))) |
| 31785 | (propagated-inputs |
| 31786 | (list python-pyperclip python-wcwidth)) |
| 31787 | (native-inputs |
| 31788 | (list python-pytest |
| 31789 | python-pytest-mock |
| 31790 | python-setuptools |
| 31791 | python-setuptools-scm |
| 31792 | python-wheel)) |
| 31793 | (home-page "https://github.com/python-cmd2/cmd2") |
| 31794 | (synopsis "Tool for building interactive command line applications") |
| 31795 | (description |
| 31796 | "Cmd2 is a tool for building interactive command line applications in |
| 31797 | Python. Its goal is to make it quick and easy for developers to build |
| 31798 | feature-rich and user-friendly interactive command line applications. It |
| 31799 | provides a simple API which is an extension of Python's built-in @code{cmd} |
| 31800 | module. @code{cmd2} provides a wealth of features on top of @code{cmd} to |
| 31801 | make your life easier and eliminates much of the boilerplate code which would |
| 31802 | be necessary when using @code{cmd}.") |
| 31803 | (license license:expat))) |
| 31804 | |
| 31805 | (define-public python-pytidylib |
| 31806 | (package |
| 31807 | (name "python-pytidylib") |
| 31808 | (version "0.3.2") |
| 31809 | (source |
| 31810 | (origin |
| 31811 | (method git-fetch) |
| 31812 | (uri (git-reference |
| 31813 | (url "https://github.com/countergram/pytidylib") |
| 31814 | (commit version))) |
| 31815 | (file-name (git-file-name name version)) |
| 31816 | (sha256 |
| 31817 | (base32 "0h5kx99ka47yan9xsh2pyi19mhhbixqpbqn6rgciskfr5m1csji0")))) |
| 31818 | (build-system pyproject-build-system) |
| 31819 | (arguments |
| 31820 | (list |
| 31821 | #:phases |
| 31822 | #~(modify-phases %standard-phases |
| 31823 | (add-after 'unpack 'fix-queue-import |
| 31824 | (lambda _ |
| 31825 | ;; Adjust Queue import for Python 3. Remove for versions >=0.4.0. |
| 31826 | (substitute* "tests/threadsafety.py" |
| 31827 | (("from Queue import Queue") |
| 31828 | "from queue import Queue")))) |
| 31829 | (add-before 'build 'qualify-libtidy |
| 31830 | (lambda* (#:key inputs #:allow-other-keys) |
| 31831 | (let ((libtidy (search-input-file inputs "/lib/libtidy.so"))) |
| 31832 | (substitute* "tidylib/tidy.py" |
| 31833 | (("ctypes\\.util\\.find_library\\('tidy'\\)") |
| 31834 | (format #f "'~a'" libtidy))))))))) |
| 31835 | (native-inputs (list python-pytest python-setuptools)) |
| 31836 | (inputs (list tidy-html)) |
| 31837 | (home-page "https://github.com/countergram/pytidylib") |
| 31838 | (synopsis "Python wrapper for HTML Tidy library") |
| 31839 | (description |
| 31840 | "PyTidyLib is a Python package that wraps the HTML Tidy library. This |
| 31841 | allows you, from Python code, to “fix” invalid (X)HTML markup.") |
| 31842 | (license license:expat))) |
| 31843 | |
| 31844 | (define-public python-mujson |
| 31845 | (package |
| 31846 | (name "python-mujson") |
| 31847 | (version "1.4") |
| 31848 | (source |
| 31849 | (origin |
| 31850 | (method git-fetch) |
| 31851 | (uri (git-reference |
| 31852 | (url "https://github.com/mattgiles/mujson") |
| 31853 | (commit version))) |
| 31854 | (file-name (git-file-name name version)) |
| 31855 | (sha256 |
| 31856 | (base32 "1j0pcqyxpivk8nn7xx5d0pj40g22psd6v2r7l4m8b6h4hrdn9cij")))) |
| 31857 | (build-system pyproject-build-system) |
| 31858 | (arguments (list #:tests? #f)) ;No tests. |
| 31859 | (native-inputs (list python-setuptools)) |
| 31860 | (home-page "https://github.com/mattgiles/mujson") |
| 31861 | (synopsis "Use the fastest JSON functions available at import time") |
| 31862 | (description |
| 31863 | "This module selects the fastest JSON functions available at import time |
| 31864 | in Python.") |
| 31865 | (license license:expat))) |
| 31866 | |
| 31867 | (define-public python-bashlex |
| 31868 | (package |
| 31869 | (name "python-bashlex") |
| 31870 | (version "0.18") |
| 31871 | (source |
| 31872 | (origin |
| 31873 | (method git-fetch) |
| 31874 | (uri (git-reference |
| 31875 | (url "https://github.com/idank/bashlex") |
| 31876 | (commit version))) |
| 31877 | (file-name (git-file-name name version)) |
| 31878 | (sha256 |
| 31879 | (base32 "00idgf9153jvp0g5ajbcfgpb6ffl2a8rcy3w5n9iirgxa7vlvmkm")))) |
| 31880 | (build-system pyproject-build-system) |
| 31881 | (arguments |
| 31882 | (list |
| 31883 | #:phases |
| 31884 | #~(modify-phases %standard-phases |
| 31885 | (add-before 'build 'pregenerate-yacc-tables |
| 31886 | (lambda _ |
| 31887 | ;; parser.py caches tables, which attempts to write to site lib |
| 31888 | ;; see https://github.com/idank/bashlex/issues/51 |
| 31889 | (invoke "python" "-c" "import bashlex")))))) |
| 31890 | (native-inputs (list python-pytest python-setuptools)) |
| 31891 | (home-page "https://github.com/idank/bashlex") |
| 31892 | (synopsis "Python parser for bash") |
| 31893 | (description |
| 31894 | "@code{bashlex} is a Python port of the parser used internally by GNU |
| 31895 | bash. |
| 31896 | |
| 31897 | For the most part it's transliterated from C, the major differences are: |
| 31898 | |
| 31899 | @itemize |
| 31900 | @item it does not execute anything |
| 31901 | @item it is reentrant |
| 31902 | @item it generates a complete AST |
| 31903 | @end itemize |
| 31904 | ") |
| 31905 | (license license:gpl3+))) |
| 31906 | |
| 31907 | (define-public python-jinxed |
| 31908 | (package |
| 31909 | (name "python-jinxed") |
| 31910 | (version "1.3.0") |
| 31911 | (source |
| 31912 | (origin |
| 31913 | (method git-fetch) |
| 31914 | (uri (git-reference |
| 31915 | (url "https://github.com/Rockhopper-Technologies/jinxed") |
| 31916 | (commit version))) |
| 31917 | (file-name (git-file-name name version)) |
| 31918 | (sha256 |
| 31919 | (base32 "1cssqc5fvy3nx0q94ia79vhldfi0r2pq5nkagdvnkhmlnz26a3n8")))) |
| 31920 | (build-system pyproject-build-system) |
| 31921 | (arguments |
| 31922 | (list |
| 31923 | #:tests? #f ;_curses.error: setupterm: could not find terminal |
| 31924 | #:phases |
| 31925 | #~(modify-phases %standard-phases |
| 31926 | (add-before 'check 'set-environment-variables |
| 31927 | (lambda* (#:key inputs #:allow-other-keys) |
| 31928 | (setenv "TERM" "LINUX") |
| 31929 | (setenv "TERMINFO" |
| 31930 | (search-input-directory inputs "share/terminfo"))))))) |
| 31931 | (native-inputs (list ncurses python-setuptools)) |
| 31932 | (home-page "https://github.com/Rockhopper-Technologies/jinxed") |
| 31933 | (synopsis "Jinxed Terminal Library") |
| 31934 | (description |
| 31935 | "Jinxed is an implementation of a subset of the Python curses library.") |
| 31936 | (license license:mpl2.0))) |
| 31937 | |
| 31938 | (define-public python-blessed |
| 31939 | (package |
| 31940 | (name "python-blessed") |
| 31941 | (version "1.20.0") |
| 31942 | (source |
| 31943 | (origin |
| 31944 | (method url-fetch) |
| 31945 | (uri (pypi-uri "blessed" version)) |
| 31946 | (sha256 |
| 31947 | (base32 |
| 31948 | "103ng3ap33xs6i7606q3k6rwvjva9l7qi8j7vw08y13ffkw6gp9c")) |
| 31949 | (snippet |
| 31950 | ;; Don't get hung up on Windows test failures. |
| 31951 | '(delete-file "blessed/win_terminal.py")))) |
| 31952 | (build-system pyproject-build-system) |
| 31953 | (propagated-inputs (list python-six python-wcwidth)) |
| 31954 | (native-inputs (list python-pytest python-setuptools python-wheel)) |
| 31955 | (home-page "https://github.com/jquast/blessed") |
| 31956 | (synopsis "Wrapper around terminal capabilities") |
| 31957 | (description |
| 31958 | "Blessed is a thin, practical wrapper around terminal styling, screen |
| 31959 | positioning, and keyboard input.") |
| 31960 | (license license:expat))) |
| 31961 | |
| 31962 | (define-public python-readme-renderer |
| 31963 | (package |
| 31964 | (name "python-readme-renderer") |
| 31965 | (version "45.0") |
| 31966 | (source |
| 31967 | (origin |
| 31968 | (method git-fetch) |
| 31969 | (uri (git-reference |
| 31970 | (url "https://github.com/pypa/readme_renderer") |
| 31971 | (commit version))) |
| 31972 | (file-name (git-file-name name version)) |
| 31973 | (sha256 |
| 31974 | (base32 "15ald40v4vv7sb2as8z7jggcwdy0nbx5m0icqv4ii9wriqrzf7kx")))) |
| 31975 | (build-system pyproject-build-system) |
| 31976 | (arguments |
| 31977 | (list |
| 31978 | ;; tests: 99 passed, 2 skipped, 1 deselected, 1 warning |
| 31979 | #:test-flags |
| 31980 | ;; Assertion error in one test. |
| 31981 | #~(list (string-append "--deselect=tests/test_markdown.py" |
| 31982 | "::test_md_fixtures[test_GFM_headings.md]")))) |
| 31983 | (propagated-inputs |
| 31984 | (list python-docutils |
| 31985 | python-nh3 |
| 31986 | python-pygments |
| 31987 | ;; [optional] |
| 31988 | python-comrak)) |
| 31989 | (native-inputs |
| 31990 | (list python-pytest |
| 31991 | python-setuptools)) |
| 31992 | (home-page "https://github.com/pypa/readme_renderer") |
| 31993 | (synopsis "Render README files in Warehouse") |
| 31994 | (description |
| 31995 | "Readme Renderer is a library that will safely render arbitrary README |
| 31996 | files into HTML. It is designed to be used in Warehouse to render the |
| 31997 | @code{long_description} for packages. It can handle Markdown, |
| 31998 | reStructuredText, and plain text.") |
| 31999 | (license license:asl2.0))) |
| 32000 | |
| 32001 | (define-public python-lazr-delegates |
| 32002 | (package |
| 32003 | (name "python-lazr-delegates") |
| 32004 | (version "2.1.1") |
| 32005 | (source |
| 32006 | (origin |
| 32007 | (method url-fetch) |
| 32008 | (uri (pypi-uri "lazr_delegates" version)) |
| 32009 | (sha256 |
| 32010 | (base32 "1p02diwzn58jhpvf9m8bhb5p0xkx5gnc84mzgwr3zdsidrhv5kmf")))) |
| 32011 | (build-system pyproject-build-system) |
| 32012 | (arguments |
| 32013 | (list |
| 32014 | #:test-flags #~(list "-v" #$output) |
| 32015 | #:phases |
| 32016 | #~(modify-phases %standard-phases |
| 32017 | (add-after 'check 'check-cleanup |
| 32018 | (lambda* (#:key tests? #:allow-other-keys) |
| 32019 | (when tests? |
| 32020 | (for-each |
| 32021 | delete-file-recursively |
| 32022 | (find-files #$output |
| 32023 | (lambda (file stat) |
| 32024 | (or (member (basename file) |
| 32025 | '("tests" ".pytest_cache")))) |
| 32026 | #:directories? #t)))))))) |
| 32027 | (native-inputs |
| 32028 | (list python-pytest python-setuptools python-wheel)) |
| 32029 | (propagated-inputs |
| 32030 | (list python-zope-interface)) |
| 32031 | (home-page "https://launchpad.net/lazr.delegates") |
| 32032 | (synopsis "Easily write objects that delegate behavior") |
| 32033 | (description |
| 32034 | "The @code{lazr.delegates} package makes it easy to write objects that |
| 32035 | delegate behavior to another object. The new object adds some property or |
| 32036 | behavior on to the other object, while still providing the underlying interface, |
| 32037 | and delegating behavior.") |
| 32038 | (license license:lgpl3))) |
| 32039 | |
| 32040 | (define-public python-lazr-config |
| 32041 | (package |
| 32042 | (name "python-lazr-config") |
| 32043 | (version "3.1") |
| 32044 | (source |
| 32045 | (origin |
| 32046 | (method url-fetch) |
| 32047 | (uri (pypi-uri "lazr_config" version)) |
| 32048 | (sha256 |
| 32049 | (base32 "02xb4fs9rm6bf3f00qkq8pihgqvrvn2wfnvydn2vg9p73ddhcmvw")))) |
| 32050 | (build-system pyproject-build-system) |
| 32051 | (arguments |
| 32052 | (list |
| 32053 | #:test-flags #~(list "-v" #$output) |
| 32054 | #:phases |
| 32055 | #~(modify-phases %standard-phases |
| 32056 | (add-after 'check 'check-cleanup |
| 32057 | (lambda* (#:key tests? #:allow-other-keys) |
| 32058 | (when tests? |
| 32059 | (for-each |
| 32060 | delete-file-recursively |
| 32061 | (find-files #$output |
| 32062 | (lambda (file stat) |
| 32063 | (or (member (basename file) |
| 32064 | '("tests" ".pytest_cache")))) |
| 32065 | #:directories? #t)))))))) |
| 32066 | (native-inputs |
| 32067 | (list python-pytest python-setuptools python-wheel)) |
| 32068 | (propagated-inputs |
| 32069 | (list python-lazr-delegates python-zope-interface)) |
| 32070 | (home-page "https://launchpad.net/lazr.config") |
| 32071 | (synopsis "Create configuration schemas and process and validate configurations") |
| 32072 | (description |
| 32073 | "The LAZR config system is typically used to manage process configuration. |
| 32074 | Process configuration is for saying how things change when we run systems on |
| 32075 | different machines, or under different circumstances. This system uses ini-like |
| 32076 | file format of section, keys, and values. The config file supports inheritance |
| 32077 | to minimize duplication of information across files. The format supports schema |
| 32078 | validation.") |
| 32079 | (license license:lgpl3))) |
| 32080 | |
| 32081 | (define-public python-flufl-bounce |
| 32082 | (package |
| 32083 | (name "python-flufl-bounce") |
| 32084 | (properties '((commit . "e7d37db46149795f355eab4dca68e670267885f6") |
| 32085 | (revision . "0"))) |
| 32086 | (version (git-version "4.0" |
| 32087 | (assoc-ref properties 'revision) |
| 32088 | (assoc-ref properties 'commit))) |
| 32089 | (source |
| 32090 | (origin |
| 32091 | (method git-fetch) |
| 32092 | (uri (git-reference |
| 32093 | (url "https://gitlab.com/flufl/flufl.bounce") |
| 32094 | (commit (assoc-ref properties 'commit)))) |
| 32095 | (file-name (git-file-name name version)) |
| 32096 | (sha256 |
| 32097 | (base32 "0i1a2jns0ahls23m0261v1wd429b37xrqdv5pxdlmpyd7if0r1mi")))) |
| 32098 | (build-system pyproject-build-system) |
| 32099 | (arguments |
| 32100 | (list |
| 32101 | #:phases |
| 32102 | #~(modify-phases %standard-phases |
| 32103 | (replace 'check |
| 32104 | (lambda* (#:key tests? inputs outputs #:allow-other-keys) |
| 32105 | (when tests? |
| 32106 | (with-directory-excursion |
| 32107 | (string-append (site-packages inputs outputs) "/flufl") |
| 32108 | (invoke "python" "-m" "nose2" "-v")))))))) |
| 32109 | (propagated-inputs |
| 32110 | (list python-atpublic python-zope-interface)) |
| 32111 | (native-inputs |
| 32112 | (list python-flufl-testing python-nose2 python-setuptools)) |
| 32113 | (home-page "https://fluflbounce.readthedocs.io/en/latest/") |
| 32114 | (synopsis "Email bounce detectors") |
| 32115 | (description "The @code{flufl.bounce} library provides a set of heuristics |
| 32116 | and an API for detecting the original bouncing email addresses from a bounce |
| 32117 | message. Many formats found in the wild are supported, as are VERP and |
| 32118 | RFC 3464.") |
| 32119 | (license (list license:asl2.0 |
| 32120 | license:lgpl3)))) ; only for setup_headers.py |
| 32121 | |
| 32122 | (define-public python-flufl-i18n |
| 32123 | (package |
| 32124 | (name "python-flufl-i18n") |
| 32125 | (version "5.1.0") |
| 32126 | (source |
| 32127 | (origin |
| 32128 | (method url-fetch) |
| 32129 | (uri (pypi-uri "flufl_i18n" version)) |
| 32130 | (sha256 |
| 32131 | (base32 |
| 32132 | "0bm4kmi04gm164y5nmadmrg79y1l1cs9iwxcv9y7gq0dgyr20xms")))) |
| 32133 | (build-system pyproject-build-system) |
| 32134 | (arguments |
| 32135 | (list #:test-flags |
| 32136 | #~(list "--no-cov" "--ignore-glob=docs/*") |
| 32137 | #:phases |
| 32138 | #~(modify-phases %standard-phases |
| 32139 | ;; This phase add a symlink of dist-info dir for packages |
| 32140 | ;; expecting flufl.i18n rather than flufl_i18n (mailman). |
| 32141 | (add-after 'install 'add-custom-dist-info |
| 32142 | (lambda _ |
| 32143 | (for-each |
| 32144 | (lambda (dir) |
| 32145 | (with-directory-excursion (dirname dir) |
| 32146 | (let ((base (basename dir))) |
| 32147 | (symlink base |
| 32148 | (string-join (string-split base #\_) "."))))) |
| 32149 | (find-files #$output |
| 32150 | (lambda (file stat) |
| 32151 | (string-suffix? ".dist-info" file)) |
| 32152 | #:directories? #t))))))) |
| 32153 | (propagated-inputs |
| 32154 | (list python-atpublic)) |
| 32155 | (native-inputs |
| 32156 | (list python-hatchling python-pytest python-sybil)) |
| 32157 | (home-page "https://flufli18n.readthedocs.io") |
| 32158 | (synopsis "API for Python internationalization") |
| 32159 | (description |
| 32160 | "This package provides a high-level, convenient API for managing |
| 32161 | internationalization/translation contexts in Python applications. There is a |
| 32162 | simple API for single-context applications, such as command line scripts which |
| 32163 | only need to translate into one language during the entire course of their |
| 32164 | execution. There is a more flexible, but still convenient API for multi-context |
| 32165 | applications, such as servers, which may need to switch language contexts for |
| 32166 | different tasks.") |
| 32167 | (license license:asl2.0))) |
| 32168 | |
| 32169 | (define-public python-flufl-lock |
| 32170 | (package |
| 32171 | (name "python-flufl-lock") |
| 32172 | (version "8.1.0") |
| 32173 | (source |
| 32174 | (origin |
| 32175 | (method url-fetch) |
| 32176 | (uri (pypi-uri "flufl.lock" version)) |
| 32177 | (sha256 |
| 32178 | (base32 "1jz7vipjga4x803gfsb9mvnfb6q8my7ib000nsc3v9ljaq0050yq")))) |
| 32179 | (build-system pyproject-build-system) |
| 32180 | (arguments |
| 32181 | (list #:test-flags |
| 32182 | #~(list "--no-cov" "--ignore-glob=docs/*") |
| 32183 | #:phases |
| 32184 | #~(modify-phases %standard-phases |
| 32185 | ;; This phase add a symlink of dist-info dir for packages |
| 32186 | ;; expecting flufl.lock rather than flufl_lock (mailman). |
| 32187 | (add-after 'install 'add-custom-dist-info |
| 32188 | (lambda _ |
| 32189 | (for-each |
| 32190 | (lambda (dir) |
| 32191 | (with-directory-excursion (dirname dir) |
| 32192 | (let ((base (basename dir))) |
| 32193 | (symlink base |
| 32194 | (string-join (string-split base #\_) "."))))) |
| 32195 | (find-files #$output |
| 32196 | (lambda (file stat) |
| 32197 | (string-suffix? ".dist-info" file)) |
| 32198 | #:directories? #t))))))) |
| 32199 | (native-inputs |
| 32200 | (list python-hatchling python-pytest python-sybil)) |
| 32201 | (propagated-inputs |
| 32202 | (list python-atpublic python-psutil)) |
| 32203 | (home-page "https://flufllock.readthedocs.io") |
| 32204 | (synopsis "NFS-safe file locking with timeouts for POSIX systems") |
| 32205 | (description |
| 32206 | "The @dfn{flufl.lock} package provides NFS-safe file locking with |
| 32207 | timeouts for POSIX systems. It is similar to the @code{O_EXCL} option of the |
| 32208 | @code{open} system call but uses a lockfile. Lock objects support lock-breaking |
| 32209 | and have a maximum lifetime built-in.") |
| 32210 | (license (list license:asl2.0 |
| 32211 | license:lgpl3)))) ; only for setup_helpers.py |
| 32212 | |
| 32213 | (define-public python-flufl-testing |
| 32214 | (package |
| 32215 | (name "python-flufl-testing") |
| 32216 | (version "0.8") |
| 32217 | (source |
| 32218 | (origin |
| 32219 | (method git-fetch) |
| 32220 | (uri (git-reference |
| 32221 | (url "https://gitlab.com/warsaw/flufl.testing") |
| 32222 | (commit version))) |
| 32223 | (file-name (git-file-name name version)) |
| 32224 | (sha256 |
| 32225 | (base32 "0dl2dl4wdrqklkhqcdbwchpqrpm6lwic4qk961zi6b2f8agis35i")))) |
| 32226 | (build-system pyproject-build-system) |
| 32227 | (arguments (list #:tests? #f)) ;no tests |
| 32228 | (native-inputs (list python-setuptools)) |
| 32229 | (home-page "https://gitlab.com/warsaw/flufl.testing") |
| 32230 | (synopsis "Collection of test tool plugins") |
| 32231 | (description |
| 32232 | "This package contains a small collection of test tool plugins for |
| 32233 | @code{nose2} and @code{flake8}.") |
| 32234 | (license license:asl2.0))) |
| 32235 | |
| 32236 | (define-public python-devtools |
| 32237 | (package |
| 32238 | (name "python-devtools") |
| 32239 | (version "0.12.2") |
| 32240 | (source |
| 32241 | (origin |
| 32242 | (method git-fetch) |
| 32243 | (uri (git-reference |
| 32244 | (url "https://github.com/samuelcolvin/python-devtools") |
| 32245 | (commit (string-append "v" version)))) |
| 32246 | (file-name (git-file-name name version)) |
| 32247 | (sha256 |
| 32248 | (base32 "0snmx7f0s44rzzx8advzmgj5av9dlpz1kx05f7ysya8xrhv5nwfl")))) |
| 32249 | (build-system pyproject-build-system) |
| 32250 | (arguments |
| 32251 | (list |
| 32252 | #:test-flags |
| 32253 | ;; Disable some failing tests. |
| 32254 | ;; |
| 32255 | ;; test_print_subprocess seems to inherit wrong environment, fails with |
| 32256 | ;; E + ModuleNotFoundError: No module named 'executing' |
| 32257 | ;; Test runs fine from local clone. |
| 32258 | ;; |
| 32259 | ;; test_executing_failure fails with |
| 32260 | ;; E - [1, 2] (list) len=2 |
| 32261 | ;; E + [x, y]: [1, 2] (list) len=2 |
| 32262 | ;; unclear why, probably due to a dependency. |
| 32263 | '(list "-k" "not test_print_subprocess and not test_executing_failure" |
| 32264 | ;; test_insert_assert.py also seems to inherit a bad environment: |
| 32265 | ;; E fixture 'pytester_pretty' not found |
| 32266 | ;; Test runs fine from local clone. |
| 32267 | "--ignore=tests/test_insert_assert.py"))) |
| 32268 | (native-inputs |
| 32269 | (list python-hatchling python-pytest python-pytest-mock)) |
| 32270 | (propagated-inputs |
| 32271 | (list python-asttokens python-executing python-pygments)) |
| 32272 | (home-page "https://github.com/samuelcolvin/python-devtools") |
| 32273 | (synopsis "Debug command and development tools") |
| 32274 | (description |
| 32275 | "This package provides a debug print command and other development tools. |
| 32276 | It adds a simple and readable way to print stuff during development.") |
| 32277 | (license license:expat))) |
| 32278 | |
| 32279 | (define-public python-dateparser |
| 32280 | (package |
| 32281 | (name "python-dateparser") |
| 32282 | (version "1.2.2") |
| 32283 | (source |
| 32284 | (origin |
| 32285 | (method url-fetch) |
| 32286 | (uri (pypi-uri "dateparser" version)) |
| 32287 | (sha256 |
| 32288 | (base32 |
| 32289 | "1xzcqmvqg82cq4vx3cbgbdrgq4pgqlkk0mnfm0zc5kdqgkqicqwq")))) |
| 32290 | (build-system pyproject-build-system) |
| 32291 | (arguments |
| 32292 | (list |
| 32293 | ;; tests: 23811 passed, 18 skipped, 1 deselected, 1 warning |
| 32294 | #:test-flags |
| 32295 | #~(list (string-join '("--deselect=tests/test_search.py" |
| 32296 | "TestTranslateSearch" |
| 32297 | "test_search_dates_with_prepositions") |
| 32298 | "::")))) |
| 32299 | (propagated-inputs |
| 32300 | (list python-dateutil |
| 32301 | python-pytz |
| 32302 | python-regex |
| 32303 | python-tzlocal)) |
| 32304 | (native-inputs |
| 32305 | (list python-parameterized |
| 32306 | python-pytest |
| 32307 | python-setuptools |
| 32308 | tzdata-for-tests)) |
| 32309 | (home-page "https://github.com/scrapinghub/dateparser") |
| 32310 | (synopsis |
| 32311 | "Date parsing library designed to parse dates from HTML pages") |
| 32312 | (description |
| 32313 | "@code{python-dateparser} provides modules to easily parse localized |
| 32314 | dates in almost any string formats commonly found on web pages.") |
| 32315 | (license license:bsd-3))) |
| 32316 | |
| 32317 | (define-public python-dparse |
| 32318 | (package |
| 32319 | (name "python-dparse") |
| 32320 | (version "0.6.4") |
| 32321 | (source |
| 32322 | (origin |
| 32323 | (method url-fetch) |
| 32324 | (uri (pypi-uri "dparse" version)) |
| 32325 | (sha256 |
| 32326 | (base32 "06i069hij4i53hikrsv332h2ibwfchr42b68hii6rhzdwcwrrclh")))) |
| 32327 | (build-system pyproject-build-system) |
| 32328 | (native-inputs (list python-hatchling python-pytest)) |
| 32329 | (propagated-inputs (list python-packaging python-toml)) |
| 32330 | (home-page "https://github.com/pyupio/dparse") |
| 32331 | (synopsis "Parser for Python dependency files") |
| 32332 | (description "This package provides a parser for Python dependency files.") |
| 32333 | (license license:expat))) |
| 32334 | |
| 32335 | (define-public python-dpath |
| 32336 | (package |
| 32337 | (name "python-dpath") |
| 32338 | (version "2.2.0") |
| 32339 | (source |
| 32340 | (origin |
| 32341 | (method url-fetch) |
| 32342 | (uri (pypi-uri "dpath" version)) |
| 32343 | (sha256 |
| 32344 | (base32 |
| 32345 | "0gkavmc44f9cj3kch68343r2ajsbvbsjcmsmkqhkzsjmvhqfdxrl")))) |
| 32346 | (build-system pyproject-build-system) |
| 32347 | (native-inputs |
| 32348 | (list python-hypothesis python-nose2 python-setuptools python-wheel)) |
| 32349 | (home-page "https://github.com/akesterson/dpath-python") |
| 32350 | (synopsis "File-system-like pathing and searching for dictionaries") |
| 32351 | (description |
| 32352 | "@code{python-dpath} is a library for accessing and searching |
| 32353 | dictionaries via /slashed/paths ala xpath. |
| 32354 | |
| 32355 | Basically it lets you glob over a dictionary as if it were a file system. It |
| 32356 | allows you to specify globs (ala the bash eglob syntax, through some advanced |
| 32357 | fnmatch.fnmatch magic) to access dictionary elements, and provides some |
| 32358 | facility for filtering those results.") |
| 32359 | (license license:expat))) |
| 32360 | |
| 32361 | (define-public python-safety |
| 32362 | (package |
| 32363 | (name "python-safety") |
| 32364 | (version "3.8.1") |
| 32365 | (source |
| 32366 | (origin |
| 32367 | (method git-fetch) |
| 32368 | (uri (git-reference |
| 32369 | (url "https://github.com/pyupio/safety") |
| 32370 | (commit version))) |
| 32371 | (file-name (git-file-name name version)) |
| 32372 | (sha256 |
| 32373 | (base32 "00i0jgv89kwbp130ykrfp2754k06agqs9sflsjpafcrf3jx7r9n4")) |
| 32374 | (patches |
| 32375 | (list |
| 32376 | (origin |
| 32377 | (method url-fetch) |
| 32378 | (uri (string-append |
| 32379 | "https://github.com/pyupio/safety/commit/" |
| 32380 | "145a3956007a01e57a8e05d111633c2309ad3374.patch")) |
| 32381 | (sha256 |
| 32382 | (base32 |
| 32383 | "00bsqhbvvpiycdz01vvxkp02i10rn3h5xaffib20h8yxnvx2xjbj"))))))) |
| 32384 | (build-system pyproject-build-system) |
| 32385 | (arguments |
| 32386 | (list |
| 32387 | #:phases |
| 32388 | #~(modify-phases %standard-phases |
| 32389 | (add-after 'unpack 'disable-telemetry |
| 32390 | (lambda _ |
| 32391 | (substitute* (find-files "." "\\.py$") |
| 32392 | (("telemetry: bool = True") |
| 32393 | "telemetry: bool = False") |
| 32394 | (("telemetry=True") |
| 32395 | "telemetry=False")))) |
| 32396 | (add-before 'check 'set-home ; some tests run mkdir |
| 32397 | (lambda _ |
| 32398 | (setenv "HOME" "/tmp")))))) |
| 32399 | (native-inputs (list nss-certs-for-test python-hatchling python-pytest)) |
| 32400 | (propagated-inputs (list python-authlib |
| 32401 | python-certifi |
| 32402 | python-click |
| 32403 | python-dparse |
| 32404 | python-filelock |
| 32405 | python-httpx |
| 32406 | python-jinja2 |
| 32407 | python-marshmallow |
| 32408 | python-nltk |
| 32409 | python-packaging |
| 32410 | python-pydantic |
| 32411 | python-safety-schemas |
| 32412 | python-tenacity |
| 32413 | python-tomli |
| 32414 | python-tomlkit |
| 32415 | python-truststore |
| 32416 | ;; XXX: python-safety subclasses click.Context |
| 32417 | ;; in a way that assumes Typer still delegates |
| 32418 | ;; to the standalone python-click package. |
| 32419 | python-typer-without-click |
| 32420 | python-typing-extensions)) |
| 32421 | (home-page "https://github.com/pyupio/safety") |
| 32422 | (synopsis "Check installed dependencies for known vulnerabilities") |
| 32423 | (description |
| 32424 | "Safety checks installed dependencies for known vulnerabilities. |
| 32425 | By default it uses the open Python vulnerability database Safety DB.") |
| 32426 | (license license:expat))) |
| 32427 | |
| 32428 | (define-public python-pypandoc |
| 32429 | (package |
| 32430 | (name "python-pypandoc") |
| 32431 | (version "1.15") |
| 32432 | (source |
| 32433 | (origin |
| 32434 | (method git-fetch) |
| 32435 | (uri (git-reference |
| 32436 | (url "https://github.com/JessicaTegner/pypandoc") |
| 32437 | (commit (string-append "v" version)))) |
| 32438 | (file-name (git-file-name name version)) |
| 32439 | (sha256 |
| 32440 | (base32 "0jqr380xpg1n93dagxv7zfakhdravw0nc81rc4pnmjzkj360l5nr")))) |
| 32441 | (build-system pyproject-build-system) |
| 32442 | (arguments |
| 32443 | (list |
| 32444 | #:test-backend #~'unittest |
| 32445 | #:phases |
| 32446 | #~(modify-phases %standard-phases |
| 32447 | (add-before 'check 'disable-tests |
| 32448 | (lambda _ |
| 32449 | (substitute* "tests.py" |
| 32450 | ;; Disable test requiring network access |
| 32451 | (("test_basic_conversion_from_http_url") |
| 32452 | "skip_test_basic_conversion_from_http_url") |
| 32453 | ;; Disable tests with missing files |
| 32454 | (("test_basic_conversion_from_file_pattern") |
| 32455 | "skip_test_basic_conversion_from_file_pattern") |
| 32456 | (("test_conversion_with_data_files") |
| 32457 | "skip_test_conversion_with_data_files"))))))) |
| 32458 | ;; Ideally, we would supersede texlive-xpatch with texlive-regexpatch once |
| 32459 | ;; the missing etoolbox.sty file is added |
| 32460 | (native-inputs |
| 32461 | (list (texlive-local-tree |
| 32462 | (list texlive-etoolbox |
| 32463 | texlive-lm |
| 32464 | texlive-regexpatch |
| 32465 | texlive-xcolor)) |
| 32466 | python-poetry-core |
| 32467 | python-setuptools)) |
| 32468 | (inputs (list pandoc python-pandocfilters)) |
| 32469 | (propagated-inputs (list python-wheel)) |
| 32470 | (home-page "https://github.com/JessicaTegner/pypandoc") |
| 32471 | (synopsis "Python wrapper for pandoc") |
| 32472 | (description |
| 32473 | "pypandoc is a thin Python wrapper around pandoc and pandoc-citeproc.") |
| 32474 | (license license:expat))) |
| 32475 | |
| 32476 | (define-public python-rnc2rng |
| 32477 | (package |
| 32478 | (name "python-rnc2rng") |
| 32479 | (version "2.7.0") |
| 32480 | (source |
| 32481 | (origin |
| 32482 | (method git-fetch) |
| 32483 | (uri (git-reference |
| 32484 | (url "https://github.com/djc/rnc2rng") |
| 32485 | (commit version))) |
| 32486 | (file-name (git-file-name name version)) |
| 32487 | (sha256 |
| 32488 | (base32 "1wbd8936vs4rinjfmjd8dav6sdz6wrsc0jppqidzzcnzwfp146pf")))) |
| 32489 | (build-system pyproject-build-system) |
| 32490 | (arguments |
| 32491 | (list |
| 32492 | #:test-backend #~'custom |
| 32493 | #:test-flags #~(list "test.py"))) |
| 32494 | (native-inputs (list python-setuptools)) |
| 32495 | (propagated-inputs (list python-rply)) |
| 32496 | (home-page "https://github.com/djc/rnc2rng") |
| 32497 | (synopsis "Convert RELAX NG Compact to regular syntax") |
| 32498 | (description |
| 32499 | "This package provides the @command{rnc2rng} command-line tool as well as |
| 32500 | a Python library to convert RELAX NG schemata in Compact syntax (rnc) to |
| 32501 | equivalent schemata in the XML-based default RELAX NG syntax.") |
| 32502 | (license license:expat))) |
| 32503 | |
| 32504 | (define-public python-citeproc-py |
| 32505 | (package |
| 32506 | (name "python-citeproc-py") |
| 32507 | (version "0.9.0") |
| 32508 | (source |
| 32509 | (origin |
| 32510 | (method git-fetch) |
| 32511 | (uri (git-reference |
| 32512 | (url "https://github.com/brechtm/citeproc-py") |
| 32513 | (commit (string-append "v" version)) |
| 32514 | (recursive? #t))) ; TODO Unbundle. |
| 32515 | (file-name (git-file-name name version)) |
| 32516 | (sha256 |
| 32517 | (base32 "0wn1mfn7r4ffbmh529baqa4a798xwa34z0ij1jkmzal9i1na1i61")))) |
| 32518 | (build-system pyproject-build-system) |
| 32519 | (arguments |
| 32520 | (list |
| 32521 | #:phases |
| 32522 | #~(modify-phases %standard-phases |
| 32523 | (add-after 'unpack 'set-version |
| 32524 | (lambda _ |
| 32525 | (delete-file "citeproc/_version.py") |
| 32526 | (substitute* "citeproc/__init__.py" |
| 32527 | (("from \\. import version") |
| 32528 | "") |
| 32529 | (("__version__ =.*") |
| 32530 | (format #f "__version__ = ~s" #$version)))))))) |
| 32531 | (native-inputs (list python-pytest python-setuptools)) |
| 32532 | (propagated-inputs (list python-lxml python-rnc2rng)) |
| 32533 | (home-page "https://github.com/brechtm/citeproc-py") |
| 32534 | (synopsis "Citations and bibliography formatter") |
| 32535 | (description |
| 32536 | "Citeproc-py is a CSL processor for Python. It aims to implement the |
| 32537 | CSL 1.0.1 specification. citeproc-py can output styled citations and |
| 32538 | bibliographies in a number of different output formats. Currently supported |
| 32539 | are plain text, reStructuredText and HTML.") |
| 32540 | (license license:bsd-2))) |
| 32541 | |
| 32542 | (define-public python-inform |
| 32543 | (package |
| 32544 | (name "python-inform") |
| 32545 | (version "1.34") |
| 32546 | (source |
| 32547 | (origin |
| 32548 | (method git-fetch) ; no tests in PyPI release |
| 32549 | (uri (git-reference |
| 32550 | (url "https://github.com/kenkundert/inform") |
| 32551 | (commit (string-append "v" version)))) |
| 32552 | (file-name (git-file-name name version)) |
| 32553 | (sha256 |
| 32554 | (base32 "19ck1x8jplgq1lsy8cdv6hsygdbx310k92w4mkzl40bh4h49m1mk")))) |
| 32555 | (build-system pyproject-build-system) |
| 32556 | (arguments |
| 32557 | (list |
| 32558 | #:test-flags #~(list "-k" (string-append |
| 32559 | ;; Test below needs the num2words package |
| 32560 | "not test_plural_words" |
| 32561 | ;; These last two failed with AssertionError |
| 32562 | " and not test_inform" |
| 32563 | " and not test_manual")))) |
| 32564 | (native-inputs |
| 32565 | (list python-flit-core python-pytest)) |
| 32566 | (propagated-inputs |
| 32567 | (list python-arrow)) |
| 32568 | (home-page "https://inform.readthedocs.io") |
| 32569 | (synopsis "Print & logging utilities for communicating with user") |
| 32570 | (description |
| 32571 | "Inform is designed to display messages from programs that are typically run from |
| 32572 | a console. It provides a collection of ‘print’ functions that allow you to simply and |
| 32573 | cleanly print different types of messages.") |
| 32574 | (license license:gpl3+))) |
| 32575 | |
| 32576 | (define-public python-nestedtext |
| 32577 | (package |
| 32578 | (name "python-nestedtext") |
| 32579 | (version "3.7") |
| 32580 | (source |
| 32581 | (origin |
| 32582 | (method git-fetch) ; no tests in PyPI release |
| 32583 | (uri (git-reference |
| 32584 | (url "https://github.com/KenKundert/nestedtext") |
| 32585 | (commit (string-append "v" version)))) |
| 32586 | (file-name (git-file-name name version)) |
| 32587 | (sha256 |
| 32588 | (base32 "0yqarfv6jzl41i44mjn0g4c87g47j819py6gbsfi3fdk96c95nll")))) |
| 32589 | (build-system pyproject-build-system) |
| 32590 | (arguments |
| 32591 | (list |
| 32592 | ;; XXX: Tests below need some not yet packaged Python libraries. |
| 32593 | #:test-flags #~(list "--ignore" "examples/" |
| 32594 | "--ignore" "tests/test_nestedtext.py" |
| 32595 | "-k" (string-append |
| 32596 | "not techniques.rst" |
| 32597 | " and not nestedtext.nestedtext.dumps")))) |
| 32598 | (native-inputs (list python-flit-core python-pytest)) |
| 32599 | (propagated-inputs |
| 32600 | (list python-inform)) |
| 32601 | (home-page "https://nestedtext.org") |
| 32602 | (synopsis "Human readable and writable data interchange format") |
| 32603 | (description |
| 32604 | "NestedText is a file format for holding data that is to be entered, edited, or |
| 32605 | viewed by people. It allows data to be organized into a nested collection of |
| 32606 | dictionaries, lists, and strings. In this way it is similar to JSON and YAML, but |
| 32607 | without the complexity and risk of YAML and without the syntactic clutter of JSON. |
| 32608 | NestedText is both simple and natural. Only a small number of concepts and rules must |
| 32609 | be kept in mind when creating it. It is easily created, modified, or viewed with |
| 32610 | a text editor and easily understood and used by both programmers and non-programmers.") |
| 32611 | (license license:expat))) ; MIT license |
| 32612 | |
| 32613 | (define-public python-nest-asyncio |
| 32614 | (package |
| 32615 | (name "python-nest-asyncio") |
| 32616 | (version "1.6.0") |
| 32617 | (source |
| 32618 | (origin |
| 32619 | (method url-fetch) |
| 32620 | (uri (pypi-uri "nest_asyncio" version)) |
| 32621 | (sha256 |
| 32622 | (base32 |
| 32623 | "1zjmxk7rgadgiking9jksncca0hywgs52s34dkymm8dc95a2s5vg")))) |
| 32624 | (build-system pyproject-build-system) |
| 32625 | (native-inputs |
| 32626 | (list python-pytest python-setuptools)) |
| 32627 | (home-page "https://github.com/erdewit/nest_asyncio") |
| 32628 | (synopsis "Patch asyncio to allow nested event loops") |
| 32629 | (description |
| 32630 | "By design @code{asyncio} does not allow its event loop to be nested. |
| 32631 | This presents a practical problem: when in an environment where the event loop |
| 32632 | is already running it's impossible to run tasks and wait for the result. This |
| 32633 | module patches @code{asyncio} to allow nested use of @code{asyncio.run} and |
| 32634 | @code{loop.run_until_complete}.") |
| 32635 | (license license:bsd-3))) |
| 32636 | |
| 32637 | (define-public python-simpervisor |
| 32638 | (package |
| 32639 | (name "python-simpervisor") |
| 32640 | (version "1.0.0") |
| 32641 | (source |
| 32642 | (origin |
| 32643 | ;; Tests not included in release. |
| 32644 | (method git-fetch) |
| 32645 | (uri (git-reference |
| 32646 | (url "https://github.com/yuvipanda/simpervisor") |
| 32647 | (commit (string-append "v" version)))) |
| 32648 | (file-name (git-file-name name version)) |
| 32649 | (sha256 |
| 32650 | (base32 "0drvqxbr6fpydb4d7z5dhn97d578gf39sd8cawyl6ksf1f4y8yzg")))) |
| 32651 | (build-system pyproject-build-system) |
| 32652 | (arguments |
| 32653 | ;; See <https://github.com/jupyterhub/simpervisor/issues/57> |
| 32654 | (list #:test-flags #~(list "--deselect=tests/test_ready.py::test_ready"))) |
| 32655 | (native-inputs |
| 32656 | (list python-aiohttp |
| 32657 | python-hatchling |
| 32658 | python-psutil |
| 32659 | python-pytest |
| 32660 | python-pytest-asyncio)) |
| 32661 | (home-page "https://github.com/yuvipanda/simpervisor") |
| 32662 | (synopsis "Simple async process supervisor") |
| 32663 | (description |
| 32664 | "This package provides a simple async process supervisor in Python.") |
| 32665 | (license license:bsd-3))) |
| 32666 | |
| 32667 | (define-public python-parallel |
| 32668 | (package |
| 32669 | (name "python-parallel") |
| 32670 | (version "1.6.4.4") |
| 32671 | (source |
| 32672 | (origin |
| 32673 | (method url-fetch) |
| 32674 | (uri (string-append "https://www.parallelpython.com/downloads/pp/pp-" |
| 32675 | version ".zip")) |
| 32676 | (sha256 |
| 32677 | (base32 "1mzk4yabxj6r149fswhis18hd8dnag5sj8i4wb06450zq3pi8dh7")))) |
| 32678 | (build-system pyproject-build-system) |
| 32679 | (arguments (list #:tests? #f)) ;No test suite. |
| 32680 | (native-inputs (list python-setuptools unzip)) |
| 32681 | (propagated-inputs (list python-six)) |
| 32682 | (home-page "https://www.parallelpython.com") |
| 32683 | (synopsis "Parallel and distributed programming for Python") |
| 32684 | (description |
| 32685 | "Parallel Python module (PP) provides an easy and efficient way to create |
| 32686 | parallel-enabled applications for SMP computers and clusters. PP module |
| 32687 | features cross-platform portability and dynamic load balancing. Thus |
| 32688 | applications written with PP will parallelize efficiently even on |
| 32689 | heterogeneous and multi-platform clusters (including clusters running other |
| 32690 | applications with variable CPU loads).") |
| 32691 | (license license:bsd-3))) |
| 32692 | |
| 32693 | (define-public python-param |
| 32694 | (package |
| 32695 | (name "python-param") |
| 32696 | (version "2.3.3") |
| 32697 | (source |
| 32698 | (origin |
| 32699 | (method git-fetch) |
| 32700 | (uri (git-reference |
| 32701 | (url "https://github.com/holoviz/param") |
| 32702 | (commit (string-append "v" version)))) |
| 32703 | (file-name (git-file-name name version)) |
| 32704 | (sha256 |
| 32705 | (base32 "0cs550plb10ghhn0w5bdnq0i0bkh12996kv3lfibsbzy4dcc7qc7")))) |
| 32706 | (build-system pyproject-build-system) |
| 32707 | ;; tests: 1448 passed, 5 skipped, 2 xfailed |
| 32708 | (native-inputs |
| 32709 | ;; Project does not require any dependencies, all of the listed |
| 32710 | ;; native-inputs are for build/test only. |
| 32711 | (list python-cloudpickle |
| 32712 | python-hatch-vcs |
| 32713 | python-hatchling |
| 32714 | python-ipython-minimal |
| 32715 | python-jsonschema |
| 32716 | python-nbval |
| 32717 | python-nest-asyncio |
| 32718 | python-numpy |
| 32719 | python-odfpy |
| 32720 | python-openpyxl |
| 32721 | python-pandas |
| 32722 | python-pyarrow |
| 32723 | python-pytest |
| 32724 | python-pytest-asyncio |
| 32725 | python-tables |
| 32726 | python-xlrd)) |
| 32727 | (home-page "https://param.holoviz.org/") |
| 32728 | (synopsis |
| 32729 | "Make your Python code clearer and more reliable by declaring Parameters") |
| 32730 | (description |
| 32731 | "Param is a library for handling all the user-modifiable parameters, |
| 32732 | arguments, and attributes that control your code. It provides automatic, |
| 32733 | robust error-checking while dramatically reducing boilerplate code, letting |
| 32734 | you focus on what you want your code to do rather than on checking for all the |
| 32735 | possible ways users could supply inappropriate values to a function or |
| 32736 | class.") |
| 32737 | (license license:bsd-3))) |
| 32738 | |
| 32739 | (define-public python-djitellopy |
| 32740 | (package |
| 32741 | (name "python-djitellopy") |
| 32742 | (version "2.5.0") |
| 32743 | (source |
| 32744 | (origin |
| 32745 | (method url-fetch) |
| 32746 | (uri (pypi-uri "djitellopy" version)) |
| 32747 | (sha256 |
| 32748 | (base32 "1kc0syb4hpn7fay0rxpazmczag6jw3pncrrc6v762jj0afiwkrps")))) |
| 32749 | (build-system pyproject-build-system) |
| 32750 | (arguments |
| 32751 | (list |
| 32752 | #:tests? #f ;no test suite |
| 32753 | #:phases |
| 32754 | #~(modify-phases %standard-phases |
| 32755 | ;; OpenCV does not ship metadata files for its Python library, which |
| 32756 | ;; makes it invisible to the sanity_check script (see: |
| 32757 | ;; https://github.com/opencv/opencv/issues/24810). |
| 32758 | (delete 'sanity-check)))) |
| 32759 | (propagated-inputs |
| 32760 | (list opencv ;for opencv-python |
| 32761 | python-av |
| 32762 | python-numpy |
| 32763 | python-pillow)) |
| 32764 | (native-inputs (list python-setuptools python-wheel)) |
| 32765 | (home-page "https://github.com/damiafuentes/DJITelloPy") |
| 32766 | (synopsis |
| 32767 | "DJI Tello drone video streaming, swarms and state packets library") |
| 32768 | (description |
| 32769 | "DJI Tello drone Python interface using the official Tello SDK and Tello |
| 32770 | EDU SDK. This library has the following features: |
| 32771 | @itemize |
| 32772 | @item Implementation of all tello commands |
| 32773 | @item Retrieve a video stream easily |
| 32774 | @item Receive and parse state packets |
| 32775 | @item Control a swarm of drones. |
| 32776 | @end itemize") |
| 32777 | (license license:expat))) |
| 32778 | |
| 32779 | (define-public python-djvulibre |
| 32780 | ;; The original git repository of python-djvulibre is hosted at |
| 32781 | ;; <https://jwilk.net/software/python-djvulibre>. However, that repository |
| 32782 | ;; has been archived by its owner in 2022. The most active fork is |
| 32783 | ;; <https://github.com/FriedrichFroebel/python-djvulibre>, and that is the |
| 32784 | ;; version packaged here (its "python3" branch, the default). |
| 32785 | ;; |
| 32786 | ;; However, the python-djvulibre PyPI project still refers to the old |
| 32787 | ;; repository. The new repository is published as djvulibre-python on PyPI; |
| 32788 | ;; that is, with the name in reversed order.The original package name is |
| 32789 | ;; used in Guix because it best adheres to the Guix naming scheme. |
| 32790 | (package |
| 32791 | (name "python-djvulibre") |
| 32792 | (version "0.9.3") |
| 32793 | (source |
| 32794 | (origin |
| 32795 | (method git-fetch) |
| 32796 | (uri (git-reference |
| 32797 | (url "https://github.com/FriedrichFroebel/python-djvulibre") |
| 32798 | (commit version))) |
| 32799 | (file-name (git-file-name name version)) |
| 32800 | (sha256 |
| 32801 | (base32 "0cwda210dgkqyjkwha2if80wfmv6w8baigp8kdcwhmbisfgd3l4y")))) |
| 32802 | (build-system pyproject-build-system) |
| 32803 | (arguments |
| 32804 | (list |
| 32805 | #:phases |
| 32806 | #~(modify-phases %standard-phases |
| 32807 | (replace 'check |
| 32808 | (lambda* (#:key tests? #:allow-other-keys) |
| 32809 | (when tests? |
| 32810 | ;; The tests get confused by the djvu directory. |
| 32811 | (delete-file-recursively "djvu") |
| 32812 | ;; Tests can't find tools.py otherwise. |
| 32813 | (with-directory-excursion "tests" |
| 32814 | (invoke "python" "-m" "pytest")))))))) |
| 32815 | (native-inputs |
| 32816 | (list ghostscript |
| 32817 | pkg-config |
| 32818 | python-cython |
| 32819 | python-pytest |
| 32820 | python-setuptools)) |
| 32821 | (inputs |
| 32822 | (list djvulibre)) |
| 32823 | (synopsis "Python bindings for DjVuLibre") |
| 32824 | (description "This is a set of Python bindings for the DjVuLibre library.") |
| 32825 | (home-page "https://github.com/FriedrichFroebel/python-djvulibre") |
| 32826 | (license license:gpl2))) |
| 32827 | |
| 32828 | (define-public python-gamera |
| 32829 | (package |
| 32830 | (name "python-gamera") |
| 32831 | (version "4.1.0") |
| 32832 | (source |
| 32833 | (origin |
| 32834 | (method git-fetch) |
| 32835 | (uri (git-reference |
| 32836 | (url "https://github.com/hsnr-gamera/gamera-4") |
| 32837 | (commit (string-append "v" version)))) |
| 32838 | (file-name (git-file-name name version)) |
| 32839 | (sha256 |
| 32840 | (base32 "0l3w3wvi1ina6r3adc4wikz47wai8cjci0i5k8dxqv8p629dihrn")))) |
| 32841 | (build-system pyproject-build-system) |
| 32842 | (arguments |
| 32843 | (list |
| 32844 | #:phases |
| 32845 | #~(modify-phases %standard-phases |
| 32846 | (add-after 'unpack 'fix-build |
| 32847 | (lambda _ |
| 32848 | ;; The script to make daily build artifacts fails to compile, |
| 32849 | ;; but users don't need that, so ignore it. |
| 32850 | (delete-file "misc/daily_build.py") |
| 32851 | ;; Prepare tests |
| 32852 | (mkdir-p "tmp") |
| 32853 | (setenv "HOME" (string-append (getcwd) "/tmp"))))))) |
| 32854 | (native-inputs (list python-docutils python-pytest python-setuptools)) |
| 32855 | (inputs (list libpng libtiff zlib)) |
| 32856 | (synopsis "Framework for building document analysis applications") |
| 32857 | (description |
| 32858 | "Gamera is a toolkit for building document image recognition systems.") |
| 32859 | (home-page "https://gamera.informatik.hsnr.de/") |
| 32860 | (license license:gpl2+))) |
| 32861 | |
| 32862 | (define-public python-aiofiles |
| 32863 | (package |
| 32864 | (name "python-aiofiles") |
| 32865 | (version "24.1.0") |
| 32866 | (source |
| 32867 | (origin |
| 32868 | (method url-fetch) |
| 32869 | (uri (pypi-uri "aiofiles" version)) |
| 32870 | (sha256 |
| 32871 | (base32 "0v0namryb6acj9bkic5rcgbnb36njj601ws85q60z0d3wp4pb812")))) |
| 32872 | (build-system pyproject-build-system) |
| 32873 | (native-inputs |
| 32874 | (list python-hatch-vcs |
| 32875 | python-hatchling |
| 32876 | python-pytest |
| 32877 | python-pytest-asyncio)) |
| 32878 | (home-page "https://github.com/Tinche/aiofiles") |
| 32879 | (synopsis "File support for @code{asyncio}") |
| 32880 | (description |
| 32881 | "@code{python-aiofiles} is a library for handling local disk files in |
| 32882 | asyncio applications.") |
| 32883 | (license license:asl2.0))) |
| 32884 | |
| 32885 | (define-public python-pyre-extensions |
| 32886 | (package |
| 32887 | (name "python-pyre-extensions") |
| 32888 | (version "0.0.32") |
| 32889 | (source |
| 32890 | (origin |
| 32891 | (method url-fetch) |
| 32892 | (uri (pypi-uri "pyre_extensions" version)) |
| 32893 | (sha256 |
| 32894 | (base32 |
| 32895 | "0mayv07djjnysznhjnchix3alkz4lxycb20azpaw8mpa2igp35jk")))) |
| 32896 | (build-system pyproject-build-system) |
| 32897 | (native-inputs (list python-pytest python-setuptools python-wheel)) |
| 32898 | (propagated-inputs |
| 32899 | (list python-typing-extensions python-typing-inspect)) |
| 32900 | (home-page "https://pyre-check.org") |
| 32901 | (synopsis |
| 32902 | "Type system extensions for use with @code{python-pyre}") |
| 32903 | (description |
| 32904 | "@code{python-pyre-extensions} defines extensions to the standard |
| 32905 | @code{typing} module that are supported by the Pyre typechecker.") |
| 32906 | (license license:expat))) |
| 32907 | |
| 32908 | (define-public python-pywatchman |
| 32909 | (package |
| 32910 | (name "python-pywatchman") |
| 32911 | (version "3.0.0") |
| 32912 | (source |
| 32913 | (origin |
| 32914 | (method url-fetch) |
| 32915 | (uri (pypi-uri "pywatchman" version)) |
| 32916 | (sha256 |
| 32917 | (base32 "07lix9z2ib7g4h648wsbp930x5i03akis12mih8p4n0s74bjmlzg")))) |
| 32918 | (build-system pyproject-build-system) |
| 32919 | (arguments |
| 32920 | (list |
| 32921 | #:test-backend #~'custom |
| 32922 | #:test-flags #~(list "tests/tests.py"))) |
| 32923 | (native-inputs (list python-setuptools)) |
| 32924 | (home-page "https://facebook.github.io/watchman/") |
| 32925 | (synopsis "Watchman client for python") |
| 32926 | (description |
| 32927 | "@code{python-pywatchman} is a library to connect and query Watchman to |
| 32928 | discover file changes.") |
| 32929 | (license license:bsd-3))) |
| 32930 | |
| 32931 | (define-public python-roundrobin |
| 32932 | (package |
| 32933 | (name "python-roundrobin") |
| 32934 | (version "0.0.4") |
| 32935 | (source |
| 32936 | (origin |
| 32937 | (method git-fetch) |
| 32938 | (uri (git-reference |
| 32939 | (url "https://github.com/linnik/roundrobin") |
| 32940 | (commit version))) |
| 32941 | (file-name (git-file-name name version)) |
| 32942 | (sha256 |
| 32943 | (base32 "0hdgwavrfj23c61142mnlxz5sd9ayp6svbgj2g4wdpiqy7h49rvr")))) |
| 32944 | (build-system pyproject-build-system) |
| 32945 | (arguments |
| 32946 | (list #:test-backend #~'unittest)) |
| 32947 | (native-inputs (list python-setuptools)) |
| 32948 | (home-page "https://github.com/linnik/roundrobin") |
| 32949 | (synopsis "Collection of roundrobin utilities") |
| 32950 | (description |
| 32951 | "This package provides a collection of utilities for round-robin |
| 32952 | distribution in Python.") |
| 32953 | (license license:expat))) |
| 32954 | |
| 32955 | (define-public python-helpdev |
| 32956 | (package |
| 32957 | (name "python-helpdev") |
| 32958 | (version "0.7.1") |
| 32959 | (source |
| 32960 | (origin |
| 32961 | (method git-fetch) |
| 32962 | (uri (git-reference |
| 32963 | (url "https://gitlab.com/dpizetta/helpdev") |
| 32964 | (commit (string-append "v" version)))) |
| 32965 | (file-name (git-file-name name version)) |
| 32966 | (sha256 |
| 32967 | (base32 "0mzf0sdgxzn3x56qxgi6kbsx3cydl8h0bdpyn4xyfkw6pyi9g2bd")))) |
| 32968 | (build-system pyproject-build-system) |
| 32969 | (native-inputs (list python-pip python-pytest python-setuptools)) |
| 32970 | (home-page "https://gitlab.com/dpizetta/helpdev") |
| 32971 | (synopsis "Extract information about the Python environment easily") |
| 32972 | (description |
| 32973 | "Helpdev is a library to easily extract information about the Python |
| 32974 | environment.") |
| 32975 | (license license:expat))) |
| 32976 | |
| 32977 | (define-public python-loguru |
| 32978 | (package |
| 32979 | (name "python-loguru") |
| 32980 | ;; 0.7.3 (2024-12-06); latest changes provide test clean up for MyPy, |
| 32981 | ;; covert to git tag when released. |
| 32982 | (properties '((commit . "75b920160d0655c1631a2739b4470fc12317a155") |
| 32983 | (revision . "0"))) |
| 32984 | (version (git-version "0.7.3" |
| 32985 | (assoc-ref properties 'revision) |
| 32986 | (assoc-ref properties 'commit))) |
| 32987 | (source |
| 32988 | (origin |
| 32989 | (method git-fetch) |
| 32990 | (uri (git-reference |
| 32991 | (url "https://github.com/Delgan/loguru") |
| 32992 | (commit (assoc-ref properties 'commit)))) |
| 32993 | (file-name (git-file-name name version)) |
| 32994 | (sha256 |
| 32995 | (base32 "1ypx3dgdfi6fpr7mmg8bqg7bgbwaqrm13l9d50xmd8j2b7zb13bi")))) |
| 32996 | (build-system pyproject-build-system) |
| 32997 | ;; tests: x86_64-linux 1598 passed, 28 skipped |
| 32998 | ;; i686-linux 1562 passed, 28 skipped, 36 deselected |
| 32999 | (arguments |
| 33000 | (list |
| 33001 | #:test-flags |
| 33002 | #~(list #$@(if (target-64bit?) |
| 33003 | '() |
| 33004 | ;; OverflowError |
| 33005 | '("--deselect=tests/test_datetime.py::test_formatting" |
| 33006 | (string-append "--deselect=tests/test_datetime.py" |
| 33007 | "::test_value_of_gmtoff_is_invalid")))))) |
| 33008 | (native-inputs |
| 33009 | (list python-flit-core |
| 33010 | python-freezegun |
| 33011 | python-mypy-for-tests |
| 33012 | python-pytest |
| 33013 | python-setuptools |
| 33014 | tzdata-for-tests)) |
| 33015 | (propagated-inputs |
| 33016 | (list python-colorama)) |
| 33017 | (home-page "https://github.com/Delgan/loguru") |
| 33018 | (synopsis "Python logging made (stupidly) simple") |
| 33019 | (description "Python logging made (stupidly) simple.") |
| 33020 | (license license:expat))) |
| 33021 | |
| 33022 | (define-public python-qtsass |
| 33023 | (package |
| 33024 | (name "python-qtsass") |
| 33025 | (version "0.4.0") |
| 33026 | (source |
| 33027 | (origin |
| 33028 | ;; There are no tests in the PyPI tarball. |
| 33029 | (method git-fetch) |
| 33030 | (uri (git-reference |
| 33031 | (url "https://github.com/spyder-ide/qtsass/") |
| 33032 | (commit (string-append "v" version)))) |
| 33033 | (file-name (git-file-name name version)) |
| 33034 | (sha256 |
| 33035 | (base32 "1skdihfby2f41zxgwa5zv44vdxjrw301rh88rjmzj4xbdlix6cig")))) |
| 33036 | (build-system pyproject-build-system) |
| 33037 | (native-inputs |
| 33038 | (list python-flaky python-pytest python-setuptools python-wheel)) |
| 33039 | (propagated-inputs |
| 33040 | (list python-libsass)) |
| 33041 | (home-page "https://github.com/spyder-ide/qtsass") |
| 33042 | (synopsis "Compile SCSS files to valid Qt stylesheets") |
| 33043 | (description |
| 33044 | "Besides being used in web development, CSS is also the way to stylize |
| 33045 | Qt-based desktop applications. However, Qt's CSS has a few variations that |
| 33046 | prevent the direct use of SASS compiler. |
| 33047 | |
| 33048 | The purpose of this tool is to fill the gap between SASS and Qt-CSS by |
| 33049 | handling those variations.") |
| 33050 | (license license:expat))) |
| 33051 | |
| 33052 | (define-public python-qdarkstyle |
| 33053 | (package |
| 33054 | (name "python-qdarkstyle") |
| 33055 | (version "3.2.3") |
| 33056 | (source |
| 33057 | (origin |
| 33058 | (method url-fetch) |
| 33059 | (uri (pypi-uri "QDarkStyle" version)) |
| 33060 | (sha256 |
| 33061 | (base32 |
| 33062 | "1bpi0asa7sd5ch6x6b60n5yias04nsx6kcwji40228g9lrs7y2qc")))) |
| 33063 | (build-system pyproject-build-system) |
| 33064 | (native-inputs (list python-pytest |
| 33065 | python-qtsass |
| 33066 | python-setuptools |
| 33067 | python-watchdog |
| 33068 | python-wheel)) |
| 33069 | (propagated-inputs |
| 33070 | (list python-qtpy python-pyqt-6)) |
| 33071 | (home-page "https://github.com/ColinDuquesnoy/QDarkStyleSheet") |
| 33072 | (synopsis |
| 33073 | "Complete dark stylesheet for Python and Qt applications") |
| 33074 | (description "QDarkStyle is the most complete dark stylesheet for Python and |
| 33075 | Qt applications.") |
| 33076 | (license license:expat))) |
| 33077 | |
| 33078 | (define-public python-pystray |
| 33079 | (package |
| 33080 | (name "python-pystray") |
| 33081 | (version "0.19.5") |
| 33082 | (source |
| 33083 | (origin |
| 33084 | (method git-fetch) |
| 33085 | (uri (git-reference |
| 33086 | (url "https://github.com/moses-palmer/pystray") |
| 33087 | (commit "1907f8681d6d421517c63d94f425f9cdd74d0034"))) |
| 33088 | (file-name (git-file-name name version)) |
| 33089 | (sha256 |
| 33090 | (base32 "1vj6c8s7rbc7xc4bi5brx5629ls1ri9prcw9290v85hagilmp609")))) |
| 33091 | (build-system pyproject-build-system) |
| 33092 | (arguments |
| 33093 | (list |
| 33094 | ;; The test suite requires user interaction, there are no automated |
| 33095 | ;; tests. |
| 33096 | #:tests? #false |
| 33097 | #:phases #~(modify-phases %standard-phases |
| 33098 | (add-before 'sanity-check 'use-dummy-backend |
| 33099 | (lambda _ |
| 33100 | ;; Without setting this, pystray tries to connect to |
| 33101 | ;; X11 on import. |
| 33102 | (setenv "PYSTRAY_BACKEND" "dummy")))))) |
| 33103 | (native-inputs (list python-sphinx python-setuptools)) |
| 33104 | (propagated-inputs (list python-pillow python-six python-xlib)) |
| 33105 | (home-page "https://github.com/moses-palmer/pystray") |
| 33106 | (synopsis "Create a system tray icon") |
| 33107 | (description "This library allows you to create a system tray icon. |
| 33108 | It makes it possible to specify an icon, a title and a callback for when |
| 33109 | the icon is activated. The icon and title can be changed after the icon |
| 33110 | has been created, and the visibility of the icon can be toggled.") |
| 33111 | (license license:lgpl3+))) |
| 33112 | |
| 33113 | (define-public python-bitstring |
| 33114 | (package |
| 33115 | (name "python-bitstring") |
| 33116 | (version "4.3.1") |
| 33117 | (source |
| 33118 | (origin |
| 33119 | (method url-fetch) |
| 33120 | (uri (pypi-uri "bitstring" version)) |
| 33121 | (sha256 |
| 33122 | (base32 "0nm9l77sgyqai8ggnm6j9yvc473g0l8icaj11x66s8ap72fw12x0")))) |
| 33123 | (build-system pyproject-build-system) |
| 33124 | (arguments |
| 33125 | (list |
| 33126 | #:test-flags #~(list "--ignore=tests/test_benchmarks.py" |
| 33127 | "--ignore=tests/test_fp8.py" |
| 33128 | "--ignore=tests/test_mxfp.py"))) |
| 33129 | (native-inputs |
| 33130 | (list python-gfloat python-pytest python-setuptools python-wheel)) |
| 33131 | (propagated-inputs |
| 33132 | (list python-bitarray)) |
| 33133 | (home-page "https://github.com/scott-griffiths/bitstring") |
| 33134 | (synopsis |
| 33135 | "Simple construction, analysis and modification of binary data") |
| 33136 | (description |
| 33137 | "Bitstring is a library for simple construction, analysis and modification |
| 33138 | of binary data.") |
| 33139 | (license license:expat))) |
| 33140 | |
| 33141 | (define-public python-confuse |
| 33142 | (package |
| 33143 | (name "python-confuse") |
| 33144 | (version "2.3.0") |
| 33145 | (source |
| 33146 | (origin |
| 33147 | (method url-fetch) |
| 33148 | (uri (pypi-uri "confuse" version)) |
| 33149 | (sha256 |
| 33150 | (base32 |
| 33151 | "03ljar8a1qv8dacamjqpsxgj8r6p1w4plh6rdpirmv4dnga3n4k6")))) |
| 33152 | (build-system pyproject-build-system) |
| 33153 | (native-inputs (list python-poetry-core python-pytest)) |
| 33154 | (propagated-inputs |
| 33155 | (list python-pyyaml |
| 33156 | ;; Required on Python versions before 3.13. |
| 33157 | python-typing-extensions)) |
| 33158 | (home-page "https://github.com/beetbox/confuse") |
| 33159 | (synopsis "Painless YAML configuration") |
| 33160 | (description "Confuse is a configuration library for Python that uses |
| 33161 | YAML. It takes care of defaults, overrides, type checking, command-line |
| 33162 | integration, human-readable errors, and standard OS-specific locations.") |
| 33163 | (license license:expat))) |
| 33164 | |
| 33165 | (define-public python-referencing |
| 33166 | (package |
| 33167 | (name "python-referencing") |
| 33168 | (version "0.37.0") |
| 33169 | (source |
| 33170 | (origin |
| 33171 | (method git-fetch) |
| 33172 | (uri (git-reference |
| 33173 | (url "https://github.com/python-jsonschema/referencing") |
| 33174 | (commit (string-append "v" version)))) |
| 33175 | (file-name (git-file-name name version)) |
| 33176 | (sha256 |
| 33177 | (base32 "1h9mlzpgqy3grby4f57qxhlmxy25qvz84g9w5r4g1d8g5qsvvv3j")))) |
| 33178 | (build-system pyproject-build-system) |
| 33179 | (arguments |
| 33180 | (list |
| 33181 | #:phases |
| 33182 | #~(modify-phases %standard-phases |
| 33183 | (add-before 'check 'pre-check |
| 33184 | (lambda _ |
| 33185 | (setenv "REFERENCING_SUITE" |
| 33186 | (string-append #$(this-package-native-input |
| 33187 | "specification-referencing-suite") |
| 33188 | "/share"))))))) |
| 33189 | (native-inputs |
| 33190 | (list python-hatchling |
| 33191 | python-hatch-vcs |
| 33192 | python-pytest |
| 33193 | specification-referencing-suite)) |
| 33194 | (propagated-inputs |
| 33195 | (list python-attrs |
| 33196 | python-rpds-py |
| 33197 | python-typing-extensions)) ;Python version < 3.13 |
| 33198 | (home-page "https://github.com/python-jsonschema/referencing") |
| 33199 | (synopsis "JSON Referencing + Python") |
| 33200 | (description "This package provides an implementation-agnostic |
| 33201 | implementation of JSON reference resolution.") |
| 33202 | (license license:expat))) |
| 33203 | |
| 33204 | (define-public python-referencing-bootstrap |
| 33205 | (package |
| 33206 | (inherit python-referencing) |
| 33207 | (name "python-referencing-bootstrap") |
| 33208 | (arguments |
| 33209 | (list |
| 33210 | #:tests? #false |
| 33211 | #:phases |
| 33212 | '(modify-phases %standard-phases |
| 33213 | (add-after 'unpack 'patch-pyproject |
| 33214 | (lambda _ |
| 33215 | ;; The build system does not like this. |
| 33216 | (substitute* "pyproject.toml" |
| 33217 | ((" \"Topic :: File Formats.*") ""))))))) |
| 33218 | (native-inputs (list python-hatchling python-hatch-vcs)))) |
| 33219 | |
| 33220 | (define-public python-reflink |
| 33221 | (package |
| 33222 | (name "python-reflink") |
| 33223 | (version "0.2.2") |
| 33224 | (source |
| 33225 | (origin |
| 33226 | (method git-fetch) |
| 33227 | (uri (git-reference |
| 33228 | (url "https://gitlab.com/rubdos/pyreflink") |
| 33229 | (commit version))) |
| 33230 | (file-name (git-file-name name version)) |
| 33231 | (sha256 |
| 33232 | (base32 "1ch3n7m1f5nvx9i0jv1fj1i5w1jsl1ga8dxzixg71m34gf4kg3s6")))) |
| 33233 | (build-system pyproject-build-system) |
| 33234 | (arguments |
| 33235 | (list #:tests? #f)) ;almost all tests want to run mkfs.btrfs |
| 33236 | (propagated-inputs (list python-cffi)) |
| 33237 | (native-inputs (list python-pytest python-setuptools)) |
| 33238 | (home-page "https://gitlab.com/rubdos/pyreflink") |
| 33239 | (synopsis "Python wrapper around reflink system call") |
| 33240 | (description |
| 33241 | "Python reflink wraps around platform specific @code{reflink} |
| 33242 | implementations.") |
| 33243 | (license license:expat))) |
| 33244 | |
| 33245 | (define-public python-retry |
| 33246 | ;; XXX: The project is abandoned upstream for 11y, remove when python-locust |
| 33247 | ;; drops it or we can find a way to avoid it. |
| 33248 | (package |
| 33249 | (name "python-retry") |
| 33250 | (version "0.9.2") |
| 33251 | (source |
| 33252 | (origin |
| 33253 | (method git-fetch) |
| 33254 | (uri (git-reference |
| 33255 | (url "https://github.com/invl/retry") |
| 33256 | (commit version))) |
| 33257 | (file-name (git-file-name name version)) |
| 33258 | (sha256 |
| 33259 | (base32 "1a35ihsn082626592bkjc41fywylzp603j0cxpkbm2f7l1k332xv")))) |
| 33260 | (build-system pyproject-build-system) |
| 33261 | (arguments |
| 33262 | (list |
| 33263 | #:phases |
| 33264 | #~(modify-phases %standard-phases |
| 33265 | (add-after 'unpack 'relax-requirements |
| 33266 | (lambda _ |
| 33267 | (substitute* "requirements.txt" |
| 33268 | (("py>=1.4.26,<2.0.0") |
| 33269 | ""))))))) |
| 33270 | (native-inputs (list python-pbr python-pytest)) |
| 33271 | (propagated-inputs (list python-decorator)) |
| 33272 | (home-page "https://github.com/invl/retry") |
| 33273 | (synopsis "Retry decorator") |
| 33274 | (description |
| 33275 | "@code{retry} is an easy to use retry decorator for Python. It can be |
| 33276 | used to retry a function a given number of times.") |
| 33277 | (license license:asl2.0))) |
| 33278 | |
| 33279 | (define-public python-crayons |
| 33280 | (package |
| 33281 | (name "python-crayons") |
| 33282 | (version "0.4.0") |
| 33283 | (source |
| 33284 | (origin |
| 33285 | (method git-fetch) |
| 33286 | (uri (git-reference |
| 33287 | (url "https://github.com/MasterOdin/crayons") |
| 33288 | (commit (string-append "v" version)))) |
| 33289 | (file-name (git-file-name name version)) |
| 33290 | (sha256 |
| 33291 | (base32 "0zmls5c67mxyxzlwvagiidlrxy1f6f8kwm5afjsydhn19h4rd7za")))) |
| 33292 | (build-system pyproject-build-system) |
| 33293 | (arguments |
| 33294 | (list |
| 33295 | #:test-backend #~'custom |
| 33296 | #:test-flags #~(list "test_crayons.py"))) |
| 33297 | (native-inputs (list python-setuptools)) |
| 33298 | (propagated-inputs (list python-colorama)) |
| 33299 | (home-page "https://github.com/MasterOdin/crayons") |
| 33300 | (synopsis "TextUI colors for Python") |
| 33301 | (description |
| 33302 | "This package gives you colored strings for the terminal. Crayons |
| 33303 | automatically wraps a given string in the foreground color and restores the |
| 33304 | original state after the string is printed.") |
| 33305 | (license license:expat))) |
| 33306 | |
| 33307 | (define-public python-sane |
| 33308 | (package |
| 33309 | (name "python-sane") |
| 33310 | (version "2.9.2") |
| 33311 | (source |
| 33312 | (origin |
| 33313 | (method git-fetch) |
| 33314 | (uri (git-reference |
| 33315 | (url "https://github.com/python-pillow/Sane") |
| 33316 | (commit (string-append "v" version)))) |
| 33317 | (file-name (git-file-name name version)) |
| 33318 | (sha256 |
| 33319 | (base32 "0ldc17n1h8awd0flhwhvb5fj0izy5vy18c128saqnm5isq273y9r")))) |
| 33320 | (build-system pyproject-build-system) |
| 33321 | (arguments (list #:tests? #f)) ; No tests. |
| 33322 | (native-inputs (list python-setuptools)) |
| 33323 | (inputs (list sane)) |
| 33324 | (home-page "https://github.com/python-pillow/Sane") |
| 33325 | (synopsis "Python interface to the SANE scanner") |
| 33326 | (description |
| 33327 | "This package provides Python interface to the SANE scanner and frame |
| 33328 | grabber interface.") |
| 33329 | (license (license:non-copyleft |
| 33330 | ;; Yet another variant of the X/MIT license. |
| 33331 | "https://github.com/python-pillow/Sane/blob/master/COPYING")))) |
| 33332 | |
| 33333 | (define-public python-scikit-build |
| 33334 | (package |
| 33335 | (name "python-scikit-build") |
| 33336 | (version "0.18.1") |
| 33337 | (source |
| 33338 | (origin |
| 33339 | (method url-fetch) |
| 33340 | (uri (pypi-uri "scikit_build" version)) |
| 33341 | (sha256 |
| 33342 | (base32 "1rxqzigfacpbcfhf3c1gdqrnqdnq503bx5vpib19km44l32jl5d4")) |
| 33343 | (patches |
| 33344 | (search-patches "python-scikit-build-setuptools-compat.patch")))) |
| 33345 | (build-system pyproject-build-system) |
| 33346 | (arguments |
| 33347 | (list |
| 33348 | #:phases |
| 33349 | #~(modify-phases %standard-phases |
| 33350 | (add-after 'unpack 'patch-cmake-executable |
| 33351 | (lambda* (#:key inputs #:allow-other-keys) |
| 33352 | (substitute* "skbuild/constants.py" |
| 33353 | (("^(CMAKE_DEFAULT_EXECUTABLE = ).*" _ head) |
| 33354 | (format #f "~a ~s~%" head |
| 33355 | (search-input-file inputs "bin/cmake")))))) |
| 33356 | (add-before 'check 'pre-check |
| 33357 | (lambda _ |
| 33358 | ;; Some tests try to access the network before being skipped. |
| 33359 | ;; Skip them by default. |
| 33360 | (substitute* "tests/test_setup.py" |
| 33361 | (("pytest\\.mark\\.skipif\\(not is_site_reachable.*") |
| 33362 | "pytest.mark.isolated()\n")))) |
| 33363 | (replace 'check |
| 33364 | (lambda* (#:key tests? #:allow-other-keys) |
| 33365 | (when tests? |
| 33366 | ;; These tests attempt to pull dependencies from the Internet. |
| 33367 | (delete-file "tests/test_distribution.py") |
| 33368 | (delete-file "tests/test_pep518.py") |
| 33369 | ;; The tests marked as "isolate" are tests that require access |
| 33370 | ;; to the network. |
| 33371 | (invoke "pytest" "-vv" "-m" "not isolated" |
| 33372 | "-n" (number->string (parallel-job-count)) |
| 33373 | "-k" (string-append |
| 33374 | ;; These tests attempt to write to read-only |
| 33375 | ;; Python install directory. |
| 33376 | "not test_install_command " |
| 33377 | "and not test_test_command " |
| 33378 | "and not test_hello_develop " |
| 33379 | ;; These sdist-related tests fail for unknown |
| 33380 | ;; reasons (see: |
| 33381 | ;; https://github.com/scikit-build/scikit-build/issues/689). |
| 33382 | "and not test_hello_sdist_with_base " |
| 33383 | "and not test_manifest_in_sdist " |
| 33384 | "and not test_hello_sdist " |
| 33385 | "and not test_sdist_with_symlinks " |
| 33386 | ;; These are not parallel safe and fail |
| 33387 | ;; nondeterministically (see: |
| 33388 | ;; https://github.com/scikit-build/scikit-build/issues/711). |
| 33389 | "and not test_generator_cleanup " |
| 33390 | "and not test_generator_selection " |
| 33391 | ;; … and there's more of them |
| 33392 | "and not test_cxx_compiler " |
| 33393 | "and not test_fortran_compiler "))))) |
| 33394 | (add-after 'install 'install-cmake |
| 33395 | (lambda* (#:key outputs #:allow-other-keys) |
| 33396 | (let ((lib (string-append (assoc-ref outputs "out") |
| 33397 | "/lib/cmake/modules"))) |
| 33398 | (mkdir-p lib) |
| 33399 | (with-directory-excursion "skbuild/resources/cmake" |
| 33400 | (for-each (lambda (file) (install-file file lib)) |
| 33401 | (find-files "." "\\.cmake"))))))))) |
| 33402 | (native-inputs |
| 33403 | (list cmake-minimal |
| 33404 | gfortran |
| 33405 | git-minimal/pinned ;for tests |
| 33406 | ninja/pinned |
| 33407 | python-cython |
| 33408 | python-hatch-fancy-pypi-readme |
| 33409 | python-hatch-vcs |
| 33410 | python-hatchling |
| 33411 | python-pytest |
| 33412 | python-pytest-mock |
| 33413 | python-pytest-xdist |
| 33414 | python-requests |
| 33415 | python-virtualenv)) |
| 33416 | (propagated-inputs |
| 33417 | (list python-distro |
| 33418 | python-packaging |
| 33419 | python-wheel)) |
| 33420 | (home-page "https://github.com/scikit-build/scikit-build") |
| 33421 | (synopsis "Build system generator for Python C/C++/Fortran/Cython extensions") |
| 33422 | (description "Scikit-build is an improved build system generator for |
| 33423 | CPython C/C++/Fortran/Cython extensions. It has support for additional |
| 33424 | compilers, build systems, cross compilation, and locating dependencies and |
| 33425 | determining their build requirements. The scikit-build package is |
| 33426 | fundamentally just glue between the @code{setuptools} Python module and |
| 33427 | CMake.") |
| 33428 | (license license:expat))) |
| 33429 | |
| 33430 | (define-public python-screeninfo |
| 33431 | (package |
| 33432 | (name "python-screeninfo") |
| 33433 | (version "0.8.1") |
| 33434 | (source |
| 33435 | (origin |
| 33436 | (method git-fetch) |
| 33437 | (uri (git-reference |
| 33438 | (url "https://github.com/rr-/screeninfo") |
| 33439 | (commit version))) |
| 33440 | (file-name (git-file-name name version)) |
| 33441 | (sha256 |
| 33442 | (base32 "0q0nvj2ghbyjfymsbsl6dr7ggpg177fjncnzbxj18yglyz0vhk2c")))) |
| 33443 | (build-system pyproject-build-system) |
| 33444 | (native-inputs |
| 33445 | (list libdrm |
| 33446 | python-poetry-core |
| 33447 | python-pytest)) |
| 33448 | (home-page "https://github.com/rr-/screeninfo") |
| 33449 | (synopsis "Fetch location and size of physical screens") |
| 33450 | (description |
| 33451 | "Fetch location and size of physical screens. GNU/Linux has support on |
| 33452 | following enviroments: X11 (thought Xinerama) and DRM (experimental).") |
| 33453 | (license license:expat))) |
| 33454 | |
| 33455 | ;; Deprecated on <2026-07-23>. |
| 33456 | (define-deprecated/public-alias python-screenkey |
| 33457 | (@ (gnu packages video) python-screenkey)) |
| 33458 | |
| 33459 | (define-public python-jinja2-cli |
| 33460 | (package |
| 33461 | (name "python-jinja2-cli") |
| 33462 | (version "0.8.2") |
| 33463 | (source |
| 33464 | (origin |
| 33465 | (method git-fetch) |
| 33466 | (uri (git-reference |
| 33467 | (url "https://github.com/mattrobenolt/jinja2-cli") |
| 33468 | (commit version))) |
| 33469 | (file-name (git-file-name name version)) |
| 33470 | (sha256 |
| 33471 | (base32 |
| 33472 | "03ap7rxc1g302m0wacn47rf65d6dqrawa4maam9yapyr96viif7b")))) |
| 33473 | (build-system pyproject-build-system) |
| 33474 | (propagated-inputs |
| 33475 | (list python-jinja2)) |
| 33476 | (native-inputs |
| 33477 | (list python-jinja2 |
| 33478 | python-pytest |
| 33479 | python-setuptools |
| 33480 | python-wheel)) |
| 33481 | (home-page "https://github.com/mattrobenolt/jinja2-cli") |
| 33482 | (synopsis "Command-line interface to Jinja2") |
| 33483 | (description |
| 33484 | "This package provides a command-line interface (CLI) to the Jinja2 |
| 33485 | template engine.") |
| 33486 | (license license:bsd-3))) |
| 33487 | |
| 33488 | (define-public python-readability |
| 33489 | (package |
| 33490 | (name "python-readability") |
| 33491 | (version "0.3.1") |
| 33492 | (source |
| 33493 | (origin |
| 33494 | (method git-fetch) |
| 33495 | (uri (git-reference |
| 33496 | (url "https://github.com/andreasvc/readability/") |
| 33497 | (commit (string-append "v" version)))) |
| 33498 | (file-name (git-file-name name version)) |
| 33499 | (sha256 |
| 33500 | (base32 "0m2v4ysy2a7k6j9d85i4n9z6k48rmgmbj1v7r6l2cb5qpa3pwrj5")))) |
| 33501 | (build-system pyproject-build-system) |
| 33502 | (arguments (list #:tests? #f)) ; No tests. |
| 33503 | (native-inputs (list python-setuptools)) |
| 33504 | (home-page "https://github.com/andreasvc/readability/") |
| 33505 | (synopsis "Measure text readability using surface characteristics") |
| 33506 | (description |
| 33507 | "This package provides a Python library that is an implementation of |
| 33508 | traditional readability measures based on simple surface characteristics. |
| 33509 | These measures are basically linear regressions based on the number of words, |
| 33510 | syllables, and sentences.") |
| 33511 | (license license:asl2.0))) |
| 33512 | |
| 33513 | (define-public python-readability-lxml |
| 33514 | (package |
| 33515 | (name "python-readability-lxml") |
| 33516 | (version "0.9") |
| 33517 | (source |
| 33518 | (origin |
| 33519 | (method git-fetch) |
| 33520 | (uri (git-reference |
| 33521 | (url "http://github.com/buriy/python-readability") |
| 33522 | (commit version))) |
| 33523 | (file-name (git-file-name name version)) |
| 33524 | (sha256 |
| 33525 | (base32 "05alz7i33m4n7097jl5slxy5k2lnnxwwadqw956gwk1fihyzidrp")))) |
| 33526 | (build-system pyproject-build-system) |
| 33527 | (native-inputs |
| 33528 | (list python-poetry-core |
| 33529 | python-pytest)) |
| 33530 | (propagated-inputs |
| 33531 | (list python-chardet |
| 33532 | python-cssselect |
| 33533 | python-lxml |
| 33534 | python-lxml-html-clean)) ;XXX: it should be part of python-lxml lib |
| 33535 | (home-page "http://github.com/buriy/python-readability") |
| 33536 | (synopsis "HTML to text parser") |
| 33537 | (description |
| 33538 | "This package provides classes and function that strip gratuitous markup |
| 33539 | from web pages to make them easier to read.") |
| 33540 | (license license:asl2.0))) |
| 33541 | |
| 33542 | (define-public python-listparser |
| 33543 | (package |
| 33544 | (name "python-listparser") |
| 33545 | (version "0.20") |
| 33546 | (source |
| 33547 | (origin |
| 33548 | (method git-fetch) |
| 33549 | (uri (git-reference |
| 33550 | (url "https://github.com/kurtmckee/listparser") |
| 33551 | (commit (string-append "v" version)))) |
| 33552 | (file-name (git-file-name name version)) |
| 33553 | (sha256 |
| 33554 | (base32 "0a69cm0inwqwipvnmf5plbf9rqgy1arl62gxnwc7pg7062p563vs")))) |
| 33555 | (build-system pyproject-build-system) |
| 33556 | (native-inputs (list python-pytest python-poetry-core)) |
| 33557 | (home-page "https://github.com/kurtmckee/listparser") |
| 33558 | (synopsis "Parse subscription lists in Python") |
| 33559 | (description |
| 33560 | "This package provides a Python library that can parse OPML, FOAF, and |
| 33561 | iGoogle subscription lists.") |
| 33562 | (license license:expat))) |
| 33563 | |
| 33564 | (define-public python-smartypants |
| 33565 | (package |
| 33566 | (name "python-smartypants") |
| 33567 | (version "2.0.2") |
| 33568 | (source |
| 33569 | (origin |
| 33570 | (method url-fetch) |
| 33571 | (uri (pypi-uri "smartypants" version)) |
| 33572 | (sha256 |
| 33573 | (base32 "1ih0z32xfz45bpjyc27nnx8k4b613cwxyyr9k2v68sfcszhlrmir")))) |
| 33574 | (build-system pyproject-build-system) |
| 33575 | (native-inputs |
| 33576 | (list python-docutils python-pygments python-setuptools)) |
| 33577 | (home-page "https://github.com/justinmayer/smartypants.py") |
| 33578 | (synopsis "Translate punctuation characters into smart quotes") |
| 33579 | (description |
| 33580 | "@command{smartpants} can perform the following transformations: |
| 33581 | @enumerate |
| 33582 | @item Straight quotes ( \" and ' ) into \"curly\" quote HTML entities |
| 33583 | @item Backticks-style quotes (``like this'') into \"curly\" quote HTML |
| 33584 | entities |
| 33585 | @item Dashes (-- and ---) into en- and em-dash entities |
| 33586 | @item Three consecutive dots (... or . . .) into an ellipsis entity |
| 33587 | @end enumerate") |
| 33588 | (license license:bsd-3))) |
| 33589 | |
| 33590 | (define-public python-ld |
| 33591 | (package |
| 33592 | (name "python-ld") |
| 33593 | (version "1.9.0") |
| 33594 | (source |
| 33595 | (origin |
| 33596 | (method git-fetch) |
| 33597 | (uri (git-reference |
| 33598 | (url "https://github.com/nir0s/ld") |
| 33599 | (commit (string-append "v" version)))) |
| 33600 | (file-name (git-file-name name version)) |
| 33601 | (sha256 |
| 33602 | (base32 "16yacjfw701n8dhyi26hps3i7fchbvnq9gcrx7v0fn2lbfzzvq00")))) |
| 33603 | (build-system pyproject-build-system) |
| 33604 | (arguments |
| 33605 | (list |
| 33606 | ;; XXX: These tests expect ubuntu distro. |
| 33607 | #:test-flags |
| 33608 | #~(list "-k" (string-join (list "not test_ubuntu14normal_lsb_release" |
| 33609 | "test_ubuntu14nomodules_lsb_release" |
| 33610 | "test_trailingblanks_lsb_release") |
| 33611 | " and not ")))) |
| 33612 | (native-inputs (list python-pytest python-setuptools)) |
| 33613 | (home-page "https://github.com/nir0s/ld") |
| 33614 | (synopsis "OS platform information API") |
| 33615 | (description |
| 33616 | "The ld package provides information about the GNU/Linux distribution it |
| 33617 | runs on, such as a reliable machine-readable ID, or version information.") |
| 33618 | (license license:asl2.0))) |
| 33619 | |
| 33620 | (define-public python-quicktions |
| 33621 | (package |
| 33622 | (name "python-quicktions") |
| 33623 | (version "1.22") |
| 33624 | (source |
| 33625 | (origin |
| 33626 | (method git-fetch) |
| 33627 | (uri (git-reference |
| 33628 | (url "https://github.com/scoder/quicktions") |
| 33629 | (commit version))) |
| 33630 | (file-name (git-file-name name version)) |
| 33631 | (sha256 |
| 33632 | (base32 |
| 33633 | "0kmbhbmz8cjsjp0lqmsi6a2imr4g9wy8rpfdwzghhs8hb6wj5gwy")))) |
| 33634 | (build-system pyproject-build-system) |
| 33635 | (native-inputs |
| 33636 | (list python-cython python-pytest python-setuptools)) |
| 33637 | (home-page "https://github.com/scoder/quicktions") |
| 33638 | (synopsis "Fast fractions data type for rational numbers") |
| 33639 | (description |
| 33640 | "This package provides fast fractions data type for rational numbers. It |
| 33641 | is the cythonized version of @code{fractions.Fraction}.") |
| 33642 | (license license:psfl))) |
| 33643 | |
| 33644 | (define-public python-pathvalidate |
| 33645 | (package |
| 33646 | (name "python-pathvalidate") |
| 33647 | (version "3.3.1") |
| 33648 | (source |
| 33649 | (origin |
| 33650 | (method git-fetch) |
| 33651 | (uri (git-reference |
| 33652 | (url "https://github.com/thombashi/pathvalidate") |
| 33653 | (commit (string-append "v" version)))) |
| 33654 | (file-name (git-file-name name version)) |
| 33655 | (sha256 |
| 33656 | (base32 "14ymgd52v5r0g6yc2l7krg3n4x9bkv1ndvdaahiq503n1zhhs3iv")))) |
| 33657 | (build-system pyproject-build-system) |
| 33658 | (native-inputs (list python-allpairspy |
| 33659 | python-click |
| 33660 | python-faker |
| 33661 | python-pytest |
| 33662 | python-setuptools |
| 33663 | python-setuptools-scm |
| 33664 | python-tcolorpy)) |
| 33665 | (home-page "https://github.com/thombashi/pathvalidate") |
| 33666 | (synopsis "Sanitize strings representing paths") |
| 33667 | (description |
| 33668 | "@code{pathvalidate} is a Python library to sanitize/validate strings |
| 33669 | representing paths or filenames.") |
| 33670 | (license license:expat))) |
| 33671 | |
| 33672 | (define-public python-escapism |
| 33673 | (package |
| 33674 | (name "python-escapism") |
| 33675 | (version "1.0.1") |
| 33676 | (source |
| 33677 | (origin |
| 33678 | (method git-fetch) |
| 33679 | (uri (git-reference |
| 33680 | (url "https://github.com/jupyterhub/escapism") |
| 33681 | (commit version))) |
| 33682 | (file-name (git-file-name name version)) |
| 33683 | (sha256 |
| 33684 | (base32 "1447mamrdbyv9v47f9wrc4fyvbwz5qrwl8qrdzqdq3q62q4xrawj")))) |
| 33685 | (build-system pyproject-build-system) |
| 33686 | (native-inputs (list python-pytest python-setuptools)) |
| 33687 | (home-page "https://github.com/jupyterhub/escapism") |
| 33688 | (synopsis "Simple, generic library for escaping strings") |
| 33689 | (description |
| 33690 | "This Python library provides a programming interface to, given a set of |
| 33691 | safe characters and an escape character, escape safe strings and unescape the |
| 33692 | result.") |
| 33693 | (license license:expat))) |
| 33694 | |
| 33695 | (define-public python-recommonmark |
| 33696 | (package |
| 33697 | (name "python-recommonmark") |
| 33698 | (version "0.7.1") |
| 33699 | (source |
| 33700 | (origin |
| 33701 | (method url-fetch) |
| 33702 | (uri (pypi-uri "recommonmark" version)) |
| 33703 | (sha256 |
| 33704 | (base32 |
| 33705 | "0rvdd2ikdr0yg6cx6594fdzn53cmdc0g0i6qsbcdq8i2kxjdpd5x")))) |
| 33706 | (build-system pyproject-build-system) |
| 33707 | (arguments |
| 33708 | (list |
| 33709 | ;; XXX: Some of those fail for no good reason. |
| 33710 | #:test-flags #~(list "--ignore=tests/test_sphinx.py"))) |
| 33711 | (native-inputs (list python-pytest python-setuptools python-wheel)) |
| 33712 | (propagated-inputs (list python-commonmark python-docutils python-sphinx)) |
| 33713 | (home-page "https://github.com/readthedocs/recommonmark") |
| 33714 | (synopsis "Docutils-compatibility bridge to CommonMark") |
| 33715 | (description |
| 33716 | "This package provides a docutils-compatibility bridge to CommonMark that |
| 33717 | lets you write CommonMark inside of Docutils & Sphinx projects.") |
| 33718 | (license license:expat))) |
| 33719 | |
| 33720 | (define-public python-rectangle-packer |
| 33721 | (package |
| 33722 | (name "python-rectangle-packer") |
| 33723 | (version "2.1.0") |
| 33724 | (source |
| 33725 | (origin |
| 33726 | (method git-fetch) |
| 33727 | (uri (git-reference |
| 33728 | (url "https://github.com/Penlect/rectangle-packer") |
| 33729 | (commit version))) |
| 33730 | (file-name (git-file-name name version)) |
| 33731 | (sha256 |
| 33732 | (base32 "0pwzfxpdv20v8d8lq844nm01zzgzzvm2rg2h49aj949myqkg5nmd")))) |
| 33733 | (build-system pyproject-build-system) |
| 33734 | (arguments |
| 33735 | (list |
| 33736 | #:phases |
| 33737 | #~(modify-phases %standard-phases |
| 33738 | ;; Cython extensions have to be built before running the tests. |
| 33739 | (add-before 'check 'build-ext |
| 33740 | (lambda _ |
| 33741 | (invoke "python" "setup.py" "build_ext" "--inplace")))))) |
| 33742 | (native-inputs |
| 33743 | (list python-cython python-pytest python-setuptools)) |
| 33744 | (home-page "https://github.com/Penlect/rectangle-packer") |
| 33745 | (synopsis "Pack rectangles into a bounding box") |
| 33746 | (description |
| 33747 | "Rectangle-packer is a Python library for packing rectangles |
| 33748 | into a bounding box with minimal wasted space. It is useful for texture |
| 33749 | atlases, sprite sheets, and bin packing problems.") |
| 33750 | (license license:expat))) |
| 33751 | |
| 33752 | (define-public python-redo |
| 33753 | (package |
| 33754 | (name "python-redo") |
| 33755 | (version "3.0.0") |
| 33756 | (source |
| 33757 | (origin |
| 33758 | (method git-fetch) |
| 33759 | (uri (git-reference |
| 33760 | (url "https://github.com/mozilla-releng/redo") |
| 33761 | (commit version))) |
| 33762 | (file-name (git-file-name name version)) |
| 33763 | (sha256 |
| 33764 | (base32 "1sh12f1zbdcafmnqlw25pyirhg78linbb7sxd3vnbdlm92dry0b0")))) |
| 33765 | (build-system pyproject-build-system) |
| 33766 | (native-inputs |
| 33767 | (list python-mock python-pytest python-pytest-asyncio python-setuptools)) |
| 33768 | (home-page "https://github.com/mozilla-releng/redo") |
| 33769 | (synopsis "Utilities to retry Python callables") |
| 33770 | (description "Redo provides various means to add seamless ability to |
| 33771 | retry to any Python callable.") |
| 33772 | (license license:mpl2.0))) |
| 33773 | |
| 33774 | (define-public python-opcodes |
| 33775 | ;; There are no tags in this repo, but 'opcodes/__init__.py' specifies a |
| 33776 | ;; version number, which is what we use here. |
| 33777 | (let ((commit "0f7c7d63f5e13ce5a89d9acc3934f1b6e247ec1f")) |
| 33778 | (package |
| 33779 | (name "python-opcodes") |
| 33780 | (version "0.3.14") ;from 'opcodes/__init__.py' |
| 33781 | (home-page "https://github.com/Maratyszcza/Opcodes") |
| 33782 | (source |
| 33783 | (origin |
| 33784 | (method git-fetch) |
| 33785 | (uri (git-reference (url home-page) (commit commit))) |
| 33786 | (file-name (git-file-name name version)) |
| 33787 | (sha256 |
| 33788 | (base32 "1fvxkr83gfl9f0ikd2wl2lzazzya2qz1hk4yn2a0pq742brbwpys")))) |
| 33789 | (build-system pyproject-build-system) |
| 33790 | (native-inputs (list python-pytest python-setuptools)) |
| 33791 | (synopsis "Database of processor instructions and opcodes") |
| 33792 | (description |
| 33793 | "This project documents instruction sets in a format convenient for |
| 33794 | tools development. An instruction set is represented by three files: |
| 33795 | |
| 33796 | @itemize |
| 33797 | @item an XML file that describes instructions; |
| 33798 | @item an XSD file that describes the structure of the XML file; |
| 33799 | @item a Python module that reads the XML file and represents it as a set of |
| 33800 | Python objects; |
| 33801 | @end itemize |
| 33802 | |
| 33803 | It currently provides descriptions for most user-mode x86, x86_64, and k1om |
| 33804 | instructions up to AVX-512 and SHA (including 3dnow!+, XOP, FMA3, FMA4, TBM |
| 33805 | and BMI2).") |
| 33806 | (license license:bsd-2)))) |
| 33807 | |
| 33808 | (define-public python-cart |
| 33809 | (package |
| 33810 | (name "python-cart") |
| 33811 | (version "1.2.3") |
| 33812 | (source |
| 33813 | (origin |
| 33814 | (method git-fetch) |
| 33815 | (uri (git-reference |
| 33816 | (url "https://github.com/CybercentreCanada/cart") |
| 33817 | (commit (string-append "v" version)))) |
| 33818 | (file-name (git-file-name name version)) |
| 33819 | (sha256 |
| 33820 | (base32 "1064swqylim0nx0msynkqbz6n57n5yy4mmqxl7wd9bsg5mmrxrd1")))) |
| 33821 | (build-system pyproject-build-system) |
| 33822 | (arguments |
| 33823 | (list |
| 33824 | #:test-backend #~'unittest)) |
| 33825 | (native-inputs |
| 33826 | (list python-setuptools)) |
| 33827 | (propagated-inputs |
| 33828 | (list python-pycryptodome)) |
| 33829 | (home-page "https://github.com/CybercentreCanada/cart") |
| 33830 | (synopsis "Library for interacting with the CaRT file format") |
| 33831 | (description |
| 33832 | "This Python library implements the CaRT file format which is commonly |
| 33833 | used to store and transmit information about computer malware and associated |
| 33834 | metadata.") |
| 33835 | (license license:bsd-2))) |
| 33836 | |
| 33837 | (define-public python-cle |
| 33838 | (package |
| 33839 | (name "python-cle") |
| 33840 | ;; Must be the same version as python-angr. |
| 33841 | (version "9.2.186") |
| 33842 | (source |
| 33843 | (origin |
| 33844 | (method git-fetch) |
| 33845 | (uri (git-reference |
| 33846 | (url "https://github.com/angr/cle") |
| 33847 | (commit (string-append "v" version)))) |
| 33848 | (file-name (git-file-name name version)) |
| 33849 | (sha256 |
| 33850 | (base32 "1ycrqysvxgm369cwf0zcyykl1xgma71apbxkbq0z9yakpajgli1s")))) |
| 33851 | (build-system pyproject-build-system) |
| 33852 | (arguments |
| 33853 | (list |
| 33854 | ;; tests: 112 passed, 12 skipped, 1 warning |
| 33855 | #:phases |
| 33856 | #~(modify-phases %standard-phases |
| 33857 | (add-before 'check 'check-setup |
| 33858 | (lambda _ |
| 33859 | (copy-recursively |
| 33860 | (string-append #$(this-package-native-input "angr-binaries") "/share") |
| 33861 | "../binaries")))))) |
| 33862 | (native-inputs |
| 33863 | (list angr-binaries |
| 33864 | python-cffi |
| 33865 | python-pytest |
| 33866 | python-setuptools)) |
| 33867 | (propagated-inputs |
| 33868 | (list python-archinfo |
| 33869 | python-cart |
| 33870 | python-pefile |
| 33871 | python-pyelftools |
| 33872 | python-pyvex |
| 33873 | python-sortedcontainers)) |
| 33874 | (home-page "https://github.com/angr/cle") |
| 33875 | (synopsis "Python loader for binaries and their associated libraries") |
| 33876 | (description |
| 33877 | "CLE loads binaries and their associated libraries, resolves |
| 33878 | imports and provides an abstraction of process memory the same way as if |
| 33879 | it was loader by the operating system's loader.") |
| 33880 | (license license:bsd-2))) |
| 33881 | |
| 33882 | (define-public python-pyvex |
| 33883 | (package |
| 33884 | (name "python-pyvex") |
| 33885 | ;; Must be the same version as python-angr. |
| 33886 | (version "9.2.186") |
| 33887 | (source |
| 33888 | (origin |
| 33889 | (method git-fetch) |
| 33890 | (uri (git-reference |
| 33891 | (url "https://github.com/angr/pyvex") |
| 33892 | (commit (string-append "v" version)))) |
| 33893 | (file-name (git-file-name name version)) |
| 33894 | (sha256 |
| 33895 | (base32 "1ql6rn5n8jfmz8v2453283qdgpxvjkfgqdxwqsgs005j9lrhqa7z")))) |
| 33896 | (build-system pyproject-build-system) |
| 33897 | (arguments |
| 33898 | (list |
| 33899 | ;; tests: 57 passed |
| 33900 | #:phases |
| 33901 | #~(modify-phases %standard-phases |
| 33902 | (add-after 'unpack 'copy-submodule-package |
| 33903 | ;; XXX: ensure-no-mtimes-pre-1980 and build phases fail when using |
| 33904 | ;; symlink: "Read-only file system". |
| 33905 | (lambda _ |
| 33906 | (copy-recursively |
| 33907 | #+(package-source (this-package-native-input "vex")) |
| 33908 | (string-append (getcwd) "/vex")))) |
| 33909 | (add-before 'build 'set-cc |
| 33910 | (lambda _ |
| 33911 | (setenv "AR" #$(ar-for-target)) |
| 33912 | (setenv "CC" #$(cc-for-target)) |
| 33913 | (setenv "CC_NATIVE" "gcc")))))) |
| 33914 | (native-inputs |
| 33915 | (list cmake-minimal |
| 33916 | python-pytest |
| 33917 | python-scikit-build-core |
| 33918 | vex)) |
| 33919 | (propagated-inputs |
| 33920 | (list python-bitstring |
| 33921 | python-cffi)) |
| 33922 | (home-page "https://github.com/angr/pyvex") |
| 33923 | (synopsis "Python interface to libVEX and VEX IR") |
| 33924 | (description |
| 33925 | "This package provides a Python interface the libVEX and VEX IR. |
| 33926 | VEX is the intermediate representation (also known as intermediate |
| 33927 | language) used by the Valgrind analysis tool. As such, VEX is designed |
| 33928 | to enable all kinds of binary analysis tasks.") |
| 33929 | (license (list license:bsd-2 |
| 33930 | license:gpl2)))) |
| 33931 | |
| 33932 | (define-public python-claripy |
| 33933 | (package |
| 33934 | (name "python-claripy") |
| 33935 | ;; Must be the same version as python-angr. |
| 33936 | (version "9.2.186") |
| 33937 | (source |
| 33938 | (origin |
| 33939 | (method git-fetch) |
| 33940 | (uri (git-reference |
| 33941 | (url "https://github.com/angr/claripy") |
| 33942 | (commit (string-append "v" version)))) |
| 33943 | (file-name (git-file-name name version)) |
| 33944 | (sha256 |
| 33945 | (base32 "1vlvscjn098100i2hfcsxllj19bnzs6vagnkg0fr18ps2gvbzcnv")))) |
| 33946 | (build-system pyproject-build-system) |
| 33947 | (arguments |
| 33948 | (list |
| 33949 | ;; tests: 329 passed, 1 skipped |
| 33950 | #:phases |
| 33951 | #~(modify-phases %standard-phases |
| 33952 | (add-after 'unpack 'relax-requirements |
| 33953 | (lambda _ |
| 33954 | (substitute* "pyproject.toml" |
| 33955 | ;; Current version of z3 in Guix is 4.13.0 and sanity check |
| 33956 | ;; failes to detect it (similar like OpenCV), relax the |
| 33957 | ;; version constraint, see: |
| 33958 | ;; <https://github.com/angr/claripy/commit/d1fe2df>. |
| 33959 | ((", \"z3-solver==4.13.0.0\"") |
| 33960 | ""))))))) |
| 33961 | (native-inputs |
| 33962 | (list python-pytest |
| 33963 | python-setuptools)) |
| 33964 | (propagated-inputs |
| 33965 | (list python-cachetools |
| 33966 | python-decorator |
| 33967 | python-pysmt |
| 33968 | z3)) |
| 33969 | (home-page "https://github.com/angr/claripy") |
| 33970 | (synopsis "Abstraction layer for constraint solvers") |
| 33971 | (description |
| 33972 | "This Python module provides an abstraction layer for interacting |
| 33973 | with constraint solvers. Specifically, it is intended to be used with |
| 33974 | SMT solvers and is built on top of the Z3 solver.") |
| 33975 | (license license:bsd-2))) |
| 33976 | |
| 33977 | (define-public python-pysmt |
| 33978 | (package |
| 33979 | (name "python-pysmt") |
| 33980 | (version "0.9.6") |
| 33981 | (source |
| 33982 | (origin |
| 33983 | ;; Fetching from Git as pypi release doesn't include all test files. |
| 33984 | (method git-fetch) |
| 33985 | (uri (git-reference |
| 33986 | (url "https://github.com/pysmt/pysmt") |
| 33987 | (commit (string-append "v" version)))) |
| 33988 | (file-name (git-file-name name version)) |
| 33989 | (sha256 |
| 33990 | (base32 "0jiw8pa6hfh9ajr953q187qgpdnk3bvaa3wmrxs8ilw5jc41sq8y")))) |
| 33991 | (build-system pyproject-build-system) |
| 33992 | (arguments |
| 33993 | `(#:phases (modify-phases %standard-phases |
| 33994 | (add-before 'check 'set-pysmt-solver |
| 33995 | (lambda _ |
| 33996 | (setenv "PYSMT_SOLVER" "z3")))))) |
| 33997 | (native-inputs (list python-pytest python-setuptools python-wheel)) |
| 33998 | (propagated-inputs (list z3)) |
| 33999 | (home-page "https://github.com/pysmt/pysmt") |
| 34000 | (synopsis |
| 34001 | "Solver-agnostic library for SMT formula manipulation and solving") |
| 34002 | (description |
| 34003 | "This Python module provides a solver-agnostic abstraction for |
| 34004 | working with @acronym{SMT, Satisfiability Modulo Theory} formulas. For example, |
| 34005 | it allows manipulation and solving such formulas.") |
| 34006 | (license license:asl2.0))) |
| 34007 | |
| 34008 | (define-public python-rpyc |
| 34009 | (package |
| 34010 | (name "python-rpyc") |
| 34011 | (version "5.3.1") |
| 34012 | (source |
| 34013 | (origin |
| 34014 | ;; Fetching from Git as pypi release doesn't include all test files. |
| 34015 | (method git-fetch) |
| 34016 | (uri (git-reference |
| 34017 | (url "https://github.com/tomerfiliba-org/rpyc") |
| 34018 | (commit version))) |
| 34019 | (file-name (git-file-name name version)) |
| 34020 | (sha256 |
| 34021 | (base32 "15mnp9qkyw3mmxmr5y4kf3xkvxyp00n892vqaqwznr7al35apgnr")) |
| 34022 | (snippet '(begin |
| 34023 | ;; Disable deploy tests, these rely on OpenSSH and require |
| 34024 | ;; configuring the SSH client manually to accept the host key. |
| 34025 | (delete-file "tests/test_deploy.py") |
| 34026 | ;; Disable tests requiring network access. These tests |
| 34027 | ;; presently fail with the error "Network is unreachable". |
| 34028 | (delete-file "tests/test_registry.py"))))) |
| 34029 | (build-system pyproject-build-system) |
| 34030 | (arguments |
| 34031 | `(#:phases (modify-phases %standard-phases |
| 34032 | (replace 'check |
| 34033 | (lambda* (#:key tests? #:allow-other-keys) |
| 34034 | (when tests? |
| 34035 | (with-directory-excursion "tests" |
| 34036 | (invoke "python" "-m" "unittest")))))))) |
| 34037 | (propagated-inputs (list python-hatchling python-plumbum)) |
| 34038 | (home-page "https://github.com/tomerfiliba-org/rpyc") |
| 34039 | (synopsis |
| 34040 | "Remote Python Call (RPyC) is a symmetric distributed computing library") |
| 34041 | (description |
| 34042 | "This Python module enables remote procedure calls, clustering, and |
| 34043 | distributed-computing. For this purpose, it makes use of object-proxying, a technique |
| 34044 | that employs python's dynamic nature, to overcome the physical boundaries between |
| 34045 | processes and computers, so that remote objects can be manipulated as if they |
| 34046 | were local.") |
| 34047 | (license license:expat))) |
| 34048 | |
| 34049 | (define-public python-nampa |
| 34050 | (package |
| 34051 | (name "python-nampa") |
| 34052 | ;; PyPI version is 0.1.1 from 2017. Tag 1.0 on git is from 2020 and still |
| 34053 | ;; has 0.1.1 as version. Latest commit is from 2024. |
| 34054 | (properties '((commit . "cb6a63aae64324f57bdc296064bc6aa2b99ff99a") |
| 34055 | (revision . "0"))) |
| 34056 | (version (git-version "1.0.0" |
| 34057 | (assoc-ref properties 'revision) |
| 34058 | (assoc-ref properties 'commit))) |
| 34059 | (source |
| 34060 | (origin |
| 34061 | (method git-fetch) |
| 34062 | (uri (git-reference |
| 34063 | (url "https://github.com/thebabush/nampa") |
| 34064 | (commit (assoc-ref properties 'commit)))) |
| 34065 | (file-name (git-file-name name version)) |
| 34066 | (sha256 |
| 34067 | (base32 "0a3fx0wpch4il1fwv1nan6nsd7bv84b0bs2xxxjacisw3spizlg0")))) |
| 34068 | (build-system pyproject-build-system) |
| 34069 | (arguments |
| 34070 | (list |
| 34071 | #:test-flags |
| 34072 | #~(list "-k test_random_values") |
| 34073 | #:phases |
| 34074 | #~(modify-phases %standard-phases |
| 34075 | (add-after 'unpack 'patch-tests |
| 34076 | (lambda _ |
| 34077 | ;; Unclear why this top-level __init__.py is here. It seems to |
| 34078 | ;; setup a plugin for binaryninja, which Guix does not package. |
| 34079 | (delete-file "__init__.py") |
| 34080 | ;; Yields tests, which is not allowed anymore. |
| 34081 | (substitute* "tests/test_crc.py" |
| 34082 | (("yield") "#yield"))))))) |
| 34083 | (propagated-inputs (list python-future)) |
| 34084 | (native-inputs (list python-pytest python-setuptools)) |
| 34085 | (home-page "https://github.com/thebabush/nampa") |
| 34086 | (synopsis "Python implementation of IDA Pro's FLIRT technology") |
| 34087 | (description |
| 34088 | "This Python module implements the @acronym{FLIRT, Fast Library Identification |
| 34089 | and Recognition Technology}. This technology is useful for identifying |
| 34090 | common library subroutines in disassembled binaries.") |
| 34091 | (license license:lgpl3))) |
| 34092 | |
| 34093 | (define-public python-mulpyplexer |
| 34094 | (package |
| 34095 | (name "python-mulpyplexer") |
| 34096 | (version "0.09") |
| 34097 | (source |
| 34098 | (origin |
| 34099 | (method url-fetch) |
| 34100 | (uri (pypi-uri "mulpyplexer" version)) |
| 34101 | (sha256 |
| 34102 | (base32 "0c5xzci1djy1yi9hxxh8g67l6ms8r7ad7ja20pv8hfbdysdrwkhl")))) |
| 34103 | (build-system pyproject-build-system) |
| 34104 | (arguments |
| 34105 | (list |
| 34106 | #:phases |
| 34107 | '(modify-phases %standard-phases |
| 34108 | (replace 'check |
| 34109 | (lambda* (#:key tests? #:allow-other-keys) |
| 34110 | (when tests? |
| 34111 | (invoke "python" "mulpyplexer.py"))))))) |
| 34112 | (native-inputs (list python-setuptools python-wheel)) |
| 34113 | (home-page "https://github.com/zardus/mulpyplexer/") |
| 34114 | (synopsis "Multiplexes interactions with lists of Python objects") |
| 34115 | (description "This module provides utilities for multiplexing |
| 34116 | interactions with lists of Python objects.") |
| 34117 | (license license:bsd-2))) |
| 34118 | |
| 34119 | (define-public python-itanium-demangler |
| 34120 | (package |
| 34121 | (name "python-itanium-demangler") |
| 34122 | (version "1.1") |
| 34123 | (source |
| 34124 | (origin |
| 34125 | (method git-fetch) |
| 34126 | (uri (git-reference |
| 34127 | ;; PyPI only provides wheels and no source code. |
| 34128 | (url "https://github.com/whitequark/python-itanium_demangler") |
| 34129 | (commit (string-append "v" version)))) |
| 34130 | (file-name (git-file-name name version)) |
| 34131 | (sha256 |
| 34132 | (base32 "1q47aqm5z3db6pasdzw05d6236vnb8hnapfy88fcmn9dr5ym98r3")))) |
| 34133 | (build-system pyproject-build-system) |
| 34134 | (arguments |
| 34135 | (list |
| 34136 | #:phases |
| 34137 | #~(modify-phases %standard-phases |
| 34138 | (replace 'check |
| 34139 | (lambda* (#:key tests? #:allow-other-keys) |
| 34140 | (when tests? |
| 34141 | (with-directory-excursion "tests" |
| 34142 | (invoke "python" "-m" "unittest")))))))) |
| 34143 | (native-inputs (list python-setuptools python-wheel)) |
| 34144 | (home-page "https://github.com/whitequark/python-itanium_demangler/") |
| 34145 | (synopsis "Pure Python Itanium C++ ABI demangler") |
| 34146 | (description |
| 34147 | "This Python module provides an implementation of the Itanium C++ ABI symbol |
| 34148 | mangling language. The demangler generates an abstract syntax tree from |
| 34149 | mangled symbols, which can be used for directly extracting type information.") |
| 34150 | (license license:bsd-0))) |
| 34151 | |
| 34152 | (define-public python-angr |
| 34153 | (package |
| 34154 | (name "python-angr") |
| 34155 | (version "9.2.186") |
| 34156 | (source |
| 34157 | (origin |
| 34158 | (method git-fetch) |
| 34159 | (uri (git-reference |
| 34160 | (url "https://github.com/angr/angr") |
| 34161 | (commit (string-append "v" version)))) |
| 34162 | (file-name (git-file-name name version)) |
| 34163 | (sha256 |
| 34164 | (base32 "1x1vnhgf1p05z2cdjc626jvvk9xqa9qzmg1yk73lq4qn7sa4cnmd")) |
| 34165 | (patches (search-patches "python-angr-fix-manyfloat-tests.patch" |
| 34166 | "python-angr-check-exec-deps.patch")))) |
| 34167 | (build-system pyproject-build-system) |
| 34168 | (arguments |
| 34169 | (list |
| 34170 | #:imported-modules `(,@%cargo-build-system-modules |
| 34171 | ,@%pyproject-build-system-modules) |
| 34172 | #:modules '(((guix build cargo-build-system) #:prefix cargo:) |
| 34173 | (guix build pyproject-build-system) |
| 34174 | (guix build utils)) |
| 34175 | #:test-flags |
| 34176 | #~(list "-x" |
| 34177 | "--dist" "load" |
| 34178 | "--numprocesses" (number->string (parallel-job-count)) |
| 34179 | "-k" |
| 34180 | ;; test_mips32_missing_offset_in_instructions fails |
| 34181 | ;; with capstone 5 and passes with capstone 4. Might |
| 34182 | ;; be a capstone regressions, needs investigation. |
| 34183 | ;; |
| 34184 | ;; TODO: test_unsat_core needs investigation. |
| 34185 | ;; |
| 34186 | ;; test_decompiling_abnormal_switch_case_case3 is broken |
| 34187 | ;; when tests modifying global counters are run before it. |
| 34188 | ;; See <https://github.com/angr/angr/issues/5715>. |
| 34189 | ;; |
| 34190 | ;; test_concrete_memset is a non-deterministic benchmark. |
| 34191 | ;; test_similarity_fauxware is flaky. |
| 34192 | (string-append |
| 34193 | "not test_mips32_missing_offset_in_instructions" |
| 34194 | " and not test_unsat_core" |
| 34195 | " and not test_decompiling_abnormal_switch_case_case3" |
| 34196 | " and not test_concrete_memset" |
| 34197 | " and not test_similarity_fauxware")) |
| 34198 | #:phases |
| 34199 | #~(modify-phases %standard-phases |
| 34200 | (add-after 'unpack 'use-guix-vendored-dependencies |
| 34201 | (lambda _ |
| 34202 | (substitute* "native/angr/Cargo.toml" |
| 34203 | (("^icicle-fuzzing.*$") |
| 34204 | "icicle-fuzzing = { version = \"*\" }\n") |
| 34205 | (("^icicle-vm.*$") |
| 34206 | "icicle-vm = { version = \"*\" }\n") |
| 34207 | (("^pcode.*$") |
| 34208 | "pcode = { version = \"*\" }\n")))) |
| 34209 | (add-after 'unpack 'fix-tests |
| 34210 | (lambda _ |
| 34211 | (substitute* "tests/common.py" |
| 34212 | (("\\[\"cc\"\\]") |
| 34213 | "[\"gcc\"]")))) |
| 34214 | (add-after 'unpack 'relax-protobuf |
| 34215 | (lambda _ |
| 34216 | ;; Relax protobuf constraint, see 'generate-protobuf-files phase below. |
| 34217 | (substitute* "pyproject.toml" |
| 34218 | (("protobuf>=6.33.0") "protobuf")))) |
| 34219 | (add-after 'use-guix-vendored-dependencies 'prepare-cargo-build-system |
| 34220 | (lambda args |
| 34221 | (for-each (lambda (phase) |
| 34222 | (format #t "Running cargo phase: ~a~%" phase) |
| 34223 | (apply (assoc-ref cargo:%standard-phases phase) |
| 34224 | #:cargo-target #$(cargo-triplet) |
| 34225 | args)) |
| 34226 | '(prepare-rust-crates |
| 34227 | unpack-rust-crates |
| 34228 | configure |
| 34229 | check-for-pregenerated-files |
| 34230 | patch-cargo-checksums)))) |
| 34231 | (add-before 'check 'check-setup |
| 34232 | (lambda _ |
| 34233 | (copy-recursively |
| 34234 | (string-append #$(this-package-native-input "angr-binaries") "/share") |
| 34235 | "../binaries"))) |
| 34236 | (add-before 'build 'generate-protobuf-files |
| 34237 | ;; Regenerate protobuf files using our utilized protobuf version. |
| 34238 | ;; This allows us to relax the version constraint on python-protobuf. |
| 34239 | (lambda _ |
| 34240 | (apply invoke "protoc" "-I=." "--python_out=." (find-files "angr/protos" "\\.proto$")))) |
| 34241 | (add-before 'build 'set-cc |
| 34242 | (lambda _ |
| 34243 | (setenv "CC" #$(cc-for-target))))))) |
| 34244 | (propagated-inputs (list python-archinfo ;sync version with python-angr |
| 34245 | python-cachetools |
| 34246 | python-cffi |
| 34247 | python-claripy ;sync version with python-angr |
| 34248 | python-cle ;sync version with python-angr |
| 34249 | python-cxxheaderparser |
| 34250 | python-gitpython |
| 34251 | python-msgspec |
| 34252 | python-mulpyplexer |
| 34253 | python-networkx |
| 34254 | python-protobuf |
| 34255 | python-psutil |
| 34256 | python-pycparser |
| 34257 | python-pydemumble |
| 34258 | python-pyformlang |
| 34259 | python-pypcode |
| 34260 | python-pyvex ;sync version with python-angr |
| 34261 | python-rich |
| 34262 | python-sortedcontainers |
| 34263 | python-sympy |
| 34264 | python-sqlalchemy |
| 34265 | python-keystone-engine |
| 34266 | python-typing-extensions |
| 34267 | python-unique-log-filter |
| 34268 | unicorn-2.0)) |
| 34269 | (native-inputs |
| 34270 | (append |
| 34271 | (list angr-binaries |
| 34272 | protobuf |
| 34273 | python-pytest |
| 34274 | python-pytest-xdist |
| 34275 | python-setuptools |
| 34276 | python-setuptools-rust |
| 34277 | rust |
| 34278 | `(,rust "cargo")) |
| 34279 | (or (and=> (%current-target-system) |
| 34280 | (compose list make-rust-sysroot)) |
| 34281 | '()))) |
| 34282 | (inputs |
| 34283 | (cons* (cargo-inputs 'python-angr))) |
| 34284 | (home-page "https://github.com/angr/angr") |
| 34285 | (synopsis "Multi-architecture binary analysis toolkit") |
| 34286 | (description |
| 34287 | "This package provides a versatile binary analysis platform with the |
| 34288 | ability to perform dynamic symbolic execution as well as various |
| 34289 | static analyses directly on binaries. As such, it can be used for all |
| 34290 | kinds of reverse engineering, vulnerability discovery, exploit |
| 34291 | generation, and software testing purposes.") |
| 34292 | (license license:bsd-2))) |
| 34293 | |
| 34294 | (define-public python-peachpy |
| 34295 | ;; There is no tag in this repo. |
| 34296 | (let ((commit "349e8f836142b2ed0efeb6bb99b1b715d87202e9") |
| 34297 | (version "0.2.0") ;from 'peachpy/__init__.py' |
| 34298 | (revision "3")) |
| 34299 | (package |
| 34300 | (name "python-peachpy") |
| 34301 | (version (git-version version revision commit)) |
| 34302 | (home-page "https://github.com/Maratyszcza/PeachPy") |
| 34303 | (source (origin |
| 34304 | (method git-fetch) |
| 34305 | (uri (git-reference (url home-page) (commit commit))) |
| 34306 | (file-name (git-file-name name version)) |
| 34307 | (sha256 |
| 34308 | (base32 |
| 34309 | "16pnkghmqjc7pbws0yhyrwlz43d5pffb5c6v2bb4jk0j537gwzbi")) |
| 34310 | (patches (search-patches "python-peachpy-determinism.patch")))) |
| 34311 | (build-system pyproject-build-system) |
| 34312 | (arguments |
| 34313 | ;; The issue is known and the test will probably never be fixed. |
| 34314 | ;; https://github.com/Maratyszcza/PeachPy/issues/131 |
| 34315 | (list #:test-flags ''("--ignore=tests/arm/test_arm.py"))) |
| 34316 | (native-inputs |
| 34317 | (list python-pytest python-setuptools python-wheel)) |
| 34318 | (propagated-inputs |
| 34319 | (list python-six python-opcodes)) |
| 34320 | (synopsis "Efficient assembly code generation in Python") |
| 34321 | (description |
| 34322 | "PeachPy is a Python framework for writing high-performance assembly kernels. |
| 34323 | PeachPy aims to simplify writing optimized assembly kernels while preserving |
| 34324 | all optimization opportunities of traditional assembly. |
| 34325 | |
| 34326 | PeachPy can generate ELF, MS-COFF, Mach-O object files, and assembly listings |
| 34327 | for the Go language tool chain; it adapts to different calling conventions and |
| 34328 | application binary interfaces (ABIs); it takes care of register allocation; it |
| 34329 | supports x86_64 instructions up to AVX-512 and SHA.") |
| 34330 | (supported-systems '("x86_64-linux")) |
| 34331 | (license license:bsd-2)))) |
| 34332 | |
| 34333 | (define-public python-sgmllib3k |
| 34334 | (let ((commit "799964676f35349ca2dd04503e34c2b3ad522c0d") |
| 34335 | (revision "1")) |
| 34336 | (package |
| 34337 | (name "python-sgmllib3k") |
| 34338 | (version |
| 34339 | (git-version "1.0.0" revision commit)) |
| 34340 | (source |
| 34341 | (origin |
| 34342 | (method git-fetch) |
| 34343 | (uri (git-reference |
| 34344 | (url "https://github.com/hsoft/sgmllib") |
| 34345 | (commit commit))) |
| 34346 | (file-name (git-file-name name version)) |
| 34347 | (sha256 |
| 34348 | (base32 |
| 34349 | "0bzf6pv85dzfxfysm6zbj8m40hp0xzr9h8qlk4hp3nmy88rznqvr")) |
| 34350 | (patches (search-patches "python-sgmllib3k-assertions.patch")))) |
| 34351 | (build-system pyproject-build-system) |
| 34352 | (native-inputs (list python-pytest python-setuptools)) |
| 34353 | (home-page "https://github.com/hsoft/sgmllib") |
| 34354 | (synopsis "Python 3 port of sgmllib") |
| 34355 | (description "This package provides an unmaintained port of sgmllib to |
| 34356 | Python 3. It is used to parse text files formatted in @acronym{SGML,Standard |
| 34357 | Generalized Mark-up Language}.") |
| 34358 | (license license:bsd-3)))) |
| 34359 | |
| 34360 | (define-public python-cwcwidth |
| 34361 | (package |
| 34362 | (name "python-cwcwidth") |
| 34363 | (version "0.1.10") |
| 34364 | (source |
| 34365 | (origin |
| 34366 | (method url-fetch) |
| 34367 | (uri (pypi-uri "cwcwidth" version)) |
| 34368 | (sha256 |
| 34369 | (base32 "0951lwciwslnzcvfvnk9daiiwh00q15qbcmjw5xi1x61f87pcs3l")))) |
| 34370 | (build-system pyproject-build-system) |
| 34371 | (arguments |
| 34372 | (list |
| 34373 | #:phases |
| 34374 | #~(modify-phases %standard-phases |
| 34375 | (add-before 'check 'remove-local-cwcwidth |
| 34376 | (lambda _ |
| 34377 | ;; This would otherwise interfere with finding the installed |
| 34378 | ;; cwcwidth when running tests. |
| 34379 | (delete-file-recursively "cwcwidth")))))) |
| 34380 | (native-inputs |
| 34381 | (list python-cython |
| 34382 | python-pytest |
| 34383 | python-setuptools |
| 34384 | python-setuptools-scm)) |
| 34385 | (home-page "https://github.com/sebastinas/cwcwidth") |
| 34386 | (synopsis "Python bindings for wc(s)width") |
| 34387 | (description |
| 34388 | "This package provides bindings for wcwidth and wcswidth functions |
| 34389 | defined in POSIX.1-2001 and POSIX.1-2008.") |
| 34390 | (license license:expat))) |
| 34391 | |
| 34392 | (define-public python-pyan3 |
| 34393 | (package |
| 34394 | (name "python-pyan3") |
| 34395 | (version "1.2.0") |
| 34396 | (source |
| 34397 | (origin |
| 34398 | ;; Source tarball on PyPI lacks tests. |
| 34399 | (method git-fetch) |
| 34400 | (uri (git-reference |
| 34401 | (url "https://github.com/Technologicat/pyan") |
| 34402 | (commit (string-append "v" version)))) |
| 34403 | (file-name (git-file-name name version)) |
| 34404 | (sha256 |
| 34405 | (base32 |
| 34406 | "1367x25rcy2y8f0x9c2dbxl2qgdln3arr7ddyzybz2c28g6jrv5z")) |
| 34407 | (patches (search-patches "python-pyan3-fix-positional-arguments.patch" |
| 34408 | "python-pyan3-fix-absolute-path-bug.patch")))) |
| 34409 | (build-system pyproject-build-system) |
| 34410 | (native-inputs |
| 34411 | (list python-pytest python-setuptools python-wheel)) |
| 34412 | (propagated-inputs |
| 34413 | (list python-jinja2)) |
| 34414 | (home-page "https://github.com/Technologicat/pyan") |
| 34415 | (synopsis "Offline call graph generator for Python 3") |
| 34416 | (description "Pyan takes one or more Python source files, performs |
| 34417 | a (rather superficial) static analysis, and constructs a directed graph of the |
| 34418 | objects in the combined source, and how they define or use each other. The |
| 34419 | graph can be output for rendering by GraphViz or yEd.") |
| 34420 | (license license:gpl2))) |
| 34421 | |
| 34422 | (define-public python-multipledispatch |
| 34423 | (package |
| 34424 | (name "python-multipledispatch") |
| 34425 | (version "1.0.0") |
| 34426 | (source |
| 34427 | (origin |
| 34428 | (method git-fetch) ;no tests in PyPI archive |
| 34429 | (uri (git-reference |
| 34430 | (url "https://github.com/mrocklin/multipledispatch") |
| 34431 | (commit version))) |
| 34432 | (file-name (git-file-name name version)) |
| 34433 | (sha256 |
| 34434 | (base32 "0dfnav03bgrp5sxn53gyp4kfagcicm3pz98cj056rf9s6k5006s7")))) |
| 34435 | (build-system pyproject-build-system) |
| 34436 | (native-inputs |
| 34437 | (list python-pytest |
| 34438 | python-pytest-benchmark |
| 34439 | python-setuptools)) |
| 34440 | (home-page "https://github.com/mrocklin/multipledispatch/") |
| 34441 | (synopsis "Multiple dispatch for Python based on pattern matching") |
| 34442 | (description |
| 34443 | "This library provides an efficient mechanism for overloading function |
| 34444 | implementations based on the types of the arguments.") |
| 34445 | (license license:bsd-3))) |
| 34446 | |
| 34447 | (define-public python-multimethod |
| 34448 | (package |
| 34449 | (name "python-multimethod") |
| 34450 | (version "1.10") |
| 34451 | (source |
| 34452 | (origin |
| 34453 | ;; No tests in the PyPI tarball. |
| 34454 | (method git-fetch) |
| 34455 | (uri (git-reference |
| 34456 | (url "https://github.com/coady/multimethod") |
| 34457 | (commit (string-append "v" version)))) |
| 34458 | (file-name (git-file-name name version)) |
| 34459 | (sha256 |
| 34460 | (base32 "07xv92q7f4bkp6dzkqvcv0zxr11729qdak4s3ldmbhdwgsf44g5h")))) |
| 34461 | (build-system pyproject-build-system) |
| 34462 | (native-inputs (list python-pytest python-setuptools python-wheel)) |
| 34463 | (home-page "https://github.com/coady/multimethod") |
| 34464 | (synopsis "Python support for multiple argument dispatching") |
| 34465 | (description |
| 34466 | "This package provides a decorator for adding multiple argument |
| 34467 | dispatching to functions. The decorator creates a multimethod object as |
| 34468 | needed and registers the function with its annotations.") |
| 34469 | (license license:asl2.0))) |
| 34470 | |
| 34471 | (define-public python-logical-unification |
| 34472 | (package |
| 34473 | (name "python-logical-unification") |
| 34474 | (version "0.4.7") |
| 34475 | (source |
| 34476 | (origin |
| 34477 | (method git-fetch) |
| 34478 | (uri (git-reference |
| 34479 | (url "https://github.com/pythological/unification") |
| 34480 | (commit (string-append "v" version)))) |
| 34481 | (file-name (git-file-name name version)) |
| 34482 | (sha256 |
| 34483 | (base32 "0y6caigbx32jq2i2hac87vr78j3jxdgpxncyw6lghvw6cgnh2p4v")))) |
| 34484 | (build-system pyproject-build-system) |
| 34485 | (native-inputs |
| 34486 | (list python-pytest |
| 34487 | python-pytest-benchmark |
| 34488 | python-setuptools |
| 34489 | python-setuptools-scm)) |
| 34490 | (propagated-inputs |
| 34491 | (list python-multipledispatch |
| 34492 | python-toolz)) |
| 34493 | (home-page "https://github.com/pythological/unification/") |
| 34494 | (synopsis "Logical unification in Python for solving symbolic expressions") |
| 34495 | (description "This library provides algorithms and data types for solving |
| 34496 | symbolic expressions in pure Python using the technique of logical unification.") |
| 34497 | (license license:bsd-3))) |
| 34498 | |
| 34499 | (define-public python-looseversion |
| 34500 | (package |
| 34501 | (name "python-looseversion") |
| 34502 | (version "1.3.0") |
| 34503 | (source |
| 34504 | (origin |
| 34505 | (method url-fetch) |
| 34506 | (uri (pypi-uri "looseversion" version)) |
| 34507 | (sha256 |
| 34508 | (base32 "17k625ws83lwksa7yyy4mn0i39lmxgrzxihn22l335dvyvrnbppb")))) |
| 34509 | (build-system pyproject-build-system) |
| 34510 | (arguments |
| 34511 | (list |
| 34512 | ;; No tests provided. |
| 34513 | #:tests? #f)) |
| 34514 | (native-inputs |
| 34515 | (list python-hatchling)) |
| 34516 | (home-page "https://github.com/effigies/looseversion") |
| 34517 | (synopsis "Version numbering for anarchists and software realists") |
| 34518 | (description |
| 34519 | "This package provides a drop-in replacement for the original |
| 34520 | @code{LooseVersion}. It implements an identical interface and comparison |
| 34521 | logic to @code{LooseVersion}. The only major change is that a |
| 34522 | @code{looseversion.LooseVersion} is comparable to a |
| 34523 | @code{distutils.version.LooseVersion}, which means tools should not need to |
| 34524 | worry whether all dependencies that use LooseVersion have migrated.") |
| 34525 | (license license:psfl))) |
| 34526 | |
| 34527 | (define-public python-cons |
| 34528 | (package |
| 34529 | (name "python-cons") |
| 34530 | (version "0.4.7") |
| 34531 | (source |
| 34532 | (origin |
| 34533 | (method git-fetch) ;no tests in PyPI archive |
| 34534 | (uri (git-reference |
| 34535 | (url "https://github.com/pythological/python-cons") |
| 34536 | (commit (string-append "v" version)))) |
| 34537 | (file-name (git-file-name name version)) |
| 34538 | (sha256 |
| 34539 | (base32 "07a1gkvc5p3qi55vczhicz3k5bs1c6jdkw6vrrnxrygg357fabh5")))) |
| 34540 | (build-system pyproject-build-system) |
| 34541 | (native-inputs |
| 34542 | (list python-pytest |
| 34543 | python-setuptools |
| 34544 | python-setuptools-scm |
| 34545 | python-wheel)) |
| 34546 | (propagated-inputs |
| 34547 | (list python-logical-unification)) |
| 34548 | (home-page "https://github.com/pythological/python-cons") |
| 34549 | (synopsis "Cons cell data structures and related algorithms for Python") |
| 34550 | (description |
| 34551 | "This library implements algorithms and data structures for Lisp-style |
| 34552 | cons cells in Python.") |
| 34553 | (license license:lgpl3+))) |
| 34554 | |
| 34555 | (define-public python-etuples |
| 34556 | (package |
| 34557 | (name "python-etuples") |
| 34558 | (version "0.3.10") |
| 34559 | (source |
| 34560 | (origin |
| 34561 | (method url-fetch) |
| 34562 | (uri (pypi-uri "etuples" version)) |
| 34563 | (sha256 |
| 34564 | (base32 "0rqi0ml2az23ly5wanymgrfsnzm6dd6wxgric8a3fa42gqfyiz96")))) |
| 34565 | (build-system pyproject-build-system) |
| 34566 | (arguments |
| 34567 | (list |
| 34568 | #:test-flags |
| 34569 | ;; assert False == {~_1: <built-in function add>} |
| 34570 | #~(list "--deselect=tests/test_dispatch.py::test_unification"))) |
| 34571 | (native-inputs |
| 34572 | (list python-pytest |
| 34573 | python-setuptools |
| 34574 | python-setuptools-scm)) |
| 34575 | (propagated-inputs |
| 34576 | (list python-cons |
| 34577 | python-multipledispatch)) |
| 34578 | (home-page "https://github.com/pythological/etuples") |
| 34579 | (synopsis "S-expressions in Python") |
| 34580 | (description |
| 34581 | "This library implements eval'able S-expression in Python using tuple-like objects.") |
| 34582 | (license license:asl2.0))) |
| 34583 | |
| 34584 | (define-public python-minikanren |
| 34585 | (package |
| 34586 | (name "python-minikanren") |
| 34587 | (version "1.0.5") |
| 34588 | (source |
| 34589 | (origin |
| 34590 | (method git-fetch) |
| 34591 | (uri (git-reference |
| 34592 | (url "https://github.com/pythological/kanren") |
| 34593 | (commit (string-append "v" version)))) |
| 34594 | (file-name (git-file-name name version)) |
| 34595 | (sha256 |
| 34596 | (base32 "1fsy5dlkyghz2qvjwc5pv4arxzvczn7s4bmy0fwk5xzxljc3894l")))) |
| 34597 | (build-system pyproject-build-system) |
| 34598 | (arguments |
| 34599 | (list |
| 34600 | ;; 60 passed, 3 skipped, 23 deselected |
| 34601 | #:test-flags |
| 34602 | #~(list "-k" (string-join |
| 34603 | ;; XXX: 16 tests fail with assertion not equal, check why. |
| 34604 | (list "not test_basics" |
| 34605 | "test_eq_assoc" |
| 34606 | "test_eq_assoccomm" |
| 34607 | "test_eq_comm" |
| 34608 | "test_map_anyo" |
| 34609 | "test_map_anyo_misc" |
| 34610 | "test_map_anyo_reverse" |
| 34611 | "test_reduceo" |
| 34612 | "test_walko" |
| 34613 | "test_walko_reverse") |
| 34614 | " and not ")))) |
| 34615 | (native-inputs |
| 34616 | (list python-pytest |
| 34617 | python-setuptools)) |
| 34618 | (propagated-inputs |
| 34619 | (list python-cons |
| 34620 | python-etuples |
| 34621 | python-logical-unification |
| 34622 | python-multipledispatch |
| 34623 | python-toolz |
| 34624 | python-typing-extensions)) |
| 34625 | (home-page "https://github.com/pythological/kanren") |
| 34626 | (synopsis "Relational logic programming in pure Python") |
| 34627 | (description |
| 34628 | "The minikanren library provides an algorithmic core for computer algebra |
| 34629 | systems in Python.") |
| 34630 | (license license:bsd-3))) |
| 34631 | |
| 34632 | (define-public python-dotenv |
| 34633 | (package |
| 34634 | (name "python-dotenv") |
| 34635 | (version "1.2.2") |
| 34636 | (source |
| 34637 | (origin |
| 34638 | (method url-fetch) |
| 34639 | (uri (pypi-uri "python_dotenv" version)) |
| 34640 | (sha256 |
| 34641 | (base32 "1wwwg7gasqmnv5y2hb3w1155c8nai6zzih8x5hn0ifnpzf8ildrc")))) |
| 34642 | (build-system pyproject-build-system) |
| 34643 | (arguments |
| 34644 | (list |
| 34645 | #:test-flags |
| 34646 | ;; .dotenv-real instead of dotenv |
| 34647 | #~(list "-k not test_run_with_dotenv_and_command_flags"))) |
| 34648 | (native-inputs |
| 34649 | (list python-pytest |
| 34650 | python-setuptools)) |
| 34651 | (propagated-inputs |
| 34652 | (list python-click)) |
| 34653 | (home-page "https://saurabh-kumar.com/python-dotenv/") |
| 34654 | (synopsis "Setup environment variables according to .env files") |
| 34655 | (description |
| 34656 | "This package provides the @code{python-dotenv} Python module to read |
| 34657 | key-value pairs from a @code{.env} file and set them as environment variables.") |
| 34658 | (license license:bsd-3))) |
| 34659 | |
| 34660 | ;; Old version just for docker-compose; remove once that is updated. |
| 34661 | (define-public python-dotenv-0.13.0 |
| 34662 | (package (inherit python-dotenv) |
| 34663 | (name "python-dotenv") |
| 34664 | (version "0.13.0") |
| 34665 | (source |
| 34666 | (origin |
| 34667 | (method url-fetch) |
| 34668 | (uri (pypi-uri "python-dotenv" version)) |
| 34669 | (sha256 |
| 34670 | (base32 |
| 34671 | "0x5dagmfn31phrbxlwacw3s4w5vibv8fxqc62nqcdvdhjsy0k69v")))) |
| 34672 | (arguments |
| 34673 | `(#:phases |
| 34674 | (modify-phases %standard-phases |
| 34675 | (replace 'check |
| 34676 | (lambda* (#:key tests? inputs outputs #:allow-other-keys) |
| 34677 | (when tests? |
| 34678 | (add-installed-pythonpath inputs outputs) |
| 34679 | (setenv "PATH" (string-append (getenv "PATH") ":" |
| 34680 | (assoc-ref outputs "out") "/bin")) |
| 34681 | ;; Skip the ipython tests. |
| 34682 | (delete-file "tests/test_ipython.py") |
| 34683 | (invoke "python" "-m" "pytest"))))))) |
| 34684 | (native-inputs |
| 34685 | (modify-inputs native-inputs |
| 34686 | (append python-mock |
| 34687 | python-sh-1))))) |
| 34688 | |
| 34689 | (define-public python-braintree |
| 34690 | (package |
| 34691 | (name "python-braintree") |
| 34692 | (version "4.40.0") |
| 34693 | (source |
| 34694 | (origin |
| 34695 | (method url-fetch) |
| 34696 | (uri (pypi-uri "braintree" version)) |
| 34697 | (sha256 |
| 34698 | (base32 "0pjllhyx9ymad9nspaviysda4pb5cbl83c6fq4bhwl6khzyh0bkr")))) |
| 34699 | (build-system pyproject-build-system) |
| 34700 | (arguments (list #:tests? #f)) ; No tests. |
| 34701 | (native-inputs (list python-setuptools)) |
| 34702 | (propagated-inputs (list python-requests)) |
| 34703 | (home-page |
| 34704 | "https://developers.braintreepayments.com/python/sdk/server/overview") |
| 34705 | (synopsis "Braintree Python Library") |
| 34706 | (description |
| 34707 | "The Braintree Python SDK provides integration access to the Braintree |
| 34708 | Gateway. Braintree is a US-based payments service provider.") |
| 34709 | (license license:expat))) |
| 34710 | |
| 34711 | (define-public python-markuppy |
| 34712 | (package |
| 34713 | (name "python-markuppy") |
| 34714 | (version "1.18") |
| 34715 | (source |
| 34716 | (origin |
| 34717 | (method git-fetch) |
| 34718 | (uri (git-reference |
| 34719 | (url "https://github.com/tylerbakke/MarkupPy") |
| 34720 | (commit (string-append "v" version)))) |
| 34721 | (file-name (git-file-name name version)) |
| 34722 | (sha256 |
| 34723 | (base32 "0rbxh7dzrqd1xrxbxxbyjslqfaxxyv17ppr9zcjig8yw631k0a51")))) |
| 34724 | (build-system pyproject-build-system) |
| 34725 | (native-inputs (list python-pytest python-setuptools)) |
| 34726 | (home-page "https://github.com/tylerbakke/MarkupPy") |
| 34727 | (synopsis "Pythonic HTML/XML generator") |
| 34728 | (description |
| 34729 | "This Python module attempts to make it easier to generate HTML/XML from |
| 34730 | a Python program in an customizable and pythonic way.") |
| 34731 | (license license:expat))) |
| 34732 | |
| 34733 | (define-public python-csb43 |
| 34734 | (package |
| 34735 | (name "python-csb43") |
| 34736 | (version "1.0.0") |
| 34737 | (source |
| 34738 | (origin |
| 34739 | (method git-fetch) |
| 34740 | (uri (git-reference |
| 34741 | (url "https://bitbucket.org/wmj/csb43") |
| 34742 | (commit version))) |
| 34743 | (file-name (git-file-name name version)) |
| 34744 | (sha256 |
| 34745 | (base32 "030lncdmrcvzgp8v1jw04snnplqxlwf3vikzd0a3jbk5sgrp2cih")))) |
| 34746 | (build-system pyproject-build-system) |
| 34747 | ;; tests: 15102 passed, 36 skipped, 5489 warnings |
| 34748 | (arguments |
| 34749 | (list |
| 34750 | #:phases |
| 34751 | #~(modify-phases %standard-phases |
| 34752 | (add-after 'unpack 'relax-requirements |
| 34753 | (lambda _ |
| 34754 | (substitute* "pyproject.toml" |
| 34755 | (("\"deprecated ~=.*\",") |
| 34756 | "\"deprecated\","))))))) |
| 34757 | (native-inputs |
| 34758 | (list python-lxml |
| 34759 | python-pytest |
| 34760 | python-setuptools |
| 34761 | python-setuptools-scm)) |
| 34762 | (propagated-inputs |
| 34763 | (list python-deprecated |
| 34764 | python-pycountry |
| 34765 | python-pyyaml |
| 34766 | python-tablib)) |
| 34767 | (home-page "https://bitbucket.org/wmj/csb43") |
| 34768 | (synopsis "Tools for converting from the Spanish banks' format CSB norm |
| 34769 | 43 (CSB43)") |
| 34770 | (description |
| 34771 | "This package provides tools to convert files in the format used by |
| 34772 | multiple Spanish banks (standard 43 of the Spanish Banking Council [CSB43] / |
| 34773 | Spanish Banking Association [AEB43]) to other formats. |
| 34774 | |
| 34775 | Supported output formats are: OFX, HomeBank CSV, HTML, JSON, ODS (OpenDocument |
| 34776 | spreadsheet), CSV, TSV, XLS, XLSX (Microsoft Excel spreadsheet), and YAML.") |
| 34777 | (license license:lgpl3))) |
| 34778 | |
| 34779 | (define-public python-csb43-0.10 |
| 34780 | ;; XXX: 1.0.0 doesn't provide csb43 module where 0.10.1 contains: aeb43, csb43, |
| 34781 | ;; homebank, i18n, ofx, and utils. |
| 34782 | (package |
| 34783 | (inherit python-csb43) |
| 34784 | (name "python-csb43") |
| 34785 | (version "0.10.1") |
| 34786 | ;; tests: 15493 passed, 37 skipped, 7447 warnings |
| 34787 | (source |
| 34788 | (origin |
| 34789 | (method git-fetch) |
| 34790 | (uri (git-reference |
| 34791 | (url "https://bitbucket.org/wmj/csb43") |
| 34792 | (commit version))) |
| 34793 | (file-name (git-file-name name version)) |
| 34794 | (sha256 |
| 34795 | (base32 "0frxcclz7scpndrr7ygqy6k41bcwgwam26yk7n1cnwyim2wkaykd")))))) |
| 34796 | |
| 34797 | (define-public python-febelfin-coda |
| 34798 | (package |
| 34799 | (name "python-febelfin-coda") |
| 34800 | (version "0.3.0") |
| 34801 | (source |
| 34802 | (origin |
| 34803 | (method hg-fetch) |
| 34804 | (uri (hg-reference |
| 34805 | (url "https://foss.heptapod.net/tryton/coda") |
| 34806 | (changeset version))) |
| 34807 | (file-name (string-append name "-" version "-checkout")) |
| 34808 | (sha256 |
| 34809 | (base32 "0rnr2xvwr174dbjixaw5h8bjw5ay5knfbry5qhk7wj8vkh538c13")))) |
| 34810 | (build-system pyproject-build-system) |
| 34811 | (arguments |
| 34812 | (list |
| 34813 | #:test-backend #~'unittest |
| 34814 | #:phases |
| 34815 | #~(modify-phases %standard-phases |
| 34816 | (add-after 'install 'remove-installed-tests |
| 34817 | (lambda* (#:key inputs outputs #:allow-other-keys) |
| 34818 | (with-directory-excursion (site-packages inputs outputs) |
| 34819 | (for-each delete-file |
| 34820 | (list "coda/test.py" |
| 34821 | "coda/test_readme.py")))))))) |
| 34822 | (native-inputs (list python-setuptools)) |
| 34823 | (home-page "https://coda.b2ck.com/") |
| 34824 | (synopsis "Module to parse Belgian CODA files") |
| 34825 | (description |
| 34826 | "This package provides a module to parse Coded statement of account |
| 34827 | (CODA) files as defined be the Belgian Febelfin bank standard.") |
| 34828 | (license license:bsd-3))) |
| 34829 | |
| 34830 | (define-public python-ofxparse |
| 34831 | (package |
| 34832 | (name "python-ofxparse") |
| 34833 | (version "0.21") |
| 34834 | (source |
| 34835 | (origin |
| 34836 | (method url-fetch) |
| 34837 | (uri (pypi-uri "ofxparse" version)) |
| 34838 | (sha256 |
| 34839 | (base32 "19y4sp5l9jqiqzzlbqdfiab42qx7d84n4xm4s7jfq397666vcyh5")))) |
| 34840 | (build-system pyproject-build-system) |
| 34841 | (native-inputs (list python-pynose python-setuptools)) |
| 34842 | (propagated-inputs (list python-beautifulsoup4 python-lxml python-six)) |
| 34843 | (home-page "http://sites.google.com/site/ofxparse") |
| 34844 | (synopsis "Tools for working with the OFX (Open Financial Exchange) file |
| 34845 | format") |
| 34846 | (description "@code{ofxparse} is a parser for Open Financial |
| 34847 | Exchange (.ofx) format files. OFX files are available from almost any online |
| 34848 | banking site, so they work well if you want to pull together your finances |
| 34849 | from multiple sources. Online trading accounts also often provide account |
| 34850 | statements in OFX files.") |
| 34851 | (license license:expat))) |
| 34852 | |
| 34853 | (define-public python-rfc3339-validator |
| 34854 | (package |
| 34855 | (name "python-rfc3339-validator") |
| 34856 | (version "0.1.4") |
| 34857 | (source |
| 34858 | (origin |
| 34859 | (method url-fetch) |
| 34860 | (uri (pypi-uri "rfc3339_validator" version)) |
| 34861 | (sha256 |
| 34862 | (base32 "0srg0b89aikzinw72s433994k5gv5lfyarq1adhas11kz6yjm2hk")))) |
| 34863 | (build-system pyproject-build-system) |
| 34864 | (native-inputs |
| 34865 | (list python-pytest |
| 34866 | python-setuptools |
| 34867 | python-strict-rfc3339)) |
| 34868 | (propagated-inputs |
| 34869 | (list python-six)) |
| 34870 | (home-page "https://github.com/naimetti/rfc3339-validator") |
| 34871 | (synopsis "Python RFC3339 validator") |
| 34872 | (description "This package provides a pure Python RFC3339 validator.") |
| 34873 | (license license:expat))) |
| 34874 | |
| 34875 | (define-public python-platformdirs |
| 34876 | ;; Try to update simultaneously with the bootstrap version in |
| 34877 | ;; (gnu packages python-build). |
| 34878 | (package |
| 34879 | (name "python-platformdirs") |
| 34880 | (version "4.3.6") |
| 34881 | (source |
| 34882 | (origin |
| 34883 | (method url-fetch) |
| 34884 | (uri (pypi-uri "platformdirs" version)) |
| 34885 | (sha256 |
| 34886 | (base32 "01xrwajkmxv3jp6n14y8jndkrhb48p9kxknkmwch8nw8pjnb4zrm")))) |
| 34887 | (build-system pyproject-build-system) |
| 34888 | (native-inputs |
| 34889 | (list python-appdirs |
| 34890 | python-hatchling |
| 34891 | python-hatch-vcs |
| 34892 | python-pytest |
| 34893 | python-pytest-mock)) |
| 34894 | (home-page "https://github.com/platformdirs/platformdirs") |
| 34895 | (synopsis "Determine the appropriate platform-specific directories") |
| 34896 | (description "When writing applications, finding the right location to |
| 34897 | store user data and configuration varies per platform. Even for |
| 34898 | single-platform apps, there may by plenty of nuances in figuring out the right |
| 34899 | location. This small Python module determines the appropriate |
| 34900 | platform-specific directories, e.g. the ``user data dir''.") |
| 34901 | (license license:expat))) |
| 34902 | |
| 34903 | (define-public python-json2html |
| 34904 | (package |
| 34905 | (name "python-json2html") |
| 34906 | (version "1.3.0") |
| 34907 | (source |
| 34908 | (origin |
| 34909 | (method git-fetch) |
| 34910 | (uri (git-reference |
| 34911 | (url "https://github.com/softvar/json2html") |
| 34912 | (commit (string-append "v" version)))) |
| 34913 | (file-name (git-file-name name version)) |
| 34914 | (sha256 |
| 34915 | (base32 "1ncypljnl5y8lsxy6ibcqy412kx3mzxl4ajg67568hvq98kv1sb3")))) |
| 34916 | (build-system pyproject-build-system) |
| 34917 | (arguments |
| 34918 | (list |
| 34919 | #:test-backend #~'custom |
| 34920 | #:test-flags #~(list "test/run_tests.py"))) |
| 34921 | (native-inputs (list python-setuptools)) |
| 34922 | (home-page "https://github.com/softvar/json2html") |
| 34923 | (synopsis "Convert JSON to HTML table") |
| 34924 | (description |
| 34925 | "@code{python-json2html} is a python module to convert JSON into a human |
| 34926 | readable HTML table representation.") |
| 34927 | (license license:expat))) |
| 34928 | |
| 34929 | (define-public python-face |
| 34930 | (package |
| 34931 | (name "python-face") |
| 34932 | (version "24.0.0") |
| 34933 | (source |
| 34934 | (origin |
| 34935 | (method git-fetch) |
| 34936 | (uri (git-reference |
| 34937 | (url "https://github.com/mahmoud/face") |
| 34938 | (commit (string-append "v" version)))) |
| 34939 | (file-name (git-file-name name version)) |
| 34940 | (sha256 |
| 34941 | (base32 "1ps34r3w93rrviwj8xq7ji9l2z301zzny2gx6nrwvgxr8h6bv0kp")))) |
| 34942 | (build-system pyproject-build-system) |
| 34943 | (native-inputs (list python-pytest python-setuptools)) |
| 34944 | (propagated-inputs (list python-boltons)) |
| 34945 | (home-page "https://github.com/mahmoud/face") |
| 34946 | (synopsis "CLI parsing and dispatching microframework") |
| 34947 | (description "@code{python-face} is a Pythonic microframework for building |
| 34948 | command-line applications. |
| 34949 | |
| 34950 | @itemize |
| 34951 | @item First-class subcommand support |
| 34952 | @item Powerful middleware architecture |
| 34953 | @item Separate parser layer |
| 34954 | @item Built-in flagfile support |
| 34955 | @item Handy testing utilities |
| 34956 | @item Themeable help display |
| 34957 | @end itemize") |
| 34958 | (license license:bsd-3))) |
| 34959 | |
| 34960 | (define-public python-glom |
| 34961 | (package |
| 34962 | (name "python-glom") |
| 34963 | (version "24.11.0") |
| 34964 | (source |
| 34965 | (origin |
| 34966 | (method git-fetch) |
| 34967 | (uri (git-reference |
| 34968 | (url "https://github.com/mahmoud/glom") |
| 34969 | (commit (string-append "v" version)))) |
| 34970 | (file-name (git-file-name name version)) |
| 34971 | (sha256 |
| 34972 | (base32 "0vjj6wjxzms947nvbxrlz2cyn0m6483p1laqvcwr8fc117nzary0")))) |
| 34973 | (build-system pyproject-build-system) |
| 34974 | (native-inputs |
| 34975 | (list python-pytest |
| 34976 | python-pyyaml |
| 34977 | python-setuptools)) |
| 34978 | (propagated-inputs |
| 34979 | (list python-attrs |
| 34980 | python-boltons |
| 34981 | python-face)) |
| 34982 | (home-page "https://github.com/mahmoud/glom") |
| 34983 | (synopsis "Declaratively restructure data") |
| 34984 | (description "Real applications have real data, and real data |
| 34985 | nests---objects inside of objects inside of lists of objects. glom is a new |
| 34986 | and powerful way to handle real-world data, featuring: |
| 34987 | |
| 34988 | @itemize |
| 34989 | @item Path-based access to nested data structures |
| 34990 | @item Readable, meaningful error messages |
| 34991 | @item Declarative data transformation, using lightweight, Pythonic specifications |
| 34992 | @item Built-in data exploration and debugging features |
| 34993 | @end itemize") |
| 34994 | (license license:bsd-3))) |
| 34995 | |
| 34996 | (define-public python-box |
| 34997 | (package |
| 34998 | (name "python-box") |
| 34999 | (version "7.3.2") |
| 35000 | (source |
| 35001 | (origin |
| 35002 | (method git-fetch) |
| 35003 | (uri |
| 35004 | (git-reference |
| 35005 | (url "https://github.com/cdgriffith/Box") |
| 35006 | (commit version))) |
| 35007 | (file-name (git-file-name name version)) |
| 35008 | (sha256 |
| 35009 | (base32 "0nr8cajrhdwxm3ac5gclajqck7xywlpqnwvff072va5ki0if6lv9")))) |
| 35010 | (build-system pyproject-build-system) |
| 35011 | (arguments |
| 35012 | (list #:test-flags #~(list "-k" "not test_to_yaml_ruamel"))) |
| 35013 | (native-inputs |
| 35014 | (list python-pytest |
| 35015 | python-setuptools)) |
| 35016 | (propagated-inputs |
| 35017 | (list python-msgpack |
| 35018 | python-ruamel.yaml |
| 35019 | python-tomli-w)) |
| 35020 | (home-page "https://github.com/cdgriffith/Box") |
| 35021 | (synopsis "Advanced Python dictionaries with dot notation access") |
| 35022 | (description |
| 35023 | "This package provides the @code{python-box} Python module. |
| 35024 | It implements advanced Python dictionaries with dot notation access.") |
| 35025 | (license license:expat))) |
| 35026 | |
| 35027 | (define-public python-fields |
| 35028 | (let ((commit "cb473d126b926621c4423ecf59387da9f0f26563") |
| 35029 | (revision "0")) |
| 35030 | (package |
| 35031 | (name "python-fields") |
| 35032 | (version (git-version "5.0.0" revision commit)) |
| 35033 | (source |
| 35034 | (origin |
| 35035 | (method git-fetch) |
| 35036 | (uri (git-reference |
| 35037 | (url "https://github.com/ionelmc/python-fields") |
| 35038 | (commit commit))) |
| 35039 | (file-name (git-file-name name version)) |
| 35040 | (sha256 |
| 35041 | (base32 "1hc39l7ypwn4n11wfdhr8z0m46c96k99lnvw65bw8yadm2f93s9r")))) |
| 35042 | (build-system pyproject-build-system) |
| 35043 | (arguments |
| 35044 | (list #:test-flags #~(list "--ignore=tests/test_perf.py"))) |
| 35045 | (native-inputs (list python-pytest-8 |
| 35046 | python-pytest-benchmark |
| 35047 | python-setuptools |
| 35048 | python-wheel)) |
| 35049 | (home-page "https://python-fields.readthedocs.io/") |
| 35050 | (synopsis "Python container class boilerplate killer") |
| 35051 | (description "Avoid repetitive boilerplate code in Python classes.") |
| 35052 | (license license:bsd-3)))) |
| 35053 | |
| 35054 | (define-public python-aspectlib |
| 35055 | (package |
| 35056 | (name "python-aspectlib") |
| 35057 | (version "2.0.0") |
| 35058 | (source |
| 35059 | (origin |
| 35060 | (method git-fetch) |
| 35061 | (uri (git-reference |
| 35062 | (url "https://github.com/ionelmc/python-aspectlib") |
| 35063 | (commit (string-append "v" version)))) |
| 35064 | (file-name (git-file-name name version)) |
| 35065 | (sha256 |
| 35066 | (base32 "07xwp6gp1h5hcyakx607xbgmciqxm799v2k7c8wnrqqxd410zyis")))) |
| 35067 | (build-system pyproject-build-system) |
| 35068 | (arguments |
| 35069 | (list |
| 35070 | #:test-flags |
| 35071 | #~(list ;; XXX: Require more dependencies. |
| 35072 | "--ignore=tests/test_integrations.py" |
| 35073 | "--ignore=tests/test_integrations_py3.py") |
| 35074 | #:phases |
| 35075 | #~(modify-phases %standard-phases |
| 35076 | (add-after 'unpack 'fix-pytest-config |
| 35077 | (lambda _ |
| 35078 | ;; Tests fails with warnings: pytest.PytestRemovedIn9Warning: |
| 35079 | ;; The (path: py.path.local) argument is deprecated, please |
| 35080 | ;; use (collection_path: pathlib.Path). |
| 35081 | (delete-file "pytest.ini")))))) |
| 35082 | (native-inputs |
| 35083 | (list python-pytest-8 |
| 35084 | python-setuptools |
| 35085 | python-tornado)) |
| 35086 | (propagated-inputs |
| 35087 | (list python-fields)) |
| 35088 | (home-page "https://github.com/ionelmc/python-aspectlib") |
| 35089 | (synopsis "Python monkey-patching and decorators") |
| 35090 | (description |
| 35091 | "This package provides an aspect-oriented programming, monkey-patch |
| 35092 | and decorators library. It is useful when changing behavior in existing |
| 35093 | code is desired. It includes tools for debugging and testing: |
| 35094 | simple mock/record and a complete capture/replay framework.") |
| 35095 | (license license:bsd-2))) |
| 35096 | |
| 35097 | (define-public python-ijson |
| 35098 | (package |
| 35099 | (name "python-ijson") |
| 35100 | (version "3.5.0") |
| 35101 | (source |
| 35102 | (origin |
| 35103 | (method url-fetch) |
| 35104 | (uri (pypi-uri "ijson" version)) |
| 35105 | (sha256 |
| 35106 | (base32 "0cbg4h29aysf4mq3iyrqzd2s1yb70b9vhg0vfc954gqff9h8fs4l")))) |
| 35107 | (inputs |
| 35108 | ;; yajl is optional, but compiling with it makes faster |
| 35109 | ;; backends available to ijson: |
| 35110 | (list yajl)) |
| 35111 | (native-inputs |
| 35112 | (list python-pytest |
| 35113 | python-setuptools)) |
| 35114 | (build-system pyproject-build-system) |
| 35115 | (home-page "https://github.com/ICRAR/ijson") |
| 35116 | (synopsis "Iterative JSON parser with Python iterator interfaces") |
| 35117 | (description |
| 35118 | "Ijson is an iterative JSON parser with standard Python iterator |
| 35119 | interfaces.") |
| 35120 | (license license:bsd-3))) |
| 35121 | |
| 35122 | (define-public python-ordered-set |
| 35123 | (package |
| 35124 | (name "python-ordered-set") |
| 35125 | (version "4.1.0") |
| 35126 | (source |
| 35127 | (origin |
| 35128 | (method url-fetch) |
| 35129 | (uri (pypi-uri "ordered-set" version)) |
| 35130 | (sha256 |
| 35131 | (base32 "1a34fg3r3480nfm6652kyqql3lwixf8jirzdja9camvnr128wjk9")))) |
| 35132 | (build-system pyproject-build-system) |
| 35133 | (native-inputs (list python-cython python-flit-core python-pytest)) |
| 35134 | (home-page "https://github.com/simonpercivall/orderedset") |
| 35135 | (synopsis "Ordered Set implementation in Cython") |
| 35136 | (description "This library provides an @code{OrderedSet} data type that |
| 35137 | works like a regular set, but remembers insertion order. It supports the full |
| 35138 | Python @code{set} interface.") |
| 35139 | (license license:asl2.0))) |
| 35140 | |
| 35141 | (define-public python-orgparse |
| 35142 | (package |
| 35143 | (name "python-orgparse") |
| 35144 | (version "0.4.20251020") |
| 35145 | (source |
| 35146 | (origin |
| 35147 | (method git-fetch) |
| 35148 | (uri (git-reference |
| 35149 | (url "https://github.com/karlicoss/orgparse") |
| 35150 | (commit (string-append "v" version)))) |
| 35151 | (file-name (git-file-name name version)) |
| 35152 | (sha256 |
| 35153 | (base32 "0f390gxx5pjpjjbmll0gdlqg92s3d4xi6p8wjkr0cfixa8fvb7s4")))) |
| 35154 | (build-system pyproject-build-system) |
| 35155 | (arguments |
| 35156 | (list |
| 35157 | #:test-flags |
| 35158 | #~(list "--ignore-glob=doc/*" |
| 35159 | ;; XXX: Unclear why those tests fail. |
| 35160 | "--deselect=src/orgparse/tests/test_data.py::test_data[01_attributes]" |
| 35161 | "--deselect=src/orgparse/tests/test_data.py::test_data[03_repeated_tasks]" |
| 35162 | "--deselect=src/orgparse/tests/test_data.py::test_data[04_logbook]" |
| 35163 | "--deselect=src/orgparse/tests/test_misc.py::test_level_0_timestamps"))) |
| 35164 | (native-inputs (list python-hatchling python-hatch-vcs python-pytest)) |
| 35165 | (home-page "https://github.com/karlicoss/orgparse") |
| 35166 | (synopsis "Emacs Org mode parser in Python") |
| 35167 | (description |
| 35168 | "This package is a Python module for reading Emacs Org mode files.") |
| 35169 | (license license:bsd-3))) |
| 35170 | |
| 35171 | (define-public dynaconf |
| 35172 | (package |
| 35173 | (name "dynaconf") |
| 35174 | (version "3.2.11") |
| 35175 | (source |
| 35176 | (origin |
| 35177 | (method git-fetch) |
| 35178 | (uri |
| 35179 | (git-reference |
| 35180 | (url "https://github.com/dynaconf/dynaconf") |
| 35181 | (commit version))) |
| 35182 | (file-name (git-file-name name version)) |
| 35183 | (sha256 |
| 35184 | (base32 "05122x1bwskfqnzi9hqi86h7407byfjvhgczj74x6lp2m6rnwkzl")) |
| 35185 | ;; (patches (search-patches "dynaconf-unvendor-deps.patch")) |
| 35186 | (modules '((guix build utils))) |
| 35187 | ;; Remove vendored dependencies |
| 35188 | (snippet |
| 35189 | #~(let ((unvendor '("click" "ruamel" "toml"))) |
| 35190 | (with-directory-excursion "dynaconf/vendor" |
| 35191 | (for-each delete-file-recursively unvendor)) |
| 35192 | (substitute* (find-files "." "\\.py$") |
| 35193 | (("from dynaconf\\.vendor import (click|ruamel|toml)([^l]+.*)$" |
| 35194 | _ target rest) |
| 35195 | (string-append "import " target rest)) |
| 35196 | (("dynaconf\\.vendor\\.(click|ruamel|toml)" _ target) |
| 35197 | target)))))) |
| 35198 | (build-system pyproject-build-system) |
| 35199 | (arguments |
| 35200 | (list |
| 35201 | #:test-flags |
| 35202 | #~(list "--ignore=tests/test_vault.py" ; depend on hvac and a live Vault |
| 35203 | "-k" #$(let ((click-tests '("test_negative_get" |
| 35204 | "test_not_found_key_exit_error[get]" |
| 35205 | "test_inspect_invalid_format"))) |
| 35206 | ;; Disable integration tests |
| 35207 | (string-append "not integration and not " |
| 35208 | ;; These tests fail because we use |
| 35209 | ;; Click 8.* instead of Click 7 |
| 35210 | (string-join click-tests " and not "))) |
| 35211 | "tests") |
| 35212 | #:phases |
| 35213 | #~(modify-phases %standard-phases |
| 35214 | (add-after 'unpack 'patch-for-click-8 |
| 35215 | (lambda _ |
| 35216 | (substitute* "dynaconf/cli.py" |
| 35217 | (("click.get_os_args\\()") ;deprecated from Click 8.1+ |
| 35218 | "sys.argv[1:]"))))))) |
| 35219 | (propagated-inputs |
| 35220 | (list python-click python-configobj python-ruamel.yaml-0.16 |
| 35221 | python-toml python-tomli)) |
| 35222 | (native-inputs |
| 35223 | (list python-django |
| 35224 | python-flask |
| 35225 | python-pytest |
| 35226 | python-pytest-mock |
| 35227 | python-setuptools)) |
| 35228 | (home-page "https://www.dynaconf.com/") |
| 35229 | (synopsis "The dynamic configurator for your Python project") |
| 35230 | (description |
| 35231 | "This package provides @code{dynaconf} the dynamic configurator manager for |
| 35232 | your Python project. It provides features such as: |
| 35233 | |
| 35234 | @itemize |
| 35235 | @item Inspired by the @url{https://12factor.net/config, 12-factor application guide}; |
| 35236 | @item Settings management (default values, validation, parsing, templating); |
| 35237 | @item Protection of sensitive information (passwords/tokens); |
| 35238 | @item Multiple file formats @code{toml|yaml|json|ini|py} and also customizable |
| 35239 | loaders; |
| 35240 | @item Full support for environment variables to override existing settings |
| 35241 | (dotenv support included); |
| 35242 | @item Optional layered system for multiple environments @code{[default, |
| 35243 | development, testing, production]}; |
| 35244 | @item Built-in support for Hashicorp Vault and Redis as settings and secrets storage; |
| 35245 | @item Built-in extensions for Django and Flask web frameworks; |
| 35246 | @item CLI for common operations such as @code{init, list, write, validate, export}. |
| 35247 | @end itemize") |
| 35248 | (license license:expat))) |
| 35249 | |
| 35250 | (define-public python-pudb |
| 35251 | ;; TODO: Rename to pudb as it's a final program. |
| 35252 | (package |
| 35253 | (name "python-pudb") |
| 35254 | (version "2025.1.3") |
| 35255 | (source |
| 35256 | (origin |
| 35257 | (method url-fetch) |
| 35258 | (uri (pypi-uri "pudb" version)) |
| 35259 | (sha256 |
| 35260 | (base32 "1x210l6wxpn7k8jbca7ahzgsld938cnb6jlg3nrq8vr6xza75zb9")))) |
| 35261 | (build-system pyproject-build-system) |
| 35262 | (arguments |
| 35263 | (list |
| 35264 | #:phases |
| 35265 | #~(modify-phases %standard-phases |
| 35266 | (add-before 'check 'pre-check |
| 35267 | (lambda _ |
| 35268 | (setenv "HOME" "/tmp")))))) |
| 35269 | (native-inputs |
| 35270 | (list python-hatchling |
| 35271 | python-pytest |
| 35272 | python-pytest-mock |
| 35273 | python-numpy)) |
| 35274 | (propagated-inputs |
| 35275 | (list python-jedi |
| 35276 | python-packaging |
| 35277 | python-pygments |
| 35278 | python-typing-extensions |
| 35279 | python-urwid |
| 35280 | python-urwid-readline)) |
| 35281 | (home-page "https://documen.tician.de/pudb/") |
| 35282 | (synopsis "Console-based Python debugger") |
| 35283 | (description |
| 35284 | "@command{pudb} is a full-screen, console-based Python debugger providing |
| 35285 | all the niceties of modern GUI-based debuggers in a more lightweight and |
| 35286 | keyboard-friendly package.") |
| 35287 | (license license:expat))) |
| 35288 | |
| 35289 | (define-public python-iwlib |
| 35290 | (package |
| 35291 | (name "python-iwlib") |
| 35292 | (version "1.7.0") |
| 35293 | (source |
| 35294 | (origin |
| 35295 | (method git-fetch) |
| 35296 | (uri (git-reference |
| 35297 | (url "https://github.com/nhoad/python-iwlib") |
| 35298 | (commit version))) |
| 35299 | (file-name (git-file-name name version)) |
| 35300 | (sha256 |
| 35301 | (base32 "0z6bgmzxf849irayzshiw3bvvhrr8j0il6113937x7fdam122gmr")))) |
| 35302 | (build-system pyproject-build-system) |
| 35303 | (arguments |
| 35304 | (list |
| 35305 | #:phases |
| 35306 | #~(modify-phases %standard-phases |
| 35307 | (add-before 'check 'cleanup |
| 35308 | (lambda _ |
| 35309 | (delete-file-recursively "iwlib")))))) |
| 35310 | (native-inputs (list python-pytest python-setuptools)) |
| 35311 | (inputs (list wireless-tools)) |
| 35312 | (propagated-inputs (list python-cffi)) |
| 35313 | (home-page "https://github.com/nhoad/python-iwlib") |
| 35314 | (synopsis "Python module to interface with iwlib") |
| 35315 | (description |
| 35316 | "This package provides a Python interface to iw wireless tools.") |
| 35317 | (license license:gpl2))) |
| 35318 | |
| 35319 | (define-public python-pdoc3 |
| 35320 | (package |
| 35321 | (name "python-pdoc3") |
| 35322 | (version "0.11.6") |
| 35323 | (source |
| 35324 | (origin |
| 35325 | (method url-fetch) |
| 35326 | (uri (pypi-uri "pdoc3" version)) |
| 35327 | (sha256 |
| 35328 | (base32 "11z318lnvd7nxkpw2556hh6hvid6gi8mxgv4zf8x2m57hx5yi98y")))) |
| 35329 | (build-system pyproject-build-system) |
| 35330 | (arguments |
| 35331 | (list #:test-backend #~'unittest |
| 35332 | #:test-flags #~(list "-v" "pdoc.test"))) |
| 35333 | (native-inputs |
| 35334 | (list python-setuptools-git |
| 35335 | python-setuptools |
| 35336 | python-setuptools-scm)) |
| 35337 | (propagated-inputs |
| 35338 | (list python-mako |
| 35339 | python-markdown)) |
| 35340 | (home-page "https://pdoc3.github.io/pdoc/") |
| 35341 | (synopsis "Auto-generate API documentation for Python projects") |
| 35342 | (description |
| 35343 | "This package auto-generates API documentation from Python projects |
| 35344 | already existing modules and objects docstrings.") |
| 35345 | (license license:agpl3+))) |
| 35346 | |
| 35347 | (define-public python-piexif |
| 35348 | (package |
| 35349 | (name "python-piexif") |
| 35350 | (version "1.1.3") |
| 35351 | (source |
| 35352 | (origin |
| 35353 | (method git-fetch) |
| 35354 | (uri (git-reference |
| 35355 | (url "https://github.com/hMatoba/Piexif") |
| 35356 | (commit version))) |
| 35357 | (file-name (git-file-name name version)) |
| 35358 | (sha256 |
| 35359 | (base32 "1akmaxq1cjr8wghwaaql1bd3sajl8psshl58lprgfsigrvnklp8b")) |
| 35360 | (patches |
| 35361 | (search-patches "python-piexif-fix-tests-with-pillow-7.2.patch")))) |
| 35362 | (build-system pyproject-build-system) |
| 35363 | (native-inputs (list unzip python-pillow python-pytest python-setuptools)) |
| 35364 | (home-page "https://github.com/hMatoba/Piexif") |
| 35365 | (synopsis "Simplify exif manipulations with Python") |
| 35366 | (description |
| 35367 | "Piexif simplifies interacting with EXIF data in Python. It includes the |
| 35368 | tools necessary for extracting, creating, manipulating, converting and writing |
| 35369 | EXIF data to JPEG, WebP and TIFF files.") |
| 35370 | (license license:expat))) |
| 35371 | |
| 35372 | (define-public python-pyrss2gen |
| 35373 | (package |
| 35374 | (name "python-pyrss2gen") |
| 35375 | (version "1.1") |
| 35376 | (source |
| 35377 | (origin |
| 35378 | (method url-fetch) |
| 35379 | (uri (pypi-uri "PyRSS2Gen" version)) |
| 35380 | (sha256 |
| 35381 | (base32 "1rvf5jw9hknqz02rp1vg8abgb1lpa0bc65l7ylmlillqx7bswq3r")))) |
| 35382 | (build-system pyproject-build-system) |
| 35383 | (arguments (list #:tests? #f)) ; No tests. |
| 35384 | (native-inputs (list python-setuptools)) |
| 35385 | (home-page "http://dalkescientific.com/Python/PyRSS2Gen.html") |
| 35386 | (synopsis "Generate RSS 2.0 feeds using a Python data structure") |
| 35387 | (description "PyRSS2Gen is the interface to generate RSS 2.0 feeds. |
| 35388 | PyRSS2Gen builds the feed up by using a XML generator.") |
| 35389 | (license license:bsd-3))) |
| 35390 | |
| 35391 | (define-public python-doit |
| 35392 | (package |
| 35393 | (name "python-doit") |
| 35394 | (version "0.36.0") |
| 35395 | (source |
| 35396 | (origin |
| 35397 | (method url-fetch) |
| 35398 | (uri (pypi-uri "doit" version)) |
| 35399 | (sha256 |
| 35400 | (base32 "1g1lwaxb9q3a6c24sr3gw5bspsk5frbrk2frb7z25jqljp67rl3i")))) |
| 35401 | (build-system pyproject-build-system) |
| 35402 | ;; This is not a serious test failure. It's probably due to the load path |
| 35403 | ;; at test time. |
| 35404 | (arguments (list #:test-flags '(list "-k" "not test_execute"))) |
| 35405 | (propagated-inputs |
| 35406 | (list python-cloudpickle python-importlib-metadata)) |
| 35407 | (native-inputs (list python-pytest python-setuptools python-wheel)) |
| 35408 | (home-page "https://pydoit.org") |
| 35409 | (synopsis "Automation tool to execute any kind of task in a build-tools |
| 35410 | fashion") |
| 35411 | (description "doit is an automation tool that brings the power of |
| 35412 | build-tools to execute any kind of task. |
| 35413 | |
| 35414 | A task describes some computation to be done (actions), and contains some |
| 35415 | extra meta-data. The actions can be external programs or Python functions. A |
| 35416 | single task may define more than one action. doit uses the task’s meta-data |
| 35417 | to: |
| 35418 | |
| 35419 | @itemize |
| 35420 | @item cache task results |
| 35421 | @item correct execution order |
| 35422 | @item parallel execution |
| 35423 | @item powerful dependency system |
| 35424 | @end itemize") |
| 35425 | (license license:expat))) |
| 35426 | |
| 35427 | (define-public python-phpserialize |
| 35428 | (package |
| 35429 | (name "python-phpserialize") |
| 35430 | (version "1.3") |
| 35431 | (source |
| 35432 | (origin |
| 35433 | (method git-fetch) |
| 35434 | (uri (git-reference |
| 35435 | (url "https://github.com/mitsuhiko/phpserialize") |
| 35436 | (commit version))) |
| 35437 | (file-name (git-file-name name version)) |
| 35438 | (sha256 |
| 35439 | (base32 "062lpv2zpkn96v8gpskvw2pfgh3mafnb0s6xxa0jwbr7vz78wgdr")))) |
| 35440 | (build-system pyproject-build-system) |
| 35441 | (arguments |
| 35442 | (list |
| 35443 | ;; XXX: Unclear why this test fails. |
| 35444 | #:test-flags #~(list "-k" "not test_dumps_dict" "tests.py") |
| 35445 | #:phases |
| 35446 | #~(modify-phases %standard-phases |
| 35447 | (add-after 'unpack 'patch-tests |
| 35448 | (lambda _ |
| 35449 | (substitute* "tests.py" |
| 35450 | (("assert_\\(b'WP_User' in x\\)") |
| 35451 | "assertIn(b'WP_User', x)"))))))) |
| 35452 | (native-inputs (list python-pytest python-setuptools)) |
| 35453 | (home-page "https://github.com/mitsuhiko/phpserialize") |
| 35454 | (synopsis "Python port of the serialize and unserialize functions of PHP") |
| 35455 | (description |
| 35456 | "This package provides a port of the @code{serialize} and |
| 35457 | @code{unserialize} functions of PHP for Python.") |
| 35458 | (license license:bsd-3))) |
| 35459 | |
| 35460 | (define-public python-pycapnp |
| 35461 | (package |
| 35462 | (name "python-pycapnp") |
| 35463 | (version "2.2.4") |
| 35464 | (source |
| 35465 | (origin |
| 35466 | (method git-fetch) |
| 35467 | (uri (git-reference |
| 35468 | (url "https://github.com/capnproto/pycapnp") |
| 35469 | (commit (string-append "v" version)))) |
| 35470 | (file-name (git-file-name name version)) |
| 35471 | (sha256 |
| 35472 | (base32 "0vzz1s7zrp27dnsrppshrisbn054w56qbva3shbnwpkdcckw411j")))) |
| 35473 | (build-system pyproject-build-system) |
| 35474 | (arguments |
| 35475 | (list |
| 35476 | #:phases |
| 35477 | #~(modify-phases %standard-phases |
| 35478 | (add-before 'build 'set-force-system-capnp |
| 35479 | (lambda _ |
| 35480 | (setenv "PIP_CONFIG_SETTINGS" "force-system-libcapnp=True"))) |
| 35481 | (add-after 'install 'copy-missing-schemas |
| 35482 | (lambda _ |
| 35483 | (let* ((out #$output) |
| 35484 | (capnp-clang #$(this-package-input "capnproto-clang")) |
| 35485 | (site-pkgs (car (find-files (string-append out "/lib") |
| 35486 | "^site-packages$" |
| 35487 | #:directories? #t))) |
| 35488 | (target-dir (string-append site-pkgs "/capnp")) |
| 35489 | (schema-files (find-files |
| 35490 | (string-append capnp-clang |
| 35491 | "/include/capnp") |
| 35492 | "\\.capnp$"))) |
| 35493 | (for-each (lambda (file) |
| 35494 | (install-file file target-dir)) schema-files)))) |
| 35495 | ;; The 'sanity-check' phase fails with "ModuleNotFoundError: No |
| 35496 | ;; module named 'schema_capnp'". This module is generated |
| 35497 | ;; dynamically via import hooks at runtime |
| 35498 | (delete 'sanity-check)))) |
| 35499 | (native-inputs (list pkg-config |
| 35500 | python-cython |
| 35501 | python-jinja2 |
| 35502 | python-pkgconfig |
| 35503 | python-pytest |
| 35504 | python-pytest-asyncio |
| 35505 | python-setuptools)) |
| 35506 | (inputs (list capnproto-clang)) |
| 35507 | (home-page "https://github.com/capnproto/pycapnp") |
| 35508 | (synopsis "Cython wrapping of the C++ Cap'n Proto library") |
| 35509 | (description |
| 35510 | "This package provides a cython wrapping of the C++ Cap'n Proto library.") |
| 35511 | (license license:bsd-2))) |
| 35512 | |
| 35513 | (define-public python-pydevtool |
| 35514 | (package |
| 35515 | (name "python-pydevtool") |
| 35516 | (version "0.3.0") |
| 35517 | (source |
| 35518 | (origin |
| 35519 | (method url-fetch) |
| 35520 | (uri (pypi-uri "pydevtool" version)) |
| 35521 | (sha256 |
| 35522 | (base32 "12pwhvvm4pgvfxj18ylb66drxm28b2cpb5rbxqrsrk1k7m7vmqr5")))) |
| 35523 | (build-system pyproject-build-system) |
| 35524 | (arguments (list #:tests? #false)) ;no tests |
| 35525 | (propagated-inputs (list python-doit python-rich-click)) |
| 35526 | (native-inputs (list python-setuptools python-wheel)) |
| 35527 | (home-page "https://github.com/pydoit/pydevtool") |
| 35528 | (synopsis "CLI dev tools powered by pydoit") |
| 35529 | (description "This package provides command line tools, powered by pydoit. |
| 35530 | It offers integration with @code{click} and @code{rich} for custom CLI and |
| 35531 | these linters: @code{pycodestlye}, @code{pyflakes}") |
| 35532 | (license license:expat))) |
| 35533 | |
| 35534 | (define-public nikola |
| 35535 | (package |
| 35536 | (name "nikola") |
| 35537 | (version "8.3.3") |
| 35538 | (source |
| 35539 | (origin |
| 35540 | (method url-fetch) |
| 35541 | (uri (pypi-uri "nikola" version)) |
| 35542 | (sha256 |
| 35543 | (base32 "1ixi7bhcmyl6nxh4psjkj4q4wq5midgnks294r64zciazippsvb3")))) |
| 35544 | (build-system pyproject-build-system) |
| 35545 | (arguments |
| 35546 | (list |
| 35547 | ;; tests: 506 passed, 16 skipped, 10 deselected, 5 xfailed, 66 warnings |
| 35548 | #:test-flags |
| 35549 | #~(list "--durations=10" |
| 35550 | "--ignore=tests/integration/test_dev_server.py" |
| 35551 | "-k" (string-join |
| 35552 | ;; Some time difference in example tests. |
| 35553 | (list "not test_serves_root_dir[http://example.org/deep/down/a/rabbit/hole]" |
| 35554 | "test_serves_root_dir[https://example.org:1234/blog]" |
| 35555 | "test_serves_root_dir[https://example.org:3456/blog/]" |
| 35556 | "test_serves_root_dir[https://example.org]" |
| 35557 | ;; AssertionError: Calls not found. |
| 35558 | "test_write_content_does_not_detroy_text" |
| 35559 | ;; AssertionError: assert 'January 10, 2006, |
| 35560 | ;; 12:34:56\u202fPM -0500' == 'January 10, 2006, |
| 35561 | ;; 12:34:56\u202fPM EST' |
| 35562 | "test_format_date_timezone") |
| 35563 | " and not ")))) |
| 35564 | (native-inputs |
| 35565 | (list nss-certs-for-test |
| 35566 | python-feedparser |
| 35567 | python-freezegun |
| 35568 | python-pytest |
| 35569 | python-setuptools)) |
| 35570 | (inputs |
| 35571 | (list python-babel |
| 35572 | python-blinker |
| 35573 | python-dateutil |
| 35574 | python-docutils |
| 35575 | python-doit |
| 35576 | python-jinja2 ;; for themes |
| 35577 | python-lxml |
| 35578 | python-mako |
| 35579 | python-markdown |
| 35580 | python-natsort |
| 35581 | python-notebook ;; for ipynb |
| 35582 | python-phpserialize ;; for wordpress import |
| 35583 | python-piexif |
| 35584 | python-pillow |
| 35585 | python-pygments |
| 35586 | python-pyrss2gen |
| 35587 | python-requests |
| 35588 | python-ruamel.yaml ;; for YAML metadata |
| 35589 | python-toml |
| 35590 | python-unidecode |
| 35591 | python-yapsy)) |
| 35592 | (home-page "https://getnikola.com/") |
| 35593 | (synopsis "Modular, fast and simple static website and blog generator") |
| 35594 | (description "Nikola generates static websites and blogs. Out of the box, |
| 35595 | it supports reStructuredText, Markdown, IPython (Jupyter) Notebooks and HTML, |
| 35596 | and has plugins for many other formats.") |
| 35597 | (license license:expat))) |
| 35598 | |
| 35599 | (define-public nbss-upload |
| 35600 | (package |
| 35601 | (name "nbss-upload") |
| 35602 | (version "0.1") |
| 35603 | (source |
| 35604 | (origin |
| 35605 | (method git-fetch) |
| 35606 | (uri (git-reference |
| 35607 | (url "https://github.com/notebook-sharing-space/nbss-upload") |
| 35608 | (commit (string-append "v" version)))) |
| 35609 | (file-name (git-file-name name version)) |
| 35610 | (sha256 |
| 35611 | (base32 "0cxj4zqcxzi3c5kw649jxmdpnbyrkrwx4licxdg6zc317v8gxw54")))) |
| 35612 | (build-system pyproject-build-system) |
| 35613 | (arguments (list #:tests? #f)) ;no tests |
| 35614 | (native-inputs (list python-setuptools)) |
| 35615 | (propagated-inputs (list python-requests)) |
| 35616 | (home-page "https://github.com/notebook-sharing-space/nbss-upload") |
| 35617 | (synopsis "Upload notebooks to a notebooksharing.space instance") |
| 35618 | (description |
| 35619 | "Upload notebooks as @code{.ipynb}, @code{.rmd}, and @code{.html} to a |
| 35620 | notebooksharing.space instance.") |
| 35621 | (license license:bsd-3))) |
| 35622 | |
| 35623 | (define-public python-reedsolo |
| 35624 | (package |
| 35625 | (name "python-reedsolo") |
| 35626 | (version "1.7.0") |
| 35627 | (source |
| 35628 | (origin |
| 35629 | (method git-fetch) |
| 35630 | (uri (git-reference |
| 35631 | (url "https://github.com/tomerfiliba/reedsolomon") |
| 35632 | (commit (string-append "v" version)))) |
| 35633 | (file-name (git-file-name name version)) |
| 35634 | (sha256 |
| 35635 | (base32 "078f02cal1nn53v10spx141hd5hi22a3xxrz1j32f7cph7b46dwz")))) |
| 35636 | (build-system pyproject-build-system) |
| 35637 | (native-inputs (list python-pytest python-setuptools)) |
| 35638 | (home-page "https://github.com/tomerfiliba/reedsolomon") |
| 35639 | (synopsis "Pure-Python Reed Solomon encoder/decoder") |
| 35640 | (description |
| 35641 | "A pure-python universal errors-and-erasures Reed-Solomon Codec, based on |
| 35642 | the tutorial at Wikiversity. This is a burst-type implementation, so that it |
| 35643 | supports any Galois field higher than 2^3, but not binary streams.") |
| 35644 | (license license:public-domain))) |
| 35645 | |
| 35646 | (define-public python-esprima |
| 35647 | (package |
| 35648 | (name "python-esprima") |
| 35649 | (version "4.0.1") |
| 35650 | (source |
| 35651 | (origin |
| 35652 | (method git-fetch) |
| 35653 | (uri (git-reference |
| 35654 | (url "https://github.com/Kronuz/esprima-python") |
| 35655 | (commit (string-append "v" version)))) |
| 35656 | (file-name (git-file-name name version)) |
| 35657 | (sha256 |
| 35658 | (base32 "0yk80j63mds4qvdjk79yp6a831vl5kc17cwkxamir1wp2w4hznas")))) |
| 35659 | (build-system pyproject-build-system) |
| 35660 | (arguments |
| 35661 | (list |
| 35662 | ;; XXX: pytest fails to collect tests, and a few tests are failing |
| 35663 | ;; using unittest backend. In particular, offsets with math characters |
| 35664 | ;; and uncompiled regexps. |
| 35665 | #:tests? #f |
| 35666 | #:test-backend #~'unittest |
| 35667 | #:test-flags |
| 35668 | #~(list "-k" |
| 35669 | (string-join (list |
| 35670 | ;; XXX: Character offsets with maths. |
| 35671 | "not test_math_alef" |
| 35672 | "test_math_dal_part" |
| 35673 | "test_math_kaf_lam" |
| 35674 | "test_math_zain_start" |
| 35675 | ;; XXX: Uncompiled regexps. |
| 35676 | "test_yield_arg_regexp1" |
| 35677 | "test_yield_arg_regexp2" |
| 35678 | "test_migrated_0005_source" |
| 35679 | "test_u_flag_valid_range" |
| 35680 | "test_migrated_0049" |
| 35681 | "test_migrated_0050_source") |
| 35682 | " and not ")))) |
| 35683 | (native-inputs (list python-setuptools)) |
| 35684 | (home-page "https://github.com/Kronuz/esprima-python") |
| 35685 | (synopsis "ECMAScript parsing infrastructure for analysis in Python") |
| 35686 | (description |
| 35687 | "This package provides ECMAScript parsing infrastructure for |
| 35688 | multipurpose analysis in Python.") |
| 35689 | (license license:bsd-3))) |
| 35690 | |
| 35691 | (define-public python-psycopg2-binary |
| 35692 | (package |
| 35693 | (name "python-psycopg2-binary") |
| 35694 | (version "2.9.10") |
| 35695 | (source |
| 35696 | (origin |
| 35697 | (method url-fetch) |
| 35698 | (uri (pypi-uri "psycopg2-binary" version)) |
| 35699 | (sha256 |
| 35700 | (base32 "1qkdl21agnifabk508py6m0q4ggixx13k63xlp6qma8ak7kg0gab")))) |
| 35701 | (build-system pyproject-build-system) |
| 35702 | (arguments |
| 35703 | ;; Tests are disable because they need a live instance of PostgreSQL. |
| 35704 | '(#:tests? #f)) |
| 35705 | (native-inputs (list python-setuptools python-wheel)) |
| 35706 | (inputs (list postgresql)) |
| 35707 | (home-page "https://psycopg.org/") |
| 35708 | (synopsis "PostgreSQL database adapter for Python") |
| 35709 | (description |
| 35710 | "Psycopg is a PostgreSQL database adapter for the Python programming |
| 35711 | language. Its main features are the complete implementation of the Python DB |
| 35712 | API 2.0 specification and the thread safety (several threads can share the |
| 35713 | same connection). It was designed for heavily multi-threaded applications |
| 35714 | that create and destroy lots of cursors and make a large number of concurrent |
| 35715 | @code{INSERT}s or @code{UPDATE}s. |
| 35716 | |
| 35717 | Psycopg 2 is mostly implemented in C as a libpq wrapper, resulting in |
| 35718 | being both efficient and secure. It features client-side and |
| 35719 | server-side cursors, asynchronous communication and notifications, |
| 35720 | @code{COPY TO}/@code{COPY FROM} support. Many Python types are supported |
| 35721 | out-of-the-box and adapted to matching PostgreSQL data types; |
| 35722 | adaptation can be extended and customized thanks to a flexible objects |
| 35723 | adaptation system. |
| 35724 | |
| 35725 | Psycopg 2 is both Unicode and Python 3 friendly.") |
| 35726 | (license license:lgpl3+))) |
| 35727 | |
| 35728 | (define-public python-pyfuse3 |
| 35729 | (package |
| 35730 | (name "python-pyfuse3") |
| 35731 | (version "3.4.2") |
| 35732 | (source |
| 35733 | (origin |
| 35734 | (method git-fetch) |
| 35735 | (uri (git-reference |
| 35736 | (url "https://github.com/libfuse/pyfuse3") |
| 35737 | (commit (string-append "v" version)))) |
| 35738 | (file-name (git-file-name name version)) |
| 35739 | (sha256 |
| 35740 | (base32 "1vnsk33ql77ix6wpw4sid0xfyskhgv9p4ifpaqynqsv2g2jnss6y")))) |
| 35741 | (build-system pyproject-build-system) |
| 35742 | (arguments |
| 35743 | (list |
| 35744 | #:test-flags |
| 35745 | ;; FileNotFoundError: [Errno 2] No such file or directory: '/usr/bin' |
| 35746 | #~(list "--deselect=test/test_api.py::test_listdir"))) |
| 35747 | (native-inputs |
| 35748 | (list pkg-config |
| 35749 | python-cython |
| 35750 | python-pytest |
| 35751 | python-setuptools |
| 35752 | python-setuptools-scm)) |
| 35753 | (inputs |
| 35754 | (list fuse)) |
| 35755 | (propagated-inputs |
| 35756 | (list python-trio)) |
| 35757 | (home-page "https://github.com/libfuse/pyfuse3") |
| 35758 | (synopsis "Python bindings to FUSE 3") |
| 35759 | (description "This package provides Python 3 bindings for libfuse 3 with |
| 35760 | async I/O support.") |
| 35761 | (license license:gpl2+))) |
| 35762 | |
| 35763 | (define-public python-ansi-styles |
| 35764 | ;; Releases are not tagged in Git: |
| 35765 | ;; https://github.com/shawwn/ansi-styles-python/issues/2 |
| 35766 | (let ((commit "c1d79c1defaf68c4f1bfe3f9b3fa49667404f5f4") |
| 35767 | (revision "0")) |
| 35768 | (package |
| 35769 | (name "python-ansi-styles") |
| 35770 | (version (git-version "0.2.2" revision commit)) |
| 35771 | (source |
| 35772 | (origin |
| 35773 | (method git-fetch) |
| 35774 | (uri (git-reference |
| 35775 | (url "https://github.com/shawwn/ansi-styles-python") |
| 35776 | (commit commit))) |
| 35777 | (file-name (git-file-name name version)) |
| 35778 | (sha256 |
| 35779 | (base32 "0595v5nxh1j3yv4k668x6yjvabjfpckgjzz6s89cfmwkd70sdkn0")))) |
| 35780 | (build-system pyproject-build-system) |
| 35781 | (native-inputs (list python-poetry-core python-pytest)) |
| 35782 | (home-page "https://github.com/shawwn/ansi-styles-python") |
| 35783 | (synopsis "ANSI escape codes for styling strings in the terminal") |
| 35784 | (description |
| 35785 | "This Python package provide ANSI escape codes |
| 35786 | for styling strings in the terminal.") |
| 35787 | (license license:expat)))) |
| 35788 | |
| 35789 | (define-public python-multipart |
| 35790 | (package |
| 35791 | (name "python-multipart") |
| 35792 | (version "0.0.32") |
| 35793 | (source |
| 35794 | (origin |
| 35795 | (method git-fetch) |
| 35796 | (uri (git-reference |
| 35797 | (url "https://github.com/Kludex/python-multipart") |
| 35798 | (commit version))) |
| 35799 | (file-name (git-file-name name version)) |
| 35800 | (sha256 |
| 35801 | (base32 "0p547qsxpgqbciyng0n0ck10mv4bchbpf9gm351293yv6qgr43ng")))) |
| 35802 | (build-system pyproject-build-system) |
| 35803 | (native-inputs |
| 35804 | (list python-hatchling |
| 35805 | python-pytest |
| 35806 | python-pyyaml)) |
| 35807 | (home-page "https://github.com/Kludex/python-multipart") |
| 35808 | (synopsis "Streaming multipart parser for Python") |
| 35809 | (description |
| 35810 | "This package provides a streaming multipart parser for Python. |
| 35811 | |
| 35812 | It is hosted in PyPI as @url{https://pypi.org/project/python-multipart/, |
| 35813 | python_multipart}.") |
| 35814 | (license license:asl2.0))) |
| 35815 | |
| 35816 | (define-public python-aiopg |
| 35817 | (package |
| 35818 | (name "python-aiopg") |
| 35819 | (version "1.4.0") |
| 35820 | (source |
| 35821 | (origin |
| 35822 | (method git-fetch) |
| 35823 | (uri (git-reference |
| 35824 | (url "https://github.com/aio-libs/aiopg") |
| 35825 | (commit (string-append "v" version)))) |
| 35826 | (file-name (git-file-name name version)) |
| 35827 | (sha256 |
| 35828 | (base32 "0sbf5vfbxivi7fmh99xiviwgq46z5ypi0vsf0vq280934m2naghq")))) |
| 35829 | (build-system pyproject-build-system) |
| 35830 | (arguments |
| 35831 | (list |
| 35832 | #:tests? #f ;they need Docker |
| 35833 | #:phases |
| 35834 | #~(modify-phases %standard-phases |
| 35835 | (add-after 'unpack 'use-default-asyncio |
| 35836 | ;; async_timeout is deprecated, upstream recommends to use |
| 35837 | ;; asyncio, available since Python 3.11. |
| 35838 | (lambda _ |
| 35839 | (substitute* "aiopg/pool.py" |
| 35840 | (("async_timeout") "asyncio")))) |
| 35841 | (add-after 'unpack 'relax-requirements |
| 35842 | (lambda _ |
| 35843 | (substitute* "setup.py" |
| 35844 | (("psycopg2-binary") "psycopg2") |
| 35845 | ;; It's a part of Python 3.11+. |
| 35846 | ((", \"async_timeout>=3.0,<5.0\"") ""))))))) |
| 35847 | (native-inputs |
| 35848 | (list python-setuptools)) |
| 35849 | (propagated-inputs |
| 35850 | (list python-psycopg2)) |
| 35851 | (home-page "https://aiopg.readthedocs.io") |
| 35852 | (synopsis "Postgres integration with asyncio") |
| 35853 | (description |
| 35854 | "aiopg is a library for accessing a PostgreSQL database from the |
| 35855 | asyncio (PEP-3156/tulip) framework. It wraps asynchronous features of the |
| 35856 | Psycopg database driver.") |
| 35857 | (license license:bsd-3))) |
| 35858 | |
| 35859 | (define-public python-shtab |
| 35860 | (package |
| 35861 | (name "python-shtab") |
| 35862 | (version "1.7.1") |
| 35863 | (source |
| 35864 | (origin |
| 35865 | (method url-fetch) |
| 35866 | (uri (pypi-uri "shtab" version)) |
| 35867 | (sha256 |
| 35868 | (base32 "0g14778c5zgiq6b92k40n9irp75c5vcsvl5541cw8bmqxq1cnjsf")))) |
| 35869 | (build-system pyproject-build-system) |
| 35870 | (native-inputs |
| 35871 | (list bash |
| 35872 | python-pytest |
| 35873 | python-pytest-timeout |
| 35874 | python-setuptools |
| 35875 | python-setuptools-scm |
| 35876 | python-wheel)) |
| 35877 | (home-page "https://github.com/iterative/shtab") |
| 35878 | (synopsis "Automagic shell tab completion for Python CLI applications") |
| 35879 | (description |
| 35880 | "This package automatically generates shell tab completion scripts for |
| 35881 | Python CLI apps.") |
| 35882 | (license license:asl2.0))) |
| 35883 | |
| 35884 | (define-public python-pyperf |
| 35885 | (package |
| 35886 | (name "python-pyperf") |
| 35887 | (version "2.10.0") |
| 35888 | (source |
| 35889 | (origin |
| 35890 | (method git-fetch) |
| 35891 | (uri (git-reference |
| 35892 | (url "https://github.com/psf/pyperf") |
| 35893 | (commit version))) |
| 35894 | (file-name (git-file-name name version)) |
| 35895 | (sha256 |
| 35896 | (base32 "1xl60vrwp2zqjwv685xxj8b5hxblshf5f4s7qmq8fmn445mg9aiw")))) |
| 35897 | (build-system pyproject-build-system) |
| 35898 | (arguments |
| 35899 | (list |
| 35900 | #:test-flags |
| 35901 | #~(list "--ignore=pyperf/tests/test_examples.py"))) |
| 35902 | (native-inputs |
| 35903 | (list python-psutil-bootstrap |
| 35904 | python-pytest |
| 35905 | python-setuptools)) |
| 35906 | (home-page "https://github.com/psf/pyperf") |
| 35907 | (synopsis "Toolkit for running Python benchmarks") |
| 35908 | (description |
| 35909 | "The Python @code{pyperf} module is a toolkit for writing, running and |
| 35910 | analyzing benchmarks. It features a simple API that can: |
| 35911 | |
| 35912 | @itemize |
| 35913 | @item automatically calibrate a benchmark for a time budget; |
| 35914 | @item spawn multiple worker processes; |
| 35915 | @item compute the mean and standard deviation; |
| 35916 | @item detect if a benchmark result seems unstable; |
| 35917 | @item store benchmark results in JSON format; |
| 35918 | @item support multiple units: seconds, bytes and integer. |
| 35919 | @end itemize") |
| 35920 | (license license:expat))) |
| 35921 | |
| 35922 | (define-public python-pydispatcher |
| 35923 | (package |
| 35924 | (name "python-pydispatcher") |
| 35925 | (version "2.0.7") |
| 35926 | (source |
| 35927 | (origin |
| 35928 | (method url-fetch) |
| 35929 | (uri (pypi-uri "PyDispatcher" version)) |
| 35930 | (sha256 |
| 35931 | (base32 "0cdyymidxkzvcq6lpybhmh0ngyhld6jdcaac9bbvmh8d12nwcxxp")))) |
| 35932 | (build-system pyproject-build-system) |
| 35933 | (native-inputs (list python-pytest python-setuptools)) |
| 35934 | (home-page "https://pydispatcher.sourceforge.net") |
| 35935 | (synopsis "Multi-producer-multi-consumer signal dispatching mechanism") |
| 35936 | (description |
| 35937 | "PyDispatcher is an enhanced version of Patrick K. O’Brien’s original |
| 35938 | @code{dispatcher.py} module. It provides the Python programmer with a robust |
| 35939 | mechanism for event routing within various application contexts. |
| 35940 | |
| 35941 | Included in the package are the robustapply and saferef modules, which |
| 35942 | provide the ability to selectively apply arguments to callable objects |
| 35943 | and to reference instance methods using weak-references.") |
| 35944 | (license license:bsd-3))) |
| 35945 | |
| 35946 | (define-public python-pyee |
| 35947 | (package |
| 35948 | (name "python-pyee") |
| 35949 | (version "13.0.1") |
| 35950 | (source |
| 35951 | (origin |
| 35952 | (method git-fetch) |
| 35953 | (uri (git-reference |
| 35954 | (url "https://github.com/jfhbrook/pyee") |
| 35955 | (commit (string-append "v" version)))) |
| 35956 | (file-name (git-file-name name version)) |
| 35957 | (sha256 |
| 35958 | (base32 "0qmvbh8w15criy9fysgpppla1sk201c6dqvig0hvgxdirmp1zc4j")))) |
| 35959 | (build-system pyproject-build-system) |
| 35960 | (propagated-inputs (list python-typing-extensions)) |
| 35961 | (native-inputs |
| 35962 | (list python-mock |
| 35963 | python-pytest |
| 35964 | python-pytest-asyncio |
| 35965 | python-pytest-trio |
| 35966 | python-setuptools |
| 35967 | python-trio |
| 35968 | python-twisted)) |
| 35969 | (home-page "https://github.com/jfhbrook/pyee") |
| 35970 | (synopsis "Emit events with Python") |
| 35971 | (description |
| 35972 | "This package provides a port of node.js's EventEmitter to |
| 35973 | python. Additionally, it includes a number of subclasses useful for |
| 35974 | implementing async and threaded programming in python, such as async/await.") |
| 35975 | (license license:expat))) |
| 35976 | |
| 35977 | (define-public python-pypubsub |
| 35978 | (package |
| 35979 | (name "python-pypubsub") |
| 35980 | (version "4.0.3") |
| 35981 | (source |
| 35982 | (origin |
| 35983 | (method git-fetch) |
| 35984 | (uri (git-reference |
| 35985 | (url "https://github.com/schollii/pypubsub") |
| 35986 | (commit (string-append "v" version)))) |
| 35987 | (file-name (git-file-name name version)) |
| 35988 | (sha256 |
| 35989 | (base32 "02j74w28wzmdvxkk8i561ywjgizjifq3hgcl080yj0rvkd3wivlb")))) |
| 35990 | (build-system pyproject-build-system) |
| 35991 | (arguments |
| 35992 | (list |
| 35993 | #:phases |
| 35994 | #~(modify-phases %standard-phases |
| 35995 | (replace 'check |
| 35996 | (lambda* (#:key tests? #:allow-other-keys) |
| 35997 | (when tests? |
| 35998 | (with-directory-excursion "tests/suite" |
| 35999 | (invoke "py.test")))))))) |
| 36000 | (native-inputs |
| 36001 | (list python-pytest |
| 36002 | python-setuptools |
| 36003 | python-wheel)) |
| 36004 | (home-page "https://github.com/schollii/pypubsub") |
| 36005 | (synopsis "Python publish-subcribe library") |
| 36006 | (description |
| 36007 | "This library provides a publish-subscribe API to facilitate event-based |
| 36008 | or message-based architecture in a single-process application. It is centered |
| 36009 | on the notion of a topic - senders publish messages of a given topic, and |
| 36010 | listeners subscribe to messages of a given topic, all inside the same |
| 36011 | process.") |
| 36012 | (license license:bsd-2))) |
| 36013 | |
| 36014 | (define-public python-queuelib |
| 36015 | (package |
| 36016 | (name "python-queuelib") |
| 36017 | (version "1.8.0") |
| 36018 | (source |
| 36019 | (origin |
| 36020 | (method git-fetch) |
| 36021 | (uri (git-reference |
| 36022 | (url "https://github.com/scrapy/queuelib") |
| 36023 | (commit (string-append "v" version)))) |
| 36024 | (file-name (git-file-name name version)) |
| 36025 | (sha256 |
| 36026 | (base32 "0rnyk200rd9vvifsx70z2d6h6gkmjmf6384d5bmnslhqircb430b")))) |
| 36027 | (build-system pyproject-build-system) |
| 36028 | (native-inputs (list python-hatchling python-pytest)) |
| 36029 | (home-page "https://github.com/scrapy/queuelib") |
| 36030 | (synopsis "Collection of queues for Python") |
| 36031 | (description |
| 36032 | "Queuelib is a Python library that implements object collections which |
| 36033 | are stored in memory or persisted to disk, provide a simple API, and run fast. |
| 36034 | |
| 36035 | Queuelib provides collections for queues (FIFO), stacks (LIFO), queues sorted |
| 36036 | by priority and queues that are emptied in a round-robin fashion.") |
| 36037 | (license license:bsd-3))) |
| 36038 | |
| 36039 | (define-public python-posix-ipc |
| 36040 | (package |
| 36041 | (name "python-posix-ipc") |
| 36042 | (version "1.3.2") |
| 36043 | (source |
| 36044 | (origin |
| 36045 | (method git-fetch) |
| 36046 | (uri (git-reference |
| 36047 | (url "https://github.com/osvenskan/posix_ipc") |
| 36048 | (commit (string-append "rel" version)))) |
| 36049 | (file-name (git-file-name name version)) |
| 36050 | (sha256 |
| 36051 | (base32 "0g9zhadssq01q4xcf25lq2qmn7q02p877bx0nyx3b09phgw6860j")))) |
| 36052 | (build-system pyproject-build-system) |
| 36053 | (arguments |
| 36054 | (list |
| 36055 | #:test-flags |
| 36056 | ;; XXX: Collection fails due to stdin configuration. |
| 36057 | #~(list "--ignore=tests/test_memory.py") |
| 36058 | #:phases |
| 36059 | #~(modify-phases %standard-phases |
| 36060 | (add-after 'unpack 'set-cc-path |
| 36061 | (lambda _ |
| 36062 | (setenv "CC" #$(cc-for-target))))))) |
| 36063 | (native-inputs (list python-pytest python-setuptools)) |
| 36064 | (home-page "https://semanchuk.com/philip/posix_ipc/") |
| 36065 | (synopsis "POSIX IPC primitives for Python") |
| 36066 | (description |
| 36067 | "This package provides POSIX IPC primitives - semaphores, shared memory and |
| 36068 | message queues for Python.") |
| 36069 | (license license:bsd-3))) ; BSD like Copyright (c) 2018, Philip Semanchuk |
| 36070 | |
| 36071 | (define-public python-itemadapter |
| 36072 | (package |
| 36073 | (name "python-itemadapter") |
| 36074 | (version "0.12.0") |
| 36075 | (source |
| 36076 | (origin |
| 36077 | (method git-fetch) |
| 36078 | (uri (git-reference |
| 36079 | (url "https://github.com/scrapy/itemadapter") |
| 36080 | (commit (string-append "v" version)))) |
| 36081 | (file-name (git-file-name name version)) |
| 36082 | (sha256 |
| 36083 | (base32 "1d7v5x1v8v62rs1xay2m4djdnhsydfb0lzgh8c0c1lipinrqzkfz")))) |
| 36084 | (build-system pyproject-build-system) |
| 36085 | (arguments (list #:tests? #f)) ; Circular dependency on python-scrapy. |
| 36086 | (native-inputs (list python-hatchling)) |
| 36087 | (home-page "https://github.com/scrapy/itemadapter") |
| 36088 | (synopsis "Common interface for data container classes") |
| 36089 | (description |
| 36090 | "The ItemAdapter class is a wrapper for data container objects, providing |
| 36091 | a common interface to handle objects of different types in an uniform manner, |
| 36092 | regardless of their underlying implementation. |
| 36093 | |
| 36094 | Currently supported types are: |
| 36095 | @itemize |
| 36096 | @item scrapy.item.Item |
| 36097 | @item dict |
| 36098 | @item dataclass-based classes |
| 36099 | @item attrs-based classes |
| 36100 | @item pydantic-based classes |
| 36101 | @end itemize |
| 36102 | |
| 36103 | Additionally, interaction with arbitrary types is supported by |
| 36104 | implementing a pre-defined interface.") |
| 36105 | (license license:bsd-3))) |
| 36106 | |
| 36107 | (define-public python-itemloaders |
| 36108 | (package |
| 36109 | (name "python-itemloaders") |
| 36110 | (version "1.3.2") |
| 36111 | (source |
| 36112 | (origin |
| 36113 | (method url-fetch) |
| 36114 | (uri (pypi-uri "itemloaders" version)) |
| 36115 | (sha256 |
| 36116 | (base32 "0w37g31n06x6v6b4w7cz3nbq4wl6cv7rrzg3fr203gw3pqx5pbsg")))) |
| 36117 | (build-system pyproject-build-system) |
| 36118 | (native-inputs |
| 36119 | (list python-packaging |
| 36120 | python-pytest |
| 36121 | python-setuptools |
| 36122 | python-wheel)) |
| 36123 | (propagated-inputs |
| 36124 | (list python-itemadapter python-jmespath python-parsel)) |
| 36125 | (home-page "https://github.com/scrapy/itemloaders") |
| 36126 | (synopsis "Base library for scrapy's ItemLoader") |
| 36127 | (description "Itemloaders is a library that helps you collect data |
| 36128 | from HTML and XML sources. It comes in handy to extract data from web |
| 36129 | pages, as it supports data extraction using CSS and XPath Selectors. |
| 36130 | |
| 36131 | It’s specially useful when you need to standardize the data from many |
| 36132 | sources. For example, it allows you to have all your casting and |
| 36133 | parsing rules in a single place.") |
| 36134 | (license license:bsd-3))) |
| 36135 | |
| 36136 | (define-public python-iterable-io |
| 36137 | (package |
| 36138 | (name "python-iterable-io") |
| 36139 | (version "1.0.0") |
| 36140 | (source |
| 36141 | (origin |
| 36142 | (method url-fetch) |
| 36143 | (uri (pypi-uri "iterable-io" version)) |
| 36144 | (sha256 |
| 36145 | (base32 "0g4cn522n4dv6ly8pwf97dc62rr4f7my38v0bh6vmac7jmrip7pv")))) |
| 36146 | (build-system pyproject-build-system) |
| 36147 | (native-inputs (list python-setuptools python-pytest)) |
| 36148 | (home-page "https://github.com/pR0Ps/iterable-io") |
| 36149 | (synopsis "Adapt generators and other iterables to a file-like interface") |
| 36150 | (description |
| 36151 | "@code{iterable-io} is a small Python library that provides an adapter so |
| 36152 | that it's possible to read from |
| 36153 | @url{https://docs.python.org/3/glossary.html#term-iterable,iterable} objects |
| 36154 | in the same way as |
| 36155 | @url{https://docs.python.org/3/glossary.html#term-file-object,file-like} |
| 36156 | objects.") |
| 36157 | (license license:lgpl3))) |
| 36158 | |
| 36159 | (define-public python-iteround |
| 36160 | (package |
| 36161 | (name "python-iteround") |
| 36162 | (version "1.0.4") |
| 36163 | ;; PyPI only has wheels. |
| 36164 | (source (origin |
| 36165 | (method git-fetch) |
| 36166 | (uri (git-reference |
| 36167 | (url "https://github.com/cgdeboer/iteround") |
| 36168 | (commit (string-append "v" version)))) |
| 36169 | (file-name (git-file-name name version)) |
| 36170 | (sha256 |
| 36171 | (base32 "1irw4sqrsgpc0ibxdv1hlx0d0jr1fqs48bj6mpfylzqkag9ywlfj")))) |
| 36172 | (build-system pyproject-build-system) |
| 36173 | (native-inputs |
| 36174 | (list python-pytest python-setuptools python-wheel)) |
| 36175 | (home-page "https://github.com/cgdeboer/iteround") |
| 36176 | (synopsis "Sum-safe rounding for Iterables") |
| 36177 | (description "Iteround is a standard library sum-safe rounding library for |
| 36178 | Python iterables (lists, tuples, dicts).") |
| 36179 | (license license:expat))) |
| 36180 | |
| 36181 | (define-public python-hypy-utils |
| 36182 | (package |
| 36183 | (name "python-hypy-utils") |
| 36184 | (version "1.0.29") |
| 36185 | (source |
| 36186 | (origin |
| 36187 | (method url-fetch) |
| 36188 | (uri (pypi-uri "hypy_utils" version)) |
| 36189 | (sha256 |
| 36190 | (base32 "1gf4v4gv9kr4r3prjwvcii153vwjrp7gir2mz6d1qbz6jggif8n7")))) |
| 36191 | (build-system pyproject-build-system) |
| 36192 | (arguments (list #:tests? #f)) ; No tests upstream. |
| 36193 | (native-inputs (list python-setuptools)) |
| 36194 | (home-page "https://github.com/hykilpikonna/HyPyUtils") |
| 36195 | (synopsis "Python utility functions for HyDEV") |
| 36196 | (description "This module provides Python utility functions for modifying |
| 36197 | and setting the color of terminal output, via HyDEV.") |
| 36198 | (license license:expat))) |
| 36199 | |
| 36200 | (define-public python-mike |
| 36201 | (package |
| 36202 | (name "python-mike") |
| 36203 | (version "2.1.3") |
| 36204 | (source |
| 36205 | (origin |
| 36206 | (method git-fetch) ; no tests data in PyPi package |
| 36207 | (uri (git-reference |
| 36208 | (url "https://github.com/jimporter/mike") |
| 36209 | (commit (string-append "v" version)))) |
| 36210 | (file-name (git-file-name name version)) |
| 36211 | (sha256 |
| 36212 | (base32 "0rgmpxim91rpn8cplyi72g75fhclr40hxcpschn7rbfkqdhj8rbq")))) |
| 36213 | (build-system pyproject-build-system) |
| 36214 | (arguments |
| 36215 | (list |
| 36216 | #:test-flags |
| 36217 | ;; Most of integration tests hang or fail. |
| 36218 | #~(list "--ignore=test/integration/" |
| 36219 | ;; AttributeError: 'NoneType' object has no attribute 'group' |
| 36220 | "--ignore=test/unit/test_commands.py" |
| 36221 | "--deselect=test/unit/test_mkdocs_utils.py::TestVersion::test_version"))) |
| 36222 | (native-inputs |
| 36223 | (list git-minimal/pinned |
| 36224 | python-pytest |
| 36225 | python-setuptools |
| 36226 | python-shtab |
| 36227 | python-wheel)) |
| 36228 | (propagated-inputs |
| 36229 | (list python-importlib-metadata |
| 36230 | python-importlib-resources |
| 36231 | python-jinja2 |
| 36232 | python-mkdocs |
| 36233 | python-pyparsing |
| 36234 | python-pyyaml |
| 36235 | python-pyyaml-env-tag |
| 36236 | python-verspec)) |
| 36237 | (home-page "https://github.com/jimporter/mike") |
| 36238 | (synopsis "Manage multiple versions of MkDocs-powered documentation") |
| 36239 | (description |
| 36240 | "This package provides a Python utility to easily deploy multiple |
| 36241 | versions of MkDocs-powered docs to a Git branch. It is suitable for deploying |
| 36242 | to Github via gh-pages.") |
| 36243 | (license license:bsd-3))) |
| 36244 | |
| 36245 | (define-public python-arpeggio |
| 36246 | (package |
| 36247 | (name "python-arpeggio") |
| 36248 | (version "2.0.2") |
| 36249 | (source |
| 36250 | (origin |
| 36251 | (method url-fetch) |
| 36252 | (uri (pypi-uri "Arpeggio" version)) |
| 36253 | (sha256 |
| 36254 | (base32 "00571cmdxw8w8khzscb085kfqv2hgxdzpyz4d3a2sv92dsqb5467")))) |
| 36255 | (build-system pyproject-build-system) |
| 36256 | (native-inputs |
| 36257 | (list python-pytest |
| 36258 | python-setuptools |
| 36259 | python-wheel)) |
| 36260 | (home-page "https://github.com/textX/Arpeggio") |
| 36261 | (synopsis "Packrat parser interpreter for Python") |
| 36262 | (description |
| 36263 | "This Python library provides a recursive descent parser with |
| 36264 | backtracking and memoization (a.k.a. packrat parser). Arpeggio grammars are |
| 36265 | based on PEG formalism. Arpeggio's main use is a foundation for a toolchain |
| 36266 | for DSL development but it can be used for all sorts of general purpose |
| 36267 | parsing.") |
| 36268 | (license license:expat))) |
| 36269 | |
| 36270 | (define-public python-flatten-json |
| 36271 | ;; The latest version was not tagged on GitHub, PyPI provides no tests, use |
| 36272 | ;; the commit associated with 0.1.14 version. |
| 36273 | (let ((commit "900c4feebcfcd831ddb6143c4b246024ecf911ec") |
| 36274 | (revision "0")) |
| 36275 | (package |
| 36276 | (name "python-flatten-json") |
| 36277 | (version (git-version "0.1.14" revision commit)) |
| 36278 | (source |
| 36279 | (origin |
| 36280 | (method git-fetch) ; no tests in PyPI release |
| 36281 | (uri (git-reference |
| 36282 | (url "https://github.com/amirziai/flatten") |
| 36283 | (commit commit))) |
| 36284 | (file-name (git-file-name name version)) |
| 36285 | (sha256 |
| 36286 | (base32 "1vk2ykmk4wirsywinxk9v520y6iv857bn0hsizm25s3d08v5a3sb")))) |
| 36287 | (build-system pyproject-build-system) |
| 36288 | (native-inputs |
| 36289 | (list python-pytest |
| 36290 | python-setuptools |
| 36291 | python-wheel)) |
| 36292 | (propagated-inputs |
| 36293 | (list python-six)) |
| 36294 | (home-page "https://github.com/amirziai/flatten") |
| 36295 | (synopsis "Flatten JSON objects") |
| 36296 | (description |
| 36297 | "The @code{flatten_json} Python library flattens the hierarchy in your |
| 36298 | object, which can be useful if you want to force your objects into a table.") |
| 36299 | (license license:expat)))) |
| 36300 | |
| 36301 | (define-public python-deepdiff |
| 36302 | (package |
| 36303 | (name "python-deepdiff") |
| 36304 | (version "8.6.1") |
| 36305 | (source (origin |
| 36306 | (method url-fetch) |
| 36307 | (uri (pypi-uri "deepdiff" version)) |
| 36308 | (sha256 |
| 36309 | (base32 |
| 36310 | "0fk4zzrv7chynjbpgk7bj7nhqc7c3va7pv00a8dqk06ad6kxfmpc")))) |
| 36311 | (build-system pyproject-build-system) |
| 36312 | (arguments |
| 36313 | ;; tests: 1028 passed, 10 skipped, 1 deselected |
| 36314 | ;; Ignore Polars test (not packaged). |
| 36315 | (list #:test-flags #~(list "-k" "not test_polars"))) |
| 36316 | (propagated-inputs (list python-click ; for CLI |
| 36317 | python-pyyaml ; for CLI |
| 36318 | python-orderly-set |
| 36319 | python-orjson)) ; for optimization |
| 36320 | (native-inputs |
| 36321 | (list python-flit-core |
| 36322 | python-jsonpickle |
| 36323 | python-numpy |
| 36324 | python-pandas |
| 36325 | python-pydantic |
| 36326 | python-pytest |
| 36327 | python-pytest-benchmark |
| 36328 | python-pytz |
| 36329 | python-uuid6 |
| 36330 | python-tomli-w)) |
| 36331 | (home-page "https://github.com/seperman/deepdiff") |
| 36332 | (synopsis "Deep difference and search of any Python object/data") |
| 36333 | (description |
| 36334 | "This package provides tools for computing deep differences and searching |
| 36335 | of any Python object/data. Recreate objects by adding adding deltas to each |
| 36336 | other.") |
| 36337 | (license license:expat))) |
| 36338 | |
| 36339 | (define-public python-deepmerge |
| 36340 | (package |
| 36341 | (name "python-deepmerge") |
| 36342 | (version "1.0.1") |
| 36343 | (source |
| 36344 | (origin |
| 36345 | (method url-fetch) |
| 36346 | (uri (pypi-uri "deepmerge" version)) |
| 36347 | (sha256 |
| 36348 | (base32 "06hagzg8ccmjzqvszdxb52jgx5il8a1jdz41n4dpkyyjsfg7fi2b")))) |
| 36349 | (build-system pyproject-build-system) |
| 36350 | (native-inputs |
| 36351 | (list python-setuptools-scm |
| 36352 | python-pytest |
| 36353 | python-setuptools |
| 36354 | python-wheel)) |
| 36355 | (home-page "https://deepmerge.readthedocs.io/en/latest/") |
| 36356 | (synopsis "Merge nested data structures") |
| 36357 | (description |
| 36358 | "The @code{deep-merge} Python library provides a toolset to deeply merge |
| 36359 | nested data structures in Python like lists and dictionaries.") |
| 36360 | (license license:expat))) |
| 36361 | |
| 36362 | (define-public python-durationpy |
| 36363 | (package |
| 36364 | (name "python-durationpy") |
| 36365 | (version "0.10") |
| 36366 | (source |
| 36367 | (origin |
| 36368 | (method git-fetch) |
| 36369 | (uri (git-reference |
| 36370 | (url "https://github.com/icholy/durationpy") |
| 36371 | (commit version))) |
| 36372 | (file-name (git-file-name name version)) |
| 36373 | (sha256 |
| 36374 | (base32 "1617wg77j68z7v4rbjrhv6n7bchznhgjn21qrmb034sf4hwg77dl")))) |
| 36375 | (build-system pyproject-build-system) |
| 36376 | (arguments |
| 36377 | (list #:test-backend #~'custom |
| 36378 | #:test-flags #~(list "test.py"))) |
| 36379 | (native-inputs (list python-setuptools)) |
| 36380 | (home-page "https://github.com/icholy/durationpy") |
| 36381 | (synopsis "Python <-> Golang time duration formats converter") |
| 36382 | (description |
| 36383 | "This package implements a functionality to convert between |
| 36384 | Python's @code{datetime.timedelta} and Golang's @code{time.Duration} formats.") |
| 36385 | (license license:expat))) |
| 36386 | |
| 36387 | (define-public python-murmurhash3 |
| 36388 | (let ((commit "01f1128a2c5ea08e6dc33515e140bedd68393a2d") |
| 36389 | (revision "0")) |
| 36390 | (package |
| 36391 | (name "python-murmurhash3") |
| 36392 | (version (git-version "2.3.5" revision commit)) |
| 36393 | (source |
| 36394 | (origin |
| 36395 | (method git-fetch) |
| 36396 | (uri (git-reference |
| 36397 | (url "https://github.com/veegee/mmh3") |
| 36398 | (commit commit))) |
| 36399 | (file-name (git-file-name name version)) |
| 36400 | (sha256 |
| 36401 | (base32 "1zpk51ms1bvzg52zc9s9az71bgw2kgxidjcc1xib7y9r7dl7vczz")))) |
| 36402 | (build-system pyproject-build-system) |
| 36403 | (arguments |
| 36404 | (list |
| 36405 | #:phases |
| 36406 | #~(modify-phases %standard-phases |
| 36407 | (add-after 'unpack 'fix-package |
| 36408 | (lambda _ |
| 36409 | (substitute* "mmh3module.cpp" |
| 36410 | (("#include <stdio\\.h>") |
| 36411 | "#define PY_SSIZE_T_CLEAN\n#include <stdio.h>"))))))) |
| 36412 | (native-inputs |
| 36413 | (list python-cython python-pytest python-setuptools python-wheel)) |
| 36414 | (home-page "https://github.com/veegee/mmh3") |
| 36415 | (synopsis "Python wrapper for MurmurHash (MurmurHash3)") |
| 36416 | (description |
| 36417 | "@code{murmurhash3} is a Python library for MurmurHash (MurmurHash3), a set |
| 36418 | of fast and robust hash functions. This library is a Python extension module |
| 36419 | written in C.") |
| 36420 | (license license:public-domain)))) |
| 36421 | |
| 36422 | (define-public python-scooby |
| 36423 | (package |
| 36424 | (name "python-scooby") |
| 36425 | (version "0.11.0") |
| 36426 | (source |
| 36427 | (origin |
| 36428 | (method git-fetch) |
| 36429 | (uri (git-reference |
| 36430 | (url "https://github.com/banesullivan/scooby") |
| 36431 | (commit (string-append "v" version)))) |
| 36432 | (file-name (git-file-name name version)) |
| 36433 | (sha256 |
| 36434 | (base32 "0c47gwcc5kpwx7s8ccp53s174bgraxm4qqrn72yz2ypxah6k3ccj")))) |
| 36435 | (build-system pyproject-build-system) |
| 36436 | (arguments |
| 36437 | (list |
| 36438 | ;; tests: 19 passed, 5 deselected, 1 warning |
| 36439 | #:test-flags |
| 36440 | ;; AssertionError: assert 'Module not found' == '0.1.0' |
| 36441 | #~(list "--deselect=tests/test_scooby.py::test_get_version" |
| 36442 | ;; ModuleNotFoundError: No module named 'no_version' |
| 36443 | "--deselect=tests/test_scooby.py::test_tracking" |
| 36444 | ;; Failed: DID NOT RAISE <class 'OSError'> |
| 36445 | "--deselect=tests/test_scooby.py::test_import_os_error" |
| 36446 | ;; FileNotFoundError: [Errno 2] No such file or directory: 'time' |
| 36447 | "--deselect=tests/test_scooby.py::test_import_time" |
| 36448 | ;; Errored |
| 36449 | "--deselect=tests/test_scooby.py::test_cli"))) |
| 36450 | (native-inputs |
| 36451 | (list python-beautifulsoup4 |
| 36452 | python-numpy |
| 36453 | python-pytest |
| 36454 | python-pyvips |
| 36455 | python-scipy |
| 36456 | python-setuptools |
| 36457 | python-setuptools-scm)) |
| 36458 | (propagated-inputs |
| 36459 | (list python-psutil)) |
| 36460 | (home-page "https://github.com/banesullivan/scooby") |
| 36461 | (synopsis "Report hardware information and Python package versions") |
| 36462 | (description |
| 36463 | "The Scooby package reports the following information about the currently |
| 36464 | running system: |
| 36465 | |
| 36466 | @itemize |
| 36467 | @item operating system name; |
| 36468 | @item hardware information including machine type (e.g., @samp{i386}, |
| 36469 | @samp{x86_64}, etc.), CPU count and total RAM; |
| 36470 | @item Python environment (e.g., Python, IPython, etc.); |
| 36471 | @item file system name; |
| 36472 | @item Python version; |
| 36473 | @item versions of specified Python packages. |
| 36474 | @end itemize |
| 36475 | |
| 36476 | It can generate reports as HTML tables or plain text lists. |
| 36477 | |
| 36478 | Scooby has no required dependencies, and only few optional dependencies.") |
| 36479 | (license license:expat))) |
| 36480 | |
| 36481 | (define-public python-cymem |
| 36482 | (package |
| 36483 | (name "python-cymem") |
| 36484 | (version "2.0.6") |
| 36485 | (source |
| 36486 | (origin |
| 36487 | (method git-fetch) |
| 36488 | (uri (git-reference |
| 36489 | (url "https://github.com/explosion/cymem") |
| 36490 | (commit (string-append "v" version)))) |
| 36491 | (file-name (git-file-name name version)) |
| 36492 | (sha256 |
| 36493 | (base32 "1f0wjm6g2n09b9plddp3bvaz6bl27q6hv0q6g7qx24rgmjzkivm3")))) |
| 36494 | (build-system pyproject-build-system) |
| 36495 | (native-inputs (list python-cython python-pytest python-setuptools)) |
| 36496 | (inputs (list python)) |
| 36497 | (home-page "https://github.com/explosion/cymem") |
| 36498 | (synopsis "Cython memory pool for RAII-style memory management") |
| 36499 | (description |
| 36500 | "Cymem provides two small memory-management helpers for Cython. They make it |
| 36501 | easy to tie memory to a Python object's life-cycle, so that the memory is freed |
| 36502 | when the object is garbage collected.") |
| 36503 | (license license:expat))) |
| 36504 | |
| 36505 | (define-public python-preshed |
| 36506 | (package |
| 36507 | (name "python-preshed") |
| 36508 | (version "3.0.6") |
| 36509 | (source |
| 36510 | (origin |
| 36511 | (method git-fetch) |
| 36512 | (uri (git-reference |
| 36513 | (url "https://github.com/explosion/preshed") |
| 36514 | (commit (string-append "v" version)))) |
| 36515 | (file-name (git-file-name name version)) |
| 36516 | (sha256 |
| 36517 | (base32 "01xwczc4cb9q3iah1gb9lxfh9s8ix695y3s95j7nhbiws6c9b5k5")))) |
| 36518 | (build-system pyproject-build-system) |
| 36519 | (arguments |
| 36520 | (list |
| 36521 | #:phases |
| 36522 | #~(modify-phases %standard-phases |
| 36523 | (add-after 'unpack 'patch-msvccompiler |
| 36524 | (lambda _ |
| 36525 | (substitute* "setup.py" |
| 36526 | (("from distutils import ccompiler, msvccompiler") |
| 36527 | "from distutils import ccompiler") |
| 36528 | (("and msvccompiler.*") |
| 36529 | "")))) |
| 36530 | (replace 'check |
| 36531 | (lambda* (#:key inputs outputs #:allow-other-keys #:rest args) |
| 36532 | (with-directory-excursion (site-packages inputs outputs) |
| 36533 | (for-each delete-file (find-files "." "\\.pyx$")) |
| 36534 | (apply (assoc-ref %standard-phases 'check) args) |
| 36535 | (delete-file-recursively "preshed/tests"))))))) |
| 36536 | (native-inputs |
| 36537 | (list python-cython python-cymem python-pytest python-setuptools)) |
| 36538 | (inputs (list python python-cymem python-murmurhash)) |
| 36539 | (home-page "https://github.com/explosion/preshed") |
| 36540 | (synopsis "Cython hash tables that assume keys are pre-hashed") |
| 36541 | (description |
| 36542 | "Simple but high performance Cython hash table mapping pre-randomized keys |
| 36543 | to void* values.") |
| 36544 | (license license:expat))) |
| 36545 | |
| 36546 | (define-public python-catalogue |
| 36547 | (package |
| 36548 | (name "python-catalogue") |
| 36549 | (version "2.0.10") |
| 36550 | (source |
| 36551 | (origin |
| 36552 | (method git-fetch) |
| 36553 | (uri (git-reference |
| 36554 | (url "https://github.com/explosion/catalogue") |
| 36555 | (commit (string-append "v" version)))) |
| 36556 | (file-name (git-file-name name version)) |
| 36557 | (sha256 |
| 36558 | (base32 "1v93a5dfhqa70kvjh4jxw9mqgwzbzg9w53an0frrx1rj6h96kmw5")))) |
| 36559 | (build-system pyproject-build-system) |
| 36560 | (native-inputs (list python-pytest python-setuptools)) |
| 36561 | (home-page "https://github.com/explosion/catalogue") |
| 36562 | (synopsis "Lightweight function registries for your library") |
| 36563 | (description |
| 36564 | "This package is a tiny, zero-dependencies library that makes it easy to |
| 36565 | add function (or object) registries to your code. Function registries are |
| 36566 | helpful when you have objects that need to be both easily serializable and |
| 36567 | fully customizable. Instead of passing a function into your object, you pass |
| 36568 | in an identifier name, which the object can use to lookup the function from |
| 36569 | the registry. This makes the object easy to serialize, because the name is a |
| 36570 | simple string. If you instead saved the function, you'd have to use Pickle |
| 36571 | for serialization, which has many drawbacks.") |
| 36572 | (license license:expat))) |
| 36573 | |
| 36574 | (define-public python-gatt |
| 36575 | (package |
| 36576 | (name "python-gatt") |
| 36577 | (version "0.2.7") |
| 36578 | (source (origin |
| 36579 | (method url-fetch) |
| 36580 | (uri (pypi-uri "gatt" version)) |
| 36581 | (sha256 |
| 36582 | (base32 |
| 36583 | "0fjf066jixk30fr8xwfalwfnhqpr56yv0cccyypnx2qp9bi9svb2")))) |
| 36584 | (build-system pyproject-build-system) |
| 36585 | (arguments (list #:tests? #f)) ; No tests upstream. |
| 36586 | (propagated-inputs (list python-dbus-1.2 python-pygobject)) |
| 36587 | (native-inputs (list python-setuptools)) |
| 36588 | (home-page "https://github.com/getsenic/gatt-python") |
| 36589 | (synopsis "Bluetooth GATT SDK for Python") |
| 36590 | (description |
| 36591 | "The Bluetooth @acronym{GATT, Generic ATTribute Profile} @acronym{SDK, |
| 36592 | Software Development Kit} for Python helps you implement and communicate with |
| 36593 | any Bluetooth Low Energy device that has a GATT profile. It supports: |
| 36594 | |
| 36595 | @itemize @bullet |
| 36596 | @item Discovering nearby Bluetooth Low Energy devices |
| 36597 | @item Connecting and disconnecting devices |
| 36598 | @item Implementing your custom GATT profile |
| 36599 | @item Accessing all GATT services |
| 36600 | @item Accessing all GATT characteristics |
| 36601 | @item Reading characteristic values |
| 36602 | @item Writing characteristic values |
| 36603 | @item Subscribing for characteristic value change notifications |
| 36604 | @end itemize |
| 36605 | |
| 36606 | Currently, Linux is the only platform supported by this library.") |
| 36607 | (license license:expat))) |
| 36608 | |
| 36609 | (define-public python-dbus-fast |
| 36610 | (package |
| 36611 | (name "python-dbus-fast") |
| 36612 | (version "2.44.3") |
| 36613 | (source |
| 36614 | (origin |
| 36615 | (method git-fetch) ;No tests in PyPI package. |
| 36616 | (uri (git-reference |
| 36617 | (url "https://github.com/Bluetooth-Devices/dbus-fast") |
| 36618 | (commit (string-append "v" version)))) |
| 36619 | (file-name (git-file-name name version)) |
| 36620 | (sha256 |
| 36621 | (base32 "12f1f25ny7fd59s55gw3vr6ymdqgd51zzpbc1nkqfbmb166d1536")))) |
| 36622 | (build-system pyproject-build-system) |
| 36623 | (arguments |
| 36624 | (list |
| 36625 | #:test-flags |
| 36626 | '(list |
| 36627 | ;; These tests need pytest_codspeed. |
| 36628 | "--ignore-glob=tests/benchmarks/test_*marshall.py" |
| 36629 | ;; These tests all fail with: |
| 36630 | ;; dbus_fast.errors.InvalidAddressError: DBUS_SESSION_BUS_ADDRESS not |
| 36631 | ;; set and could not get DISPLAY environment variable to get bus address |
| 36632 | "-m" "not asyncio"))) |
| 36633 | (native-inputs (list python-cython |
| 36634 | python-poetry-core |
| 36635 | python-setuptools |
| 36636 | python-pytest |
| 36637 | python-pytest-asyncio |
| 36638 | python-covdefaults)) |
| 36639 | (home-page "https://github.com/bluetooth-devices/dbus-fast") |
| 36640 | (synopsis "Faster version of dbus-next") |
| 36641 | (description "This package provides a faster version of dbus-next.") |
| 36642 | (license license:expat))) |
| 36643 | |
| 36644 | (define-public python-bleak |
| 36645 | (package |
| 36646 | (name "python-bleak") |
| 36647 | (version "3.0.2") |
| 36648 | (source |
| 36649 | (origin |
| 36650 | (method git-fetch) |
| 36651 | (uri (git-reference |
| 36652 | (url "https://github.com/hbldh/bleak") |
| 36653 | (commit (string-append "v" version)))) |
| 36654 | (file-name (git-file-name name version)) |
| 36655 | (sha256 |
| 36656 | (base32 "1dlryjgi0pzmjjnssq9498chwnjzsx14kg1kyp1465waybgwvs93")))) |
| 36657 | (build-system pyproject-build-system) |
| 36658 | (arguments |
| 36659 | (list |
| 36660 | #:test-flags #~(list "--ignore=tests/integration"))) |
| 36661 | (native-inputs |
| 36662 | (list python-coverage ;hard dependency |
| 36663 | python-pytest |
| 36664 | python-pytest-asyncio |
| 36665 | python-uv-build)) |
| 36666 | (propagated-inputs |
| 36667 | (list python-dbus-fast)) |
| 36668 | (home-page "https://github.com/hbldh/bleak") |
| 36669 | (synopsis "Bluetooth Low Energy platform Agnostic Klient") |
| 36670 | (description "This package provides a Bluetooth Low Energy platform-agnostic |
| 36671 | client library.") |
| 36672 | (license license:expat))) |
| 36673 | |
| 36674 | (define-public python-ndeflib |
| 36675 | (package |
| 36676 | (name "python-ndeflib") |
| 36677 | (version "0.3.3") |
| 36678 | (source |
| 36679 | (origin |
| 36680 | (method url-fetch) |
| 36681 | (uri (pypi-uri "ndeflib" version)) |
| 36682 | (sha256 |
| 36683 | (base32 "122a8prbcj070y3fl82kvxmbciv36hj1h1d448l6zcdrb22q4mhx")))) |
| 36684 | (build-system pyproject-build-system) |
| 36685 | (arguments |
| 36686 | (list |
| 36687 | ;; tests: 1571 passed, 37 deselected, 1 warning |
| 36688 | ;; |
| 36689 | ;; Three test fail with assertion not equal: |
| 36690 | ;; |
| 36691 | ;; test_decode_error[0001-unpack_from requires a buffer of at least 1 |
| 36692 | ;; bytes] - AssertionError |
| 36693 | ;; |
| 36694 | ;; test_decode_error[00000101-unpack_from requires a buffer of at least |
| 36695 | ;; 1 bytes] - AssertionError |
| 36696 | ;; |
| 36697 | ;; test_encode_error[args1-ubyte format requires 0 <= number <= 255] |
| 36698 | ;; AssertionError |
| 36699 | #:test-flags #~(list "-k" (string-append "not test_decode_error and not " |
| 36700 | "test_encode_error")))) |
| 36701 | (native-inputs (list python-pytest-8 python-setuptools)) |
| 36702 | (home-page "https://ndeflib.readthedocs.io/") |
| 36703 | (synopsis "NFC Data Exchange Format decoder and encoder.") |
| 36704 | (description "This package provides a NFC (Near-Field Communication) |
| 36705 | Data Exchange Format decoder and encoder.") |
| 36706 | (license license:isc))) |
| 36707 | |
| 36708 | (define-public python-nfcpy |
| 36709 | (package |
| 36710 | (name "python-nfcpy") |
| 36711 | (version "1.0.4") |
| 36712 | (source |
| 36713 | (origin |
| 36714 | (method url-fetch) |
| 36715 | (uri (pypi-uri "nfcpy" version)) |
| 36716 | (sha256 |
| 36717 | (base32 "0sxgp298i8y17i9drp8sclxx0i3vn0wgh5ajs2arw7cy2780igg5")))) |
| 36718 | (build-system pyproject-build-system) |
| 36719 | (arguments |
| 36720 | `(#:tests? #f)) ; Tests use nfc.ndef even though that has been removed. |
| 36721 | (propagated-inputs (list python-libusb1 python-ndeflib python-pydes |
| 36722 | python-pyserial)) |
| 36723 | (native-inputs (list python-setuptools python-wheel)) |
| 36724 | (home-page "https://github.com/nfcpy/nfcpy") |
| 36725 | (synopsis "Python module for Near-Field Communication.") |
| 36726 | (description "This package provides a Python module for Near-Field |
| 36727 | Communication.") |
| 36728 | (license license:eupl1.1))) |
| 36729 | |
| 36730 | (define-public python-clrprint |
| 36731 | (package |
| 36732 | (name "python-clrprint") |
| 36733 | (version "2.0.1") |
| 36734 | (source (origin |
| 36735 | (method url-fetch) |
| 36736 | (uri (pypi-uri "clrprint" version)) |
| 36737 | (sha256 |
| 36738 | (base32 |
| 36739 | "0xfn8d1by2w7pjiji887qljk1avn4fylbnz1mj28gysm5g0zvy43")))) |
| 36740 | (build-system pyproject-build-system) |
| 36741 | (arguments '(#:tests? #f)) ;there are no tests |
| 36742 | (native-inputs |
| 36743 | (list python-setuptools)) |
| 36744 | (propagated-inputs (list python-colorama python-termcolor)) |
| 36745 | (home-page "https://github.com/AbhijithAJ/clrprint") |
| 36746 | (synopsis "Print colorful output in the terminal") |
| 36747 | (description "@code{clrprint} is developed to print colorful output in the |
| 36748 | terminal. It has red, blue, green, yellow, purple and black/white (default) |
| 36749 | colors.") |
| 36750 | (license license:expat))) |
| 36751 | |
| 36752 | (define-public python-mido |
| 36753 | (package |
| 36754 | (name "python-mido") |
| 36755 | (version "1.3.3") |
| 36756 | (source |
| 36757 | (origin |
| 36758 | (method git-fetch) |
| 36759 | (uri (git-reference |
| 36760 | (url "https://github.com/mido/mido") |
| 36761 | (commit version))) |
| 36762 | (file-name (git-file-name name version)) |
| 36763 | (sha256 |
| 36764 | (base32 "0skj6586aprr20ymn70drgbps1x3z5y0xj67crxgf4rinj5dw7kd")))) |
| 36765 | (build-system pyproject-build-system) |
| 36766 | (propagated-inputs (list python-packaging)) |
| 36767 | (native-inputs (list python-pytest python-setuptools python-setuptools-scm)) |
| 36768 | (home-page "https://mido.readthedocs.io/en/stable/") |
| 36769 | (synopsis "MIDI Objects for Python") |
| 36770 | (description |
| 36771 | "Mido is a Python library for working with MIDI 1.0 ports, messages and |
| 36772 | files.") |
| 36773 | (license license:expat))) |
| 36774 | |
| 36775 | (define-public python-pretty-midi |
| 36776 | (package |
| 36777 | (name "python-pretty-midi") |
| 36778 | (version "0.2.11") |
| 36779 | (source |
| 36780 | (origin |
| 36781 | (method git-fetch) |
| 36782 | (uri (git-reference |
| 36783 | (url "https://github.com/craffel/pretty-midi") |
| 36784 | (commit version))) |
| 36785 | (file-name (git-file-name name version)) |
| 36786 | (sha256 |
| 36787 | (base32 "1ksxf4pvqn0qdhq56zbsjqwl1a47xfnqnmj83i65anfb6j36sj46")))) |
| 36788 | (build-system pyproject-build-system) |
| 36789 | (arguments |
| 36790 | (list |
| 36791 | #:phases |
| 36792 | #~(modify-phases %standard-phases |
| 36793 | (add-after 'unpack 'remove-six |
| 36794 | (lambda _ |
| 36795 | (substitute* "pretty_midi/pretty_midi.py" |
| 36796 | ((".*import six.*") |
| 36797 | "") |
| 36798 | (("six\\.string_types") |
| 36799 | "str")) |
| 36800 | (substitute* "setup.py" |
| 36801 | (("'six.*',") |
| 36802 | ""))))))) |
| 36803 | (propagated-inputs |
| 36804 | (list python-importlib-resources python-mido python-numpy)) |
| 36805 | (native-inputs |
| 36806 | (list python-pytest python-setuptools)) |
| 36807 | (home-page "https://github.com/craffel/pretty-midi") |
| 36808 | (synopsis "Functions and classes for handling MIDI data conveniently") |
| 36809 | (description |
| 36810 | "@code{pretty_midi} contains utility function/classes for handling MIDI |
| 36811 | data, so that it's in a format which is easy to modify and extract information |
| 36812 | from.") |
| 36813 | (license license:expat))) |
| 36814 | |
| 36815 | (define-public python-musical-scales |
| 36816 | (package |
| 36817 | (name "python-musical-scales") |
| 36818 | ;; PyPI has no tests, git has no tags, use the latest commit corresponding |
| 36819 | ;; to v2.0.0. |
| 36820 | (properties '((commit . "bdc35b360edda7583806fd6037bef2716f08fc85") |
| 36821 | (revision . "0"))) |
| 36822 | (version (git-version "2.0.0" |
| 36823 | (assoc-ref properties 'revision) |
| 36824 | (assoc-ref properties 'commit))) |
| 36825 | (source |
| 36826 | (origin |
| 36827 | (method git-fetch) |
| 36828 | (uri (git-reference |
| 36829 | (url "https://github.com/hmillerbakewell/musical-scales") |
| 36830 | (commit (assoc-ref properties 'commit)))) |
| 36831 | (file-name (git-file-name name version)) |
| 36832 | (sha256 |
| 36833 | (base32 "0znkiq6r61h1sj5r24kah6h94c5agfpq4ypadn4i73hry0fkl9fd")))) |
| 36834 | (build-system pyproject-build-system) |
| 36835 | (native-inputs (list python-pytest python-setuptools)) |
| 36836 | (home-page "https://github.com/hmillerbakewell/musical-scales") |
| 36837 | (synopsis "Retrieve a scale based on a given mode and starting note") |
| 36838 | (description |
| 36839 | "Retrieve a scale based on a given mode and starting note. |
| 36840 | Information about these scales can be |
| 36841 | @url{https://en.wikipedia.org/wiki/List_of_musical_scales_and_modes, found on |
| 36842 | Wikipedia}.") |
| 36843 | (license license:expat))) |
| 36844 | |
| 36845 | (define-public python-langcodes |
| 36846 | (package |
| 36847 | (name "python-langcodes") |
| 36848 | (version "3.5.0") |
| 36849 | (source (origin |
| 36850 | (method url-fetch) |
| 36851 | (uri (pypi-uri "langcodes" version)) |
| 36852 | (sha256 |
| 36853 | (base32 |
| 36854 | "00gqlqs1gi8mvjwf6fkwiqhgcqxnsk5gwzs9l8qy2lbys1l83vqy")))) |
| 36855 | (build-system pyproject-build-system) |
| 36856 | (native-inputs |
| 36857 | (list python-pytest |
| 36858 | python-setuptools |
| 36859 | python-setuptools-scm)) |
| 36860 | (propagated-inputs |
| 36861 | ;; [optional:data] |
| 36862 | (list python-language-data)) |
| 36863 | (home-page "https://github.com/rspeer/langcodes") |
| 36864 | (synopsis "Python library for working with language codes") |
| 36865 | (description |
| 36866 | "This package provides a Python library for working with and comparing |
| 36867 | language codes. |
| 36868 | |
| 36869 | @code{python-langcodes} implements @url{http://tools.ietf.org/html/bcp47, BCP |
| 36870 | 47}, the IETF Best Current Practices on Tags for Identifying Languages. BCP |
| 36871 | 47 is also known as RFC 5646. It subsumes ISO 639 and is backward compatible |
| 36872 | with it, and it also implements recommendations from the |
| 36873 | @url{http://cldr.unicode.org/, Unicode CLDR}. |
| 36874 | |
| 36875 | @code{python-langcodes} can also refer to a database of language properties |
| 36876 | and names, built from Unicode CLDR and the IANA subtag registry, if you |
| 36877 | install @code{python-language-data}.") |
| 36878 | (license license:expat))) |
| 36879 | |
| 36880 | (define-public python-anyascii |
| 36881 | (package |
| 36882 | (name "python-anyascii") |
| 36883 | (version "0.3.3") |
| 36884 | (source (origin |
| 36885 | (method url-fetch) |
| 36886 | (uri (pypi-uri "anyascii" version)) |
| 36887 | (sha256 |
| 36888 | (base32 |
| 36889 | "1hwmzg3kxyj6lxdgibrj3azv803x8kwzw1d3xja98gbvskcrskn9")))) |
| 36890 | (build-system pyproject-build-system) |
| 36891 | (native-inputs (list python-pytest python-flit-core)) |
| 36892 | (home-page "https://anyascii.com") |
| 36893 | (synopsis "Unicode to ASCII transliteration") |
| 36894 | (description "@code{anyascii} converts Unicode characters to their best |
| 36895 | ASCII representation.") |
| 36896 | (license license:isc))) |
| 36897 | |
| 36898 | (define-public python-geomet |
| 36899 | (package |
| 36900 | (name "python-geomet") |
| 36901 | (version "1.1.0") |
| 36902 | (source |
| 36903 | (origin |
| 36904 | (method git-fetch) |
| 36905 | (uri (git-reference |
| 36906 | (url "https://github.com/geomet/geomet") |
| 36907 | (commit version))) |
| 36908 | (file-name (git-file-name name version)) |
| 36909 | (sha256 |
| 36910 | (base32 "06pq3xkvsxl2v6q39pqgkjbaysyylshny28k8krzg7drvpvkdwk1")))) |
| 36911 | (build-system pyproject-build-system) |
| 36912 | (native-inputs (list python-pytest python-setuptools)) |
| 36913 | (propagated-inputs (list python-click python-six)) |
| 36914 | (home-page "https://github.com/geomet/geomet") |
| 36915 | (synopsis |
| 36916 | "Convert GeoJSON to WKT/WKB (Well-Known Text/Binary) or GeoPackage Binary") |
| 36917 | (description |
| 36918 | "This package provides utilities and functions for converting |
| 36919 | GeoJSON to WKT/WKB (Well-Known Text/Binary) or GeoPackage Binary, and vice |
| 36920 | versa. Extended WKB/WKT are also supported.") |
| 36921 | (license license:asl2.0))) |
| 36922 | |
| 36923 | (define-public python-cogapp |
| 36924 | (package |
| 36925 | (name "python-cogapp") |
| 36926 | (version "3.3.0") |
| 36927 | (source (origin |
| 36928 | (method url-fetch) |
| 36929 | (uri (pypi-uri "cogapp" version)) |
| 36930 | (sha256 |
| 36931 | (base32 |
| 36932 | "1c0xx3p3lzrlyqhmccyq9c50f8v9pqk2992gb4nl50h2yy1m3s8v")))) |
| 36933 | (build-system pyproject-build-system) |
| 36934 | (native-inputs (list python-pytest python-setuptools python-wheel)) |
| 36935 | (home-page "https://nedbatchelder.com/code/cog") |
| 36936 | (synopsis "Content generation tool that leverages Python") |
| 36937 | (description "Cog is a file generation tool. It allows using pieces of |
| 36938 | Python code as generators in your source files to generate arbitrary text.") |
| 36939 | (license license:expat))) |
| 36940 | |
| 36941 | (define-public python-cxxheaderparser |
| 36942 | (package |
| 36943 | (name "python-cxxheaderparser") |
| 36944 | (version "1.7.0") |
| 36945 | (source |
| 36946 | (origin |
| 36947 | (method git-fetch) |
| 36948 | (uri (git-reference |
| 36949 | (url "https://github.com/robotpy/cxxheaderparser") |
| 36950 | (commit version))) |
| 36951 | (file-name (git-file-name name version)) |
| 36952 | (sha256 |
| 36953 | (base32 "0x8bd8zffjg1cq9hgglr445582kyjw5qs6mq7n6k7n01ihhni3hs")))) |
| 36954 | (build-system pyproject-build-system) |
| 36955 | (native-inputs |
| 36956 | (list python-hatch-vcs python-pytest)) |
| 36957 | (home-page "https://github.com/robotpy/cxxheaderparser/") |
| 36958 | (synopsis "Python C++ header parser") |
| 36959 | (description "Pure python C++ header parser that parses C++ headers in a |
| 36960 | mildly naive manner that allows it to handle many C constructs, including |
| 36961 | many (C++11 and beyond) features.") |
| 36962 | (license license:bsd-3))) |
| 36963 | |
| 36964 | (define-public python-bsdiff4 |
| 36965 | (package |
| 36966 | (name "python-bsdiff4") |
| 36967 | (version "1.2.6") |
| 36968 | (source |
| 36969 | (origin |
| 36970 | (method git-fetch) |
| 36971 | (uri (git-reference |
| 36972 | (url "https://github.com/ilanschnell/bsdiff4") |
| 36973 | (commit version))) |
| 36974 | (file-name (git-file-name name version)) |
| 36975 | (sha256 |
| 36976 | (base32 "1s64xmgcyzp7x6rcyfcryyz4mv5qm8l7s365rgbi6qfpnblnby0c")))) |
| 36977 | (build-system pyproject-build-system) |
| 36978 | (arguments |
| 36979 | (list |
| 36980 | #:test-flags #~(list "--pyargs" "bsdiff4"))) |
| 36981 | (native-inputs |
| 36982 | (list python-pytest |
| 36983 | python-setuptools |
| 36984 | python-wheel)) |
| 36985 | (home-page "https://github.com/ilanschnell/bsdiff4") |
| 36986 | (synopsis "Binary diff and patch using the BSDIFF4 format") |
| 36987 | (description |
| 36988 | "This package provides a Python library for the @code{bsdiff} binary diff |
| 36989 | utility. It also provides two command-line tools, @code{bsdiff4} and |
| 36990 | @code{bspatch4}.") |
| 36991 | (license license:bsd-2))) |
| 36992 | |
| 36993 | (define-public python-mpv |
| 36994 | (package |
| 36995 | (name "python-mpv") |
| 36996 | (version "1.0.8") |
| 36997 | (source |
| 36998 | (origin |
| 36999 | (method git-fetch) |
| 37000 | (uri (git-reference |
| 37001 | (url "https://github.com/jaseg/python-mpv") |
| 37002 | (commit (string-append "v" version)))) |
| 37003 | (file-name (git-file-name name version)) |
| 37004 | (sha256 |
| 37005 | (base32 "04azy5wa2n8pa21z6lz1p1p0vy7flaqm8ypy46jb77gig2g50xrh")))) |
| 37006 | (build-system pyproject-build-system) |
| 37007 | (arguments |
| 37008 | (list #:phases |
| 37009 | #~(modify-phases %standard-phases |
| 37010 | (add-before 'build 'patch-reference-to-mpv |
| 37011 | (lambda* (#:key inputs #:allow-other-keys) |
| 37012 | ;; Without an absolute path it is not able find and load libmpv. |
| 37013 | (substitute* "mpv.py" |
| 37014 | (("sofile = .*") |
| 37015 | (format #f "sofile = '~a/lib/libmpv.so'~%" |
| 37016 | #$(this-package-input "mpv")))))) |
| 37017 | (add-before 'check 'prepare-for-tests |
| 37018 | (lambda _ |
| 37019 | ;; Fontconfig throws errors when it has no cache dir to use. |
| 37020 | (setenv "XDG_CACHE_HOME" (getcwd)) |
| 37021 | ;; Some tests fail without a writable and readable HOME. |
| 37022 | (setenv "HOME" (getcwd)) |
| 37023 | (setenv "PY_MPV_SKIP_TESTS" |
| 37024 | "test_wait_for_property_event_overflow")))))) |
| 37025 | (native-inputs |
| 37026 | (list python-pytest |
| 37027 | python-pyvirtualdisplay |
| 37028 | python-setuptools |
| 37029 | xorg-server-for-tests)) |
| 37030 | (inputs (list mpv)) |
| 37031 | (propagated-inputs (list python-pillow)) ;for raw screenshots |
| 37032 | (home-page "https://github.com/jaseg/python-mpv") |
| 37033 | (synopsis "Python interface to the mpv media player") |
| 37034 | (description |
| 37035 | "python-mpv is a ctypes-based python interface to the mpv media player. |
| 37036 | It gives you more or less full control of all features of the player, just |
| 37037 | as the lua interface does.") |
| 37038 | ;; From the project's README: |
| 37039 | ;; python-mpv inherits the underlying libmpv's license, which can be either |
| 37040 | ;; GPLv2 or later (default) or LGPLv2.1 or later. For details, see the mpv |
| 37041 | ;; copyright page. |
| 37042 | (license license:gpl2+))) |
| 37043 | |
| 37044 | (define-public python-biblib |
| 37045 | (let ((upstream-version "0.1.0") |
| 37046 | (commit "ab0e857b9198fe425ec9b02fcc293b5d9fd0c406") |
| 37047 | (revision "1")) |
| 37048 | (package |
| 37049 | (name "python-biblib") |
| 37050 | (version (git-version upstream-version revision commit)) |
| 37051 | (source |
| 37052 | (origin |
| 37053 | (method git-fetch) |
| 37054 | (uri (git-reference |
| 37055 | (url "https://github.com/aclements/biblib") |
| 37056 | (commit commit))) |
| 37057 | (sha256 |
| 37058 | (base32 "1ym1gwxys9gl5a7fjs6xh5z9w50pnq4z3rs6fx7kpv78hlrbjlip")) |
| 37059 | (file-name (git-file-name name version)))) |
| 37060 | (build-system pyproject-build-system) |
| 37061 | (arguments (list #:tests? #f)) ; No tests upstream. |
| 37062 | (native-inputs (list python-setuptools)) |
| 37063 | (home-page "https://github.com/aclements/biblib") |
| 37064 | (synopsis "BibTeX parsing and transformation library") |
| 37065 | (description |
| 37066 | "Biblib provides a simple, standalone Python 3 package for parsing |
| 37067 | BibTeX bibliographic databases, as well as algorithms for manipulating BibTeX |
| 37068 | entries in BibTeX-y ways. Biblib's parser is derived directly from the WEB |
| 37069 | source code for BibTeX and hence (barring bugs in translation) should be fully |
| 37070 | compatible with BibTeX's own parser.") |
| 37071 | ;; N.B. It seems the parser was translated from WEB by hand: this |
| 37072 | ;; package does not contain any generated files. |
| 37073 | (license license:expat)))) |
| 37074 | |
| 37075 | (define-public python-cyclic |
| 37076 | (package |
| 37077 | (name "python-cyclic") |
| 37078 | (version "1.0.0") |
| 37079 | (source |
| 37080 | (origin |
| 37081 | (method git-fetch) |
| 37082 | (uri (git-reference |
| 37083 | (url "https://github.com/neurobin/cyclic") |
| 37084 | ;; Release is not tagged on github, see |
| 37085 | ;; https://github.com/neurobin/cyclic/issues/2 |
| 37086 | (commit "bf616c47ea49a43500ea55a1e6f4890323be0679"))) |
| 37087 | (file-name (git-file-name name version)) |
| 37088 | (sha256 |
| 37089 | (base32 "0r8zzjdv70fpxssxps62rlgpii8fr9gh8gykdygqn6mkdnfjwgjc")))) |
| 37090 | (build-system pyproject-build-system) |
| 37091 | (arguments (list #:test-backend #~'unittest)) |
| 37092 | (native-inputs (list python-setuptools)) |
| 37093 | (home-page "https://github.com/neurobin/cyclic") |
| 37094 | (synopsis "Handle cyclic relations") |
| 37095 | (description "This package handles cyclic relations compared by value.") |
| 37096 | (license license:bsd-3))) |
| 37097 | |
| 37098 | (define-public python-rcslice |
| 37099 | (package |
| 37100 | (name "python-rcslice") |
| 37101 | (version "1.1.0") |
| 37102 | (source |
| 37103 | (origin |
| 37104 | (method git-fetch) |
| 37105 | (uri (git-reference |
| 37106 | (url "https://github.com/neurobin/rcslice") |
| 37107 | ;; Releases are not tagged on github, see |
| 37108 | ;; https://github.com/neurobin/rcslice/issues/2 |
| 37109 | (commit "1e1ef42cd262db76b67ded430630d5b499790f42"))) |
| 37110 | (file-name (git-file-name name version)) |
| 37111 | (sha256 |
| 37112 | (base32 "1lmhcgghh60kvdlx0cin1phhgfy9jivc6l0mb4ibnpa1x1md0zvv")))) |
| 37113 | (build-system pyproject-build-system) |
| 37114 | (arguments (list #:test-backend #~'unittest)) |
| 37115 | (native-inputs (list python-setuptools)) |
| 37116 | (home-page "https://github.com/neurobin/rcslice") |
| 37117 | (synopsis "Slice a list of sliceables") |
| 37118 | (description |
| 37119 | "This package provides Python module to slice a list of sliceables (1 |
| 37120 | indexed, both start and end index are inclusive). Helps to slice file content |
| 37121 | line by line or column by column or a combination of both.") |
| 37122 | (license license:bsd-3))) |
| 37123 | |
| 37124 | (define-public python-rpds-py |
| 37125 | (package |
| 37126 | (name "python-rpds-py") |
| 37127 | (version "0.30.0") |
| 37128 | (source (origin |
| 37129 | (method url-fetch) |
| 37130 | (uri (pypi-uri "rpds_py" version)) |
| 37131 | (sha256 |
| 37132 | (base32 |
| 37133 | "110y8k62b9xb3slny7gf89943xpbji3s7vl7yz0g0jh1j37zg3yx")))) |
| 37134 | (build-system cargo-build-system) |
| 37135 | (arguments |
| 37136 | (list |
| 37137 | #:imported-modules `(,@%cargo-build-system-modules |
| 37138 | ,@%pyproject-build-system-modules) |
| 37139 | #:modules '((guix build cargo-build-system) |
| 37140 | ((guix build pyproject-build-system) #:prefix py:) |
| 37141 | (guix build utils)) |
| 37142 | #:phases |
| 37143 | #~(modify-phases %standard-phases |
| 37144 | (add-after 'build 'build-python-module |
| 37145 | (assoc-ref py:%standard-phases 'build)) |
| 37146 | (add-after 'build-python-module 'install-python-module |
| 37147 | (assoc-ref py:%standard-phases 'install))) |
| 37148 | #:install-source? #false)) |
| 37149 | (inputs |
| 37150 | (cons maturin (cargo-inputs 'python-rpds-py))) |
| 37151 | (native-inputs |
| 37152 | (list python-wrapper)) |
| 37153 | (home-page "https://github.com/crate-py/rpds") |
| 37154 | (synopsis "Bindings to Rust rpds for persistent data structures") |
| 37155 | (description "This package provides Python bindings to the Rust rpds crate |
| 37156 | for persistent data structures. It was written initially to support replacing |
| 37157 | @code{python-pyrsistent}.") |
| 37158 | (license license:expat))) |
| 37159 | |
| 37160 | (define-public python-nanoid |
| 37161 | (let ((commit "061f9a598f310b0e2e91b9ed6ce725a22770da64") |
| 37162 | (revision "0")) |
| 37163 | (package |
| 37164 | (name "python-nanoid") |
| 37165 | (version "2.0.0") |
| 37166 | (source |
| 37167 | (origin |
| 37168 | (method git-fetch) |
| 37169 | (uri |
| 37170 | (git-reference |
| 37171 | (url "https://github.com/puyuan/py-nanoid") |
| 37172 | (commit commit))) |
| 37173 | (file-name (git-file-name name commit)) |
| 37174 | (sha256 |
| 37175 | (base32 "0y1bcw0h27g8rkqq7cp33ywn0i0lp0q3rjixzkh4191y1dp9yf8s")))) |
| 37176 | (build-system pyproject-build-system) |
| 37177 | (native-inputs (list python-pytest python-setuptools)) |
| 37178 | (home-page "https://github.com/puyuan/py-nanoid") |
| 37179 | (synopsis "Unique string ID generator") |
| 37180 | (description |
| 37181 | "This package provides a tiny, secure, URL-friendly, unique string ID |
| 37182 | generator for Python.") |
| 37183 | (license license:expat)))) |
| 37184 | |
| 37185 | (define-public python-misc-utils |
| 37186 | (package |
| 37187 | (name "python-misc-utils") |
| 37188 | (version "0.28") |
| 37189 | (source |
| 37190 | (origin |
| 37191 | (method git-fetch) |
| 37192 | (uri (git-reference |
| 37193 | (url "https://github.com/davidel/py_misc_utils") |
| 37194 | (commit version))) |
| 37195 | (file-name (git-file-name name version)) |
| 37196 | (sha256 |
| 37197 | (base32 "0zk3lr9xviqqsvag0is91p2f70w8qlmvk25pp2xprrh30fhxfa9g")))) |
| 37198 | (build-system pyproject-build-system) |
| 37199 | (arguments |
| 37200 | (list |
| 37201 | #:tests? #f ; see https://github.com/davidel/py_misc_utils/issues/1 |
| 37202 | #:test-backend #~'custom |
| 37203 | #:test-flags #~(list "test/test_runner.py"))) |
| 37204 | (propagated-inputs |
| 37205 | (list python-numpy python-pandas python-psutil python-pyyaml)) |
| 37206 | (native-inputs (list python-setuptools)) |
| 37207 | (home-page "https://github.com/davidel/py_misc_utils") |
| 37208 | (synopsis "Collection of Python utilities") |
| 37209 | (description "This package provides a collection of Python miscellaneous |
| 37210 | utility tools mainly used by other projects of the same author.") |
| 37211 | (license license:asl2.0))) |
| 37212 | |
| 37213 | (define-public python-misskey |
| 37214 | (package |
| 37215 | (name "python-misskey") |
| 37216 | (version "4.1.0") |
| 37217 | (source (origin |
| 37218 | (method git-fetch) |
| 37219 | (uri (git-reference |
| 37220 | (url "https://github.com/YuzuRyo61/Misskey.py") |
| 37221 | (commit (string-append "v" version)))) |
| 37222 | (file-name (git-file-name name version)) |
| 37223 | (sha256 |
| 37224 | (base32 |
| 37225 | "0rma8pdsjsy00cg76q6q4qki4xpldykmz1m6dl3w2bjjxfhlbaz5")))) |
| 37226 | (build-system pyproject-build-system) |
| 37227 | (arguments (list #:tests? #f)) ;needs network |
| 37228 | (native-inputs (list python-setuptools)) |
| 37229 | (propagated-inputs (list python-requests)) |
| 37230 | (home-page "https://misskeypy.readthedocs.io") |
| 37231 | (synopsis "Python bindings for Misskey's API") |
| 37232 | (description |
| 37233 | "This package provides access to Misskey's API. Misskey is a SNS |
| 37234 | platform using the ActivityPub protocol.") |
| 37235 | (license license:expat))) |
| 37236 | |
| 37237 | (define-public python-lief |
| 37238 | (package |
| 37239 | (name "python-lief") |
| 37240 | (version "1.0.0") |
| 37241 | (source |
| 37242 | (origin |
| 37243 | (method git-fetch) |
| 37244 | (uri (git-reference |
| 37245 | (url "https://github.com/lief-project/LIEF") |
| 37246 | (commit version))) |
| 37247 | (file-name (git-file-name name version)) |
| 37248 | (sha256 |
| 37249 | (base32 "0yhs1x8nli5lhwiq383nnfv8ajgbdidcjckdls1j0zrmyf9kbfa2")))) |
| 37250 | (build-system pyproject-build-system) |
| 37251 | (arguments |
| 37252 | (list |
| 37253 | ;; TODO: Tests neeed some setup, see: |
| 37254 | ;; <.github/workflows/linux-x86-64.yml>. |
| 37255 | #:tests? #f |
| 37256 | #:phases |
| 37257 | #~(modify-phases %standard-phases |
| 37258 | (add-before 'build 'change-directory |
| 37259 | (lambda _ |
| 37260 | (chdir "api/python")))))) |
| 37261 | (native-inputs |
| 37262 | (list ninja |
| 37263 | python-pydantic |
| 37264 | python-scikit-build-core |
| 37265 | python-tomli)) |
| 37266 | (home-page "https://github.com/lief-project/LIEF") |
| 37267 | (synopsis "Library to instrument executable formats") |
| 37268 | (description |
| 37269 | "@code{python-lief} is a cross platform library which can parse, modify |
| 37270 | and abstract ELF, PE and MachO formats.") |
| 37271 | (license license:asl2.0))) |
| 37272 | |
| 37273 | (define-public python-eris |
| 37274 | (package |
| 37275 | (name "python-eris") |
| 37276 | (version "1.0.0") |
| 37277 | (source |
| 37278 | (origin |
| 37279 | (method url-fetch) |
| 37280 | (uri (pypi-uri "eris" version)) |
| 37281 | (sha256 |
| 37282 | (base32 "07a69y8w8n0zvdcd7qfcjf2s9hnd5jlbdl57g39ds2bxprzyc8va")))) |
| 37283 | (build-system pyproject-build-system) |
| 37284 | (arguments |
| 37285 | ;; No tests in PyPI, tests miss data files in Git: |
| 37286 | ;; - tests/test-vectors/test_encode |
| 37287 | ;; - tests/test-vectors/test_decode |
| 37288 | (list #:tests? #f)) |
| 37289 | (native-inputs |
| 37290 | (list python-setuptools |
| 37291 | python-wheel)) |
| 37292 | (propagated-inputs |
| 37293 | (list python-aiocoap |
| 37294 | python-pycryptodome)) |
| 37295 | (home-page "https://codeberg.org/eris/python-eris") |
| 37296 | (synopsis "Python implementation of ERIS") |
| 37297 | (description |
| 37298 | "Python implementation of the @acronym{ERIS, Encoding for Robust Immutable |
| 37299 | Storage}.") |
| 37300 | (license license:lgpl3+))) |
| 37301 | |
| 37302 | (define-public python-pymonad |
| 37303 | (package |
| 37304 | (name "python-pymonad") |
| 37305 | (version "2.4.0") |
| 37306 | (source |
| 37307 | (origin |
| 37308 | (method git-fetch) |
| 37309 | (uri (git-reference |
| 37310 | (url "https://github.com/jasondelaat/pymonad") |
| 37311 | (commit (string-append "v" version)))) |
| 37312 | (file-name (git-file-name name version)) |
| 37313 | (sha256 |
| 37314 | (base32 "0ci1mpydldiyg9qv6d19ljhfh7wxlrl2k4mlvqd9bm7dqvpdjsx7")))) |
| 37315 | (build-system pyproject-build-system) |
| 37316 | (arguments |
| 37317 | (list |
| 37318 | #:phases |
| 37319 | #~(modify-phases %standard-phases |
| 37320 | (replace 'check |
| 37321 | (lambda* (#:key tests? #:allow-other-keys) |
| 37322 | (when tests? |
| 37323 | (invoke "./run_tests.sh"))))))) |
| 37324 | (native-inputs (list python-setuptools)) |
| 37325 | (home-page "https://github.com/jasondelaat/pymonad") |
| 37326 | (synopsis "Monadic style functional programming for Python") |
| 37327 | (description "@code{python-pymonad} implements data structures typically |
| 37328 | available in purely functional or functional first programming languages such |
| 37329 | as Haskell and F#. Included are |
| 37330 | |
| 37331 | @itemize |
| 37332 | @item Monad and Monoid data types with several common monads such as Maybe and |
| 37333 | State |
| 37334 | @item Useful tools such as the @code{@@curry} decorator for defining curried |
| 37335 | functions |
| 37336 | @item Type annotations to help ensure correct usage |
| 37337 | @end itemize") |
| 37338 | (license license:bsd-3))) |
| 37339 | |
| 37340 | (define-public python-markdown-strings |
| 37341 | (package |
| 37342 | (name "python-markdown-strings") |
| 37343 | (version "3.3.0") |
| 37344 | (source |
| 37345 | (origin |
| 37346 | (method git-fetch) |
| 37347 | (uri (git-reference |
| 37348 | (url "https://github.com/awesmubarak/markdown_strings.git") |
| 37349 | (commit (string-append "v" version)))) |
| 37350 | (file-name (git-file-name name version)) |
| 37351 | (sha256 |
| 37352 | (base32 "0064ni7s3k8hqw61wi9m31icxp61f8adhija2qsp46hclcwx7vz2")))) |
| 37353 | (build-system pyproject-build-system) |
| 37354 | (arguments |
| 37355 | (list |
| 37356 | #:test-backend #~'custom |
| 37357 | #:test-flags #~(list "test.py"))) |
| 37358 | (native-inputs (list python-setuptools)) |
| 37359 | (propagated-inputs (list python-lxml python-six)) |
| 37360 | (home-page "https://github.com/awesmubarak/markdown_strings") |
| 37361 | (synopsis "Python library to create markdown-formatted text") |
| 37362 | (description "This package allows the programmatic creation of |
| 37363 | markdown-compliant strings.") |
| 37364 | (license license:expat))) |
| 37365 | |
| 37366 | (define-public python-icecream |
| 37367 | (package |
| 37368 | (name "python-icecream") |
| 37369 | (version "2.1.9") |
| 37370 | (source |
| 37371 | (origin |
| 37372 | (method git-fetch) |
| 37373 | (uri (git-reference |
| 37374 | (url "https://github.com/gruns/icecream") |
| 37375 | (commit (string-append "v" version)))) |
| 37376 | (file-name (git-file-name name version)) |
| 37377 | (sha256 |
| 37378 | (base32 "1scxnjnnapqwzvhii07ax72yp6cj9ksn76bpnw04hg2i92snc3g2")))) |
| 37379 | (build-system pyproject-build-system) |
| 37380 | (native-inputs |
| 37381 | (list python-hypothesis |
| 37382 | python-pytest |
| 37383 | python-setuptools)) |
| 37384 | (propagated-inputs |
| 37385 | (list python-asttokens |
| 37386 | python-colorama |
| 37387 | python-executing |
| 37388 | python-pygments)) |
| 37389 | (home-page "https://github.com/gruns/icecream") |
| 37390 | (synopsis |
| 37391 | "Single function call to debug variables, expressions, and program execution") |
| 37392 | (description |
| 37393 | "This tool lets you debug variables, expressions, and program execution |
| 37394 | with one function call. IceCream makes print debugging a little sweeter.") |
| 37395 | (license license:expat))) |
| 37396 | |
| 37397 | ;; XXX: Deprecated on <2026-07-12>. |
| 37398 | (define-deprecated/public-alias python-icegrams |
| 37399 | (@ (gnu packages language) python-icegrams)) |
| 37400 | |
| 37401 | (define-public python-sbsv |
| 37402 | (package |
| 37403 | (name "python-sbsv") |
| 37404 | (version "0.3.1") |
| 37405 | (source |
| 37406 | (origin |
| 37407 | (method git-fetch) |
| 37408 | (uri (git-reference |
| 37409 | (url "https://github.com/hsh814/sbsv") |
| 37410 | (commit (string-append "v" version)))) |
| 37411 | (file-name (git-file-name name version)) |
| 37412 | (sha256 |
| 37413 | (base32 "0wgqb7j2slp05zm6s2qqsb5821vzz1w3jdcwsn2k3jfj7mylnryq")) |
| 37414 | (modules '((guix build utils))) |
| 37415 | (snippet |
| 37416 | #~(begin ;unbundle c-sbsv |
| 37417 | (delete-file-recursively "libsbsv") |
| 37418 | (substitute* "setup.py" |
| 37419 | ((" *\"libsbsv/src/.*") "") |
| 37420 | ((" *include_dirs=.*,") "libraries=['sbsv'],") |
| 37421 | ((" *optional=True,.*") "")))))) |
| 37422 | (build-system pyproject-build-system) |
| 37423 | (arguments |
| 37424 | (list #:phases #~(modify-phases %standard-phases |
| 37425 | (add-after 'unpack 'remove-setuptools-legacy |
| 37426 | (lambda _ |
| 37427 | (substitute* "pyproject.toml" |
| 37428 | ((":__legacy__") ""))))))) |
| 37429 | (native-inputs (list python-setuptools python-pytest)) |
| 37430 | (inputs (list c-sbsv)) |
| 37431 | (home-page "https://github.com/hsh814/sbsv") |
| 37432 | (synopsis "Square bracket separated values") |
| 37433 | (description |
| 37434 | "This Python package provides a schema-driven structured log data format |
| 37435 | for the ease of writing and parsing.") |
| 37436 | (license license:expat))) |
| 37437 | |
| 37438 | (define-public python-sqlglot |
| 37439 | (package |
| 37440 | (name "python-sqlglot") |
| 37441 | (version "26.33.0") |
| 37442 | (source |
| 37443 | (origin |
| 37444 | (method url-fetch) |
| 37445 | (uri (pypi-uri "sqlglot" version)) |
| 37446 | (sha256 |
| 37447 | (base32 "0wqdpix71bzx61qwk3mi7v42afmrj03dg81sykgdclgsg63jf5r8")))) |
| 37448 | (build-system pyproject-build-system) |
| 37449 | (arguments |
| 37450 | (list |
| 37451 | #:test-backend #~'unittest |
| 37452 | #:phases |
| 37453 | #~(modify-phases %standard-phases |
| 37454 | (add-before 'check 'pre-check |
| 37455 | (lambda _ |
| 37456 | (setenv "SQLGLOTRS_TOKENIZER" "0")))))) |
| 37457 | (native-inputs |
| 37458 | (list python-duckdb |
| 37459 | python-pytz |
| 37460 | python-pandas |
| 37461 | python-setuptools |
| 37462 | python-setuptools-scm |
| 37463 | python-tzdata)) |
| 37464 | (home-page "https://sqlglot.com/") |
| 37465 | (synopsis "Python SQL Parser and Transpiler") |
| 37466 | (description |
| 37467 | "SQLGlot is a no-dependency SQL parser, transpiler, optimizer, and |
| 37468 | engine. It can be used to format SQL or translate between 31 different |
| 37469 | dialects like DuckDB, Presto / Trino, Spark / Databricks, Snowflake, and |
| 37470 | BigQuery. It aims to read a wide variety of SQL inputs and output |
| 37471 | syntactically and semantically correct SQL in the targeted dialects.") |
| 37472 | (license license:expat))) |
| 37473 | |
| 37474 | (define-public python-sqlglotrs |
| 37475 | (package |
| 37476 | (inherit python-sqlglot) |
| 37477 | (name "python-sqlglotrs") |
| 37478 | (version "0.6.1") |
| 37479 | (source |
| 37480 | (origin |
| 37481 | (method url-fetch) |
| 37482 | (uri (pypi-uri "sqlglotrs" version)) |
| 37483 | (sha256 |
| 37484 | (base32 "1q8ii7fbgl2b2smi80bn5ifbs5xfzrkqqb4r1j5xx2k98jjsff7n")))) |
| 37485 | (build-system cargo-build-system) |
| 37486 | (arguments |
| 37487 | (list |
| 37488 | #:install-source? #false |
| 37489 | #:tests? #f ;no tests |
| 37490 | #:imported-modules `(,@%cargo-build-system-modules |
| 37491 | ,@%pyproject-build-system-modules) |
| 37492 | #:modules '((guix build cargo-build-system) |
| 37493 | ((guix build pyproject-build-system) #:prefix py:) |
| 37494 | (guix build utils)) |
| 37495 | #:phases |
| 37496 | #~(modify-phases %standard-phases |
| 37497 | (add-after 'build 'build-python-module |
| 37498 | (assoc-ref py:%standard-phases 'build)) |
| 37499 | (add-after 'build-python-module 'install-python-module |
| 37500 | (assoc-ref py:%standard-phases 'install)) |
| 37501 | (add-after 'install-python-module 'add-install-to-pythonpath |
| 37502 | (assoc-ref py:%standard-phases 'add-install-to-pythonpath))))) |
| 37503 | (native-inputs |
| 37504 | (list maturin |
| 37505 | python-wrapper)) |
| 37506 | (inputs |
| 37507 | (cargo-inputs 'python-sqlglotrs)))) |
| 37508 | |
| 37509 | (define-public python-sqltrie |
| 37510 | (package |
| 37511 | (name "python-sqltrie") |
| 37512 | (version "0.11.2") |
| 37513 | (home-page "https://github.com/iterative/sqltrie/") |
| 37514 | (source |
| 37515 | (origin |
| 37516 | (method url-fetch) |
| 37517 | (uri (pypi-uri "sqltrie" version)) |
| 37518 | (sha256 |
| 37519 | (base32 "1ninmia5ka1nnv4gxqacvbmkfxwc7dilw141rxxk9zmbnf4p1x2d")))) |
| 37520 | (build-system pyproject-build-system) |
| 37521 | (arguments |
| 37522 | (list |
| 37523 | #:test-flags |
| 37524 | #~(list "--ignore=tests/benchmarks/" |
| 37525 | ;; <https://github.com/pyinstaller/pyinstaller> is not packaged |
| 37526 | ;; yet in Guix. |
| 37527 | "--ignore=src/sqltrie/__pyinstaller"))) |
| 37528 | (native-inputs |
| 37529 | (list python-pytest |
| 37530 | python-pytest-mock |
| 37531 | python-pytest-sugar |
| 37532 | python-setuptools |
| 37533 | python-setuptools-scm)) |
| 37534 | (propagated-inputs |
| 37535 | (list python-attrs |
| 37536 | python-orjson |
| 37537 | python-pygtrie)) |
| 37538 | (synopsis "SQL-based prefix tree for Python") |
| 37539 | (description |
| 37540 | "Sqltrie is a SQL-based prefix tree inspired by pygtrie and |
| 37541 | python-diskcache.") |
| 37542 | (license license:asl2.0))) |
| 37543 | |
| 37544 | (define-public python-socksipy-branch |
| 37545 | (package |
| 37546 | (name "python-socksipy-branch") |
| 37547 | (version "1.01") |
| 37548 | (source |
| 37549 | (origin |
| 37550 | (method url-fetch) |
| 37551 | (uri (pypi-uri "SocksiPy-branch" version)) |
| 37552 | (sha256 |
| 37553 | (base32 "01l41v4g7fy9fzvinmjxy6zcbhgqaif8dhdqm4w90fwcw9h51a8p")))) |
| 37554 | (build-system pyproject-build-system) |
| 37555 | (arguments (list #:tests? #f)) ; There are no tests |
| 37556 | (native-inputs (list python-setuptools)) |
| 37557 | (home-page "https://code.google.com/archive/p/socksipy-branch/") |
| 37558 | (synopsis "Python SOCKS module") |
| 37559 | (description |
| 37560 | "SocksiPy - A Python SOCKS client module. It provides a socket-like |
| 37561 | interface that supports connections to any TCP service through the use of a |
| 37562 | SOCKS4, SOCKS5 or HTTP proxy. The original version was developed by Dan Haim, |
| 37563 | this is a branch created by Mario Vilas to address some open issues,as the |
| 37564 | original project seems to have been abandoned circa 2007.") |
| 37565 | (license license:bsd-3))) |
| 37566 | |
| 37567 | (define-public python-socksipychain |
| 37568 | (package |
| 37569 | (name "python-socksipychain") |
| 37570 | (properties '((commit . "570c75c55661db175bd733996ed1ab68fc4e3b33") |
| 37571 | (revision . "0"))) |
| 37572 | (version (git-version "2.1.3" |
| 37573 | (assoc-ref properties 'revision) |
| 37574 | (assoc-ref properties 'commit))) |
| 37575 | (source |
| 37576 | (origin |
| 37577 | (method git-fetch) |
| 37578 | (uri (git-reference |
| 37579 | (url "https://github.com/pagekite/PySocksipyChain") |
| 37580 | (commit (assoc-ref properties 'commit)))) |
| 37581 | (file-name (git-file-name name version)) |
| 37582 | (sha256 |
| 37583 | (base32 "1fi82id1qgh63wm8k1gcxpkaa8ic0mwliq7x3iy9lxihaqmr0zww")))) |
| 37584 | (build-system pyproject-build-system) |
| 37585 | (arguments (list #:tests? #f)) ; Tests try to access the network. |
| 37586 | (native-inputs (list python-setuptools)) |
| 37587 | (home-page "http://pagekite.net/wiki/Floss/PySocksipyChain/") |
| 37588 | (synopsis "Python SOCKS module with chained proxies support") |
| 37589 | (description |
| 37590 | "SocksiPyChain is a modified version of the SocksiPy SOCKS module, which |
| 37591 | adds support for arbitrary chaining of proxy servers and various modes of |
| 37592 | TLS/SSL encryption. It was developed for use in PageKite, and also includes |
| 37593 | a simple netcat replacement with chaining support.") |
| 37594 | (license license:bsd-3))) |
| 37595 | |
| 37596 | (define-public python-sortedcollections |
| 37597 | (package |
| 37598 | (name "python-sortedcollections") |
| 37599 | (version "2.1.0") |
| 37600 | (source |
| 37601 | (origin |
| 37602 | (method git-fetch) |
| 37603 | (uri (git-reference |
| 37604 | (url "https://github.com/grantjenks/python-sortedcollections") |
| 37605 | (commit (string-append "v" version)))) |
| 37606 | (file-name (git-file-name name version)) |
| 37607 | (sha256 |
| 37608 | (base32 "1y2xsbh31jp9fsjy53g5ma974z7a9vcds6ij1vlh00nllzqlwihs")))) |
| 37609 | (build-system pyproject-build-system) |
| 37610 | (native-inputs (list python-setuptools python-pytest python-wheel)) |
| 37611 | (propagated-inputs (list python-sortedcontainers)) |
| 37612 | (home-page "https://www.grantjenks.com/docs/sortedcollections/") |
| 37613 | (synopsis "Python Sorted Collections") |
| 37614 | (description "Sorted Collections is a Python sorted collections library.") |
| 37615 | (license license:asl2.0))) |
| 37616 | |
| 37617 | (define-public python-sortedcontainers |
| 37618 | (package |
| 37619 | (name "python-sortedcontainers") |
| 37620 | (version "2.4.0") |
| 37621 | (source |
| 37622 | (origin |
| 37623 | (method git-fetch) ;no tests in PyPI archive |
| 37624 | (uri (git-reference |
| 37625 | (url "https://github.com/grantjenks/python-sortedcontainers") |
| 37626 | (commit (string-append "v" version)))) |
| 37627 | (file-name (git-file-name name version)) |
| 37628 | (sha256 |
| 37629 | (base32 "190w2mvgvx0r5k0r8117slq48nh6k7xidbpsrp02wnmcd0rx45k1")))) |
| 37630 | (build-system pyproject-build-system) |
| 37631 | (arguments |
| 37632 | (list #:test-flags #~(list "--pyargs" "sortedcontainers"))) |
| 37633 | (native-inputs |
| 37634 | (list python-pytest-bootstrap python-setuptools)) |
| 37635 | (home-page "https://grantjenks.com/docs/sortedcontainers/") |
| 37636 | (synopsis "Sorted List, Sorted Dict, Sorted Set") |
| 37637 | (description |
| 37638 | "This package provides a sorted collections library, written in |
| 37639 | pure-Python.") |
| 37640 | (license license:asl2.0))) |
| 37641 | |
| 37642 | (define-public python-soupsieve |
| 37643 | (package |
| 37644 | (name "python-soupsieve") |
| 37645 | (version "2.7") |
| 37646 | (source |
| 37647 | (origin |
| 37648 | (method url-fetch) |
| 37649 | (uri (pypi-uri "soupsieve" version)) |
| 37650 | (sha256 |
| 37651 | (base32 "0shjmvk8yz2ljc16pmizg16bqhk1i8n5al27mlp6sa16d6djya5d")))) |
| 37652 | (build-system pyproject-build-system) |
| 37653 | (native-inputs |
| 37654 | (list python-beautifulsoup4-bootstrap |
| 37655 | python-hatchling |
| 37656 | python-pytest)) |
| 37657 | (home-page "https://github.com/facelessuser/soupsieve") |
| 37658 | (synopsis "CSS selector library") |
| 37659 | (description |
| 37660 | "Soup Sieve is a CSS selector library designed to be used with Beautiful |
| 37661 | Soup 4. It aims to provide selecting, matching, and filtering using modern |
| 37662 | CSS selectors. Soup Sieve currently provides selectors from the CSS level 1 |
| 37663 | specifications up through the latest CSS level 4 drafts and beyond (though |
| 37664 | some are not yet implemented).") |
| 37665 | (license license:expat))) |
| 37666 | |
| 37667 | (define-public python-spectra |
| 37668 | (package |
| 37669 | (name "python-spectra") |
| 37670 | (version "0.1.0") |
| 37671 | (source |
| 37672 | (origin |
| 37673 | (method url-fetch) |
| 37674 | (uri (pypi-uri "spectra" version)) |
| 37675 | (sha256 |
| 37676 | (base32 "0gva48a1rn5yxj6dgy76dnndqaf09k5q2l9r41h2a66b84rf6c3a")))) |
| 37677 | (build-system pyproject-build-system) |
| 37678 | (propagated-inputs |
| 37679 | (list python-colormath2)) |
| 37680 | (native-inputs |
| 37681 | (list python-pytest python-setuptools python-wheel)) |
| 37682 | (home-page "https://github.com/jsvine/spectra") |
| 37683 | (synopsis "Color scales and color conversion") |
| 37684 | (description |
| 37685 | "This package provides a Python library intended to make color math, |
| 37686 | color scales, and color space conversion easy. It has support for: |
| 37687 | |
| 37688 | @enumerate |
| 37689 | @item Color scales |
| 37690 | @item Color ranges |
| 37691 | @item Color blending |
| 37692 | @item Brightening/darkening colors |
| 37693 | @item Saturating/desaturating colors |
| 37694 | @item Conversion to/from multiple color spaces. |
| 37695 | @end enumerate\n") |
| 37696 | (license license:expat))) |
| 37697 | |
| 37698 | (define-public python-speedy-antlr-tool |
| 37699 | (package |
| 37700 | (name "python-speedy-antlr-tool") |
| 37701 | (version "1.4.3") |
| 37702 | (source |
| 37703 | (origin |
| 37704 | (method git-fetch) |
| 37705 | (uri (git-reference |
| 37706 | (url "https://github.com/amykyta3/speedy-antlr-tool") |
| 37707 | (commit (string-append "v" version)))) |
| 37708 | (file-name (git-file-name name version)) |
| 37709 | (sha256 |
| 37710 | (base32 "1bj67n3f6admjc7mfgnksb35s983inw2mh27d7wfp1xf697h0yp3")))) |
| 37711 | (build-system pyproject-build-system) |
| 37712 | (arguments '(#:tests? #f)) ;no test |
| 37713 | (native-inputs (list python-setuptools python-setuptools-scm)) |
| 37714 | (propagated-inputs (list python-antlr4-runtime python-jinja2)) |
| 37715 | (home-page "https://speedy-antlr-tool.readthedocs.io") |
| 37716 | (synopsis "Generate ANTLR parser as Python extension module") |
| 37717 | (description |
| 37718 | "This tool generates a Python extension that runs your parser |
| 37719 | using ANTLR's C++ target, and then translates the parsed tree |
| 37720 | back into Python.") |
| 37721 | (license license:bsd-3))) |
| 37722 | |
| 37723 | (define-public python-speg |
| 37724 | (package |
| 37725 | (name "python-speg") |
| 37726 | ;; 0.3 was released in 2017, the latest change on master HEAD is from 2018. |
| 37727 | (properties '((commit . "877acddfd5ac5ae8b4a4592d045e74e108477643") |
| 37728 | (revision . "0"))) |
| 37729 | (version (git-version "0.3" |
| 37730 | (assoc-ref properties 'revision) |
| 37731 | (assoc-ref properties 'commit))) |
| 37732 | (source |
| 37733 | (origin |
| 37734 | (method git-fetch) |
| 37735 | (uri (git-reference |
| 37736 | (url "https://github.com/avakar/speg") |
| 37737 | (commit (assoc-ref properties 'commit)))) |
| 37738 | (file-name (git-file-name name version)) |
| 37739 | (sha256 |
| 37740 | (base32 "0lhms1sfvmnplcwq8qwwvkrcz4sgi9yprvrkjz7p84fjhk86n4sb")))) |
| 37741 | (build-system pyproject-build-system) |
| 37742 | (native-inputs |
| 37743 | (list python-pytest |
| 37744 | python-setuptools)) |
| 37745 | (propagated-inputs |
| 37746 | (list python-six)) |
| 37747 | (home-page "https://github.com/avakar/speg") |
| 37748 | (synopsis "PEG-based parser interpreter with memoization") |
| 37749 | (description "This package is a PEG-based parser and interpreter with |
| 37750 | memoization.") |
| 37751 | (license license:expat))) |
| 37752 | |
| 37753 | (define-public python-spinners |
| 37754 | (package |
| 37755 | (name "python-spinners") |
| 37756 | (version "0.0.24") |
| 37757 | (source |
| 37758 | (origin |
| 37759 | (method url-fetch) |
| 37760 | (uri (pypi-uri "spinners" version)) |
| 37761 | (sha256 |
| 37762 | (base32 "0zz2z6dpdjdq5z8m8w8dfi8by0ih1zrdq0caxm1anwhxg2saxdhy")))) |
| 37763 | (build-system pyproject-build-system) |
| 37764 | (arguments |
| 37765 | (list #:tests? #f)) ;no tests in PyPI archive, tests depend on Nose |
| 37766 | (native-inputs |
| 37767 | (list python-setuptools)) |
| 37768 | (home-page "https://github.com/manrajgrover/py-spinners") |
| 37769 | (synopsis "Python library with graphical spinners for the terminal") |
| 37770 | (description |
| 37771 | "Spinners is a Python library that contains graphical spinners that can |
| 37772 | be displayed terminal.") |
| 37773 | (license license:expat))) |
| 37774 | |
| 37775 | (define-public python-sre-yield |
| 37776 | (package |
| 37777 | (name "python-sre-yield") |
| 37778 | (version "1.2") |
| 37779 | (source |
| 37780 | (origin |
| 37781 | (method url-fetch) |
| 37782 | (uri (pypi-uri "sre_yield" version)) |
| 37783 | (sha256 |
| 37784 | (base32 "12kv3mvdr22g2v9wfr5aabh1f58s817dbh8mrlfzxzxs7hm1lkz9")))) |
| 37785 | (build-system pyproject-build-system) |
| 37786 | (arguments |
| 37787 | (list #:test-backend #~'unittest)) |
| 37788 | (native-inputs |
| 37789 | (list python-setuptools)) |
| 37790 | (home-page "https://github.com/google/sre_yield") |
| 37791 | (synopsis "Expands a regular expression to its possible matches") |
| 37792 | (description |
| 37793 | "The goal of sre_yield is to efficiently generate all values that can |
| 37794 | match a given regular expression, or count possible matches efficiently. It |
| 37795 | uses the parsed regular expression, so you get a much more accurate result |
| 37796 | than trying to just split strings.") |
| 37797 | (license license:asl2.0))) |
| 37798 | |
| 37799 | (define-public python-srsly |
| 37800 | ;; TODO: Unbundle libraries https://github.com/explosion/srsly/pull/120 |
| 37801 | ;; srsly.msgpack, srsly.cloudpickle, srsly.ruamel_yaml, srsly.ujson should |
| 37802 | ;; be replaced with msgpack, cloudpickle, ruamel.yaml, and ujson. |
| 37803 | (package |
| 37804 | (name "python-srsly") |
| 37805 | (version "2.5.4") |
| 37806 | (source |
| 37807 | (origin |
| 37808 | (method git-fetch) |
| 37809 | (uri (git-reference |
| 37810 | (url "https://github.com/explosion/srsly") |
| 37811 | (commit (string-append "release-v" version)))) |
| 37812 | (file-name (git-file-name name version)) |
| 37813 | (sha256 |
| 37814 | (base32 "1w3h37d907rl2khysq70dk7b7m43hng3pisr0val0f1mp3w03cf2")))) |
| 37815 | (build-system pyproject-build-system) |
| 37816 | (arguments |
| 37817 | (list |
| 37818 | #:test-flags |
| 37819 | #~(list "--pyargs" "srsly") |
| 37820 | #:phases |
| 37821 | #~(modify-phases %standard-phases |
| 37822 | (add-before 'check 'remove-local-source |
| 37823 | (lambda _ |
| 37824 | (delete-file-recursively "srsly")))))) |
| 37825 | (native-inputs |
| 37826 | (list python-cython |
| 37827 | python-mock |
| 37828 | python-numpy |
| 37829 | python-psutil |
| 37830 | python-pytest |
| 37831 | python-pytest-timeout |
| 37832 | python-setuptools)) |
| 37833 | (propagated-inputs |
| 37834 | (list python-catalogue)) |
| 37835 | (home-page "https://github.com/explosion/srsly") |
| 37836 | (synopsis "Serialization utilities for Python") |
| 37837 | (description "This package bundles some of the best Python serialization |
| 37838 | libraries into one standalone package, with a high-level API that makes it |
| 37839 | easy to write code that's correct across platforms and Pythons.") |
| 37840 | (license license:expat))) |
| 37841 | |
| 37842 | (define-public python-srt |
| 37843 | (package |
| 37844 | (name "python-srt") |
| 37845 | (version "3.5.3") |
| 37846 | (source |
| 37847 | (origin |
| 37848 | (method url-fetch) |
| 37849 | (uri (pypi-uri "srt" version)) |
| 37850 | (sha256 |
| 37851 | (base32 "1h0cxlp66i6wlq3g6dg1f1nw0sipm9nfsy7qs47p9w548d833128")))) |
| 37852 | (build-system pyproject-build-system) |
| 37853 | (native-inputs |
| 37854 | (list python-pytest |
| 37855 | python-setuptools |
| 37856 | python-wheel)) |
| 37857 | (home-page "https://github.com/cdown/srt") |
| 37858 | (synopsis "SRT parsing library") |
| 37859 | (description |
| 37860 | "This package provides a Python library for parsing, modifying, and |
| 37861 | composing subtitles in the SRT file format.") |
| 37862 | (license license:expat))) |
| 37863 | |
| 37864 | (define-public python-sshpubkeys |
| 37865 | (package |
| 37866 | (name "python-sshpubkeys") |
| 37867 | (version "3.2.0") |
| 37868 | (source |
| 37869 | (origin |
| 37870 | (method git-fetch) |
| 37871 | (uri (git-reference |
| 37872 | (url "https://github.com/ojarva/python-sshpubkeys") |
| 37873 | (commit (string-append "v" version)))) |
| 37874 | (file-name (git-file-name name version)) |
| 37875 | (sha256 |
| 37876 | (base32 "0n7bjq8wifdw09mxkfzdkybij0csqjcifyxz8dbxy2iffjv5mqnq")))) |
| 37877 | (build-system pyproject-build-system) |
| 37878 | (arguments |
| 37879 | (list #:tests? #f)) ; XXX: All tests fail |
| 37880 | (native-inputs |
| 37881 | (list python-setuptools |
| 37882 | python-wheel)) |
| 37883 | (propagated-inputs |
| 37884 | (list python-cryptography |
| 37885 | python-ecdsa)) |
| 37886 | (home-page "https://github.com/ojarva/python-sshpubkeys") |
| 37887 | (synopsis "OpenSSH public key parser") |
| 37888 | (description |
| 37889 | "This package provides a library for parsing and validating OpenSSH |
| 37890 | public key files.") |
| 37891 | (license license:bsd-3))) |
| 37892 | |
| 37893 | (define-public python-sshtunnel |
| 37894 | (let ((commit "dc0732884379a19a21bf7a49650d0708519ec54f") |
| 37895 | (revision "0")) |
| 37896 | (package |
| 37897 | (name "python-sshtunnel") |
| 37898 | (version (git-version "0.4.0" revision commit)) |
| 37899 | (source |
| 37900 | (origin |
| 37901 | (method git-fetch) |
| 37902 | (uri (git-reference |
| 37903 | (url "https://github.com/pahaz/sshtunnel") |
| 37904 | (commit commit))) |
| 37905 | (file-name (git-file-name name version)) |
| 37906 | (sha256 |
| 37907 | (base32 "0fzq7pbqa6fjamzp61gjpd2hzph2ag7r507dlwpqilp6w8ipz49a")) |
| 37908 | (patches (search-patches "python-sshtunnel-pep518.patch")))) |
| 37909 | (build-system pyproject-build-system) |
| 37910 | (arguments |
| 37911 | (list |
| 37912 | #:phases |
| 37913 | #~(modify-phases %standard-phases |
| 37914 | (add-after 'unpack 'remove-deprecated-dsskey |
| 37915 | (lambda _ |
| 37916 | (substitute* "sshtunnel.py" |
| 37917 | (("'dsa': paramiko\\.DSSKey,") |
| 37918 | "") |
| 37919 | (("paramiko\\.DSSKey, ") |
| 37920 | ""))))))) |
| 37921 | (propagated-inputs (list python-paramiko)) |
| 37922 | (native-inputs |
| 37923 | (list openssh python-mock python-pytest python-setuptools)) |
| 37924 | (home-page "https://github.com/pahaz/sshtunnel") |
| 37925 | (synopsis "Python SSH tunnels library") |
| 37926 | (description |
| 37927 | "@code{sshtunnel} is a Python module for easily creating SSH tunnels |
| 37928 | in the background, using Python.") |
| 37929 | (license license:expat)))) |
| 37930 | |
| 37931 | (define-public python-stack-data |
| 37932 | (package |
| 37933 | (name "python-stack-data") |
| 37934 | (version "0.6.3") |
| 37935 | (source |
| 37936 | (origin |
| 37937 | (method url-fetch) |
| 37938 | (uri (pypi-uri "stack_data" version)) |
| 37939 | (sha256 |
| 37940 | (base32 "1fgh900z6g1amb2f2ql461c1y8lazymxi7nqvk8xri7ywj6pfsl3")))) |
| 37941 | (build-system pyproject-build-system) |
| 37942 | (arguments |
| 37943 | (list |
| 37944 | #:test-flags |
| 37945 | #~(list "-k" (string-join |
| 37946 | ;; XXX: Tests fail with HTML diff. |
| 37947 | (list "not test_executing_style_defs" |
| 37948 | "test_pygments_example" |
| 37949 | "test_example") |
| 37950 | " and not ")) |
| 37951 | #:phases |
| 37952 | #~(modify-phases %standard-phases |
| 37953 | (add-after 'unpack 'set-home-env |
| 37954 | (lambda _ |
| 37955 | (setenv "HOME" "/tmp")))))) |
| 37956 | (native-inputs |
| 37957 | (list python-cython |
| 37958 | python-littleutils |
| 37959 | python-pygments |
| 37960 | python-pytest |
| 37961 | python-setuptools |
| 37962 | python-setuptools-scm |
| 37963 | python-typeguard |
| 37964 | python-wheel)) |
| 37965 | (propagated-inputs |
| 37966 | (list python-asttokens |
| 37967 | python-executing |
| 37968 | python-pure-eval)) |
| 37969 | (home-page "https://github.com/alexmojaki/stack_data") |
| 37970 | (synopsis "Python stack frame and traceback manipulation library") |
| 37971 | (description |
| 37972 | "The @code{stack_data} Python library extracts data from stack frames and |
| 37973 | tracebacks. Is can be used to display more useful tracebacks |
| 37974 | than the default.") |
| 37975 | (license license:expat))) |
| 37976 | |
| 37977 | ;; Python dead batteries backports. See: PEP 594 – Removing dead batteries |
| 37978 | ;; from the standard library, <https://peps.python.org/pep-0594/>. |
| 37979 | (define %python-standard-pep-594-version "3.13.0") |
| 37980 | (define %python-standard-pep-594-source |
| 37981 | (origin |
| 37982 | (method git-fetch) |
| 37983 | (uri (git-reference |
| 37984 | (url "https://github.com/youknowone/python-deadlib") |
| 37985 | (commit (string-append "v" %python-standard-pep-594-version)))) |
| 37986 | (file-name (git-file-name "python-standard-pep-594" |
| 37987 | %python-standard-pep-594-version)) |
| 37988 | (sha256 |
| 37989 | (base32 "1a16pbdr2q6cy87zg3l33k0avrn08qyy8qm9mq2vwp3jvm6qa4dy")))) |
| 37990 | |
| 37991 | (define-public python-standard-asynchat |
| 37992 | (package |
| 37993 | (name "python-standard-asynchat") |
| 37994 | (version %python-standard-pep-594-version) |
| 37995 | (source %python-standard-pep-594-source) |
| 37996 | (build-system pyproject-build-system) |
| 37997 | (arguments |
| 37998 | (list |
| 37999 | #:phases |
| 38000 | #~(modify-phases %standard-phases |
| 38001 | (add-after 'unpack 'chdir |
| 38002 | (lambda _ |
| 38003 | (chdir "asynchat")))))) |
| 38004 | (native-inputs |
| 38005 | (list python-setuptools)) |
| 38006 | (propagated-inputs |
| 38007 | (list python-standard-asyncore)) |
| 38008 | (home-page "https://github.com/youknowone/python-deadlib") |
| 38009 | (synopsis "Backport of asynchat from Python 3.11") |
| 38010 | (description |
| 38011 | "Standard library @code{asynchat} redistribution. Deprecated since |
| 38012 | version 3.6 and removed in version 3.12; use @code{asyncio} instead. See: |
| 38013 | @url{https://peps.python.org/pep-0594/, Removing dead batteries from the |
| 38014 | standard library}.") |
| 38015 | (license license:psfl))) |
| 38016 | |
| 38017 | (define-public python-standard-asyncore |
| 38018 | (package |
| 38019 | (name "python-standard-asyncore") |
| 38020 | (version %python-standard-pep-594-version) |
| 38021 | (source %python-standard-pep-594-source) |
| 38022 | (build-system pyproject-build-system) |
| 38023 | (arguments |
| 38024 | (list |
| 38025 | #:phases |
| 38026 | #~(modify-phases %standard-phases |
| 38027 | (add-after 'unpack 'chdir |
| 38028 | (lambda _ |
| 38029 | (chdir "asyncore")))))) |
| 38030 | (native-inputs |
| 38031 | (list python-setuptools)) |
| 38032 | (home-page "https://github.com/youknowone/python-deadlib") |
| 38033 | (synopsis "Backport of asyncore from Python 3.11") |
| 38034 | (description |
| 38035 | "Standard library @code{asyncore} redistribution. Deprecated since |
| 38036 | version 3.6 and removed in version 3.12; use @code{asyncio} instead. See: |
| 38037 | @url{https://peps.python.org/pep-0594/, Removing dead batteries from the |
| 38038 | standard library}.") |
| 38039 | (license license:psfl))) |
| 38040 | |
| 38041 | (define-public python-standard-smtpd |
| 38042 | (package |
| 38043 | (name "python-standard-smtpd") |
| 38044 | (version %python-standard-pep-594-version) |
| 38045 | (source %python-standard-pep-594-source) |
| 38046 | (build-system pyproject-build-system) |
| 38047 | (arguments |
| 38048 | (list |
| 38049 | ;; ImportError: cannot import name 'mock_socket' from 'test' |
| 38050 | #:tests? #f |
| 38051 | #:phases |
| 38052 | #~(modify-phases %standard-phases |
| 38053 | (add-after 'unpack 'chdir |
| 38054 | (lambda _ |
| 38055 | (chdir "smtpd")))))) |
| 38056 | (native-inputs |
| 38057 | (list python-setuptools)) |
| 38058 | (propagated-inputs |
| 38059 | (list |
| 38060 | python-standard-asynchat |
| 38061 | python-standard-asyncore)) |
| 38062 | (home-page "https://github.com/youknowone/python-deadlib") |
| 38063 | (synopsis "Backport of smtpd from Python 3.11") |
| 38064 | (description |
| 38065 | "Standard library @code{smtpd} redistribution. Deprecated since version |
| 38066 | 3.6 and removed in version 3.12; the @code{aiosmtpd} package is a recommended |
| 38067 | replacement for this module, based on @code{asyncio}. See: |
| 38068 | @url{https://peps.python.org/pep-0594/, Removing dead batteries from the |
| 38069 | standard library}.") |
| 38070 | (license license:psfl))) |
| 38071 | |
| 38072 | (define-public python-stdio-mgr |
| 38073 | (package |
| 38074 | (name "python-stdio-mgr") |
| 38075 | (version "1.0.1") |
| 38076 | (source |
| 38077 | (origin |
| 38078 | (method git-fetch) |
| 38079 | (uri (git-reference |
| 38080 | (url "https://github.com/bskinn/stdio-mgr") |
| 38081 | (commit (string-append "v" version)))) |
| 38082 | (file-name (git-file-name name version)) |
| 38083 | (sha256 |
| 38084 | (base32 "0xb6779s7j162xhig6vc63f9nn3v406fvjh1zqbqbf8zcl17ific")))) |
| 38085 | (build-system pyproject-build-system) |
| 38086 | (arguments |
| 38087 | (list |
| 38088 | ;; Do not run doctests requiring sphinx. |
| 38089 | #:test-flags #~(list "--ignore=README.rst"))) |
| 38090 | (native-inputs |
| 38091 | (list python-pytest |
| 38092 | python-setuptools |
| 38093 | python-wheel)) |
| 38094 | (propagated-inputs |
| 38095 | (list python-attrs)) |
| 38096 | (home-page "https://github.com/bskinn/stdio-mgr") |
| 38097 | (synopsis "Context manager for mocking/wrapping stdin/stdout/stderr") |
| 38098 | (description |
| 38099 | "This package contains a context manager for mocking/wrapping |
| 38100 | stdin/stdout/stderr.") |
| 38101 | (license license:expat))) |
| 38102 | |
| 38103 | ;; TODO: This package is not necessary in Guix. It should be replaced by a |
| 38104 | ;; trivial python package providing the same functionality. |
| 38105 | (define-public python-stdlib-list |
| 38106 | (package |
| 38107 | (name "python-stdlib-list") |
| 38108 | (version "0.11.1") |
| 38109 | (source |
| 38110 | (origin |
| 38111 | (method git-fetch) |
| 38112 | (uri (git-reference |
| 38113 | (url "https://github.com/jackmaney/python-stdlib-list") |
| 38114 | (commit (string-append "v" version)))) |
| 38115 | (file-name (git-file-name name version)) |
| 38116 | (sha256 |
| 38117 | (base32 "14aw5xbqcs0ww9n4659z5dbs89xqpw2s4m3q4gp66br2xr9iybjf")))) |
| 38118 | (build-system pyproject-build-system) |
| 38119 | (native-inputs |
| 38120 | (list python-flit-core |
| 38121 | python-pytest |
| 38122 | python-sphinx)) |
| 38123 | (home-page "https://github.com/jackmaney/python-stdlib-list") |
| 38124 | (synopsis "Python Standard Libraries") |
| 38125 | (description |
| 38126 | "This package contains a list of Python Standard Libraries.") |
| 38127 | (license license:expat))) |
| 38128 | |
| 38129 | (define-public python-stem |
| 38130 | ;; python-stem is mostly unmaintained, but still has occasional commits |
| 38131 | ;; added. |
| 38132 | (package |
| 38133 | (name "python-stem") |
| 38134 | (version "1.8.3") |
| 38135 | (source |
| 38136 | (origin |
| 38137 | (method git-fetch) |
| 38138 | (uri (git-reference |
| 38139 | (url "https://gitlab.torproject.org/tpo/network-health/stem.git") |
| 38140 | (commit version))) |
| 38141 | (file-name (git-file-name name version)) |
| 38142 | (sha256 |
| 38143 | (base32 |
| 38144 | "0f8qrp6fz6l3s5dmvkx2zl7nsqs8qsx2yc5qc2ahy4c6jdvfbbhl")))) |
| 38145 | (build-system pyproject-build-system) |
| 38146 | (arguments |
| 38147 | (list |
| 38148 | #:test-backend #~'custom |
| 38149 | #:test-flags #~(list "run_tests.py" "--unit") |
| 38150 | #:phases |
| 38151 | #~(modify-phases %standard-phases |
| 38152 | (add-after 'unpack 'fix-python-312 |
| 38153 | (lambda _ |
| 38154 | (substitute* (find-files "." "\\.py$") |
| 38155 | (("assertRaisesRegexp") "assertRaisesRegex"))))))) |
| 38156 | (native-inputs |
| 38157 | (list python-setuptools |
| 38158 | python-wheel)) |
| 38159 | (home-page "https://stem.torproject.org/") |
| 38160 | (synopsis |
| 38161 | "Python controller library that allows applications to interact with Tor") |
| 38162 | (description |
| 38163 | "Stem is a Python controller library for Tor. With it you can use Tor's |
| 38164 | control protocol to script against the Tor process and read descriptor data |
| 38165 | relays publish about themselves.") |
| 38166 | (license license:lgpl3))) |
| 38167 | |
| 38168 | (define-public python-stltools |
| 38169 | (package |
| 38170 | (name "python-stltools") |
| 38171 | (version "2022.01.20") |
| 38172 | (source |
| 38173 | (origin |
| 38174 | (method git-fetch) |
| 38175 | (uri (git-reference |
| 38176 | (url "https://github.com/rsmith-nl/stltools") |
| 38177 | (commit version))) |
| 38178 | (file-name (git-file-name name version)) |
| 38179 | (sha256 |
| 38180 | (base32 "1k6dhszza4lpy46qffaqx5zr70ikfqqysbacy7zabnrvz09fd4rs")))) |
| 38181 | (build-system pyproject-build-system) |
| 38182 | (arguments |
| 38183 | (list |
| 38184 | #:phases |
| 38185 | #~(modify-phases %standard-phases |
| 38186 | ;; XXX: Project lacks correct setup.py, setup.cfg or pyproject.toml. |
| 38187 | (delete 'build) |
| 38188 | (replace 'install |
| 38189 | (lambda* (#:key inputs outputs #:allow-other-keys) |
| 38190 | (let ((moddir (string-append (site-packages inputs outputs) |
| 38191 | "/stltools")) |
| 38192 | (bindir (string-append #$output "/bin"))) |
| 38193 | (copy-recursively "stltools" moddir) |
| 38194 | (mkdir-p bindir) |
| 38195 | (for-each |
| 38196 | (lambda (script) |
| 38197 | (let ((source (string-append script ".py")) |
| 38198 | (target (string-append bindir "/" script))) |
| 38199 | (copy-file source target) |
| 38200 | (chmod target #o555))) |
| 38201 | '("stl2pov" "stl2ps" "stl2pdf" "stlinfo")))))))) |
| 38202 | (native-inputs |
| 38203 | (list python-pytest |
| 38204 | python-setuptools)) |
| 38205 | (propagated-inputs |
| 38206 | (list python-pycairo)) |
| 38207 | (home-page "https://github.com/rsmith-nl/stltools") |
| 38208 | (synopsis "Python modules and scripts for handling STL files") |
| 38209 | (description |
| 38210 | "This package consists of Python modules and scripts for manipulating |
| 38211 | stereolithography (STL) files. It can convert STL files into POV-ray meshes, |
| 38212 | PDF and PostScript. The Python modules allow for reading and writing STL |
| 38213 | files. It supports both the text and binary forms of STL.") |
| 38214 | (license license:expat))) |
| 38215 | |
| 38216 | (define-public python-stone |
| 38217 | (package |
| 38218 | (name "python-stone") |
| 38219 | (version "3.3.9") |
| 38220 | (source |
| 38221 | (origin |
| 38222 | (method git-fetch) |
| 38223 | (uri (git-reference |
| 38224 | (url "https://github.com/dropbox/stone") |
| 38225 | (commit (string-append "v" version)))) |
| 38226 | (file-name (git-file-name name version)) |
| 38227 | (sha256 |
| 38228 | (base32 "1x0kj4jygssjn66lbkln95chhf85vzy1wnpziy9jvpf4kbc1bmfy")))) |
| 38229 | (build-system pyproject-build-system) |
| 38230 | (native-inputs |
| 38231 | (list python-pytest |
| 38232 | python-setuptools)) |
| 38233 | (propagated-inputs |
| 38234 | (list python-jinja2 |
| 38235 | python-packaging |
| 38236 | python-ply |
| 38237 | python-six)) ;hard requirement, still |
| 38238 | (home-page "https://github.com/dropbox/stone") |
| 38239 | (synopsis "Official Api Spec Language for Dropbox") |
| 38240 | (description |
| 38241 | "Stone is an interface description language (IDL) for APIs.") |
| 38242 | (license license:expat))) |
| 38243 | |
| 38244 | (define-public python-stopit |
| 38245 | (package |
| 38246 | (name "python-stopit") |
| 38247 | (version "1.1.2") |
| 38248 | (source |
| 38249 | (origin |
| 38250 | (method git-fetch) |
| 38251 | (uri (git-reference |
| 38252 | (url "https://github.com/glenfant/stopit") |
| 38253 | (commit version))) |
| 38254 | (file-name (git-file-name name version)) |
| 38255 | (sha256 |
| 38256 | (base32 "1g3xwd62389643hrz6bljq0ddd1yvwpfk4nrv29naf09pl1m8wmr")))) |
| 38257 | (build-system pyproject-build-system) |
| 38258 | (arguments |
| 38259 | (list #:test-backend #~'custom |
| 38260 | #:test-flags #~(list "tests.py"))) |
| 38261 | (native-inputs (list python-setuptools)) |
| 38262 | (home-page "https://pypi.python.org/pypi/stopit") |
| 38263 | (synopsis "Timeout control decorator and context managers") |
| 38264 | (description |
| 38265 | "Raise asynchronous exceptions in other threads, control the timeout of |
| 38266 | blocks or callables with two context managers and two decorators.") |
| 38267 | (license license:expat))) |
| 38268 | |
| 38269 | (define-public python-straight-plugin |
| 38270 | (package |
| 38271 | (name "python-straight-plugin") |
| 38272 | (properties '((commit . "363b0af4a2560bf9a3cb61160ecf28a1a1b9c91f") |
| 38273 | (revision . "0"))) |
| 38274 | (version (git-version "1.4.1" |
| 38275 | (assoc-ref properties 'revision) |
| 38276 | (assoc-ref properties 'commit))) |
| 38277 | (source |
| 38278 | (origin |
| 38279 | (method git-fetch) |
| 38280 | (uri (git-reference |
| 38281 | (url "https://github.com/ironfroggy/straight.plugin") |
| 38282 | (commit (assoc-ref properties 'commit)))) |
| 38283 | (file-name (git-file-name name version)) |
| 38284 | (sha256 |
| 38285 | (base32 "03p2apj7i9m38nmccfhvzldmzd61icv145vpmifln3mvh09jm6c2")))) |
| 38286 | (build-system pyproject-build-system) |
| 38287 | (arguments |
| 38288 | (list |
| 38289 | ;; XXX: Some tests started failing with the move to [email protected]. |
| 38290 | ;; Consider removing this leaf unmaintained package. |
| 38291 | #:tests? #f |
| 38292 | #:test-backend #~'custom |
| 38293 | #:test-flags #~(list "tests.py") |
| 38294 | #:phases |
| 38295 | #~(modify-phases %standard-phases |
| 38296 | (add-after 'unpack 'fix-python-3.12-incompatibility |
| 38297 | (lambda _ |
| 38298 | (substitute* "straight/plugin/loaders.py" |
| 38299 | (("from imp import find_module") |
| 38300 | ""))))))) |
| 38301 | (native-inputs (list python-mock python-setuptools)) |
| 38302 | (home-page "https://github.com/ironfroggy/straight.plugin") |
| 38303 | (synopsis "Simple namespaced plugin facility") |
| 38304 | (description |
| 38305 | "Straight Plugin provides a type of plugin you can create from almost any |
| 38306 | existing Python modules, and an easy way for outside developers to add |
| 38307 | functionality and customization to your projects with their own plugins.") |
| 38308 | (license license:expat))) |
| 38309 | |
| 38310 | (define-public python-streamtracer |
| 38311 | (package |
| 38312 | (name "python-streamtracer") |
| 38313 | (version "2.4.0") |
| 38314 | (source |
| 38315 | (origin |
| 38316 | (method url-fetch) |
| 38317 | (uri (pypi-uri "streamtracer" version)) |
| 38318 | (sha256 |
| 38319 | (base32 "01ncr8q58xkz2dydjdg4a0c3kv4mpd6j1lzj4p0cmpg7jdi24cmr")))) |
| 38320 | (build-system pyproject-build-system) |
| 38321 | (arguments |
| 38322 | (list |
| 38323 | #:imported-modules `(,@%cargo-build-system-modules |
| 38324 | ,@%pyproject-build-system-modules) |
| 38325 | #:modules '(((guix build cargo-build-system) #:prefix cargo:) |
| 38326 | (guix build pyproject-build-system) |
| 38327 | (guix build utils)) |
| 38328 | #:test-flags |
| 38329 | #~(list "--pyargs" "streamtracer") |
| 38330 | #:phases |
| 38331 | #~(modify-phases %standard-phases |
| 38332 | (add-after 'unpack 'prepare-cargo-build-system |
| 38333 | (lambda args |
| 38334 | (for-each (lambda (phase) |
| 38335 | (format #t "Running cargo phase: ~a~%" phase) |
| 38336 | (apply (assoc-ref cargo:%standard-phases phase) |
| 38337 | #:cargo-target #$(cargo-triplet) |
| 38338 | args)) |
| 38339 | '(unpack-rust-crates |
| 38340 | configure |
| 38341 | check-for-pregenerated-files |
| 38342 | patch-cargo-checksums))))))) |
| 38343 | (native-inputs |
| 38344 | (append |
| 38345 | (list maturin |
| 38346 | python-pytest |
| 38347 | python-pytest-doctestplus |
| 38348 | rust |
| 38349 | `(,rust "cargo")) |
| 38350 | (or (and=> (%current-target-system) |
| 38351 | (compose list make-rust-sysroot)) |
| 38352 | '()))) |
| 38353 | (propagated-inputs |
| 38354 | (list python-numpy |
| 38355 | python-packaging)) |
| 38356 | (inputs (cargo-inputs 'python-streamtracer)) |
| 38357 | (home-page "https://github.com/sunpy/streamtracer") |
| 38358 | (synopsis "Rapid streamline tracing in Python") |
| 38359 | (description |
| 38360 | "streamtracer is a Python package for rapid streamline tracing on |
| 38361 | regularly spaced grids. The actual streamline tracing is done at a low level |
| 38362 | in Rust, with a nice Python API provided on top.") |
| 38363 | (license license:gpl3+))) |
| 38364 | |
| 38365 | (define-public python-strenum |
| 38366 | (package |
| 38367 | (name "python-strenum") |
| 38368 | (version "0.4.15") |
| 38369 | (source |
| 38370 | (origin |
| 38371 | (method git-fetch) |
| 38372 | (uri (git-reference |
| 38373 | (url "https://github.com/irgeek/StrEnum") |
| 38374 | (commit (string-append "v" version)))) |
| 38375 | (file-name (git-file-name name version)) |
| 38376 | (sha256 |
| 38377 | (base32 "1bvk7v5f3sr7awcacdmw5lfzsnn6j52q45va9xpc71n5qxydqbfn")) |
| 38378 | (snippet #~(delete-file "versioneer.py")))) |
| 38379 | (build-system pyproject-build-system) |
| 38380 | (arguments |
| 38381 | (list #:test-flags #~(list "tests"))) |
| 38382 | (native-inputs |
| 38383 | (list python-pytest |
| 38384 | python-pytest-pylint |
| 38385 | python-setuptools |
| 38386 | python-versioneer)) |
| 38387 | (home-page "https://github.com/irgeek/StrEnum") |
| 38388 | (synopsis "Enum that inherits from str") |
| 38389 | (description "StrEnum is a Python @code{enum.Enum} that inherits from |
| 38390 | @code{str} to complement @code{enum.IntEnum} in the standard library.") |
| 38391 | (license license:expat))) |
| 38392 | |
| 38393 | (define-public python-structlog |
| 38394 | (package |
| 38395 | (name "python-structlog") |
| 38396 | (version "25.5.0") |
| 38397 | (source |
| 38398 | (origin |
| 38399 | (method url-fetch) |
| 38400 | (uri (pypi-uri "structlog" version)) |
| 38401 | (sha256 |
| 38402 | (base32 "167wj0hxrsa9kbalh86vvwqs105zi8ld1ikh8lyibndypsij5189")))) |
| 38403 | (build-system pyproject-build-system) |
| 38404 | (native-inputs |
| 38405 | (list python-hatch-fancy-pypi-readme |
| 38406 | python-hatch-vcs |
| 38407 | python-hatchling |
| 38408 | python-pytest |
| 38409 | python-pytest-asyncio |
| 38410 | python-time-machine)) |
| 38411 | (home-page "https://www.structlog.org/") |
| 38412 | (synopsis "Structured Logging for Python") |
| 38413 | (description "@code{structlog} changes logging in Python by adding structure |
| 38414 | to your log entries.") |
| 38415 | (license (list license:asl2.0 license:expat)))) |
| 38416 | |
| 38417 | (define-public python-style |
| 38418 | (package |
| 38419 | (name "python-style") |
| 38420 | (version "1.1.6") |
| 38421 | (source |
| 38422 | (origin |
| 38423 | (method url-fetch) |
| 38424 | (uri (pypi-uri "style" version)) |
| 38425 | (sha256 |
| 38426 | (base32 "1dcfb578v9mrwh92rgms87gql0gp4vgj6l9hpgyfg0wbd3rh3bfh")))) |
| 38427 | (build-system pyproject-build-system) |
| 38428 | (arguments |
| 38429 | (list #:tests? #f)) ;no tests in PyPI, package is 6y old |
| 38430 | (native-inputs |
| 38431 | (list python-setuptools)) |
| 38432 | (home-page "https://github.com/lmittmann/style") |
| 38433 | (synopsis "Terminal string styling") |
| 38434 | (description |
| 38435 | "@code{python-style} is a simple terminal string styling package. Its API is |
| 38436 | a port of the chalk package for javascript.") |
| 38437 | (license license:expat))) |
| 38438 | |
| 38439 | (define-public python-svgelements |
| 38440 | (package |
| 38441 | (name "python-svgelements") |
| 38442 | (version "1.9.6") |
| 38443 | (source |
| 38444 | (origin |
| 38445 | (method git-fetch) |
| 38446 | (uri (git-reference |
| 38447 | (url "https://github.com/meerk40t/svgelements") |
| 38448 | (commit version))) |
| 38449 | (file-name (git-file-name name version)) |
| 38450 | (sha256 |
| 38451 | (base32 "0bpddyy4klmkkv6w06hqrv2m5ds1kxc0rl9pxnsw91wyfwcsq7cz")))) |
| 38452 | (build-system pyproject-build-system) |
| 38453 | (arguments |
| 38454 | (list |
| 38455 | #:phases |
| 38456 | #~(modify-phases %standard-phases |
| 38457 | (add-after 'unpack 'fix-python-incompatibilities |
| 38458 | (lambda _ |
| 38459 | (substitute* (find-files "test" "\\.py$") |
| 38460 | (("(assert(|NotAlmost)Equal)s" all out in) |
| 38461 | out))))))) |
| 38462 | (native-inputs |
| 38463 | (list python-anyio |
| 38464 | python-pytest |
| 38465 | python-numpy |
| 38466 | python-pillow |
| 38467 | python-scipy |
| 38468 | python-setuptools)) |
| 38469 | (home-page "https://github.com/meerk40t/svgelements") |
| 38470 | (synopsis "SVG parsing for elements, paths, and other SVG objects") |
| 38471 | (description |
| 38472 | "This module does high fidelity SVG parsing and geometric rendering. |
| 38473 | The goal is to successfully and correctly process SVG for use with any scripts |
| 38474 | that may need or want to use SVG files as geometric data.") |
| 38475 | (license license:expat))) |
| 38476 | |
| 38477 | (define-public python-svgutils |
| 38478 | (package |
| 38479 | (name "python-svgutils") |
| 38480 | (version "0.3.4") |
| 38481 | (source |
| 38482 | (origin |
| 38483 | (method url-fetch) |
| 38484 | (uri (pypi-uri "svgutils" version)) |
| 38485 | (sha256 |
| 38486 | (base32 "0lz0w2ajdvwd269a7ppnzawmx8px0116j0nx8xvhlihxrd28zx4y")))) |
| 38487 | (build-system pyproject-build-system) |
| 38488 | (arguments |
| 38489 | (list #:tests? #f)) ;no test in PyPI archive, depend on Nose |
| 38490 | (native-inputs |
| 38491 | (list python-setuptools)) |
| 38492 | (propagated-inputs |
| 38493 | (list python-lxml)) |
| 38494 | (home-page "https://svgutils.readthedocs.io") |
| 38495 | (synopsis "Python SVG editor") |
| 38496 | (description "This is an utility package that helps with editing and |
| 38497 | concatenating SVG files. It is especially directed at scientists preparing |
| 38498 | final figures for submission to journals. So far it supports arbitrary |
| 38499 | placement and scaling of SVG figures and adding markers, such as labels.") |
| 38500 | (license license:expat))) |
| 38501 | |
| 38502 | (define-public python-svgwrite |
| 38503 | ;; XXX: Unmaintained since <2022-07-14>, used by python-qrbill. |
| 38504 | (package |
| 38505 | (name "python-svgwrite") |
| 38506 | (version "1.4.3") |
| 38507 | (source |
| 38508 | (origin |
| 38509 | (method git-fetch) |
| 38510 | (uri (git-reference |
| 38511 | (url "https://github.com/mozman/svgwrite") |
| 38512 | (commit (string-append "v" version)))) |
| 38513 | (file-name (git-file-name name version)) |
| 38514 | (sha256 |
| 38515 | (base32 "14nvgsdhndpsgqlcp1vbmczd7rfyiddhjav2xja0a0rx2472psxq")))) |
| 38516 | (build-system pyproject-build-system) |
| 38517 | (arguments |
| 38518 | (list |
| 38519 | ;; Disable test which wants internet. |
| 38520 | #:test-flags |
| 38521 | #~(list "-k" "not test_embed_google_web_font"))) |
| 38522 | (native-inputs (list python-pytest python-setuptools)) |
| 38523 | (home-page "https://github.com/mozman/svgwrite") |
| 38524 | (synopsis "Python library to create SVG drawings") |
| 38525 | (description |
| 38526 | "This package provides a Python library to create SVG drawings.") |
| 38527 | (license license:expat))) |
| 38528 | |
| 38529 | (define-public python-swagger-spec-validator |
| 38530 | (package |
| 38531 | (name "python-swagger-spec-validator") |
| 38532 | (version "3.0.4") |
| 38533 | (source |
| 38534 | (origin |
| 38535 | (method git-fetch) |
| 38536 | (uri (git-reference |
| 38537 | (url "https://github.com/Yelp/swagger_spec_validator") |
| 38538 | (commit (string-append "v" version)))) |
| 38539 | (file-name (git-file-name name version)) |
| 38540 | (sha256 |
| 38541 | (base32 "1vmwg0432s22g48i2ys1ay441wmgkhjann1s165r499wg3pksggi")))) |
| 38542 | (build-system pyproject-build-system) |
| 38543 | (native-inputs |
| 38544 | (list python-pytest |
| 38545 | python-setuptools)) |
| 38546 | (propagated-inputs |
| 38547 | (list python-importlib-resources |
| 38548 | python-jsonschema |
| 38549 | python-pyyaml |
| 38550 | python-typing-extensions)) |
| 38551 | (home-page "https://github.com/Yelp/swagger_spec_validator") |
| 38552 | (synopsis "Validation of Swagger specifications") |
| 38553 | (description |
| 38554 | "@code{swagger_spec_validator} provides a library for validating Swagger |
| 38555 | API specifications.") |
| 38556 | (license license:asl2.0))) |
| 38557 | |
| 38558 | (define-public python-syllables |
| 38559 | (package |
| 38560 | (name "python-syllables") |
| 38561 | (version "1.0.3") |
| 38562 | (source |
| 38563 | (origin |
| 38564 | (method git-fetch) |
| 38565 | (uri (git-reference |
| 38566 | (url "https://github.com/prosegrinder/python-syllables") |
| 38567 | (commit (string-append "v" version)))) |
| 38568 | (file-name (git-file-name name version)) |
| 38569 | (sha256 |
| 38570 | (base32 "12yv9d7hmrkw10p2nivk0c9b96rm6040zfif6pj4sm1vg3n8ik6n")))) |
| 38571 | (build-system pyproject-build-system) |
| 38572 | (native-inputs |
| 38573 | (list python-cmudict |
| 38574 | python-pytest |
| 38575 | python-setuptools)) |
| 38576 | (home-page "https://github.com/prosegrinder/python-syllables") |
| 38577 | (synopsis "Package for estimating the number of syllables in a word") |
| 38578 | (description |
| 38579 | "This package provides a Python package for estimating the number of |
| 38580 | syllables in a word.") |
| 38581 | (license license:gpl3))) |
| 38582 | |
| 38583 | (define-public python-sympy |
| 38584 | (package |
| 38585 | (name "python-sympy") |
| 38586 | (version "1.13.3") |
| 38587 | (source |
| 38588 | (origin |
| 38589 | (method url-fetch) |
| 38590 | (uri (pypi-uri "sympy" version)) |
| 38591 | (sha256 |
| 38592 | (base32 "1nf4zrjjbnv47n6sl6x9blfyarski61vdjaz4ygb62hfag3d4zxj")))) |
| 38593 | (build-system pyproject-build-system) |
| 38594 | (arguments |
| 38595 | '(#:phases |
| 38596 | (modify-phases %standard-phases |
| 38597 | (replace 'check |
| 38598 | (lambda* (#:key tests? #:allow-other-keys) |
| 38599 | (if tests? |
| 38600 | (invoke "python3" "-c" |
| 38601 | "import sympy; sympy.test(\"/core\")"))))))) |
| 38602 | (propagated-inputs (list python-mpmath)) |
| 38603 | (native-inputs |
| 38604 | (list python-hypothesis |
| 38605 | python-pytest |
| 38606 | python-setuptools |
| 38607 | python-wheel)) |
| 38608 | (home-page "https://www.sympy.org/") |
| 38609 | (synopsis "Python library for symbolic mathematics") |
| 38610 | (description |
| 38611 | "SymPy is a Python library for symbolic mathematics. It aims to become a |
| 38612 | full-featured computer algebra system (CAS) while keeping the code as simple |
| 38613 | as possible in order to be comprehensible and easily extensible.") |
| 38614 | (license license:bsd-3))) |
| 38615 | |
| 38616 | (define-public python-tables |
| 38617 | (package |
| 38618 | (name "python-tables") |
| 38619 | (version "3.11.1") |
| 38620 | (source |
| 38621 | (origin |
| 38622 | (method git-fetch) |
| 38623 | (uri (git-reference |
| 38624 | (url "https://github.com/PyTables/PyTables") |
| 38625 | (commit (string-append "v" version)))) |
| 38626 | (file-name (git-file-name name version)) |
| 38627 | (sha256 |
| 38628 | (base32 "03ifagvxzvgfdpjw508l1lq1j3ki9nbhxkls4zf1bchfdprv89fv")) |
| 38629 | (snippet '(begin |
| 38630 | (use-modules (guix build utils)) |
| 38631 | (delete-file-recursively "hdf5-blosc") |
| 38632 | (delete-file-recursively "c-blosc"))))) |
| 38633 | (build-system pyproject-build-system) |
| 38634 | (arguments |
| 38635 | (list |
| 38636 | #:test-flags |
| 38637 | ;; Performing only a light (yet comprehensive) subset of the test suite. |
| 38638 | ;; If you want a more complete test, try passing the --heavy flag to |
| 38639 | ;; this script (or set the 'heavy' parameter in case you are using |
| 38640 | ;; tables.test() call). The whole suite will take more than 4 hours to |
| 38641 | ;; complete on a relatively modern CPU and around 512 MB of main memory. |
| 38642 | #~(list "--pyargs" "tables.tests.test_all") |
| 38643 | #:phases |
| 38644 | #~(modify-phases %standard-phases |
| 38645 | (add-after 'unpack 'disable-tuning |
| 38646 | (lambda _ |
| 38647 | (substitute* "setup.py" |
| 38648 | (("cpu_flags = .*") |
| 38649 | "cpu_flags = ['sse2']\n")))) |
| 38650 | (add-after 'unpack 'fix-reference-to-blosc2 |
| 38651 | (lambda* (#:key inputs #:allow-other-keys) |
| 38652 | (substitute* "tables/__init__.py" |
| 38653 | (("\"\",") ;default |
| 38654 | (string-append "'" |
| 38655 | (dirname |
| 38656 | (search-input-file inputs "/lib/libblosc2.so")) |
| 38657 | "',\n"))))) |
| 38658 | (add-before 'build 'pre-build |
| 38659 | (lambda _ |
| 38660 | (substitute* "setup.py" |
| 38661 | (("hdf5-blosc/src") |
| 38662 | (format #f "~a/src" |
| 38663 | #$(package-source |
| 38664 | (this-package-input "hdf5-blosc-parallel-openmpi"))))) |
| 38665 | (invoke "make" "distclean") ;Regenerate C code with Cython |
| 38666 | (setenv "BLOSC2_DIR" #$(this-package-input "cblosc2")) |
| 38667 | (setenv "BLOSC_DIR" #$(this-package-input "c-blosc")) |
| 38668 | (setenv "BZIP2_DIR" #$(this-package-input "bzip2")) |
| 38669 | (setenv "HDF5_DIR" #$(this-package-input "hdf5-parallel-openmpi")) |
| 38670 | (setenv "LZO_DIR" #$(this-package-input "lzo")))) |
| 38671 | (add-before 'check 'pre-check |
| 38672 | (lambda _ |
| 38673 | (setenv "HOME" "/tmp")))))) |
| 38674 | (native-inputs |
| 38675 | (list pkg-config |
| 38676 | python-cython |
| 38677 | python-pytest |
| 38678 | python-setuptools |
| 38679 | python-sphinx)) |
| 38680 | (inputs |
| 38681 | (list bzip2 |
| 38682 | c-blosc |
| 38683 | c-blosc2 |
| 38684 | hdf5-parallel-openmpi |
| 38685 | hdf5-blosc-parallel-openmpi |
| 38686 | lzo)) |
| 38687 | (propagated-inputs |
| 38688 | (list python-blosc2 |
| 38689 | python-numexpr |
| 38690 | python-numpy |
| 38691 | python-packaging |
| 38692 | python-py-cpuinfo |
| 38693 | python-typing-extensions)) |
| 38694 | (home-page "https://www.pytables.org/") |
| 38695 | (synopsis "Hierarchical datasets for Python") |
| 38696 | (description "PyTables is a package for managing hierarchical datasets and |
| 38697 | designed to efficiently cope with extremely large amounts of data.") |
| 38698 | (license license:bsd-3))) |
| 38699 | |
| 38700 | (define-public python-tablib |
| 38701 | (package |
| 38702 | (name "python-tablib") |
| 38703 | (version "3.9.0") |
| 38704 | (source |
| 38705 | (origin |
| 38706 | (method url-fetch) |
| 38707 | (uri (pypi-uri "tablib" version)) |
| 38708 | (sha256 |
| 38709 | (base32 "1qjzbpaln1grr5ngcm2apd5dxp0gcrwis5n60hg60d8gvf7bsshv")))) |
| 38710 | (build-system pyproject-build-system) |
| 38711 | (native-inputs |
| 38712 | (list python-pytest python-setuptools python-setuptools-scm)) |
| 38713 | (inputs ;; [cli] |
| 38714 | (list python-tabulate)) |
| 38715 | (propagated-inputs |
| 38716 | (list python-markuppy |
| 38717 | python-odfpy |
| 38718 | python-openpyxl |
| 38719 | python-pyyaml |
| 38720 | python-xlrd |
| 38721 | python-xlwt)) |
| 38722 | (home-page "https://tablib.readthedocs.io") |
| 38723 | (synopsis "Format agnostic tabular data library") |
| 38724 | (description |
| 38725 | "@code{tablib} is a format-agnostic tabular dataset library, |
| 38726 | written in Python. Supported output formats are Excel (Sets + Books), |
| 38727 | JSON (Sets + Books), YAML (Sets + Books), HTML (Sets), Jira (Sets), |
| 38728 | TSV (Sets), ODS (Sets), CSV (Sets), and DBF (Sets). |
| 38729 | |
| 38730 | @code{tablib} also supports Pandas DataFrames (Sets). Anyhow, since pandas is |
| 38731 | quite huge, this Guix package doesn't depend on pandas. In case, just also |
| 38732 | install @code{python-pandas}.") |
| 38733 | (license license:expat))) |
| 38734 | |
| 38735 | (define-public python-tabulate |
| 38736 | (package |
| 38737 | (name "python-tabulate") |
| 38738 | (version "0.9.0") |
| 38739 | (source |
| 38740 | (origin |
| 38741 | (method url-fetch) |
| 38742 | (uri (pypi-uri "tabulate" version)) |
| 38743 | (sha256 |
| 38744 | (base32 "0g4b0qnbw55igbpxfxzciqvb6w8ncw4gmcgyq0lyavcnylmv3580")))) |
| 38745 | (build-system pyproject-build-system) |
| 38746 | (native-inputs |
| 38747 | (list python-pytest |
| 38748 | python-setuptools-scm |
| 38749 | python-setuptools)) |
| 38750 | (propagated-inputs |
| 38751 | (list python-wcwidth)) |
| 38752 | (home-page "https://github.com/astanin/python-tabulate") |
| 38753 | (synopsis "Pretty-print tabular data") |
| 38754 | (description |
| 38755 | "Tabulate is a library and command-line utility to pretty-print tabular |
| 38756 | data in Python.") |
| 38757 | (license license:expat))) |
| 38758 | |
| 38759 | (define-public python-takethetime |
| 38760 | (package |
| 38761 | (name "python-takethetime") |
| 38762 | (version "0.3.1") |
| 38763 | (source |
| 38764 | (origin |
| 38765 | (method url-fetch) |
| 38766 | (uri (pypi-uri "TakeTheTime" version)) |
| 38767 | (sha256 |
| 38768 | (base32 "1y9gzqb9l1f2smx8783ccjzjvby5mphshgrfks7s75mml59h9qyv")))) |
| 38769 | (build-system pyproject-build-system) |
| 38770 | (arguments |
| 38771 | (list #:tests? #f)) ; tests are time dependent and not provided in PyPI |
| 38772 | (native-inputs |
| 38773 | (list python-setuptools |
| 38774 | python-wheel)) |
| 38775 | (home-page "https://github.com/ErikBjare/TakeTheTime") |
| 38776 | (synopsis "Timing chunks of code") |
| 38777 | (description |
| 38778 | "This package implements a functionality for time taking using context |
| 38779 | managers.") |
| 38780 | (license license:expat))) |
| 38781 | |
| 38782 | (define-public python-targ |
| 38783 | (package |
| 38784 | (name "python-targ") |
| 38785 | (version "0.6.0") |
| 38786 | (source |
| 38787 | (origin |
| 38788 | (method git-fetch) |
| 38789 | (uri (git-reference |
| 38790 | (url "https://github.com/piccolo-orm/targ/") |
| 38791 | (commit version))) |
| 38792 | (file-name (git-file-name name version)) |
| 38793 | (sha256 |
| 38794 | (base32 "05avykfnbni4iwkv4a2nwpwyiznqv51jn3bn5am91iv7dbq1w94v")))) |
| 38795 | (build-system pyproject-build-system) |
| 38796 | (native-inputs |
| 38797 | (list python-pytest |
| 38798 | python-setuptools)) |
| 38799 | (propagated-inputs |
| 38800 | (list python-colorama |
| 38801 | python-docstring-parser)) |
| 38802 | (home-page "https://github.com/piccolo-orm/targ/") |
| 38803 | (synopsis "Python CLI builder using type hints and docstrings") |
| 38804 | (description |
| 38805 | "Targ is a package to build a Python @acronym{Command Line Interface, |
| 38806 | CLI} for applications by using type hints and docstrings.") |
| 38807 | (license license:expat))) |
| 38808 | |
| 38809 | (define-public python-tasklib |
| 38810 | (package |
| 38811 | (name "python-tasklib") |
| 38812 | (version "2.5.1") |
| 38813 | (source |
| 38814 | (origin |
| 38815 | (method git-fetch) |
| 38816 | (uri (git-reference |
| 38817 | (url "https://github.com/GothenburgBitFactory/tasklib") |
| 38818 | (commit version))) |
| 38819 | (file-name (git-file-name name version)) |
| 38820 | (sha256 |
| 38821 | (base32 "1vhqqbkci485m663vbfq0wki6qzrmb0hn1yaszc19kxvp3j8d7zc")))) |
| 38822 | (build-system pyproject-build-system) |
| 38823 | (arguments |
| 38824 | (list |
| 38825 | #:test-backend |
| 38826 | #~'unittest)) |
| 38827 | (inputs (list taskwarrior)) |
| 38828 | (native-inputs (list python-setuptools tzdata-for-tests)) |
| 38829 | (home-page "https://github.com/GothenburgBitFactory/tasklib") |
| 38830 | (synopsis "Official Taskwarrior library for Python") |
| 38831 | (description "@code{tasklib} is a Python library for interacting with |
| 38832 | Taskwarrior databases, using a queryset API similar to that of Django's ORM.") |
| 38833 | (license license:bsd-3))) |
| 38834 | |
| 38835 | (define-public python-tasklogger |
| 38836 | (package |
| 38837 | (name "python-tasklogger") |
| 38838 | (version "1.2.0") |
| 38839 | (source |
| 38840 | (origin |
| 38841 | (method url-fetch) |
| 38842 | (uri (pypi-uri "tasklogger" version)) |
| 38843 | (sha256 |
| 38844 | (base32 "1901mibcp6aiyjy8afnybrxnb0dkbdxlbvjqbr3gginlw7dr18xh")))) |
| 38845 | (build-system pyproject-build-system) |
| 38846 | (native-inputs |
| 38847 | (list python-pytest |
| 38848 | python-numpy |
| 38849 | python-setuptools)) |
| 38850 | (propagated-inputs |
| 38851 | (list python-deprecated)) |
| 38852 | (home-page "https://github.com/scottgigante/tasklogger") |
| 38853 | (synopsis "Extension to the core Python logging library") |
| 38854 | (description "This package provides an extension to the core Python |
| 38855 | logging library for logging the beginning and completion of tasks and |
| 38856 | subtasks.") |
| 38857 | (license license:gpl2))) |
| 38858 | |
| 38859 | (define-public python-tatsu |
| 38860 | (package |
| 38861 | (name "python-tatsu") |
| 38862 | (version "5.13.2") |
| 38863 | (source |
| 38864 | (origin |
| 38865 | (method git-fetch) |
| 38866 | (uri (git-reference |
| 38867 | (url "https://github.com/neogeny/TatSu") |
| 38868 | (commit (string-append "v" version)))) |
| 38869 | (file-name (git-file-name name version)) |
| 38870 | (sha256 |
| 38871 | (base32 "0ppgi5r55iirzhnf988b32yvh8ly8lzxbg59y0zgqfaxbma50650")))) |
| 38872 | (build-system pyproject-build-system) |
| 38873 | (native-inputs |
| 38874 | (list python-pytest |
| 38875 | python-setuptools)) |
| 38876 | (home-page "https://tatsu.readthedocs.io/en/stable/") |
| 38877 | (synopsis "PEG/Packrat Parser generator for Python") |
| 38878 | (description |
| 38879 | "TatSu (竜) takes a grammar in a variation of Extended Backus-Naur |
| 38880 | Form (EBNF) as input, and outputs a memoizing Parsing Expression Grammar (PEG) |
| 38881 | or Packrat parser in Python.") |
| 38882 | (license license:bsd-2))) |
| 38883 | |
| 38884 | (define-public python-tblib |
| 38885 | (package |
| 38886 | (name "python-tblib") |
| 38887 | (version "3.1.0") |
| 38888 | (source |
| 38889 | (origin |
| 38890 | (method url-fetch) |
| 38891 | (uri (pypi-uri "tblib" version)) |
| 38892 | (sha256 |
| 38893 | (base32 "0lnnbicpxx774s29nkbic4rrqvy4rhxd8skx5pp6zxh7kwn4qh06")))) |
| 38894 | (build-system pyproject-build-system) |
| 38895 | (arguments |
| 38896 | (list |
| 38897 | ;; Don't run benchmark tests. |
| 38898 | #:test-flags #~(list "--ignore=tests/test_perf.py") |
| 38899 | #:phases |
| 38900 | #~(modify-phases %standard-phases |
| 38901 | (add-after 'unpack 'fix-pytest-config |
| 38902 | (lambda _ |
| 38903 | (substitute* "pytest.ini" |
| 38904 | (("--benchmark-disable") ""))))))) |
| 38905 | (native-inputs |
| 38906 | (list python-pytest |
| 38907 | python-setuptools)) |
| 38908 | (home-page "https://github.com/ionelmc/python-tblib") |
| 38909 | (synopsis "Traceback serialization library") |
| 38910 | (description |
| 38911 | "Traceback serialization allows you to: |
| 38912 | |
| 38913 | @enumerate |
| 38914 | @item Pickle tracebacks and raise exceptions with pickled tracebacks in |
| 38915 | different processes. This allows better error handling when running code over |
| 38916 | multiple processes (imagine multiprocessing, billiard, futures, celery etc). |
| 38917 | |
| 38918 | @item Parse traceback strings and raise with the parsed tracebacks. |
| 38919 | @end enumerate\n") |
| 38920 | (license license:bsd-3))) |
| 38921 | |
| 38922 | (define-public python-tcolorpy |
| 38923 | (package |
| 38924 | (name "python-tcolorpy") |
| 38925 | (version "0.1.7") |
| 38926 | (source |
| 38927 | (origin |
| 38928 | (method git-fetch) |
| 38929 | (uri (git-reference |
| 38930 | (url "https://github.com/thombashi/tcolorpy") |
| 38931 | (commit (string-append "v" version)))) |
| 38932 | (file-name (git-file-name name version)) |
| 38933 | (sha256 |
| 38934 | (base32 "18cck1s0w9i5llaaw9s37g61dqg3vpjjgd3ywc72n1i02k0yj1fh")))) |
| 38935 | (build-system pyproject-build-system) |
| 38936 | (native-inputs (list python-pytest python-setuptools python-setuptools-scm)) |
| 38937 | (home-page "https://github.com/thombashi/tcolorpy") |
| 38938 | (synopsis "Apply true color for terminal text") |
| 38939 | (description |
| 38940 | "@code{tcolorpy} is a Python library to apply true color for terminal |
| 38941 | text. |
| 38942 | You can set the following @code{tcolor} arguments: |
| 38943 | |
| 38944 | @itemize |
| 38945 | @item color |
| 38946 | @item bgcolor |
| 38947 | @item styles |
| 38948 | @end itemize") |
| 38949 | (license license:expat))) |
| 38950 | |
| 38951 | (define-public python-tdir |
| 38952 | (package |
| 38953 | (name "python-tdir") |
| 38954 | (version "1.10.0") |
| 38955 | (source |
| 38956 | (origin |
| 38957 | (method git-fetch) |
| 38958 | (uri (git-reference |
| 38959 | (url "https://github.com/rec/tdir") |
| 38960 | (commit (string-append "v" version)))) |
| 38961 | (file-name (git-file-name name version)) |
| 38962 | (sha256 |
| 38963 | (base32 "10kl0w40n53ynhxlvkv56gywswnrb2drmrw972k0p66sihlw9y2p")))) |
| 38964 | (build-system pyproject-build-system) |
| 38965 | (native-inputs (list python-hatchling python-pytest)) |
| 38966 | (propagated-inputs (list python-dek python-xmod)) |
| 38967 | (home-page "https://rec.github.io/tdir/") |
| 38968 | (synopsis "Create, fill a temporary directory") |
| 38969 | (description |
| 38970 | "This is Python helper module to run code inside a temporary directory |
| 38971 | filled with zero or more files. @code{tdir()} runs code in a temporary |
| 38972 | directory pre-filled with files: it can either be used as a context manager, |
| 38973 | or a decorator for functions or classes. @code{tdir.fill()} is a tiny |
| 38974 | function that recursively fills a directory.") |
| 38975 | (license license:expat))) |
| 38976 | |
| 38977 | (define-public python-telethon |
| 38978 | (package |
| 38979 | (name "python-telethon") |
| 38980 | (version "1.44.0") |
| 38981 | (source |
| 38982 | (origin |
| 38983 | (method git-fetch) |
| 38984 | (uri (git-reference |
| 38985 | (url "https://codeberg.org/Lonami/Telethon") |
| 38986 | (commit (string-append "v" version)))) |
| 38987 | (file-name (git-file-name name version)) |
| 38988 | (sha256 |
| 38989 | (base32 "1y1bzna7gqs6ck4jmh2spm7s8frw0qs6p52v9ar6qbbk1h7yacip")))) |
| 38990 | (build-system pyproject-build-system) |
| 38991 | (arguments |
| 38992 | (list |
| 38993 | #:phases |
| 38994 | #~(modify-phases %standard-phases |
| 38995 | (add-after 'build 'generate-tl-code |
| 38996 | (lambda _ |
| 38997 | ;; The custom hatchling build hook (hatch_build.py) generates |
| 38998 | ;; telethon/tl/{types,functions}.py only inside hatchling's |
| 38999 | ;; isolated build directory, but deletes them again. |
| 39000 | ;; Regenerate the same code here too for tests; see |
| 39001 | ;; readthedocs/developing/project-structure.rst. |
| 39002 | (invoke "python3" "setup.py" "gen")))))) |
| 39003 | (native-inputs |
| 39004 | (list python-hatchling |
| 39005 | python-pytest |
| 39006 | python-pytest-asyncio |
| 39007 | python-pytest-trio |
| 39008 | python-setuptools)) |
| 39009 | (propagated-inputs |
| 39010 | (list python-rsa python-pyaes)) |
| 39011 | (home-page "https://docs.telethon.dev") |
| 39012 | (synopsis "Full-featured Telegram client library for Python 3") |
| 39013 | (description "This library is designed to make it easy to write Python |
| 39014 | programs that can interact with Telegram.") |
| 39015 | (license license:expat))) |
| 39016 | |
| 39017 | (define-public python-tempora |
| 39018 | (package |
| 39019 | (name "python-tempora") |
| 39020 | (version "5.8.1") |
| 39021 | (source |
| 39022 | (origin |
| 39023 | (method url-fetch) |
| 39024 | (uri (pypi-uri "tempora" version)) |
| 39025 | (sha256 |
| 39026 | (base32 "1k9d6qmlp0i4v3d0dcqcsndvmng3lfdh4y0p8gwy9i8cg7ndkddb")))) |
| 39027 | (build-system pyproject-build-system) |
| 39028 | (arguments |
| 39029 | (list |
| 39030 | ;; Do not test the myproject.toml build as it tries to pull dependencies |
| 39031 | ;; from the Internet. |
| 39032 | #:test-flags #~(list "-k" "not project" |
| 39033 | "tests"))) |
| 39034 | (native-inputs |
| 39035 | (list python-freezegun |
| 39036 | python-pytest |
| 39037 | python-setuptools |
| 39038 | python-setuptools-scm |
| 39039 | python-tzdata)) |
| 39040 | (propagated-inputs (list python-dateutil python-jaraco-functools)) |
| 39041 | (home-page "https://github.com/jaraco/tempora") |
| 39042 | (synopsis "Python date and time objects and routines") |
| 39043 | (description |
| 39044 | "The @code{tempora} Python library contains miscellaneous date and time |
| 39045 | related utilities and constants, routines for measuring, profiling, and |
| 39046 | getting datetime-aware @acronym{UTC, Coordinated Universal Time} values as |
| 39047 | well as an event scheduler.") |
| 39048 | (license license:expat))) |
| 39049 | |
| 39050 | (define-public python-tenacity |
| 39051 | (package |
| 39052 | (name "python-tenacity") |
| 39053 | (version "9.1.4") |
| 39054 | (source |
| 39055 | (origin |
| 39056 | (method url-fetch) |
| 39057 | (uri (pypi-uri "tenacity" version)) |
| 39058 | (sha256 |
| 39059 | (base32 "0fprkhbrh26zm9jxpwmcz5vpr989hd4kpcqs110x0arz4r61vcxd")))) |
| 39060 | (build-system pyproject-build-system) |
| 39061 | (native-inputs |
| 39062 | (list python-pytest |
| 39063 | python-setuptools |
| 39064 | python-setuptools-scm |
| 39065 | python-tornado |
| 39066 | python-typeguard)) |
| 39067 | (home-page "https://github.com/jd/tenacity") |
| 39068 | (synopsis "Retrying library for python") |
| 39069 | (description |
| 39070 | "Tenacity is a general-purpose python library to simplify the task of |
| 39071 | adding retry behavior to just about anything.") |
| 39072 | (license license:asl2.0))) |
| 39073 | |
| 39074 | (define-public python-term-background |
| 39075 | (package |
| 39076 | (name "python-term-background") |
| 39077 | (version "1.0.5") |
| 39078 | (source |
| 39079 | (origin |
| 39080 | (method url-fetch) |
| 39081 | (uri (pypi-uri "term_background" version)) |
| 39082 | (sha256 |
| 39083 | (base32 "1gcr4aidgsl9kv2m0jw01svcbi3zlx18m2fpdh3yacvapzgjir2h")))) |
| 39084 | (build-system pyproject-build-system) |
| 39085 | (native-inputs |
| 39086 | (list python-pytest |
| 39087 | python-setuptools |
| 39088 | python-setuptools-scm)) |
| 39089 | (home-page "http://github.com/rocky/shell-term-background") |
| 39090 | (synopsis "Determine if shell has a light or dark background") |
| 39091 | (description "This package determines if shell has a light or dark |
| 39092 | background.") |
| 39093 | (license license:gpl2+))) |
| 39094 | |
| 39095 | (define-public python-term-image |
| 39096 | (package |
| 39097 | (name "python-term-image") |
| 39098 | (properties '((commit . "a40a12bb0a12944b7d7a182e93f1caad4261693a") |
| 39099 | (revision . "0"))) |
| 39100 | (version (git-version "0.7.2" |
| 39101 | (assoc-ref properties 'revision) |
| 39102 | (assoc-ref properties 'commit))) |
| 39103 | (source |
| 39104 | (origin |
| 39105 | (method git-fetch) |
| 39106 | (uri (git-reference |
| 39107 | (url "https://github.com/AnonymouX47/term-image") |
| 39108 | (commit (assoc-ref properties 'commit)))) |
| 39109 | (file-name (git-file-name name version)) |
| 39110 | (sha256 |
| 39111 | (base32 "1g1a5b756l7bj69zwy9c86c72bwfb38iifv7z5lfr870i93f1k8r")))) |
| 39112 | (build-system pyproject-build-system) |
| 39113 | (arguments |
| 39114 | (list |
| 39115 | #:test-flags |
| 39116 | #~(list "tests" |
| 39117 | ;; These tests require network access. |
| 39118 | "-k" (string-append "not test_from_url" |
| 39119 | " and not test_source" |
| 39120 | " and not test_close")) |
| 39121 | #:phases |
| 39122 | #~(modify-phases %standard-phases |
| 39123 | (add-after 'unpack 'bump-pillow-requirement |
| 39124 | (lambda _ |
| 39125 | (substitute* "src/term_image/image/common.py" |
| 39126 | (("\\.getdata") |
| 39127 | ".get_flattened_data")) |
| 39128 | (let* ((major #$(version-major |
| 39129 | (package-version |
| 39130 | (this-package-input "python-pillow")))) |
| 39131 | (next (number->string (+ 1 (string->number major))))) |
| 39132 | (substitute* "pyproject.toml" |
| 39133 | (("pillow>=9.1,<12") |
| 39134 | (string-append "pillow>=9.1,<" next))))))))) |
| 39135 | (propagated-inputs (list python-pillow python-requests)) |
| 39136 | (native-inputs |
| 39137 | (list python-pytest |
| 39138 | python-setuptools |
| 39139 | python-urwid)) |
| 39140 | (home-page "https://github.com/AnonymouX47/term-image") |
| 39141 | (synopsis "Display images in the terminal") |
| 39142 | (description "term-image is a library and program to display images on |
| 39143 | compatible terminals. |
| 39144 | |
| 39145 | Features: |
| 39146 | @enumerate |
| 39147 | @item Multiple image formats (basically all formats supported by |
| 39148 | @code{PIL.Image.open()}) |
| 39149 | @item Multiple image source types: PIL image instance, local file, URL |
| 39150 | @item Multiple image render styles (with automatic support detection) |
| 39151 | @item Support for multiple terminal graphics protocols, including Kitty |
| 39152 | @item Transparency support (with multiple options) |
| 39153 | @item Animated image support (including transparent ones) |
| 39154 | @item Integration into various TUI / terminal-based output libraries |
| 39155 | @item Terminal size awareness |
| 39156 | @item Automatic and manual image sizing |
| 39157 | @item Horizontal and vertical alignment |
| 39158 | @item Automatic and manual font ratio adjustment (to preserve image aspect |
| 39159 | ratio) |
| 39160 | @end enumerate") |
| 39161 | (license license:expat))) |
| 39162 | |
| 39163 | (define-public python-termcolor |
| 39164 | (package |
| 39165 | (name "python-termcolor") |
| 39166 | (version "2.5.0") |
| 39167 | (source |
| 39168 | (origin |
| 39169 | (method url-fetch) |
| 39170 | (uri (pypi-uri "termcolor" version)) |
| 39171 | (sha256 |
| 39172 | (base32 "0vwaxyr2vk8gi7s1slq74nb0ssbb0wcn208ziqp48j3dv8kqv3cr")))) |
| 39173 | (build-system pyproject-build-system) |
| 39174 | (arguments |
| 39175 | (list |
| 39176 | #:phases |
| 39177 | #~(modify-phases %standard-phases |
| 39178 | (add-after 'unpack 'relax-coverage-requirements |
| 39179 | (lambda _ |
| 39180 | (substitute* "pyproject.toml" |
| 39181 | ((".*coverage.*") ""))))))) |
| 39182 | (native-inputs |
| 39183 | (list python-hatch-vcs python-hatchling python-pytest)) |
| 39184 | (home-page "https://pypi.org/project/termcolor/") |
| 39185 | (synopsis "ANSII Color formatting for terminal output") |
| 39186 | (description |
| 39187 | "This package provides ANSII Color formatting for output in terminals.") |
| 39188 | (license license:expat))) |
| 39189 | |
| 39190 | (define-public python-termcolor-1 |
| 39191 | (package |
| 39192 | (inherit python-termcolor) |
| 39193 | (version "1.1.0") |
| 39194 | (source |
| 39195 | (origin |
| 39196 | (method url-fetch) |
| 39197 | (uri (pypi-uri "termcolor" version)) |
| 39198 | (sha256 |
| 39199 | (base32 |
| 39200 | "0fv1vq14rpqwgazxg4981904lfyp84mnammw7y046491cv76jv8x")))) |
| 39201 | ;; There are no tests |
| 39202 | (arguments (list #:tests? #false)) |
| 39203 | (native-inputs |
| 39204 | (list python-setuptools |
| 39205 | python-wheel)))) |
| 39206 | |
| 39207 | (define-public python-termcolor-next |
| 39208 | (package |
| 39209 | (inherit python-termcolor) |
| 39210 | (name "python-termcolor-next") |
| 39211 | (version "3.1.0") |
| 39212 | (source |
| 39213 | (origin |
| 39214 | (method url-fetch) |
| 39215 | (uri (pypi-uri "termcolor" version)) |
| 39216 | (sha256 |
| 39217 | (base32 "0w2rwl4h7664illllkmicdh3fz3z3pznqxbaxkp0j6aqxvxxfvba")))) |
| 39218 | (arguments '()))) |
| 39219 | |
| 39220 | (define-public python-terminaltables |
| 39221 | (package |
| 39222 | (name "python-terminaltables") |
| 39223 | (version "3.1.0") |
| 39224 | (source |
| 39225 | (origin |
| 39226 | (method git-fetch) |
| 39227 | (uri (git-reference |
| 39228 | (url "https://github.com/Robpol86/terminaltables") |
| 39229 | (commit (string-append "v" version)))) |
| 39230 | (file-name (git-file-name name version)) |
| 39231 | (sha256 (base32 "1jlm7n6kxypbr8mvwpd7hf9hbfk0a002ad03wqgxlri4aw8pk39a")))) |
| 39232 | (build-system pyproject-build-system) |
| 39233 | ;; XXX: A lot of test fail with flaky behavior. |
| 39234 | (arguments (list #:tests? #f)) |
| 39235 | (native-inputs |
| 39236 | (list python-colorclass |
| 39237 | python-colorama |
| 39238 | python-pytest |
| 39239 | python-setuptools |
| 39240 | python-termcolor)) |
| 39241 | (home-page "https://github.com/Robpol86/terminaltables") |
| 39242 | (synopsis |
| 39243 | "Generate simple tables in terminals from a nested list of strings") |
| 39244 | (description |
| 39245 | "This package makes it easy to draw tables in terminal/console |
| 39246 | applications from a list of lists of strings. It supports multi-line rows.") |
| 39247 | (license license:expat))) |
| 39248 | |
| 39249 | (define-public python-termstyle |
| 39250 | (package |
| 39251 | (name "python-termstyle") |
| 39252 | (version "0.1.11") |
| 39253 | (source |
| 39254 | (origin |
| 39255 | (method url-fetch) |
| 39256 | (uri (pypi-uri "termstyle" version)) |
| 39257 | (sha256 |
| 39258 | (base32 "17wzkkcqy5zc0g68xlad3kcv66iw14d2pwqc0h9420gak0vbhx7g")))) |
| 39259 | (build-system pyproject-build-system) |
| 39260 | (arguments |
| 39261 | (list #:test-backend #~'custom |
| 39262 | #:test-flags #~(list "test3.py"))) |
| 39263 | (native-inputs |
| 39264 | (list python-setuptools)) |
| 39265 | (home-page "https://github.com/gfxmonk/termstyle") |
| 39266 | (synopsis "Console text coloring for Python") |
| 39267 | (description "This package provides console text coloring for Python.") |
| 39268 | (license license:bsd-3))) |
| 39269 | |
| 39270 | (define-public python-text-unidecode |
| 39271 | (package |
| 39272 | (name "python-text-unidecode") |
| 39273 | (version "1.3") |
| 39274 | (source |
| 39275 | (origin |
| 39276 | (method url-fetch) |
| 39277 | (uri (pypi-uri "text-unidecode" version)) |
| 39278 | (sha256 |
| 39279 | (base32 "14xb99fdv52j21dsljgsbmbaqv10ps4b453p229r29sdn4xn1mms")))) |
| 39280 | (build-system pyproject-build-system) |
| 39281 | (native-inputs |
| 39282 | (list python-pytest |
| 39283 | python-setuptools)) |
| 39284 | (home-page "https://github.com/kmike/text-unidecode/") |
| 39285 | (synopsis "Decode Unicode data") |
| 39286 | (description |
| 39287 | "@code{text-unidecode} is a basic Python port of the @code{Text::Unidecode} |
| 39288 | Perl library. It can create ASCII representations of Unicode data. In general |
| 39289 | users should prefer the @code{python-unidecode} package which offers better |
| 39290 | memory usage and transliteration quality.") |
| 39291 | ;; The user can choose either license. |
| 39292 | (license (list license:clarified-artistic license:gpl2+)))) |
| 39293 | |
| 39294 | (define-public python-textdistance |
| 39295 | (package |
| 39296 | (name "python-textdistance") |
| 39297 | (version "4.6.3") |
| 39298 | (source |
| 39299 | (origin |
| 39300 | (method git-fetch) |
| 39301 | (uri (git-reference |
| 39302 | (url "https://github.com/life4/textdistance") |
| 39303 | (commit version))) |
| 39304 | (file-name (git-file-name name version)) |
| 39305 | (sha256 |
| 39306 | (base32 "1qaplikab46p38jqr93bxd26vvxcnvib15fjxmmp4cbsiy5196sg")))) |
| 39307 | (build-system pyproject-build-system) |
| 39308 | ;; tests: 430 passed, 1446 warnings |
| 39309 | (native-inputs |
| 39310 | (list python-numpy |
| 39311 | python-pytest |
| 39312 | python-setuptools)) |
| 39313 | (propagated-inputs |
| 39314 | (list python-jellyfish |
| 39315 | python-distance |
| 39316 | python-levenshtein |
| 39317 | python-pylev |
| 39318 | python-pyxdameraulevenshtein |
| 39319 | python-rapidfuzz)) |
| 39320 | (home-page "https://github.com/life4/textdistance") |
| 39321 | (synopsis "Compute distance between the two texts") |
| 39322 | (description "@code{textdistance} is a pure Python library for comparing |
| 39323 | distance between two or more sequences by many algorithms.") |
| 39324 | (license license:expat))) |
| 39325 | |
| 39326 | (define-public python-textparser |
| 39327 | (package |
| 39328 | (name "python-textparser") |
| 39329 | (version "0.24.0") |
| 39330 | (source |
| 39331 | (origin |
| 39332 | (method url-fetch) |
| 39333 | (uri (pypi-uri "textparser" version)) |
| 39334 | (sha256 |
| 39335 | (base32 "0dc3aqbzh0x13i6cmr73q777wv8nxyk3p0kdnynh5l59bbkhixsn")))) |
| 39336 | (build-system pyproject-build-system) |
| 39337 | (arguments |
| 39338 | (list #:test-backend #~'unittest)) |
| 39339 | (native-inputs (list python-setuptools)) |
| 39340 | (home-page "https://github.com/eerimoq/textparser") |
| 39341 | (synopsis "Fast text parser for Python") |
| 39342 | (description "This library provides a text parser written in the Python |
| 39343 | language. It aims to be fast.") |
| 39344 | (license license:expat))) |
| 39345 | |
| 39346 | (define-public python-texttable |
| 39347 | (package |
| 39348 | (name "python-texttable") |
| 39349 | (version "1.7.0") |
| 39350 | (source |
| 39351 | (origin |
| 39352 | (method git-fetch) |
| 39353 | (uri (git-reference |
| 39354 | (url "https://github.com/foutaise/texttable/") |
| 39355 | (commit (string-append "v" version)))) |
| 39356 | (file-name (git-file-name name version)) |
| 39357 | (sha256 |
| 39358 | (base32 "1p3g8v4wic6bpwa2r1h95a3mrx4vl6r6ci7ijwp0lmq55j9v9rx7")))) |
| 39359 | (build-system pyproject-build-system) |
| 39360 | (arguments (list #:test-flags #~(list "tests.py"))) |
| 39361 | (native-inputs (list python-pytest python-setuptools)) |
| 39362 | (home-page "https://github.com/foutaise/texttable/") |
| 39363 | (synopsis "Create simple ASCII tables in Python") |
| 39364 | (description |
| 39365 | "This package provides a Python module for creating simple ASCII |
| 39366 | tables.") |
| 39367 | (license license:expat))) |
| 39368 | |
| 39369 | (define-public python-textual |
| 39370 | (package |
| 39371 | (name "python-textual") |
| 39372 | (version "7.4.0") |
| 39373 | (source |
| 39374 | (origin |
| 39375 | (method git-fetch) |
| 39376 | (uri (git-reference |
| 39377 | (url "https://github.com/Textualize/textual") |
| 39378 | (commit (string-append "v" version)))) |
| 39379 | (file-name (git-file-name name version)) |
| 39380 | (sha256 |
| 39381 | (base32 "0xnfb8g0p66f6i4kzd6l2y2cp1pm33la1rj0hbdws72j5rcpq0nv")))) |
| 39382 | (build-system pyproject-build-system) |
| 39383 | (arguments |
| 39384 | (list |
| 39385 | #:test-flags |
| 39386 | ;; Snapshot tests require python-pytest-textual-snapshot which |
| 39387 | ;; in turn depends on python-textual. |
| 39388 | '(list "--ignore=tests/snapshot_tests/test_snapshots.py" |
| 39389 | "-k" (string-append |
| 39390 | ;; Broken for unknown reason. |
| 39391 | "not test_textual_env_var" |
| 39392 | ;; Tests that require python-treesitter-languages. |
| 39393 | " and not test_widget_construct" |
| 39394 | " and not test_setting_builtin_language_via_constructor" |
| 39395 | " and not test_setting_builtin_language_via_attribute" |
| 39396 | " and not test_setting_language_to_none" |
| 39397 | " and not test_setting_unknown_language" |
| 39398 | " and not test_register_language" |
| 39399 | " and not test_update_highlight_query" |
| 39400 | " and not test_default_theme" |
| 39401 | " and not test_setting_builtin_themes" |
| 39402 | " and not test_setting_unknown_theme_raises_exception" |
| 39403 | " and not test_registering_and_setting_theme" |
| 39404 | " and not test_progress_bar_width_1fr")) |
| 39405 | #:phases |
| 39406 | #~(modify-phases %standard-phases |
| 39407 | (add-after 'unpack 'relax-requirements |
| 39408 | (lambda _ |
| 39409 | (substitute* "pyproject.toml" |
| 39410 | (("pygments =.*") |
| 39411 | "pygments = \"*\"\n"))))))) |
| 39412 | (propagated-inputs |
| 39413 | (list python-markdown-it-py |
| 39414 | python-mdit-py-plugins |
| 39415 | python-platformdirs |
| 39416 | python-rich |
| 39417 | python-tree-sitter |
| 39418 | ;; python-tree-sitter-languages ; optional, not packed yet |
| 39419 | python-typing-extensions)) |
| 39420 | (native-inputs |
| 39421 | (list python-poetry-core |
| 39422 | python-pytest |
| 39423 | python-pytest-asyncio |
| 39424 | python-pytest-xdist)) |
| 39425 | (home-page "https://github.com/Textualize/textual") |
| 39426 | (synopsis "Build text user interfaces in Python") |
| 39427 | (description "Textual is a @acronym{TUI, Text User Interface} framework |
| 39428 | for Python inspired by modern web development.") |
| 39429 | (license license:expat))) |
| 39430 | |
| 39431 | (define-public python-tftpy |
| 39432 | (package |
| 39433 | (name "python-tftpy") |
| 39434 | (version "0.8.6") |
| 39435 | (source |
| 39436 | (origin |
| 39437 | (method git-fetch) |
| 39438 | (uri (git-reference |
| 39439 | (url "https://github.com/msoulier/tftpy") |
| 39440 | (commit version))) |
| 39441 | (file-name (git-file-name name version)) |
| 39442 | (sha256 |
| 39443 | (base32 "11cs52skmisg7rlmcxghmpcxfszcwmph6cvmfdn2p0ks6ckfy9q2")))) |
| 39444 | (build-system pyproject-build-system) |
| 39445 | (arguments |
| 39446 | (list |
| 39447 | #:test-backend #~'unittest |
| 39448 | #:test-flags #~(list "tests/test.py") |
| 39449 | #:phases |
| 39450 | #~(modify-phases %standard-phases |
| 39451 | (add-before 'check 'configure-tests |
| 39452 | (lambda* (#:key tests? #:allow-other-keys) |
| 39453 | (when tests? |
| 39454 | ;; The default DEBUG logging level is way too verbose. |
| 39455 | (substitute* "tests/test.py" |
| 39456 | (("logging\\.DEBUG") |
| 39457 | "logging.INFO")))))))) |
| 39458 | (native-inputs (list python-setuptools)) |
| 39459 | (home-page "https://tftpy.sourceforge.net/") |
| 39460 | (synopsis "Python trivial file transfer protocol (TFTP) library") |
| 39461 | (description |
| 39462 | "TFTPy is a trivial file transfer protocol (TFTP) Python library. It can |
| 39463 | be used to act both as a TFTP client or TFTP server.") |
| 39464 | (license license:expat))) |
| 39465 | |
| 39466 | (define-public python-thefuzz |
| 39467 | (package |
| 39468 | (name "python-thefuzz") |
| 39469 | (version "0.22.1") |
| 39470 | (source |
| 39471 | (origin |
| 39472 | (method git-fetch) |
| 39473 | (uri (git-reference |
| 39474 | (url "https://github.com/seatgeek/thefuzz") |
| 39475 | (commit version))) |
| 39476 | (file-name (git-file-name name version)) |
| 39477 | (sha256 |
| 39478 | (base32 "1l24masn3ilfnwdasi5bhs1vb3ll1nqzxljiasdhfly1ncfjyvca")))) |
| 39479 | (build-system pyproject-build-system) |
| 39480 | (arguments |
| 39481 | (list #:test-flags #~'("-k" "not TestCodeFormat") |
| 39482 | #:phases #~(modify-phases %standard-phases |
| 39483 | ;; pycodestyle is only used in TestCodeFormat. |
| 39484 | (add-after 'unpack 'unrequire-pycodestyle |
| 39485 | (lambda _ |
| 39486 | (substitute* "test_thefuzz.py" |
| 39487 | (("import pycodestyle.*") ""))))))) |
| 39488 | (propagated-inputs (list python-rapidfuzz)) |
| 39489 | (native-inputs (list python-hypothesis |
| 39490 | python-pytest |
| 39491 | python-setuptools)) |
| 39492 | (home-page "https://github.com/seatgeek/thefuzz") |
| 39493 | (synopsis "Fuzzy string matching in Python") |
| 39494 | (description |
| 39495 | "This Python package implements fuzzing string matching |
| 39496 | using Levenshtein distance.") |
| 39497 | (license license:expat))) |
| 39498 | |
| 39499 | (define-public python-thumbhash |
| 39500 | (let ((commit "3ef0480cc1a3a8230b54ebc4873b1007fcfcc329") |
| 39501 | (revision "0")) |
| 39502 | (package |
| 39503 | (name "python-thumbhash") |
| 39504 | (version (git-version "0.1.2" revision commit)) |
| 39505 | (source |
| 39506 | (origin |
| 39507 | (method git-fetch) |
| 39508 | (uri (git-reference |
| 39509 | (url "https://github.com/justinforlenza/thumbhash-py") |
| 39510 | (commit commit))) |
| 39511 | (file-name (git-file-name name version)) |
| 39512 | (sha256 |
| 39513 | (base32 "0nb3v6437gdaf4wrinzmkdjsvrlzihp3pyan05vnd97zsz41zs0z")))) |
| 39514 | (arguments (list #:tests? #f)) |
| 39515 | (build-system pyproject-build-system) |
| 39516 | (native-inputs (list python-hatchling)) |
| 39517 | (home-page "https://github.com/justinforlenza/thumbhash-py") |
| 39518 | (synopsis "Compact representation of an image placeholder") |
| 39519 | (description |
| 39520 | "This is a Python port of the |
| 39521 | @url{https://github.com/evanw/thumbhash,thumbhash} encoder by |
| 39522 | @url{https://github.com/evanw,Evan Wallace}.") |
| 39523 | (license license:expat)))) |
| 39524 | |
| 39525 | (define-public python-three-merge |
| 39526 | (package |
| 39527 | (name "python-three-merge") |
| 39528 | (version "0.1.1") |
| 39529 | (source |
| 39530 | (origin |
| 39531 | ;; There are no tests in the PyPI tarball. |
| 39532 | (method git-fetch) |
| 39533 | (uri (git-reference |
| 39534 | (url "https://github.com/spyder-ide/three-merge") |
| 39535 | (commit (string-append "v" version)))) |
| 39536 | (file-name (git-file-name name version)) |
| 39537 | (sha256 |
| 39538 | (base32 "1fw28swh6jq4myr09j7gv68l241b8vwg470ak5xv0x4xwh2a1m86")))) |
| 39539 | (build-system pyproject-build-system) |
| 39540 | (propagated-inputs |
| 39541 | (list python-diff-match-patch)) |
| 39542 | (native-inputs |
| 39543 | (list python-pytest python-setuptools python-wheel)) |
| 39544 | (home-page "https://github.com/spyder-ide/three-merge") |
| 39545 | (synopsis "Library for merging two strings with respect to a base one") |
| 39546 | (description |
| 39547 | "This package provides a Python library to perform a 3-way merge between |
| 39548 | strings, based on @code{diff-match-patch}. This library performs merges at a |
| 39549 | character level, as opposed to most VCS systems, which opt for a line-based |
| 39550 | approach.") |
| 39551 | (license license:expat))) |
| 39552 | |
| 39553 | (define-public python-throttler |
| 39554 | (package |
| 39555 | (name "python-throttler") |
| 39556 | (version "1.2.3") |
| 39557 | (source |
| 39558 | (origin |
| 39559 | (method git-fetch) |
| 39560 | (uri (git-reference |
| 39561 | (url "https://github.com/uburuntu/throttler") |
| 39562 | (commit (string-append "v" version)))) |
| 39563 | (file-name (git-file-name name version)) |
| 39564 | (sha256 |
| 39565 | (base32 "1k0a3hxih2qk3fxljcwbbpa723bshrvcqgz2lxgll32g1lfa3hnd")))) |
| 39566 | (build-system pyproject-build-system) |
| 39567 | (native-inputs |
| 39568 | (list python-aiohttp |
| 39569 | python-pytest |
| 39570 | python-pytest-asyncio |
| 39571 | python-setuptools)) |
| 39572 | (home-page "https://github.com/uburuntu/throttler") |
| 39573 | (synopsis "Throttling with asyncio support") |
| 39574 | (description |
| 39575 | "This is a Python package for easy throttling with asyncio support.") |
| 39576 | (license license:expat))) |
| 39577 | |
| 39578 | (define-public python-tifffile |
| 39579 | (package |
| 39580 | (name "python-tifffile") |
| 39581 | (version "2025.10.4") |
| 39582 | (source |
| 39583 | (origin |
| 39584 | (method url-fetch) |
| 39585 | (uri (pypi-uri "tifffile" version)) |
| 39586 | (sha256 |
| 39587 | (base32 "0f1ybmr2jz19gjg92p9vz3qib49m0x4ipxvrvjyfa6r1mcb7qhrf")))) |
| 39588 | (build-system pyproject-build-system) |
| 39589 | ;; Tests require lfdfiles, which depends on tifffile |
| 39590 | (arguments (list #:tests? #f)) |
| 39591 | (propagated-inputs |
| 39592 | (list python-numpy)) |
| 39593 | (native-inputs |
| 39594 | (list python-setuptools)) |
| 39595 | (home-page "https://www.lfd.uci.edu/~gohlke/") |
| 39596 | (synopsis "Read and write TIFF(r) files") |
| 39597 | (description |
| 39598 | "This package lets you read image and metadata from many bio-scientific |
| 39599 | formats such as plain TIFF, BigTIFF, OME-TIFF, STK, LSM, SGI,NIH, ImageJ, |
| 39600 | MicroManager, MD GEL, and FluoView files. It also lets you write numpy arrays |
| 39601 | to TIFF, BigTIFF, and ImageJ hyperstack compatible files.") |
| 39602 | (license license:bsd-3))) |
| 39603 | |
| 39604 | (define-public python-tiktoken |
| 39605 | (package |
| 39606 | (name "python-tiktoken") |
| 39607 | (version "0.9.0") |
| 39608 | (source |
| 39609 | (origin |
| 39610 | (method url-fetch) |
| 39611 | (uri (pypi-uri "tiktoken" version)) |
| 39612 | (sha256 |
| 39613 | (base32 "0p9cg6n8mzdi4lbbwxrrp26chy5hr14bqmzr3w74kq1qm6k5qanh")))) |
| 39614 | (build-system cargo-build-system) |
| 39615 | (arguments |
| 39616 | (list |
| 39617 | #:install-source? #false |
| 39618 | #:imported-modules |
| 39619 | (append %pyproject-build-system-modules |
| 39620 | %cargo-build-system-modules) |
| 39621 | #:modules |
| 39622 | '((guix build cargo-build-system) |
| 39623 | ((guix build pyproject-build-system) #:prefix py:) |
| 39624 | (guix build utils)) |
| 39625 | #:phases |
| 39626 | #~(modify-phases %standard-phases |
| 39627 | (replace 'build |
| 39628 | (assoc-ref py:%standard-phases 'build)) |
| 39629 | (add-after 'install 'wrap |
| 39630 | (lambda _ |
| 39631 | ;; Collection of python- and pyproject-build-system phases |
| 39632 | ;; between 'install and 'check. |
| 39633 | (assoc-ref py:%standard-phases 'add-install-to-pythonpath) |
| 39634 | (assoc-ref py:%standard-phases 'add-install-to-path) |
| 39635 | (assoc-ref py:%standard-phases 'wrap) |
| 39636 | (assoc-ref py:%standard-phases 'create-entrypoints) |
| 39637 | (assoc-ref py:%standard-phases 'compile-bytecode))) |
| 39638 | (replace 'install |
| 39639 | (assoc-ref py:%standard-phases 'install))))) |
| 39640 | (propagated-inputs (list python-regex python-requests)) |
| 39641 | (inputs (cargo-inputs 'python-tiktoken)) |
| 39642 | (native-inputs |
| 39643 | (list python-setuptools |
| 39644 | python-setuptools-rust |
| 39645 | python-wheel |
| 39646 | python-wrapper)) |
| 39647 | (home-page "https://github.com/openai/tiktoken/") |
| 39648 | (synopsis "Fast BPE tokeniser for use with OpenAI's models") |
| 39649 | (description |
| 39650 | "Tiktoken is a fast @dfn{byte pair encoding} (BPE) tokeniser for use with |
| 39651 | @code{OpenAI's} models.") |
| 39652 | (license license:expat))) |
| 39653 | |
| 39654 | (define-public python-timed-threads |
| 39655 | (package |
| 39656 | (name "python-timed-threads") |
| 39657 | (version "2.0.0") |
| 39658 | (source |
| 39659 | (origin |
| 39660 | (method git-fetch) |
| 39661 | (uri (git-reference |
| 39662 | (url "https://github.com/Mathics3/python-timed-threads/") |
| 39663 | (commit version))) |
| 39664 | (file-name (git-file-name name version)) |
| 39665 | (sha256 |
| 39666 | (base32 "062lml0dg13pi7b871q8fql5rff7g7gs6ljbb8rmm0vp98vqc5fp")))) |
| 39667 | (build-system pyproject-build-system) |
| 39668 | (native-inputs |
| 39669 | (list python-pytest python-setuptools)) |
| 39670 | (home-page "https://github.com/Mathics3/python-timed-threads/") |
| 39671 | (synopsis "Ability to set absolute time deadlines on asynchronous threads") |
| 39672 | (description |
| 39673 | "This package adds the ability to set relative elapsed time deadlines on |
| 39674 | asynchronous threads, and allows one thread to stop another by means of |
| 39675 | raising an exception.") |
| 39676 | (license license:expat))) |
| 39677 | |
| 39678 | (define-public python-timeout-decorator |
| 39679 | ;; TODO: Remove when python-requests-caches releases a fresh version dropping |
| 39680 | ;; it, see, <https://github.com/requests-cache/requests-cache/pull/1111>. |
| 39681 | (package |
| 39682 | (name "python-timeout-decorator") |
| 39683 | (version "0.5.0") |
| 39684 | (source |
| 39685 | (origin |
| 39686 | (method url-fetch) |
| 39687 | (uri (pypi-uri "timeout-decorator" version)) |
| 39688 | (sha256 |
| 39689 | (base32 "1mxk2qyydhzncm93z08kvj5ssxq3fr2n7pkrrji28nqwvdc2ybva")))) |
| 39690 | (build-system pyproject-build-system) |
| 39691 | (arguments (list #:tests? #f)) |
| 39692 | (native-inputs (list python-setuptools python-wheel)) |
| 39693 | (home-page "https://github.com/pnpnpn/timeout-decorator") |
| 39694 | (synopsis "Timeout decorator") |
| 39695 | (description "This package provides a decorator that raises an error |
| 39696 | when an operation takes longer than expected.") |
| 39697 | (license license:expat))) |
| 39698 | |
| 39699 | (define-public python-titlecase |
| 39700 | (package |
| 39701 | (name "python-titlecase") |
| 39702 | (version "2.4.1") |
| 39703 | (source |
| 39704 | (origin |
| 39705 | (method url-fetch) |
| 39706 | (uri (pypi-uri "titlecase" version)) |
| 39707 | (sha256 |
| 39708 | (base32 "1x9myq3rlbw6wh946ncch8px7wyabhzacy2fjji13nmvrivs50vx")))) |
| 39709 | (build-system pyproject-build-system) |
| 39710 | (arguments |
| 39711 | (list |
| 39712 | #:test-backend #~'unittest)) |
| 39713 | (native-inputs |
| 39714 | (list python-setuptools)) |
| 39715 | (home-page "https://github.com/ppannuto/python-titlecase") |
| 39716 | (synopsis "Capitalize strings similar to book titles") |
| 39717 | (description |
| 39718 | "Python-Titlecase is a Python port of John Gruber's titlecase.pl. |
| 39719 | It capitalizes (predominantly English) strings in a way that is similar to |
| 39720 | book titles, using the New York Times Manual of Style to leave certain words |
| 39721 | lowercase.") |
| 39722 | (license license:expat))) |
| 39723 | |
| 39724 | (define-public python-tlsh |
| 39725 | (package |
| 39726 | (name "python-tlsh") |
| 39727 | (version "4.11.2") |
| 39728 | (home-page "https://github.com/trendmicro/tlsh") |
| 39729 | (source |
| 39730 | (origin |
| 39731 | (method git-fetch) |
| 39732 | (uri (git-reference (url home-page) (commit version))) |
| 39733 | (file-name (git-file-name name version)) |
| 39734 | (sha256 |
| 39735 | (base32 "1gb5j73nw3nmx030rf8pm75rns5syxhv44zxr6i74kjicyly1i9w")))) |
| 39736 | (build-system pyproject-build-system) |
| 39737 | (arguments |
| 39738 | (list |
| 39739 | #:phases |
| 39740 | #~(modify-phases %standard-phases |
| 39741 | (add-before 'build 'configure |
| 39742 | (lambda _ |
| 39743 | (invoke "cmake" "."))) ;to generate tlsh_version.h |
| 39744 | (add-after 'configure 'chdir |
| 39745 | (lambda _ |
| 39746 | (chdir "py_ext"))) |
| 39747 | (replace 'check |
| 39748 | (lambda* (#:key tests? #:allow-other-keys) |
| 39749 | (when tests? |
| 39750 | (with-directory-excursion "../Testing" |
| 39751 | (invoke "./python_test.sh")))))))) |
| 39752 | (native-inputs (list cmake-minimal python-setuptools)) |
| 39753 | (synopsis "Fuzzy matching library for Python") |
| 39754 | (description |
| 39755 | "Trend Micro Locality Sensitive Hash (TLSH) is a fuzzy matching library. |
| 39756 | Given a byte stream with a minimum length of 256 bytes, TLSH generates a hash |
| 39757 | value which can be used for similarity comparisons. Similar objects have |
| 39758 | similar hash values, which allows for the detection of similar objects by |
| 39759 | comparing their hash values. The byte stream should have a sufficient amount |
| 39760 | of complexity; for example, a byte stream of identical bytes will not generate |
| 39761 | a hash value.") |
| 39762 | (license license:asl2.0))) |
| 39763 | |
| 39764 | (define-public python-tlv8 |
| 39765 | (package |
| 39766 | (name "python-tlv8") |
| 39767 | (version "0.10.0") |
| 39768 | (source |
| 39769 | (origin |
| 39770 | (method git-fetch) |
| 39771 | (uri (git-reference |
| 39772 | (url "https://github.com/jlusiardi/tlv8_python") |
| 39773 | (commit (string-append "v" version)))) |
| 39774 | (file-name (git-file-name name version)) |
| 39775 | (sha256 |
| 39776 | (base32 "0q25y5lz7cigfk7l30rdm2z8as8662pzd8ki5vvs1c0saqq72zhv")))) |
| 39777 | (build-system pyproject-build-system) |
| 39778 | (native-inputs (list python-setuptools python-pytest)) |
| 39779 | (home-page "https://github.com/jlusiardi/tlv8_python") |
| 39780 | (synopsis |
| 39781 | "Python library for @acronym{TLV, type-length-value} encoded data") |
| 39782 | (description |
| 39783 | "Python library for @acronym{TLV, type-length-value} encoding and decoding. |
| 39784 | Represents type and length by one byte each, hence the name @code{tlv8}.") |
| 39785 | (license license:asl2.0))) |
| 39786 | |
| 39787 | (define-public python-tokenize-rt |
| 39788 | (package |
| 39789 | (name "python-tokenize-rt") |
| 39790 | (version "6.2.0") |
| 39791 | (source |
| 39792 | (origin |
| 39793 | (method git-fetch) |
| 39794 | (uri (git-reference |
| 39795 | (url "https://github.com/asottile/tokenize-rt") |
| 39796 | (commit (string-append "v" version)))) |
| 39797 | (file-name (git-file-name name version)) |
| 39798 | (sha256 |
| 39799 | (base32 "1maa9sifma0a6v7kl7mmyqzj0jdclzlp4wjr0vkdx95raihxx4fv")))) |
| 39800 | (build-system pyproject-build-system) |
| 39801 | (native-inputs (list python-pytest python-setuptools)) |
| 39802 | (home-page "https://github.com/asottile/tokenize-rt") |
| 39803 | (synopsis "Wrapper around the stdlib tokenize which roundtrips") |
| 39804 | (description |
| 39805 | "This Python library is a wrapper around @code{tokenize} from the Python |
| 39806 | standard library. It provides two additional tokens @code{ESCAPED_NL} and |
| 39807 | @code{UNIMPORTANT_WS}, and a @code{Token} data type. Use @code{src_to_tokens} |
| 39808 | and @code{tokens_to_src} to roundtrip.") |
| 39809 | (license license:expat))) |
| 39810 | |
| 39811 | (define-public python-tomlkit |
| 39812 | (package |
| 39813 | (name "python-tomlkit") |
| 39814 | (version "0.15.0") |
| 39815 | (source |
| 39816 | (origin |
| 39817 | (method git-fetch) |
| 39818 | (uri (git-reference |
| 39819 | (url "https://github.com/sdispater/tomlkit") |
| 39820 | (commit version))) |
| 39821 | (file-name (git-file-name name version)) |
| 39822 | (sha256 |
| 39823 | (base32 "00sv5x8j78zkirzh9rl89lkpwfwhkhrq4mql2p4rqws1j37zx88g")))) |
| 39824 | (build-system pyproject-build-system) |
| 39825 | (arguments |
| 39826 | (list |
| 39827 | #:phases |
| 39828 | #~(modify-phases %standard-phases |
| 39829 | ;; toml-test is submodule to |
| 39830 | ;; <https://github.com/toml-lang/toml-test>. |
| 39831 | (add-after 'unpack 'copy-toml-test-source |
| 39832 | (lambda _ |
| 39833 | (copy-recursively |
| 39834 | #$(package-source (this-package-native-input "toml-test")) |
| 39835 | "tests/toml-test")))))) |
| 39836 | (native-inputs |
| 39837 | (list python-poetry-core |
| 39838 | python-pytest |
| 39839 | toml-test)) |
| 39840 | (home-page "https://github.com/sdispater/tomlkit") |
| 39841 | (synopsis "Style-preserving TOML library") |
| 39842 | (description |
| 39843 | "TOML Kit is a 1.0.0rc1-compliant TOML library. It includes a parser that |
| 39844 | preserves all comments, indentations, whitespace and internal element ordering, |
| 39845 | and makes them accessible and editable via an intuitive API. It can also |
| 39846 | create new TOML documents from scratch using the provided helpers. Part of the |
| 39847 | implementation has been adapted, improved, and fixed from Molten.") |
| 39848 | (license license:expat))) |
| 39849 | |
| 39850 | (define-public python-toolrack |
| 39851 | (package |
| 39852 | (name "python-toolrack") |
| 39853 | (version "4.0.3") |
| 39854 | (source |
| 39855 | (origin |
| 39856 | (method git-fetch) |
| 39857 | (uri (git-reference |
| 39858 | (url "https://github.com/albertodonato/toolrack") |
| 39859 | (commit (string-append "v" version)))) |
| 39860 | (file-name (git-file-name name version)) |
| 39861 | (sha256 |
| 39862 | (base32 |
| 39863 | "1aglfj7j25fiwx9jh1rl34mlhfpdhn8yrkn30vhkz9yw7zrx42h0")))) |
| 39864 | (build-system pyproject-build-system) |
| 39865 | (arguments |
| 39866 | (list |
| 39867 | #:phases |
| 39868 | #~(modify-phases %standard-phases |
| 39869 | (add-after 'unpack 'patch-/bin/sh |
| 39870 | (lambda _ |
| 39871 | (substitute* "tests/aio/process_test.py" |
| 39872 | (("/bin/sh") |
| 39873 | (which "sh")))))))) |
| 39874 | (native-inputs |
| 39875 | (list python-pytest |
| 39876 | python-pytest-asyncio |
| 39877 | python-pytest-mock |
| 39878 | python-setuptools)) |
| 39879 | (home-page "https://github.com/albertodonato/toolrack") |
| 39880 | (synopsis "Collection of Python utility functions and classes") |
| 39881 | (description "This package provides a collection of miscellaneous utility |
| 39882 | functions and classes.") |
| 39883 | (license license:lgpl3+))) |
| 39884 | |
| 39885 | (define-public python-toolshed |
| 39886 | (package |
| 39887 | (name "python-toolshed") |
| 39888 | (version "0.4.8") |
| 39889 | (source |
| 39890 | (origin |
| 39891 | (method git-fetch) |
| 39892 | (uri (git-reference |
| 39893 | (url "https://github.com/brentp/toolshed") |
| 39894 | (commit (string-append "v" version)))) |
| 39895 | (file-name (git-file-name name version)) |
| 39896 | (sha256 |
| 39897 | (base32 "0r6c6nc2mj83fbg2cwym810cg5gbd0cl7qkhjca7i6vnshcbv8y0")))) |
| 39898 | (build-system pyproject-build-system) |
| 39899 | (native-inputs |
| 39900 | (list python-pytest |
| 39901 | python-setuptools)) |
| 39902 | (home-page "https://github.com/brentp/toolshed/") |
| 39903 | (synopsis "Collection of modules and functions for working with data") |
| 39904 | (description "This is a collection of well-tested, simple modules and |
| 39905 | functions that aim to reduce boilerplate when working with data.") |
| 39906 | (license license:bsd-2))) |
| 39907 | |
| 39908 | (define-public python-toolz |
| 39909 | (package |
| 39910 | (name "python-toolz") |
| 39911 | (version "1.1.0") |
| 39912 | (source |
| 39913 | (origin |
| 39914 | (method git-fetch) |
| 39915 | (uri (git-reference |
| 39916 | (url "https://github.com/pytoolz/toolz") |
| 39917 | (commit version))) |
| 39918 | (file-name (git-file-name name version)) |
| 39919 | (sha256 |
| 39920 | (base32 "09ams76wl5g0a4v4qiqi9xdagvq1pcwz8nglnhcfarbfivga2rbz")))) |
| 39921 | (build-system pyproject-build-system) |
| 39922 | (arguments |
| 39923 | (list |
| 39924 | #:phases |
| 39925 | #~(modify-phases %standard-phases |
| 39926 | (add-after 'unpack 'set-version |
| 39927 | (lambda _ |
| 39928 | (substitute* "pyproject.toml" |
| 39929 | (("\\[tool.setuptools-git-versioning\\]" all) |
| 39930 | (string-append "[tool.setuptools_scm]\n" |
| 39931 | "write_to = \"toolz/_version.py\"\n" |
| 39932 | all)))))))) |
| 39933 | (native-inputs |
| 39934 | (list python-pytest |
| 39935 | python-setuptools |
| 39936 | ;; Project expects setuptools-git-versioning to build version, but |
| 39937 | ;; it does not support envar override as seuptools-scm. |
| 39938 | python-setuptools-scm)) |
| 39939 | (home-page "https://github.com/pytoolz/toolz/") |
| 39940 | (synopsis "List processing tools and functional utilities") |
| 39941 | (description |
| 39942 | "This package provides a set of utility functions for iterators, |
| 39943 | functions, and dictionaries.") |
| 39944 | (license license:bsd-3))) |
| 39945 | |
| 39946 | (define-public python-toposort |
| 39947 | (package |
| 39948 | (name "python-toposort") |
| 39949 | (version "1.10") |
| 39950 | (source |
| 39951 | (origin |
| 39952 | (method url-fetch) |
| 39953 | (uri (pypi-uri "toposort" version)) |
| 39954 | (sha256 |
| 39955 | (base32 "1gd66z5dy6j7qs5qkj1pg0vb15rwd571yq02fkm9d9nhaff4gfxz")))) |
| 39956 | (build-system pyproject-build-system) |
| 39957 | (arguments |
| 39958 | (list #:test-backend #~'custom |
| 39959 | #:test-flags #~(list "-m" "test.test_toposort"))) |
| 39960 | (native-inputs (list python-setuptools)) |
| 39961 | (home-page "https://gitlab.com/ericvsmith/toposort") |
| 39962 | (synopsis "Topological sort algorithm") |
| 39963 | (description |
| 39964 | "This package provides an implementation of a topological sort |
| 39965 | algorithm.") |
| 39966 | (license license:asl2.0))) |
| 39967 | |
| 39968 | (define-public python-towncrier |
| 39969 | (package |
| 39970 | (name "python-towncrier") |
| 39971 | (version "25.8.0") |
| 39972 | (source |
| 39973 | (origin |
| 39974 | (method url-fetch) |
| 39975 | (uri (pypi-uri "towncrier" version)) |
| 39976 | (sha256 |
| 39977 | (base32 "1c8fjjwlx29jgllxvyzby4cn51iraxba0cmfnfmmgb9iz0lnvwgf")))) |
| 39978 | (build-system pyproject-build-system) |
| 39979 | (native-inputs |
| 39980 | (list git-minimal/pinned ;tests create git repositories |
| 39981 | python-hatchling |
| 39982 | python-pytest |
| 39983 | python-twisted)) |
| 39984 | (propagated-inputs |
| 39985 | (list python-click |
| 39986 | python-jinja2)) |
| 39987 | (home-page "https://towncrier.readthedocs.io/en/stable/") |
| 39988 | (synopsis "Manage release notes") |
| 39989 | (description |
| 39990 | "@code{towncrier} is a utility to produce useful, summarized news files |
| 39991 | (also known as changelogs) for a project.") |
| 39992 | (license license:expat))) |
| 39993 | |
| 39994 | (define-public python-tqdm |
| 39995 | (package |
| 39996 | (name "python-tqdm") |
| 39997 | (version "4.67.1") |
| 39998 | (source |
| 39999 | (origin |
| 40000 | (method url-fetch) |
| 40001 | (uri (pypi-uri "tqdm" version)) |
| 40002 | (sha256 |
| 40003 | (base32 "1wi7cql2fc76b5z9v1sr96ix2gxcb974z8qfydjkmh885k2zkbpq")))) |
| 40004 | (build-system pyproject-build-system) |
| 40005 | (arguments |
| 40006 | (list #:test-flags |
| 40007 | '(list "-o" "asyncio_mode=auto" |
| 40008 | "-k" "not perf and not test_rlock_creation"))) |
| 40009 | (native-inputs |
| 40010 | (list python-pytest |
| 40011 | python-pytest-asyncio |
| 40012 | python-pytest-timeout |
| 40013 | python-setuptools |
| 40014 | python-setuptools-scm |
| 40015 | python-toml |
| 40016 | python-wheel)) |
| 40017 | (home-page "https://github.com/tqdm/tqdm") |
| 40018 | (synopsis "Fast, extensible progress meter") |
| 40019 | (description |
| 40020 | "Make loops show a progress bar on the console by just wrapping any |
| 40021 | iterable with @code{|tqdm(iterable)|}. Offers many options to define |
| 40022 | design and layout.") |
| 40023 | (license (list license:mpl2.0 license:expat)))) |
| 40024 | |
| 40025 | (define-public python-traitlets |
| 40026 | (package |
| 40027 | (name "python-traitlets") |
| 40028 | (version "5.14.3") |
| 40029 | (source |
| 40030 | (origin |
| 40031 | (method url-fetch) |
| 40032 | (uri (pypi-uri "traitlets" version)) |
| 40033 | (sha256 |
| 40034 | (base32 "1dxnjs5vjfsbvr3jhlhl6696zafdfl1i5b1j6x5lpj826nfmgl4y")))) |
| 40035 | (build-system pyproject-build-system) |
| 40036 | ;; tests: 566 passed, 3 skipped, 1 warning |
| 40037 | (native-inputs |
| 40038 | (list python-hatchling |
| 40039 | python-pytest)) |
| 40040 | (home-page "https://ipython.org") |
| 40041 | (synopsis "Configuration system for Python applications") |
| 40042 | (description |
| 40043 | "Traitlets is a framework that lets Python classes have attributes with |
| 40044 | type checking, dynamically calculated default values, and ‘on change’ |
| 40045 | callbacks. The package also includes a mechanism to use traitlets for |
| 40046 | configuration, loading values from files or from command line arguments. This |
| 40047 | is a distinct layer on top of traitlets, so you can use traitlets in your code |
| 40048 | without using the configuration machinery.") |
| 40049 | (license license:bsd-3))) |
| 40050 | |
| 40051 | (define-public python-translate-toolkit |
| 40052 | (package |
| 40053 | (name "python-translate-toolkit") |
| 40054 | (version "3.15.6") |
| 40055 | (source |
| 40056 | (origin |
| 40057 | (method url-fetch) |
| 40058 | (uri (pypi-uri "translate_toolkit" version)) |
| 40059 | (sha256 |
| 40060 | (base32 "0p23c5nvfw19wg2h4rqxf301z0023yl7ivpjyhr5byxf0sxnqnpq")))) |
| 40061 | (build-system pyproject-build-system) |
| 40062 | (arguments |
| 40063 | (list |
| 40064 | ;; tests: 2828 passed, 3 skipped, 28 deselected, 32 xfailed, 11 warnings |
| 40065 | #:test-flags |
| 40066 | ;; TODO: Some of the optional inputs are not packaged yet. |
| 40067 | #~(list #$@(map (lambda (file) (string-append "--ignore=" |
| 40068 | "tests/translate/" |
| 40069 | file)) |
| 40070 | (list "convert/test_ini2po.py" |
| 40071 | "convert/test_php2po.py" |
| 40072 | "convert/test_po2ini.py" |
| 40073 | "convert/test_po2php.py" |
| 40074 | "storage/test_cpo.py" |
| 40075 | "storage/test_fluent.py" |
| 40076 | "storage/test_ini.py" |
| 40077 | "storage/test_php.py" |
| 40078 | "storage/test_po.py" |
| 40079 | "storage/test_pypo.py" |
| 40080 | "storage/test_subtitles.py")) |
| 40081 | #$@(map (lambda (test) (string-append "--deselect=" |
| 40082 | "tests/translate/storage/" |
| 40083 | test)) |
| 40084 | ;; UnicodeDecodeError: 'utf-8' codec can't decode byte |
| 40085 | ;; 0xff in position 0: invalid start byte |
| 40086 | (list "test_csvl10n.py::TestCSV::test_encoding_save" |
| 40087 | ;; FileNotFoundError: [Errno 2] No such file or |
| 40088 | ;; directory: 'msgfmt' |
| 40089 | "test_mo.py::TestMOFile::test_output" |
| 40090 | ;; assert 0 == -16200 |
| 40091 | "test_poheader.py::test_timezones")) |
| 40092 | #$@(map (lambda (test) (string-append "--deselect=" |
| 40093 | "tests/translate/tools/" |
| 40094 | test)) |
| 40095 | ;; XXX: Some issues with XML parsing. |
| 40096 | (list "test_junitmsgfmt.py::test_output" |
| 40097 | "test_pocount.py::test_output" |
| 40098 | "test_pocount.py::test_cases")) |
| 40099 | "-k" "not test_open_office_to_xliff and not test_po_to_xliff"))) |
| 40100 | (native-inputs |
| 40101 | (list python-pytest |
| 40102 | python-setuptools |
| 40103 | python-setuptools-scm)) |
| 40104 | (propagated-inputs |
| 40105 | (list python-cwcwidth |
| 40106 | python-cheroot |
| 40107 | ;; python-aeidon |
| 40108 | ;; python-fluent |
| 40109 | python-iniparse |
| 40110 | python-lxml |
| 40111 | python-mistletoe |
| 40112 | python-phply |
| 40113 | python-pyparsing |
| 40114 | python-ruamel.yaml |
| 40115 | python-vobject)) |
| 40116 | (home-page "https://toolkit.translatehouse.org") |
| 40117 | (synopsis "Tools and API for translation and localization engineering") |
| 40118 | (description |
| 40119 | "Tools and API for translation and localization engineering. It contains |
| 40120 | several utilities, as well as an API for building localization tools.") |
| 40121 | (license license:gpl2+))) |
| 40122 | |
| 40123 | (define-public python-translitcodec |
| 40124 | (package |
| 40125 | (name "python-translitcodec") |
| 40126 | (version "0.7.0") |
| 40127 | (source |
| 40128 | (origin |
| 40129 | (method git-fetch) |
| 40130 | (uri (git-reference |
| 40131 | (url "https://github.com/claudep/translitcodec") |
| 40132 | (commit (string-append "version-" version)))) |
| 40133 | (file-name (git-file-name name version)) |
| 40134 | (sha256 |
| 40135 | (base32 "1cj11sa5hy8ga7p0dgwi4g4gv0qx6c1yi2csgnvxiir16ywslhpw")))) |
| 40136 | (build-system pyproject-build-system) |
| 40137 | (native-inputs (list python-pytest python-setuptools)) |
| 40138 | (home-page "https://github.com/claudep/translitcodec") |
| 40139 | (synopsis "Unicode to 8-bit charset transliteration codec") |
| 40140 | (description |
| 40141 | "This package contains codecs for transliterating ISO 10646 texts into |
| 40142 | best-effort representations using smaller coded character sets (ASCII, |
| 40143 | ISO 8859, etc.).") |
| 40144 | (license license:expat))) |
| 40145 | |
| 40146 | (define-public python-treelib |
| 40147 | (package |
| 40148 | (name "python-treelib") |
| 40149 | (version "1.8.0") |
| 40150 | (source |
| 40151 | (origin |
| 40152 | (method git-fetch) |
| 40153 | (uri (git-reference |
| 40154 | (url "https://github.com/caesar0301/treelib") |
| 40155 | (commit (string-append "v" version)))) |
| 40156 | (file-name (git-file-name name version)) |
| 40157 | (sha256 |
| 40158 | (base32 "0jd3rdaq8v7ykb626cm1gxa03higqnn2pmnv46fc0lc55xbrkxlf")) |
| 40159 | (patches |
| 40160 | (search-patches "python-treelib-remove-python2-compat.patch")))) |
| 40161 | (build-system pyproject-build-system) |
| 40162 | (native-inputs (list python-poetry-core python-pytest)) |
| 40163 | (home-page "https://github.com/caesar0301/treelib") |
| 40164 | (synopsis "Implementation of a tree structure in Python") |
| 40165 | (description |
| 40166 | "This package provides a Python implementation of a tree structure.") |
| 40167 | (license license:asl2.0))) |
| 40168 | |
| 40169 | (define-public python-trio |
| 40170 | (package |
| 40171 | (name "python-trio") |
| 40172 | (version "0.33.0") |
| 40173 | (source |
| 40174 | (origin |
| 40175 | (method git-fetch) |
| 40176 | (uri (git-reference |
| 40177 | (url "https://github.com/python-trio/trio") |
| 40178 | (commit (string-append "v" version)))) |
| 40179 | (file-name (git-file-name name version)) |
| 40180 | (sha256 |
| 40181 | (base32 "1ibkp7bgdv0k099szk8181rfn7jm60kh8kpfrkfr4pnwjd6abslf")))) |
| 40182 | (build-system pyproject-build-system) |
| 40183 | (arguments |
| 40184 | (list |
| 40185 | ;; tests: 507 passed, 45 skipped, 37 deselected |
| 40186 | #:test-flags |
| 40187 | #~(list |
| 40188 | #$@(if (package? (this-package-native-input "python-trustme")) |
| 40189 | #~() |
| 40190 | #~("--ignore=src/trio/_tests/test_dtls.py" |
| 40191 | "--ignore=src/trio/_tests/test_highlevel_ssl_helpers.py" |
| 40192 | "--ignore=src/trio/_tests/test_ssl.py")) |
| 40193 | ;; Skip tests for the upstream repository's tooling. |
| 40194 | "--ignore=src/trio/_tests/tools" |
| 40195 | "-k" (string-join |
| 40196 | (list |
| 40197 | ;; Keyboard interrupts misbehave in the build sandbox. |
| 40198 | "not test_ki_in_repl" |
| 40199 | "test_KI_interrupts" |
| 40200 | "test_run_in_trio_thread_ki" |
| 40201 | ;; Somehow f'{check_errno_is_5!r}' evaluates |
| 40202 | ;; to "'check_errno_is_5'" instead of "<function ...>", |
| 40203 | ;; and f'{bool!r}' to "'bool'" instead of "<class 'bool'>". |
| 40204 | ;; Matcher and RaisesGroup are deprecated in Trio 0.33 |
| 40205 | ;; will probably be removed in version 0.35. |
| 40206 | "test_Matcher_check" |
| 40207 | "test_matcher_tostring" |
| 40208 | "test_raisesgroup_tostring" |
| 40209 | ;; Failure in name resolution. |
| 40210 | "test_SocketType_resolve" |
| 40211 | ;; OSError: protocol not found. |
| 40212 | "test_getprotobyname" |
| 40213 | ;; Drop pylint and jedi. |
| 40214 | "test_static_tool_sees_all_symbols") |
| 40215 | " and not ") |
| 40216 | "src/trio/_tests") |
| 40217 | #:phases |
| 40218 | #~(modify-phases %standard-phases |
| 40219 | (add-after 'unpack 'patch-pthread-path |
| 40220 | (lambda* (#:key inputs #:allow-other-keys) |
| 40221 | (substitute* '("src/trio/_core/_thread_cache.py" |
| 40222 | "src/trio/_tests/test_threads.py") |
| 40223 | (("ctypes.util.find_library\\(\"pthread\"\\)") |
| 40224 | (simple-format #f "~s" |
| 40225 | (search-input-file inputs "lib/libpthread.so.0")))))) |
| 40226 | (add-before 'check 'set-env |
| 40227 | (lambda _ |
| 40228 | ;; Tests require a writable home. |
| 40229 | (setenv "HOME" "/tmp")))))) |
| 40230 | (native-inputs |
| 40231 | (append |
| 40232 | (if (supported-package? python-pyopenssl) |
| 40233 | (list python-pyopenssl) |
| 40234 | '()) |
| 40235 | (if (supported-package? python-trustme) |
| 40236 | (list python-trustme) |
| 40237 | '()) |
| 40238 | (list python-async-generator) |
| 40239 | (if (supported-package? python-cryptography) |
| 40240 | (list python-cryptography) |
| 40241 | '()) |
| 40242 | (list python-pytest |
| 40243 | python-setuptools))) |
| 40244 | (propagated-inputs |
| 40245 | (list python-attrs |
| 40246 | python-idna |
| 40247 | python-outcome |
| 40248 | python-sniffio |
| 40249 | python-sortedcontainers)) |
| 40250 | (home-page "https://github.com/python-trio/trio") |
| 40251 | ;; (home-page "https://trio.readthedocs.io") |
| 40252 | (synopsis "Friendly Python library for async concurrency and I/O") |
| 40253 | (description |
| 40254 | "Trio strives to be a production-quality, async/await-native I/O library |
| 40255 | for Python. Like all async libraries, its main purpose is to help you write |
| 40256 | programs that do multiple things at the same time with parallelized I/O.") |
| 40257 | ;; Either license applies. |
| 40258 | (license (list license:expat license:asl2.0)))) |
| 40259 | |
| 40260 | (define-public python-trio-typing |
| 40261 | (package |
| 40262 | (name "python-trio-typing") |
| 40263 | (version "0.10.0") |
| 40264 | (source |
| 40265 | (origin |
| 40266 | (method git-fetch) |
| 40267 | (uri (git-reference |
| 40268 | (url "https://github.com/python-trio/trio-typing") |
| 40269 | (commit (string-append "v" version)))) |
| 40270 | (file-name (git-file-name name version)) |
| 40271 | (sha256 |
| 40272 | (base32 "127zpngp6r87kapvx5bwcl5awhyrsykwmvnxrb67qv7yz1s4z278")))) |
| 40273 | (build-system pyproject-build-system) |
| 40274 | (arguments |
| 40275 | (list #:tests? #f )) ;no proper tests |
| 40276 | (native-inputs |
| 40277 | (list python-setuptools)) |
| 40278 | (propagated-inputs |
| 40279 | (list python-async-generator |
| 40280 | python-importlib-metadata |
| 40281 | python-mypy-extensions |
| 40282 | python-packaging |
| 40283 | python-trio |
| 40284 | python-typing-extensions)) |
| 40285 | (home-page "https://github.com/python-trio/trio-typing") |
| 40286 | (synopsis "Static type checking support for Trio and related projects") |
| 40287 | (description |
| 40288 | "This package provides: |
| 40289 | |
| 40290 | @itemize |
| 40291 | @item PEP 561 typing stubs packages for the Trio project packages: |
| 40292 | |
| 40293 | @itemize |
| 40294 | @item trio (@code{trio-stubs}) |
| 40295 | @item outcome (@code{outcome-stubs}) |
| 40296 | @item async_generator (@code{async_generator-stubs}) |
| 40297 | @end itemize |
| 40298 | |
| 40299 | @item A package @code{trio_typing} containing types that Trio programs often |
| 40300 | want to refer to (@code{AsyncGenerator[Y, S]} and @code{TaskStatus[T])} and |
| 40301 | a mypy plugin that smooths over some limitations in the basic type hints. |
| 40302 | @end itemize") |
| 40303 | ;; Either license applies. |
| 40304 | (license (list license:expat license:asl2.0)))) |
| 40305 | |
| 40306 | (define-public python-trubar |
| 40307 | (package |
| 40308 | (name "python-trubar") |
| 40309 | (version "0.3.4") |
| 40310 | (source |
| 40311 | (origin |
| 40312 | (method url-fetch) |
| 40313 | (uri (pypi-uri "trubar" version)) |
| 40314 | (sha256 |
| 40315 | (base32 "149l5wid1b41gmfzsrhapcigcbcsflviz8p1pfa937443fxw1dkd")))) |
| 40316 | (build-system pyproject-build-system) |
| 40317 | (arguments |
| 40318 | (list |
| 40319 | #:test-flags |
| 40320 | #~(list "-k" (string-join |
| 40321 | ;; AttributeError: module 'libcst' has no attribute |
| 40322 | ;; 'FlattenSentinel'. Did you mean: 'MaybeSentinel'? |
| 40323 | (list "not test_import_from_future" |
| 40324 | "test_inport_after_docstring" |
| 40325 | ;; AssertionError: Items in the second set but not |
| 40326 | ;; the first |
| 40327 | "test_walk_files") |
| 40328 | " and not ")))) |
| 40329 | (native-inputs |
| 40330 | (list python-pytest |
| 40331 | python-setuptools |
| 40332 | python-wheel)) |
| 40333 | (propagated-inputs |
| 40334 | (list python-libcst |
| 40335 | python-pyyaml)) |
| 40336 | (home-page "https://github.com/janezd/trubar") |
| 40337 | (synopsis "Utility for translation of Python sources") |
| 40338 | (description |
| 40339 | "This package provides a tool for translation and localization of Python |
| 40340 | programs via modification of source files. Trubar supports f-strings and does |
| 40341 | not require any changes to the original source code, such as marking strings |
| 40342 | for translation.") |
| 40343 | (license license:expat))) |
| 40344 | |
| 40345 | (define-public python-twine |
| 40346 | (package |
| 40347 | (name "python-twine") |
| 40348 | (version "6.2.0") |
| 40349 | (source |
| 40350 | (origin |
| 40351 | (method url-fetch) |
| 40352 | (uri (pypi-uri "twine" version)) |
| 40353 | (sha256 |
| 40354 | (base32 "1kvm9cdvbnh232wafww1w5scaic9kkrwhlff1mvmk68cswphvvg5")))) |
| 40355 | (build-system pyproject-build-system) |
| 40356 | (arguments |
| 40357 | (list |
| 40358 | ;; tests: 228 passed, 1 deselected |
| 40359 | #:test-flags |
| 40360 | ;; Assertion is not equal for one tests. |
| 40361 | #~(list "--deselect=tests/test_check.py::test_fails_rst_syntax_error"))) |
| 40362 | (native-inputs |
| 40363 | (list python-pretend |
| 40364 | python-pytest |
| 40365 | python-pytest-socket |
| 40366 | python-setuptools |
| 40367 | python-setuptools-scm)) |
| 40368 | (propagated-inputs |
| 40369 | (list python-id |
| 40370 | python-keyring |
| 40371 | python-packaging |
| 40372 | python-readme-renderer |
| 40373 | python-requests |
| 40374 | python-requests-toolbelt |
| 40375 | python-rfc3986 |
| 40376 | python-rich |
| 40377 | python-urllib3)) |
| 40378 | (home-page "https://github.com/pypa/twine") |
| 40379 | (synopsis "Collection of utilities for interacting with PyPI") |
| 40380 | (description |
| 40381 | "@code{twine} currently supports registering projects and uploading |
| 40382 | distributions. It authenticates the user over HTTPS, allows them to pre-sign |
| 40383 | their files and supports any packaging format (including wheels).") |
| 40384 | (license license:asl2.0))) |
| 40385 | |
| 40386 | (define-public python-twisted |
| 40387 | (package |
| 40388 | (name "python-twisted") |
| 40389 | (version "25.5.0") |
| 40390 | (source |
| 40391 | (origin |
| 40392 | (method git-fetch) |
| 40393 | (uri (git-reference |
| 40394 | (url "https://github.com/twisted/twisted") |
| 40395 | (commit (string-append "twisted-" version)))) |
| 40396 | (file-name (git-file-name name version)) |
| 40397 | (sha256 |
| 40398 | (base32 "07v2ssr2s6zcj2r6nvp28x7i3awjb6k8gz0mi4wg606gw4kdgxsk")))) |
| 40399 | (build-system pyproject-build-system) |
| 40400 | (arguments |
| 40401 | (list |
| 40402 | ;; tests: skips=638, successes=9759 |
| 40403 | #:test-backend #~'custom |
| 40404 | #:test-flags |
| 40405 | #~(list "-m" "twisted.trial" |
| 40406 | "--temp-directory=/tmp/_trial_temp" |
| 40407 | (string-append "-j" (number->string (min 8 (parallel-job-count)))) |
| 40408 | "twisted") |
| 40409 | #:phases |
| 40410 | #~(modify-phases %standard-phases |
| 40411 | (add-after 'unpack 'disable-broken-tests |
| 40412 | (lambda _ |
| 40413 | (for-each delete-file |
| 40414 | (list |
| 40415 | ;; No idea why they fail |
| 40416 | "src/twisted/test/test_log.py" |
| 40417 | ;; Network tests |
| 40418 | "src/twisted/conch/test/test_cftp.py" |
| 40419 | "src/twisted/internet/test/test_endpoints.py" |
| 40420 | "src/twisted/protocols/test/test_tls.py" |
| 40421 | "src/twisted/test/test_sslverify.py" |
| 40422 | "src/twisted/web/test/test_agent.py" |
| 40423 | "src/twisted/web/test/test_tap.py" |
| 40424 | ;; These need a git executable |
| 40425 | "src/twisted/python/test/test_release.py" |
| 40426 | ;; These leave behind a socket file, which breaks the |
| 40427 | ;; build with "...has an unsupported type" |
| 40428 | "src/twisted/internet/test/test_unix.py" |
| 40429 | "src/twisted/test/test_unix.py" |
| 40430 | ;; These complain about missing test modules. |
| 40431 | "src/twisted/test/test_failure.py" |
| 40432 | "src/twisted/web/test/test_http2.py" |
| 40433 | "src/twisted/conch/test/test_forwarding.py"))))))) |
| 40434 | (propagated-inputs |
| 40435 | (list python-attrs |
| 40436 | python-automat |
| 40437 | python-bcrypt |
| 40438 | python-constantly |
| 40439 | python-hyperlink |
| 40440 | python-incremental |
| 40441 | python-typing-extensions |
| 40442 | python-zope-interface |
| 40443 | ;; [conch] |
| 40444 | (list python "tk") |
| 40445 | python-appdirs |
| 40446 | python-bcrypt |
| 40447 | python-cryptography |
| 40448 | ;; [http2] |
| 40449 | python-h2 |
| 40450 | python-priority |
| 40451 | ;; [tls] |
| 40452 | python-idna |
| 40453 | python-pyopenssl |
| 40454 | python-service-identity |
| 40455 | ;; [serial] |
| 40456 | python-pyserial)) |
| 40457 | (native-inputs |
| 40458 | (list glibc-utf8-locales ;for OpenTestLogTests.test_utf8 |
| 40459 | python-hatch-fancy-pypi-readme |
| 40460 | python-hatchling |
| 40461 | python-httpx |
| 40462 | python-hypothesis |
| 40463 | python-incremental |
| 40464 | python-pyhamcrest |
| 40465 | python-pytest)) |
| 40466 | (home-page "https://twistedmatrix.com/") |
| 40467 | (synopsis "Asynchronous networking framework written in Python") |
| 40468 | (description |
| 40469 | "Twisted is an extensible framework for Python programming, with special |
| 40470 | focus on event-based network programming and multiprotocol integration.") |
| 40471 | (license license:expat))) |
| 40472 | |
| 40473 | (define-public python-txredisapi |
| 40474 | (let ((commit "d2259a379695284f4a84d7821ed47e1db409501d") |
| 40475 | ;; The latest version is 1.4.11, but it contains a bug: |
| 40476 | ;; https://github.com/IlyaSkriblovsky/txredisapi/pull/157. That bug is |
| 40477 | ;; patched in commit d2259a3. |
| 40478 | (revision "0")) |
| 40479 | (package |
| 40480 | (name "python-txredisapi") |
| 40481 | (version (git-version "1.4.11" revision commit)) |
| 40482 | (source |
| 40483 | (origin |
| 40484 | (method git-fetch) |
| 40485 | ;; The source distribution on PyPi is missing test files: |
| 40486 | ;; https://github.com/IlyaSkriblovsky/txredisapi/pull/155 |
| 40487 | (uri (git-reference |
| 40488 | (url "https://github.com/IlyaSkriblovsky/txredisapi") |
| 40489 | (commit commit))) |
| 40490 | (file-name (git-file-name name version)) |
| 40491 | (sha256 |
| 40492 | (base32 "0v9r01cn5zb0jjb1h394y667345yp17485bl5d4k80019b34dm98")))) |
| 40493 | (build-system pyproject-build-system) |
| 40494 | (arguments |
| 40495 | (list #:test-backend #~'custom |
| 40496 | #:test-flags #~(list "-m" "twisted.trial" "tests") |
| 40497 | #:phases |
| 40498 | #~(modify-phases %standard-phases |
| 40499 | ;; The tests require a running Redis server. |
| 40500 | (add-before 'check 'start-redis |
| 40501 | (lambda _ |
| 40502 | (invoke "redis-server" "--daemonize" "yes")))))) |
| 40503 | (propagated-inputs (list python-twisted)) |
| 40504 | (native-inputs (list python-mock python-setuptools redis)) |
| 40505 | (home-page "https://github.com/IlyaSkriblovsky/txredisapi") |
| 40506 | (synopsis "Non-blocking Redis client for Python") |
| 40507 | (description "txredisapi is a non-blocking client driver for the Redis |
| 40508 | database, written in Python. It uses Twisted for asynchronous communication |
| 40509 | with Redis.") |
| 40510 | (license license:asl2.0)))) |
| 40511 | |
| 40512 | (define-public python-typeapi |
| 40513 | (package |
| 40514 | (name "python-typeapi") |
| 40515 | (version "2.2.4") |
| 40516 | (source |
| 40517 | (origin |
| 40518 | (method url-fetch) |
| 40519 | (uri (pypi-uri "typeapi" version)) |
| 40520 | (sha256 |
| 40521 | (base32 "0yzx10cn33gxqvs33vwdf0f959hbkir4yzjp42imf28ca9khga6s")))) |
| 40522 | (build-system pyproject-build-system) |
| 40523 | (arguments |
| 40524 | (list |
| 40525 | #:tests? #false)) ;there are none |
| 40526 | (propagated-inputs (list python-typing-extensions)) |
| 40527 | (native-inputs (list python-hatchling)) |
| 40528 | (home-page "https://pypi.org/project/typeapi/") |
| 40529 | (synopsis "Type hints") |
| 40530 | (description "The typeapi package provides an object-oriented interface |
| 40531 | for introspecting PEP484 type hints at runtime, including forward references |
| 40532 | that make use of the more recent PEP585 and PEP604 type hint features in |
| 40533 | Python versions that don't natively support them.") |
| 40534 | (license license:expat))) |
| 40535 | |
| 40536 | (define-public python-typer |
| 40537 | (package |
| 40538 | (name "python-typer") |
| 40539 | ;; XXX: starting from 0.26.0, Typer vendors Click. |
| 40540 | (version "0.26.4") |
| 40541 | (source |
| 40542 | (origin |
| 40543 | (method git-fetch) |
| 40544 | (uri (git-reference |
| 40545 | (url "https://github.com/fastapi/typer") |
| 40546 | (commit version))) |
| 40547 | (file-name (git-file-name name version)) |
| 40548 | (sha256 |
| 40549 | (base32 "0cmk9wsnml1yykzs5sxfdww3bchh9f2f63cj6nirw39zilp1jjw0")))) |
| 40550 | (build-system pyproject-build-system) |
| 40551 | (arguments |
| 40552 | (list |
| 40553 | #:phases |
| 40554 | #~(modify-phases %standard-phases |
| 40555 | (add-before 'check 'pre-check |
| 40556 | (lambda _ |
| 40557 | (setenv "HOME" "/tmp")))) |
| 40558 | #:test-flags |
| 40559 | #~(list "-k" "not test_cli" |
| 40560 | "--numprocesses" (number->string (min 8 (parallel-job-count)))))) |
| 40561 | (native-inputs |
| 40562 | (list python-coverage ;this is required in tests |
| 40563 | python-pdm-backend |
| 40564 | python-pytest |
| 40565 | python-pytest-xdist)) |
| 40566 | (propagated-inputs |
| 40567 | (list python-annotated-doc |
| 40568 | python-rich |
| 40569 | python-shellingham)) |
| 40570 | (home-page "https://github.com/fastapi/typer") |
| 40571 | (synopsis "Typer builds CLI based on Python type hints") |
| 40572 | (description |
| 40573 | "Typer is a library for building CLI applications. It's based on Python |
| 40574 | 3.6+ type hints.") |
| 40575 | (license license:expat))) |
| 40576 | |
| 40577 | ;; Starting from 0.26.0, Typer vendors its own fork of Click (typer._click) and no longer |
| 40578 | ;; recognises subclasses of the real click.Context as the injected CLI |
| 40579 | ;; context, breaking some packages at import time. Keep until all dependents migrated. |
| 40580 | (define-public python-typer-without-click |
| 40581 | (hidden-package |
| 40582 | (package |
| 40583 | (inherit python-typer) |
| 40584 | (version "0.25.1") |
| 40585 | (source |
| 40586 | (origin |
| 40587 | (method git-fetch) |
| 40588 | (uri (git-reference |
| 40589 | (url "https://github.com/fastapi/typer") |
| 40590 | (commit version))) |
| 40591 | (file-name (git-file-name "python-typer" version)) |
| 40592 | (sha256 |
| 40593 | (base32 "0z6k7qpd49wqvxl3q5jwq2kl0y3w8dxwxmp42qbkbvwixfqxg2qw")))) |
| 40594 | (propagated-inputs |
| 40595 | (list python-click |
| 40596 | python-typing-extensions |
| 40597 | python-annotated-doc |
| 40598 | python-rich |
| 40599 | python-shellingham)) |
| 40600 | (arguments |
| 40601 | (substitute-keyword-arguments arguments |
| 40602 | ((#:test-flags flags #~'()) |
| 40603 | ;; Ignore tests that fail due to Click error-message wording. |
| 40604 | ;; These happen because Click version is more recent than expected. |
| 40605 | #~(cons* |
| 40606 | (string-append "--deselect=tests/test_suggest_commands.py" |
| 40607 | "::test_typo_suggestion_disabled") |
| 40608 | (string-append "--ignore=tests/test_tutorial/test_commands/" |
| 40609 | "test_callback/test_tutorial001.py") |
| 40610 | (string-append "--ignore-glob=tests/test_tutorial/" |
| 40611 | "test_parameter_types/test_bool/test_tutorial0*.py") |
| 40612 | #$flags))))))) |
| 40613 | |
| 40614 | (define-public python-types-aiofiles |
| 40615 | (package |
| 40616 | (name "python-types-aiofiles") |
| 40617 | (version "25.1.0.20251011") |
| 40618 | (source |
| 40619 | (origin |
| 40620 | (method url-fetch) |
| 40621 | (uri (pypi-uri "types_aiofiles" version)) |
| 40622 | (sha256 |
| 40623 | (base32 "1zyk53h1017s1pc094w909miwvjsq3yhxlgr2l6d8g6bc2r8laqw")))) |
| 40624 | (build-system pyproject-build-system) |
| 40625 | (arguments (list #:tests? #f)) ;no tests in PyPI archive |
| 40626 | (native-inputs (list python-setuptools)) |
| 40627 | (home-page "https://github.com/python/typeshed") |
| 40628 | (synopsis "Typing stubs for python-aiofiles") |
| 40629 | (description "This package providis typing stubs for python-aiofiles.") |
| 40630 | (license license:asl2.0))) |
| 40631 | |
| 40632 | (define-public python-types-colorama |
| 40633 | (package |
| 40634 | (name "python-types-colorama") |
| 40635 | (version "0.4.15.20250801") |
| 40636 | (source |
| 40637 | (origin |
| 40638 | (method url-fetch) |
| 40639 | (uri (pypi-uri "types_colorama" version)) |
| 40640 | (sha256 |
| 40641 | (base32 "1xapqdq6450ngzp18nvvkwbs68nnxksk1wyk6wid2qw9sq9msmh2")))) |
| 40642 | (build-system pyproject-build-system) |
| 40643 | (arguments (list #:tests? #f)) ;no tests in PyPI archive |
| 40644 | (native-inputs |
| 40645 | (list python-setuptools)) |
| 40646 | (home-page "https://github.com/python/typeshed") |
| 40647 | (synopsis "Typing stubs for colorama") |
| 40648 | (description "This package provides typing stubs for colorama.") |
| 40649 | (license license:asl2.0))) |
| 40650 | |
| 40651 | (define-public python-types-dataclasses |
| 40652 | (package |
| 40653 | (name "python-types-dataclasses") |
| 40654 | (version "0.6.6") |
| 40655 | (source |
| 40656 | (origin |
| 40657 | (method url-fetch) |
| 40658 | (uri (pypi-uri "types-dataclasses" version)) |
| 40659 | (sha256 |
| 40660 | (base32 "1fgp96m4kfxrwy6rdv3p24jzh6hf68702sfdfhcmm3aniv7jynjb")))) |
| 40661 | (build-system pyproject-build-system) |
| 40662 | (arguments (list #:tests? #f)) ;no tests |
| 40663 | (native-inputs (list python-setuptools)) |
| 40664 | (home-page "https://github.com/python/typeshed") |
| 40665 | (synopsis "Typing stubs for dataclasses") |
| 40666 | (description |
| 40667 | "This package provides a collection of library stubs for Python, with |
| 40668 | static types.") |
| 40669 | (license license:asl2.0))) |
| 40670 | |
| 40671 | (define-public python-types-dateutil |
| 40672 | (package |
| 40673 | (name "python-types-dateutil") |
| 40674 | (version "2.9.0.20240316") |
| 40675 | (source |
| 40676 | (origin |
| 40677 | (method url-fetch) |
| 40678 | (uri (pypi-uri "types-python-dateutil" version)) |
| 40679 | (sha256 |
| 40680 | (base32 "00h2xi8p6ygdv9nhgwdyx86ky9m9dpdqgmsdji05x4461cj2wbsx")))) |
| 40681 | (build-system pyproject-build-system) |
| 40682 | (arguments (list #:tests? #f)) ; no tests |
| 40683 | (native-inputs |
| 40684 | (list python-pytest python-setuptools python-wheel)) |
| 40685 | (home-page "https://github.com/python/typeshed") |
| 40686 | (synopsis "Typing stubs for python-dateutil") |
| 40687 | (description |
| 40688 | "This is a PEP 561 type stub package for the @code{python-dateutil} |
| 40689 | package.") |
| 40690 | (license license:asl2.0))) |
| 40691 | |
| 40692 | (define-public python-types-docutils |
| 40693 | (package |
| 40694 | (name "python-types-docutils") |
| 40695 | (version "0.22.2.20251006") |
| 40696 | (source |
| 40697 | (origin |
| 40698 | (method url-fetch) |
| 40699 | (uri (pypi-uri "types_docutils" version)) |
| 40700 | (sha256 |
| 40701 | (base32 "1cp3p4bsaa646fa3kpjwjwsqbn6vz77pn57913lkknkf21ch8v63")))) |
| 40702 | (build-system pyproject-build-system) |
| 40703 | (arguments (list #:tests? #f)) ;no tests |
| 40704 | (native-inputs (list python-setuptools)) |
| 40705 | (home-page "https://github.com/python/typeshed") |
| 40706 | (synopsis "Typing stubs for docutils") |
| 40707 | (description "This package provides a collection of library stubs for |
| 40708 | Python, with static types.") |
| 40709 | (license license:asl2.0))) |
| 40710 | |
| 40711 | (define-public python-types-freezegun |
| 40712 | (package |
| 40713 | (name "python-types-freezegun") |
| 40714 | (version "1.1.8") |
| 40715 | (source |
| 40716 | (origin |
| 40717 | (method url-fetch) |
| 40718 | (uri (pypi-uri "types-freezegun" version)) |
| 40719 | (sha256 |
| 40720 | (base32 "08g926s8343zwq140zcfwly3qfgmahm7lp0vgb3ics549b2hifzl")))) |
| 40721 | (build-system pyproject-build-system) |
| 40722 | (arguments |
| 40723 | ;; XXX: No tests in PyPi source, but it's also unclear how to get the |
| 40724 | ;; right files from source, so ignore them for now. |
| 40725 | (list #:tests? #f)) |
| 40726 | (native-inputs (list python-setuptools python-wheel)) |
| 40727 | (home-page "https://github.com/python/typeshed") |
| 40728 | (synopsis "Typing stubs for @code{freezegun}") |
| 40729 | (description "This package contains typing stubs for for @code{freezegun}, a |
| 40730 | very small subset the Python stubs contained in the complete @code{typeshed} |
| 40731 | collection.") |
| 40732 | (license license:asl2.0))) |
| 40733 | |
| 40734 | (define-public python-types-orjson |
| 40735 | (package |
| 40736 | (name "python-types-orjson") |
| 40737 | (version "3.6.2") |
| 40738 | (source |
| 40739 | (origin |
| 40740 | (method url-fetch) |
| 40741 | (uri (pypi-uri "types-orjson" version)) |
| 40742 | (sha256 |
| 40743 | (base32 "0f66lf2qrl9d4vad42db3dmnzv89h4rr05r5zxx5qcl6kb3zr6ng")))) |
| 40744 | (build-system pyproject-build-system) |
| 40745 | (arguments (list #:tests? #f)) ;no tests |
| 40746 | (native-inputs (list python-setuptools)) |
| 40747 | (home-page "https://github.com/python/typeshed") |
| 40748 | (synopsis "Typing stubs for orjson") |
| 40749 | (description "This is a PEP 561 type stub package for the @code{orjson} |
| 40750 | package. It can be used by type-checking tools like mypy, PyCharm, pytype |
| 40751 | etc. to check code that uses @code{orjson}.") |
| 40752 | (license license:asl2.0))) |
| 40753 | |
| 40754 | (define-public python-types-protobuf |
| 40755 | (package |
| 40756 | (name "python-types-protobuf") |
| 40757 | (version "3.20.1") |
| 40758 | (source (origin |
| 40759 | (method url-fetch) |
| 40760 | (uri (pypi-uri "types-protobuf" version)) |
| 40761 | (sha256 |
| 40762 | (base32 |
| 40763 | "000f8n6d4ilihiaf590k73rx3327jh8ima5q5dpxlwz3frj45qrn")))) |
| 40764 | (build-system pyproject-build-system) |
| 40765 | (arguments |
| 40766 | ;; XXX: No tests in PyPi source, but it's also unclear how to get the |
| 40767 | ;; right files from source, so ignore them for now. |
| 40768 | (list #:tests? #f)) |
| 40769 | (native-inputs (list python-setuptools python-wheel)) |
| 40770 | (home-page "https://github.com/python/typeshed") |
| 40771 | (synopsis "Typing stubs for @code{protobuf}") |
| 40772 | (description "This package contains typing stubs for @code{protobuf}, a |
| 40773 | very small subset the Python stubs contained in the complete @code{typeshed} |
| 40774 | collection.") |
| 40775 | (license license:asl2.0))) |
| 40776 | |
| 40777 | (define-public python-types-pyside6 |
| 40778 | (package |
| 40779 | (name "python-types-pyside6") |
| 40780 | ;; Project does not tag PyPI releases in Git, PyPI does not provide source |
| 40781 | ;; variant. |
| 40782 | (properties '((commit . "3a97b71975bda6d96cfa7b37ac6bf50ea100c1a2") |
| 40783 | (revision . "0"))) |
| 40784 | (version (git-version "6.10.1.1" |
| 40785 | (assoc-ref properties 'revision) |
| 40786 | (assoc-ref properties 'commit))) |
| 40787 | (source |
| 40788 | (origin |
| 40789 | (method git-fetch) |
| 40790 | (uri (git-reference |
| 40791 | (url "https://github.com/LumaPictures/cg-stubs") |
| 40792 | (commit (assoc-ref properties 'commit)))) |
| 40793 | (file-name (git-file-name name version)) |
| 40794 | (sha256 |
| 40795 | (base32 "07ydqy33fapmmpyq6d90jax3k4vlbb3az1v77bjlgmg8x0jimh4k")))) |
| 40796 | (build-system pyproject-build-system) |
| 40797 | (arguments |
| 40798 | (list |
| 40799 | #:tests? #f ;XXX: all tests failed |
| 40800 | #:phases |
| 40801 | #~(modify-phases %standard-phases |
| 40802 | (add-after 'unpack 'select-pyside6 |
| 40803 | (lambda _ |
| 40804 | (chdir "pyside6")))))) |
| 40805 | (native-inputs |
| 40806 | (list python-hatchling)) |
| 40807 | (home-page "https://github.com/LumaPictures/cg-stubs") |
| 40808 | (synopsis "Accurate stubs for PySide6") |
| 40809 | (description |
| 40810 | "This package provides PySide6 stubs produced with @code{mypy}'s official |
| 40811 | stubgen tool to directly generate stubs, with a set of corrections applied.") |
| 40812 | ;; As a derived work from PySide2, the stubs are delivered under the LGPL |
| 40813 | ;; v2.1 . See file LICENSE for more details. |
| 40814 | ;; |
| 40815 | ;; MIT in pyproject.toml |
| 40816 | (license (list license:lgpl2.1+ |
| 40817 | license:expat)))) |
| 40818 | |
| 40819 | (define-public python-types-python-dateutil |
| 40820 | (package |
| 40821 | (name "python-types-python-dateutil") |
| 40822 | (version "2.9.0.20250708") |
| 40823 | (source |
| 40824 | (origin |
| 40825 | (method url-fetch) |
| 40826 | (uri (pypi-uri "types_python_dateutil" version)) |
| 40827 | (sha256 |
| 40828 | (base32 "1ay8sp8qshx2na2sa9sz9hg2hb7yrws9ymshqfb9cv1dmdfxgnyc")))) |
| 40829 | (build-system pyproject-build-system) |
| 40830 | (arguments (list #:tests? #f)) ;no tests in PyPI archive |
| 40831 | (native-inputs (list python-setuptools)) |
| 40832 | (home-page "https://github.com/python/typeshed") |
| 40833 | (synopsis "Typing stubs for python-dateutil") |
| 40834 | (description "This package providis typing stubs for python-dateutil.") |
| 40835 | (license license:asl2.0))) |
| 40836 | |
| 40837 | (define-public python-types-pytz |
| 40838 | (package |
| 40839 | (name "python-types-pytz") |
| 40840 | (version "2025.2.0.20250809") |
| 40841 | (source |
| 40842 | (origin |
| 40843 | (method url-fetch) |
| 40844 | (uri (pypi-uri "types_pytz" version)) |
| 40845 | (sha256 |
| 40846 | (base32 "1r91pvn1w9rb1395qw8w8k22s7w0wf2qfkl3z1qqiclvlbk34bi2")))) |
| 40847 | (build-system pyproject-build-system) |
| 40848 | (arguments |
| 40849 | (list #:tests? #f)) ;no tests provided |
| 40850 | (native-inputs (list python-setuptools)) |
| 40851 | (home-page "https://github.com/python/typeshed") |
| 40852 | (synopsis "Typing stubs for pytz") |
| 40853 | (description "This package contains typing stubs for @code{pytz}, a very |
| 40854 | small subset the Python stubs contained in the complete @code{typeshed} |
| 40855 | collection.") |
| 40856 | (license license:asl2.0))) |
| 40857 | |
| 40858 | (define-public python-types-pyyaml |
| 40859 | (package |
| 40860 | (name "python-types-pyyaml") |
| 40861 | (version "6.0.12.20250915") |
| 40862 | (source |
| 40863 | (origin |
| 40864 | (method url-fetch) |
| 40865 | (uri (pypi-uri "types_pyyaml" version)) |
| 40866 | (sha256 |
| 40867 | (base32 "1lyirqjacfmn6bv27b7w0z483yps6gfqfmhnyzkg00y352jm92qg")))) |
| 40868 | (build-system pyproject-build-system) |
| 40869 | (arguments (list #:tests? #f)) ;no tests in PyPI archive |
| 40870 | (native-inputs |
| 40871 | (list python-setuptools)) |
| 40872 | (home-page " https://github.com/python/typeshed") |
| 40873 | (synopsis "Typing stubs for PyYAML") |
| 40874 | (description "This package provides typing stubs for @code{PyYAML}.") |
| 40875 | (license license:asl2.0))) |
| 40876 | |
| 40877 | (define-public python-types-regex |
| 40878 | (package |
| 40879 | (name "python-types-regex") |
| 40880 | (version "2025.9.18.20250921") |
| 40881 | (source |
| 40882 | (origin |
| 40883 | (method url-fetch) |
| 40884 | (uri (pypi-uri "types_regex" version)) |
| 40885 | (sha256 |
| 40886 | (base32 "0gqc8b9d38pdm1l6nryi9rq9vmpis575hqnxlvj904n3n4hhqw71")))) |
| 40887 | (build-system pyproject-build-system) |
| 40888 | (arguments (list #:tests? #f)) ;no tests in PyPI archive |
| 40889 | (native-inputs (list python-setuptools)) |
| 40890 | (home-page "https://github.com/python/typeshed") |
| 40891 | (synopsis "Typing stubs for regex") |
| 40892 | (description "This package provides typing stubs for regex.") |
| 40893 | (license license:asl2.0))) |
| 40894 | |
| 40895 | (define-public python-types-requests |
| 40896 | (package |
| 40897 | (name "python-types-requests") |
| 40898 | (version "2.32.4.20250611") |
| 40899 | (source |
| 40900 | (origin |
| 40901 | (method url-fetch) |
| 40902 | (uri (pypi-uri "types_requests" version)) |
| 40903 | (sha256 |
| 40904 | (base32 "09pqdfa66d3p5dig26chrd6rpxs5wamxcm0yyl5q69b4xmvqf73l")))) |
| 40905 | (build-system pyproject-build-system) |
| 40906 | (arguments (list #:tests? #f)) ;no tests in PyPI archive |
| 40907 | (native-inputs |
| 40908 | (list python-setuptools)) |
| 40909 | (propagated-inputs |
| 40910 | (list python-urllib3)) |
| 40911 | (home-page "https://github.com/python/typeshed") |
| 40912 | (synopsis "Typing stubs for requests") |
| 40913 | (description "This package provides typing stubs for requests.") |
| 40914 | (license license:asl2.0))) |
| 40915 | |
| 40916 | (define-public python-types-setuptools |
| 40917 | (package |
| 40918 | (name "python-types-setuptools") |
| 40919 | (version "80.9.0.20250529") |
| 40920 | (source |
| 40921 | (origin |
| 40922 | (method url-fetch) |
| 40923 | (uri (pypi-uri "types_setuptools" version)) |
| 40924 | (sha256 |
| 40925 | (base32 "149w6lg8n56k50n08jx450ni9frs2hzbv729sv48c8ds1jx8iq3r")))) |
| 40926 | (build-system pyproject-build-system) |
| 40927 | (arguments (list #:tests? #f)) ;no tests in PyPI archive |
| 40928 | (native-inputs |
| 40929 | (list python-setuptools)) |
| 40930 | (home-page "https://github.com/python/typeshed") |
| 40931 | (synopsis "Typing stubs for setuptools") |
| 40932 | (description "This package provides typing stubs for setuptools.") |
| 40933 | (license license:asl2.0))) |
| 40934 | |
| 40935 | (define-public python-types-simplejson |
| 40936 | (package |
| 40937 | (name "python-types-simplejson") |
| 40938 | (version "3.19.0.20241221") |
| 40939 | (source |
| 40940 | (origin |
| 40941 | (method url-fetch) |
| 40942 | (uri (pypi-uri "types_simplejson" version)) |
| 40943 | (sha256 |
| 40944 | (base32 "0w7wvr84d7bj27hc2bsyh69s9d84zpkdhsibbmsibba91zdzjjhi")))) |
| 40945 | (build-system pyproject-build-system) |
| 40946 | (arguments |
| 40947 | (list |
| 40948 | #:tests? #f)) ; no tests in PyPI archive, no release or tags on GitHub |
| 40949 | (native-inputs |
| 40950 | (list python-setuptools python-wheel)) |
| 40951 | (home-page "https://github.com/python/typeshed") |
| 40952 | (synopsis "Typing stubs for simplejson") |
| 40953 | (description "Typing stubs for simplejson.") |
| 40954 | (license license:asl2.0))) |
| 40955 | |
| 40956 | (define-public python-types-toml |
| 40957 | (package |
| 40958 | (name "python-types-toml") |
| 40959 | (version "0.10.8.20240310") |
| 40960 | (source |
| 40961 | (origin |
| 40962 | (method url-fetch) |
| 40963 | (uri (pypi-uri "types-toml" version)) |
| 40964 | (sha256 |
| 40965 | (base32 "0c83hfw4aqy01vzlh6r84mz6b2b6n98chfdjp2k3c94p089m0h9x")))) |
| 40966 | (build-system pyproject-build-system) |
| 40967 | (arguments |
| 40968 | (list #:tests? #f)) ;no tests provided |
| 40969 | (native-inputs (list python-setuptools)) |
| 40970 | (home-page "https://github.com/python/typeshed") |
| 40971 | (synopsis "Typing stubs for TOML") |
| 40972 | (description |
| 40973 | "This package contains typing stubs for TOML, a very small subset the |
| 40974 | Python stubs contained in the complete @code{typeshed} collection.") |
| 40975 | (license license:asl2.0))) |
| 40976 | |
| 40977 | (define-public python-types-tqdm |
| 40978 | (package |
| 40979 | (name "python-types-tqdm") |
| 40980 | (version "4.67.0.20250809") |
| 40981 | (source |
| 40982 | (origin |
| 40983 | (method url-fetch) |
| 40984 | (uri (pypi-uri "types_tqdm" version)) |
| 40985 | (sha256 |
| 40986 | (base32 "006md2hnsq79p7d5z3kiaapvl9wwa4dz3yb39jf0n22n2awpmgq2")))) |
| 40987 | (build-system pyproject-build-system) |
| 40988 | (arguments (list #:tests? #f)) ;no tests in PyPI archive |
| 40989 | (native-inputs (list python-setuptools)) |
| 40990 | (propagated-inputs (list python-types-requests)) |
| 40991 | (home-page "https://github.com/python/typeshed") |
| 40992 | (synopsis "Typing stubs for python-tqdm") |
| 40993 | (description "This package providis typing stubs for python-tqdm.") |
| 40994 | (license license:asl2.0))) |
| 40995 | |
| 40996 | (define-public python-types-ujson |
| 40997 | (package |
| 40998 | (name "python-types-ujson") |
| 40999 | (version "5.10.0.20250822") |
| 41000 | (source |
| 41001 | (origin |
| 41002 | (method url-fetch) |
| 41003 | (uri (pypi-uri "types_ujson" version)) |
| 41004 | (sha256 |
| 41005 | (base32 "01m0gdcy6plrjxxih96ra86wd2zhn4skzw7k7hvk51gpw5c5ay8a")))) |
| 41006 | (build-system pyproject-build-system) |
| 41007 | (arguments |
| 41008 | (list #:tests? #f)) ;no tests provided |
| 41009 | (native-inputs (list python-setuptools)) |
| 41010 | (home-page "https://github.com/python/typeshed") |
| 41011 | (synopsis "Typing stubs for ujson") |
| 41012 | (description |
| 41013 | "This is a PEP 561 type stub package for the ujson package. It can be |
| 41014 | used by type-checking tools like mypy, PyCharm, pytype etc. to check code that |
| 41015 | uses ujson.") |
| 41016 | (license license:asl2.0))) |
| 41017 | |
| 41018 | (define-public python-types-urllib3 |
| 41019 | (package |
| 41020 | (name "python-types-urllib3") |
| 41021 | (version "1.26.25.14") |
| 41022 | (source |
| 41023 | (origin |
| 41024 | (method url-fetch) |
| 41025 | (uri (pypi-uri "types-urllib3" version)) |
| 41026 | (sha256 |
| 41027 | (base32 "13ys7c7k9pg3lb11qvdgs9xq8j8bvcpjpg61j8dqq6wmgibpz6r2")))) |
| 41028 | (build-system pyproject-build-system) |
| 41029 | (arguments (list #:tests? #f)) ;no tests in PyPI archive |
| 41030 | (native-inputs |
| 41031 | (list python-setuptools)) |
| 41032 | (home-page "https://github.com/python/typeshed") |
| 41033 | (synopsis "Typing stubs for urllib3") |
| 41034 | (description "This package provides typing stubs for urllib3.") |
| 41035 | (license license:asl2.0))) |
| 41036 | |
| 41037 | (define-public python-typeshed-client |
| 41038 | (package |
| 41039 | (name "python-typeshed-client") |
| 41040 | (version "2.8.2") |
| 41041 | (source |
| 41042 | (origin |
| 41043 | (method git-fetch) |
| 41044 | (uri (git-reference |
| 41045 | (url "https://github.com/JelleZijlstra/typeshed_client") |
| 41046 | (commit (string-append "v" version)))) |
| 41047 | (file-name (git-file-name name version)) |
| 41048 | (sha256 |
| 41049 | (base32 "0i74ygf49184ab1ipfdzf706wnzs3id15rkysqarzcngdydrcszs")))) |
| 41050 | (build-system pyproject-build-system) |
| 41051 | (arguments |
| 41052 | (list #:test-backend #~'custom |
| 41053 | #:test-flags #~(list "tests/test.py"))) |
| 41054 | (native-inputs |
| 41055 | (list python-setuptools)) |
| 41056 | (propagated-inputs |
| 41057 | (list python-importlib-resources |
| 41058 | python-typing-extensions)) |
| 41059 | (home-page "https://github.com/JelleZijlstra/typeshed_client") |
| 41060 | (synopsis "Library for accessing stubs in typeshed") |
| 41061 | (description |
| 41062 | "This package provides a library for accessing stubs in typeshed.") |
| 41063 | (license license:expat))) |
| 41064 | |
| 41065 | (define-public python-typing-inspect |
| 41066 | (package |
| 41067 | (name "python-typing-inspect") |
| 41068 | (version "0.9.0") |
| 41069 | (source |
| 41070 | (origin |
| 41071 | (method url-fetch) |
| 41072 | (uri (pypi-uri "typing_inspect" version)) |
| 41073 | (sha256 |
| 41074 | (base32 "0y0z8v4wr5bahlgzjd1il2z8vlfd2asiyb45wia6kvznyqpw8gxj")))) |
| 41075 | (build-system pyproject-build-system) |
| 41076 | (native-inputs |
| 41077 | (list python-pytest |
| 41078 | python-setuptools |
| 41079 | python-wheel)) |
| 41080 | (propagated-inputs |
| 41081 | (list python-mypy-extensions |
| 41082 | python-typing-extensions)) |
| 41083 | (home-page "https://github.com/ilevkivskyi/typing_inspect") |
| 41084 | (synopsis "API for inspection of types in the Python @code{typing} module") |
| 41085 | (description |
| 41086 | "The @code{typing_inspect} module defines experimental API for runtime |
| 41087 | inspection of types defined in the Python standard typing module.") |
| 41088 | (license license:expat))) |
| 41089 | |
| 41090 | (define-public python-typing-inspection |
| 41091 | (package |
| 41092 | (name "python-typing-inspection") |
| 41093 | (version "0.4.2") |
| 41094 | (source |
| 41095 | (origin |
| 41096 | (method git-fetch) |
| 41097 | (uri (git-reference |
| 41098 | (url "https://github.com/pydantic/typing-inspection") |
| 41099 | (commit (string-append "v" version)))) |
| 41100 | (file-name (git-file-name name version)) |
| 41101 | (sha256 |
| 41102 | (base32 "1dqib4arxxaxwyapw6y4pcvm38l8djkhd8cfr149w42bw4xrqr38")))) |
| 41103 | (build-system pyproject-build-system) |
| 41104 | ;; tests: 89 passed, 3 skipped |
| 41105 | (native-inputs |
| 41106 | (list python-pytest |
| 41107 | python-hatchling)) |
| 41108 | (propagated-inputs |
| 41109 | (list python-typing-extensions)) |
| 41110 | (home-page "https://github.com/pydantic/typing-inspection") |
| 41111 | (synopsis "Runtime typing introspection tools") |
| 41112 | (description |
| 41113 | "@code{typing-inspection} provides tools to inspect type annotations at |
| 41114 | runtime.") |
| 41115 | (license license:expat))) |
| 41116 | |
| 41117 | (define-public python-typogrify |
| 41118 | (package |
| 41119 | (name "python-typogrify") |
| 41120 | (version "2.1.0") |
| 41121 | (source |
| 41122 | (origin |
| 41123 | (method url-fetch) |
| 41124 | (uri (pypi-uri "typogrify" version)) |
| 41125 | (sha256 |
| 41126 | (base32 "1vk17q04sax8rpdqll5zldnf6l3ixgknbnn9wimnwah3k1701aph")))) |
| 41127 | (build-system pyproject-build-system) |
| 41128 | (arguments |
| 41129 | (list |
| 41130 | #:test-flags |
| 41131 | #~(list "--doctest-modules" |
| 41132 | "typogrify/filters.py" |
| 41133 | "typogrify/packages/titlecase/tests.py"))) |
| 41134 | (native-inputs |
| 41135 | (list python-pytest |
| 41136 | python-hatchling)) |
| 41137 | (propagated-inputs |
| 41138 | (list python-smartypants)) |
| 41139 | (home-page "https://github.com/justinmayer/typogrify") |
| 41140 | (synopsis "Filters to transform text into typographically-improved HTML") |
| 41141 | (description |
| 41142 | "@code{typogrify} provides a set of custom filters that automatically |
| 41143 | apply various transformations to plain text in order to yield |
| 41144 | typographically-improved HTML. While often used in conjunction with Jinja and |
| 41145 | Django template systems, the filters can be used in any environment.") |
| 41146 | (license license:bsd-3))) |
| 41147 | |
| 41148 | (define-public python-ua-parser |
| 41149 | (package |
| 41150 | (name "python-ua-parser") |
| 41151 | (version "0.10.0") |
| 41152 | (source |
| 41153 | (origin |
| 41154 | (method url-fetch) |
| 41155 | (uri (pypi-uri "ua-parser" version)) |
| 41156 | (sha256 |
| 41157 | (base32 |
| 41158 | "0csh307zfz666kkk5idrw3crj1x8q8vsqgwqil0r1n1hs4p7ica7")))) |
| 41159 | (build-system pyproject-build-system) |
| 41160 | (arguments |
| 41161 | `(#:tests? #f)) ;no test suite in release |
| 41162 | (native-inputs |
| 41163 | (list python-pyyaml |
| 41164 | python-setuptools)) |
| 41165 | (home-page "https://github.com/ua-parser/uap-python") |
| 41166 | (synopsis "User agent parser") |
| 41167 | (description |
| 41168 | "@code{ua-parser} is a Python port of Browserscope's user agent parser.") |
| 41169 | (license license:asl2.0))) |
| 41170 | |
| 41171 | (define-public python-ubelt |
| 41172 | (package |
| 41173 | (name "python-ubelt") |
| 41174 | (version "1.3.6") |
| 41175 | (source |
| 41176 | (origin |
| 41177 | (method git-fetch) |
| 41178 | (uri (git-reference |
| 41179 | (url "https://github.com/Erotemic/ubelt") |
| 41180 | (commit (string-append "v" version)))) |
| 41181 | (file-name (git-file-name name version)) |
| 41182 | (sha256 |
| 41183 | (base32 "1v2kf9lbdfaf9nppdq45rfanz4bdd2v6x59iajcznwgc4jmhj2na")))) |
| 41184 | (build-system pyproject-build-system) |
| 41185 | (arguments |
| 41186 | (list |
| 41187 | ;; The builder user home doesn't match HOME, which causes this test to |
| 41188 | ;; fail. |
| 41189 | #:test-flags #~(list "-k" "not userhome") |
| 41190 | #:phases |
| 41191 | #~(modify-phases %standard-phases |
| 41192 | (add-before 'check 'pre-check |
| 41193 | (lambda _ |
| 41194 | (setenv "HOME" "/tmp")))))) ;else the test suite hangs |
| 41195 | (native-inputs |
| 41196 | (list python-pytest |
| 41197 | python-requests |
| 41198 | python-setuptools |
| 41199 | python-wheel |
| 41200 | python-xdoctest)) |
| 41201 | (propagated-inputs |
| 41202 | (list python-ordered-set)) |
| 41203 | (home-page "https://github.com/Erotemic/ubelt") |
| 41204 | (synopsis "Python library for hashing, caching, timing and more") |
| 41205 | (description |
| 41206 | "Ubelt is a small library of simple functions that extend the Python |
| 41207 | standard library. It includes an @acronym{API, Application Programming |
| 41208 | Interface} to simplify common problems such as caching, timing, computing |
| 41209 | progress, among other things.") |
| 41210 | (license license:asl2.0))) |
| 41211 | |
| 41212 | (define-public python-uc-micro-py |
| 41213 | (package |
| 41214 | (name "python-uc-micro-py") |
| 41215 | (version "2.0.0") |
| 41216 | (source (origin |
| 41217 | (method git-fetch) |
| 41218 | (uri (git-reference |
| 41219 | (url "https://github.com/tsutsu3/uc.micro-py") |
| 41220 | (commit (string-append "v" version)))) |
| 41221 | (file-name (git-file-name name version)) |
| 41222 | (sha256 |
| 41223 | (base32 |
| 41224 | "06dx8zh0fa13aldqxhzghdnbbaqbb1dklbyqzdxy14dcbqmx92m3")))) |
| 41225 | (build-system pyproject-build-system) |
| 41226 | (native-inputs (list python-pytest python-setuptools)) |
| 41227 | (home-page "https://github.com/tsutsu3/uc.micro-py") |
| 41228 | (synopsis "Unicode data files for linkify-it-py projects") |
| 41229 | (description "This package contains a micro subset of Unicode data files |
| 41230 | for linkify-it-py projects.") |
| 41231 | (license license:expat))) |
| 41232 | |
| 41233 | (define-public python-udapi |
| 41234 | (package |
| 41235 | (name "python-udapi") |
| 41236 | (version "0.5.2") |
| 41237 | (source |
| 41238 | (origin |
| 41239 | (method git-fetch) |
| 41240 | (uri (git-reference |
| 41241 | (url "https://github.com/udapi/udapi-python") |
| 41242 | (commit version))) |
| 41243 | (file-name (git-file-name name version)) |
| 41244 | (sha256 |
| 41245 | (base32 "1z9nyj0jmd2yk58c5kag4fkfb7y478di859xi56xc7fhvmyjf7nj")))) |
| 41246 | (build-system pyproject-build-system) |
| 41247 | (native-inputs |
| 41248 | (list python-pytest python-setuptools)) |
| 41249 | (propagated-inputs |
| 41250 | (list python-colorama python-termcolor)) |
| 41251 | (home-page "http://udapi.readthedocs.io") |
| 41252 | (synopsis "Framework for processing Universal Dependencies data") |
| 41253 | (description |
| 41254 | "This package is a Python library providing an API for processing |
| 41255 | Universal Dependencies data.") |
| 41256 | (license license:gpl3+))) |
| 41257 | |
| 41258 | (define-public python-ujson |
| 41259 | (package |
| 41260 | (name "python-ujson") |
| 41261 | (version "5.10.0") |
| 41262 | (source |
| 41263 | (origin |
| 41264 | (method url-fetch) |
| 41265 | (uri (pypi-uri "ujson" version)) |
| 41266 | (sha256 |
| 41267 | (base32 |
| 41268 | "1habmn3bmmv2ym4ldiijcavdkdzp8h28h60hgwjkhxwcbly8zkdk")) |
| 41269 | (modules '((guix build utils))) |
| 41270 | (snippet |
| 41271 | #~(begin (delete-file-recursively "deps"))))) |
| 41272 | (build-system pyproject-build-system) |
| 41273 | (arguments |
| 41274 | (list |
| 41275 | #:phases |
| 41276 | #~(modify-phases %standard-phases |
| 41277 | (add-after 'unpack 'link-to-system-double-conversion |
| 41278 | (lambda* (#:key inputs #:allow-other-keys) |
| 41279 | (let ((d-c (assoc-ref inputs "double-conversion"))) |
| 41280 | (substitute* "setup.py" |
| 41281 | (("./deps/double-conversion/double-conversion\"") |
| 41282 | (string-append d-c "/include/double-conversion\"")) |
| 41283 | (("-lstdc++" stdc) |
| 41284 | (string-append "-L" d-c "/lib\"," |
| 41285 | " \"-ldouble-conversion\"," |
| 41286 | " \"" stdc))))))))) |
| 41287 | (native-inputs |
| 41288 | (list double-conversion |
| 41289 | python-pytest |
| 41290 | python-setuptools |
| 41291 | python-setuptools-scm |
| 41292 | python-wheel)) |
| 41293 | (home-page "https://github.com/ultrajson/ultrajson") |
| 41294 | (synopsis "Ultra fast JSON encoder and decoder for Python") |
| 41295 | (description |
| 41296 | "UltraJSON is an ultra fast JSON encoder and decoder written in pure C with |
| 41297 | bindings for Python 3.") |
| 41298 | (license license:bsd-3))) |
| 41299 | |
| 41300 | (define-public python-ukkonen |
| 41301 | (package |
| 41302 | (name "python-ukkonen") |
| 41303 | (version "1.0.1") |
| 41304 | (source |
| 41305 | (origin |
| 41306 | ;; There are no tests in the PyPI tarball. |
| 41307 | (method git-fetch) |
| 41308 | (uri (git-reference |
| 41309 | (url "https://github.com/asottile/ukkonen") |
| 41310 | (commit (string-append "v" version)))) |
| 41311 | (file-name (git-file-name name version)) |
| 41312 | (sha256 |
| 41313 | (base32 "17gspl2dsykg000275svvyam4k7wz9ypi9xrfrmsgcgryczravlc")))) |
| 41314 | (build-system pyproject-build-system) |
| 41315 | (native-inputs (list python-pytest python-setuptools python-wheel)) |
| 41316 | (propagated-inputs (list python-cffi)) |
| 41317 | (home-page "https://github.com/asottile/ukkonen") |
| 41318 | (synopsis "Implementation of bounded Levenshtein distance (Ukkonen)") |
| 41319 | (description "This package is an implementation of of bounded Levenshtein |
| 41320 | distance (Ukkonen).") |
| 41321 | (license license:expat))) |
| 41322 | |
| 41323 | (define-public python-ulid |
| 41324 | (package |
| 41325 | (name "python-ulid") |
| 41326 | (version "3.1.0") |
| 41327 | (source |
| 41328 | (origin |
| 41329 | (method git-fetch) |
| 41330 | (uri (git-reference |
| 41331 | (url "https://github.com/mdomke/python-ulid") |
| 41332 | (commit version))) |
| 41333 | (file-name (git-file-name name version)) |
| 41334 | (sha256 |
| 41335 | (base32 "0m1sixmqynlalsw50af5mv5q4gpz2052d1p2ig9hr7yqmdvqcz6p")))) |
| 41336 | (build-system pyproject-build-system) |
| 41337 | (arguments |
| 41338 | ;; test_same_millisecond_overflow is flaky, fails 1 in 10 times. |
| 41339 | ;; See <https://github.com/mdomke/python-ulid/issues/55>. |
| 41340 | ;; 68 passed, 1 deselected in 2.55s |
| 41341 | (list #:test-flags #~(list "-k" "not test_same_millisecond_overflow"))) |
| 41342 | (native-inputs |
| 41343 | (list python-freezegun |
| 41344 | python-hatch-fancy-pypi-readme |
| 41345 | python-hatch-vcs |
| 41346 | python-hatchling |
| 41347 | python-pytest)) |
| 41348 | (propagated-inputs |
| 41349 | (list python-pydantic)) |
| 41350 | (home-page "https://github.com/mdomke/python-ulid") |
| 41351 | (synopsis "Universally unique lexicographically sortable identifier") |
| 41352 | (description |
| 41353 | "ULID is a universally unique lexicographically sortable identifier. |
| 41354 | It is: |
| 41355 | @itemize |
| 41356 | @item 128-bit compatible with UUID |
| 41357 | @item 1.21e+24 unique ULIDs per millisecond |
| 41358 | @item lexicographically sortable! |
| 41359 | @item canonically encoded as a 26 character string, as opposed to the 36 |
| 41360 | character UUID |
| 41361 | @item uses Crockford's base32 for better efficiency and readability (5 bits |
| 41362 | per character) |
| 41363 | @item case insensitive |
| 41364 | @item no special characters (URL safe) |
| 41365 | @item monotonic sort order (correctly detects and handles the same |
| 41366 | millisecond) |
| 41367 | @end itemize") |
| 41368 | (license license:expat))) |
| 41369 | |
| 41370 | (define-public python-uncertainties |
| 41371 | (package |
| 41372 | (name "python-uncertainties") |
| 41373 | (version "3.2.3") |
| 41374 | (source |
| 41375 | (origin |
| 41376 | (method url-fetch) |
| 41377 | (uri (pypi-uri "uncertainties" version)) |
| 41378 | (sha256 |
| 41379 | (base32 |
| 41380 | "0c9hl35jvld1a1vinh9mdcpfgz4ykqinlm1dj917lqbgd0z6b9bn")))) |
| 41381 | (build-system pyproject-build-system) |
| 41382 | (native-inputs |
| 41383 | (list python-pytest python-setuptools python-setuptools-scm python-wheel)) |
| 41384 | (propagated-inputs (list python-numpy)) |
| 41385 | (home-page "https://uncertainties.readthedocs.io/en/latest/") |
| 41386 | (synopsis "Calculations with uncertainties") |
| 41387 | (description |
| 41388 | "The uncertainties package transparently handles calculations with |
| 41389 | numbers with uncertainties. It can also yield the derivatives of any |
| 41390 | expression.") |
| 41391 | (license license:bsd-3))) |
| 41392 | |
| 41393 | (define-public python-unicode-linebreak |
| 41394 | (package |
| 41395 | (name "python-unicode-linebreak") |
| 41396 | (version "0.0.2") |
| 41397 | (source |
| 41398 | (origin |
| 41399 | (method git-fetch) |
| 41400 | (uri (git-reference |
| 41401 | (url "https://github.com/mondeja/py-unicode-linebreak") |
| 41402 | (commit (string-append "v" version)))) |
| 41403 | (file-name (git-file-name name version)) |
| 41404 | (sha256 |
| 41405 | (base32 "0qvh729b2q82sy057qgldcbz513wxnsckmwl3c18wkyb3c1iq2qk")))) |
| 41406 | (build-system pyproject-build-system) |
| 41407 | (arguments |
| 41408 | (list |
| 41409 | #:imported-modules `(,@%cargo-build-system-modules |
| 41410 | ,@%pyproject-build-system-modules) |
| 41411 | #:modules '(((guix build cargo-build-system) #:prefix cargo:) |
| 41412 | (guix build pyproject-build-system) |
| 41413 | (guix build utils)) |
| 41414 | #:test-backend #~'unittest |
| 41415 | #:phases |
| 41416 | #~(modify-phases %standard-phases |
| 41417 | (add-after 'unpack 'prepare-cargo-build-system |
| 41418 | (lambda args |
| 41419 | (for-each |
| 41420 | (lambda (phase) |
| 41421 | (format #t "Running cargo phase: ~a~%" phase) |
| 41422 | (apply (assoc-ref cargo:%standard-phases phase) |
| 41423 | #:cargo-target #$(cargo-triplet) |
| 41424 | args)) |
| 41425 | '(unpack-rust-crates |
| 41426 | configure |
| 41427 | check-for-pregenerated-files |
| 41428 | patch-cargo-checksums))))))) |
| 41429 | (native-inputs |
| 41430 | (append |
| 41431 | (list maturin |
| 41432 | rust |
| 41433 | `(,rust "cargo")) |
| 41434 | (or (and=> (%current-target-system) |
| 41435 | (compose list make-rust-sysroot)) |
| 41436 | '()))) |
| 41437 | (inputs (cargo-inputs 'unicode_linebreak)) |
| 41438 | (home-page "https://github.com/mondeja/py-unicode-linebreak") |
| 41439 | (synopsis "Markdown paragraph wrapper") |
| 41440 | (description |
| 41441 | "This package provides a Markdown paragraph wrapper using Unicode Line |
| 41442 | Breaking Algorithm written in Rust with Python bindings.") |
| 41443 | (license license:expat))) |
| 41444 | |
| 41445 | (define-public python-unicodedata2 |
| 41446 | (package |
| 41447 | (name "python-unicodedata2") |
| 41448 | (version "16.0.0") |
| 41449 | (source |
| 41450 | (origin |
| 41451 | (method url-fetch) |
| 41452 | (uri (pypi-uri "unicodedata2" version)) |
| 41453 | (sha256 |
| 41454 | (base32 "1z3llixb4cd6cc6nmyps5vv2sss14n3x6dzcc65xg75mj9jqsj05")))) |
| 41455 | (build-system pyproject-build-system) |
| 41456 | (native-inputs |
| 41457 | (list python-pytest |
| 41458 | python-setuptools)) |
| 41459 | (home-page "https://github.com/fonttools/unicodedata2") |
| 41460 | (synopsis "Python unicodedata backport") |
| 41461 | (description "This package corresponds to the latest @code{unicodedata} |
| 41462 | standard Python module.") |
| 41463 | (license license:asl2.0))) |
| 41464 | |
| 41465 | (define-public python-unicodeitplus |
| 41466 | (package |
| 41467 | (name "python-unicodeitplus") |
| 41468 | (version "0.3.1") |
| 41469 | (source |
| 41470 | (origin |
| 41471 | (method url-fetch) |
| 41472 | (uri (pypi-uri "unicodeitplus" version)) |
| 41473 | (sha256 |
| 41474 | (base32 "1mssdjih7dqz25lrb2pyjg2yvab0b9c7a5k1llx1yzkkqbqyh74c")))) |
| 41475 | (build-system pyproject-build-system) |
| 41476 | (native-inputs |
| 41477 | (list python-pytest |
| 41478 | python-setuptools |
| 41479 | python-setuptools-scm)) |
| 41480 | (propagated-inputs |
| 41481 | (list python-lark)) |
| 41482 | (home-page "https://github.com/HDembinski/unicodeitplus") |
| 41483 | (synopsis "Convert simple LaTeX to an Unicode approximation") |
| 41484 | (description |
| 41485 | "This package provides a more complete LaTeX to Unicode converter than |
| 41486 | @code{unicodeit} using a parser generated from @acronym{EBNF, Extended |
| 41487 | Backus-Naur Form} with the Lark library.") |
| 41488 | (license license:bsd-3))) |
| 41489 | |
| 41490 | (define-public python-unidecode |
| 41491 | (package |
| 41492 | (name "python-unidecode") |
| 41493 | (version "1.4.0") |
| 41494 | (source |
| 41495 | (origin |
| 41496 | (method url-fetch) |
| 41497 | (uri (pypi-uri "Unidecode" version)) |
| 41498 | (sha256 |
| 41499 | (base32 "08rbx8vxsnj06cvrdxy80zrn9hk25lwcqfh2fdjng2rk1189hdff")))) |
| 41500 | (build-system pyproject-build-system) |
| 41501 | (native-inputs |
| 41502 | (list python-pytest python-setuptools)) |
| 41503 | (home-page "https://pypi.org/project/Unidecode/") |
| 41504 | (synopsis "ASCII transliterations of Unicode text") |
| 41505 | (description |
| 41506 | "Unidecode provides ASCII transliterations of Unicode text. Unidecode is |
| 41507 | useful when integrating with legacy code that doesn't support Unicode, or for |
| 41508 | ease of entry of non-Roman names on a US keyboard, or when constructing ASCII |
| 41509 | machine identifiers from human-readable Unicode strings that should still be |
| 41510 | somewhat intelligible.") |
| 41511 | (license license:gpl2+))) |
| 41512 | |
| 41513 | (define-public python-unique-log-filter |
| 41514 | (package |
| 41515 | (name "python-unique-log-filter") |
| 41516 | (version "0.1.0") |
| 41517 | (source |
| 41518 | (origin |
| 41519 | (method git-fetch) |
| 41520 | (uri (git-reference |
| 41521 | (url "https://github.com/twizmwazin/unique_log_filter") |
| 41522 | (commit (string-append "v" version)))) |
| 41523 | (file-name (git-file-name name version)) |
| 41524 | (sha256 |
| 41525 | (base32 "036mh6nqskck2fa1q2inasqxb9wcz2p09qcpldnnffzcy1a6kzba")))) |
| 41526 | (build-system pyproject-build-system) |
| 41527 | (arguments |
| 41528 | (list #:test-backend #~'custom |
| 41529 | #:test-flags #~(list "test_unique_log_filter.py"))) |
| 41530 | (native-inputs (list python-flit-core)) |
| 41531 | (home-page "https://github.com/twizmwazin/unique_log_filter") |
| 41532 | (synopsis "Log filter that removes duplicate log messages") |
| 41533 | (description |
| 41534 | "This library provides a filter for the @code{logging} module |
| 41535 | from the Python standard library which allows removing duplicate log |
| 41536 | messages.") |
| 41537 | (license license:bsd-2))) |
| 41538 | |
| 41539 | (define-public python-uniseg |
| 41540 | (package |
| 41541 | (name "python-uniseg") |
| 41542 | (version "0.10.0") |
| 41543 | (source |
| 41544 | (origin |
| 41545 | (method url-fetch) |
| 41546 | (uri (pypi-uri "uniseg" version)) |
| 41547 | (sha256 |
| 41548 | (base32 "18sj1i7xlssrsfwlr95bd4x78mfhq0v6irfx3b7fkgr17a5jbsmm")))) |
| 41549 | (build-system pyproject-build-system) |
| 41550 | (native-inputs |
| 41551 | (list python-pytest |
| 41552 | python-setuptools |
| 41553 | python-setuptools-scm)) |
| 41554 | (home-page "https://bitbucket.org/emptypage/uniseg-python") |
| 41555 | (synopsis "Python library to determine Unicode text segmentations") |
| 41556 | (description |
| 41557 | "Uniseg is a Python package used to determine Unicode text segmentations. |
| 41558 | Supported segmentations include: |
| 41559 | @enumerate |
| 41560 | @item @dfn{Code point} (any value in the Unicode codespace) |
| 41561 | @item @dfn{Grapheme cluster} (user-perceived character made of a single or |
| 41562 | multiple Unicode code points, e.g. \"G\" + acute-accent) |
| 41563 | @item Word break |
| 41564 | @item Sentence break |
| 41565 | @item Line break |
| 41566 | @end enumerate") |
| 41567 | (license license:expat))) |
| 41568 | |
| 41569 | (define-public python-universal-pathlib |
| 41570 | (package |
| 41571 | (name "python-universal-pathlib") |
| 41572 | (version "0.2.6") |
| 41573 | (source |
| 41574 | (origin |
| 41575 | (method git-fetch) |
| 41576 | (uri (git-reference |
| 41577 | (url "https://github.com/fsspec/universal_pathlib") |
| 41578 | (commit (string-append "v" version)))) |
| 41579 | (file-name (git-file-name name version)) |
| 41580 | (sha256 |
| 41581 | (base32 "0y2czk4civjjy9v8vhv6icivk4lapjcjzhdxjrrm3629apqja7wp")))) |
| 41582 | (build-system pyproject-build-system) |
| 41583 | (arguments |
| 41584 | (list |
| 41585 | #:tests? #f)) ;requires network |
| 41586 | (native-inputs |
| 41587 | (list python-setuptools |
| 41588 | python-setuptools-scm)) |
| 41589 | (propagated-inputs |
| 41590 | (list python-fsspec |
| 41591 | python-pathlib-abc)) |
| 41592 | (home-page "https://github.com/fsspec/universal_pathlib") |
| 41593 | (synopsis |
| 41594 | "@code{pathlib} API extended to use @code{fsspec} backends") |
| 41595 | (description |
| 41596 | "Universal Pathlib is a Python library that extends the @code{pathlib.Path} |
| 41597 | API to support a variety of backend filesystems via filesystem_spec.") |
| 41598 | (license license:expat))) |
| 41599 | |
| 41600 | (define-public python-unpaddedbase64 |
| 41601 | (package |
| 41602 | (name "python-unpaddedbase64") |
| 41603 | (version "2.1.0") |
| 41604 | (source |
| 41605 | (origin |
| 41606 | (method git-fetch) |
| 41607 | (uri (git-reference |
| 41608 | (url "https://github.com/matrix-org/python-unpaddedbase64") |
| 41609 | (commit (string-append "v" version)))) |
| 41610 | (file-name (git-file-name name version)) |
| 41611 | (sha256 |
| 41612 | (base32 "1n6har8pxv0mqb96lanzihp1xf76aa17jw3977drb1fgz947pnmz")))) |
| 41613 | (build-system pyproject-build-system) |
| 41614 | (native-inputs (list python-poetry-core |
| 41615 | python-pytest |
| 41616 | python-setuptools |
| 41617 | python-wheel)) |
| 41618 | (home-page "https://github.com/matrix-org/python-unpaddedbase64") |
| 41619 | (synopsis "Encode and decode Base64 without “=” padding") |
| 41620 | (description |
| 41621 | "RFC 4648 specifies that Base64 should be padded to a multiple of 4 bytes |
| 41622 | using “=” characters. However this conveys no benefit so many protocols |
| 41623 | choose to use Base64 without the “=” padding.") |
| 41624 | (license license:asl2.0))) |
| 41625 | |
| 41626 | (define-public python-update-checker |
| 41627 | (package |
| 41628 | (name "python-update-checker") |
| 41629 | (version "0.18.0") |
| 41630 | (source |
| 41631 | (origin |
| 41632 | (method url-fetch) |
| 41633 | (uri (pypi-uri "update-checker" version)) |
| 41634 | (sha256 |
| 41635 | (base32 "04yb5a9mi45ax50m2m0ih6gdvkk1j7gfmy83dd58i1f59axlabba")))) |
| 41636 | (build-system pyproject-build-system) |
| 41637 | (native-inputs |
| 41638 | (list python-pytest |
| 41639 | python-setuptools)) |
| 41640 | (propagated-inputs |
| 41641 | (list python-requests)) |
| 41642 | (home-page "https://github.com/bboe/update_checker") |
| 41643 | (synopsis "Python module that will check for package updates") |
| 41644 | (description "This package provides a Python module that will check for |
| 41645 | package updates.") |
| 41646 | (license license:bsd-2))) |
| 41647 | |
| 41648 | (define-public python-uri-template |
| 41649 | (package |
| 41650 | (name "python-uri-template") |
| 41651 | (version "1.3.0") |
| 41652 | (source |
| 41653 | (origin |
| 41654 | (method git-fetch) |
| 41655 | (uri (git-reference |
| 41656 | (url "https://gitlab.linss.com/open-source/python/uri-template") |
| 41657 | (commit (string-append "v" version)))) |
| 41658 | (file-name (git-file-name name version)) |
| 41659 | (sha256 |
| 41660 | (base32 "0z1g5hpxzi5rh4xsra6bsvyg5qzmnx7a8j5q7rngmj9slcbcbhfz")))) |
| 41661 | (build-system pyproject-build-system) |
| 41662 | (arguments |
| 41663 | (list |
| 41664 | #:test-backend #~'custom |
| 41665 | #:test-flags #~(list "test.py"))) |
| 41666 | (native-inputs |
| 41667 | (list python-setuptools |
| 41668 | python-setuptools-scm)) |
| 41669 | (home-page "https://gitlab.linss.com/open-source/python/uri-template") |
| 41670 | (synopsis "RFC 6570 URI Template Processor") |
| 41671 | (description "This package implements URI Template expansion in strict |
| 41672 | adherence to RFC 6570, but adds a few extensions.") |
| 41673 | (license license:expat))) |
| 41674 | |
| 41675 | (define-public python-uritools |
| 41676 | (package |
| 41677 | (name "python-uritools") |
| 41678 | (version "6.0.1") |
| 41679 | (source |
| 41680 | (origin |
| 41681 | (method git-fetch) |
| 41682 | (uri (git-reference |
| 41683 | (url "https://github.com/tkem/uritools/") |
| 41684 | (commit (string-append "v" version)))) |
| 41685 | (file-name (git-file-name name version)) |
| 41686 | (sha256 |
| 41687 | (base32 "115a8xphnv0ykd4c0pjh5rd4zy92znpdv4nwbn7n2d6irznvk00v")))) |
| 41688 | (build-system pyproject-build-system) |
| 41689 | (native-inputs |
| 41690 | (list python-pytest |
| 41691 | python-setuptools)) |
| 41692 | (home-page "https://github.com/tkem/uritools/") |
| 41693 | (synopsis "URI parsing, classification and composition") |
| 41694 | (description |
| 41695 | "This package provides RFC 3986 compliant functions for parsing, |
| 41696 | classifying and composing URIs and URI references, largely replacing the |
| 41697 | Python Standard Library's urllib.parse module.") |
| 41698 | (license license:expat))) |
| 41699 | |
| 41700 | (define-public python-urwid |
| 41701 | (package |
| 41702 | (name "python-urwid") |
| 41703 | (version "3.0.3") |
| 41704 | (source |
| 41705 | (origin |
| 41706 | (method url-fetch) |
| 41707 | (uri (pypi-uri "urwid" version)) |
| 41708 | (sha256 |
| 41709 | (base32 |
| 41710 | "16zdji1fdr5jbry9h01dxwnadrygs1xj415jqnhmmnlcavfh821h")))) |
| 41711 | (build-system pyproject-build-system) |
| 41712 | (arguments |
| 41713 | (list |
| 41714 | #:test-flags |
| 41715 | #~(list "tests" |
| 41716 | ;; According to Debian these tests are cursed. |
| 41717 | ;; https://salsa.debian.org/python-team/packages/urwid/-/blob/debian/2.1.2-2/debian/changelog#L141 |
| 41718 | "--ignore=tests/test_vterm.py"))) |
| 41719 | (native-inputs |
| 41720 | (list python-pytest python-setuptools python-setuptools-scm)) |
| 41721 | (propagated-inputs |
| 41722 | (list python-wcwidth |
| 41723 | ;; [optional] |
| 41724 | python-pygobject |
| 41725 | python-pyzmq |
| 41726 | python-tornado |
| 41727 | python-pyserial |
| 41728 | python-twisted)) |
| 41729 | (home-page "https://urwid.org") |
| 41730 | (synopsis "Console user interface library for Python") |
| 41731 | (description |
| 41732 | "Urwid is a curses-based UI/widget library for Python. It includes many |
| 41733 | features useful for text console applications.") |
| 41734 | (license license:lgpl2.1+))) |
| 41735 | |
| 41736 | (define-public python-urwid-2 |
| 41737 | (package |
| 41738 | (inherit python-urwid) |
| 41739 | (name "python-urwid") |
| 41740 | (version "2.6.16") |
| 41741 | (source |
| 41742 | (origin |
| 41743 | (method url-fetch) |
| 41744 | (uri (pypi-uri "urwid" version)) |
| 41745 | (sha256 |
| 41746 | (base32 "18ijvgf1l7jvmg45x1cysn3c9rdrg1w0405acig3hk7476cj7bck")))))) |
| 41747 | |
| 41748 | (define-deprecated/public-alias python-urwid-3 |
| 41749 | python-urwid) ;may be removed after 2025-11-12 |
| 41750 | |
| 41751 | (define-public python-urwid-for-zulip-term |
| 41752 | ;; [email protected] requires exact 2.1.2 version otherwise some tests fail |
| 41753 | ;; to pass, remove when no longer required. |
| 41754 | (hidden-package |
| 41755 | (package |
| 41756 | (inherit python-urwid) |
| 41757 | (version "2.1.2") |
| 41758 | (source |
| 41759 | (origin |
| 41760 | (method url-fetch) |
| 41761 | (uri (pypi-uri "urwid" version)) |
| 41762 | (sha256 |
| 41763 | (base32 "1bky2bra6673xx8jy0826znw6cmxs89wcwwzda8d025j3jffx2sq")))) |
| 41764 | (arguments |
| 41765 | (list #:tests? #f))))) |
| 41766 | |
| 41767 | (define-public python-urwid-readline |
| 41768 | (package |
| 41769 | (name "python-urwid-readline") |
| 41770 | (version "0.15.1") |
| 41771 | (source |
| 41772 | (origin |
| 41773 | (method git-fetch) |
| 41774 | (uri (git-reference |
| 41775 | (url "https://github.com/rr-/urwid_readline") |
| 41776 | (commit version))) |
| 41777 | (file-name (git-file-name name version)) |
| 41778 | (sha256 |
| 41779 | (base32 "0zhpx86gvpkziclb7bcqn73fadkzn805rjqy7lzhrza46lphq8qy")))) |
| 41780 | (build-system pyproject-build-system) |
| 41781 | (native-inputs |
| 41782 | (list python-pytest |
| 41783 | python-setuptools)) |
| 41784 | (propagated-inputs |
| 41785 | (list python-urwid)) |
| 41786 | (home-page "https://github.com/rr-/urwid_readline") |
| 41787 | (synopsis "Text input widget for urwid that supports readline shortcuts") |
| 41788 | (description |
| 41789 | "This package provides a textbox edit widget for @code{python-urwid} that |
| 41790 | supports @code{readline} shortcuts.") |
| 41791 | (license license:expat))) |
| 41792 | |
| 41793 | (define-public python-urwidgets |
| 41794 | (package |
| 41795 | (name "python-urwidgets") |
| 41796 | (version "0.2.1") |
| 41797 | (source |
| 41798 | (origin |
| 41799 | (method url-fetch) |
| 41800 | (uri (pypi-uri "urwidgets" version)) |
| 41801 | (sha256 |
| 41802 | (base32 "1vrydw9h8c5gi89dnv12a9cdyyxaffvxl1kq51f118cxjk9brwpr")))) |
| 41803 | (build-system pyproject-build-system) |
| 41804 | (arguments |
| 41805 | (list #:tests? #f)) ;no tests |
| 41806 | (native-inputs |
| 41807 | (list python-setuptools)) |
| 41808 | (propagated-inputs |
| 41809 | (list python-urwid-2)) |
| 41810 | (home-page "https://github.com/AnonymouX47/urwidgets") |
| 41811 | (synopsis "Collection of widgets for urwid") |
| 41812 | (description |
| 41813 | "This package provides a collection of widgets for urwid.") |
| 41814 | (license license:expat))) |
| 41815 | |
| 41816 | (define-public python-urwidtrees |
| 41817 | (package |
| 41818 | (name "python-urwidtrees") |
| 41819 | (version "1.0.4") |
| 41820 | (source |
| 41821 | (origin |
| 41822 | (method git-fetch) |
| 41823 | ;; package author intends on distributing via github rather than pypi: |
| 41824 | ;; https://github.com/pazz/alot/issues/877#issuecomment-230173331 |
| 41825 | (uri (git-reference |
| 41826 | (url "https://github.com/pazz/urwidtrees") |
| 41827 | (commit version))) |
| 41828 | (file-name (git-file-name name version)) |
| 41829 | (sha256 |
| 41830 | (base32 |
| 41831 | "17k0gx8i7wrzw6skzdjh9b8v3n6lb5zvg9jrybc3d09p8ipvc31i")))) |
| 41832 | (build-system pyproject-build-system) |
| 41833 | (arguments |
| 41834 | '(#:tests? #f)) ; no tests |
| 41835 | (propagated-inputs (list python-urwid)) |
| 41836 | (native-inputs (list python-mock python-setuptools python-wheel)) |
| 41837 | (home-page "https://github.com/pazz/urwidtrees") |
| 41838 | (synopsis "Tree widgets for urwid") |
| 41839 | (description "Urwidtrees is a Widget Container API for the @code{urwid} |
| 41840 | toolkit. Use it to build trees of widgets.") |
| 41841 | (license license:gpl3+))) |
| 41842 | |
| 41843 | (define-public python-user-agents |
| 41844 | (package |
| 41845 | (name "python-user-agents") |
| 41846 | (version "2.2.0") |
| 41847 | (source |
| 41848 | (origin |
| 41849 | (method git-fetch) |
| 41850 | (uri (git-reference |
| 41851 | (url "https://github.com/selwin/python-user-agents") |
| 41852 | (commit (string-append "v" version)))) |
| 41853 | (file-name (git-file-name name version)) |
| 41854 | (sha256 |
| 41855 | (base32 "0pcbjqj21c2ixhl414bh2h8khi8y1igzfpkyqwan1pakix0lq45a")))) |
| 41856 | (build-system pyproject-build-system) |
| 41857 | (arguments |
| 41858 | (list #:test-backend #~'unittest)) |
| 41859 | (native-inputs |
| 41860 | (list python-setuptools)) |
| 41861 | (propagated-inputs |
| 41862 | (list python-ua-parser)) |
| 41863 | (home-page "https://github.com/selwin/python-user-agents") |
| 41864 | (synopsis "User Agent strings parsing library") |
| 41865 | (description |
| 41866 | "A library to identify devices (phones, tablets) and their capabilities by |
| 41867 | parsing (browser/HTTP) user agent strings.") |
| 41868 | (license license:expat))) |
| 41869 | |
| 41870 | (define-public python-userpath |
| 41871 | (package |
| 41872 | (name "python-userpath") |
| 41873 | (version "1.9.2") |
| 41874 | (source |
| 41875 | (origin |
| 41876 | (method url-fetch) |
| 41877 | (uri (pypi-uri "userpath" version)) |
| 41878 | (sha256 |
| 41879 | (base32 "05fqxzdi27vqm5lywxs6bm2j4d8k91fx2ihqhg65g4h6mf6jhlkc")))) |
| 41880 | (build-system pyproject-build-system) |
| 41881 | (arguments |
| 41882 | ;; See https://github.com/ofek/userpath/issues/43. |
| 41883 | ;; In Guix, tests try to find the temporary build directory in PATH, but |
| 41884 | ;; only the store output is present. |
| 41885 | (list #:tests? #f)) |
| 41886 | (native-inputs (list python-hatchling python-pytest)) |
| 41887 | (propagated-inputs (list python-click)) |
| 41888 | (home-page "https://github.com/ofek/userpath") |
| 41889 | (synopsis "Add locations to the user's PATH") |
| 41890 | (description "This package provides a tool for modifying a user's PATH.") |
| 41891 | (license license:expat))) |
| 41892 | |
| 41893 | (define-public python-userspacefs |
| 41894 | (package |
| 41895 | (name "python-userspacefs") |
| 41896 | (version "3.2.1") |
| 41897 | (source |
| 41898 | (origin |
| 41899 | (method url-fetch) |
| 41900 | (uri (pypi-uri "userspacefs" version)) |
| 41901 | (sha256 |
| 41902 | (base32 "0n3mp9y1xgkl292m44i6xrkha2ffja1zrf5yaykz0yyvm85cfip4")))) |
| 41903 | (build-system pyproject-build-system) |
| 41904 | (arguments |
| 41905 | (list #:tests? #f ;no tests |
| 41906 | #:phases |
| 41907 | #~(modify-phases %standard-phases |
| 41908 | (add-after 'unpack 'hardcode-libfuse |
| 41909 | (lambda* (#:key inputs #:allow-other-keys) |
| 41910 | (substitute* "userspacefs/fusepy.py" |
| 41911 | (("^_libfuse_path.*") |
| 41912 | (string-append "_libfuse_path = '" |
| 41913 | (search-input-file inputs "lib/libfuse3.so") |
| 41914 | "'\n")))))))) |
| 41915 | (inputs (list fuse)) |
| 41916 | (native-inputs (list python-setuptools)) |
| 41917 | (propagated-inputs (list python-aiohttp python-typing-extensions)) |
| 41918 | (home-page "https://thelig.ht/code/userspacefs/readme.html") |
| 41919 | (synopsis "User-space file systems for Python") |
| 41920 | (description |
| 41921 | "@code{userspacefs} is a library that allows you to easily write |
| 41922 | user-space file systems in Python.") |
| 41923 | (license license:gpl3+))) |
| 41924 | |
| 41925 | (define-public python-utils |
| 41926 | (package |
| 41927 | (name "python-utils") |
| 41928 | (version "3.9.1") |
| 41929 | (source |
| 41930 | (origin |
| 41931 | (method url-fetch) |
| 41932 | (uri (pypi-uri "python_utils" version)) |
| 41933 | (sha256 |
| 41934 | (base32 "18292j4p1bvlpbrfj2cgkdby6dpgnl5gbjwly0qb4pj1j914nmzb")))) |
| 41935 | (build-system pyproject-build-system) |
| 41936 | (native-inputs |
| 41937 | (list python-pytest |
| 41938 | python-pytest-asyncio |
| 41939 | python-setuptools)) |
| 41940 | (propagated-inputs |
| 41941 | (list python-loguru |
| 41942 | python-typing-extensions)) |
| 41943 | (home-page "https://github.com/WoLpH/python-utils") |
| 41944 | (synopsis "Convenient utilities not included with the standard Python install") |
| 41945 | (description |
| 41946 | "Python Utils is a collection of small Python functions and classes |
| 41947 | which make common patterns shorter and easier.") |
| 41948 | (license license:bsd-2))) |
| 41949 | |
| 41950 | (define-public python-uuid6 |
| 41951 | (package |
| 41952 | (name "python-uuid6") |
| 41953 | (version "2025.0.1") |
| 41954 | (source |
| 41955 | (origin |
| 41956 | (method git-fetch) |
| 41957 | (uri (git-reference |
| 41958 | (url "https://github.com/oittaa/uuid6-python") |
| 41959 | (commit version))) |
| 41960 | (file-name (git-file-name name version)) |
| 41961 | (sha256 |
| 41962 | (base32 "0xawnq7b0vzcvrw50jfdagn4a2javyav108hlpf31kbn7rn03jhk")))) |
| 41963 | (build-system pyproject-build-system) |
| 41964 | (arguments |
| 41965 | (list |
| 41966 | #:test-flags |
| 41967 | ;; Test is time based: AssertionError: 13987034766.015247 != |
| 41968 | ;; 13987034766.01471 within 3 places (0.000537872314453125 difference) |
| 41969 | #~(list "--deselect=test/test_uuid6.py::UUIDTests::test_time"))) |
| 41970 | (native-inputs |
| 41971 | (list python-pytest |
| 41972 | python-setuptools |
| 41973 | python-setuptools-scm)) |
| 41974 | (home-page "https://github.com/oittaa/uuid6-python") |
| 41975 | (synopsis "Time-based UUID formats which are suited for use as a database key") |
| 41976 | (description |
| 41977 | "This module extends immutable UUID objects (the UUID class) with the |
| 41978 | functions @code{uuid6()}, @code{uuid7()}, and @code{uuid8()} from the proposed |
| 41979 | @url{https://datatracker.ietf.org/doc/rfc9562/, IETF RFC 9562}.") |
| 41980 | (license license:expat))) |
| 41981 | |
| 41982 | (define-public python-validate-email |
| 41983 | (package |
| 41984 | (name "python-validate-email") |
| 41985 | (version "1.3") |
| 41986 | (source |
| 41987 | (origin |
| 41988 | (method url-fetch) |
| 41989 | (uri (pypi-uri "validate_email" version)) |
| 41990 | (sha256 |
| 41991 | (base32 "1bxffaf5yz2cph8ki55vdvdypbwkvn2xr1firlcy62vqbzf1jivq")))) |
| 41992 | (build-system pyproject-build-system) |
| 41993 | (arguments (list #:tests? #f)) ;no tests in PyPI or Git |
| 41994 | (native-inputs |
| 41995 | (list python-setuptools)) |
| 41996 | (home-page "https://github.com/syrusakbary/validate_email") |
| 41997 | (synopsis "Verifies if an email address is valid and really exists") |
| 41998 | (description |
| 41999 | "@code{validate_email} can be used to verify if an email address is |
| 42000 | valid and really exists.") |
| 42001 | (license license:lgpl3+))) |
| 42002 | |
| 42003 | (define-public python-validators |
| 42004 | ;; TODO: Move to (gnu packages python-web) or (gnu packages python-crypto). |
| 42005 | (package |
| 42006 | (name "python-validators") |
| 42007 | (version "0.35.0") |
| 42008 | (source |
| 42009 | (origin |
| 42010 | (method git-fetch) |
| 42011 | (uri (git-reference |
| 42012 | (url "https://github.com/kvesteri/validators") |
| 42013 | (commit version))) |
| 42014 | (file-name (git-file-name name version)) |
| 42015 | (sha256 |
| 42016 | (base32 "1q4mhcr10f22f8lwbsplhjyy0m3axddawd3mcax7qzm6p8lj6ybg")))) |
| 42017 | (build-system pyproject-build-system) |
| 42018 | (native-inputs |
| 42019 | (list python-pytest |
| 42020 | python-setuptools)) |
| 42021 | (propagated-inputs |
| 42022 | (list python-eth-hash)) |
| 42023 | (home-page "https://github.com/kvesteri/validators") |
| 42024 | (synopsis "Data validation library") |
| 42025 | (description |
| 42026 | "This package contains validators for different things such as email |
| 42027 | addresses, IP addresses, URLs, hashes and more. It has been designed to be |
| 42028 | easy to use and not require defining a schema or form just to validate some |
| 42029 | input.") |
| 42030 | (license license:expat))) |
| 42031 | |
| 42032 | (define-public python-valkey |
| 42033 | (package |
| 42034 | (name "python-valkey") |
| 42035 | (version "6.1.1") |
| 42036 | (source |
| 42037 | (origin |
| 42038 | (method git-fetch) |
| 42039 | (uri (git-reference |
| 42040 | (url "https://github.com/valkey-io/valkey-py") |
| 42041 | (commit (string-append "v" version)))) |
| 42042 | (file-name (git-file-name name version)) |
| 42043 | (sha256 |
| 42044 | (base32 "05zmnb8lmygv75zx0hb40s2rgr53sy4g0sizcb9mq8fd09z5i0n2")))) |
| 42045 | (build-system pyproject-build-system) |
| 42046 | (arguments |
| 42047 | ;; XXX: A lot of tests fail with ConnectionError |
| 42048 | ;; Maybe we need to spawn a valkey server? |
| 42049 | (list #:tests? #f)) |
| 42050 | (native-inputs |
| 42051 | (list python-setuptools)) |
| 42052 | (home-page "https://github.com/valkey-io/valkey-py") |
| 42053 | (synopsis "Python client for Valkey") |
| 42054 | (description |
| 42055 | "This package provides a python client for the @code{Valkey} key-value |
| 42056 | store, forked from redis-py.") |
| 42057 | (license license:expat))) |
| 42058 | |
| 42059 | ;; XXX: No fresh releases or updates since 2016, consider to remove, leaf |
| 42060 | ;; package. |
| 42061 | (define-public python-vcversioner |
| 42062 | (package |
| 42063 | (name "python-vcversioner") |
| 42064 | (version "2.16.0.0") |
| 42065 | (source |
| 42066 | (origin |
| 42067 | (method url-fetch) |
| 42068 | (uri (pypi-uri "vcversioner" version)) |
| 42069 | (sha256 |
| 42070 | (base32 |
| 42071 | "16z10sm78jd7ca3jbkgc3q5i8a8q7y1h21q1li21yy3rlhbhrrns")))) |
| 42072 | (build-system pyproject-build-system) |
| 42073 | (arguments |
| 42074 | (list #:tests? #f)) ;no tests in PyPI archive |
| 42075 | (native-inputs |
| 42076 | (list python-setuptools)) |
| 42077 | (home-page "https://github.com/habnabit/vcversioner") |
| 42078 | (synopsis "Python library for version number discovery") |
| 42079 | (description |
| 42080 | "Vcversioner is a Python library that inspects tagging information in a |
| 42081 | variety of version control systems in order to discover version numbers.") |
| 42082 | (license license:isc))) |
| 42083 | |
| 42084 | (define-public python-vdf |
| 42085 | (package |
| 42086 | (name "python-vdf") |
| 42087 | (version "3.4") |
| 42088 | (source |
| 42089 | (origin |
| 42090 | (method git-fetch) ; no tests in PyPI release |
| 42091 | (uri (git-reference |
| 42092 | (url "https://github.com/ValvePython/vdf") |
| 42093 | (commit (string-append "v" version)))) |
| 42094 | (file-name (git-file-name name version)) |
| 42095 | (sha256 |
| 42096 | (base32 "1xc0sd21xgf08pf6dwa4l23y9jb6yqaw61rr03ns0d2r6sby137a")))) |
| 42097 | (build-system pyproject-build-system) |
| 42098 | (native-inputs |
| 42099 | (list python-pytest python-setuptools)) |
| 42100 | (home-page "https://github.com/ValvePython/vdf") |
| 42101 | (synopsis "Work with Valve's VDF text format") |
| 42102 | (description |
| 42103 | "This package provides @code{python-vdf}, a library for working with |
| 42104 | Valve's VDF text format.") |
| 42105 | (license license:expat))) |
| 42106 | |
| 42107 | (define-public python-vendetect |
| 42108 | (package |
| 42109 | (name "python-vendetect") |
| 42110 | (version "0.0.3") |
| 42111 | (source |
| 42112 | (origin |
| 42113 | (method url-fetch) |
| 42114 | (uri (pypi-uri "vendetect" version)) |
| 42115 | (sha256 |
| 42116 | (base32 "0hi13sbgr8y66mih2xyzczjfff4lwymkn9cw5215ms2nn6qq9rhi")))) |
| 42117 | (build-system pyproject-build-system) |
| 42118 | (propagated-inputs (list python-copydetect python-rich)) |
| 42119 | (native-inputs (list python-hatchling python-pytest)) |
| 42120 | (home-page "https://github.com/trailofbits/vendetect") |
| 42121 | (synopsis "Detect vendored and copy-pasted code") |
| 42122 | (description |
| 42123 | "Vendetect helps identify copied or vendored code between repositories, |
| 42124 | making it easier to detect when code has been copied with or without |
| 42125 | attribution. It uses similarity detection algorithms to compare code files |
| 42126 | and highlight matching sections.") |
| 42127 | (license license:agpl3+))) |
| 42128 | |
| 42129 | ;; XXX: No updates since 2017. |
| 42130 | (define-public python-verboselogs |
| 42131 | (package |
| 42132 | (name "python-verboselogs") |
| 42133 | (version "1.7") |
| 42134 | (source |
| 42135 | (origin |
| 42136 | (method url-fetch) |
| 42137 | (uri (pypi-uri "verboselogs" version)) |
| 42138 | (sha256 |
| 42139 | (base32 "09z4d1jiasn7k1hs5af2ckmnrd0i1d1m04bhfjhv7z6svzfdwgg3")))) |
| 42140 | (build-system pyproject-build-system) |
| 42141 | (arguments |
| 42142 | (list |
| 42143 | #:test-flags |
| 42144 | ;; Do not run pylint plugin test, as astroid is an old unsupported |
| 42145 | ;; version. |
| 42146 | #~(list "-k" "not test_pylint_plugin" |
| 42147 | "verboselogs/tests.py"))) |
| 42148 | (native-inputs |
| 42149 | (list python-mock |
| 42150 | python-pytest |
| 42151 | python-setuptools)) |
| 42152 | (home-page "https://verboselogs.readthedocs.io") |
| 42153 | (synopsis "Verbose logging level for Python's logging module") |
| 42154 | (description |
| 42155 | "The @code{verboselogs} package extends Python's @code{logging} module to |
| 42156 | add the log levels NOTICE, SPAM, SUCCESS and VERBOSE.") |
| 42157 | (license license:expat))) |
| 42158 | |
| 42159 | (define-public python-verlib2 |
| 42160 | (package |
| 42161 | (name "python-verlib2") |
| 42162 | (version "0.3.1") |
| 42163 | (source |
| 42164 | (origin |
| 42165 | (method git-fetch) |
| 42166 | (uri (git-reference |
| 42167 | (url "https://github.com/pyveci/verlib2") |
| 42168 | (commit (string-append "v" version)))) |
| 42169 | (file-name (git-file-name name version)) |
| 42170 | (sha256 |
| 42171 | (base32 "1xp0qfzy4l4fs1rn1670fbf7d7xv1p2s3rplspx8xqszjd5j0n8c")))) |
| 42172 | (build-system pyproject-build-system) |
| 42173 | (native-inputs |
| 42174 | (list python-pretend python-pytest python-setuptools)) |
| 42175 | (home-page "https://github.com/pyveci/verlib2") |
| 42176 | (synopsis "Python versioning utilities") |
| 42177 | (description |
| 42178 | "This package provides a standalone variant of @code{distutils.version} and |
| 42179 | @code{packaging.version}, without anything else.") |
| 42180 | (license license:bsd-2))) |
| 42181 | |
| 42182 | ;; XXX: No updates since 2018, consider to remove when fails to build, it's a |
| 42183 | ;; leaf package. |
| 42184 | (define-public python-version |
| 42185 | ;; No version tags available in the git repo; just using bare commit instead. |
| 42186 | (let ((commit "5232eea250ab72cc5cb72b0b75efb35d2192b906") |
| 42187 | (revision "1")) |
| 42188 | (package |
| 42189 | (name "python-version") |
| 42190 | (version (git-version "0.0.2" revision commit)) |
| 42191 | (source |
| 42192 | (origin |
| 42193 | (method git-fetch) |
| 42194 | (uri (git-reference |
| 42195 | (url "https://gitlab.com/halfak/python_version") |
| 42196 | (commit commit))) |
| 42197 | (file-name (git-file-name name version)) |
| 42198 | (sha256 |
| 42199 | (base32 "0w210559ypdynlj9yn40m9awzkaknwrf682i99hswl7h66sdgh0h")))) |
| 42200 | (build-system pyproject-build-system) |
| 42201 | (arguments |
| 42202 | (list #:tests? #f)) ;no tests |
| 42203 | (native-inputs |
| 42204 | (list python-setuptools)) |
| 42205 | (home-page "https://gitlab.com/halfak/python_version") |
| 42206 | (synopsis "Python version checking utility") |
| 42207 | (description |
| 42208 | "This package provides a simple utility for checking the python version.") |
| 42209 | (license license:expat)))) |
| 42210 | |
| 42211 | (define-public python-versioneer |
| 42212 | (package |
| 42213 | (name "python-versioneer") |
| 42214 | (version "0.29") |
| 42215 | (source |
| 42216 | (origin |
| 42217 | (method url-fetch) |
| 42218 | (uri (pypi-uri "versioneer" version)) |
| 42219 | (sha256 |
| 42220 | (base32 |
| 42221 | "0cap4cjckxp9mlkprqayfs77k3pn5iwpr2riacdxc4bjhnwq7cjs")) |
| 42222 | (patches (search-patches "python-versioneer-guix-support.patch")))) |
| 42223 | (build-system pyproject-build-system) |
| 42224 | (arguments |
| 42225 | (list |
| 42226 | ;; Minimize test requirements. |
| 42227 | #:test-flags |
| 42228 | #~(list "--deselect=test/git/test_git.py::Repo::test_pyproject" |
| 42229 | "--ignore=test/git/test_invocations.py" |
| 42230 | "--ignore=test/test_render.py") |
| 42231 | #:phases |
| 42232 | #~(modify-phases %standard-phases |
| 42233 | (add-before 'check 'pre-check |
| 42234 | (lambda _ |
| 42235 | (invoke "python" "setup.py" "make_versioneer" |
| 42236 | "make_long_version_py_git")))))) |
| 42237 | (native-inputs |
| 42238 | (list git-minimal/pinned |
| 42239 | python-pytest |
| 42240 | python-setuptools)) |
| 42241 | (propagated-inputs |
| 42242 | (list python-tomli)) |
| 42243 | (home-page "https://github.com/python-versioneer/python-versioneer") |
| 42244 | (synopsis "Version-string management for VCS-controlled trees") |
| 42245 | (description |
| 42246 | "@code{versioneer} is a tool for managing a recorded version number in |
| 42247 | distutils-based python projects. The goal is to remove the tedious and |
| 42248 | error-prone \"update the embedded version string\" step from your release |
| 42249 | process.") |
| 42250 | (license license:unlicense))) |
| 42251 | |
| 42252 | (define-public python-verspec |
| 42253 | (package |
| 42254 | (name "python-verspec") |
| 42255 | (version "0.1.0") |
| 42256 | (source |
| 42257 | (origin |
| 42258 | (method url-fetch) |
| 42259 | (uri (pypi-uri "verspec" version)) |
| 42260 | (sha256 |
| 42261 | (base32 "07n06wv85fm4vl1ird2mja0823js3x322wgs9gdnq1djjyk4ql64")))) |
| 42262 | (build-system pyproject-build-system) |
| 42263 | (arguments |
| 42264 | (list |
| 42265 | #:phases |
| 42266 | #~(modify-phases %standard-phases |
| 42267 | (add-before 'check 'pre-check |
| 42268 | (lambda _ |
| 42269 | (invoke "touch" "test/__init__.py")))))) |
| 42270 | (native-inputs |
| 42271 | (list python-pretend |
| 42272 | python-pytest |
| 42273 | python-setuptools)) |
| 42274 | (home-page "https://github.com/jimporter/verspec") |
| 42275 | (synopsis "Flexible version handling for Python") |
| 42276 | (description |
| 42277 | "This Python library handles software versions and specifiers. It is |
| 42278 | adapted from the @code{packaging} package.") |
| 42279 | (license (list license:bsd-2 license:asl2.0)))) |
| 42280 | |
| 42281 | (define-public python-vine |
| 42282 | (package |
| 42283 | (name "python-vine") |
| 42284 | (version "5.1.0") |
| 42285 | (source |
| 42286 | (origin |
| 42287 | (method url-fetch) |
| 42288 | (uri (pypi-uri "vine" version)) |
| 42289 | (sha256 |
| 42290 | (base32 "1q31krwxdvwawdn1kfqmpplix31d4jhs0qng26908hawsf0yjqlb")))) |
| 42291 | (build-system pyproject-build-system) |
| 42292 | (arguments |
| 42293 | (list |
| 42294 | #:test-flags |
| 42295 | ;; AttributeError: 'test_barrier' object has no attribute 'ps'. |
| 42296 | #~(list "-k" (string-join |
| 42297 | (list "not test_evaluate" |
| 42298 | "test_reverse" |
| 42299 | "test_cancel" |
| 42300 | "test_throw") |
| 42301 | " and not ")))) |
| 42302 | (native-inputs |
| 42303 | (list python-pytest python-setuptools python-wheel)) |
| 42304 | (home-page "https://github.com/celery/vine") |
| 42305 | (synopsis "Promises for Python") |
| 42306 | (description |
| 42307 | "@code{vine} provides a special implementation of promises in that it can |
| 42308 | be used both for \"promise of a value\" and lazy evaluation. The biggest |
| 42309 | upside for this is that everything in a promise can also be a promise, |
| 42310 | e.g. filters, callbacks and errbacks can all be promises.") |
| 42311 | (license license:bsd-3))) |
| 42312 | |
| 42313 | (define-public python-virtualenv |
| 42314 | (package |
| 42315 | (name "python-virtualenv") |
| 42316 | (version "20.35.4") |
| 42317 | (source |
| 42318 | (origin |
| 42319 | (method git-fetch) |
| 42320 | (uri (git-reference |
| 42321 | (url "https://github.com/pypa/virtualenv") |
| 42322 | (commit version))) |
| 42323 | (file-name (git-file-name name version)) |
| 42324 | (sha256 |
| 42325 | (base32 "0yiwqkdxlk3ly8xafyc7raaib75hr6df6zs50n77ikbz9mhqixfh")))) |
| 42326 | (build-system pyproject-build-system) |
| 42327 | (arguments |
| 42328 | (list |
| 42329 | ;; tests: 347 passed, 43 skipped, 8 deselected |
| 42330 | #:test-flags |
| 42331 | #~(list #$@(map (lambda (ls) (string-append "--deselect=tests/unit/" |
| 42332 | (string-join ls "::"))) |
| 42333 | '(("discovery/py_info/test_py_info.py" |
| 42334 | "test_fallback_existent_system_executable") |
| 42335 | ("discovery/test_discovery.py" |
| 42336 | "test_get_paths_no_path_env") |
| 42337 | ("create/via_global_ref/test_build_c_ext.py" |
| 42338 | "test_can_build_c_extensions[cpython3-posix]") |
| 42339 | ("create/via_global_ref/test_build_c_ext.py" |
| 42340 | "test_can_build_c_extensions[venv]") |
| 42341 | ("create/test_creator.py" |
| 42342 | "test_create_distutils_cfg[cpython3-posix]") |
| 42343 | ("create/test_creator.py" |
| 42344 | "test_create_distutils_cfg[venv]") |
| 42345 | ("seed/embed/test_bootstrap_link_via_app_data.py" |
| 42346 | "test_seed_link_via_app_data[True]") |
| 42347 | ("seed/embed/test_bootstrap_link_via_app_data.py" |
| 42348 | "test_seed_link_via_app_data[False]")))))) |
| 42349 | (native-inputs |
| 42350 | (list python-flaky |
| 42351 | python-hatch-vcs |
| 42352 | python-hatchling |
| 42353 | python-packaging |
| 42354 | python-pytest |
| 42355 | python-pytest-env |
| 42356 | python-pytest-freezer |
| 42357 | python-pytest-mock |
| 42358 | python-pytest-timeout |
| 42359 | python-setuptools |
| 42360 | python-time-machine)) |
| 42361 | (propagated-inputs |
| 42362 | (list python-distlib |
| 42363 | python-filelock |
| 42364 | python-platformdirs)) |
| 42365 | (home-page "https://virtualenv.pypa.io/") |
| 42366 | (synopsis "Virtual Python environment builder") |
| 42367 | (description |
| 42368 | "Virtualenv is a tool to create isolated Python environments.") |
| 42369 | (license license:expat))) |
| 42370 | |
| 42371 | (define-public python-vncdotool |
| 42372 | (package |
| 42373 | (name "python-vncdotool") |
| 42374 | (version "1.2.0") |
| 42375 | (source |
| 42376 | (origin |
| 42377 | (method git-fetch) |
| 42378 | (uri (git-reference |
| 42379 | (url "http://github.com/sibson/vncdotool") |
| 42380 | (commit (string-append "v" version)))) |
| 42381 | (file-name (git-file-name name version)) |
| 42382 | (sha256 |
| 42383 | (base32 "1adsc263qsa3hcyk8mhv0wwq44h8zhcksx92chd5rr1wz37zmc22")))) |
| 42384 | (build-system pyproject-build-system) |
| 42385 | (propagated-inputs (list python-pillow python-pycryptodomex python-twisted)) |
| 42386 | (native-inputs (list python-pexpect python-pytest python-pyvirtualdisplay |
| 42387 | python-setuptools python-wheel)) |
| 42388 | (home-page "http://github.com/sibson/vncdotool") |
| 42389 | (synopsis "Command line VNC client") |
| 42390 | (description |
| 42391 | "This package provides a Python command line VNC client. It can be |
| 42392 | useful to automating interactions with virtual machines or hardware devices |
| 42393 | that are otherwise difficult to control.") |
| 42394 | (license license:expat))) |
| 42395 | |
| 42396 | (define-public python-vncdotool-bootstrap |
| 42397 | (hidden-package |
| 42398 | (package/inherit python-vncdotool |
| 42399 | (arguments (list #:tests? #f)) |
| 42400 | (native-inputs (list python-pexpect python-pytest python-setuptools |
| 42401 | python-wheel))))) |
| 42402 | |
| 42403 | (define-public python-vobject |
| 42404 | (package |
| 42405 | (name "python-vobject") |
| 42406 | (version "0.9.9") |
| 42407 | (source (origin |
| 42408 | (method url-fetch) |
| 42409 | (uri (pypi-uri "vobject" version)) |
| 42410 | (sha256 |
| 42411 | (base32 |
| 42412 | "13mk8wrg7js0zv3w8246jnxb3i5yp4ascl1csp0q9787wbbyai5c")))) |
| 42413 | (build-system pyproject-build-system) |
| 42414 | (arguments |
| 42415 | '(;; The test suite relies on some non-portable Windows interfaces. Tests |
| 42416 | ;; are rewokred on master's HEAD. |
| 42417 | #:tests? #f)) |
| 42418 | (native-inputs |
| 42419 | (list python-setuptools)) |
| 42420 | (propagated-inputs |
| 42421 | (list python-dateutil |
| 42422 | python-pytz |
| 42423 | python-six)) ;it's dropped on master's HEAD |
| 42424 | (home-page "https://py-vobject.github.io/") |
| 42425 | (synopsis "Parse and generate vCard and vCalendar files") |
| 42426 | (description |
| 42427 | "Vobject is intended to be a full featured Python package for parsing |
| 42428 | and generating vCard and vCalendar files. Currently, iCalendar files are |
| 42429 | supported and well tested. vCard 3.0 files are supported, and all data should |
| 42430 | be imported, but only a few components are understood in a sophisticated way.") |
| 42431 | (license license:asl2.0))) |
| 42432 | |
| 42433 | (define-public python-voluptuous |
| 42434 | (package |
| 42435 | (name "python-voluptuous") |
| 42436 | (version "0.15.2") |
| 42437 | (source |
| 42438 | (origin |
| 42439 | (method url-fetch) |
| 42440 | (uri (pypi-uri "voluptuous" version)) |
| 42441 | (sha256 |
| 42442 | (base32 "1akr0adq9can0ibravqzl4aaf20rgv47g9gk596hn8ykqhrapz3g")))) |
| 42443 | (build-system pyproject-build-system) |
| 42444 | (native-inputs |
| 42445 | (list python-pytest |
| 42446 | python-setuptools)) |
| 42447 | (home-page "https://github.com/alecthomas/voluptuous") |
| 42448 | (synopsis "Python data validation library") |
| 42449 | (description |
| 42450 | "Voluptuous is a Python data validation library. It is primarily |
| 42451 | intended for validating data coming into Python as JSON, YAML, etc.") |
| 42452 | (license license:bsd-3))) |
| 42453 | |
| 42454 | (define-public python-wadler-lindig |
| 42455 | (package |
| 42456 | (name "python-wadler-lindig") |
| 42457 | (version "0.1.7") |
| 42458 | (source |
| 42459 | (origin |
| 42460 | ;; GitHub includes the tests, unlike the PyPI tarball |
| 42461 | (method git-fetch) |
| 42462 | (uri (git-reference |
| 42463 | (url "https://github.com/patrick-kidger/wadler_lindig") |
| 42464 | (commit (string-append "v" version)))) |
| 42465 | (file-name (git-file-name name version)) |
| 42466 | (sha256 |
| 42467 | (base32 "0nl2zx75p0fza3xyd5qsl4gx68hma677gin68d290ivk6zmkdzx8")))) |
| 42468 | (build-system pyproject-build-system) |
| 42469 | (native-inputs (list python-hatchling python-pytest python-numpy)) |
| 42470 | (home-page "https://docs.kidger.site/wadler_lindig") |
| 42471 | (synopsis "Pretty printer for Python using the Wadler-Lindig algorithm") |
| 42472 | (description |
| 42473 | "Wadler-Lindig is a minimal, zero-dependency pretty-printing |
| 42474 | library for Python that implements a simplified version of the Wadler-Lindig |
| 42475 | algorithm. Designed to consume less horizontal space than Python's |
| 42476 | built-in pprint.pprint, it produces compact, well-formatted representations |
| 42477 | even for complex custom types.") |
| 42478 | (license license:asl2.0))) |
| 42479 | |
| 42480 | (define-public python-wand |
| 42481 | (package |
| 42482 | (name "python-wand") |
| 42483 | (version "0.7.2") |
| 42484 | (source |
| 42485 | (origin |
| 42486 | (method git-fetch) |
| 42487 | (uri (git-reference |
| 42488 | (url "https://github.com/emcconville/wand") |
| 42489 | (commit version))) |
| 42490 | (file-name (git-file-name name version)) |
| 42491 | (sha256 |
| 42492 | (base32 "0h6r9mk66w5wk8g2rfx6rlh26dvkix2rr08kv38bmqvg34kjz6fm")))) |
| 42493 | (build-system pyproject-build-system) |
| 42494 | (arguments |
| 42495 | (list |
| 42496 | #:phases |
| 42497 | #~(modify-phases %standard-phases |
| 42498 | (add-after 'unpack 'hardcode-lib-path |
| 42499 | (lambda _ |
| 42500 | (substitute* "wand/api.py" |
| 42501 | (("os\\.environ\\.get\\('MAGICK_HOME'\\)") |
| 42502 | (string-append "\"" #$(this-package-input "imagemagick") "\"")) |
| 42503 | (("os\\.environ\\.get\\('WAND_MAGICK_LIBRARY_SUFFIX'\\)") |
| 42504 | "\".Q16\""))))))) |
| 42505 | (native-inputs |
| 42506 | (list python-setuptools python-pytest)) |
| 42507 | (inputs |
| 42508 | (list imagemagick)) |
| 42509 | (home-page "https://docs.wand-py.org/") |
| 42510 | (synopsis "MagickWand API binding for Python") |
| 42511 | (description |
| 42512 | "Wand is a ctypes-based binding for ImageMagick's MagickWand library.") |
| 42513 | (license license:expat))) |
| 42514 | |
| 42515 | (define-public python-wasabi |
| 42516 | (package |
| 42517 | (name "python-wasabi") |
| 42518 | (version "1.1.3") |
| 42519 | (source |
| 42520 | (origin |
| 42521 | (method url-fetch) |
| 42522 | (uri (pypi-uri "wasabi" version)) |
| 42523 | (sha256 |
| 42524 | (base32 "0y085r7hym3x34a9jgxl5cd8gsh617rdmd187q6dn29q027h1csb")))) |
| 42525 | (build-system pyproject-build-system) |
| 42526 | (arguments |
| 42527 | (list |
| 42528 | #:test-flags |
| 42529 | ;; Test requires nbconvert which is huge. |
| 42530 | #~(list "--deselect=wasabi/tests/test_jupyter.py::test_jupyter"))) |
| 42531 | (native-inputs |
| 42532 | (list python-pytest |
| 42533 | python-setuptools)) |
| 42534 | (propagated-inputs |
| 42535 | (list python-colorama)) |
| 42536 | (home-page "https://github.com/ines/wasabi") |
| 42537 | (synopsis "Console printing and formatting toolkit") |
| 42538 | (description |
| 42539 | "This package provides a lightweight console printing and formatting |
| 42540 | toolkit for Python.") |
| 42541 | (license license:expat))) |
| 42542 | |
| 42543 | (define-public python-watchdog |
| 42544 | (package |
| 42545 | (name "python-watchdog") |
| 42546 | (version "6.0.0") |
| 42547 | (source |
| 42548 | (origin |
| 42549 | (method url-fetch) |
| 42550 | (uri (pypi-uri "watchdog" version)) |
| 42551 | (sha256 |
| 42552 | (base32 "10n2v2iflhdriwfp34yvhfcckqb6vs7378fdvqj8xbm3zn17rpwx")))) |
| 42553 | (build-system pyproject-build-system) |
| 42554 | (arguments |
| 42555 | (list |
| 42556 | #:test-flags |
| 42557 | #~(list "-k" (string-join |
| 42558 | (list "not test_kill_auto_restart" |
| 42559 | "test_auto_restart_on_file_change_debounce" |
| 42560 | ;; Fails with too many open files. |
| 42561 | "test_select_fd") |
| 42562 | " and not ")))) |
| 42563 | (native-inputs |
| 42564 | (list python-pytest python-setuptools)) |
| 42565 | (propagated-inputs |
| 42566 | (list python-pyyaml)) |
| 42567 | (home-page "https://github.com/gorakhargosh/watchdog") |
| 42568 | (synopsis "File system events monitoring") |
| 42569 | (description |
| 42570 | "This package provides a way to monitor file system events such as a file |
| 42571 | modification and trigger an action. This is similar to inotify, but |
| 42572 | portable.") |
| 42573 | (license license:asl2.0))) |
| 42574 | |
| 42575 | (define-public python-watchfiles |
| 42576 | (package |
| 42577 | (name "python-watchfiles") |
| 42578 | (version "1.1.1") |
| 42579 | (source |
| 42580 | (origin |
| 42581 | (method git-fetch) |
| 42582 | (uri (git-reference |
| 42583 | (url "https://github.com/samuelcolvin/watchfiles") |
| 42584 | (commit (string-append "v" version)))) |
| 42585 | (file-name (git-file-name name version)) |
| 42586 | (sha256 |
| 42587 | (base32 "1jj9lqbkk8q61g74lykqgyx4ck30kxs7ljkxqzwd2lwdhh4jfm2j")))) |
| 42588 | (build-system pyproject-build-system) |
| 42589 | (arguments |
| 42590 | (list |
| 42591 | ;; Missing file in source. |
| 42592 | #:test-flags ''("-k" "not test_docs_examples") |
| 42593 | #:imported-modules `(,@%cargo-build-system-modules |
| 42594 | ,@%pyproject-build-system-modules) |
| 42595 | #:modules '(((guix build cargo-build-system) #:prefix cargo:) |
| 42596 | (guix build pyproject-build-system) |
| 42597 | (guix build utils)) |
| 42598 | #:phases |
| 42599 | #~(modify-phases %standard-phases |
| 42600 | (add-after 'unpack 'prepare-cargo-build-system |
| 42601 | (lambda args |
| 42602 | (for-each |
| 42603 | (lambda (phase) |
| 42604 | (format #t "Running cargo phase: ~a~%" phase) |
| 42605 | (apply (assoc-ref cargo:%standard-phases phase) |
| 42606 | #:cargo-target #$(cargo-triplet) |
| 42607 | args)) |
| 42608 | '(unpack-rust-crates |
| 42609 | configure |
| 42610 | check-for-pregenerated-files |
| 42611 | patch-cargo-checksums)))) |
| 42612 | (add-after 'build 'install-rust-library |
| 42613 | (lambda _ |
| 42614 | (copy-file "target/release/lib_rust_notify.so" |
| 42615 | "watchfiles/_rust_notify.so")))))) |
| 42616 | (native-inputs |
| 42617 | (append |
| 42618 | (list maturin |
| 42619 | python-anyio |
| 42620 | python-dirty-equals |
| 42621 | python-pytest |
| 42622 | python-pytest-mock |
| 42623 | python-pytest-timeout |
| 42624 | rust |
| 42625 | `(,rust "cargo")) |
| 42626 | (or (and=> (%current-target-system) |
| 42627 | (compose list make-rust-sysroot)) |
| 42628 | '()))) |
| 42629 | (inputs |
| 42630 | (cargo-inputs 'python-watchfiles)) |
| 42631 | (propagated-inputs |
| 42632 | (list python-anyio)) |
| 42633 | (home-page "https://github.com/samuelcolvin/watchfiles") |
| 42634 | (synopsis "Simple, modern file watching and code reload in Python") |
| 42635 | (description |
| 42636 | "Simple, modern file watching and code reload in Python inspired by |
| 42637 | @code{watchdog}. Among the differences are a unified approach for each |
| 42638 | operating systems and an elegant approach to concurrency using threading.") |
| 42639 | (license license:expat))) |
| 42640 | |
| 42641 | (define-public python-wcmatch |
| 42642 | (package |
| 42643 | (name "python-wcmatch") |
| 42644 | (version "10.1") |
| 42645 | (source |
| 42646 | (origin |
| 42647 | (method git-fetch) |
| 42648 | (uri (git-reference |
| 42649 | (url "https://github.com/facelessuser/wcmatch") |
| 42650 | (commit version))) |
| 42651 | (file-name (git-file-name name version)) |
| 42652 | (sha256 |
| 42653 | (base32 "1pz6wyz2hlckl88y6z7v32sm5mfp2mqgar4z5f1kz7mixsdpmh41")))) |
| 42654 | (build-system pyproject-build-system) |
| 42655 | (arguments |
| 42656 | (list #:test-flags |
| 42657 | ;; ``test_glob_match_real_outside_curdir`` walks paths outside |
| 42658 | ;; the build directory which the sandbox does not permit. |
| 42659 | #~(list "-k" "not test_glob_match_real_outside_curdir") |
| 42660 | #:phases |
| 42661 | #~(modify-phases %standard-phases |
| 42662 | (add-before 'check 'set-home |
| 42663 | (lambda _ |
| 42664 | (setenv "HOME" (getcwd))))))) |
| 42665 | (native-inputs |
| 42666 | (list python-hatchling |
| 42667 | python-pytest)) |
| 42668 | (propagated-inputs |
| 42669 | (list python-bracex)) |
| 42670 | (home-page "https://facelessuser.github.io/wcmatch/") |
| 42671 | (synopsis "Wildcard and glob file name matcher") |
| 42672 | (description |
| 42673 | "Wcmatch provides an enhanced @code{fnmatch}, @code{glob}, and |
| 42674 | @code{pathlib} library. It adds features such as brace expansion,extended |
| 42675 | glob patterns, and recursive globbing with configurable behavior.") |
| 42676 | (license license:expat))) |
| 42677 | |
| 42678 | (define-public python-wcwidth |
| 42679 | (package |
| 42680 | (name "python-wcwidth") |
| 42681 | (version "0.2.13") |
| 42682 | (source (origin |
| 42683 | (method url-fetch) |
| 42684 | (uri (pypi-uri "wcwidth" version)) |
| 42685 | (sha256 |
| 42686 | (base32 |
| 42687 | "1dbj74q1iz349sdkxrkc90f7xd4y7a9bdvgxg3cqdcly7430rskj")))) |
| 42688 | (build-system pyproject-build-system) |
| 42689 | (native-inputs (list python-pytest python-setuptools)) |
| 42690 | (home-page "https://github.com/jquast/wcwidth") |
| 42691 | (synopsis "Measure number of terminal column cells of wide-character codes") |
| 42692 | (description |
| 42693 | "Wcwidth measures the number of terminal column cells of wide-character |
| 42694 | codes. It is useful for those implementing a terminal emulator, or programs |
| 42695 | that carefully produce output to be interpreted by one. It is a Python |
| 42696 | implementation of the @code{wcwidth} and @code{wcswidth} C functions specified |
| 42697 | in POSIX.1-2001 and POSIX.1-2008.") |
| 42698 | (license license:expat))) |
| 42699 | |
| 42700 | (define-public python-whatever |
| 42701 | (package |
| 42702 | (name "python-whatever") |
| 42703 | (version "0.7") |
| 42704 | (source |
| 42705 | (origin |
| 42706 | (method git-fetch) |
| 42707 | (uri (git-reference |
| 42708 | (url "https://github.com/Suor/whatever") |
| 42709 | (commit version))) |
| 42710 | (file-name (git-file-name name version)) |
| 42711 | (sha256 |
| 42712 | (base32 "1x5b4r3fppp208v52hn8inf2988w4llbkw9kvfc3w81dhmrf5fvq")))) |
| 42713 | (build-system pyproject-build-system) |
| 42714 | (native-inputs |
| 42715 | (list python-pytest python-setuptools python-wheel)) |
| 42716 | (home-page "https://github.com/Suor/whatever") |
| 42717 | (synopsis "Make anonymous functions by partial application of operators") |
| 42718 | (description "@code{whatever} provides an easy way to make anonymous |
| 42719 | functions by partial application of operators.") |
| 42720 | (license license:bsd-3))) |
| 42721 | |
| 42722 | (define-public python-whatthepatch |
| 42723 | (package |
| 42724 | (name "python-whatthepatch") |
| 42725 | (version "1.0.7") |
| 42726 | (source |
| 42727 | (origin |
| 42728 | (method url-fetch) |
| 42729 | (uri (pypi-uri "whatthepatch" version)) |
| 42730 | (sha256 |
| 42731 | (base32 "1pvygmgj9xqs8d9lsjxvg1mymni8pjsd44yl0a74002jxbmv9vwy")))) |
| 42732 | (build-system pyproject-build-system) |
| 42733 | (native-inputs (list python-pytest python-setuptools)) |
| 42734 | (home-page "https://github.com/cscorley/whatthepatch") |
| 42735 | (synopsis "Patch parsing and application library") |
| 42736 | (description |
| 42737 | "This package provides a patch parsing and application library.") |
| 42738 | (license license:expat))) |
| 42739 | |
| 42740 | (define-public python-wheel-filename |
| 42741 | (package |
| 42742 | (name "python-wheel-filename") |
| 42743 | (version "1.4.2") |
| 42744 | (source |
| 42745 | (origin |
| 42746 | (method url-fetch) |
| 42747 | (uri (pypi-uri "wheel_filename" version)) |
| 42748 | (sha256 |
| 42749 | (base32 "1zcqq8mydjjrk8x5xlm53bavs51jm40nz42a7500pd6bbm31r2c7")))) |
| 42750 | (build-system pyproject-build-system) |
| 42751 | (native-inputs (list python-hatchling python-pytest)) |
| 42752 | (home-page "https://github.com/wheelodex/wheel-filename") |
| 42753 | (synopsis "Parse wheel filenames") |
| 42754 | (description |
| 42755 | "This software allows you to verify |
| 42756 | @url{https://packaging.python.org/en/latest/specifications/binary-distribution-format/, wheel} |
| 42757 | filenames and parse them into their component fields. |
| 42758 | |
| 42759 | This package adheres strictly to the standard, with the following |
| 42760 | exceptions: |
| 42761 | |
| 42762 | @itemize @bullet |
| 42763 | @item |
| 42764 | Version components may be any sequence of the relevant set of |
| 42765 | characters; they are not verified for PEP 440 compliance. |
| 42766 | @item |
| 42767 | The @file{.whl} file extension is matched case-insensitively. |
| 42768 | @end itemize") |
| 42769 | (license license:expat))) |
| 42770 | |
| 42771 | (define-public python-wheezy-template |
| 42772 | (package |
| 42773 | (name "python-wheezy-template") |
| 42774 | (version "3.2.5") |
| 42775 | (source |
| 42776 | (origin |
| 42777 | (method git-fetch) |
| 42778 | (uri (git-reference |
| 42779 | (url "https://github.com/akornatskyy/wheezy.template") |
| 42780 | (commit version))) |
| 42781 | (file-name (git-file-name name version)) |
| 42782 | (sha256 |
| 42783 | (base32 "1ky0j2d5znsx4pxb2szbpmxg6qw71134n4x5y22fiiicbbw8bm49")))) |
| 42784 | (build-system pyproject-build-system) |
| 42785 | (native-inputs (list python-setuptools python-pytest)) |
| 42786 | (home-page "https://github.com/akornatskyy/wheezy.template") |
| 42787 | (synopsis "Lightweight template library") |
| 42788 | (description "This package provides a lightweight template library which |
| 42789 | aims to be compact, expressive, intuitive and fast.") |
| 42790 | (license license:expat))) |
| 42791 | |
| 42792 | (define-public python-whenever |
| 42793 | (package |
| 42794 | (name "python-whenever") |
| 42795 | (version "0.9.2") |
| 42796 | (source |
| 42797 | (origin |
| 42798 | (method url-fetch) |
| 42799 | (uri (pypi-uri "whenever" version)) |
| 42800 | (sha256 |
| 42801 | (base32 "1awcy5s25z2f7yk4n4x3ibjhypxz7ilgz4hi3fiww58pdcgzcnpw")))) |
| 42802 | (build-system pyproject-build-system) |
| 42803 | (arguments |
| 42804 | (list |
| 42805 | ;; tests: 2170 passed, 3 skipped, 2 warnings |
| 42806 | #:phases |
| 42807 | #~(modify-phases %standard-phases |
| 42808 | ;; Use the pure python version |
| 42809 | (add-before 'build 'setenv |
| 42810 | (lambda _ |
| 42811 | (setenv "WHENEVER_NO_BUILD_RUST_EXT" "1"))) |
| 42812 | (add-before 'check 'set-check-environment |
| 42813 | (lambda* (#:key inputs #:allow-other-keys) |
| 42814 | (setenv "TZ" "UTC") |
| 42815 | (setenv "TZDIR" |
| 42816 | (search-input-directory inputs |
| 42817 | "share/zoneinfo"))))))) |
| 42818 | (propagated-inputs |
| 42819 | (list python-time-machine python-tzdata python-tzlocal)) |
| 42820 | (native-inputs |
| 42821 | (list python-pytest |
| 42822 | python-setuptools |
| 42823 | tzdata-for-tests)) |
| 42824 | (home-page "https://whenever.readthedocs.io/") |
| 42825 | (synopsis "Modern datetime library for Python") |
| 42826 | (description "Modern datetime library for Python. Supports: |
| 42827 | @itemize |
| 42828 | @item DST-safe arithmetic |
| 42829 | @item Nanosecond precision |
| 42830 | @item Date arithmetic |
| 42831 | @end itemize") |
| 42832 | (license license:expat))) |
| 42833 | |
| 42834 | ;; XXX: See: <https://github.com/cookiecutter/whichcraft/issues/26>. |
| 42835 | (define-public python-whichcraft |
| 42836 | (package |
| 42837 | (name "python-whichcraft") |
| 42838 | (version "0.6.1") |
| 42839 | (source |
| 42840 | (origin |
| 42841 | (method url-fetch) |
| 42842 | (uri (pypi-uri "whichcraft" version)) |
| 42843 | (sha256 |
| 42844 | (base32 |
| 42845 | "11yfkzyplizdgndy34vyd5qlmr1n5mxis3a3svxmx8fnccdvknxc")))) |
| 42846 | (build-system pyproject-build-system) |
| 42847 | (native-inputs |
| 42848 | (list python-pytest python-setuptools)) |
| 42849 | (home-page "https://github.com/pydanny/whichcraft") |
| 42850 | (synopsis "Cross-platform cross-python shutil.which functionality") |
| 42851 | (description |
| 42852 | "This package provides a shim of the shutil.which function that's |
| 42853 | designed to work across multiple versions of Python.") |
| 42854 | (license license:bsd-3))) |
| 42855 | |
| 42856 | (define-public python-widgetsnbextension |
| 42857 | (package |
| 42858 | (name "python-widgetsnbextension") |
| 42859 | (version "4.0.14") |
| 42860 | (source |
| 42861 | (origin |
| 42862 | (method url-fetch) |
| 42863 | (uri (pypi-uri "widgetsnbextension" version)) |
| 42864 | (sha256 |
| 42865 | (base32 "1bxm6ys3kmxfhi8dns9q6xrjkxijfa606qpq5lhr7f7dwc29nqm3")))) |
| 42866 | (build-system pyproject-build-system) |
| 42867 | (arguments |
| 42868 | (list #:tests? #f)) ;no tests in PyPI or git |
| 42869 | (native-inputs |
| 42870 | (list python-jupyter-packaging |
| 42871 | python-setuptools)) |
| 42872 | (home-page "https://ipython.org") |
| 42873 | (synopsis "IPython HTML widgets for Jupyter") |
| 42874 | (description "This package provides interactive HTML widgets for Jupyter |
| 42875 | notebooks.") |
| 42876 | (license license:bsd-3))) |
| 42877 | |
| 42878 | (define-public python-wrapt |
| 42879 | (package |
| 42880 | (name "python-wrapt") |
| 42881 | (version "2.0.1") |
| 42882 | (source |
| 42883 | (origin |
| 42884 | (method url-fetch) |
| 42885 | (uri (pypi-uri "wrapt" version)) |
| 42886 | (sha256 |
| 42887 | (base32 "13s6zkcs2291bf73prrnl73wmap04cdv3y443swaqz29g1g6774w")))) |
| 42888 | (build-system pyproject-build-system) |
| 42889 | (arguments |
| 42890 | (list |
| 42891 | ;; tests: 562 passed, 1 deselected |
| 42892 | #:test-flags |
| 42893 | ;; AssertionError: Output did not match expected for |
| 42894 | ;; mypy_function_wrapper_fn_t6.py |
| 42895 | #~(list "--deselect=tests/conftest.py::mypy_function_wrapper_fn_t6"))) |
| 42896 | (native-inputs |
| 42897 | (list python-mypy-for-tests ;hard dependencies in tests |
| 42898 | python-pytest |
| 42899 | python-setuptools)) |
| 42900 | (home-page "https://github.com/GrahamDumpleton/wrapt") |
| 42901 | (synopsis "Module for decorators, wrappers and monkey patching") |
| 42902 | (description |
| 42903 | "The aim of the wrapt module is to provide a transparent object proxy for |
| 42904 | Python, which can be used as the basis for the construction of function |
| 42905 | wrappers and decorator functions.") |
| 42906 | (license license:bsd-2))) |
| 42907 | |
| 42908 | (define-public python-wurlitzer |
| 42909 | (package |
| 42910 | (name "python-wurlitzer") |
| 42911 | (version "3.1.1") |
| 42912 | (source |
| 42913 | (origin |
| 42914 | (method url-fetch) |
| 42915 | (uri (pypi-uri "wurlitzer" version)) |
| 42916 | (sha256 |
| 42917 | (base32 "1ncvsc6b0bscvj5dn4iyyw42sf7ssgdqkzxr0bc8f97hp5519fdz")))) |
| 42918 | (build-system pyproject-build-system) |
| 42919 | (arguments |
| 42920 | (list #:test-flags #~(list "test.py"))) |
| 42921 | (native-inputs |
| 42922 | (list python-pytest |
| 42923 | python-setuptools)) |
| 42924 | (home-page "https://github.com/minrk/wurlitzer") |
| 42925 | (synopsis "Capture C-level output in context managers") |
| 42926 | (description |
| 42927 | "This library helps to redirect @code{sys.stdout} to a stream or a file |
| 42928 | while executing some piece of code, including C code running within a Python |
| 42929 | process.") |
| 42930 | (license license:expat))) |
| 42931 | |
| 42932 | (define-public python-xattr |
| 42933 | (package |
| 42934 | (name "python-xattr") |
| 42935 | (version "1.2.0") |
| 42936 | (source |
| 42937 | (origin |
| 42938 | (method url-fetch) |
| 42939 | (uri (pypi-uri "xattr" version)) |
| 42940 | (sha256 |
| 42941 | (base32 "19z0wp1plr5g8a3jknipii3qmqp3znwd63zqrhx19gpixwhqwk56")))) |
| 42942 | (build-system pyproject-build-system) |
| 42943 | (native-inputs |
| 42944 | (list python-pytest |
| 42945 | python-setuptools)) |
| 42946 | (propagated-inputs |
| 42947 | (list python-cffi)) |
| 42948 | (home-page "https://github.com/xattr/xattr") |
| 42949 | (synopsis "Python wrapper for extended file system attributes") |
| 42950 | (description "This package provides a Python wrapper for using extended |
| 42951 | file system attributes. Extended attributes extend the basic attributes of files |
| 42952 | and directories in the file system. They are stored as name:data pairs |
| 42953 | associated with file system objects (files, directories, symlinks, etc).") |
| 42954 | (license license:expat))) |
| 42955 | |
| 42956 | (define-public python-xdg-base-dirs |
| 42957 | (package |
| 42958 | (name "python-xdg-base-dirs") |
| 42959 | (version "6.0.2") |
| 42960 | (source |
| 42961 | (origin |
| 42962 | (method git-fetch) |
| 42963 | (uri (git-reference |
| 42964 | (url "https://github.com/srstevenson/xdg-base-dirs") |
| 42965 | (commit version))) |
| 42966 | (file-name (git-file-name name version)) |
| 42967 | (sha256 (base32 "0ipqrgmxzbn061m02halpsnizp56yk24cyzpwrjnlzjk8icvswl9")) |
| 42968 | (modules '((guix build utils))) |
| 42969 | ;; All pytest options are for coverage; remove snippet in next release: |
| 42970 | ;; https://github.com/srstevenson/xdg-base-dirs/commit/28b6a6beaeb5 |
| 42971 | (snippet #~(substitute* "pyproject.toml" |
| 42972 | (("^addopts = .*") ""))))) |
| 42973 | (build-system pyproject-build-system) |
| 42974 | (native-inputs |
| 42975 | (list python-poetry-core python-pytest)) |
| 42976 | (home-page "https://github.com/srstevenson/xdg-base-dirs") |
| 42977 | (synopsis "Variables defined by the XDG Base Directory Specification") |
| 42978 | (description "xdg-base-dirs is a Python module that provides functions to |
| 42979 | return paths to the directories defined by the XDG Base Directory |
| 42980 | Specification, to save you from duplicating the same snippet of logic in every |
| 42981 | Python utility you write that deals with user cache, configuration, or data |
| 42982 | files.") |
| 42983 | (license license:isc))) |
| 42984 | |
| 42985 | (define-public python-xkbcommon |
| 42986 | (package |
| 42987 | (name "python-xkbcommon") |
| 42988 | (version "1.0.1") |
| 42989 | (source |
| 42990 | (origin |
| 42991 | (method git-fetch) |
| 42992 | (uri (git-reference |
| 42993 | (url "https://github.com/sde1000/python-xkbcommon") |
| 42994 | (commit (string-append "v" version)))) |
| 42995 | (file-name (git-file-name name version)) |
| 42996 | (sha256 |
| 42997 | (base32 "0r9fknyys2mr5fl9hbyp8n9izf27553yf49krzinzksnfr9b6c7s")))) |
| 42998 | (build-system pyproject-build-system) |
| 42999 | (propagated-inputs (list python-cffi)) |
| 43000 | (native-inputs (list libxkbcommon python-setuptools)) |
| 43001 | (arguments |
| 43002 | (list |
| 43003 | #:test-backend |
| 43004 | #~'unittest |
| 43005 | #:phases |
| 43006 | #~(modify-phases %standard-phases |
| 43007 | (add-before 'check 'cleanup |
| 43008 | (lambda _ |
| 43009 | (delete-file-recursively "xkbcommon")))))) |
| 43010 | (home-page "https://github.com/sde1000/python-xkbcommon") |
| 43011 | (synopsis "Bindings for libxkbcommon using cffi") |
| 43012 | (description "Bindings for libxkbcommon using cffi.") |
| 43013 | (license license:expat))) |
| 43014 | |
| 43015 | (define-public python-xlib |
| 43016 | (package |
| 43017 | (name "python-xlib") |
| 43018 | (version "0.33") |
| 43019 | (source |
| 43020 | (origin |
| 43021 | (method git-fetch) |
| 43022 | (uri (git-reference |
| 43023 | (url "https://github.com/python-xlib/python-xlib") |
| 43024 | (commit version))) |
| 43025 | (file-name (git-file-name name version)) |
| 43026 | (sha256 |
| 43027 | (base32 "03d28lx6sz0724ps6lnn4m6s0cfspgwqdf2l773lqf88add8wkmv")))) |
| 43028 | (build-system pyproject-build-system) |
| 43029 | (arguments |
| 43030 | `(#:phases |
| 43031 | (modify-phases %standard-phases |
| 43032 | (add-before 'check 'start-xserver |
| 43033 | (lambda* (#:key inputs #:allow-other-keys) |
| 43034 | (let ((xorg-server (assoc-ref inputs "xorg-server"))) |
| 43035 | ;; There must be a running X server and make check doesn't |
| 43036 | ;; start one. Therefore we must do it. |
| 43037 | (system (format #f "~a/bin/Xvfb :1 &" xorg-server)) |
| 43038 | (setenv "DISPLAY" ":1"))))))) |
| 43039 | (native-inputs |
| 43040 | (list python-mock |
| 43041 | python-pytest |
| 43042 | python-setuptools |
| 43043 | xorg-server)) |
| 43044 | (propagated-inputs |
| 43045 | (list python-six)) |
| 43046 | (home-page "https://github.com/python-xlib/python-xlib") |
| 43047 | (synopsis "Python X11 client library") |
| 43048 | (description |
| 43049 | "The Python X Library is intended to be a fully functional |
| 43050 | X client library for Python programs. It is useful to implement |
| 43051 | low-level X clients. It is written entirely in Python.") |
| 43052 | (license license:gpl2+))) |
| 43053 | |
| 43054 | (define-public python-xlrd |
| 43055 | (package |
| 43056 | (name "python-xlrd") |
| 43057 | (version "2.0.2") |
| 43058 | (source |
| 43059 | (origin |
| 43060 | (method git-fetch) ;no tests in PyPI archive |
| 43061 | (uri (git-reference |
| 43062 | (url "https://github.com/python-excel/xlrd") |
| 43063 | (commit version))) |
| 43064 | (file-name (git-file-name name version)) |
| 43065 | (sha256 |
| 43066 | (base32 "1zgb03a4l2an2hy17w0nlyfisl53jzf8csdj90f5xkibbnjsg3y3")))) |
| 43067 | (build-system pyproject-build-system) |
| 43068 | (native-inputs |
| 43069 | (list python-pytest |
| 43070 | python-setuptools)) |
| 43071 | (home-page "https://www.python-excel.org/") |
| 43072 | (synopsis "Library for extracting data from Excel files") |
| 43073 | (description "This package provides a library to extract data from |
| 43074 | spreadsheets using Microsoft Excel proprietary file formats @samp{.xls} and |
| 43075 | @samp{.xlsx} (versions 2.0 onwards). It has support for Excel dates and is |
| 43076 | Unicode-aware. It is not intended as an end-user tool.") |
| 43077 | (license license:bsd-3))) |
| 43078 | |
| 43079 | (define-public python-xlsxwriter |
| 43080 | (package |
| 43081 | (name "python-xlsxwriter") |
| 43082 | (version "3.2.0") |
| 43083 | (source |
| 43084 | (origin |
| 43085 | ;; There are no tests in the PyPI tarball. |
| 43086 | (method git-fetch) |
| 43087 | (uri (git-reference |
| 43088 | (url "https://github.com/jmcnamara/XlsxWriter") |
| 43089 | (commit (string-append "RELEASE_" version)))) |
| 43090 | (file-name (git-file-name name version)) |
| 43091 | (sha256 |
| 43092 | (base32 "1g16xb4nsjd807qcm8756ixlxxvdjmbr2v7r6wxkajw1h4m8id0w")))) |
| 43093 | (build-system pyproject-build-system) |
| 43094 | (native-inputs |
| 43095 | (list python-setuptools |
| 43096 | python-wheel)) |
| 43097 | (home-page "https://github.com/jmcnamara/XlsxWriter") |
| 43098 | (synopsis "Python module for creating Excel XLSX files") |
| 43099 | (description |
| 43100 | "XlsxWriter is a Python module that can be used to write text, numbers, |
| 43101 | formulas and hyperlinks to multiple worksheets in an Excel 2007+ XLSX file.") |
| 43102 | (license license:bsd-2))) |
| 43103 | |
| 43104 | ;;; Note: this package is unmaintained since 2018 (archived on GitHub). |
| 43105 | (define-public python-xlwt |
| 43106 | (package |
| 43107 | (name "python-xlwt") |
| 43108 | (version "1.3.0") |
| 43109 | (source |
| 43110 | (origin |
| 43111 | (method url-fetch) |
| 43112 | (uri (pypi-uri "xlwt" version)) |
| 43113 | (sha256 |
| 43114 | (base32 "123c2pdamshkq75wwvck8fq0cjq1843xd3x9qaiz2a4vg9qi56f5")))) |
| 43115 | (build-system pyproject-build-system) |
| 43116 | (native-inputs (list python-pytest python-setuptools python-wheel)) |
| 43117 | (home-page "https://www.python-excel.org/") |
| 43118 | (synopsis "Library for creating spreadsheet Excel files") |
| 43119 | (description |
| 43120 | "@code{xlwt} is a library for writing data and formatting information to |
| 43121 | older Excel files (i.e. .xls). The package itself is pure Python with no |
| 43122 | dependencies on modules or packages outside the standard Python distribution. |
| 43123 | It is not intended as an end-user tool.") |
| 43124 | (license license:bsd-3))) |
| 43125 | |
| 43126 | (define-public python-xmldiff |
| 43127 | (package |
| 43128 | (name "python-xmldiff") |
| 43129 | (version "3.0b1") |
| 43130 | (source |
| 43131 | (origin |
| 43132 | (method git-fetch) |
| 43133 | (uri (git-reference |
| 43134 | (url "https://github.com/Shoobx/xmldiff") |
| 43135 | (commit version))) |
| 43136 | (file-name (git-file-name name version)) |
| 43137 | (sha256 |
| 43138 | (base32 "0p4ry9dl719gmgkxksdv4ghyyzib1irg6g27bbkla2wmprrj1ai9")))) |
| 43139 | (build-system pyproject-build-system) |
| 43140 | (native-inputs (list python-pytest python-setuptools)) |
| 43141 | (propagated-inputs (list python-lxml)) |
| 43142 | (home-page "https://github.com/Shoobx/xmldiff") |
| 43143 | (synopsis "Creates diffs of XML files") |
| 43144 | (description "This Python tool figures out the differences between two |
| 43145 | similar XML files, in the same way the @command{diff} utility does it.") |
| 43146 | (license license:expat))) |
| 43147 | |
| 43148 | (define-public python-xmlsec |
| 43149 | (package |
| 43150 | (name "python-xmlsec") |
| 43151 | (version "1.3.17") |
| 43152 | (source |
| 43153 | (origin |
| 43154 | (method git-fetch) |
| 43155 | (uri (git-reference |
| 43156 | (url "https://github.com/xmlsec/python-xmlsec") |
| 43157 | (commit version))) |
| 43158 | (file-name (git-file-name name version)) |
| 43159 | (sha256 |
| 43160 | (base32 "1kd34c248jz603jisamxcs18xchyyizkzaqnfv5668yl6bj7nxd7")))) |
| 43161 | (build-system pyproject-build-system) |
| 43162 | (arguments |
| 43163 | (list |
| 43164 | ;; See https://github.com/xmlsec/python-xmlsec/issues/210 |
| 43165 | #:test-flags #~(list "-n" "1"))) |
| 43166 | (inputs (list openssl libltdl libxslt libxml2)) |
| 43167 | (propagated-inputs (list python-lxml xmlsec-openssl)) |
| 43168 | (native-inputs (list pkg-config |
| 43169 | python-lxml |
| 43170 | python-pkgconfig |
| 43171 | python-pytest |
| 43172 | python-pytest-xdist |
| 43173 | python-setuptools |
| 43174 | python-setuptools-scm |
| 43175 | python-wheel)) |
| 43176 | (home-page "https://github.com/xmlsec/python-xmlsec") |
| 43177 | (synopsis "Python bindings for the XML Security Library") |
| 43178 | (description "This package provides Python bindings for the XML Security |
| 43179 | Library.") |
| 43180 | (license license:expat))) |
| 43181 | |
| 43182 | (define-public python-xmod |
| 43183 | (package |
| 43184 | (name "python-xmod") |
| 43185 | (version "1.10.0") |
| 43186 | (source |
| 43187 | (origin |
| 43188 | (method git-fetch) |
| 43189 | (uri (git-reference |
| 43190 | (url "https://github.com/rec/xmod") |
| 43191 | (commit (string-append "v" version)))) |
| 43192 | (file-name (git-file-name name version)) |
| 43193 | (sha256 |
| 43194 | (base32 "0a2ywlfa0s4aqs1yag9xirv69029xmw307mbfqz7vhy8dadc2z30")))) |
| 43195 | (build-system pyproject-build-system) |
| 43196 | (native-inputs (list python-hatchling python-pytest)) |
| 43197 | (home-page "https://rec.github.io/xmod/") |
| 43198 | (synopsis "Turn any object into a module") |
| 43199 | (description |
| 43200 | "@code{xmod} is a tiny library that lets a module to do things that |
| 43201 | normally only a class could do.") |
| 43202 | (license license:expat))) |
| 43203 | |
| 43204 | (define-public python-xmp-toolkit |
| 43205 | (package |
| 43206 | (name "python-xmp-toolkit") |
| 43207 | (version "2.1.0") |
| 43208 | (source |
| 43209 | (origin |
| 43210 | (method url-fetch) |
| 43211 | (uri (pypi-uri "python_xmp_toolkit" version)) |
| 43212 | (sha256 |
| 43213 | (base32 "1np2njq6c1fnxh6bbh3xp2slz5dm7aamknv7hxax53a11p3a42na")))) |
| 43214 | (build-system pyproject-build-system) |
| 43215 | (arguments |
| 43216 | (list |
| 43217 | #:phases |
| 43218 | #~(modify-phases %standard-phases |
| 43219 | (add-after 'unpack 'patch-source |
| 43220 | (lambda* (#:key inputs #:allow-other-keys) |
| 43221 | (substitute* "libxmp/exempi.py" |
| 43222 | (("ctypes.util.find_library\\('exempi'\\)") |
| 43223 | (format #f "~s" (search-input-file |
| 43224 | inputs "lib/libexempi.so"))))))))) |
| 43225 | (native-inputs |
| 43226 | (list python-pytest |
| 43227 | python-flit-core)) |
| 43228 | (inputs |
| 43229 | (list exempi)) |
| 43230 | (propagated-inputs |
| 43231 | (list python-pytz)) |
| 43232 | (home-page "https://github.com/python-xmp-toolkit/python-xmp-toolkit") |
| 43233 | (synopsis "Python XMP Toolkit for working with metadata") |
| 43234 | (description "Python XMP Toolkit is a library for working with XMP |
| 43235 | metadata, as well as reading/writing XMP metadata stored in many different |
| 43236 | file formats. |
| 43237 | |
| 43238 | Python XMP Toolkit is wrapping Exempi (using ctypes), a C/C++ XMP library |
| 43239 | based on Adobe XMP Toolkit, ensuring that future updates to the XMP standard |
| 43240 | are easily incorporated into the library with a minimum amount of work.") |
| 43241 | (license license:bsd-3))) |
| 43242 | |
| 43243 | (define-public python-yamlcore |
| 43244 | (package |
| 43245 | (name "python-yamlcore") |
| 43246 | (version "0.0.4") |
| 43247 | (source |
| 43248 | (origin |
| 43249 | (method git-fetch) |
| 43250 | (uri (git-reference |
| 43251 | (url "https://github.com/perlpunk/pyyaml-core") |
| 43252 | (commit (string-append "v" version)))) |
| 43253 | (file-name (git-file-name name version)) |
| 43254 | (sha256 |
| 43255 | (base32 "03y7fabyky67cw4g71xcbwfdal79wxcnmr303qyllz21x2d4s5ac")))) |
| 43256 | (build-system pyproject-build-system) |
| 43257 | (arguments |
| 43258 | (list |
| 43259 | #:phases |
| 43260 | #~(modify-phases %standard-phases |
| 43261 | (add-after 'unpack 'fix-test-file-names |
| 43262 | (lambda _ |
| 43263 | (rename-file "tests/test-schema.py" "tests/test_schema.py") |
| 43264 | (rename-file "tests/test-yaml.py" "tests/test_yaml.py")))))) |
| 43265 | (native-inputs (list python-pytest python-setuptools)) |
| 43266 | (inputs (list python-pyyaml)) |
| 43267 | (home-page "https://github.com/perlpunk/pyyaml-core") |
| 43268 | (synopsis "YAML 1.2 support for PyYAML") |
| 43269 | (description "This module can be used on top of PyYAML to load YAML 1.2 |
| 43270 | files.") |
| 43271 | (license license:expat))) |
| 43272 | |
| 43273 | (define-deprecated-package python-yamlcore-0.0.2 python-yamlcore) |
| 43274 | |
| 43275 | (define-public python-yamllint |
| 43276 | (package |
| 43277 | (name "python-yamllint") |
| 43278 | (version "1.38.0") |
| 43279 | (source |
| 43280 | (origin |
| 43281 | (method git-fetch) |
| 43282 | (uri (git-reference |
| 43283 | (url "https://github.com/adrienverge/yamllint") |
| 43284 | (commit (string-append "v" version)))) |
| 43285 | (file-name (git-file-name name version)) |
| 43286 | (sha256 |
| 43287 | (base32 "18wqyj600jhzwm01wnpc48cyppbkwrwz93vr47338iwkgmp2szz0")))) |
| 43288 | (build-system pyproject-build-system) |
| 43289 | (arguments |
| 43290 | (list #:test-backend #~'unittest)) |
| 43291 | (native-inputs |
| 43292 | (list python-setuptools)) |
| 43293 | (propagated-inputs |
| 43294 | (list python-pathspec python-pyyaml)) |
| 43295 | (home-page "https://github.com/adrienverge/yamllint") |
| 43296 | (synopsis "Linter for YAML files") |
| 43297 | (description |
| 43298 | "Yamllint is a linter for YAML files. yamllint does not only check for |
| 43299 | syntax validity, but for weirdnesses like key repetition and cosmetic problems |
| 43300 | such as lines length, trailing spaces, indentation, etc.") |
| 43301 | (license license:gpl3+))) |
| 43302 | |
| 43303 | (define-public python-yamlloader |
| 43304 | (package |
| 43305 | (name "python-yamlloader") |
| 43306 | (version "1.6.0") |
| 43307 | (source |
| 43308 | (origin |
| 43309 | (method url-fetch) |
| 43310 | (uri (pypi-uri "yamlloader" version)) |
| 43311 | (sha256 |
| 43312 | (base32 "0gw21aa94fcbf5knx9csc0l44rzgz5pjdcvlxxwx044rdjbk50li")))) |
| 43313 | (build-system pyproject-build-system) |
| 43314 | (arguments |
| 43315 | (list #:test-backend #~'unittest |
| 43316 | #:test-flags #~(list "discover" "-v"))) |
| 43317 | (native-inputs |
| 43318 | (list python-hatch-vcs |
| 43319 | python-hatchling |
| 43320 | python-hypothesis |
| 43321 | python-pytest)) |
| 43322 | (propagated-inputs |
| 43323 | (list python-pyyaml)) |
| 43324 | (home-page "https://github.com/Phynix/yamlloader") |
| 43325 | (synopsis "Ordered YAML loader and dumper for PyYAML") |
| 43326 | (description |
| 43327 | "This package provides loaders and dumpers for PyYAML. Currently, an |
| 43328 | OrderedDict loader/dumper is implemented, allowing to keep items order when |
| 43329 | loading resp. dumping a file from/to an OrderedDict (Python 3.8+: Also regular |
| 43330 | dicts are supported and are the default items to be loaded to. As of Python |
| 43331 | 3.7 preservation of insertion order is a language feature of regular dicts.) |
| 43332 | It was originally mirrored from |
| 43333 | @url{https://github.com/fmenabe/python-yamlordereddictloader, |
| 43334 | yamlordereddict}.") |
| 43335 | (license license:expat))) |
| 43336 | |
| 43337 | ;; XXX: Deprecated, the <https://github.com/Phynix/yamlloader> project provide |
| 43338 | ;; an improved version of this library with unit tests, performance |
| 43339 | ;; improvements (by providing access to the C implementation of PyYAML) and is |
| 43340 | ;; more actively developed. |
| 43341 | (define-public python-yamlordereddictloader |
| 43342 | (package |
| 43343 | (name "python-yamlordereddictloader") |
| 43344 | (version "0.4.2") |
| 43345 | (source |
| 43346 | (origin |
| 43347 | (method git-fetch) |
| 43348 | (uri (git-reference |
| 43349 | (url "https://github.com/fmenabe/python-yamlordereddictloader") |
| 43350 | (commit version))) |
| 43351 | (file-name (git-file-name name version)) |
| 43352 | (sha256 |
| 43353 | (base32 "1rwvasdmfq7lbd2bm7vmx759fv535cp5ndyhf845fqd86mr7a94c")))) |
| 43354 | (build-system pyproject-build-system) |
| 43355 | (arguments |
| 43356 | (list #:tests? #f)) ;no tests |
| 43357 | (native-inputs |
| 43358 | (list python-setuptools)) |
| 43359 | (propagated-inputs |
| 43360 | (list python-pyyaml)) |
| 43361 | (home-page "https://github.com/fmenabe/python-yamlordereddictloader") |
| 43362 | (synopsis "Loader and a dumper for PyYAML") |
| 43363 | (description |
| 43364 | "yamlordereddictloader is a Python package that provides a loader and a |
| 43365 | dumper for PyYAML allowing to keep items order when loading a file (by putting |
| 43366 | them in OrderedDict objects) and to manage OrderedDict objects when dumping to |
| 43367 | a file.") |
| 43368 | (license license:expat))) |
| 43369 | |
| 43370 | (define-public python-yapf |
| 43371 | (package |
| 43372 | (name "python-yapf") |
| 43373 | (version "0.43.0") |
| 43374 | (source |
| 43375 | (origin |
| 43376 | (method url-fetch) |
| 43377 | (uri (pypi-uri "yapf" version)) |
| 43378 | (sha256 |
| 43379 | (base32 |
| 43380 | "13i1sn0jfm7snfdzbyrawxl457bdmgsxkmg0n8h99zzdpwjamlq0")))) |
| 43381 | (build-system pyproject-build-system) |
| 43382 | (propagated-inputs |
| 43383 | (list python-platformdirs python-tomli)) |
| 43384 | (native-inputs |
| 43385 | (list python-pytest python-setuptools python-wheel)) |
| 43386 | (home-page "https://github.com/google/yapf") |
| 43387 | (synopsis "Formatter for Python code") |
| 43388 | (description "YAPF is a formatter for Python code. It's based off of |
| 43389 | @dfn{clang-format}, developed by Daniel Jasper. In essence, the algorithm |
| 43390 | takes the code and reformats it to the best formatting that conforms to the |
| 43391 | style guide, even if the original code didn't violate the style guide.") |
| 43392 | (license license:asl2.0))) |
| 43393 | |
| 43394 | (define-public python-yappi |
| 43395 | (package |
| 43396 | (name "python-yappi") |
| 43397 | (version "1.7.6") |
| 43398 | (source |
| 43399 | (origin |
| 43400 | (method git-fetch) |
| 43401 | (uri (git-reference |
| 43402 | (url "https://github.com/sumerc/yappi") |
| 43403 | (commit (string-append "v" version)))) |
| 43404 | (file-name (git-file-name name version)) |
| 43405 | (sha256 |
| 43406 | (base32 "08jhsflxyj3vf1m06vngsw9d6qyblykcx1j2mq4qn0ray0s7v8qj")))) |
| 43407 | (build-system pyproject-build-system) |
| 43408 | (arguments |
| 43409 | (list #:test-backend #~'unittest |
| 43410 | #:test-flags #~'("discover" "tests"))) |
| 43411 | (native-inputs (list python-gevent python-setuptools)) |
| 43412 | (home-page "https://github.com/sumerc/yappi") |
| 43413 | (synopsis "Python Profiler") |
| 43414 | (description "@acronym{YAPPI, Yet Another Python Profiler} is a robust and |
| 43415 | intuitive, standard compliant Python profiler.") |
| 43416 | (license license:expat))) |
| 43417 | |
| 43418 | (define-public python-yapsy |
| 43419 | (package |
| 43420 | (name "python-yapsy") |
| 43421 | ;; 1.12.2 (2019-06-28), the latest changes provide support for Python |
| 43422 | ;; 3.12+; move back to git tag when released. |
| 43423 | (properties '((base-version . "1.12.2") |
| 43424 | (commit . "6b487b04affb19ab40adbbc87827668bea0abcee") |
| 43425 | (revision . "0"))) |
| 43426 | (version (git-version (assoc-ref properties 'base-version) |
| 43427 | (assoc-ref properties 'revision) |
| 43428 | (assoc-ref properties 'commit))) |
| 43429 | (source |
| 43430 | (origin |
| 43431 | (method git-fetch) |
| 43432 | (uri (git-reference |
| 43433 | (url "https://github.com/tibonihoo/yapsy") |
| 43434 | (commit (assoc-ref properties 'commit)))) |
| 43435 | (file-name (git-file-name name version)) |
| 43436 | (sha256 |
| 43437 | (base32 "046c505kwdbp4vhqjrc5xpdrji7lyxv11nzq9yn20c2q1186b9j0")))) |
| 43438 | (build-system pyproject-build-system) |
| 43439 | (arguments |
| 43440 | (list |
| 43441 | #:phases |
| 43442 | #~(modify-phases %standard-phases |
| 43443 | (add-after 'unpack 'change-source-dir |
| 43444 | (lambda _ |
| 43445 | (chdir "package"))) |
| 43446 | (add-after 'change-source-dir 'patch-version |
| 43447 | (lambda _ |
| 43448 | (substitute* "yapsy/__init__.py" |
| 43449 | (("__version__=\"2.0.0\"") |
| 43450 | (format #nil "__version__=\"~a\"" #$(assoc-ref properties 'base-version))))))))) |
| 43451 | (native-inputs |
| 43452 | (list python-pytest python-setuptools)) |
| 43453 | (home-page "https://yapsy.sourceforge.net") |
| 43454 | (synopsis "Simple plugin system for Python applications") |
| 43455 | (description "Yapsy, or Yet Another Plugin SYstem, is a small library |
| 43456 | implementing the core mechanisms needed to build a plugin system into a wider |
| 43457 | application. |
| 43458 | |
| 43459 | The main purpose is to depend only on Python's standard libraries and to |
| 43460 | implement only the basic functionalities needed to detect, load and keep track |
| 43461 | of several plugins.") |
| 43462 | (license license:bsd-3))) |
| 43463 | |
| 43464 | (define-public python-yaspin |
| 43465 | (package |
| 43466 | (name "python-yaspin") |
| 43467 | (version "3.2.0") |
| 43468 | (source |
| 43469 | (origin |
| 43470 | (method url-fetch) |
| 43471 | (uri |
| 43472 | (pypi-uri "yaspin" version)) |
| 43473 | (sha256 |
| 43474 | (base32 "1ryc5099sjsa49fhcm6dp5l4rp9v9yxrh17ml78y89idfbbfhvs1")))) |
| 43475 | (build-system pyproject-build-system) |
| 43476 | ;; tests: 3007 passed, 1758 skipped |
| 43477 | (native-inputs |
| 43478 | (list python-poetry-core |
| 43479 | python-pytest |
| 43480 | python-pytest-mock)) |
| 43481 | (propagated-inputs |
| 43482 | (list python-termcolor-next)) |
| 43483 | (home-page "https://github.com/pavdmyt/yaspin") |
| 43484 | (synopsis "Yet Another Terminal Spinner") |
| 43485 | (description "Yaspin provides a terminal spinner to indicate the progress |
| 43486 | during long operations.") |
| 43487 | (license license:expat))) |
| 43488 | |
| 43489 | (define-public python-yattag |
| 43490 | (package |
| 43491 | (name "python-yattag") |
| 43492 | (version "1.16.1") |
| 43493 | (source |
| 43494 | (origin |
| 43495 | (method url-fetch) |
| 43496 | (uri (pypi-uri "yattag" version)) |
| 43497 | (sha256 |
| 43498 | (base32 "1x2is0lkpywvqaayc21n1cvfbq0havzx46i83033wpgawxag5a5s")))) |
| 43499 | (build-system pyproject-build-system) |
| 43500 | (native-inputs |
| 43501 | (list python-pytest |
| 43502 | python-setuptools |
| 43503 | python-wheel)) |
| 43504 | (home-page "https://www.yattag.org/") |
| 43505 | (synopsis "HTML or XML generator for Python") |
| 43506 | (description |
| 43507 | "Yattag is a Python library for generating HTML or XML in a pythonic |
| 43508 | way.") |
| 43509 | (license license:lgpl2.1))) |
| 43510 | |
| 43511 | (define-public python-yq |
| 43512 | (package |
| 43513 | (name "python-yq") |
| 43514 | (version "3.4.3") |
| 43515 | (source |
| 43516 | (origin |
| 43517 | (method url-fetch) |
| 43518 | (uri (pypi-uri "yq" version)) |
| 43519 | (sha256 |
| 43520 | (base32 "0fvf4n7wpbc0gdxhw8c008rcv092vw96f84j5xdp1krhdwd6ln5s")))) |
| 43521 | (build-system pyproject-build-system) |
| 43522 | (arguments |
| 43523 | (list |
| 43524 | #:test-backend #~'custom |
| 43525 | #:test-flags #~(list "test/test.py" "-v") |
| 43526 | #:phases |
| 43527 | #~(modify-phases %standard-phases |
| 43528 | (add-after 'unpack 'patch |
| 43529 | (lambda _ |
| 43530 | (substitute* "yq/__init__.py" |
| 43531 | (("Popen\\(\\[\"jq") |
| 43532 | (string-append |
| 43533 | "Popen([\"" |
| 43534 | #$(this-package-input "jq") "/bin/jq")))))))) |
| 43535 | (native-inputs |
| 43536 | (list python-hatchling |
| 43537 | python-hatch-vcs)) |
| 43538 | (inputs |
| 43539 | (list jq)) |
| 43540 | (propagated-inputs |
| 43541 | (list python-argcomplete |
| 43542 | python-pyyaml |
| 43543 | python-tomlkit |
| 43544 | python-xmltodict)) |
| 43545 | (home-page "https://github.com/kislyuk/yq") |
| 43546 | (synopsis "Command-line YAML/XML processor") |
| 43547 | (description |
| 43548 | "This package provides @command{yq} and @command{xq} for processing YAML |
| 43549 | and XML respectively. The processing is done through @command{jq}, |
| 43550 | @command{jq} filters can be used to process the data as it passes through.") |
| 43551 | (license license:asl2.0))) |
| 43552 | |
| 43553 | (define-public python-yte |
| 43554 | (package |
| 43555 | (name "python-yte") |
| 43556 | (version "1.8.1") ;TODO higher versions depend on uv_build |
| 43557 | (source |
| 43558 | (origin |
| 43559 | (method git-fetch) |
| 43560 | (uri (git-reference |
| 43561 | (url "https://github.com/koesterlab/yte") |
| 43562 | (commit (string-append "v" version)))) |
| 43563 | (sha256 |
| 43564 | (base32 "05qrmjf9x6wvy8976kqiy3axk3im8jbc8hpc1yrbidm099vik0ni")))) |
| 43565 | (build-system pyproject-build-system) |
| 43566 | (arguments |
| 43567 | (list |
| 43568 | #:test-flags #~(list "tests.py") |
| 43569 | #:phases |
| 43570 | '(modify-phases %standard-phases |
| 43571 | (add-after 'unpack 'set-HOME |
| 43572 | (lambda _ (setenv "HOME" "/tmp")))))) |
| 43573 | (propagated-inputs (list python-dpath python-plac python-pyyaml)) |
| 43574 | (native-inputs (list python-numpy python-poetry-core python-pytest)) |
| 43575 | (home-page "https://github.com/koesterlab/yte") |
| 43576 | (synopsis "YAML template engine with Python expressions") |
| 43577 | (description |
| 43578 | "This package provides a YAML template engine with Python expressions.") |
| 43579 | (license license:expat))) |
| 43580 | |
| 43581 | (define-public python-zarr |
| 43582 | (package |
| 43583 | (name "python-zarr") |
| 43584 | (version "3.2.1") |
| 43585 | (source |
| 43586 | (origin |
| 43587 | (method git-fetch) |
| 43588 | (uri (git-reference |
| 43589 | (url "https://github.com/zarr-developers/zarr-python") |
| 43590 | (commit (string-append "v" version)))) |
| 43591 | (file-name (git-file-name name version)) |
| 43592 | (sha256 |
| 43593 | (base32 "1qzbpy6j8mgpr6wb69j8yyjyr95rmagn64v8pcdljjl3969rmjf6")))) |
| 43594 | (build-system pyproject-build-system) |
| 43595 | (arguments |
| 43596 | (list |
| 43597 | ;; tests: 5339 passed, 384 skipped, 1 deselected, 7 xfailed |
| 43598 | #:test-flags |
| 43599 | #~(list "--ignore=tests/benchmarks/" |
| 43600 | ;; This test wants uv. |
| 43601 | (string-append "--deselect=tests/test_examples.py" |
| 43602 | "::test_scripts_can_run[script_path0]")) |
| 43603 | #:phases |
| 43604 | #~(modify-phases %standard-phases |
| 43605 | (add-after 'unpack 'disable-service-tests |
| 43606 | (lambda _ |
| 43607 | (setenv "ZARR_TEST_ABS" "0") |
| 43608 | (setenv "ZARR_TEST_MONGO" "0") |
| 43609 | (setenv "ZARR_TEST_REDIS" "0")))))) |
| 43610 | (native-inputs |
| 43611 | (list python-hatch-vcs |
| 43612 | python-hatchling |
| 43613 | python-numpydoc ;tests/test_api/test_synchronous.py |
| 43614 | python-pytest |
| 43615 | python-pytest-asyncio |
| 43616 | python-pytest-benchmark |
| 43617 | python-tomlkit)) |
| 43618 | (propagated-inputs |
| 43619 | (list python-donfig |
| 43620 | python-google-crc32c |
| 43621 | python-numcodecs |
| 43622 | python-numpy |
| 43623 | python-packaging |
| 43624 | python-typing-extensions)) |
| 43625 | (home-page "https://github.com/zarr-developers/zarr-python") |
| 43626 | (synopsis "Chunked, compressed, N-dimensional arrays for Python") |
| 43627 | (description |
| 43628 | "This package provides an implementation of chunked, compressed, |
| 43629 | N-dimensional arrays for Python.") |
| 43630 | (license license:expat))) |
| 43631 | |
| 43632 | (define-public python-zeroc-ice |
| 43633 | (package |
| 43634 | (name "python-zeroc-ice") |
| 43635 | (version "3.7.10.1") |
| 43636 | (source (origin |
| 43637 | (method url-fetch) |
| 43638 | (uri (pypi-uri "zeroc-ice" version)) |
| 43639 | (sha256 |
| 43640 | (base32 |
| 43641 | "0r46q4hd7xbpvnidbra1prkg4xhmajxjjmclfqgp3pv0lgyslqxh")))) |
| 43642 | (build-system pyproject-build-system) |
| 43643 | (arguments |
| 43644 | ;; XXX: No tests in PyPI, tere are tests in Git, but there is no 3.7.10.1 |
| 43645 | ;; tag. |
| 43646 | ;; |
| 43647 | ;; See: |
| 43648 | ;; - URL: <https://raw.githubusercontent.com/zeroc-ice> |
| 43649 | ;; - File: <ice/refs/heads/main/python/allTests.py> |
| 43650 | (list #:tests? #f)) |
| 43651 | (inputs (list openssl)) |
| 43652 | (native-inputs (list python-setuptools)) |
| 43653 | (home-page "https://zeroc.com") |
| 43654 | (synopsis "RPC framework") |
| 43655 | (description |
| 43656 | "Ice is a comprehensive RPC framework. Ice helps you network your |
| 43657 | software by taking care of all interactions with low-level network programming |
| 43658 | interfaces.") |
| 43659 | (license license:gpl2))) |
| 43660 | |
| 43661 | ;; Package variant to build [email protected] |
| 43662 | (define-public python-zeroc-ice-3.6 |
| 43663 | (package |
| 43664 | (inherit python-zeroc-ice) |
| 43665 | (version "3.6.5") |
| 43666 | (source (origin |
| 43667 | (method url-fetch) |
| 43668 | (uri (pypi-uri "zeroc-ice" version)) |
| 43669 | (sha256 |
| 43670 | (base32 |
| 43671 | "0mikjfvq26kh8asnn9v55z41pap4c5ypymqnwwi4xkavc3mzyda2")) |
| 43672 | (patches |
| 43673 | (search-patches |
| 43674 | "python-zeroc-ice-3.6.5-python-3.11-support.patch" |
| 43675 | "python-zeroc-ice-3.6.5-python-3.12-support.patch")))) |
| 43676 | (arguments |
| 43677 | (substitute-keyword-arguments arguments |
| 43678 | ((#:phases phases #~%standard-phases) |
| 43679 | #~(modify-phases #$phases |
| 43680 | (add-before 'build 'relax-gcc-14-strictness |
| 43681 | (lambda _ |
| 43682 | (setenv "CFLAGS" |
| 43683 | "-g -O2 -Wno-error=implicit-function-declaration"))))))))) |
| 43684 | |
| 43685 | (define-public python-zeroconf |
| 43686 | (package |
| 43687 | (name "python-zeroconf") |
| 43688 | (version "0.38.1") |
| 43689 | (source |
| 43690 | (origin |
| 43691 | (method git-fetch) |
| 43692 | (uri (git-reference |
| 43693 | (url "https://github.com/jstasiak/python-zeroconf") |
| 43694 | (commit version))) |
| 43695 | (file-name (git-file-name name version)) |
| 43696 | (sha256 |
| 43697 | (base32 "1p1a0ywlg5sq0ilcphmz9h4kayscz0q1lyfk57j7mwxyx4gl9cpi")))) |
| 43698 | (build-system pyproject-build-system) |
| 43699 | (arguments |
| 43700 | (list |
| 43701 | #:test-flags |
| 43702 | #~(list |
| 43703 | "-k" (string-append |
| 43704 | ;; XXX: Despite asyncio, this test fails. |
| 43705 | "not test_run_coro_with_timeout and not " |
| 43706 | ;; XXX: Networking isn't available. |
| 43707 | (string-join |
| 43708 | (list "test_integration_with_listener_ipv6" |
| 43709 | "test_launch_and_close_v4_v6" |
| 43710 | "test_launch_and_close_context_manager" |
| 43711 | "test_launch_and_close" |
| 43712 | "test_close_multiple_times") |
| 43713 | " and not "))))) |
| 43714 | (native-inputs |
| 43715 | (list python-pytest python-pytest-asyncio python-setuptools)) |
| 43716 | (propagated-inputs |
| 43717 | (list python-ifaddr)) |
| 43718 | (home-page "https://github.com/jstasiak/python-zeroconf") |
| 43719 | (synopsis "Pure Python mDNS service discovery") |
| 43720 | (description "Pure Python multicast DNS (mDNS) service discovery library |
| 43721 | (Bonjour/Avahi compatible).") |
| 43722 | (license license:lgpl2.1+))) |
| 43723 | |
| 43724 | (define-public python-zict |
| 43725 | (package |
| 43726 | (name "python-zict") |
| 43727 | (version "3.0.0") |
| 43728 | (source |
| 43729 | (origin |
| 43730 | (method url-fetch) |
| 43731 | (uri (pypi-uri "zict" version)) |
| 43732 | (sha256 |
| 43733 | (base32 |
| 43734 | "19gvr41xi5fazkzkg33kwrk70sv50hygng0cg70ayym9nriy48g3")))) |
| 43735 | (build-system pyproject-build-system) |
| 43736 | (arguments |
| 43737 | (list |
| 43738 | #:test-flags |
| 43739 | ;; This uses "importorskip", but it won't skip. |
| 43740 | '(list "--ignore=tests/test_lmdb.py"))) |
| 43741 | (propagated-inputs |
| 43742 | (list python-heapdict)) |
| 43743 | (native-inputs |
| 43744 | (list python-pytest |
| 43745 | python-pytest-asyncio |
| 43746 | python-pytest-repeat |
| 43747 | python-pytest-timeout |
| 43748 | python-setuptools |
| 43749 | python-wheel)) |
| 43750 | (home-page "https://zict.readthedocs.io/en/latest/") |
| 43751 | (synopsis "Composable mutable mapping tools") |
| 43752 | (description "This package provides abstract @code{MutableMapping} classes |
| 43753 | that consume and build on other @code{MutableMappings}. Several of these can |
| 43754 | be composed with one another to form intuitive interfaces over complex storage |
| 43755 | systems policies.") |
| 43756 | (license license:bsd-3))) |
| 43757 | |
| 43758 | (define-public python-zipfly |
| 43759 | (package |
| 43760 | (name "python-zipfly") |
| 43761 | (version "6.0.5") |
| 43762 | (source |
| 43763 | (origin |
| 43764 | (method url-fetch) |
| 43765 | (uri (pypi-uri "zipfly" version)) |
| 43766 | (sha256 |
| 43767 | (base32 |
| 43768 | "1h7g922a8lsqd69j8blgcgg0lcd8kz51b2p4glfqmgx4vi1nkick")))) |
| 43769 | (build-system pyproject-build-system) |
| 43770 | (arguments |
| 43771 | (list #:test-backend #~'unittest)) |
| 43772 | (native-inputs (list python-setuptools)) |
| 43773 | (home-page "https://github.com/sandes/zipfly") |
| 43774 | (synopsis "Zip archive generator") |
| 43775 | (description "ZipFly is a zip archive generator. It was created to |
| 43776 | generate very large zip archives for immediate sending out to clients, or |
| 43777 | for writing large zip archives without memory inflation.") |
| 43778 | (license license:expat))) |
| 43779 | |
| 43780 | (define-public python-zipstream-new |
| 43781 | (package |
| 43782 | (name "python-zipstream-new") |
| 43783 | (version "1.1.8") |
| 43784 | (source |
| 43785 | (origin |
| 43786 | (method git-fetch) ; no tests in PyPI release |
| 43787 | (uri (git-reference |
| 43788 | (url "https://github.com/arjan-s/python-zipstream") |
| 43789 | (commit (string-append "v" version)))) |
| 43790 | (file-name (git-file-name name version)) |
| 43791 | (sha256 |
| 43792 | (base32 "14vhgg8mcjqi8cpzrw8qzbij2fr2a63l2a8fhil21k2r8vzv92cv")))) |
| 43793 | (build-system pyproject-build-system) |
| 43794 | (arguments |
| 43795 | (list #:test-backend #~'unittest)) |
| 43796 | (native-inputs (list python-setuptools)) |
| 43797 | (home-page "https://github.com/arjan-s/python-zipstream") |
| 43798 | (synopsis "Zipfile generator that takes input files as well as streams") |
| 43799 | (description "@code{zipstream.py} is a zip archive generator based on |
| 43800 | @code{zipfile.py}. It was created to generate a zip file generator for |
| 43801 | streaming. This is beneficial for when you want to provide a downloadable |
| 43802 | archive of a large collection of regular files, which would be infeasible |
| 43803 | to generate the archive prior to downloading or of a very large file that |
| 43804 | you do not want to store entirely on disk or on memory.") |
| 43805 | ;; No copyright headers in the source. The LICENSE file indicates GPL3. |
| 43806 | (license license:gpl3))) |
| 43807 | |
| 43808 | (define-public shrinkwrap |
| 43809 | (package |
| 43810 | (name "shrinkwrap") |
| 43811 | (version "0.1.0") |
| 43812 | (source |
| 43813 | (origin |
| 43814 | (method git-fetch) |
| 43815 | (uri (git-reference |
| 43816 | (url "https://github.com/fzakaria/shrinkwrap") |
| 43817 | (commit (string-append "v" version)))) |
| 43818 | (file-name (git-file-name name version)) |
| 43819 | (sha256 |
| 43820 | (base32 "1f3qrygj16y767q2c7pn9j6m95ggcmj9s5cx9v92ygygly4mr3jp")))) |
| 43821 | (build-system pyproject-build-system) |
| 43822 | (native-inputs |
| 43823 | (list python-click |
| 43824 | python-poetry-core |
| 43825 | python-pypa-build |
| 43826 | python-pytest)) |
| 43827 | (inputs (list python-lief python-sh)) |
| 43828 | (home-page "https://github.com/fzakaria/shrinkwrap") |
| 43829 | (synopsis "Emboss needed dependencies on the top level executable") |
| 43830 | (description |
| 43831 | "@code{shrinkwrap} is a tool which will discover all transitive dynamic |
| 43832 | shared objects, and lift them up to the executable referenced by absolute |
| 43833 | path.") |
| 43834 | (license license:expat))) |
| 43835 | |
| 43836 | (define-public staticsite |
| 43837 | (package |
| 43838 | (name "staticsite") |
| 43839 | (version "2.5") |
| 43840 | (source |
| 43841 | (origin |
| 43842 | (method git-fetch) |
| 43843 | (uri (git-reference |
| 43844 | (url "https://github.com/spanezz/staticsite") |
| 43845 | (commit (string-append "v" version)))) |
| 43846 | (file-name (git-file-name name version)) |
| 43847 | (sha256 |
| 43848 | (base32 "0fk0yy0flwwfqwb4gsizr7gnkadas4rjffn3mnzlwmkn08z3w0c7")))) |
| 43849 | (build-system pyproject-build-system) |
| 43850 | (arguments |
| 43851 | (list |
| 43852 | #:phases |
| 43853 | #~(modify-phases %standard-phases |
| 43854 | (add-after 'unpack 'use-themes-in-output |
| 43855 | (lambda _ |
| 43856 | (substitute* "staticsite/global_settings.py" |
| 43857 | (("/usr/share/staticsite") #$output)))) |
| 43858 | (add-after 'install 'install-themes |
| 43859 | (lambda _ |
| 43860 | (let ((themedir (string-append #$output "/themes"))) |
| 43861 | (copy-recursively "themes" themedir))))))) |
| 43862 | (native-inputs |
| 43863 | (list python-hatchling |
| 43864 | python-pytest)) |
| 43865 | (inputs |
| 43866 | (list perl-image-exiftool |
| 43867 | python-dateutil |
| 43868 | python-docutils |
| 43869 | python-jinja2 |
| 43870 | python-markdown |
| 43871 | python-pillow |
| 43872 | python-pytz |
| 43873 | python-pyyaml |
| 43874 | python-ruamel.yaml |
| 43875 | python-slugify |
| 43876 | python-toml |
| 43877 | tzdata-for-tests)) |
| 43878 | (home-page "https://github.com/spanezz/staticsite") |
| 43879 | (synopsis "Static site generator") |
| 43880 | (description |
| 43881 | "Statistic is a static site generator based on Markdown and Jinja2.") |
| 43882 | (license (list license:gpl3+ license:expat)))) |
| 43883 | |
| 43884 | ;;; |
| 43885 | ;;; Avoid adding new packages to the end of this file. To reduce the chances |
| 43886 | ;;; of a merge conflict, place them above in alphabetic order: |
| 43887 | ;;; guix import --insert=gnu/packages/python-xyz.scm pypi <package-name>. |
| 43888 | ;;; |