diff options
author | Efraim Flashner <efraim@flashner.co.il> | 2021-12-19 15:15:11 +0200 |
---|---|---|
committer | Efraim Flashner <efraim@flashner.co.il> | 2021-12-19 15:15:11 +0200 |
commit | 6ccf8ea81f95963c0b7f945648106576008ee105 (patch) | |
tree | f39f596e6c3e98ff1e9f1de0ad41c977e9dd37c1 /gnu/packages/python-xyz.scm | |
parent | fcaed5b81e893f34d77527fbef389ca628ca882d (diff) | |
parent | 9f916d14765b00309c742fcbff0cfabdd10dcf05 (diff) |
Merge branch 'master' into core-updates
Diffstat (limited to 'gnu/packages/python-xyz.scm')
-rw-r--r-- | gnu/packages/python-xyz.scm | 7639 |
1 files changed, 4429 insertions, 3210 deletions
diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm index b319793b38..2af4794019 100644 --- a/gnu/packages/python-xyz.scm +++ b/gnu/packages/python-xyz.scm @@ -42,7 +42,6 @@ ;;; Copyright © 2017, 2020, 2021 Roel Janssen <roel@gnu.org> ;;; Copyright © 2017, 2018, 2019 Kei Kebreau <kkebreau@posteo.net> ;;; Copyright © 2017 Rutger Helling <rhelling@mykolab.com> -;;; Copyright © 2017 Muriithi Frederick Muriuki <fredmanglis@gmail.com> ;;; Copyright © 2017, 2019, 2021 Brendan Tildesley <mail@brendan.scot> ;;; Copyright © 2018 Ethan R. Jones <ethanrjones97@gmail.com ;;; Copyright © 2018 Fis Trivial <ybbs.daans@hotmail.com> @@ -52,7 +51,7 @@ ;;; Copyright © 2016, 2018 Tomáš Čech <sleep_walker@gnu.org> ;;; Copyright © 2018, 2019, 2020, 2021 Nicolas Goaziou <mail@nicolasgoaziou.fr> ;;; Copyright © 2018 Oleg Pykhalov <go.wigust@gmail.com> -;;; Copyright © 2018, 2019 Clément Lassieur <clement@lassieur.org> +;;; Copyright © 2018, 2019, 2021 Clément Lassieur <clement@lassieur.org> ;;; Copyright © 2018, 2019, 2020, 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com> ;;; Copyright © 2018 Luther Thompson <lutheroto@gmail.com> ;;; Copyright © 2018 Vagrant Cascadian <vagrant@debian.org> @@ -64,7 +63,7 @@ ;;; Copyright © 2019, 2020 Alex Griffin <a@ajgrf.com> ;;; Copyright © 2019, 2020, 2021 Pierre Langlois <pierre.langlois@gmx.com> ;;; Copyright © 2019 Jacob MacDonald <jaccarmac@gmail.com> -;;; Copyright © 2019, 2020 Giacomo Leidi <goodoldpaul@autistici.org> +;;; Copyright © 2019, 2020, 2021 Giacomo Leidi <goodoldpaul@autistici.org> ;;; Copyright © 2019 Wiktor Żelazny <wzelazny@vurv.cz> ;;; Copyright © 2019, 2020, 2021 Tanguy Le Carrour <tanguy@bioneland.org> ;;; Copyright © 2019, 2021 Mădălin Ionel Patrașcu <madalinionel.patrascu@mdc-berlin.de> @@ -72,9 +71,8 @@ ;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net> ;;; Copyright © 2020 sirgazil <sirgazil@zoho.com> ;;; Copyright © 2020 Sebastian Schott <sschott@mailbox.org> -;;; Copyright © 2020 Alexandros Theodotou <alex@zrythm.org> -;;; Copyright © 2020 Josh Marshall <joshua.r.marshall.1991@gmail.com> ;;; Copyright © 2020, 2021 Alexandros Theodotou <alex@zrythm.org> +;;; Copyright © 2020 Josh Marshall <joshua.r.marshall.1991@gmail.com> ;;; Copyright © 2020 Lars-Dominik Braun <ldb@leibniz-psychology.org> ;;; Copyright © 2020 Alex ter Weele <alex.ter.weele@gmail.com> ;;; Copyright © 2020 Matthew James Kraai <kraai@ftbfs.org> @@ -91,7 +89,7 @@ ;;; Copyright © 2020, 2021 Bonface Munyoki Kilyungi <me@bonfacemunyoki.com> ;;; Copyright © 2020 Ekaitz Zarraga <ekaitz@elenq.tech> ;;; Copyright © 2020 Diego N. Barbato <dnbarbato@posteo.de> -;;; Copyright © 2020 Leo Prikler <leo.prikler@student.tugraz.at> +;;; Copyright © 2020 Liliana Marie Prikler <liliana.prikler@gmail.com> ;;; Copyright © 2019 Kristian Trandem <kristian@devup.no> ;;; Copyright © 2020, 2021 Zheng Junjie <873216071@qq.com> ;;; Copyright © 2021 Morgan Smith <Morgan.J.Smith@outlook.com> @@ -110,6 +108,10 @@ ;;; Copyright © 2021 Simon Streit <simon@netpanic.org> ;;; Copyright © 2021 Daniel Meißner <daniel.meissner-i4k@ruhr-uni-bochum.de> ;;; Copyright © 2021 Pradana Aumars <paumars@courrier.dev> +;;; Copyright © 2021 Felix Gruber <felgru@posteo.net> +;;; Copyright © 2021 Sébastien Lerique <sl@eauchat.org> +;;; Copyright © 2021 Raphaël Mélotte <raphael.melotte@mind.be> +;;; Copyright © 2021 ZmnSCPxj <ZmnSCPxj@protonmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -141,6 +143,7 @@ #:use-module (gnu packages crypto) #:use-module (gnu packages databases) #:use-module (gnu packages dbm) + #:use-module (gnu packages django) #:use-module (gnu packages djvu) #:use-module (gnu packages docker) #:use-module (gnu packages enchant) @@ -183,6 +186,7 @@ #:use-module (gnu packages perl) #:use-module (gnu packages photo) #:use-module (gnu packages pkg-config) + #:use-module (gnu packages protobuf) #:use-module (gnu packages python) #:use-module (gnu packages python-build) #:use-module (gnu packages python-check) @@ -232,6 +236,78 @@ #:use-module (srfi srfi-1) #:use-module (srfi srfi-26)) +(define-public python-janus + (package + (name "python-janus") + (version "0.6.1") + (source + (origin + (method url-fetch) + (uri (pypi-uri "janus" version)) + (sha256 + (base32 "030xvl2vghi5ispfalhvch1rl6i2jsy5bf1dgjafa7vifppy04j7")))) + (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda* (#:key tests? inputs outputs #:allow-other-keys) + (when tests? + (add-installed-pythonpath inputs outputs) + (invoke "pytest" "--cov=janus" "--cov=tests"))))))) + (native-inputs + (list python-pytest python-pytest-cov python-pytest-asyncio)) + (home-page "https://github.com/aio-libs/janus/") + (synopsis + "Sync-async queue to interoperate between asyncio tasks and classic threads") + (description + "Mixed sync-async queue, supposed to be used for communicating between +classic synchronous (threaded) code and asynchronous (in terms of +@url{https://docs.python.org/3/library/asyncio.html,asyncio}) one. Like +@url{https://en.wikipedia.org/wiki/Janus,Janus god} the queue object from the +library has two faces: synchronous and asynchronous interface. Synchronous is +fully compatible with +@url{https://docs.python.org/3/library/queue.html,standard queue}, +asynchronous one follows +@url{https://docs.python.org/3/library/asyncio-queue.html,asyncio queue +design}.") + (license license:asl2.0))) + +(define-public python-logbook + (package + (name "python-logbook") + (version "1.5.3") + (source + (origin + (method url-fetch) + (uri (pypi-uri "Logbook" version)) + (sha256 + (base32 "1s1gyfw621vid7qqvhddq6c3z2895ci4lq3g0r1swvpml2nm9x36")))) + (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-before 'build 'cythonize-sources + (lambda _ + (with-directory-excursion "logbook" + (invoke "cython" "_speedups.pyx")))) + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + ;; Check cython build also + (setenv "CYBUILD" "True") + (invoke "pytest" "--cov=logbook" "-r" "s" "tests"))))))) + (native-inputs + (list python-cython python-mock python-pytest python-pytest-cov + python-google-brotli)) + (home-page "https://github.com/getlogbook/logbook") + (synopsis "Logbook is a logging replacement for Python") + (description + "Logbook is a logging system for Python that replaces the standard +library’s logging module. It was designed with both complex and simple +applications in mind and the idea to make logging fun.") + (license license:bsd-3))) + (define-public python-ueberzug (package (name "python-ueberzug") @@ -245,16 +321,12 @@ "1hxd45dnwa9yv908acarr98n2drmar66wzq9z2qd3irj24srzr3w")))) (build-system python-build-system) (inputs - `(("libx11" ,libx11) - ("libxext" ,libxext))) + (list libx11 libxext)) (propagated-inputs - `(("python-attrs" ,python-attrs) - ("python-docopt" ,python-docopt) - ("python-pillow" ,python-pillow) - ("python-xlib" ,python-xlib))) + (list python-attrs python-docopt python-pillow python-xlib)) (home-page "https://github.com/seebye/ueberzug") (synopsis "Command line util to display images in combination with X11") - (description "Überzug is a command line util which allows to draw images on + (description "Überzug is a command line util which draws images on terminals by using child windows. The advantages of using Überzug are: @itemize @item No race conditions as a new window is created to display images. @@ -280,7 +352,7 @@ workspaces. "0qka44n88y3qcj7xz0k0f3qb4phcg4z0wvd4jcii9lcr6rvbiqn5")))) (build-system python-build-system) (native-inputs - `(("python-pytest", python-pytest))) + (list python-pytest)) (arguments '(#:phases (modify-phases %standard-phases @@ -289,8 +361,7 @@ workspaces. (when tests? (invoke "pytest"))))))) (inputs - `(("python-six", python-six) - ("python-termcolor", python-termcolor))) + (list python-six python-termcolor)) (synopsis "Library for automatically generating command line interfaces") (description "Fire is a library for automatically generating command line interfaces @@ -353,13 +424,10 @@ features of the Python's built-in dict.") "0ybs7kkp0cpl8zn1lvf7481xhssg1bbhh5la2cjzdm5yibashyxa")))) (build-system python-build-system) (native-inputs - `(("python-coverage" ,python-coverage) - ("python-nose" ,python-nose) - ("python-setuptools" ,python-setuptools) ; Won't build without this. - ("python-setuptools-scm" ,python-setuptools-scm))) + (list python-coverage python-nose python-setuptools ; Won't build without this. + python-setuptools-scm)) (propagated-inputs - `(("python-toml" ,python-toml) - ("python-flake8" ,python-flake8))) + (list python-toml python-flake8)) (home-page "https://github.com/casperdcl/argopt") (synopsis "Generate a command-line interface from a docstring") (description "This package provides tools to define a command line interface @@ -401,11 +469,9 @@ decorators, including variants of the Python standard library's (arguments `(#:tests? #f)) (native-inputs - `(("python-coverage" ,python-coverage) - ("python-flake8" ,python-flake8) - ("python-pytest" ,python-pytest))) + (list python-coverage python-flake8 python-pytest)) (propagated-inputs - `(("python-colorama" ,python-colorama))) + (list python-colorama)) (home-page "http://github.com/timofurrer/colorful") (synopsis "Terminal string styling") (description "Colorful provides an array of text styles, that can be used @@ -425,7 +491,7 @@ as functions or string constants to form colored terminal output.") (base32 "1iirah0kydrdp505qnjj6gi54avcr7z0hbkfx9vmh8myr30rpz6q")))) (build-system python-build-system) (native-inputs - `(("python-pytest" ,python-pytest))) + (list python-pytest)) (home-page "https://github.com/pavdmyt/yaspin") (synopsis "Yet Another Terminal Spinner") (description "Yaspin provides a terminal spinner to indicate the progress @@ -445,10 +511,9 @@ during long operations.") (base32 "106akalywfmnypzkdrhgz4n4740a8xayspybsw59kq06vz8i2qrc")))) (build-system python-build-system) (native-inputs - `(("python-mock" ,python-mock) - ("python-pytest" ,python-pytest))) + (list python-mock python-pytest)) (propagated-inputs - `(("python-nltk" ,python-nltk-3.4))) + (list python-nltk-3.4)) (home-page "https://github.com/yeraydiazdiaz/lunr.py") (synopsis "Full-text search library") @@ -457,6 +522,26 @@ It indexes documents and provides a search interface for retrieving documents that best match text queries.") (license license:expat))) +(define-public python-mrkd + (package + (name "python-mrkd") + (version "0.2.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "mrkd" version)) + (sha256 + (base32 "1bvaqbna1ihb4y2mv9pmvqcq3r9j6lwbbii99dani8lxx4dqqvs5")))) + (build-system python-build-system) + (propagated-inputs + (list python-jinja2 python-mistune python-pygments)) + (home-page "https://pypi.org/project/mrkd/") + (synopsis "Python Markdown implementation") + (description + "@code{mrkd} writes man pages using Markdown, and convert them to Roff or +HTML") + (license license:bsd-3))) + (define-public python-mkdocs (package (name "python-mkdocs") @@ -479,13 +564,13 @@ that best match text queries.") (substitute* "setup.py" (("==") ">="))))))) (propagated-inputs - `(("python-click" ,python-click) - ("python-jinja2" ,python-jinja2) - ("python-livereload" ,python-livereload) - ("python-lunr" ,python-lunr) - ("python-markdown" ,python-markdown) - ("python-pyyaml" ,python-pyyaml) - ("python-tornado" ,python-tornado))) + (list python-click + python-jinja2 + python-livereload + python-lunr + python-markdown + python-pyyaml + python-tornado)) (home-page "https://www.mkdocs.org") (synopsis "Project documentation with Markdown") (description "MkDocs is a static site generator geared towards building @@ -509,7 +594,7 @@ configured with a single YAML configuration file.") (arguments `(#:tests? #f)) (propagated-inputs - `(("python-markdown" ,python-markdown))) + (list python-markdown)) (home-page "https://github.com/facelessuser/pymdown-extensions") (synopsis "Extension pack for Python Markdown") (description "PyMdown Extensions is a collection of extensions for Python @@ -539,11 +624,8 @@ Markdown. All extensions are found under the module namespace of pymdownx.") (substitute* "requirements.txt" (("mkdocs-material-extensions.*$") ""))))))) (propagated-inputs - `(("python-markdown" ,python-markdown) - ("python-mkdocs" ,python-mkdocs) - ("python-pygments" ,python-pygments) - ("python-pymdown-extensions" - ,python-pymdown-extensions))) + (list python-markdown python-mkdocs python-pygments + python-pymdown-extensions)) (home-page "https://squidfunk.github.io/mkdocs-material/") (synopsis "Material Design theme for MkDocs") (description "This package provides a theme plugin for the static site @@ -581,13 +663,10 @@ generator MkDocs.") ("gnupg" ,gnupg) ("pkg-config" ,pkg-config))) (propagated-inputs - `(("python-aiodns" ,python-aiodns) - ("python-aiohttp" ,python-aiohttp) - ("python-pyasn1" ,python-pyasn1) - ("python-pyasn1-modules" ,python-pyasn1-modules))) + (list python-aiodns python-aiohttp python-pyasn1 + python-pyasn1-modules)) (inputs - `(("libidn" ,libidn) - ("python" ,python))) ; We are building a Python extension. + (list libidn python)) ; We are building a Python extension. (synopsis "XMPP library without threads") (description "Slixmpp is a XMPP library for Python 3.7+. It is a fork of SleekXMPP. Its goal is to only rewrite the core of the library (the low level @@ -608,12 +687,10 @@ threads.") "1j36v9fcpmmd4985ix0cwnvcq71rkrn5cjiiv0id9vkl4kpxh0gv")))) (build-system python-build-system) (native-inputs - `(("python-setuptools-scm" ,python-setuptools-scm) - ("python-sphinx" ,python-sphinx) - ("python-tornado" ,python-tornado) - ("python-pytest" ,python-pytest))) + (list python-setuptools-scm python-sphinx python-tornado + python-pytest)) (propagated-inputs - `(("python-six" ,python-six))) + (list python-six)) (arguments `(#:phases (modify-phases %standard-phases (replace 'check @@ -650,9 +727,9 @@ task of adding retry behavior to just about anything.") (invoke "py.test"))) #t))))) (propagated-inputs - `(("python-requests" ,python-requests))) + (list python-requests)) (native-inputs - `(("python-pytest" ,python-pytest))) + (list python-pytest)) (home-page "https://github.com/eternnoir/pyTelegramBotAPI") (synopsis "Python Telegram bot api") (description "This package provides a simple, but extensible Python @@ -671,7 +748,7 @@ implementation for the Telegram Bot API.") "1lpk8zmfv8vz090h5d0hzb4n39wgasxdd3x3bpn3v1x1n9dfzaih")))) (build-system python-build-system) (native-inputs - `(("python-pytest" ,python-pytest))) + (list python-pytest)) (arguments `(#:phases (modify-phases %standard-phases (replace 'check @@ -695,7 +772,7 @@ with Python's logging module that outputs records using terminal colors.") "1gscnlvj37m421ch3akm3kddxqkrgbg5zrpwy2ky1j59w6vclzg3")))) (build-system python-build-system) (propagated-inputs - `(("python-psutil" ,python-psutil))) + (list python-psutil)) (home-page "https://github.com/rasbt/pyprind") (synopsis "Python Progress Bar and Percent Indicator Utility") (description "The PyPrind (Python Progress Indicator) module provides a @@ -715,9 +792,9 @@ of a loop structure or other iterative computation.") "118zm25c8mlajfl0pzssnwz4b8lamj9dgymla9rn4nla7l244a0r")))) (build-system python-build-system) (native-inputs - `(("pkg-config" ,pkg-config))) + (list pkg-config)) (inputs - `(("libgphoto2" ,libgphoto2))) + (list libgphoto2)) (home-page "https://github.com/jim-easterbrook/python-gphoto2") (synopsis "Python interface to libgphoto2") (description "@code{python-gphoto2} is a comprehensive Python interface @@ -737,7 +814,7 @@ automatically generate the interface code.") "1visbisfini5j14bdzgs95yssw6sm4pfzyq1n3lfvbyjxw7i485g")))) (build-system python-build-system) (native-inputs - `(("python-d2to1" ,python-d2to1))) + (list python-d2to1)) (home-page "https://github.com/vaab/colour") (synopsis "Convert and manipulate various color representations") (description "Pythonic way to manipulate color representations (HSL, RVB, @@ -756,7 +833,7 @@ web, X11, ...).") "09fq7pq1z8d006xh5z75rm2lk61v6yn2xhy53z4gsgibhqb2vvs9")))) (build-system python-build-system) (native-inputs - `(("python-nose" ,python-nose))) + (list python-nose)) (home-page "https://github.com/embray/d2to1") (synopsis "Allows for distutils2-like setup.cfg files as package metadata in python") @@ -777,10 +854,9 @@ distribute/setuptools setup.py script.") "0vrhrpr70i61y5q5ysk341x1539ff1q1k82g59zq69lv16s0f76s")))) (build-system python-build-system) (native-inputs - `(("python-pytest" ,python-pytest) - ("python-mock" ,python-mock))) + (list python-pytest python-mock)) (inputs - `(("libraw" ,libraw))) + (list libraw)) (home-page "https://rawkit.readthedocs.io") (synopsis "Ctypes-based LibRaw binding for Python") (description "The rawkit package provides two modules: rawkit and libraw. @@ -801,7 +877,7 @@ interacting with the low-level LibRaw C APIs.") "1zmvmwgxyzvm83818skhn8b4wrci4kmnixaax8q3ia5cn7xrmj6v")))) (build-system python-build-system) (propagated-inputs - `(("python-tkinter" ,python "tk"))) + (list `(,python "tk"))) (home-page "https://github.com/robertlugg/easygui") (synopsis "GUI programming module for Python") (description "EasyGUI is a module for very simple, very easy GUI @@ -822,11 +898,9 @@ simple function calls.") (base32 "07s3arn85ri92im6x3ipljdmrxmpik7irs06i6lm17j1x6j9841d")))) (build-system python-build-system) (inputs - `(("md4c" ,md4c))) + (list md4c)) (native-inputs - `(("python-flake8" ,python-flake8) - ("python-pkgconfig" ,python-pkgconfig) - ("pkg-config" ,pkg-config))) + (list python-flake8 python-pkgconfig pkg-config)) (home-page "https://github.com/dominickpastore/pymd4c") (synopsis "Python bindings for MD4C") (description @@ -847,10 +921,9 @@ to CommonMark.") "0mhpxs7vlqx8w75z93dy7nnvx89kwfdjkla03l19an15rlyqyspd")))) (build-system python-build-system) (native-inputs - `(("python-setuptools-scm" ,python-setuptools-scm) - ("python-pytest" ,python-pytest))) + (list python-setuptools-scm python-pytest)) (inputs - `(("libmediainfo" ,libmediainfo))) + (list libmediainfo)) (arguments `(#:phases (modify-phases %standard-phases @@ -858,25 +931,22 @@ to CommonMark.") (lambda _ (substitute* "pymediainfo/__init__.py" (("libmediainfo.so.0") - (string-append (assoc-ref %build-inputs "libmediainfo") - "/lib/libmediainfo.so.0"))) - #t)) + (search-input-file %build-inputs + "/lib/libmediainfo.so.0"))))) (replace 'check - (lambda* (#:key tests? #:allow-other-keys) + (lambda* (#:key tests? inputs outputs #:allow-other-keys) (when tests? - ;; Extend PYTHONPATH so the built package will be found. - (setenv "PYTHONPATH" - (string-append (getcwd) "/build/lib:" - (getenv "PYTHONPATH"))) - ;; Skip the only failing test "test_parse_url" + (add-installed-pythonpath inputs outputs) + ;; Skip the only failing test "test_parse_url" because it tries + ;; to access the internet. (invoke "pytest" "-vv" "-k" "not test_parse_url"))))))) (home-page "https://github.com/sbraz/pymediainfo") (synopsis "Python wrapper for the mediainfo library") (description - "Python wrapper for the mediainfo library to access the technical and tag -data for video and audio files.") + "This package provides a Python wrapper for the mediainfo library to +access the technical and tag data for video and audio files.") (license license:expat))) (define-public python-psutil @@ -933,14 +1003,12 @@ iotop, uptime, pidof, tty, taskset, pmap.") #t)))) (build-system python-build-system) (native-inputs - `(("python-cython" ,python-cython) - ("python-matplotlib" ,python-matplotlib) - ("python-pytest" ,python-pytest) - ("python-pytest-cov" ,python-pytest-cov))) + (list python-cython python-matplotlib python-pytest + python-pytest-cov)) (inputs - `(("geos" ,geos))) + (list geos)) (propagated-inputs - `(("python-numpy" ,python-numpy))) + (list python-numpy)) (arguments `(#:phases (modify-phases %standard-phases @@ -979,7 +1047,7 @@ planar geometric objects. It is based on the @code{GEOS} library.") "1f8i4zwj5vmpzbz6b17bljy4399gx5aq7vsyw63sz2qgyjcd73yh")))) (build-system python-build-system) (native-inputs - `(("python-pep8" ,python-pep8))) + (list python-pep8)) (home-page "https://github.com/skorokithakis/shortuuid") (synopsis "Generator library for concise, unambiguous and URL-safe UUIDs") (description @@ -1010,11 +1078,8 @@ module and then similar looking characters are removed.") (invoke "pytest")) #t))))) (native-inputs - `(("python-cython" ,python-cython) - ("python-pytest" ,python-pytest) - ("python-setuptools-scm" ,python-setuptools-scm) - ("python-toml" ,python-toml) - ("python-wheel" ,python-wheel))) + (list python-cython python-pytest python-setuptools-scm python-toml + python-wheel)) (home-page "https://github.com/python-useful-helpers/logwrap") (synopsis "Decorator for logging function arguments") (description "This package provides a decorator to log function arguments @@ -1034,7 +1099,7 @@ and function call return values in a human-readable way.") "1r9987qmy1pz3hq54160bapqsywpq14waw4w9x3ly8hmq7kpgfbj")))) (build-system python-build-system) (native-inputs - `(("python-mock" ,python-mock))) + (list python-mock)) (home-page "https://github.com/Anaconda-Platform/clyent") (synopsis "Command line client library") (description "Clyent is a Python command line utility library. It is used @@ -1057,11 +1122,9 @@ by @code{binstar}, @code{binstar-build}, and @code{chalmers}.") "018yg7g2pa6vjixx1nx41cfispgfi0azzp0a1chlycbj8jsil0ys")))) (build-system python-build-system) (native-inputs - `(("python-freezegun" ,python-freezegun) - ("python-pytest" ,python-pytest) - ("tzdata" ,tzdata-for-tests))) + (list python-freezegun python-pytest tzdata-for-tests)) (propagated-inputs - `(("python-pytz" ,python-pytz))) + (list python-pytz)) (arguments `(#:phases (modify-phases %standard-phases (replace 'check @@ -1118,19 +1181,19 @@ and verifies that it matches the intended target hostname.") "02dy0b1k7qlhn7ajyzkrvxhyhjj0hzcq6ws3zjml9hkdz5znz92g")))) (build-system python-build-system) (native-inputs - `(("python-coverage" ,python-coverage) - ("python-hypothesis" ,python-hypothesis) - ("python-pre-commit" ,python-pre-commit) - ("python-py" ,python-py) - ("python-pytest" ,python-pytest) - ("python-pytest-benchmark" ,python-pytest-benchmark) - ("python-pytest-cov" ,python-pytest-cov) - ("python-setuptools-scm" ,python-setuptools-scm) - ("python-sortedcollections" ,python-sortedcollections) - ("python-sortedcontainers" ,python-sortedcontainers) - ("python-sphinx" ,python-sphinx) - ("python-sphinx-autodoc-typehints" ,python-sphinx-autodoc-typehints) - ("python-tox" ,python-tox))) + (list python-coverage + python-hypothesis + python-pre-commit + python-py + python-pytest + python-pytest-benchmark + python-pytest-cov + python-setuptools-scm + python-sortedcollections + python-sortedcontainers + python-sphinx + python-sphinx-autodoc-typehints + python-tox)) (arguments `(#:phases (modify-phases %standard-phases (add-after 'unpack 'relax-reqs @@ -1259,14 +1322,11 @@ NetCDF files can also be read and modified. Python-HDF4 is a fork of (string-append "['" prefix "/lib" "']"))) #t)))))) (propagated-inputs - `(("python-six" ,python-six) - ("python-numpy" ,python-numpy))) + (list python-six python-numpy)) (inputs - `(("hdf5" ,hdf5-1.10))) + (list hdf5-1.10)) (native-inputs - `(("python-cython" ,python-cython) - ("python-pkgconfig" ,python-pkgconfig) - ("pkg-config" ,pkg-config))) + (list python-cython python-pkgconfig pkg-config)) (home-page "https://www.h5py.org/") (synopsis "Read and write HDF5 files from Python") (description @@ -1280,6 +1340,34 @@ concepts.") (define-public python2-h5py (package-with-python2 python-h5py)) +(define-public python-hnswlib + (package + (name "python-hnswlib") + (version "0.5.2") + (source + (origin + (method url-fetch) + (uri (pypi-uri "hnswlib" version)) + (sha256 + (base32 "0wf1cwmxmdzfqmfhrkqdxb5spf21ylgl2bidswhzjrqhwf35c9qf")))) + (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'disable-native-optimization + (lambda _ + (substitute* "setup.py" + ((", '-march=native'") ""))))))) + (propagated-inputs + (list python-numpy)) + (native-inputs + (list pybind11)) + (home-page "https://github.com/nmslib/hnswlib") + (synopsis "Fast approximate nearest neighbor search") + (description "Hnswlib is a header-only C++ implementation of fast +approximate nearest neighbor search with Python bindings.") + (license license:asl2.0))) + (define-public python-pyls-black (package (name "python-pyls-black") @@ -1298,16 +1386,10 @@ concepts.") (arguments `(#:test-target "pytest")) (propagated-inputs - `(("python-black" ,python-black) - ("python-language-server" - ,python-language-server) - ("python-toml" ,python-toml))) + (list python-black python-language-server python-toml)) (native-inputs - `(("python-flake8" ,python-flake8) - ("python-isort" ,python-isort) - ("python-mypy" ,python-mypy) - ("python-pytest" ,python-pytest) - ("python-pytest-runner" ,python-pytest-runner))) + (list python-flake8 python-isort python-mypy python-pytest + python-pytest-runner)) (home-page "https://github.com/rupert/pyls-black") (synopsis "Black plugin for the Python Language Server") (description "Black plugin for the Python Language Server.") @@ -1334,7 +1416,7 @@ concepts.") (setenv "HOME" "/tmp") (invoke "python" "sh.py" "test")))))) (native-inputs - `(("python-coverage" ,python-coverage))) + (list python-coverage)) (home-page "https://github.com/amoffat/sh") (synopsis "Python subprocess replacement") (description "This package provides a replacement for Python's @@ -1353,11 +1435,9 @@ concepts.") (base32 "0w0gi6jnch38hiygl62j4xkcirv4y3dcwrvxl9p7bsk6j27lzihs")))) (build-system python-build-system) (propagated-inputs - `(("python-numpy" ,python-numpy))) + (list python-numpy)) (native-inputs - `(("python-coveralls" ,python-coveralls) - ("python-cython" ,python-cython) - ("python-pytest-cov" ,python-pytest-cov))) + (list python-coveralls python-cython python-pytest-cov)) (home-page "https://github.com/Unidata/cftime") (synopsis "Library for time handling") (description @@ -1387,14 +1467,11 @@ of the netcdf4 package before.") (setenv "HDF5_DIR" (assoc-ref inputs "hdf5")) #t))))) (native-inputs - `(("python-cython" ,python-cython))) + (list python-cython)) (propagated-inputs - `(("python-numpy" ,python-numpy) - ("python-cftime" ,python-cftime))) + (list python-numpy python-cftime)) (inputs - `(("netcdf" ,netcdf) - ("hdf4" ,hdf4) - ("hdf5" ,hdf5))) + (list netcdf hdf4 hdf5)) (home-page "https://github.com/Unidata/netcdf4-python") (synopsis "Python/numpy interface to the netCDF library") (description "Netcdf4-python is a Python interface to the netCDF C @@ -1430,10 +1507,9 @@ to users of that module.") (when tests? (invoke "pytest"))))))) (native-inputs - `(("python-pytest" ,python-pytest))) + (list python-pytest)) (propagated-inputs - `(("python-lxml" ,python-lxml) - ("python-paramiko" ,python-paramiko))) + (list python-lxml python-paramiko)) (home-page "https://github.com/ncclient/ncclient") (synopsis "Python library for NETCONF clients") (description "@code{ncclient} is a Python library that facilitates @@ -1453,7 +1529,7 @@ protocol.") (base32 "1g0sgphss8hbi1rpl4avy1nmbixmy9v194xdbvkjgl90vzgy2q3r")))) (build-system python-build-system) (propagated-inputs - `(("python-boolean.py" ,python-boolean.py))) + (list python-boolean.py)) (home-page "https://github.com/nexB/license-expression") (synopsis "Apply boolean logic to license expressions") (description @@ -1464,6 +1540,35 @@ and simplified. It supports SPDX license expressions as well as other naming conventions and aliases in the same expression.") (license license:gpl2+))) +(define-public python-wand + (package + (name "python-wand") + (version "0.6.7") + (source + (origin + (method url-fetch) + (uri (pypi-uri "Wand" version)) + (sha256 + (base32 "1nxn7zvbnfgk4kkxajbzglcjpbgr84ilhnxm990nifjxqb61ph7b")))) + (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'find-magickwand + (lambda* (#:key inputs #:allow-other-keys) + (setenv "MAGICK_HOME" (assoc-ref inputs "imagemagick")) + (setenv "WAND_MAGICK_LIBRARY_SUFFIX" ".Q16")))))) + (native-inputs + (list python-pytest)) + (inputs + (list imagemagick)) + (home-page "https://docs.wand-py.org/") + (synopsis "MagickWand API binding for Python") + (description + "Wand is a ctypes-based binding for the C API of ImageMagick's MagickWand +library.") + (license license:expat))) + (define-public python-lockfile (package (name "python-lockfile") @@ -1478,7 +1583,7 @@ conventions and aliases in the same expression.") (build-system python-build-system) (arguments '(#:test-target "check")) (native-inputs - `(("python-pbr" ,python-pbr))) + (list python-pbr)) (home-page "https://launchpad.net/pylockfile") (synopsis "Platform-independent file locking module") (description @@ -1502,7 +1607,7 @@ API for locking files.") "0snprxdnh3m45r3b0az4v0l28h90ycmfbybzla6xg1qviwv9w1ak")))) (build-system python-build-system) (inputs - `(("re2" ,re2))) + (list re2)) (home-page "https://github.com/facebook/pyre2") (synopsis "Python wrapper for RE2") (description "This package provides a Python extension that wraps Google's @@ -1568,8 +1673,7 @@ version identifier.") (base32 "1arnckykpkvv2qrp49l1k7q5mr5pisswl0rvdx98x8wsl1n361pk")))) (build-system python-build-system) (native-inputs - `(("python-attrs" ,python-attrs) - ("python-pytz" ,python-pytz))) + (list python-attrs python-pytz)) (home-page "https://github.com/irmen/Serpent") (synopsis "Serializer for literal Python expressions") (description @@ -1660,7 +1764,7 @@ Python 3 support.") (arguments `(#:tests? #f)) (native-inputs - `(("unzip" ,unzip))) + (list unzip)) (home-page "https://pypi.org/project/setuptools/") (synopsis "Library designed to facilitate packaging Python projects") @@ -1695,11 +1799,9 @@ Python 3 support.") "1l8zmcnp9h8sp8hsw7b81djaa1a9yig0y7i4phh5pihqz1gdn7yi")))) (build-system python-build-system) (native-inputs - `(("python-pytest" ,python-pytest) - ("python-setuptools-scm" ,python-setuptools-scm))) + (list python-pytest python-setuptools-scm)) (propagated-inputs - `(("python-toml" ,python-toml) - ("python-wheel" ,python-wheel))) + (list python-toml python-wheel)) (home-page "https://github.com/s0undt3ch/setuptools-declarative-requirements") (synopsis "File support for setuptools declarative setup.cfg") @@ -1708,7 +1810,7 @@ Python 3 support.") @code{setup.cfg}.") (license license:asl2.0))) -;; The setuptools provided by Python 3.7.4 is too new for Tensorflow. +;; The setuptools provided by Python 3.9 is too new for Tensorflow. (define-public python-setuptools-for-tensorflow (hidden-package (package @@ -1719,7 +1821,21 @@ Python 3 support.") (uri (pypi-uri "setuptools" version ".zip")) (sha256 (base32 - "1mzdhvfhnv4lggxa8rjl0dzqxvfx377gg5sqs57v89wrp09lwj65"))))))) + "1mzdhvfhnv4lggxa8rjl0dzqxvfx377gg5sqs57v89wrp09lwj65")))) + (arguments + `(#:tests? #f ; tests require vendored resources + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'compatibility-fixes + (lambda _ + ;; Python 3.9 no longer has HTMLParser + (substitute* "setuptools/py33compat.py" + (("html_parser.HTMLParser\\(\\).unescape") + "html.unescape")) + ;; This needs distutils.msvc9compiler + (delete-file "setuptools/tests/test_msvc.py")))))) + (native-inputs + (list python-pytest python-mock python-six))))) (define-public python-uniseg (package @@ -1736,7 +1852,7 @@ Python 3 support.") (arguments '(#:tests? #f)) ; The test suite requires network access. (native-inputs - `(("unzip" ,unzip))) + (list unzip)) (home-page "https://bitbucket.org/emptypage/uniseg-python") (synopsis @@ -1875,19 +1991,18 @@ class.") (("\"can_player\\.py --help\"") "")) #t))))) (propagated-inputs - `(("python-aenum" ,python-aenum) - ("python-wrapt" ,python-wrapt))) + (list python-aenum python-wrapt)) (native-inputs - `(("python-codecov" ,python-codecov) - ("python-coverage" ,python-coverage) - ("python-future" ,python-future) - ("python-hypothesis" ,python-hypothesis) - ("python-mock" ,python-mock) - ("python-pyserial" ,python-pyserial) - ("python-pytest" ,python-pytest) - ("python-pytest-cov" ,python-pytest-cov) - ("python-pytest-runner" ,python-pytest-runner) - ("python-pytest-timeout" ,python-pytest-timeout))) + (list python-codecov + python-coverage + python-future + python-hypothesis + python-mock + python-pyserial + python-pytest + python-pytest-cov + python-pytest-runner + python-pytest-timeout)) (home-page "https://github.com/hardbyte/python-can") (synopsis "Controller Area Network (CAN) interface module for Python") (description "This package defines the @code{can} module, which provides @@ -1923,12 +2038,9 @@ sending and receiving messages on a CAN bus.") (lambda _ (invoke "py.test" "-k" "not NetworkTests")))))) (propagated-inputs - `(("python-distlib" ,python-distlib) - ("python-packaging" ,python-packaging) - ("python-requests" ,python-requests))) + (list python-distlib python-packaging python-requests)) (native-inputs - `(("python-mock" ,python-mock) - ("python-pytest" ,python-pytest))) + (list python-mock python-pytest)) (home-page "https://github.com/brettcannon/caniusepython3") (synopsis "Check for Python 3-incompatible Python libraries") (description "The @command{caniusepython3} command scans your project and @@ -2017,10 +2129,7 @@ bits instead of primitive data types like @code{char}, @code{int}, etc.") `(("sphinx" ,python-sphinx) ("texinfo" ,texinfo))) (propagated-inputs - `(("python-bitstruct" ,python-bitstruct) - ("python-can" ,python-can) - ("python-diskcache" ,python-diskcache) - ("python-textparser" ,python-textparser))) + (list python-bitstruct python-can python-diskcache python-textparser)) (home-page "https://github.com/eerimoq/cantools") (synopsis "Tools for the Controller Area Network (CAN) bus protocol") (description "This package includes Controller Area Network (CAN) related @@ -2052,7 +2161,7 @@ tools that can be used to: (arguments `(#:tests? #f)) (propagated-inputs - `(("python-humanfriendly" ,python-humanfriendly))) + (list python-humanfriendly)) (home-page "https://capturer.readthedocs.io") (synopsis "Capture stdout and stderr streams of the current process") (description @@ -2078,12 +2187,9 @@ for additional processing.") "1cagg06vfph864s6l5jb0zqliwxh647bki8j6lf4a4qrv40jnhs8")))) (build-system python-build-system) (propagated-inputs - `(("python-mock" ,python-mock) - ("python-nose" ,python-nose) - ("python-six" ,python-six) - ("python-unittest2" ,python-unittest2))) + (list python-mock python-nose python-six python-unittest2)) (native-inputs - `(("python-coverage" ,python-coverage))) + (list python-coverage)) (home-page "https://github.com/celery/case") (synopsis "Unittest utilities and convenience methods") (description @@ -2113,8 +2219,7 @@ some helpful Python 2 compatibility convenience methods.") (invoke "pytest" "-v" "-k" "not test_pylint_plugin" "verboselogs/tests.py")))))) (native-inputs - `(("python-mock" ,python-mock) - ("python-pytest" ,python-pytest))) + (list python-mock python-pytest)) (home-page "https://verboselogs.readthedocs.io") (synopsis "Verbose logging level for Python's logging module") (description @@ -2141,7 +2246,7 @@ add the log levels NOTICE, SPAM, SUCCESS and VERBOSE.") `(;Tests require some updated modules #:tests? #f)) (propagated-inputs - `(("python-capturer" ,python-capturer))) + (list python-capturer)) (home-page "https://coloredlogs.readthedocs.io") (synopsis "Colored stream handler for Python's logging module") (description @@ -2188,22 +2293,18 @@ files are easily readable and they work nicely with version control systems.") "0vmxgn9wd3j80hp4gr5iq06jrl4gryz5zgfdd2ah30d12sfcfig0")))) (build-system python-build-system) (propagated-inputs - `(("python2-backports-functools-lru-cache" - ,python2-backports-functools-lru-cache) - ("python2-backports-shutil-get-terminal-size" - ,python2-backports-shutil-get-terminal-size) - ("python-cached-property" ,python-cached-property) - ("python-colorama" ,python-colorama) - ("python-imagesize" ,python-imagesize) - ("python-importlib-metadata" ,python-importlib-metadata) - ("python-lxml" ,python-lxml) - ("python-requests" ,python-requests) - ("python-six" ,python-six))) + (list python2-backports-functools-lru-cache + python2-backports-shutil-get-terminal-size + python-cached-property + python-colorama + python-imagesize + python-importlib-metadata + python-lxml + python-requests + python-six)) (native-inputs - `(("python-pytest-cov" ,python-pytest-cov) - ("python-pytest-xdist" ,python-pytest-xdist) - ("python-responses" ,python-responses) - ("python-setuptools-scm" ,python-setuptools-scm))) + (list python-pytest-cov python-pytest-xdist python-responses + python-setuptools-scm)) (home-page "https://github.com/webcomics/dosage") (synopsis "Comic strip downloader and archiver") (description "Dosage is designed to keep a local copy of specific webcomics and other @@ -2230,8 +2331,7 @@ downloaded, or download a strip for a particular date or index, if possible.") (lambda _ (invoke "pytest")))))) (native-inputs - `(("python-pytest" ,python-pytest) - ("python-lxml" ,python-lxml))) ;used for the tests + (list python-pytest python-lxml)) ;used for the tests (home-page "https://bitbucket.org/openpyxl/et_xmlfile") (synopsis "Low memory implementation of @code{lxml.xmlfile}") (description "This Python library is based upon the @code{xmlfile} module @@ -2265,12 +2365,9 @@ of @code{xmlfile}.") (invoke "pytest")))))) (native-inputs ;; For the test suite. - `(("python-lxml" ,python-lxml) - ("python-pillow" ,python-pillow) - ("python-pytest" ,python-pytest))) + (list python-lxml python-pillow python-pytest)) (propagated-inputs - `(("python-et-xmlfile" ,python-et-xmlfile) - ("python-jdcal" ,python-jdcal))) + (list python-et-xmlfile python-jdcal)) (home-page "https://openpyxl.readthedocs.io") (synopsis "Python library to read/write Excel 2010 XLSX/XLSM files") (description "This Python library allows reading and writing to the Excel XLSX, XLSM, @@ -2293,27 +2390,44 @@ standard.") (sha256 (base32 "1qzjj8nwj4dn0mhq1j64f136afiqqb81lvqiikipz3g1g0b80lqx")))) - (arguments '(#:tests? #f))))) ; No test suite. + (arguments + `(#:python ,python-2 + #:tests? #f))))) ; No test suite. (define-public python-eventlet (package (name "python-eventlet") - (version "0.25.1") + (version "0.33.0") (source (origin (method url-fetch) (uri (pypi-uri "eventlet" version)) (sha256 (base32 - "1hgz8jq19wlz8vwqj900ry8cjv578nz4scc91mlc8944yid6573c")))) + "07qlyhcm0f28sxdizawvdf3d50m3hnbzz5kg3fjp7chvki44y540")))) (build-system python-build-system) (propagated-inputs - `(("python-dnspython" ,python-dnspython) - ("python-greenlet" ,python-greenlet) - ("python-monotonic" ,python-monotonic))) + (list python-dnspython python-greenlet python-monotonic python-six)) + (native-inputs + (list python-nose)) (arguments - ;; TODO: Requires unpackaged 'enum-compat'. - '(#:tests? #f)) + '(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'avoid-OSError + (lambda _ + ;; If eventlet tries to load greendns, an OSError is thrown when + ;; getprotobyname is called. Thankfully there is an environment + ;; variable to disable the greendns import, so use it: + (setenv "EVENTLET_NO_GREENDNS" "yes"))) + (add-after 'unpack 'delete-broken-tests + (lambda _ + (delete-file "tests/greendns_test.py") + (delete-file "tests/socket_test.py"))) + ;; See https://github.com/eventlet/eventlet/issues/562#issuecomment-714183009 + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "nosetests" "-v" "tests/"))))))) (home-page "https://eventlet.net") (synopsis "Concurrent networking library for Python") (description @@ -2324,7 +2438,7 @@ Coroutines ensure that the developer uses a blocking style of programming that is similar to threading, but provide the benefits of non-blocking I/O. The event dispatch is implicit, which means you can easily use @code{Eventlet} from the Python interpreter, or as a small part of a larger application.") - (license license:expat))) + (license license:expat))) (define-public python-sinfo (package @@ -2338,7 +2452,7 @@ from the Python interpreter, or as a small part of a larger application.") "0kdsp883mx0lfyykv0p12bvs203kdm3skb8bw5wf2pc7kb393sl1")))) (build-system python-build-system) (propagated-inputs - `(("python-stdlib-list" ,python-stdlib-list))) + (list python-stdlib-list)) (home-page "https://gitlab.com/joelostblom/session_info") (synopsis "Output module version information loaded in a Python session") (description "This package outputs version information for modules loaded @@ -2346,48 +2460,20 @@ in the current session, Python, and the OS.") (license license:bsd-3))) (define-public python-six - (package + (package/inherit python-six-bootstrap (name "python-six") - (version "1.15.0") - (source - (origin - (method url-fetch) - (uri (pypi-uri "six" version)) - (sha256 - (base32 - "0n82108wxn5giff50hd9ykjhd3zl7cndabdasi6568yvbh1rqqrh")))) - (build-system python-build-system) (arguments `(#:phases (modify-phases %standard-phases (replace 'check (lambda _ - (invoke "py.test" "-v")))))) + (invoke "pytest" "-v")))))) (native-inputs - `(("python-pytest" ,python-pytest-bootstrap))) - (home-page "https://pypi.org/project/six/") - (synopsis "Python 2 and 3 compatibility utilities") - (description - "Six is a Python 2 and 3 compatibility library. It provides utility -functions for smoothing over the differences between the Python versions with -the goal of writing Python code that is compatible on both Python versions. -Six supports every Python version since 2.5. It is contained in only one -Python file, so it can be easily copied into your project.") - (license license:x11))) + `(("python-pytest" ,python-pytest-bootstrap))))) (define-public python2-six (package-with-python2 python-six)) -(define-public python-six-bootstrap - (package - (inherit python-six) - (name "python-six-bootstrap") - (native-inputs `()) - (arguments `(#:tests? #f)))) - -(define-public python2-six-bootstrap - (package-with-python2 python-six-bootstrap)) - (define-public python-schedule (package (name "python-schedule") @@ -2401,8 +2487,7 @@ Python file, so it can be easily copied into your project.") "0vplyjcbfrq50sphlwya749z8p2pcyi2nycw3518i0qpd9a6189i")))) (build-system python-build-system) (native-inputs - `(("python-pytest" ,python-pytest) - ("python-mock" ,python-mock))) + (list python-pytest python-mock)) (home-page "https://github.com/dbader/schedule") (synopsis "Schedule periodic function calls in Python") (description @@ -2431,7 +2516,7 @@ human-friendly syntax.") (sha256 (base32 "0mmfvx4wqp8gkpv0kbih89zfs9njvmd3v4dxfqii62xddpxq0f1k")))) (propagated-inputs - `(("python-six" ,python-six))) + (list python-six)) (build-system python-build-system) (home-page "https://github.com/scour-project/scour") (synopsis "Scour is an SVG optimizer/cleaner written in Python") @@ -2454,7 +2539,7 @@ lossless but can be tweaked for more aggressive cleaning.") "1z9kqcwb8gfq2l6i42z624kxpd8692a0c8gw2x5bbm7n848w2mb3")))) (build-system python-build-system) (propagated-inputs - `(("python-html5lib" ,python-html5lib))) + (list python-html5lib)) (home-page "https://github.com/python-mechanize/mechanize") (synopsis "Stateful programmatic web browsing in Python") @@ -2481,7 +2566,7 @@ after Andy Lester’s Perl module WWW::Mechanize.") (arguments `(#:tests? #f)) (inputs - `(("alsa-lib" ,alsa-lib))) + (list alsa-lib)) (home-page "https://github.com/hamiltron/py-simple-audio") (synopsis "Simple, asynchronous audio playback for Python 3") @@ -2503,7 +2588,7 @@ audio playback capability for Python 3 on OSX, Windows, and Linux.") "0hc8nqwdlll4a9cr1k9msn5kmb6kmbjirpgvhjh254nr4sgwgv3m")))) (build-system python-build-system) (native-inputs - `(("python-toml" ,python-toml))) + (list python-toml)) (home-page "https://simplejson.readthedocs.io/en/latest") (synopsis "Json library for Python") @@ -2537,10 +2622,9 @@ Python 3.3+.") "0mkz1673qxldxs4mrqg9882xgmz5fhpia17yrsd6z8dfw8156rf0")))) (build-system python-build-system) (inputs - `(("icu4c" ,icu4c))) + (list icu4c)) (native-inputs - `(("python-pytest" ,python-pytest) - ("python-six" ,python-six))) + (list python-pytest python-six)) (home-page "https://github.com/ovalhub/pyicu") (synopsis "Python extension wrapping the ICU C++ API") (description @@ -2577,9 +2661,7 @@ Python 3.3+.") (invoke "dbus-run-session" "--" "nosetests" "-v" "tests/")) #t))))) (propagated-inputs - `(("python-pygobject" ,python-pygobject) - ("python-pycairo" ,python-pycairo) - ("python-pyatspi" ,python-pyatspi))) + (list python-pygobject python-pycairo python-pyatspi)) (native-inputs `(("python-nose" ,python-nose) ("gtk+" ,gtk+) @@ -2744,11 +2826,9 @@ backported for previous versions of Python from 2.4 to 3.3.") "0g3b6gsdwnm8dpkh2vn34q6dzxm9gl908ggyzcv31n9xbp3vv5pm")))) (build-system python-build-system) (propagated-inputs - `(("python-six" ,python-six) - ("python-parse" ,python-parse))) + (list python-six python-parse)) (native-inputs - `(("python-pytest" ,python-pytest) - ("python-pytest-runner" ,python-pytest-runner))) + (list python-pytest python-pytest-runner)) (home-page "https://github.com/jenisys/parse_type") (synopsis "Extended parse module") (description @@ -2814,6 +2894,26 @@ existing ones.") ;; Tests don't work with python2. #:tests? #f))))) +(define-public python-polling2 + (package + (name "python-polling2") + (version "0.5.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "polling2" version)) + (sha256 + (base32 "0hp3238fv6k1qk43gv4jwnv1mwlkmx33akbj560b9nvsry1dmdwh")))) + (build-system python-build-system) + (arguments '(#:tests? #false)) ; no tests included + (native-inputs + (list python-mock python-pytest python-pytest-runner)) + (home-page "https://github.com/ddmee/polling2") + (synopsis "Polling utility with many configurable options") + (description "Polling2 is a utility used to wait for a function to return +a certain expected condition.") + (license license:expat))) + (define-public python-poyo (package (name "python-poyo") @@ -2892,10 +2992,8 @@ software.") (base32 "10iqjzmya2h4sk765dlm1pbqypwlqyh8rw59a5m9i63d3klnz2mc")))) (build-system python-build-system) (native-inputs - `(("coverage" ,python-coverage) - ("pytest" ,python-pytest-astropy) - ("pytest-cov" ,python-pytest-cov) - ("setuptools-scm" ,python-setuptools-scm))) + (list python-coverage python-pytest-astropy python-pytest-cov + python-setuptools-scm)) (home-page "https://github.com/astropy/astropy-helpers") (synopsis "Utilities for building and installing packages in the Astropy ecosystem") @@ -2996,7 +3094,7 @@ server.") (propagated-inputs ;; Youtube-dl is a python package which is imported in the file ;; "backend_youtube_dl.py", therefore it needs to be propagated. - `(("youtube-dl" ,youtube-dl))) + (list youtube-dl)) (home-page "https://np1.github.io/pafy/") (synopsis "Retrieve YouTube content and metadata") (description @@ -3017,7 +3115,7 @@ server.") (arguments `(#:python ,python-2)) (native-inputs - `(("python2-unittest2" ,python2-unittest2))) + (list python2-unittest2)) (home-page "http://funcsigs.readthedocs.org") (synopsis "Python function signatures from PEP362") (description @@ -3052,7 +3150,7 @@ server.") ;; Is this module globally installed?" '(#:tests? #f)) (native-inputs - `(("python-setuptools-scm" ,python-setuptools-scm))) + (list python-setuptools-scm)) (home-page "https://github.com/pytest-dev/py") (synopsis "Python library for parsing, I/O, instrospection, and logging") (description @@ -3076,14 +3174,14 @@ code introspection, and logging.") (define-public python-pbr-minimal (package (name "python-pbr-minimal") - (version "3.0.1") + (version "5.5.1") (source (origin (method url-fetch) (uri (pypi-uri "pbr" version)) (sha256 (base32 - "14fs5acnalnb3h62s7q7av239j541fk0n0z0lawh4h09b1s93s6p")))) + "1j8k5d4rdhy5bw5ai1vkjzln2albah94in3vvyvxa0n42fv81baz")))) (build-system python-build-system) (arguments `(#:tests? #f)) @@ -3100,7 +3198,7 @@ code introspection, and logging.") (arguments `(#:tests? #f)) ;; Most tests seem to use the Internet. (propagated-inputs - `(("git" ,git))) ;; pbr actually uses the "git" binary. + (list git)) ;; pbr actually uses the "git" binary. (native-inputs `(("python-fixtures" ,python-fixtures-bootstrap) ;; discover, coverage, hacking, subunit @@ -3143,11 +3241,9 @@ from git information. (("hypothesis<5") "hypothesis")) #t))))) (native-inputs - `(("python-hypothesis" ,python-hypothesis) - ("python-pytest" ,python-pytest) - ("python-pytest-runner" ,python-pytest-runner))) + (list python-hypothesis python-pytest python-pytest-runner)) (propagated-inputs - `(("python-six" ,python-six))) + (list python-six)) (synopsis "Persistent data structures for Python") (description "Pyrsistent is a number of persistent collections (by some referred to as @@ -3219,12 +3315,10 @@ files.") (base32 "1bg2iw9l5dip0kbs00hajdk2v18wvhssbnq8hdf71278qf0wks5l")))) (build-system python-build-system) (native-inputs - `(("python-pytest" ,python-pytest))) + (list python-pytest)) (propagated-inputs - `(("python-wcwidth" ,python-wcwidth) - ("python-configobj" ,python-configobj) - ("python-tabulate" ,python-tabulate) - ("python-terminaltables" ,python-terminaltables))) + (list python-wcwidth python-configobj python-tabulate + python-terminaltables)) (home-page "https://github.com/dbcli/cli_helpers") (synopsis "Helpers for building command-line apps") (description @@ -3259,7 +3353,7 @@ interfaces.") (lambda _ (invoke "python" "-m" "pytest")))))) (native-inputs - `(("python-pytest" ,python-pytest))) + (list python-pytest)) (home-page "https://palletsprojects.com/p/click/") (synopsis "Command line library for Python") (description @@ -3284,6 +3378,30 @@ with sensible defaults out of the box.") (base32 "0njsm0wn31l21bi118g5825ma5sa3rwn7v2x4wjd7yiiahkri337")))) (arguments `()))) +(define-public python-cligj + (package + (name "python-cligj") + (version "0.7.2") + (source + (origin + (method url-fetch) + (uri (pypi-uri "cligj" version)) + (sha256 + (base32 + "09vbkik6kyn6yrqzl2r74vaybjk8kjykvi975hy3fsrm4gb17g54")))) + (build-system python-build-system) + (propagated-inputs + (list python-click)) + (native-inputs + (list python-pytest-cov)) + (home-page "https://github.com/mapbox/cligj") + (synopsis "Click params for command line interfaces to GeoJSON") + (description + "cligj is for Python developers who create command line interfaces +for geospatial data. cligj allows you to quickly build consistent, +well-tested and interoperable CLIs for handling GeoJSON.") + (license license:bsd-3))) + (define-public python-vcversioner (package (name "python-vcversioner") @@ -3324,7 +3442,7 @@ version numbers.") (lambda _ (invoke "pytest")))))) (native-inputs - `(("python-pytest" ,python-pytest))) + (list python-pytest)) (home-page "https://github.com/phn/jdcal") (synopsis "Functions to convert between Julian dates Gregorian dates") (description "This Python library provides functions for converting @@ -3347,8 +3465,7 @@ between Julian dates and Gregorian dates.") "00v3689175aqzdscrxpffm712ylp8jvcpqdg51ca22ni6721p51l")))) (build-system python-build-system) (native-inputs - `(("python-nose" ,python-nose) - ("python-nose-random" ,python-nose-random))) + (list python-nose python-nose-random)) (home-page "https://github.com/fzumstein/jsondiff") (synopsis "Compare JSON and JSON-like structures in Python") @@ -3379,24 +3496,12 @@ compare, diff, and patch JSON and JSON-like structures in Python.") `(("python-setuptools_scm" ,python-setuptools-scm) ("python-twisted" ,python-twisted))) (propagated-inputs - `(("python-attrs" ,python-attrs) - ("python-pyrsistent" ,python-pyrsistent) - ("python-six" ,python-six))) + (list python-attrs python-pyrsistent python-six)) (home-page "https://github.com/Julian/jsonschema") (synopsis "Implementation of JSON Schema for Python") (description "Jsonschema is an implementation of JSON Schema for Python.") - (license license:expat) - (properties `((python2-variant . ,(delay python2-jsonschema)))))) - -(define-public python2-jsonschema - (let ((jsonschema (package-with-python2 - (strip-python2-variant python-jsonschema)))) - (package/inherit jsonschema - (propagated-inputs - `(("python2-functools32" ,python2-functools32) - ("python2-importlib-metadata" ,python2-importlib-metadata) - ,@(package-propagated-inputs jsonschema)))))) + (license license:expat))) (define-public python-schema (package @@ -3411,7 +3516,7 @@ compare, diff, and patch JSON and JSON-like structures in Python.") "1lw28j9w9vxyigg7vkfkvi6ic9lgjkdnfvnxdr7pklslqvzmk2vm")))) (build-system python-build-system) (native-inputs - `(("python-pytest" ,python-pytest))) + (list python-pytest)) (home-page "https://github.com/keleshev/schema") (synopsis "Simple data validation library") (description @@ -3451,7 +3556,7 @@ something else) to Python data-types.") "1zakh6l0yjvwic9p0nkvmbidpnkygkxbigh2skmb5gccyrhbp7xg")))) (build-system python-build-system) (propagated-inputs - `(("python-chardet" ,python-chardet))) + (list python-chardet)) (home-page "https://github.com/fedora-infra/kitchen") (synopsis "Python API for snippets") (description "@code{kitchen} module provides a python API for all sorts of @@ -3526,7 +3631,7 @@ somewhat intelligible.") (lambda _ (invoke "pytest" "-vv")))))) (native-inputs - `(("python-pytest" ,python-pytest))) + (list python-pytest)) (home-page "https://github.com/kmike/text-unidecode/") (synopsis "Decode Unicode data") (description @@ -3570,8 +3675,7 @@ memory usage and transliteration quality.") "")) (invoke "pytest" "-vv")))))) (native-inputs - `(("python-pytest" ,python-pytest) - ("python-pytest-cov" ,python-pytest-cov))) + (list python-pytest python-pytest-cov)) (home-page "https://github.com/progrium/pyjwt") (synopsis "JSON Web Token implementation in Python") (description @@ -3670,9 +3774,6 @@ visualisation and class tracker statistics.") environments and back.") (license license:bsd-3))) -(define-public python2-itsdangerous - (package-with-python2 python-itsdangerous)) - (define-public python-pyyaml (package (name "python-pyyaml") @@ -3686,8 +3787,7 @@ environments and back.") "0pm440pmpvgv5rbbnm8hk4qga5a292kvlm1bh3x2nwr8pb5p8xv0")))) (build-system python-build-system) (inputs - `(("libyaml" ,libyaml) - ("python-cython" ,python-cython))) + (list libyaml python-cython)) (home-page "https://pyyaml.org") (synopsis "YAML parser and emitter for Python") (description @@ -3713,8 +3813,7 @@ provides Python-specific tags that represent an arbitrary Python object.") "0wkskb2hb494v9gixqnf4bl972p4ibcmxdykzpwjlfa5picns4aj")))) (build-system python-build-system) (native-inputs - `(("python-pytest" ,python-pytest) - ("python-case" ,python-case))) + (list python-pytest python-case)) (home-page "https://github.com/celery/vine") (synopsis "Promises for Python") (description @@ -3737,14 +3836,9 @@ e.g. filters, callbacks and errbacks can all be promises.") "1nbhnpzswcf3lmzn5xabmfdd7ki8r2w2i37y6wml54di6qi1l48c")))) (build-system python-build-system) (native-inputs - `(("python-mock" ,python-mock) - ("python-pytest" ,python-pytest) - ("python-setuptools-scm" ,python-setuptools-scm))) + (list python-mock python-pytest python-setuptools-scm)) (propagated-inputs - `(("python-appdirs" ,python-appdirs) - ("python-distlib" ,python-distlib) - ("python-filelock" ,python-filelock) - ("python-six" ,python-six))) + (list python-appdirs python-distlib python-filelock python-six)) (home-page "https://virtualenv.pypa.io/") (synopsis "Virtual Python environment builder") (description @@ -3755,32 +3849,9 @@ e.g. filters, callbacks and errbacks can all be promises.") (let ((base (package-with-python2 (strip-python2-variant python-virtualenv)))) (package (inherit base) - (arguments - `(#:python ,python-2 - #:phases - (modify-phases %standard-phases - (add-after 'set-paths 'adjust-PYTHONPATH - (lambda* (#:key inputs #:allow-other-keys) - (let* ((python (assoc-ref inputs "python")) - (python-sitedir (string-append python "/lib/python2.7" - "/site-packages"))) - ;; XXX: 'python2' always comes first on PYTHONPATH - ;; and shadows the 'setuptools' input. Move python2 - ;; last: this should be fixed in python-build-system - ;; in a future rebuild cycle. - (setenv "PYTHONPATH" - (string-append (string-join (delete python-sitedir - (string-split - (getenv "PYTHONPATH") - #\:)) - ":") - ":" python-sitedir)) - (format #t "environment variable `PYTHONPATH' changed to `~a'~%" - (getenv "PYTHONPATH")) - #t)))))) (propagated-inputs - `(("python-contextlib2" ,python2-contextlib2) - ,@(package-propagated-inputs base)))))) + (modify-inputs (package-propagated-inputs base) + (prepend python2-contextlib2)))))) (define-public python-markupsafe (package @@ -3801,16 +3872,28 @@ e.g. filters, callbacks and errbacks can all be promises.") (when tests? (invoke "pytest" "-vv"))))))) (native-inputs - `(("python-pytest" ,python-pytest))) + (list python-pytest)) (home-page "https://github.com/mitsuhiko/markupsafe") (synopsis "XML/HTML/XHTML markup safe string implementation for Python") (description "Markupsafe provides an XML/HTML/XHTML markup safe string implementation for Python.") - (license license:bsd-3))) + (license license:bsd-3) + (properties `((python2-variant . ,(delay python2-markupsafe)))))) +;; Version 1.1.1 is the last to support Python 2. (define-public python2-markupsafe - (package-with-python2 python-markupsafe)) + (package + (inherit (package-with-python2 + (strip-python2-variant python-markupsafe))) + (version "1.1.1") + (source + (origin + (method url-fetch) + (uri (pypi-uri "MarkupSafe" version)) + (sha256 + (base32 + "0sqipg4fk7xbixqd8kq6rlkxj664d157bdwbh93farcphf92x1r9")))))) (define-public python-jinja2 (package @@ -3832,18 +3915,30 @@ for Python.") (invoke "pytest" "-vv") (format #t "test suite not run~%"))))))) (native-inputs - `(("python-pytest" ,python-pytest))) + (list python-pytest)) (propagated-inputs - `(("python-markupsafe" ,python-markupsafe))) + (list python-markupsafe)) (home-page "http://jinja.pocoo.org/") (synopsis "Python template engine") (description "Jinja2 is a small but fast and easy to use stand-alone template engine written in pure Python.") - (license license:bsd-3))) + (license license:bsd-3) + (properties `((python2-variant . ,(delay python2-jinja2)))))) +;; Version 2.11.3 is the last to support Python 2. (define-public python2-jinja2 - (package-with-python2 python-jinja2)) + (package + (inherit (package-with-python2 + (strip-python2-variant python-jinja2))) + (version "2.11.3") + (source + (origin + (method url-fetch) + (uri (pypi-uri "Jinja2" version)) + (sha256 + (base32 + "1iiklf3wns67y5lfcacxma5vxfpb7h2a67xbghs01s0avqrq9md6")))))) (define-public python-jinja2-time (package @@ -3858,8 +3953,7 @@ written in pure Python.") "0h0dr7cfpjnjj8bgl2vk9063a53649pn37wnlkd8hxjy656slkni")))) (build-system python-build-system) (propagated-inputs - `(("python-arrow" ,python-arrow) - ("python-jinja2" ,python-jinja2))) + (list python-arrow python-jinja2)) (home-page "https://github.com/hackebrot/jinja2-time") (synopsis "Jinja2 Extension for Dates and Times") @@ -3905,21 +3999,26 @@ logic-free templating system Mustache.") (define-public python-joblib (package (name "python-joblib") - (version "0.14.1") + (version "1.1.0") (source (origin (method url-fetch) (uri (pypi-uri "joblib" version)) (sha256 (base32 - "1j464w137w6s367gl697j1l63g52akydrxgv4czlck36ynjfwc06")))) + "0d8ypyhsw1bjr96zan9ms8wbvnzbjqxniq4vcszghcrps7ngqn21")))) (build-system python-build-system) (arguments `(#:phases (modify-phases %standard-phases (replace 'check - (lambda _ (invoke "pytest" "-v" "joblib")))))) + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (setenv "JOBLIB_MULTIPROCESSING" "0") + (invoke "pytest" "-v" "joblib" + ;; We disable this test to avoid having to depend on ipython/jupyter + "-k" "not test_parallel_call_cached_function_defined_in_jupyter"))))))) (native-inputs - `(("python-pytest" ,python-pytest))) + (list python-pytest)) (home-page "https://joblib.readthedocs.io/") (synopsis "Using Python functions as pipeline jobs") (description @@ -3929,39 +4028,54 @@ and lazy re-evaluation (memoize pattern), easy simple parallel computing logging and tracing of the execution.") (license license:bsd-3))) +;; Newer versions of joblib don't support Python 2. (define-public python2-joblib - (package-with-python2 python-joblib)) + (package + (inherit (package-with-python2 python-joblib)) + (version "0.14.1") + (source (origin + (method url-fetch) + (uri (pypi-uri "joblib" version)) + (sha256 + (base32 + "1j464w137w6s367gl697j1l63g52akydrxgv4czlck36ynjfwc06")))))) (define-public python-daemon (package (name "python-daemon") - (version "2.2.3") + (version "2.3.0") (source (origin (method url-fetch) (uri (pypi-uri "python-daemon" version)) (sha256 (base32 - "09fcjdjzk9ywmpnrj62iyxqgcygzdafsz41qlrk2dknzbagcmzmg")))) + "1bxfn2bq56sd4w0nm9mqy8y0905m7fc8vmhnjxlrf49vcbqr7adx")))) (build-system python-build-system) (arguments `(#:phases (modify-phases %standard-phases - (add-before 'check 'disable-tests + (add-before 'check 'adjust-tests (lambda _ + ;; Drop use of testtools.helpers.safe_hasattr which has + ;; been removed in favor of hasattr. + (substitute* "test/test_metadata.py" + (("testtools\\.helpers\\.safe_hasattr") + "hasattr")) ;; FIXME: Determine why test fails (substitute* "test/test_daemon.py" (("test_detaches_process_context") - "skip_test_detaches_process_context")) - #t))))) + "skip_test_detaches_process_context"))))))) (propagated-inputs - `(("python-lockfile" ,python-lockfile))) + (list python-lockfile)) (native-inputs - `(("python-unittest2" ,python-unittest2) - ("python-testtools" ,python-testtools) - ("python-testscenarios" ,python-testscenarios) - ("python-mock" ,python-mock) - ("python-docutils" ,python-docutils))) + (list python-coverage + python-unittest2 + python-testtools + python-testscenarios + python-twine + python-mock + python-docutils)) (home-page "https://pagure.io/python-daemon/") (synopsis "Python library for making a Unix daemon process") (description "Python-daemon is a library that assists a Python program to @@ -3995,11 +4109,11 @@ important tasks for becoming a daemon process: "1aycpc387wqz7h9w2p53qxn43qsh3m6by6ak4kkc66x9aprr63rz")))) (build-system python-build-system) (propagated-inputs - `(("python-six" ,python-six))) + (list python-six)) (native-inputs - `(;; For tests. - ("graphviz" ,graphviz) ;for 'dot' - ("python-nose" ,python-nose))) + (list ;; For tests. + graphviz ;for 'dot' + python-nose)) (home-page "https://github.com/c0fec0de/anytree") (synopsis "Lightweight tree data library") (description @@ -4010,14 +4124,14 @@ structure for Python.") (define-public python-docutils (package (name "python-docutils") - (version "0.16") + (version "0.17.1") (source (origin (method url-fetch) (uri (pypi-uri "docutils" version)) (sha256 (base32 - "1z3qliszqca9m719q3qhdkh0ghh90g500avzdgi7pl77x5h3mpn2")))) + "09gii36lp1bs26cpxqyfd20xahnpbrbjzcnba2xq08y3wk97frb8")))) (build-system python-build-system) (arguments '(#:phases (modify-phases %standard-phases @@ -4043,6 +4157,20 @@ via commands such as @command{rst2man}, as well as supporting Python code.") (define-public python2-docutils (package-with-python2 python-docutils)) +;; awscli refuses to be built with docutils < 0.16. +(define-public python-docutils-0.15 + (package + (inherit python-docutils) + (version "0.15") + (source (origin + (method url-fetch) + (uri (pypi-uri "docutils" version)) + (sha256 + (base32 + "0ja8q6mdj6xv62jjw3phv8j5nfqi5x8hnfy4pqfcjcgz4b34k8sl")))) + ;; tests contain Python 2 syntax. + (arguments '(#:tests? #false)))) + ;; python2-sphinx fails its test suite with newer versions. (define-public python2-docutils-0.14 (package @@ -4078,9 +4206,9 @@ via commands such as @command{rst2man}, as well as supporting Python code.") (invoke "nosetests" "-v")) #t))))) (propagated-inputs - `(("python-docutils" ,python-docutils))) + (list python-docutils)) (native-inputs - `(("python-nose" ,python-nose))) + (list python-nose)) (home-page "https://github.com/twolfson/restructuredtext-lint") (synopsis "reStructuredText linter") (description "This package provides a linter for the reStructuredText @@ -4110,14 +4238,10 @@ format.") (invoke "pytest" "-v")) #t))))) (propagated-inputs - `(("python-chardet" ,python-chardet) - ("python-docutils" ,python-docutils) - ("python-restructuredtext-lint" ,python-restructuredtext-lint) - ("python-six" ,python-six) - ("python-stevedore" ,python-stevedore))) + (list python-chardet python-docutils python-restructuredtext-lint + python-six python-stevedore)) (native-inputs - `(("python-testtools" ,python-testtools) - ("python-pytest" ,python-pytest))) + (list python-testtools python-pytest)) (home-page "https://launchpad.net/doc8") (synopsis "Style checker for Sphinx (or other) RST documentation") @@ -4174,7 +4298,7 @@ text styles of documentation.") "0cz14clcc9z4pn79ll8hp3xzgsrfjscak5zfsvlgrz6ngkkmgjma")))) (build-system python-build-system) (propagated-inputs - `(("python-pygments" ,python-pygments))) + (list python-pygments)) (home-page "https://github.com/liluo/pygments-github-lexers") (synopsis "Pygments Github custom lexers") (description "This package installs Github custom lexers to Pygments.") @@ -4224,7 +4348,7 @@ software version simply.") (define-public python-deprecated (package (name "python-deprecated") - (version "1.2.5") + (version "1.2.13") (source (origin (method git-fetch) @@ -4234,21 +4358,19 @@ software version simply.") (file-name (git-file-name name version)) (sha256 (base32 - "14909glxxwwc4b9qpz2b9jdriwzi5n65ichw85xqppap5f79wcwz")))) + "0v4ys9xr8lski2r98da99spsj6hjlnnqgnhhmyhrm66myiix885c")))) (build-system python-build-system) (arguments `(#:phases (modify-phases %standard-phases (replace 'check - (lambda _ - (invoke "pytest")))))) + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "pytest"))))))) (propagated-inputs - `(("python-wrapt" ,python-wrapt))) + (list python-wrapt)) (native-inputs - `(("python-bumpversion" ,python-bumpversion) - ("python-pytest" ,python-pytest) - ("python-pytest-cov" ,python-pytest-cov) - ("python-sphinx" ,python-sphinx) - ("python-tox" ,python-tox))) + (list python-bumpversion python-pytest python-pytest-cov + python-sphinx python-tox)) (home-page "https://github.com/tantale/deprecated") (synopsis "Python decorator to deprecate classes, functions or methods") (description "The @code{deprecated} decorator provides a convenient way to deprecate @@ -4280,13 +4402,10 @@ to deprecate classes, functions or methods.") (invoke "pytest")) #t))))) (propagated-inputs - `(("python-cryptography" ,python-cryptography) - ("python-deprecated" ,python-deprecated) - ("python-pyjwt" ,python-pyjwt) - ("python-requests" ,python-requests))) + (list python-cryptography python-deprecated python-pyjwt + python-requests)) (native-inputs - `(("python-httpretty" ,python-httpretty) - ("python-pytest" ,python-pytest))) + (list python-httpretty python-pytest)) (home-page "https://pygithub.readthedocs.io/en/latest/") (synopsis "Python library for the GitHub API") (description "This library allows managing GitHub resources such as @@ -4307,8 +4426,7 @@ using version 3 of the GitHub application programming interface (API).") "1w0arpj1sm7vh29nrbnca4pnp8sx42l07r17inwqcjjf9bhng66x")))) (build-system python-build-system) (propagated-inputs - `(("python-invoke" ,python-invoke) - ("python-pygithub" ,python-pygithub))) + (list python-invoke python-pygithub)) (home-page "https://github.com/robotframework/rellu") (synopsis "Utilities to create PyPI releases") (description "This collection of utilities contains tooling and templates @@ -4320,7 +4438,7 @@ ecosystem, but can naturally be used also by other projects.") (define-public python-robotframework (package (name "python-robotframework") - (version "3.2.2") + (version "4.1.2") ;; There are no tests in the PyPI archive. (source (origin @@ -4330,7 +4448,7 @@ ecosystem, but can naturally be used also by other projects.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "0if0h3myb9m3hgmn1phrhq8pfp89kfqsaq32vmfdjkyjdj7y59ds")) + (base32 "0s6lakbd8h1pa4lfdj18sm13gpywszgpcns4hz026a4kam787kby")) (patches (search-patches "python-robotframework-source-date-epoch.patch")))) (build-system python-build-system) @@ -4344,8 +4462,7 @@ ecosystem, but can naturally be used also by other projects.") (invoke "invoke" "library-docs" "all") (mkdir-p doc) (copy-recursively "doc/libraries" - (string-append doc "/libraries")) - #t))) + (string-append doc "/libraries"))))) (replace 'check (lambda* (#:key inputs #:allow-other-keys) ;; Some tests require timezone data. Otherwise, they @@ -4359,7 +4476,9 @@ ecosystem, but can naturally be used also by other projects.") (invoke "python" "utest/run.py")))))) (native-inputs - `(("python-invoke" ,python-invoke) + `(("python-docutils" ,python-docutils) + ("python-jsonschema" ,python-jsonschema) + ("python-invoke" ,python-invoke) ("python-rellu" ,python-rellu) ("python:tk" ,python "tk") ;used when building the HTML doc ("tzdata" ,tzdata-for-tests))) @@ -4371,6 +4490,48 @@ acceptance testing, acceptance test driven development (ATDD), and robotic process automation (RPA).") (license license:asl2.0))) +(define-public python-robotframework-datadriver + (package + (name "python-robotframework-datadriver") + (version "1.5.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "robotframework-datadriver" version)) + (sha256 + (base32 "1kv6h47850gdqr8azknkh81z7hw6yz5pjn53mkn71ly4szw4pqb7")))) + (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'fix-readme-file-name + (lambda _ + (rename-file "Readme.rst" "README.rst"))) + (add-before 'check 'skip-problematic-tests + (lambda _ + ;; The test file 'tab-csv-file-name.tsv' contains special + ;; characters for which there is no locale in the build + ;; environment, causing one test to fail. + (delete-file-recursively "atest/TestCases/csv_reader_config"))) + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (with-directory-excursion "atest" + (invoke "sh" "run_atest.sh")))))))) + (native-inputs (list python-docutils + python-robotframework-stacktrace)) + (propagated-inputs (list python-openpyxl + python-pandas + python-pygments + python-robotframework)) + (home-page "https://github.com/Snooz82/robotframework-datadriver") + (synopsis "Data-driven test extension for Robot Framework") + (description "DataDriver is a data-driven extension for Robot Framework. +DataDriver uses the Listener Interface of Robot Framework to create new test +cases based on a data file that contains the test data. DataDriver supports +data files in the CSV, XLS or XLSX formats.") + (license license:asl2.0))) + (define-public python-robotframework-lint ;; There is no properly tagged release; the commit below seems to correspond ;; to the 0.9 stable release available from PyPI. The tests are not @@ -4401,17 +4562,46 @@ process automation (RPA).") (invoke "python" "-m" "robot" "-A" "tests/conf/default.args" "tests")))))) (propagated-inputs - `(("python-robotframework" ,python-robotframework))) + (list python-robotframework)) (home-page "https://github.com/boakley/robotframework-lint/") (synopsis "Static analysis tool (linter) for Robot Framework") (description "This package provides the @code{rflint} command-line utility, a static analysis tool (linter) for Robot Framework source files.") (license license:asl2.0)))) +(define-public python-robotframework-stacktrace + (package + (name "python-robotframework-stacktrace") + (version "0.4.1") + (source + (origin + (method url-fetch) + (uri (pypi-uri "robotframework-stacktrace" version)) + (sha256 + (base32 "19gnwr7da1zz9clhwsmvqfjf02d195i61lzpq4253dcsgrpb6v79")))) + (build-system python-build-system) + (arguments + ;; The test suite fails (see: + ;; https://github.com/MarketSquare/robotframework-stacktrace/issues/4). + `(#:tests? #f + #:phases + (modify-phases %standard-phases + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (with-directory-excursion "tests" + (invoke "python" "-m" "robot" ".")))))))) + (propagated-inputs (list python-robotframework)) + (home-page "https://github.com/MarketSquare/robotframework-stacktrace") + (synopsis "Robot Framework listener to print a stack trace on error") + (description "StackTrace is a Robot Framework listener that prints a stack +trace directly to the terminal to ease debugging.") + (license license:asl2.0))) + (define-public python-robotframework-sshlibrary (package (name "python-robotframework-sshlibrary") - (version "3.3.0") + (version "3.7.0") ;; There are no tests in the PyPI archive. (source (origin @@ -4422,7 +4612,7 @@ utility, a static analysis tool (linter) for Robot Framework source files.") (file-name (git-file-name name version)) (sha256 (base32 - "1mk6dz2jqqndbx4yji09012q6rmadnqdywi7czvj62b0s07dr3r2")))) + "09ak22rh9qa9wlpvhkliyybcp4xafjhxsps28wz0pf0030771xav")))) (build-system python-build-system) (arguments `(#:phases @@ -4436,26 +4626,24 @@ utility, a static analysis tool (linter) for Robot Framework source files.") (invoke "invoke" "kw-docs" "project-docs") (mkdir-p doc) (for-each delete-file (find-files "docs" "\\.rst")) - (copy-recursively "docs" doc) - #t))) + (copy-recursively "docs" doc)))) (replace 'check - (lambda _ - ;; Some tests require an SSH server; we remove them. - (delete-file "utest/test_client_api.py") - (delete-file "utest/test_scp.py") - (invoke "python" "utest/run.py")))))) + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + ;; Some tests require an SSH server; we remove them. + (delete-file "utest/test_client_api.py") + (delete-file "utest/test_scp.py") + (invoke "python" "utest/run.py"))))))) (propagated-inputs - `(("python-robotframework" ,python-robotframework) - ("python-paramiko" ,python-paramiko) - ("python-scp" ,python-scp))) + (list python-robotframework python-paramiko python-scp)) (native-inputs - `(("openssh" ,openssh) - ("which" ,which) - ;; To generate the documentation - ("python-docutils" ,python-docutils) - ("python-invoke" ,python-invoke) - ("python-pygments" ,python-pygments) - ("python-rellu" ,python-rellu))) + (list openssh + which + ;; To generate the documentation + python-docutils + python-invoke + python-pygments + python-rellu)) (outputs '("out" "doc")) (home-page "https://github.com/robotframework/SSHLibrary") (synopsis "Robot Framework library for SSH and SFTP") @@ -4469,6 +4657,88 @@ for SSH and SFTP. It has the following main usages: @end itemize") (license license:asl2.0))) +(define-public python-robotframework-pythonlibcore + (package + (name "python-robotframework-pythonlibcore") + (version "3.0.0") + (source + (origin + (method git-fetch) ;no tests in pypi archive + (uri (git-reference + (url "https://github.com/robotframework/PythonLibCore") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0v89v8va65l6inh0fb34qgxawx6p29pnrmw4n5941yzdi3804rc4")))) + (build-system python-build-system) + (arguments + `(#:phases (modify-phases %standard-phases + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "utest/run.py"))))))) + (native-inputs + (list python-pytest python-pytest-cov python-pytest-mockito + python-robotframework)) + (home-page "https://github.com/robotframework/PythonLibCore") + (synopsis "Robot Framework Python library tools") + (description "PythonLibCore provides tools for creating larger test +libraries for Robot Framework using Python. The Robot Framework hybrid and +dynamic library APIs give more flexibility for library than the static library +API, but they also set requirements for libraries which need to be implemented +in the library side. PythonLibCore eases the problem by providing a simpler +interface and by handling all the requirements towards the Robot Framework +library APIs.") + (license license:asl2.0))) + +(define-public python-robotframework-seleniumlibrary + (package + (name "python-robotframework-seleniumlibrary") + (version "5.1.3") + (source + (origin + (method url-fetch) + (uri (pypi-uri "robotframework-seleniumlibrary" version)) + (sha256 + (base32 "1dihrbcid9i7daw2qy6h3xsvwaxzmyip820jw5z11n60qrl006pm")))) + (build-system python-build-system) + ;; XXX: Tests require ungoogled-chromium, but the chromium module would + ;; introduce a cycle if imported here. + (propagated-inputs + (list python-robotframework python-robotframework-pythonlibcore + python-selenium)) + (home-page "https://github.com/robotframework/SeleniumLibrary") + (synopsis "Web testing library for Robot Framework") + (description "SeleniumLibrary is a web testing library for Robot Framework +that utilizes the Selenium tool internally.") + (license license:asl2.0))) + +(define-public python-robotframework-seleniumscreenshots + (package + (name "python-robotframework-seleniumscreenshots") + (version "0.9.5") + (source + (origin + (method url-fetch) + (uri (pypi-uri "robotframework-seleniumscreenshots" version)) + (sha256 + (base32 "05qv323hvjmy62h33ryrjaa9k1hyvp8hq5qnj8j1x3ap2ci3q3s0")))) + (build-system python-build-system) + (arguments + ;; XXX: The tests require a relatively complicated setup configured in + ;; their CI with Nix (!). + `(#:tests? #f)) + (propagated-inputs + (list python-robotframework python-robotframework-seleniumlibrary)) + (home-page "https://github.com/MarketSquare/robotframework-seleniumscreenshots") + (synopsis "Robot Framework library for annotating and cropping screenshots") + (description "The SeleniumScreenshots library for Robot Framework provides +keywords for annotating and cropping screenshots taken with SeleniumLibrary. +It is useful for scripting automatically updated screenshots for documentation +or for visual regression testing purposes.") + (license license:bsd-3))) + (define-public python-rstr (package (name "python-rstr") @@ -4503,7 +4773,7 @@ outside the standard library.") (arguments '(#:tests? #f)) ;tests require an SSH server (propagated-inputs - `(("python-paramiko" ,python-paramiko))) + (list python-paramiko)) (home-page "https://github.com/jbardin/scp.py") (synopsis "SCP protocol module for Python and Paramiko") (description "The scp module extends the Paramiko library to send and @@ -4523,10 +4793,9 @@ receive files via the SCP1 protocol, as implemented by the OpenSSH (base32 "0pqsfqqx8h0pq21k8l3k62kznrgaj2ala93c64s4d9rpbr4mgkd2")))) (build-system python-build-system) (propagated-inputs - `(("python-dateutil" ,python-dateutil) - ("python-six" ,python-six))) + (list python-dateutil python-six)) (native-inputs - `(("python-setuptools-scm" ,python-setuptools-scm))) + (list python-setuptools-scm)) ;; Test would require path.py, which would introduce a cyclic dependence. (arguments `(#:tests? #f)) ;; Note: As of version 1.7 the documentation is not worth building. @@ -4556,8 +4825,7 @@ augment the changelog, but it can be used for other documents, too.") "1h4gwmcfn84kkqh83km1vfz8sc5kr2g4gzgzmr8gz704jmqiv7nq")))) (build-system python-build-system) (propagated-inputs - `(("python-cryptography" ,python-cryptography) - ("python-ecdsa" ,python-ecdsa))) + (list python-cryptography python-ecdsa)) (synopsis "OpenSSH public key parser") (description "This package provides a library for parsing and validating OpenSSH @@ -4585,8 +4853,7 @@ public key files.") #t)))) (build-system python-build-system) (propagated-inputs - `(("python-pytz" ,python-pytz) - ("python-six" ,python-six))) + (list python-pytz python-six)) (home-page "https://github.com/getpelican/feedgenerator") (synopsis "Standalone version of Django's Atom/RSS feed generator") @@ -4598,29 +4865,31 @@ which can produce feeds in RSS 2.0, RSS 0.91, and Atom formats.") (define-public python2-feedgenerator (package-with-python2 python-feedgenerator)) -(define-public python-jsonrpc-server +(define-public python-lsp-jsonrpc (package - (name "python-jsonrpc-server") - (version "0.4.0") + (name "python-lsp-jsonrpc") + (version "1.0.0") (source (origin (method url-fetch) - (uri (pypi-uri "python-jsonrpc-server" version)) + (uri (pypi-uri "python-lsp-jsonrpc" version)) (sha256 (base32 - "1585ybn3djvx5r5zbxkzlhz2wb1d47y4wrfwaxdyq0gi87jl7ib2")))) + "1gb0fsamxndhplx25v8m0b3k7aknzy454fpa0qsqsqnv6c3igv3v")))) (build-system python-build-system) + (native-inputs + (list python-mock python-pytest)) (propagated-inputs - `(("python-mock" ,python-mock) - ("python-pytest" ,python-pytest) - ("python-ujson" ,python-ujson))) - (home-page - "https://github.com/palantir/python-jsonrpc-server") + (list python-ujson)) + (home-page "https://github.com/python-lsp/python-lsp-jsonrpc") (synopsis "JSON RPC 2.0 server library") (description "This package provides a JSON RPC 2.0 server library for Python.") (license license:expat))) +(define-public python-jsonrpc-server + (deprecated-package "python-jsonrpc-server" python-lsp-jsonrpc)) + (define-public python-pydantic (package (name "python-pydantic") @@ -4662,10 +4931,9 @@ which can produce feeds in RSS 2.0, RSS 0.91, and Atom formats.") (replace 'check (lambda _ (invoke "pytest" "-vv")))))) (native-inputs - `(("python-pytest" ,python-pytest) - ("python-pytest-mock" ,python-pytest-mock))) + (list python-pytest python-pytest-mock)) (propagated-inputs - `(("python-typing-extensions" ,python-typing-extensions))) + (list python-typing-extensions)) (home-page "https://github.com/samuelcolvin/pydantic") (synopsis "Python data validation and settings management") (description @@ -4686,8 +4954,7 @@ errors when data is invalid.") "1m1xv9clkg9lgzyza6dnj359z04vh5g0h49nhzghv7lg81gchhap")))) (build-system python-build-system) (propagated-inputs - `(("python-six" ,python-six) - ("python-snowballstemmer" ,python-snowballstemmer))) + (list python-six python-snowballstemmer)) (home-page "https://github.com/PyCQA/pydocstyle/") (synopsis "Python docstring style checker") @@ -4696,68 +4963,65 @@ errors when data is invalid.") Server (PLS).") (license license:expat))) -(define-public python-language-server +(define-public python-lsp-server (package - (name "python-language-server") - (version "0.36.2") + (name "python-lsp-server") + (version "1.3.1") (source (origin (method url-fetch) - (uri (pypi-uri "python-language-server" version)) + (uri (pypi-uri "python-lsp-server" version)) (sha256 (base32 - "1c0pnk2aibfhfaanrs0a5gkabkvz81gj20z7r0152b7fcx5ci14r")))) + "15075a5irjxh55wcdf25hllz9c42byxc4770cmwgb480k1dm8scq")))) (build-system python-build-system) (arguments `(#:phases (modify-phases %standard-phases - (add-after 'unpack 'relax-deps - (lambda _ - (substitute* "setup.py" (("pycodestyle>=2.6.0,<2.7.0") - "pycodestyle")) - (substitute* "setup.py" (("pyflakes>=2.2.0,<2.3.0") "pyflakes")) - #t)) (add-before 'check 'set-HOME - (lambda _ (setenv "HOME" "/tmp") #t)) + (lambda _ (setenv "HOME" "/tmp"))) (replace 'check (lambda _ ;; Disable failing test. (invoke "python" "-m" "pytest" "-k" "not test_pyqt_completion")))))) (propagated-inputs - `(("python-autopep8" ,python-autopep8) - ("python-configparser" ,python-configparser) - ("python-pydocstyle" ,python-pydocstyle) - ("python-flake8" ,python-flake8) - ("python-future" ,python-future) - ("python-jedi" ,python-jedi) - ("python-jsonrpc-server" ,python-jsonrpc-server) - ("python-pluggy" ,python-pluggy) - ("python-pycodestyle" ,python-pycodestyle) - ("python-pyflakes" ,python-pyflakes) - ("python-rope" ,python-rope) - ("python-ujson" ,python-ujson) - ("python-yapf" ,python-yapf))) + (list python-autopep8 + python-configparser + python-pydocstyle + python-flake8 + python-future + python-jedi + python-lsp-jsonrpc + python-pluggy + python-pycodestyle + python-pyflakes + python-rope + python-ujson + python-yapf)) (native-inputs - `(("python-coverage" ,python-coverage) - ("python-flaky" ,python-flaky) - ("python-matplotlib" ,python-matplotlib) - ("python-mock" ,python-mock) - ("python-numpy" ,python-numpy) - ("python-pandas" ,python-pandas) - ("python-pylint" ,python-pylint) - ("python-pytest" ,python-pytest) - ("python-pytest-cov" ,python-pytest-cov) - ("python-versioneer" ,python-versioneer))) + (list python-coverage + python-flaky + python-matplotlib + python-mock + python-numpy + python-pandas + python-pylint + python-pytest + python-pytest-cov + python-versioneer)) (home-page "https://github.com/palantir/python-language-server") (synopsis "Python implementation of the Language Server Protocol") (description - "The Python Language Server (pyls) is an implementation of the Python 3 -language specification for the Language Server Protocol (LSP). This tool is -used in text editing environments to provide a complete and integrated -feature-set for programming Python effectively.") +"The Python Language Server @command{pylsp} is an implementation of the +Python 3 language specification for the Language Server Protocol (LSP). +This tool is used in text editing environments to provide a complete +and integrated feature-set for programming Python effectively.") (license license:expat))) +(define-public python-language-server + (deprecated-package "python-language-server" python-lsp-server)) + (define-public python-pathspec (package (name "python-pathspec") @@ -4836,17 +5100,17 @@ matching of file paths.") (("\\s*\"blackd=blackd:patched_main \\[d\\]\",\n") "") (("\"blackd\", ") ""))))))) (propagated-inputs - `(("python-click" ,python-click) - ("python-attrs" ,python-attrs) - ("python-appdirs" ,python-appdirs) - ("python-pathspec" ,python-pathspec) - ("python-mypy-extensions" ,python-mypy-extensions) - ("python-regex" ,python-regex) - ("python-toml" ,python-toml) - ("python-typed-ast" ,python-typed-ast) - ("python-typing-extensions" ,python-typing-extensions))) + (list python-click + python-attrs + python-appdirs + python-pathspec + python-mypy-extensions + python-regex + python-toml + python-typed-ast + python-typing-extensions)) (native-inputs - `(("python-setuptools-scm" ,python-setuptools-scm))) + (list python-setuptools-scm)) (home-page "https://github.com/ambv/black") (synopsis "The uncompromising code formatter") (description "Black is the uncompromising Python code formatter.") @@ -4865,7 +5129,7 @@ matching of file paths.") "1drp5p697ni1xn5y2lbjpalgpkzy2i4cyxjj5pk4dxr0vk97dd7i")))) (build-system python-build-system) (propagated-inputs - `(("python-black" ,python-black))) + (list python-black)) (home-page "https://github.com/wbolster/black-macchiato") (synopsis "Partial @code{python-black} formatting") (description @@ -4898,27 +5162,29 @@ interested parties to subscribe to events, or \"signals\".") (define-public pelican (package (name "pelican") - (version "4.2.0") + (version "4.7.0") (source (origin (method url-fetch) (uri (pypi-uri "pelican" version)) (sha256 (base32 - "0mp7hjyhs38ag1hyfcy882g400z0babqi72pnli46dqijfhajzmy")))) + "0g1sbzlz5mfc70gwgnj3lz4kf4psdjl96n6ywklv8z817m1khxdd")))) (build-system python-build-system) - (propagated-inputs - `(("python-blinker" ,python-blinker) - ("python-dateutil" ,python-dateutil) - ("python-docutils" ,python-docutils) - ("python-feedgenerator" ,python-feedgenerator) - ("python-jinja2" ,python-jinja2) - ("python-markdown" ,python-markdown) - ("python-pygments" ,python-pygments) - ("python-pytz" ,python-pytz) - ("python-six" ,python-six) - ("python-unidecode" ,python-unidecode))) - (home-page "https://getpelican.com/") + (inputs + (list python-blinker + python-dateutil + ;; Ignoring `guix lint` warning as python-docutils is used to support + ;; reStructuredText processing at runtime. + python-docutils + python-feedgenerator + python-jinja2 + python-markdown + python-pygments + python-pytz + python-rich + python-unidecode)) + (home-page "https://blog.getpelican.com/") (arguments `(;; XXX Requires a lot more packages to do unit tests :P #:tests? #f)) @@ -4965,38 +5231,41 @@ provides additional functionality on the produced Mallard documents.") (define-public python-cython (package (name "python-cython") - (version "0.29.22") + (version "0.29.24") (source (origin (method url-fetch) (uri (pypi-uri "Cython" version)) (sha256 - (base32 "01jl3544qwsi8lp6anbl55566xqkjd53x452i7m6gnfilv3q6syz")))) + (base32 "0hw4gs18rh4slij1fg252argxhraypld9apbqbl60230qc3lvw6d")))) (build-system python-build-system) ;; we need the full python package and not just the python-wrapper ;; because we need libpython3.3m.so (inputs - `(("python" ,python))) + (list python)) (arguments `(#:phases (modify-phases %standard-phases (add-before 'check 'set-HOME ;; some tests require access to "$HOME/.cython" - (lambda _ (setenv "HOME" "/tmp") #t)) + (lambda _ (setenv "HOME" "/tmp"))) (replace 'check - (lambda _ + (lambda* (#:key tests? #:allow-other-keys) ;; Disable compiler optimizations to greatly reduce the running ;; time of the test suite. (setenv "CFLAGS" "-O0") - (invoke "python" "runtests.py" "-vv" - "-j" (number->string (parallel-job-count)) - ;; XXX: On 32-bit architectures, running the parallel tests - ;; fails on many-core systems, see - ;; <https://github.com/cython/cython/issues/2807>. - ,@(if (not (target-64bit?)) - '("-x" "run.parallel") - '()))))))) + (when tests? + (invoke "python" "runtests.py" "-vv" + "-j" (number->string (parallel-job-count)) + ;; XXX: On 32-bit architectures, running the parallel tests + ;; fails on many-core systems, see + ;; <https://github.com/cython/cython/issues/2807>. + ,@(if (not (target-64bit?)) + '("-x" "run.parallel") + '()) + ;; This test fails when running on 24 cores. + "-x" "cpp_stl_conversion"))))))) (home-page "https://cython.org/") (synopsis "C extensions for Python") (description "Cython is an optimising static compiler for both the Python @@ -5041,10 +5310,10 @@ writing C extensions for Python as easy as Python itself.") ;; NOTE: when upgrading numpy please make sure that python-pandas and ;; python-scipy still build, as these three packages are often used together. -(define-public python-numpy +(define-public python-numpy-next (package (name "python-numpy") - (version "1.17.3") + (version "1.21.3") (source (origin (method url-fetch) @@ -5053,38 +5322,29 @@ writing C extensions for Python as easy as Python itself.") version "/numpy-" version ".tar.gz")) (sha256 (base32 - "1ak9dmjja0q90a7fsxli51ypcwssh8c4pb6f8wkrsnf2xgdk6dy9")))) + "0s6hy8828yr7fcjiwnym4l8lrknr21gqfkaiawsf86n0hd0a5fyh")))) (build-system python-build-system) (inputs - `(("openblas" ,openblas))) + (list openblas)) (native-inputs - `(("python-cython" ,python-cython) - ("python-pytest" ,python-pytest) - ("gfortran" ,gfortran))) + (list python-cython python-hypothesis python-pytest + python-pytest-xdist gfortran)) (arguments `(#:phases (modify-phases %standard-phases - (add-before 'build 'configure-blas-lapack + (add-before 'build 'configure-blas (lambda* (#:key inputs #:allow-other-keys) (call-with-output-file "site.cfg" (lambda (port) (format port - "[openblas] + "\ +[openblas] libraries = openblas library_dirs = ~a/lib include_dirs = ~a/include - -# backslash-n to make emacs happy -\n[lapack] -lapack_libs = lapack -library_dirs = ~a/lib -include_dirs = ~a/include " (assoc-ref inputs "openblas") - (assoc-ref inputs "openblas") - (assoc-ref inputs "lapack") - (assoc-ref inputs "lapack")))) - #t)) + (assoc-ref inputs "openblas")))))) (add-before 'build 'fix-executable-paths (lambda* (#:key inputs #:allow-other-keys) ;; Make /gnu/store/...-bash-.../bin/sh the default shell, @@ -5095,21 +5355,17 @@ include_dirs = ~a/include ;; Use "gcc" executable, not "cc". (substitute* "numpy/distutils/system_info.py" (("c = distutils\\.ccompiler\\.new_compiler\\(\\)") - "c = distutils.ccompiler.new_compiler(); c.set_executables(compiler='gcc',compiler_so='gcc',linker_exe='gcc',linker_so='gcc -shared')")) - #t)) - ;; Tests can only be run after the library has been installed and not - ;; within the source directory. - (delete 'check) - (add-after 'install 'check - (lambda* (#:key outputs inputs #:allow-other-keys) - ;; Make installed package available for running the tests - (add-installed-pythonpath inputs outputs) - ;; Make sure "f2py" etc is found. - (setenv "PATH" (string-append (assoc-ref outputs "out") "/bin" - ":" (getenv "PATH"))) - (with-directory-excursion "/tmp" - (invoke "python" "-c" - "import numpy; numpy.test(verbose=2)"))))))) + "c = distutils.ccompiler.new_compiler(); c.set_executables(compiler='gcc',compiler_so='gcc',linker_exe='gcc',linker_so='gcc -shared')")))) + (replace 'check + (lambda* (#:key tests? outputs inputs #:allow-other-keys) + (when tests? + ;; Make installed package available for running the tests. + (add-installed-pythonpath inputs outputs) + ;; Make sure "f2py" etc is found. + (setenv "PATH" (string-append (assoc-ref outputs "out") "/bin" + ":" (getenv "PATH"))) + (invoke "./runtests.py" + "-j" (number->string (parallel-job-count))))))))) (home-page "https://numpy.org") (synopsis "Fundamental package for scientific computing with Python") (description "NumPy is the fundamental package for scientific computing @@ -5123,7 +5379,7 @@ capabilities.") ;; Numpy 1.16.x are the last versions that support Python 2. (define-public python2-numpy (let ((numpy (package-with-python2 - (strip-python2-variant python-numpy)))) + (strip-python2-variant python-numpy-next)))) (package (inherit numpy) (version "1.16.5") @@ -5134,7 +5390,40 @@ capabilities.") version "/numpy-" version ".tar.gz")) (sha256 (base32 - "0lg1cycxzi4rvvrd5zxinpdz0ni792fpx6xjd75z1923zcac8qrb"))))))) + "0lg1cycxzi4rvvrd5zxinpdz0ni792fpx6xjd75z1923zcac8qrb")))) + (arguments + (substitute-keyword-arguments (package-arguments numpy) + ((#:phases phases) + `(modify-phases ,phases + (add-after 'unpack 'delete-failing-test + (lambda _ + ;; There's just one failing test here. + (delete-file "numpy/linalg/tests/test_linalg.py") + ;; ...and this one depends on the previous one. + (delete-file "numpy/matrixlib/tests/test_matrix_linalg.py"))))))) + (native-inputs + (list python2-cython python2-pytest gfortran))))) + +;; Needed by python-numba, see https://github.com/numba/numba/issues/7176 +(define-public python-numpy-1.20 + (package + (inherit python-numpy-next) + (version "1.20.3") + (source (origin + (method url-fetch) + (uri (string-append + "https://github.com/numpy/numpy/releases/download/v" + version "/numpy-" version ".tar.gz")) + (sha256 + (base32 + "140zq9snx0di4id4g97vaw9zz8x2rfla5lp3a70j666f5030yd5p")))) + ;; 92 tests fail, many of them because parts of the temp file name + ;; accidentally ends up in a comparison. + (arguments + (substitute-keyword-arguments (package-arguments python-numpy-next) + ((#:tests? _ #t) #f))))) + +(define-public python-numpy python-numpy-1.20) ;; NOTE: NumPy 1.8 is packaged only for Python 2 because it is of ;; interest only for legacy code going back to NumPy's predecessor @@ -5156,23 +5445,20 @@ capabilities.") (substitute-keyword-arguments (package-arguments python2-numpy) ((#:phases phases) `(modify-phases ,phases - (replace 'configure-blas-lapack + (replace 'configure-blas (lambda* (#:key inputs #:allow-other-keys) (call-with-output-file "site.cfg" (lambda (port) (format port "[openblas] -libraries = openblas,lapack -library_dirs = ~a/lib:~a/lib -include_dirs = ~a/include:~a/include +libraries = openblas +library_dirs = ~a/lib +include_dirs = ~a/include " (assoc-ref inputs "openblas") - (assoc-ref inputs "lapack") - (assoc-ref inputs "openblas") - (assoc-ref inputs "lapack")))) - #t)))))) + (assoc-ref inputs "openblas")))))))))) (native-inputs - `(("python2-nose" ,python2-nose))) + (list python2-nose)) (description "NumPy is the fundamental package for scientific computing with Python. It contains among other things: a powerful N-dimensional array object, sophisticated (broadcasting) functions, tools for integrating C/C++ @@ -5216,28 +5502,24 @@ objects.") "05qjycgxp3p2f9n6lmic68sxmsyvgnnlyl4z9w7dl9s56jphaiix")))) (build-system python-build-system) (propagated-inputs - `(("python-networkx" ,python-networkx) - ("python-numpy" ,python-numpy))) + (list python-networkx python-numpy)) (home-page "https://github.com/gtaylor/python-colormath") (synopsis "Color math and conversion library") (description "This is a Python library for color math and conversions.") (license license:bsd-3))) -(define-public python2-colormath - (package-with-python2 python-colormath)) - (define-public python-sparse (package (name "python-sparse") - (version "0.12.0") + (version "0.13.0") (source (origin (method url-fetch) (uri (pypi-uri "sparse" version)) (sha256 (base32 - "05lmzckv69cvxavhdr36k803bgr5dl04cppglid1l880xswc759c")))) + "05ar1lhq1yy4nb78s7vpb1wz4ac4kj0r4lrd7yrf23kpmaacjpb8")))) (build-system python-build-system) (arguments `(#:phases @@ -5247,14 +5529,10 @@ objects.") (when tests? (invoke "python" "-m" "pytest" "-v"))))))) (propagated-inputs - `(("python-numba" ,python-numba) - ("python-numpy" ,python-numpy) - ("python-scipy" ,python-scipy))) + (list python-numba python-numpy python-scipy)) (native-inputs - `(("python-dask" ,python-dask) - ("python-pytest" ,python-pytest) - ("python-pytest-black" ,python-pytest-black) - ("python-pytest-cov" ,python-pytest-cov))) + (list python-dask python-pytest python-pytest-black + python-pytest-cov)) (home-page "https://github.com/pydata/sparse/") (synopsis "Library for multi-dimensional sparse arrays") (description @@ -5290,9 +5568,9 @@ depends on @code{scipy.sparse} for some computations.") (replace 'check (lambda _ (invoke "nosetests" "-v")))))) (propagated-inputs - `(("python-colormath" ,python-colormath))) + (list python-colormath)) (native-inputs - `(("python-nose" ,python-nose))) + (list python-nose)) (home-page "https://github.com/jsvine/spectra") (synopsis "Color scales and color conversion") (description @@ -5309,9 +5587,6 @@ color scales, and color space conversion easy. It has support for: @end enumerate\n") (license license:expat))) -(define-public python2-spectra - (package-with-python2 python-spectra)) - (define-public python-pyspnego (package (name "python-pyspnego") @@ -5334,12 +5609,9 @@ color scales, and color space conversion easy. It has support for: (when tests? (invoke "pytest"))))))) (native-inputs - `(("python-pytest" ,python-pytest) - ("python-pytest-mock" ,python-pytest-mock))) + (list python-pytest python-pytest-mock)) (propagated-inputs - `(("python-cryptography" ,python-cryptography) - ("python-gssapi" ,python-gssapi) - ("python-ruamel.yaml" ,python-ruamel.yaml))) + (list python-cryptography python-gssapi python-ruamel.yaml)) (home-page "https://github.com/jborean93/pyspnego") (synopsis "Python SPNEGO library") (description "The @code{pyspnego} Python library handles Negotiate, NTLM, @@ -5463,22 +5735,20 @@ readable format.") (define-public python-pygit2 (package (name "python-pygit2") - (version "1.6.0") + (version "1.7.1") (source (origin (method url-fetch) (uri (pypi-uri "pygit2" version)) (sha256 - (base32 "0qjd5aqpmla64da4pb47vdnrmnqdbn7248a4fzs7f5q1ax7fmb3s")))) + (base32 "0p8n25bijirxh31cv99vd1mkdsvpcs6z6441wz1fqva3b2as5ynp")))) (build-system python-build-system) (arguments '(#:tests? #f)) ; tests don't run correctly in our environment (propagated-inputs - `(("python-cached-property" ,python-cached-property) - ("python-cffi" ,python-cffi) - ("libgit2" ,libgit2))) + (list python-cached-property python-cffi libgit2)) (native-inputs - `(("python-pytest" ,python-pytest))) + (list python-pytest)) (home-page "https://github.com/libgit2/pygit2") (synopsis "Python bindings for libgit2") (description "Pygit2 is a set of Python bindings to the libgit2 shared @@ -5506,6 +5776,106 @@ algorithm. Patiencediff provides a good balance of performance, nice output for humans, and implementation simplicity.") (license license:gpl2))) +(define-public python-wmctrl + (package + (name "python-wmctrl") + (version "0.4") + (source + (origin + (method url-fetch) + (uri (pypi-uri "wmctrl" version)) + (sha256 + (base32 + "1q0l1sqnj5wma87k3dsgmsyph464syjc6fl8qcpa41nan1rgzjv6")))) + (build-system python-build-system) + (arguments + `(#:phases (modify-phases %standard-phases + (add-after 'unpack 'patch-paths + (lambda* (#:key inputs #:allow-other-keys) + (let ((wmctrl (assoc-ref inputs "wmctrl"))) + (substitute* "wmctrl.py" + (("'wmctrl") + (string-append "'" wmctrl "/bin/wmctrl"))))))))) + (inputs (list wmctrl)) + (propagated-inputs (list python-attrs)) + (home-page "https://github.com/antocuni/wmctrl") + (synopsis "Tool to programmatically control Xorg windows") + (description "This package provides a library for programmatically +controlling Xorg windows using Python. The library relies on the +@command{wmctrl} to do so.") + (license license:expat))) + +(define-public python-fancycompleter + (package + (name "python-fancycompleter") + (version "0.9.1") + (source + (origin + (method url-fetch) + (uri (pypi-uri "fancycompleter" version)) + (sha256 + (base32 "0wkj4h01pxa8prv59zl09a0i3w26k835bfpjgvyvsai4mswgxq09")))) + (build-system python-build-system) + (arguments + `(#:phases (modify-phases %standard-phases + (add-after 'unpack 'fix-setup.py + (lambda _ + (substitute* "setup.py" + ((".*setupmeta.*") + "") + (("versioning=.*") + (string-append "version='" ,version "',")) + ((".*pyrepl.*") ;broken on Python 3 + ""))))))) + (home-page "https://github.com/pdbpp/fancycompleter") + (synopsis "TAB completion library for Python") + (description "@code{fancycompleter} is a module that adds TAB completion +to the interactive prompt. It is an extension of the @code{rlcompleter} +module from the standard Python library.") + (license license:bsd-3))) + +(define-public python-pdbpp + (package + (name "python-pdbpp") + (version "0.10.3") + (source + (origin + (method url-fetch) + (uri (pypi-uri "pdbpp" version)) + (sha256 + (base32 + "1xb9yvi30rb1cdpvfdk2kg79vh3anvkz91r8bwvfp3iqv97kzr6r")))) + (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "pytest" + "-k" + (string-append + ;; These tests seem to require a real TTY. + "not interaction_restores_previous_sigint_handler " + "and not python_m_pdb_uses_pdbpp")))))))) + (propagated-inputs + (list python-fancycompleter python-pygments python-wmctrl)) + (native-inputs + (list python-pytest python-setuptools-scm)) + (home-page "https://github.com/pdbpp/pdbpp") + (synopsis "Drop-in replacement for pdb") + (description "Pdb++ is a drop-in replacement for @code{pdb}. It +includes the following improvements compared to @code{pdb}: +@itemize +@item auto-completion +@item syntax highlighting of code listings +@item sticky mode +@item new commands to be used from the interactive (Pdb++) prompt +@item smart command parsing +@item additional convenience functions in the @code{pdb} module. +@end itemize") + (license license:bsd-3))) + (define-public python-pdftotext (package (name "python-pdftotext") @@ -5518,83 +5888,115 @@ humans, and implementation simplicity.") (base32 "1555wbgr5spj8xflrs4mwsrdmba2f9s72nk50xzqk9ghxaxdvy6a")))) (build-system python-build-system) (inputs - `(("poppler" ,poppler))) + (list poppler)) (home-page "https://github.com/jalan/pdftotext") (synopsis "Simple PDF text extraction") (description "Pdftotext is a Python library of PDF text extraction.") (license license:expat))) -(define-public python-pyparsing +(define-public python-pluginbase (package - (name "python-pyparsing") - (version "2.4.6") + (name "python-pluginbase") + (version "1.0.1") (source (origin (method url-fetch) - (uri (pypi-uri "pyparsing" version)) + (uri (pypi-uri "pluginbase" version)) (sha256 - (base32 "17wn5zlijc9m9zj26gy3f541y7smpj8rfhl51d025c2gm210b0sc")))) + (base32 + "11z2vvbp13828y0x3w39f29p9r9xcix7h7c4fff2w8yfiylk6v7z")))) (build-system python-build-system) - (outputs '("out" "doc")) (arguments - `(#:tests? #f ; no test target - #:phases - (modify-phases %standard-phases - (add-after 'install 'install-doc - (lambda* (#:key outputs #:allow-other-keys) - (let* ((doc (string-append (assoc-ref outputs "doc") - "/share/doc/" ,name "-" ,version)) - (html-doc (string-append doc "/html")) - (examples (string-append doc "/examples"))) - (mkdir-p html-doc) - (mkdir-p examples) - (for-each - (lambda (dir tgt) - (map (lambda (file) - (install-file file tgt)) - (find-files dir ".*"))) - (list "docs" "htmldoc" "examples") - (list doc html-doc examples)) - #t)))))) - (home-page "https://github.com/pyparsing/pyparsing") - (synopsis "Python parsing class library") - (description - "The pyparsing module is an alternative approach to creating and -executing simple grammars, vs. the traditional lex/yacc approach, or the use -of regular expressions. The pyparsing module provides a library of classes -that client code uses to construct the grammar directly in Python code.") - (license license:expat))) - -(define-public python2-pyparsing - (package-with-python2 python-pyparsing)) + `(#:phases (modify-phases %standard-phases + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "make" "test"))))))) + (native-inputs (list python-pytest)) + (home-page "https://github.com/mitsuhiko/pluginbase") + (synopsis "Simple but flexible plugin system for Python") + (description "PluginBase is a library useful in the development of +flexible plugin systems in Python.") + (license license:bsd-3))) -(define-public python-pyparsing-2.4.7 +(define-public python-node-semver (package - (inherit python-pyparsing) - (version "2.4.7") + (name "python-node-semver") + (version "0.8.1") (source (origin (method url-fetch) - (uri (pypi-uri "pyparsing" version)) + (uri (pypi-uri "node-semver" version)) (sha256 - (base32 "1hgc8qrbq1ymxbwfbjghv01fm3fbpjwpjwi0bcailxxzhf3yq0y2")))))) + (base32 + "000ypfns5x72b41w5f9pk6k3jnr35scliqfbvmilyvv0178005i8")))) + (build-system python-build-system) + (native-inputs + (list python-pytest)) + (home-page "https://github.com/podhmo/python-node-semver") + (synopsis "Python port of node-semver") + (description "This module provides a Python version of node-semver, a +semantic version parser for Node.js.") + (license license:expat))) + +(define-public python-patch-ng + (package + (name "python-patch-ng") + (version "1.17.4") + (source + (origin + (method git-fetch) ;no tests in PyPI archive + (uri (git-reference + (url "https://github.com/conan-io/python-patch-ng") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0qxn4ss2s54qy87xrpcybz26kp2fwlaq41x4k9jcmp6d7p0w569m")))) + (build-system python-build-system) + (arguments + `(#:phases (modify-phases %standard-phases + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "tests/run_tests.py" "-v"))))))) + (home-page "https://github.com/conan-io/python-patch-ng") + (synopsis "Python library to parse and apply unified diffs") + (description "Patch NG (New Generation) is a command and Python library to +parse and apply unified diffs. It has features such as: +@itemize +@item automatic correction of common patch formatting corruption +@item patch format detection (SVN, Hg, Git) +@item nice diffstat histogram. +@end itemize") + (license license:expat))) (define-public python-numpydoc (package (name "python-numpydoc") - (version "0.8.0") + (version "1.1.0") (source (origin (method url-fetch) (uri (pypi-uri "numpydoc" version)) (sha256 (base32 - "1zazxg3m8j4fksv3f7v7vpf4bj9qb1vj3r326am0vdip141vzx31")))) + "13j4fvy2p7lc8sn00sxvs0jb19vicaznfgx4cphv9jgxgz5xcvy3")))) (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda* (#:key tests? inputs outputs #:allow-other-keys) + (when tests? + (add-installed-pythonpath inputs outputs) + (invoke "pytest" "-v" "numpydoc/tests" + ;; TODO: unclear why these fail. + "-k" "not test_MyClass and not test_my_function"))))))) (propagated-inputs - `(("python-sphinx" ,python-sphinx))) + (list python-sphinx)) (native-inputs - `(("python-nose" ,python-nose))) + (list python-matplotlib python-pytest python-pytest-cov)) (home-page "https://pypi.org/project/numpydoc/") (synopsis "Numpy's Sphinx extensions") @@ -5607,6 +6009,15 @@ that client code uses to construct the grammar directly in Python code.") (let ((base (package-with-python2 (strip-python2-variant python-numpydoc)))) (package/inherit base + ;; This is the last version to support Python 2 + (version "0.9.1") + (source + (origin + (method url-fetch) + (uri (pypi-uri "numpydoc" version)) + (sha256 + (base32 + "09x6l1a4dcvj7001bvcmcayg1nwqwhaxlwbp6kzj9qrk57lqx3z0")))) (propagated-inputs `(("python2-jinja2" ,python2-jinja2) ,@(package-propagated-inputs base)))))) @@ -5625,7 +6036,7 @@ that client code uses to construct the grammar directly in Python code.") (build-system python-build-system) (arguments `(#:tests? #f)) ; no tests included (propagated-inputs - `(("python-numpy" ,python-numpy))) + (list python-numpy)) (home-page "https://github.com/pydata/numexpr") (synopsis "Fast numerical expression evaluator for NumPy") (description @@ -5656,7 +6067,7 @@ transcendental functions).") ;; Enable this for the next release which uses 'python-pytest'. '(#:tests? #f)) (propagated-inputs - `(("python-six" ,python-six))) + (list python-six)) (home-page "https://matplotlib.org/cycler/") (synopsis "Composable keyword argument iterator") (description @@ -5685,9 +6096,9 @@ To address this and enable easy cycling over arbitrary @code{kwargs}, the (base32 "0x7nkphr6g5ql5fvgss8l56rgiyjgh6fm8zzs73i94ci9wzlm63w")))) (build-system python-build-system) (propagated-inputs - `(("python-numpy" ,python-numpy))) + (list python-numpy)) (native-inputs - `(("python-nose" ,python-nose))) + (list python-nose)) (arguments `(#:phases (modify-phases %standard-phases @@ -5703,6 +6114,44 @@ convert between colorspaces like sRGB, XYZ, CIEL*a*b*, CIECAM02, CAM02-UCS, etc. (define-public python2-colorspacious (package-with-python2 python-colorspacious)) +(define-public python-proto-matcher + (package + (name "python-proto-matcher") + (version "0.0.3") + (source + (origin + (method url-fetch) + (uri (pypi-uri "proto_matcher" version)) + (sha256 + (base32 "1644x0hrl398ji3281n44ymfgc3cspzfagjckhqjn4nja5nlikxg")))) + (build-system python-build-system) + (arguments + `(#:tests? #f)) ;no test suite + (propagated-inputs + (list python-protobuf python-pyhamcrest)) + (home-page "https://github.com/dayfine/proto-matcher") + (synopsis "PyHamcrest test matchers for protocol buffers") + (description "This package provides the following PyHamcrest test +matchers, that enable matching a protocol buffer message: +@table @code +@item equals_proto +Test the argument equals the given protobuf message. +@item approximately +Test the argument equals the given protobuf message, while comparing any float +field using approximation. +@item ignoring_field_paths +Test the argument equals the given protobuf message, while ignoring those +fields specified in the field paths. +@item ignoring_repeated_field_ordering +Test the argument equals the given protobuf message, ignoring the ordering of +any repeated field. +@item partially +Test the argument partially equals the given protobuf message, i.e. if a field +is in the argument but not in the expected message, it's ignored in the +comparison. +@end table") + (license license:asl2.0))) + (define-public python-matplotlib (package (name "python-matplotlib") @@ -5734,15 +6183,15 @@ convert between colorspaces like sRGB, XYZ, CIEL*a*b*, CIECAM02, CAM02-UCS, etc. ("python-pycairo" ,python-pycairo) ("python-cairocffi" ,python-cairocffi))) (inputs - `(("libpng" ,libpng) - ("freetype" ,freetype) - ("qhull" ,qhull) - ("cairo" ,cairo) - ("glib" ,glib) - ;; FIXME: Add backends when available. - ;("python-wxpython" ,python-wxpython) - ("tcl" ,tcl) - ("tk" ,tk))) + (list libpng + freetype + qhull + cairo + glib + ;; FIXME: Add backends when available. + ;("python-wxpython" ,python-wxpython) + tcl + tk)) (native-inputs `(("pkg-config" ,pkg-config) ("python-pytest" ,python-pytest) @@ -5869,8 +6318,15 @@ toolkits.") (mkdir-p dir) (invoke "unzip" (assoc-ref inputs "jquery-ui") - "-d" dir)) - #t)) + "-d" dir)))) + ;; Without this file mpl_toolkits cannot be imported. + (add-after 'install 'create-init-file + (lambda* (#:key outputs #:allow-other-keys) + (with-output-to-file + (string-append + (assoc-ref outputs "out") + "/lib/python2.7/site-packages/mpl_toolkits/__init__.py") + (lambda _ (display ""))))) (delete 'fix-and-disable-failing-tests) (delete 'check))))) ; These tests weren't run the the past. ;; Make sure to use special packages for Python 2 instead @@ -5985,8 +6441,7 @@ toolkits.") (base32 "1vilzwj3xp00mxprmmn1hlafm3p23vn56s46kx3ra4qd5signjx0")))) (build-system python-build-system) (propagated-inputs - `(("python-matplotlib" ,python-matplotlib) - ("python-traitlets" ,python-traitlets))) + (list python-matplotlib python-traitlets)) (arguments ;; Tests disabled because of a circular dependency with ipython. `(#:tests? #f)) @@ -6011,11 +6466,9 @@ Jupyter.") (build-system python-build-system) (arguments '(#:tests? #f)) ; tests are not included (propagated-inputs - `(("python-matplotlib" ,python-matplotlib) - ("python-numpy" ,python-numpy) - ("python-scipy" ,python-scipy))) + (list python-matplotlib python-numpy python-scipy)) (native-inputs - `(("unzip" ,unzip))) + (list unzip)) (home-page "https://github.com/konstantint/matplotlib-venn") (synopsis "Plot area-proportional Venn diagrams") (description @@ -6047,14 +6500,14 @@ three-way Venn diagrams in @code{matplotlib}.") (invoke "python3" "pysnptools/test.py")) #t)))))) (propagated-inputs - `(("python-dill" ,python-dill) - ("python-h5py" ,python-h5py) - ("python-numpy" ,python-numpy) - ("python-pandas" ,python-pandas) - ("python-psutil" ,python-psutil) - ("python-scipy" ,python-scipy))) + (list python-dill + python-h5py + python-numpy + python-pandas + python-psutil + python-scipy)) (native-inputs - `(("python-cython" ,python-cython))) + (list python-cython)) (home-page "http://microsoftgenomics.github.io/PySnpTools/") (synopsis "Library for reading and manipulating genetic data") (description @@ -6079,9 +6532,9 @@ operators such as union, intersection, and difference.") (base32 "0p8n2ljdacfixkiw092974dmhy4s1c0h032ii1z9kwi9h5h5rgmy")))) (build-system python-build-system) (native-inputs - `(("python-nose" ,python-nose))) + (list python-nose)) (propagated-inputs - `(("python-numpy" ,python-numpy))) + (list python-numpy)) (home-page "https://github.com/storpipfugl/pykdtree") (synopsis "Fast kd-tree implementation with OpenMP-enabled queries") (description @@ -6107,8 +6560,7 @@ search in Python.") (lambda _ (invoke "pytest" "-vv" "test.py")))))) (native-inputs - `(("python-mock" ,python-mock) - ("python-pytest" ,python-pytest))) + (list python-mock python-pytest)) (home-page "https://github.com/minrk/wurlitzer") (synopsis "Capture C-level output in context managers") (description @@ -6190,7 +6642,7 @@ a simple netcat replacement with chaining support.") (lambda _ (invoke "pytest" "-vv")))))) (native-inputs - `(("python-pytest" ,python-pytest))) + (list python-pytest)) (home-page "https://pycodestyle.readthedocs.io/") (synopsis "Python style guide checker") (description "@code{pycodestyle} (formerly pep8) is a tool to check @@ -6232,8 +6684,7 @@ Python code against some of the style conventions in (invoke "pytest" "-vv") (format #t "test suite not run~%"))))))) (native-inputs - `(("python-pytest" ,python-pytest) - ("python-pytest-cov" ,python-pytest-cov))) + (list python-pytest python-pytest-cov)) (home-page "https://github.com/aio-libs/multidict/") (synopsis "Multidict implementation") (description "Multidict is dict-like collection of key-value pairs @@ -6243,29 +6694,19 @@ where key might be occurred more than once in the container.") (define-public python-orderedmultidict (package (name "python-orderedmultidict") - (version "1.0") + (version "1.0.1") (source (origin (method url-fetch) (uri (pypi-uri "orderedmultidict" version)) (sha256 (base32 - "1idjbl933avgaadscrjw1np3xkvnz3phq0l8vw5qs0rqcjx9b65q")))) + "1bc2v0yflsxjyyjx4q9wqx0j3bvzcw9z87d5pz4iqac7bsxhn1q4")))) (build-system python-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - (add-after 'unpack 'fix-tests - (lambda _ - ;; The package uses nosetest for running the tests. - ;; Adding this initfile allows to run the test suite - ;; without requiring nosetest. - (with-output-to-file "tests/__init__.py" newline) - #t))))) (propagated-inputs - `(("python-six" ,python-six))) + (list python-six)) (native-inputs - `(("python-pycodestyle" ,python-pycodestyle))) + (list python-flake8 python-pycodestyle)) (home-page "https://github.com/gruns/orderedmultidict") (synopsis "Python Ordered Multivalue Dictionary - omdict") (description "This package contains a library for ordered multivalue @@ -6274,9 +6715,6 @@ multiple values for the same key. An ordered multivalue dictionary is a multivalue dictionary that retains the order of insertions and deletions.") (license license:unlicense))) -(define-public python2-orderedmultidict - (package-with-python2 python-orderedmultidict)) - (define-public python-autopep8 (package (name "python-autopep8") @@ -6290,8 +6728,7 @@ multivalue dictionary that retains the order of insertions and deletions.") "1w6vh627vrmgfbvrdcxrc3k4gxcldrb2lpgxv9irkdds851qrzb0")))) (build-system python-build-system) (propagated-inputs - `(("python-pycodestyle" ,python-pycodestyle) - ("python-toml" ,python-toml))) + (list python-pycodestyle python-toml)) (home-page "https://github.com/hhatto/autopep8") (synopsis "Format Python code according to the PEP 8 style guide") (description @@ -6332,7 +6769,7 @@ by pycodestyle.") ;; NOTE: Any value works, the variable just has to be present. (setenv "SKIP_ONLINE" "1") #t))))) - (native-inputs `(("unzip" ,unzip))) + (native-inputs (list unzip)) (home-page "https://bitbucket.org/pypa/distlib") (synopsis "Distribution utilities") (description "Distlib is a library which implements low-level functions that @@ -6432,17 +6869,16 @@ the OleFileIO module from PIL, the Python Image Library.") (arguments `(#:tests? #false)) ;require python-xmp-toolkit (native-inputs - `(("pybind11" ,pybind11) - ("python-setuptools" ,python-setuptools) - ("python-setuptools-scm" ,python-setuptools-scm) - ("python-setuptools-scm-git-archive" ,python-setuptools-scm-git-archive) - ("python-toml" ,python-toml) - ("python-wheel" ,python-wheel))) + (list pybind11 + python-setuptools + python-setuptools-scm + python-setuptools-scm-git-archive + python-toml + python-wheel)) (inputs - `(("qpdf" ,qpdf))) + (list qpdf)) (propagated-inputs - `(("python-lxml" ,python-lxml) - ("python-pillow" ,python-pillow))) + (list python-lxml python-pillow)) (home-page "https://github.com/pikepdf/pikepdf") (synopsis "Read and write PDFs with Python") (description @@ -6462,7 +6898,7 @@ the OleFileIO module from PIL, the Python Image Library.") "086g7nhv52wclrwnzbzs2x3nvyzs2hfq1bvgivsrp5f7r7wiiz7n")))) (build-system python-build-system) (native-inputs - `(("python-pytest" ,python-pytest))) + (list python-pytest)) (inputs `(("freetype" ,freetype) ("lcms" ,lcms) @@ -6472,7 +6908,7 @@ the OleFileIO module from PIL, the Python Image Library.") ("openjpeg" ,openjpeg) ("zlib" ,zlib))) (propagated-inputs - `(("python-olefile" ,python-olefile))) + (list python-olefile)) (arguments `(#:phases (modify-phases %standard-phases @@ -6563,9 +6999,8 @@ a general image processing tool.") (for-each make-file-writable (find-files "Tests")) #t)))))) (inputs - `(("libraqm" ,libraqm) - ("libimagequant" ,libimagequant) - ,@(package-inputs python-pillow))) + (modify-inputs (package-inputs python-pillow) + (prepend libraqm libimagequant))) (home-page "https://github.com/uploadcare/pillow-simd") (synopsis "Fork of the Python Imaging Library (Pillow)") (description "This package is a fork of Pillow which adds support for SIMD @@ -6622,28 +7057,28 @@ def customize_build(EXTENSIONS, OPTIONS): "))) #t))))) (inputs - `(("c-blosc" ,c-blosc) - ("giflib" ,giflib) - ("google-brotli" ,google-brotli) - ("libjpeg-turbo" ,libjpeg-turbo) - ("libpng" ,libpng) - ("libtiff" ,libtiff) - ("libwebp" ,libwebp) - ("lz4" ,lz4) - ("snappy" ,snappy) - ("xz" ,xz) - ("zlib" ,zlib) - ("zstd" ,zstd "lib"))) + (list c-blosc + giflib + brotli + libjpeg-turbo + libpng + libtiff + libwebp + lz4 + snappy + xz + zlib + `(,zstd "lib"))) (propagated-inputs - `(("python-numpy" ,python-numpy))) + (list python-numpy)) (native-inputs ;; For building. - `(("python-cython" ,python-cython) - ;; For testing. Incomplete. - ;("python-numcodecs" ,python-numcodecs) - ;("python-zarr" ,python-zarr) - ;("python-pytest" ,python-pytest) - )) + (list python-cython + ;; For testing. Incomplete. + ;("python-numcodecs" ,python-numcodecs) + ;("python-zarr" ,python-zarr) + ;("python-pytest" ,python-pytest) + )) (home-page "https://www.lfd.uci.edu/~gohlke/") (synopsis "Image transformation, compression, and decompression codecs") @@ -6667,7 +7102,7 @@ tifffile, czifile, and other scientific image input/output modules.") (build-system python-build-system) (arguments `(#:tests? #f)) ; there are none (propagated-inputs - `(("python-numpy" ,python-numpy))) + (list python-numpy)) (home-page "https://www.lfd.uci.edu/~gohlke/") (synopsis "Read and write ImageJ ROI format") (description "Roifile is a Python library to read, write, create, and plot @@ -6690,8 +7125,7 @@ regions of interest, geometric shapes, paths, text, etc for image overlays.") ;; Tests require lfdfiles, which depends on tifffile (arguments `(#:tests? #f)) (propagated-inputs - `(("python-numpy" ,python-numpy) - ("python-imagecodecs" ,python-imagecodecs))) + (list python-numpy python-imagecodecs)) (home-page "https://www.lfd.uci.edu/~gohlke/") (synopsis "Read and write TIFF(r) files") (description "This package lets you read image and metadata from many @@ -6721,10 +7155,8 @@ numpy arrays to TIFF, BigTIFF, and ImageJ hyperstack compatible files.") (arguments `(#:tests? #f)) ; No tests exist, despite a test dependency on pytest. (propagated-inputs - `(("python-click" ,python-click) - ("python-numpy" ,python-numpy) - ("python-tifffile" ,python-tifffile))) - (native-inputs `(("python-cython" ,python-cython))) + (list python-click python-numpy python-tifffile)) + (native-inputs (list python-cython)) (home-page "https://www.lfd.uci.edu/~gohlke/") (synopsis "Work with LFD data files") (description @@ -6758,11 +7190,9 @@ experimental data and metadata at the Laboratory for Fluorescence Dynamics.") (invoke "pytest" "-vv")) #t)))))) (propagated-inputs - `(("python-numpy" ,python-numpy) - ("python-pillow" ,python-pillow) - ("python-psutil" ,python-psutil))) + (list python-numpy python-pillow python-psutil)) (native-inputs - `(("python-pytest" ,python-pytest))) + (list python-pytest)) (home-page "https://imageio.github.io/") (synopsis "Library for reading and writing a wide range of image data") (description @@ -6785,7 +7215,7 @@ data, and scientific formats.") (outputs '("out" "doc")) (build-system python-build-system) (native-inputs - `(("pkg-config" ,pkg-config))) + (list pkg-config)) (arguments `(#:phases (modify-phases %standard-phases @@ -6867,10 +7297,10 @@ formulas and hyperlinks to multiple worksheets in an Excel 2007+ XLSX file.") (with-directory-excursion (string-append cwd "/build/" libdir) (invoke "pytest" "-vv")))))))) (native-inputs - `(("python-matplotlib" ,python-matplotlib) ;for tests - ("python-pytest" ,python-pytest))) + (list python-matplotlib ;for tests + python-pytest)) (propagated-inputs - `(("python-numpy" ,python-numpy))) + (list python-numpy)) (synopsis "Wavelet transforms in Python") (description "PyWavelets is a library for wavelet transforms in Python. Wavelets are @@ -6903,7 +7333,7 @@ localized only in frequency instead of in time and frequency.") (setenv "HOME" "/tmp") #t))))) (inputs - `(("imagemagick" ,imagemagick))) + (list imagemagick)) (home-page "https://github.com/dylanaraps/pywal") (synopsis "Color palette generator and applicator") (description @@ -6925,13 +7355,10 @@ your favourite programs.") "10gabhhg3rgacd5ahmi2r128z99fzbrbx6mz1nnq0dxmhmn5rpjf")))) (build-system python-build-system) (propagated-inputs - `(("python-six" ,python-six) - ("python-requests_ntlm" ,python-requests_ntlm) - ("python-xmltodict" ,python-xmltodict) - ("python-kerberos" ,python-kerberos))) + (list python-six python-requests_ntlm python-xmltodict + python-kerberos)) (native-inputs - `(("python-mock" ,python-mock) - ("python-pytest" ,python-pytest))) + (list python-mock python-pytest)) (home-page "https://github.com/diyan/pywinrm/") (synopsis "Python library for Windows Remote Management (WinRM)") @@ -6944,20 +7371,20 @@ any machine that can run Python.") (define-public python-xcffib (package (name "python-xcffib") - (version "0.6.0") + (version "0.11.1") (source (origin (method url-fetch) (uri (pypi-uri "xcffib" version)) (sha256 (base32 - "04k91yxyb3pgc5lvxmivh8w71yjrap2g57yk3s73x4rm4nvjq51n")))) + "0nkglsm9nbhv238iagmmsjcz6lf1yfdvp5kmspphdj385vz9r50j")))) (build-system python-build-system) (inputs - `(("libxcb" ,libxcb))) + (list libxcb)) (propagated-inputs - `(("python-cffi" ,python-cffi) ; used at run time - ("python-six" ,python-six))) + (list python-cffi ; used at run time + python-six)) (arguments `(;; FIXME: Tests need more work. See ".travis.yml" in the repository. #:tests? #f @@ -6967,7 +7394,8 @@ any machine that can run Python.") (lambda* (#:key inputs #:allow-other-keys) (let ((libxcb (assoc-ref inputs "libxcb"))) (substitute* '("xcffib/__init__.py") - (("^soname = \"") (string-append "soname = \"" libxcb "/lib/"))) + (("soname = ctypes.util.find_library.*xcb.*") + (string-append "soname = \"" libxcb "/lib/libxcb.so\"\n"))) #t))) (add-after 'install 'install-doc (lambda* (#:key outputs #:allow-other-keys) @@ -7005,19 +7433,16 @@ support for Python 3 and PyPy. It is based on cffi.") (build-system python-build-system) (outputs '("out" "doc")) (inputs - `(("glib" ,glib) - ("gtk+" ,gtk+) - ("gdk-pixbuf" ,gdk-pixbuf) - ("cairo" ,cairo))) + (list glib gtk+ gdk-pixbuf cairo)) (native-inputs - `(("python-numpy" ,python-numpy) - ("python-pytest" ,python-pytest) - ("python-pytest-cov" ,python-pytest-cov) - ("python-pytest-runner" ,python-pytest-runner) - ("python-sphinx" ,python-sphinx) - ("python-sphinx-rtd-theme" ,python-sphinx-rtd-theme))) + (list python-numpy + python-pytest + python-pytest-cov + python-pytest-runner + python-sphinx + python-sphinx-rtd-theme)) (propagated-inputs - `(("python-xcffib" ,python-xcffib))) ; used at run time + (list python-xcffib)) ; used at run time (arguments `(#:phases (modify-phases %standard-phases @@ -7093,10 +7518,21 @@ PNG, PostScript, PDF, and SVG file output.") for the average programmer, and to popularize decorators usage giving examples of useful decorators, such as memoize, tracing, redirecting_stdout, locked, etc. The core of this module is a decorator factory.") - (license license:expat))) + (license license:expat) + (properties `((python2-variant . ,(delay python2-decorator)))))) +;; Version 5 does not support Python 2 (define-public python2-decorator - (package-with-python2 python-decorator)) + (package + (inherit (package-with-python2 + (strip-python2-variant python-decorator))) + (version "4.3.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "decorator" version)) + (sha256 + (base32 "0308djallnh00v112y5b7nadl657ysmkp6vc8xn51d6yzc9zm7n3")))))) (define-public python-drmaa (package @@ -7114,7 +7550,7 @@ etc. The core of this module is a decorator factory.") ;; should be set to the path of the libdrmaa library. (arguments '(#:tests? #f)) (native-inputs - `(("python-nose" ,python-nose))) + (list python-nose)) (home-page "https://pypi.org/project/drmaa/") (synopsis "Python bindings for the DRMAA library") (description @@ -7141,9 +7577,7 @@ Python language binding specification.") (build-system python-build-system) (arguments '(#:tests? #f)) ; Test file 'grako.ebnf' is missing from archive. (native-inputs - `(("unzip" ,unzip) - ("python-pytest" ,python-pytest) - ("python-pytest-runner" ,python-pytest-runner))) + (list unzip python-pytest python-pytest-runner)) (home-page "https://bitbucket.org/neogeny/grako") (synopsis "EBNF parser generator") (description @@ -7177,11 +7611,9 @@ memoizing PEG/Packrat parser in Python.") (lambda _ (invoke "python" "setup.py" "pytest")))))) (native-inputs - `(("python-pytest" ,python-pytest) - ("python-pytest-runner" ,python-pytest-runner))) + (list python-pytest python-pytest-runner)) (propagated-inputs - `(("python-numpy" ,python-numpy) - ("python-ply" ,python-ply))) + (list python-numpy python-ply)) (home-page "https://github.com/bdcht/grandalf") (synopsis "Graph and drawing algorithms framework") (description @@ -7226,9 +7658,7 @@ you to actually draw things with your favorite toolkit.") (arguments '(#:tests? #f)) ; FIXME: Requires python-cherrypy. (propagated-inputs - `(("python-psutil" ,python-psutil) - ("python-drmaa" ,python-drmaa) - ("python-pyzmq" ,python-pyzmq))) + (list python-psutil python-drmaa python-pyzmq)) (home-page "https://github.com/pygridtools/gridmap") (synopsis "Create jobs on a cluster directly from Python") (description @@ -7252,12 +7682,9 @@ cluster without needing to write any wrapper code yourself.") (base32 "11bd87474qpif20xdcn0ra1idj5k16ka51i658wfpxwc6nzsn92b")))) (build-system python-build-system) (native-inputs - `(("python-pytest" ,python-pytest) - ("python-mock" ,python-mock) - ("python-tox" ,python-tox) - ("which" ,which))) ;for tests + (list python-pytest python-mock python-tox which)) ;for tests (propagated-inputs - `(("python-jinja2" ,python-jinja2))) + (list python-jinja2)) (arguments `(#:phases (modify-phases %standard-phases @@ -7293,7 +7720,7 @@ displayed.") (base32 "16siqc3brbk7dp4d9sg48bjl6a8wyy24aib3il1hf4y2624draxh")))) (build-system python-build-system) (native-inputs - `(("python-pytest" ,python-pytest))) + (list python-pytest)) (arguments `(#:phases (modify-phases %standard-phases @@ -7345,7 +7772,7 @@ wraps Python's standard library threading and multiprocessing objects.") ("which" ,which) ("bash-full" ,bash))) ;full Bash for 'test_replwrap.py' (propagated-inputs - `(("python-ptyprocess" ,python-ptyprocess))) + (list python-ptyprocess)) (home-page "http://pexpect.readthedocs.org/") (synopsis "Controlling interactive console applications") (description @@ -7361,24 +7788,37 @@ child application and control it as if a human were typing commands.") (define-public python-setuptools-scm (package (name "python-setuptools-scm") - (version "5.0.1") + (version "6.3.2") (source (origin (method url-fetch) (uri (pypi-uri "setuptools_scm" version)) (sha256 - (base32 - "0ahlrxxkx2xhmxskx57gc96w3bdndflxx30304ihvm7ds136nny8")))) + (base32 "1wm0i27siyy1yqr9rv7lqvb65agay9051yi8jzmi8dgb3q4ai6m4")))) (build-system python-build-system) + (propagated-inputs + `(("python-packaging",python-packaging-bootstrap) + ("python-tomli" ,python-tomli))) (home-page "https://github.com/pypa/setuptools_scm/") (synopsis "Manage Python package versions in SCM metadata") (description "Setuptools_scm handles managing your Python package versions in @dfn{software configuration management} (SCM) metadata instead of declaring them as the version argument or in a SCM managed file.") - (license license:expat))) + (license license:expat) + (properties `((python2-variant . ,(delay python2-setuptools-scm)))))) (define-public python2-setuptools-scm - (package-with-python2 python-setuptools-scm)) + (let ((base (package-with-python2 + (strip-python2-variant python-setuptools-scm)))) + (package/inherit base + (version "5.0.2") ;no python 2 support in version 6 + (source (origin + (method url-fetch) + (uri (pypi-uri "setuptools_scm" version)) + (sha256 + (base32 + "1j75i8avp9fhrkpbabsa8vyvbi49kmxlq6l10xir9qs96kfwx843")))) + (propagated-inputs '())))) (define-public python-sexpdata (package @@ -7402,18 +7842,17 @@ functions like pickle, json or PyYAML module.") (define-public python-pathlib2 (package (name "python-pathlib2") - (version "2.3.3") + (version "2.3.6") (source (origin (method url-fetch) (uri (pypi-uri "pathlib2" version)) (sha256 (base32 - "0hpp92vqqgcd8h92msm9slv161b1q160igjwnkf2ag6cx0c96695")))) + "0psyg60vk8wca473djrh0v9gb853z8wcawi8im5dyg00amawp2vx")))) (build-system python-build-system) (propagated-inputs - `(("python-scandir" ,python-scandir) - ("python-six" ,python-six))) + (list python-scandir python-six)) (home-page "https://pypi.org/project/pathlib2/") (synopsis "Object-oriented file system paths") (description "The goal of pathlib2 is to provide a backport of the @@ -7435,8 +7874,7 @@ older Python versions.") "1hq626mx5jl9zfl0wdrjkxsnh8qd98fqv322n68b9251xjk4bxqr")))) (build-system python-build-system) (native-inputs - `(("python-setuptools-scm" ,python-setuptools-scm) - ("python-toml" ,python-toml))) + (list python-setuptools-scm python-toml)) (home-page "http://importlib-resources.readthedocs.io/") (synopsis "Read resources from Python packages") (description @@ -7469,8 +7907,7 @@ older Python versions.") "")) #t))))) (propagated-inputs - `(("python-pathlib2" ,python2-pathlib2) - ("python-typing" ,python2-typing))) + (list python2-pathlib2 python2-typing)) (home-page "https://gitlab.com/python-devs/importlib_resources") (synopsis "Backport of @code{importlib.resources} from Python 3.7") (description @@ -7501,11 +7938,9 @@ for older versions of Python.") "00ikdj4gjhankdljnz7g5ggak4k9lql2926x0x117ir9j2lv7x86")))) (build-system python-build-system) (propagated-inputs - `(("python-zipp" ,python-zipp))) + (list python-zipp)) (native-inputs - `(("python-setuptools-scm" ,python-setuptools-scm) - ("python-pyfakefs" ,python-pyfakefs) - ("python-packaging" ,python-packaging))) + (list python-setuptools-scm python-pyfakefs python-packaging)) (home-page "https://importlib-metadata.readthedocs.io/") (synopsis "Read metadata from Python packages") (description @@ -7604,14 +8039,14 @@ finding unresolved symbols in Python code and their corresponding imports.") "0zimrnkh33b9g8ffw11mjh6kvs54cy5gcjw1h5cl1r7dc833dmkm")))) (build-system python-build-system) (propagated-inputs - `(("python-pytest" ,python-pytest) - ("python-pytest-checkdocs" ,python-pytest-checkdocs) - ("python-pytest-flake8" ,python-pytest-flake8) - ("python-rst.linker" ,python-rst.linker) - ("python-setuptools" ,python-setuptools) - ("python-setuptools-scm" ,python-setuptools-scm) - ("python-six" ,python-six) - ("python-sphinx" ,python-sphinx))) + (list python-pytest + python-pytest-checkdocs + python-pytest-flake8 + python-rst.linker + python-setuptools + python-setuptools-scm + python-six + python-sphinx)) (home-page "https://github.com/jaraco/jaraco.packaging") (synopsis "Tools to supplement packaging Python releases") (description @@ -7632,15 +8067,14 @@ releases.") (outputs '("out" "doc")) (build-system python-build-system) (propagated-inputs - `(("python-appdirs" ,python-appdirs) - ("python-importlib-metadata" ,python-importlib-metadata))) + (list python-appdirs python-importlib-metadata)) (native-inputs - `(("python-setuptools-scm" ,python-setuptools-scm) - ("python-sphinx" ,python-sphinx) - ("python-rst.linker" ,python-rst.linker) - ("python-pytest" ,python-pytest) - ("python-pytest-runner" ,python-pytest-runner) - ("python-jaraco-packaging" ,python-jaraco-packaging))) + (list python-setuptools-scm + python-sphinx + python-rst.linker + python-pytest + python-pytest-runner + python-jaraco-packaging)) (arguments `(#:phases (modify-phases %standard-phases @@ -7683,7 +8117,7 @@ common operations on files to be invoked on those path objects directly.") (base32 "0wwi1c6md4vkbcsfsf8dklf3vr4mcdj4mpxkanwgb6jb1432x5yw")))) (build-system python-build-system) (native-inputs - `(("unzip" ,unzip))) + (list unzip)) (home-page "http://cheeseshop.python.org/pypi/simplegeneric") (synopsis "Python module for simple generic functions") (description @@ -7747,22 +8181,22 @@ away.") (setenv "HOME" (getcwd)) #t))))) (propagated-inputs - `(("python-dateutil" ,python-dateutil) - ("python-decorator" ,python-decorator) - ("python-ipykernel" ,python-ipykernel) - ("python-ipython" ,python-ipython) - ("python-ipython-genutils" ,python-ipython-genutils) - ("python-jupyter-client" ,python-jupyter-client) - ("python-pyzmq" ,python-pyzmq) - ("python-tornado" ,python-tornado) - ("python-traitlets" ,python-traitlets))) + (list python-dateutil + python-decorator + python-ipykernel + python-ipython + python-ipython-genutils + python-jupyter-client + python-pyzmq + python-tornado + python-traitlets)) (native-inputs - `(("python-ipython" ,python-ipython) - ("python-mock" ,python-mock) - ("python-nose" ,python-nose) - ("python-pytest" ,python-pytest) - ("python-pytest-cov" ,python-pytest-cov) - ("python-testpath" ,python-testpath))) + (list python-ipython + python-mock + python-nose + python-pytest + python-pytest-cov + python-testpath)) (home-page "https://ipython.org/") (synopsis "Interactive Parallel Computing with IPython") (description @@ -7806,12 +8240,12 @@ CLI scripts: (invoke "python" "example/example.py" "--local")) #t)))))) (propagated-inputs - `(("python-ipyparallel" ,python-ipyparallel) - ("python-ipython" ,python-ipython) - ("python-netifaces" ,python-netifaces) - ("python-pyzmq" ,python-pyzmq) - ("python-setuptools" ,python-setuptools) - ("python-six" ,python-six))) + (list python-ipyparallel + python-ipython + python-netifaces + python-pyzmq + python-setuptools + python-six)) (home-page "https://github.com/roryk/ipython-cluster-helper") (synopsis "Simplify IPython cluster start up and use for multiple schedulers") @@ -7838,12 +8272,9 @@ cluster down and deletes the throwaway profile.") (modify-phases %standard-phases (replace 'check (lambda _ (invoke "pytest" "-vv" "traitlets")))))) (propagated-inputs - `(("python-ipython-genutils" ,python-ipython-genutils) - ("python-decorator" ,python-decorator) - ("python-six" ,python-six))) + (list python-ipython-genutils python-decorator python-six)) (native-inputs - `(("python-pytest" ,python-pytest))) - (properties `((python2-variant . ,(delay python2-traitlets)))) + (list python-pytest)) (home-page "https://ipython.org") (synopsis "Configuration system for Python applications") (description @@ -7855,13 +8286,6 @@ is a distinct layer on top of traitlets, so you can use traitlets in your code without using the configuration machinery.") (license license:bsd-3))) -(define-public python2-traitlets - (let ((traitlets (package-with-python2 (strip-python2-variant python-traitlets)))) - (package/inherit traitlets - (propagated-inputs - `(("python2-enum34" ,python2-enum34) - ,@(package-propagated-inputs traitlets)))))) - (define-public python-jupyter-core (package (name "python-jupyter-core") @@ -7907,15 +8331,14 @@ without using the configuration machinery.") (assoc-ref outputs "out") "/etc/jupyter/migrated"))))))) (propagated-inputs - `(("python-traitlets" ,python-traitlets))) + (list python-traitlets)) (native-inputs - `(("python-six" ,python-six) - ("python-pytest" ,python-pytest))) + (list python-six python-pytest)) ;; This package provides the `jupyter` binary and thus also exports the ;; search paths. (native-search-paths (list (search-path-specification - (variable "JUPYTER_CONFIG_DIR") + (variable "JUPYTER_CONFIG_PATH") (files '("etc/jupyter"))) (search-path-specification (variable "JUPYTER_PATH") @@ -7957,14 +8380,10 @@ without using the configuration machinery.") (inputs `(("iproute" ,iproute))) (propagated-inputs - `(("python-dateutil" ,python-dateutil) - ("python-jupyter-core" ,python-jupyter-core) - ("python-pyzmq" ,python-pyzmq) - ("python-tornado" ,python-tornado-6) - ("python-traitlets" ,python-traitlets))) + (list python-dateutil python-jupyter-core python-pyzmq + python-tornado-6 python-traitlets)) (native-inputs `(("python-pytest" ,python-pytest) - ("python-pytest-asyncio" ,python-pytest-asyncio) ("python-pytest-timeout" ,python-pytest-timeout) ("python-async-generator" ,python-async-generator) ("python-mock" ,python-mock) @@ -8009,10 +8428,10 @@ installing @code{kernelspec}s for use with Jupyter frontends.") `(#:phases (modify-phases %standard-phases (replace 'check - (lambda _ - (setenv "HOME" "/tmp") - (invoke "pytest" "-v") - #t)) + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (setenv "HOME" "/tmp") + (invoke "pytest" "-v")))) (add-after 'install 'set-python-file-name (lambda* (#:key outputs #:allow-other-keys) ;; Record the absolute file name of the 'python' executable in @@ -8024,15 +8443,11 @@ installing @code{kernelspec}s for use with Jupyter frontends.") (string-append "\"" (which "python") "\""))) #t)))))) (propagated-inputs - `(("python-ipython" ,python-ipython) - ("python-tornado" ,python-tornado-6) - ("python-traitlets" ,python-traitlets) - ;; imported at runtime during connect - ("python-jupyter-client" ,python-jupyter-client))) + (list python-ipython python-tornado-6 python-traitlets + ;; imported at runtime during connect + python-jupyter-client)) (native-inputs - `(("python-flaky" ,python-flaky) - ("python-nose" ,python-nose) - ("python-pytest" ,python-pytest))) + (list python-flaky python-nose python-pytest)) (home-page "https://ipython.org") (synopsis "IPython Kernel for Jupyter") (description @@ -8065,10 +8480,9 @@ installing @code{kernelspec}s for use with Jupyter frontends.") "1yash0p422nnin7z58b99d0p23nx79f5m0mainc9hsjg72jhdhr6")))) (build-system python-build-system) (propagated-inputs - `(("python-ipykernel" ,python-ipykernel))) + (list python-ipykernel)) (inputs - `(("pari-gp" ,pari-gp) - ("readline" ,readline))) + (list pari-gp readline)) (arguments `(#:tests? #f)) ; no test suite (home-page @@ -8111,33 +8525,32 @@ callback signature using a prototype function.") (base32 "04xgymypnbfgf2q0d5b0hanjbjsp53f055sh1p8xlq52vyzmxdaq")))) (build-system python-build-system) (propagated-inputs - `(("python-backcall" ,python-backcall) - ("python-pyzmq" ,python-pyzmq) - ("python-prompt-toolkit" ,python-prompt-toolkit-2) - ("python-terminado" ,python-terminado) - ("python-matplotlib" ,python-matplotlib) - ("python-matplotlib-inline" ,python-matplotlib-inline) - ("python-numpy" ,python-numpy) - ("python-numpydoc" ,python-numpydoc) - ("python-jedi" ,python-jedi) - ("python-jinja2" ,python-jinja2) - ("python-mistune" ,python-mistune) - ("python-pexpect" ,python-pexpect) - ("python-pickleshare" ,python-pickleshare) - ("python-simplegeneric" ,python-simplegeneric) - ("python-jsonschema" ,python-jsonschema) - ("python-traitlets" ,python-traitlets) - ("python-nbformat" ,python-nbformat) - ("python-pygments" ,python-pygments))) + (list python-backcall + python-pyzmq + python-prompt-toolkit-2 + python-terminado + python-matplotlib + python-matplotlib-inline + python-numpy + python-numpydoc + python-jedi + python-jinja2 + python-mistune + python-pexpect + python-pickleshare + python-simplegeneric + python-jsonschema + python-traitlets + python-nbformat + python-pygments)) (inputs - `(("readline" ,readline) - ("which" ,which))) + (list readline which)) (native-inputs - `(("graphviz" ,graphviz) - ("pkg-config" ,pkg-config) - ("python-requests" ,python-requests) ;; for tests - ("python-testpath" ,python-testpath) - ("python-nose" ,python-nose))) + (list graphviz + pkg-config + python-requests ;; for tests + python-testpath + python-nose)) (arguments `(#:phases (modify-phases %standard-phases @@ -8146,8 +8559,7 @@ callback signature using a prototype function.") (substitute* "IPython/sphinxext/ipython_directive.py" ((".*import datetime") "") ((".*datetime.datetime.now\\(\\)") "") - (("%timeit") "# %timeit")) - #t)) + (("%timeit") "# %timeit")))) ;; Tests can only be run after the library has been installed and not ;; within the source directory. (delete 'check) @@ -8161,8 +8573,7 @@ callback signature using a prototype function.") ;; We only test the core because one of the other tests ;; tries to import ipykernel. (invoke "python" "IPython/testing/iptest.py" - "-v" "IPython/core/tests")) - #t))) + "-v" "IPython/core/tests"))))) (add-before 'check 'fix-tests (lambda* (#:key inputs #:allow-other-keys) (substitute* "./IPython/utils/_process_posix.py" @@ -8177,8 +8588,7 @@ callback signature using a prototype function.") (delete-file "IPython/core/tests/test_interactiveshell.py") ;; AttributeError: module 'matplotlib_inline' has no ;; attribute 'backend_inline' - (delete-file "IPython/core/tests/test_pylabtools.py") - #t))))) + (delete-file "IPython/core/tests/test_pylabtools.py")))))) (home-page "https://ipython.org") (synopsis "IPython is a tool for interactive computing in Python") (description @@ -8227,8 +8637,7 @@ computing.") (copy-file "COPYING.rst" (string-append doc "/COPYING.rst"))) #t))))) (inputs - `(("python-ipython" ,python-ipython) - ("python-ipykernel" ,python-ipykernel))) + (list python-ipython python-ipykernel)) (native-inputs `(("python-sphinx" ,python-sphinx) ("python-sphinx-rtd-theme" ,python-sphinx-rtd-theme) @@ -8280,6 +8689,15 @@ computing.") (base32 "1bky2bra6673xx8jy0826znw6cmxs89wcwwzda8d025j3jffx2sq")))) (build-system python-build-system) + (arguments + (list + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'remove-vterm-tests + ;; According to Debian these tests are cursed. + ;; https://salsa.debian.org/python-team/packages/urwid/-/blob/debian/2.1.2-2/debian/changelog#L141 + (lambda _ + (delete-file "urwid/tests/test_vterm.py")))))) (home-page "http://urwid.org") (synopsis "Console user interface library for Python") (description @@ -8326,9 +8744,9 @@ features useful for text console applications.") (invoke "python" "-m" "pytest")) #t))))) (propagated-inputs - `(("python-urwid" ,python-urwid))) + (list python-urwid)) (native-inputs - `(("python-pytest" ,python-pytest))) + (list python-pytest)) (home-page "https://github.com/rr-/urwid_readline") (synopsis "Text input widget for urwid that supports readline shortcuts") (description @@ -8361,12 +8779,12 @@ supports @code{readline} shortcuts.") (delete-file "tests/test_external.py") #t))))) (native-inputs - `(("python-hypothesis" ,python-hypothesis) - ("python-isort" ,python-isort) - ("python-numpy" ,python-numpy) - ("python-pytest" ,python-pytest) - ("python-pytest-runner" ,python-pytest-runner) - ("python-tabulate" ,python-tabulate))) + (list python-hypothesis + python-isort + python-numpy + python-pytest + python-pytest-runner + python-tabulate)) (home-page "https://github.com/life4/textdistance") (synopsis "Compute distance between the two texts") (description "@code{textdistance} is a pure Python library for comparing @@ -8376,7 +8794,7 @@ distance between two or more sequences by many algorithms.") (define-public python-urwidtrees (package (name "python-urwidtrees") - (version "1.0.2") + (version "1.0.3") (source (origin (method git-fetch) @@ -8388,12 +8806,11 @@ distance between two or more sequences by many algorithms.") (file-name (git-file-name name version)) (sha256 (base32 - "1n1kpidvkdnsqyb82vlvk78gmly96kh8351lqxn2pzgwwns6fml2")))) + "1y1vysx7jg0vbrarlsykhf7nmr8fc6k1fva1q3i98xq2m30s6r68")))) (build-system python-build-system) (arguments - '(#:use-setuptools? #f - #:tests? #f)) ; no tests - (propagated-inputs `(("python-urwid" ,python-urwid))) + '(#:tests? #f)) ; no tests + (propagated-inputs (list python-urwid)) (home-page "https://github.com/pazz/urwidtrees") (synopsis "Tree widgets for urwid") (description "Urwidtrees is a Widget Container API for the @code{urwid} @@ -8418,7 +8835,7 @@ toolkit. Use it to build trees of widgets.") (arguments `(#:tests? #f)) ;no test suite in release (native-inputs - `(("python-pyyaml" ,python-pyyaml))) + (list python-pyyaml)) (home-page "https://github.com/ua-parser/uap-python") (synopsis "User agent parser") (description @@ -8443,7 +8860,7 @@ toolkit. Use it to build trees of widgets.") (arguments `(#:tests? #f)) ;missing devices.json test file in release (propagated-inputs - `(("python-ua-parser" ,python-ua-parser))) + (list python-ua-parser)) (home-page "https://github.com/selwin/python-user-agents") (synopsis "User Agent strings parsing library") (description @@ -8457,17 +8874,17 @@ parsing (browser/HTTP) user agent strings.") (define-public python-dbus (package (name "python-dbus") - (version "1.2.16") + (version "1.2.18") (source (origin (method url-fetch) (uri (string-append "https://dbus.freedesktop.org/releases/dbus-python/" "dbus-python-" version ".tar.gz")) (sha256 - (base32 "196m5rk3qzw5nkmgzjl7wmq0v7vpwfhh8bz2sapdi5f9hqfqy8qi")))) + (base32 "0q3jrw515z98mqdk9x822nd95rky455zz9876f1nqna5igkd3gcj")))) (build-system gnu-build-system) (native-inputs - `(("pkg-config" ,pkg-config))) + (list pkg-config)) (inputs `(("python" ,python-wrapper) ("dbus-glib" ,dbus-glib))) @@ -8475,6 +8892,7 @@ parsing (browser/HTTP) user agent strings.") (description "python-dbus provides bindings for libdbus, the reference implementation of D-Bus.") (home-page "https://www.freedesktop.org/wiki/Software/DBusBindings/") + (properties `((python2-variant . ,(delay python2-dbus)))) (license license:expat))) (define-public python2-dbus @@ -8482,8 +8900,34 @@ implementation of D-Bus.") (name "python2-dbus") (inputs `(("python" ,python-2) ,@(alist-delete "python" - (package-inputs python-dbus) - equal?))))) + (package-inputs python-dbus)))) + (arguments + `(#:configure-flags '("PYTHON_VERSION=2"))))) + +(define-public python-dbus-next + (package + (name "python-dbus-next") + (version "0.2.3") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/altdesktop/python-dbus-next") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1ahaz52kny1p9xxv6phvk4iq56rg8li390wywlxf2yslaij1188h")))) + (build-system python-build-system) + (native-inputs + (list python-pytest)) + (home-page "https://github.com/altdesktop/python-dbus-next") + (synopsis "Zero-dependency DBus library for Python with asyncio support") + (description + "This DBus library for Python aims to be a fully-featured high-level +library primarily geared towards integration of applications into desktop and +mobile environments.") + (license license:expat))) (define-public python-notify2 (package @@ -8498,8 +8942,8 @@ implementation of D-Bus.") "0z8rrv9rsg1r2qgh2dxj3dfj5xnki98kgi3w839kqby4a26i1yik")))) (build-system python-build-system) (arguments `(#:tests? #f)) ; tests depend on system state - (native-inputs - `(("python-dbus" ,python-dbus))) + (propagated-inputs + (list python-dbus)) (home-page "https://bitbucket.org/takluyver/pynotify2") (synopsis "Python interface to D-Bus notifications") (description @@ -8537,7 +8981,7 @@ the GObject Introspection bindings to libnotify for non-GTK applications.") (replace 'check (lambda _ (invoke "./convert-py3k")))))) (propagated-inputs - `(("python-soupsieve" ,python-soupsieve))) + (list python-soupsieve)) (home-page "https://www.crummy.com/software/BeautifulSoup/bs4/") (synopsis @@ -8603,9 +9047,8 @@ some are not yet implemented).") (base32 "1apgqxngi1216h1cyvrvj9gy3wf45mh1lz4n76j26jf3k36bm1br")))) (propagated-inputs - `(("python2-backports-functools-lru-cache" - ,python2-backports-functools-lru-cache) - ,@(package-propagated-inputs base)))))) + (modify-inputs (package-propagated-inputs base) + (prepend python2-backports-functools-lru-cache)))))) (define-public python-netifaces (package @@ -8651,9 +9094,9 @@ interfaces in an easy and portable manner.") #t))))) ;; python-decorator is needed at runtime. (propagated-inputs - `(("python-decorator" ,python-decorator))) + (list python-decorator)) (native-inputs - `(("python-pytest" ,python-pytest))) + (list python-pytest)) (home-page "https://networkx.github.io/") (synopsis "Python module for creating and manipulating graphs and networks") (description @@ -8677,8 +9120,7 @@ of the structure, dynamics, and functions of complex networks.") (arguments `(#:python ,python-2)) (native-inputs - `(("python-nose" ,python2-nose) - ("unzip" ,unzip)))))) + (list python2-nose unzip))))) (define-public python-datrie (package @@ -8693,10 +9135,8 @@ of the structure, dynamics, and functions of complex networks.") "0pbn32flkrpjiwfcknmj6398qa81ba783kbcvwan3kym73v0hnsj")))) (build-system python-build-system) (native-inputs - `(("python-cython" ,python-cython) - ("python-hypothesis" ,python-hypothesis) - ("python-pytest" ,python-pytest) - ("python-pytest-runner" ,python-pytest-runner))) + (list python-cython python-hypothesis python-pytest + python-pytest-runner)) (home-page "https://github.com/kmike/datrie") (synopsis "Fast, efficiently stored trie for Python") (description @@ -8717,10 +9157,9 @@ Python.") "0f1db9zp0rsfzxvaz55xwh8h5rfdgr9a2a715g06ic8nknsdq4nb")))) (build-system python-build-system) (propagated-inputs - `(("python-docutils" ,python-docutils) - ("python-pyparsing" ,python-pyparsing))) + (list python-docutils python-pyparsing)) (native-inputs - `(("python-setuptools-scm" ,python-setuptools-scm))) + (list python-setuptools-scm)) (home-page "https://github.com/willu47/amply") (synopsis "Load and manipulate AMPL/GLPK data as Python data structures") (description @@ -8741,7 +9180,7 @@ structures.") "1dammrg0f1v0r028i3rpxbf2bsyxmjq0q6ihb4x2wsdki44z3bxj")))) (build-system python-build-system) (propagated-inputs - `(("python-amply" ,python-amply))) + (list python-amply)) (home-page "https://github.com/coin-or/pulp") (synopsis "Linear Programming modeler") (description @@ -8787,13 +9226,10 @@ algorithm.") (arguments `(#:test-target "pytest")) (propagated-inputs - `(("python-diff-match-patch" ,python-diff-match-patch))) + (list python-diff-match-patch)) (native-inputs - `(("python-flaky" ,python-flaky) - ("python-pytest" ,python-pytest) - ("python-pytest-cov" ,python-pytest-cov) - ("python-pytest-runner" ,python-pytest-runner) - ("python-pytest-timeout" ,python-pytest-timeout))) + (list python-flaky python-pytest python-pytest-cov + python-pytest-runner python-pytest-timeout)) (home-page "https://github.com/spyder-ide/three-merge") (synopsis "Library for merging two strings with respect to a base one") (description @@ -8830,22 +9266,22 @@ approach.") "/bin/snakemake"))) #t))))) (propagated-inputs - `(("python-appdirs" ,python-appdirs) - ("python-configargparse" ,python-configargparse) - ("python-datrie" ,python-datrie) - ("python-docutils" ,python-docutils) - ("python-gitpython" ,python-gitpython) - ("python-jinja2" ,python-jinja2) - ("python-jsonschema" ,python-jsonschema) - ("python-nbformat" ,python-nbformat) - ("python-networkx" ,python-networkx) - ("python-psutil" ,python-psutil) - ("python-pulp" ,python-pulp) - ("python-pyyaml" ,python-pyyaml) - ("python-ratelimiter" ,python-ratelimiter) - ("python-requests" ,python-requests) - ("python-toposort" ,python-toposort) - ("python-wrapt" ,python-wrapt))) + (list python-appdirs + python-configargparse + python-datrie + python-docutils + python-gitpython + python-jinja2 + python-jsonschema + python-nbformat + python-networkx + python-psutil + python-pulp + python-pyyaml + python-ratelimiter + python-requests + python-toposort + python-wrapt)) (home-page "https://snakemake.readthedocs.io") (synopsis "Python-based execution environment for make-like workflows") (description @@ -8877,13 +9313,13 @@ SVG, EPS, PNG and terminal output.") (define-public python-seaborn (package (name "python-seaborn") - (version "0.11.1") + (version "0.11.2") (source (origin (method url-fetch) (uri (pypi-uri "seaborn" version)) (sha256 - (base32 "1b81p9s6li3b606ivgbynrh102fclwlw74m8qxzsii9pv6p8xrs4")) + (base32 "1xpl3zb945sihsiwm9q1yyx84sakk1phcg0fprj6i0j0dllfjifg")) (patches (search-patches "python-seaborn-kde-test.patch")))) (build-system python-build-system) (arguments @@ -8900,13 +9336,9 @@ SVG, EPS, PNG and terminal output.") (when tests? (invoke "pytest" "seaborn"))))))) (propagated-inputs - `(("python-pandas" ,python-pandas) - ("python-matplotlib" ,python-matplotlib) - ("python-numpy" ,python-numpy) - ("python-scipy" ,python-scipy))) + (list python-pandas python-matplotlib python-numpy python-scipy)) (native-inputs - `(("python-pytest" ,python-pytest) - ("xorg-server" ,xorg-server-for-tests))) + (list python-pytest xorg-server-for-tests)) (home-page "https://seaborn.pydata.org/") (synopsis "Statistical data visualization") (description @@ -8932,31 +9364,40 @@ and statistical routines from scipy and statsmodels.") (define-public python-mpmath (package - (name "python-mpmath") - (version "1.1.0") - (source (origin - (method url-fetch) - (uri (pypi-uri "mpmath" version)) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1xlrcja213jpfhw25q1jl5pl10w1a2cc68x1c4mkicxsbzhan5zw")))) - (build-system python-build-system) - (native-inputs - `(("python-pytest" ,python-pytest))) - (arguments - '(#:phases - (modify-phases %standard-phases - (replace 'check - (lambda _ - (invoke "python" "mpmath/tests/runtests.py" "-local")))))) - (home-page "https://mpmath.org") - (synopsis "Arbitrary-precision floating-point arithmetic in python") - (description - "@code{mpmath} can be used as an arbitrary-precision substitute for + (name "python-mpmath") + (version "1.2.1") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/fredrik-johansson/mpmath") + (commit "c6a35f9ee7c294bcf4e0517bc76b268843db9499"))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0ifw59fjjls3mas104rh0frilvab2fhk1dkjraxlqni5n9l676im")))) + (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-before 'build 'set-version + (lambda _ + (setenv "SETUPTOOLS_SCM_PRETEND_VERSION" ,version) + ;; ZIP does not support timestamps before 1980. + (setenv "SOURCE_DATE_EPOCH" "315532800"))) + (replace 'check + (lambda* (#:key tests? inputs outputs #:allow-other-keys) + (when tests? + (add-installed-pythonpath inputs outputs) + (invoke "pytest" "-vv"))))))) + (native-inputs + (list python-pytest python-setuptools-scm)) + (home-page "https://mpmath.org") + (synopsis "Arbitrary-precision floating-point arithmetic in python") + (description + "@code{mpmath} can be used as an arbitrary-precision substitute for Python's float/complex types and math/cmath modules, but also does much more advanced mathematics.") - (license license:bsd-3))) + (license license:bsd-3))) (define-public python2-mpmath (package-with-python2 python-mpmath)) @@ -8973,7 +9414,7 @@ more advanced mathematics.") (base32 "0xd7q4l7v0f463diznjv4k9wlaks80pn9drdqmfifi7zx8qvybi6")))) (build-system python-build-system) (inputs - `(("mpfr" ,mpfr))) + (list mpfr)) (home-page "https://github.com/mdickinson/bigfloat") (synopsis "Arbitrary precision floating-point arithmetic for Python") (description @@ -9001,7 +9442,7 @@ multiprecision arithmetic.") (or (which "python3") (which "python")) "-c" "import sympy; sympy.test(\"/core\")")))))) (propagated-inputs - `(("python-mpmath" ,python-mpmath))) + (list python-mpmath)) (home-page "https://www.sympy.org/") (synopsis "Python library for symbolic mathematics") (description @@ -9070,11 +9511,9 @@ falling into the Python interpreter.") (setenv "DISPLAY" ":1") #t)))))) (native-inputs - `(("python-mock" ,python-mock) - ("python-setuptools-scm" ,python-setuptools-scm) - ("xorg-server" ,xorg-server))) + (list python-mock python-setuptools-scm xorg-server)) (propagated-inputs - `(("python-six" ,python-six))) + (list python-six)) (home-page "https://github.com/python-xlib/python-xlib") (synopsis "Python X11 client library") (description @@ -9099,7 +9538,7 @@ low-level X clients. It is written entirely in Python.") "171b7ip0hsq5qm83np40h3phlr36ym18w0lay0a8v08kvy3sy1jv")))) (build-system python-build-system) (native-inputs - `(("python-six" ,python-six))) ; required for conversion, not at run-time + (list python-six)) ; required for conversion, not at run-time (home-page "https://docs.python.org/3/library/functools.html#functools.singledispatch") (synopsis "Backport of singledispatch feature from Python 3.4") @@ -9156,7 +9595,14 @@ Python 2 and Python 3.") (license license:psfl))) (define-public python2-backports-csv - (package-with-python2 python-backports-csv)) + (package + (inherit (package-with-python2 python-backports-csv)) + (arguments + `(#:phases + (modify-phases %standard-phases + ;; The sanity-check attempts attempts to import the non-existent + ;; module "backports". + (delete 'sanity-check)))))) (define-public python2-backports-shutil-get-terminal-size (package @@ -9178,7 +9624,7 @@ Python 2 and Python 3.") (lambda _ (invoke "py.test" "-v")))))) (native-inputs - `(("python2-pytest" ,python2-pytest))) + (list python2-pytest)) (home-page "https://github.com/chrippa/backports.shutil_get_terminal_size") (synopsis "Backport of Python 3.3's @code{shutil.get_terminal_size}") (description @@ -9252,17 +9698,65 @@ applications.") ;; Cython extensions have to be built before running the tests. (invoke "python" "setup.py" "build_ext" "--inplace")))))) (inputs - `(("zeromq" ,zeromq))) + (list zeromq)) (native-inputs - `(("pkg-config" ,pkg-config) - ("python-cython" ,python-cython) - ("python-pytest" ,python-pytest))) + (list pkg-config python-cython python-pytest)) (home-page "https://github.com/zeromq/pyzmq") (synopsis "Python bindings for 0MQ") (description "PyZMQ is the official Python binding for the ZeroMQ messaging library.") (license license:bsd-4))) +(define-public python-immutabledict + (package + (name "python-immutabledict") + (version "2.2.1") + (source + (origin + (method url-fetch) + (uri (pypi-uri "immutabledict" version)) + (sha256 + (base32 "0fpc4gbk7inpfbgdypsg6c18bmdjw8gwx47bjw0hvixn3gghxnqx")))) + (build-system python-build-system) + (arguments + `(#:tests? #f)) ; no tests in PyPI release and no setup.py in GitHub + (native-inputs + (list python-pytest)) + (home-page "https://github.com/corenting/immutabledict") + (synopsis "Immutable wrapper around dictionaries") + (description + "@dfn{immutabledict} is an immutable wrapper around dictionaries. +It implements the complete mapping interface and can be used as a drop-in +replacement for dictionaries where immutability is desired.") + (license license:expat))) + +(define-public python-emoji + (package + (name "python-emoji") + (version "1.6.1") + (source + (origin + (method url-fetch) + (uri (pypi-uri "emoji" version)) + (sha256 + (base32 "0923mpixwq6hdpkgvi4r46alfvf608iq975rb8lnqpq29j71mmjk")))) + (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "python" "-m" "pytest"))))))) + (native-inputs + (list python-pytest)) + (home-page "https://github.com/carpedm20/emoji/") + (synopsis "Emoji terminal output for Python") + (description "This package provides Emoji terminal output for Python. The +entire set of Emoji codes as defined by the Unicode Consortium is supported in +addition to a bunch of aliases.") + (license license:bsd-3))) + (define-public python-pep8 ;; This package has been renamed to ‘pycodestyle’ and is no longer updated. ;; Its last release (1.7.1) adds only a scary warning to this effect, breaking @@ -9289,6 +9783,27 @@ PEP 8.") (define-public python2-pep8 (package-with-python2 python-pep8)) +(define-public python-pep8-naming + (package + (name "python-pep8-naming") + (version "0.12.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "pep8-naming" version)) + (sha256 + (base32 + "04kyh9hkpyc8jzj16d1kkk29b5n8miqdvbs0zm035n1z5z5kx6hz")))) + (build-system python-build-system) + (propagated-inputs + (list python-flake8 python-flake8-polyfill)) + (home-page "https://github.com/PyCQA/pep8-naming") + (synopsis "Check PEP-8 naming conventions") + (description + "This package provides the @code{pep8-naming} Python module, a +plugin for flake8 to check PEP-8 naming conventions.") + (license license:expat))) + (define-public python-pep517 (package (inherit python-pep517-bootstrap) @@ -9305,9 +9820,7 @@ PEP 8.") (invoke "pytest") #t)))))) (native-inputs - `(("python-mock" ,python-mock) - ("python-pytest" ,python-pytest) - ("python-testpath" ,python-testpath))) + (list python-mock python-pytest python-testpath)) (properties `((python2-variant . ,(delay python2-pep517)))))) ;; Skip the tests so we don't create a cyclical dependency with pytest. @@ -9351,7 +9864,9 @@ PEP 8.") (uri (pypi-uri "pyflakes" version)) (sha256 (base32 - "1j3zqbiwkyicvww499bblq33x0bjpzdrxajhaysr7sk7x5gdgcim")))))) + "1j3zqbiwkyicvww499bblq33x0bjpzdrxajhaysr7sk7x5gdgcim")) + (patches + (search-patches "python-pyflakes-test-location.patch")))))) (define-public python-mccabe (package @@ -9366,9 +9881,7 @@ PEP 8.") "07w3p1qm44hgxf3vvwz84kswpsx6s7kvaibzrsx5dzm0hli1i3fx")))) (build-system python-build-system) (native-inputs - `(("python-toml", python-toml) - ("python-pytest" ,python-pytest-bootstrap) - ("python-pytest-runner" ,python-pytest-runner))) + (list python-toml python-pytest-bootstrap python-pytest-runner)) (home-page "https://github.com/PyCQA/mccabe") (synopsis "McCabe checker, plugin for flake8") (description "This package provides a Flake8 plug-in to compute the McCabe @@ -9397,13 +9910,10 @@ cyclomatic complexity of Python source code.") (add-installed-pythonpath inputs outputs) (invoke "pytest" "-v")))))) (propagated-inputs - `(("python-pycodestyle" ,python-pycodestyle) - ("python-entrypoints" ,python-entrypoints) - ("python-pyflakes" ,python-pyflakes) - ("python-mccabe" ,python-mccabe))) + (list python-pycodestyle python-entrypoints python-pyflakes + python-mccabe)) (native-inputs - `(("python-mock" ,python-mock) - ("python-pytest" ,python-pytest))) + (list python-mock python-pytest)) (home-page "https://gitlab.com/pycqa/flake8") (synopsis "The modular source code checker: pep8, pyflakes and co") @@ -9433,10 +9943,8 @@ cyclomatic complexity of Python source code.") (base32 "0fvcrsbyzjpcli8ldbpsdbpmf238nkvwc1dy4hy82lf63rvfinma")))) (propagated-inputs - `(("python-pycodestyle" ,python-pycodestyle-2.6) - ("python-entrypoints" ,python-entrypoints) - ("python-pyflakes" ,python-pyflakes-2.2) - ("python-mccabe" ,python-mccabe))))) + (list python-pycodestyle-2.6 python-entrypoints python-pyflakes-2.2 + python-mccabe)))) (define-public python-flake8-bugbear (package @@ -9460,11 +9968,9 @@ cyclomatic complexity of Python source code.") (("def test_does_not_crash_on_any_valid_code") "def _test_does_not_crash_on_any_valid_code"))))))) (native-inputs - `(("python-hypothesis" ,python-hypothesis) - ("python-hypothesmith" ,python-hypothesmith))) + (list python-hypothesis python-hypothesmith)) (propagated-inputs - `(("python-attrs" ,python-attrs) - ("python-flake8" ,python-flake8))) + (list python-attrs python-flake8)) (home-page "https://github.com/PyCQA/flake8-bugbear") (synopsis "Flake8 plugin for finding likely bugs and design problems in your program") @@ -9487,9 +9993,7 @@ in pyflakes and pycodestyle.") "0dzaw8jr7yhlabxhrblnrizxx17xa9ngjnbr1kidg5lapq6b9q1y")))) (build-system python-build-system) (propagated-inputs - `(("python-flake8" ,python-flake8) - ("python-pycodestyle" ,python-pycodestyle) - ("python-six" ,python-six))) + (list python-flake8 python-pycodestyle python-six)) (home-page "https://github.com/planetlabs/flake8-continuation") (synopsis "Flake8 Line Continuation Plugin") (description "A Flake8 plugin that checks for the line continuation @@ -9514,8 +10018,7 @@ These should be used in preference to using a backslash for line continuation. (base32 "1v0y29xlmbr2q12a4nnpm1dm9aw1mjiys1x8jif4z8c90d63cqm6")))) (build-system python-build-system) (propagated-inputs - `(("python-attrs" ,python-attrs) - ("python-more-itertools" ,python-more-itertools))) + (list python-attrs python-more-itertools)) (home-page "https://github.com/keisheiled/flake8-implicit-str-concat") (synopsis "Flake8 plugin to encourage correct string literal concatenation") (description @@ -9551,12 +10054,9 @@ unnecessary plus operators for explicit string literal concatenation.") "[tool:pytest]")) (invoke "py.test" "-v")))))) (propagated-inputs - `(("python-flake8" ,python-flake8))) + (list python-flake8)) (native-inputs - `(("python-mock" ,python-mock) - ("python-pep8" ,python-pep8) - ("python-pycodestyle" ,python-pycodestyle) - ("python-pytest" ,python-pytest))) + (list python-mock python-pep8 python-pycodestyle python-pytest)) (home-page "https://gitlab.com/pycqa/flake8-polyfill") (synopsis "Polyfill package for Flake8 plugins") (description @@ -9579,9 +10079,7 @@ plugins that intend to support Flake8 2.x and 3.x simultaneously.") (base32 "05k5kkvyk6fdmvnacxfzypk74vbl3pmva13dqg1aljfwnxsc7yjs")))) (build-system python-build-system) (propagated-inputs - `(("python-flake8" ,python-flake8) - ("python-pycodestyle" ,python-pycodestyle) - ("python-six" ,python-six))) + (list python-flake8 python-pycodestyle python-six)) (home-page "https://github.com/jbkahn/flake8-print") (synopsis "Print statement checker plugin for Flake8") (description @@ -9602,9 +10100,7 @@ files.") "0b27n2pmrxcc7nva4wp2i7mrag0fnq0firvhg1ljq593a45b5qyf")))) (build-system python-build-system) (propagated-inputs - `(("python-attrs" ,python-attrs) - ("python-flake8" ,python-flake8) - ("python-pyflakes" ,python-pyflakes))) + (list python-attrs python-flake8 python-pyflakes)) (home-page "https://github.com/ambv/flake8-pyi") (synopsis "Flake8 plugin that provides specializations for type hinting stub files") @@ -9650,12 +10146,33 @@ lints.") "0ph5s6lxgpzz4an0ax6s5xjqypqmngwr5b1i0h9pqhzghplic49z")))) (build-system python-build-system) (propagated-inputs - `(("python-flake8" ,python-flake8))) + (list python-flake8)) (home-page "https://github.com/zheller/flake8-quotes/") (synopsis "Flake8 lint for quotes") (description "This package provides a Flake8 lint for quotes.") (license license:expat))) +(define-public python-flake8-todo + (package + (name "python-flake8-todo") + (version "0.7") + (source + (origin + (method url-fetch) + (uri (pypi-uri "flake8-todo" version)) + (sha256 + (base32 + "05arm0sch3r8248035kilmf01z0mxsahw6vpbbz0d343zy8m8k3f")))) + (build-system python-build-system) + (propagated-inputs + (list python-pycodestyle)) + (home-page "https://github.com/schlamar/flake8-todo") + (synopsis "TODO notes checker, plugin for flake8") + (description + "This package provides the @code{flake8-todo} Python module, a +TODO notes checker plugin for flake8.") + (license license:expat))) + (define-public python-autoflake (package (name "python-autoflake") @@ -9668,7 +10185,7 @@ lints.") (base32 "0nzr057dbmgprp4a52ymafdkdd5zp2wcqf42913xc7hhvvdbj338")))) (build-system python-build-system) (propagated-inputs - `(("python-pyflakes" ,python-pyflakes))) + (list python-pyflakes)) (home-page "https://github.com/myint/autoflake") (synopsis "Removes unused imports and unused variables") (description @@ -9693,8 +10210,7 @@ It also removes useless @code{pass} statements.") "0vkmsh0x480rni51lhyvigfdf06b9247z868pk3bal1wnnfl58sr")))) (build-system python-build-system) (native-inputs - `(("python-nose" ,python-nose) - ("python-cython" ,python-cython))) + (list python-nose python-cython)) (home-page "https://github.com/lepture/mistune") (synopsis "Markdown parser in pure Python") (description "This package provides a fast markdown parser in pure @@ -9704,6 +10220,20 @@ Python.") (define-public python2-mistune (package-with-python2 python-mistune)) +;; 2.0 is not released yet, but some packages have started using it. +(define-public python-mistune-next + (package + (inherit python-mistune) + (name "python-mistune-next") + (version "2.0.0rc1") + (source (origin + (method url-fetch) + (uri (pypi-uri "mistune" version)) + (sha256 + (base32 + "1nd7iav1ixh9hlj4hxn6lmpava88d86ys8rqm30wgvr7gjlxnas5")))) + (native-inputs (list python-nose)))) + (define-public python-markdown (package (name "python-markdown") @@ -9717,8 +10247,7 @@ Python.") "0jbs73nincha8fkfxx267sfxac6pl0ckszjbqbb8gk4dhs8v9d9i")))) (build-system python-build-system) (native-inputs - `(("python-nose" ,python-nose) - ("python-pyyaml" ,python-pyyaml))) + (list python-nose python-pyyaml)) (home-page "https://python-markdown.github.io/") (synopsis "Python implementation of Markdown") (description @@ -9755,7 +10284,7 @@ markdown_py is also provided to convert Markdown files to HTML.") "0ra31k10v3629xq0kdn8lwmfbi97anmk48r03yvh7mks0kq96hg6")))) (build-system python-build-system) (native-inputs - `(("python-nose" ,python-nose))) + (list python-nose)) (arguments `(#:phases (modify-phases %standard-phases @@ -9821,8 +10350,7 @@ pseudo terminal (pty), and interact with both the process and its pty.") (invoke "make" "test")))))) (build-system python-build-system) (native-inputs - `(("python-coverage" ,python-coverage) - ("which" ,which))) + (list python-coverage which)) (synopsis "Simple testing framework for command line applications") (description "Cram is a functional testing framework for command line applications. @@ -9865,7 +10393,7 @@ output.") (arguments `(#:tests? #f)) ; Tests require more dependencies. (native-inputs - `(("python-sphinx" ,python-sphinx))) + (list python-sphinx)) (home-page "https://github.com/jackmaney/python-stdlib-list") (synopsis "Python Standard Libraries") (description "This package contains a list of Python Standard Libraries.") @@ -9905,9 +10433,7 @@ add functionality and customization to your projects with their own plugins.") "1mq9kdzhcsp96bhv7smnrpdg1s4z5wh70bsl99c0jmcrahqdisqq")))) (build-system python-build-system) (native-inputs - `(("unzip" ,unzip) - ("python-pytest" ,python-pytest) - ("python-pytest-runner" ,python-pytest-runner))) + (list unzip python-pytest python-pytest-runner)) (home-page "https://github.com/fonttools/fonttools") (synopsis "Tools to manipulate font files") (description @@ -10008,10 +10534,9 @@ third-party code.") "1g2cdhdqrb6m7655qp61pn61pwj1ql61cdzhr2jvl3w4i8877ddr")))) (build-system python-build-system) (inputs - `(("fuse" ,fuse) - ("attr" ,attr))) + (list fuse attr)) (native-inputs - `(("pkg-config" ,pkg-config))) + (list pkg-config)) (synopsis "Python bindings for FUSE") (description "Python-LLFUSE is a set of Python bindings for the low level FUSE API.") @@ -10048,7 +10573,7 @@ third-party code.") (lambda _ (invoke "pytest" "-v" "test")))))) (native-inputs - `(("python-pytest" ,python-pytest))) + (list python-pytest)) (synopsis "MessagePack (de)serializer") (description "MessagePack is a fast, compact binary serialization format, suitable for similar data to JSON. This package provides CPython bindings for @@ -10214,9 +10739,9 @@ Supported netlink families and protocols include: (filter (lambda (f) (grep "from test." f)) test-files))))))))) (propagated-inputs - `(("python-lark-parser" ,python-lark-parser))) + (list python-lark-parser)) (native-inputs - `(("python-six" ,python-six))) + (list python-six)) (home-page "https://github.com/vaidik/commentjson") (synopsis "Python library for adding comments to JSON files") (description "Comment JSON is a Python package that helps you create JSON @@ -10249,9 +10774,7 @@ similar to the Python standard library's @code{json} module.") (add-installed-pythonpath inputs outputs) (invoke "pytest"))))))) (native-inputs - `(("python-commentjson" ,python-commentjson) - ("python-packaging" ,python-packaging) - ("python-pytest" ,python-pytest))) + (list python-commentjson python-packaging python-pytest)) (home-page "https://github.com/sarugaku/resolvelib") (synopsis "Abstract dependencies resolver") (description "The ResolveLib library provides a @code{Resolver} class that @@ -10331,6 +10854,37 @@ Unicode-aware. It is not intended as an end-user tool.") (define-public python2-xlrd (package-with-python2 python-xlrd)) +(define-public python-xlwt + (package + (name "python-xlwt") + (version "1.3.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "xlwt" version)) + (sha256 + (base32 "123c2pdamshkq75wwvck8fq0cjq1843xd3x9qaiz2a4vg9qi56f5")))) + (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (setenv "GUIX_PYTHONPATH" + (string-append (getcwd) "/build/lib:" + (getenv "GUIX_PYTHONPATH"))) + (invoke "nosetests" "-v"))))))) + (native-inputs + `(("nose" ,python-nose))) + (home-page "http://www.python-excel.org/") + (synopsis "Library for creating spreadsheet Excel files") + (description "@code{xlwt} is a library for writing data and formatting +information to older Excel files (i.e. .xls). The package itself is pure +Python with no dependencies on modules or packages outside the standard Python +distribution. It is not intended as an end-user tool.") + (license license:bsd-3))) + (define-public python-immutables (package (name "python-immutables") @@ -10377,13 +10931,13 @@ printing of sub-tables by specifying a row range.") (define-public python-curio (package (name "python-curio") - (version "1.2") + (version "1.5") (source (origin (method url-fetch) (uri (pypi-uri "curio" version)) (sha256 - (base32 "16wkww6kh511b9bzsfhpvrv0766cc6ssgbzz4lgpjnrzzgx21wwh")))) + (base32 "045wwg16qadsalhicbv21p14sj8i4w0l57639j7dmdqbb4p2225g")))) (build-system python-build-system) (arguments `(#:phases @@ -10395,7 +10949,7 @@ printing of sub-tables by specifying a row range.") ;; Tries to open an outgoing connection. "not test_ssl_outgoing")))))) (native-inputs - `(("python-pytest" ,python-pytest))) + (list python-pytest)) (home-page "https://github.com/dabeaz/curio") (synopsis "Coroutine-based library for concurrent Python") (description @@ -10458,15 +11012,11 @@ tasks, sockets, files, locks, and queues.") (string-append "--hdf5=" (assoc-ref inputs "hdf5")))))))) (propagated-inputs - `(("python-numexpr" ,python-numexpr) - ("python-numpy" ,python-numpy))) + (list python-numexpr python-numpy)) (native-inputs - `(("python-cython" ,python-cython) - ("pkg-config" ,pkg-config))) + (list python-cython pkg-config)) (inputs - `(("hdf5" ,hdf5-1.10) - ("bzip2" ,bzip2) - ("zlib" ,zlib))) + (list hdf5-1.10 bzip2 zlib)) (home-page "https://www.pytables.org/") (synopsis "Hierarchical datasets for Python") (description "PyTables is a package for managing hierarchical datasets and @@ -10491,9 +11041,7 @@ designed to efficiently cope with extremely large amounts of data.") (lambda _ (invoke "pytest" "-vv")))))) (native-inputs - `(("python-curio" ,python-curio) - ("python-pytest" ,python-pytest) - ("python-pytest-cov" ,python-pytest-cov))) + (list python-curio python-pytest python-pytest-cov)) (home-page "https://github.com/python-trio/sniffio") (synopsis "Detect which async library a program is running under") (description "This package detects which async library a program is @@ -10515,11 +11063,9 @@ asyncio.") "04lppqydxm0f3f3x0l8hj7v0j6d8syj34jc37yzqwqcyqsnaga81")))) (build-system python-build-system) (propagated-inputs - `(("python-pytest" ,python-pytest) - ("python-black" ,python-black) - ("python-toml" ,python-toml))) + (list python-pytest python-black python-toml)) (native-inputs - `(("python-setuptools-scm" ,python-setuptools-scm))) + (list python-setuptools-scm)) (home-page "https://github.com/shopkeep/pytest-black") (synopsis "Pytest plugin to enable format checking with black") (description @@ -10540,12 +11086,12 @@ Python code formatter \"black\".") "1g15jyx33vkxavv9hwv275cs4g9bp2i1y942raw3fxamq8kbaml1")))) (build-system python-build-system) (propagated-inputs - `(("python-pygments" ,python-pygments) - ("python-pytest" ,python-pytest) - ("python-pytest-black" ,python-pytest-black) - ("python-pytest-cov" ,python-pytest-cov) - ("python-setuptools" ,python-setuptools) - ("python-testpath" ,python-testpath))) + (list python-pygments + python-pytest + python-pytest-black + python-pytest-cov + python-setuptools + python-testpath)) (home-page "https://github.com/flying-sheep/get_version") (synopsis "Version helper in the spirit of versioneer") (description @@ -10556,6 +11102,65 @@ your package is installed, via @code{pkg_resources} (part of @code{setuptools}).") (license license:gpl3+))) +(define-public python-filetype + (package + (name "python-filetype") + (version "1.0.8") + (source + (origin + (method url-fetch) + (uri (pypi-uri "filetype" version)) + (sha256 + (base32 "05mkinkcn36v1cnb5hzay3zxmv7jmmflckxxp08rgzbkkf3i9pvp")))) + (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda* (#:key inputs outputs tests? #:allow-other-keys) + (when tests? + (add-installed-pythonpath inputs outputs) + (invoke "python" "-m" "pytest" "-k" + (string-append + ;; Both tests fail with FileNotFoundError. + "not test_infer_zip_from_disk" + " and not test_infer_tar_from_disk")))))))) + (native-inputs + (list python-pytest python-pytest-benchmark)) + (home-page "https://github.com/h2non/filetype.py") + (synopsis "Infer file type and MIME type of any file/buffer") + (description "@code{filetype} is a small and dependency free Python +package to infer file type and MIME type checking the magic numbers +signature of a file or buffer.") + (license license:expat))) + +(define-public python-cachelib + (package + (name "python-cachelib") + (version "0.4.1") + (source + (origin + (method url-fetch) + (uri (pypi-uri "cachelib" version)) + (sha256 + (base32 "0p4chkvbvffcllsny5rpzmsq2vyr24ql3kzif4ha0fxp3fp7vqk8")))) + (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda* (#:key tests? inputs outputs #:allow-other-keys) + (when tests? + (add-installed-pythonpath inputs outputs) + (invoke "pytest"))))))) + (native-inputs + (list python-pytest python-pytest-xprocess)) + (home-page "https://github.com/pallets/cachelib") + (synopsis "Collection of cache libraries") + (description "Cachelib is a library extracted from @code{werkzeug} which +provides a collection of cache libraries in the same API interface.") + (license license:bsd-3))) + (define-public python-legacy-api-wrap (package (name "python-legacy-api-wrap") @@ -10569,11 +11174,8 @@ your package is installed, via @code{pkg_resources} (part of "06qhp0g543dy98vpa41hwdalvdbsjfc3ldk474yr9sd75mhl8jh3")))) (build-system python-build-system) (propagated-inputs - `(("python-get-version" ,python-get-version) - ("python-pytest" ,python-pytest) - ("python-pytest-black" ,python-pytest-black) - ("python-pytest-cov" ,python-pytest-cov) - ("python-setuptools" ,python-setuptools))) + (list python-get-version python-pytest python-pytest-black + python-pytest-cov python-setuptools)) (home-page "https://github.com/flying-sheep/legacy-api-wrap") (synopsis "Legacy API wrapper") (description "This module defines a decorator to wrap legacy APIs. The @@ -10592,7 +11194,7 @@ primary use case is APIs defined before keyword-only parameters existed.") (base32 "1805svvb7xjm4sf1j7b6nc3409x37pd1xmabfwwjf1ldkzwgxhfb")))) (build-system python-build-system) (propagated-inputs - `(("python-six" ,python-six))) + (list python-six)) (home-page "https://github.com/Mimino666/langdetect") (synopsis "Language detection library") (description @@ -10625,17 +11227,17 @@ suitable for a wide range of protocols based on the ASN.1 specification.") (define-public python-pyasn1-modules (package (name "python-pyasn1-modules") - (version "0.2.2") + (version "0.2.8") (source (origin (method url-fetch) (uri (pypi-uri "pyasn1-modules" version)) (sha256 (base32 - "0ivm850yi7ajjbi8j115qpsj95bgxdsx48nbjzg0zip788c3xkx0")))) + "0pp6dcagd8c2c9qx3lahc1rdwlnmm0y0siqr5icjq2r32b3q8pwh")))) (build-system python-build-system) (propagated-inputs - `(("python-pyasn1" ,python-pyasn1))) + (list python-pyasn1)) (home-page "https://sourceforge.net/projects/pyasn1/") (synopsis "ASN.1 codec implementations") (description @@ -10646,9 +11248,9 @@ implementations of ASN.1-based codecs and protocols.") (define-public python2-pyasn1-modules (package-with-python2 python-pyasn1-modules)) -(define-public python2-ipaddress +(define-public python-ipaddress (package - (name "python2-ipaddress") + (name "python-ipaddress") (version "1.0.23") (source (origin (method url-fetch) @@ -10657,17 +11259,17 @@ implementations of ASN.1-based codecs and protocols.") (base32 "1qp743h30s04m3cg3yk3fycad930jv17q7dsslj4mfw0jlvf1y5p")))) (build-system python-build-system) - (arguments - `(#:python ,python-2)) (home-page "https://github.com/phihag/ipaddress") (synopsis "IP address manipulation library") (description "This package provides a fast, lightweight IPv4/IPv6 manipulation library in Python. This library is used to create, poke at, and manipulate IPv4 and - IPv6 addresses and networks. This is a port of the Python 3.3 ipaddress - module to older versions of Python.") + IPv6 addresses and networks.") (license license:psfl))) +(define-public python2-ipaddress + (package-with-python2 python-ipaddress)) + (define-public python-asn1tools (package (name "python-asn1tools") @@ -10680,10 +11282,8 @@ implementations of ASN.1-based codecs and protocols.") (base32 "1k88a1azmyvp2ab6qcf2i40dig5abhyn7cmlyhmwwh8kr3syvma0")))) (build-system python-build-system) (propagated-inputs - `(("python-bitstruct" ,python-bitstruct) - ("python-diskcache" ,python-diskcache) - ("python-prompt-toolkit" ,python-prompt-toolkit) - ("python-pyparsing" ,python-pyparsing))) + (list python-bitstruct python-diskcache python-prompt-toolkit + python-pyparsing)) (home-page "https://github.com/eerimoq/asn1tools") (synopsis "ASN.1 parsing, encoding and decoding") (description "This package provides ASN.1 parsing, encoding and decoding @@ -10786,12 +11386,11 @@ specification.") (add-installed-pythonpath inputs outputs) (invoke "pytest" "sasstests.py")))))) (native-inputs - `(("python-pytest" ,python-pytest) - ("python-werkzeug" ,python-werkzeug))) + (list python-pytest python-werkzeug)) (inputs - `(("libsass" ,libsass))) + (list libsass)) (propagated-inputs - `(("python-six" ,python-six))) + (list python-six)) (home-page "https://sass.github.io/libsass-python/") (synopsis "Straightforward binding of libsass for Python") (description @@ -10813,7 +11412,7 @@ is binding LibSass.") (build-system python-build-system) (arguments `(#:tests? #f)) ;circular dependency with python-aiohttp - (propagated-inputs `(("python-idna" ,python-idna))) + (propagated-inputs (list python-idna)) (home-page "https://github.com/aio-libs/idna-ssl") (synopsis "Patch @code{ssl.match_hostname} for Unicode(idna) domains support") (description "Patch @code{ssl.match_hostname} for Unicode(idna) @@ -10982,10 +11581,9 @@ applications from a list of lists of strings. It supports multi-line rows.") (replace 'check (lambda _ (invoke "pytest" "-vv")))))) (native-inputs - `(("python-mock" ,python-mock) - ("python-pytest" ,python-pytest))) + (list python-mock python-pytest)) (inputs - `(("libarchive" ,libarchive))) + (list libarchive)) (home-page "https://github.com/Changaco/python-libarchive-c") (synopsis "Python interface to libarchive") (description @@ -11059,8 +11657,7 @@ libmagic."))) (delete-file "lib/debian/tests/test_debfile.py") #t))))) (propagated-inputs - `(("python-six" ,python-six) - ("python-chardet" ,python-chardet))) + (list python-six python-chardet)) (synopsis "Debian package related modules") (description ;; XXX: Use @enumerate instead of @itemize to work around @@ -11094,10 +11691,9 @@ Debian-related files, such as: "06dpbsq61ja9r89wpa2pzdii47qh3xri9ajdrgn1awfl102znchb")))) (build-system python-build-system) (propagated-inputs - `(("python-pathlib" ,python-pathlib) - ("python-six" ,python-six))) + (list python-pathlib python-six)) (native-inputs - `(("python-pytest" ,python-pytest))) + (list python-pytest)) (home-page "http://py.errorist.io/json-spec") (synopsis "JSON Schema, JSON Pointer and JSON Reference for Python") @@ -11126,15 +11722,14 @@ JSON Reference and JSON Pointer.") (when tests? (invoke "pytest" "-vv" "-m" "not benchmark"))))))) (native-inputs - `(("python-colorama" ,python-colorama) - ("python-json-spec" ,python-json-spec) - ("python-jsonschema" ,python-jsonschema) - ("python-pylint" ,python-pylint) - ("python-pytest" ,python-pytest) - ("python-pytest-benchmark" - ,python-pytest-benchmark) - ("python-pytest-cache" ,python-pytest-cache) - ("python-validictory" ,python-validictory))) + (list python-colorama + python-json-spec + python-jsonschema + python-pylint + python-pytest + python-pytest-benchmark + python-pytest-cache + python-validictory)) (home-page "https://github.com/horejsek/python-fastjsonschema") (synopsis @@ -11167,16 +11762,14 @@ drafts 04, 06 and 07.") (when tests? (invoke "pytest" "-vv"))))))) (propagated-inputs - `(("python-ipython-genutils" ,python-ipython-genutils) - ("python-jsonschema" ,python-jsonschema) - ("python-jupyter-core" ,python-jupyter-core) - ("python-traitlets" ,python-traitlets))) + (list python-ipython-genutils python-jsonschema python-jupyter-core + python-traitlets)) (native-inputs - `(("python-pytest" ,python-pytest) - ("python-fastjsonschema" ,python-fastjsonschema) ; This is only active - ; when setting NBFORMAT_VALIDATOR="fastjsonschema", so include it for - ; testing only. - ("python-testpath" ,python-testpath))) + (list python-pytest + python-fastjsonschema ; This is only active + ; when setting NBFORMAT_VALIDATOR="fastjsonschema", so include it for + ; testing only. + python-testpath)) (home-page "https://jupyter.org") (synopsis "Jupyter Notebook format") (description "This package provides the reference implementation of the @@ -11195,13 +11788,9 @@ Jupyter Notebook format and Python APIs for working with notebooks.") (base32 "0jqa8f1ni10cyf4h7sjpf8mbqlcbkyvmsnli77qrxdcxvc7m4k1w")))) (build-system python-build-system) (propagated-inputs - `(("python-webencodings" ,python-webencodings) - ("python-six" ,python-six))) + (list python-webencodings python-six)) (native-inputs - `(("python-datrie" ,python-datrie) - ("python-genshi" ,python-genshi) - ("python-lxml" ,python-lxml) - ("python-pytest" ,python-pytest))) + (list python-datrie python-genshi python-lxml python-pytest)) (home-page "https://github.com/mozilla/bleach") (synopsis "Whitelist-based HTML-sanitizing tool") (description "Bleach is an easy whitelist-based HTML-sanitizing tool.") @@ -11243,10 +11832,15 @@ objects with some common interface. The most common examples are @code{console_scripts} entry points, which define shell commands by identifying a Python function to run. The @code{entrypoints} module contains functions to find and load entry points.") - (license license:expat))) + (license license:expat) + (properties `((python2-variant . ,(delay python2-entrypoints)))))) (define-public python2-entrypoints - (package-with-python2 python-entrypoints)) + (package + (inherit (package-with-python2 + (strip-python2-variant python-entrypoints))) + (propagated-inputs + (list python2-configparser)))) (define-public python-epc (package @@ -11261,9 +11855,9 @@ functions to find and load entry points.") "09bx1ln1bwa00917dndlgs4k589h8qx2x080xch5m58p92kjwkd1")))) (build-system python-build-system) (propagated-inputs - `(("python-sexpdata" ,python-sexpdata))) + (list python-sexpdata)) (native-inputs - `(("python-nose" ,python-nose))) + (list python-nose)) (home-page "https://github.com/tkf/python-epc") (synopsis "Remote procedure call (RPC) stack for Emacs Lisp and Python") (description @@ -11287,8 +11881,7 @@ from elisp.") ;; repository require online data. `(#:tests? #f)) (propagated-inputs - `(("python-requests" ,python-requests) - ("python-simplejson" ,python-simplejson))) + (list python-requests python-simplejson)) (home-page "https://github.com/MicroPyramid/forex-python") (synopsis "Foreign exchange rates and currency conversion") (description @@ -11373,8 +11966,6 @@ time.") (when tests? ;; Some tests invoke the installed nbconvert binary. (add-installed-pythonpath inputs outputs) - ;; Tries to write to this path. - (unsetenv "JUPYTER_CONFIG_DIR") ;; Tests depend on templates installed to output. (setenv "JUPYTER_PATH" (string-append @@ -11385,10 +11976,10 @@ time.") (setenv "HOME" "/tmp") (invoke "pytest" "-vv"))))))) (inputs - `(("pandoc" ,pandoc) - ;; XXX: Disabled, needs substitute*. - ;;("inkscape" ,inkscape) - )) + (list pandoc + ;; XXX: Disabled, needs substitute*. + ;;("inkscape" ,inkscape) + )) (native-inputs `(("python-ipykernel" ,python-ipykernel) ;; XXX: Disabled, not in guix. @@ -11411,6 +12002,7 @@ time.") texlive-latex-float texlive-fontspec texlive-latex-geometry + texlive-grffile texlive-hyperref texlive-latex-jknapltx texlive-latex-ms @@ -11421,27 +12013,28 @@ time.") texlive-latex-ucs texlive-lm texlive-mathpazo + texlive-stringenc texlive-tcolorbox texlive-titling texlive-tools texlive-xcolor texlive-zapfding))))) (propagated-inputs - `(("python-bleach" ,python-bleach) - ("python-defusedxml" ,python-defusedxml) - ("python-entrypoints" ,python-entrypoints) - ("python-jinja2" ,python-jinja2) - ("python-jupyter-core" ,python-jupyter-core) - ("python-mistune" ,python-mistune) - ("python-nbclient" ,python-nbclient) - ("python-nbformat" ,python-nbformat) - ("python-pandocfilters" ,python-pandocfilters) - ("python-pygments" ,python-pygments) - ("python-jupyterlab-pygments" ,python-jupyterlab-pygments) - ("python-testpath" ,python-testpath) - ("python-traitlets" ,python-traitlets) - ;; Required, even if [serve] is not used. - ("python-tornado" ,python-tornado-6))) + (list python-bleach + python-defusedxml + python-entrypoints + python-jinja2 + python-jupyter-core + python-mistune + python-nbclient + python-nbformat + python-pandocfilters + python-pygments + python-jupyterlab-pygments + python-testpath + python-traitlets + ;; Required, even if [serve] is not used. + python-tornado-6)) (home-page "https://jupyter.org") (synopsis "Converting Jupyter Notebooks") (description "The @code{nbconvert} tool, @{jupyter nbconvert}, converts @@ -11473,44 +12066,55 @@ convert an @code{.ipynb} notebook file into various static formats including: (arguments `(#:phases (modify-phases %standard-phases + (add-after 'unpack 'use-our-home-for-tests + (lambda _ + ;; The 'get_patch_env' function in this file reads: + ;; 'HOME': cls.home_dir + ;; but for some reason, that definition of HOME is not what the + ;; GLib/GIO trash mechanism honors, which would cause test + ;; failures. Instead, set 'HOME' here to an existing directory + ;; and let the tests honor it. + (substitute* "notebook/tests/launchnotebook.py" + (("'HOME': .*," all) + (string-append "# " all "\n"))) + (setenv "HOME" (getcwd)))) (replace 'check (lambda* (#:key tests? inputs outputs #:allow-other-keys) ;; These tests require a browser (delete-file-recursively "notebook/tests/selenium") (when tests? (add-installed-pythonpath inputs outputs) + ;; Interferes with test expectations. + (unsetenv "JUPYTER_CONFIG_PATH") ;; Some tests do not expect all files to be installed in the ;; same directory, but JUPYTER_PATH contains multiple entries. (unsetenv "JUPYTER_PATH") - ;; Some tests need HOME - (setenv "HOME" "/tmp") - (with-directory-excursion "/tmp" - (invoke "pytest" "-vv" - ;; TODO: This tests fails because nbconvert does not - ;; list "python" as a format. - "-k" "not test_list_formats")))))))) + (invoke "pytest" "-vv" + ;; TODO: This tests fails because nbconvert does not + ;; list "python" as a format. + "-k" "not test_list_formats"))))))) (propagated-inputs - `(("python-argon2-cffi" ,python-argon2-cffi) - ("python-ipykernel" ,python-ipykernel) - ("python-ipython-genutils" ,python-ipython-genutils) - ("python-jinja2" ,python-jinja2) - ("python-jupyter-client" ,python-jupyter-client) - ("python-jupyter-core" ,python-jupyter-core) - ("python-nbconvert" ,python-nbconvert) - ("python-nbformat" ,python-nbformat) - ("python-prometheus-client" ,python-prometheus-client) - ("python-pyzmq" ,python-pyzmq) - ("python-send2trash" ,python-send2trash) - ("python-terminado" ,python-terminado) - ("python-tornado" ,python-tornado-6) - ("python-traitlets" ,python-traitlets))) + (list python-argon2-cffi + python-ipykernel + python-ipython-genutils + python-jinja2 + python-jupyter-client + python-jupyter-core + python-nbconvert + python-nbformat + python-prometheus-client + python-pyzmq + python-send2trash + python-terminado + python-tornado-6 + python-traitlets)) (native-inputs - `(("python-coverage" ,python-coverage) - ("python-nbval" ,python-nbval) - ("python-pytest" ,python-pytest) - ("python-pytest-cov" ,python-pytest-cov) - ("python-requests" ,python-requests) - ("python-requests-unixsocket" ,python-requests-unixsocket))) + (list python-coverage + python-nbval + python-pytest + python-pytest-cov + python-requests + python-requests-unixsocket)) (home-page "https://jupyter.org/") (synopsis "Web-based notebook environment for interactive computing") (description @@ -11531,7 +12135,7 @@ interactive computing.") "1ismyaxbv9d56yqqqb8xl58hg0iq0bbyy014a53y1g3hfbc8g7q7")))) (build-system python-build-system) (propagated-inputs - `(("python-notebook" ,python-notebook))) + (list python-notebook)) (home-page "https://ipython.org") (synopsis "IPython HTML widgets for Jupyter") (description "This package provides interactive HTML widgets for Jupyter @@ -11551,16 +12155,14 @@ notebooks.") "1w217j8i53x14l7b05fk300k222zs9vkcjaa1rbrw3sk43k466lz")))) (build-system python-build-system) (propagated-inputs - `(("python-ipykernel" ,python-ipykernel) - ("python-ipython" ,python-ipython) - ("python-jupyterlab-widgets" ,python-jupyterlab-widgets) - ("python-nbformat" ,python-nbformat) - ("python-traitlets" ,python-traitlets) - ("python-widgetsnbextension" ,python-widgetsnbextension))) + (list python-ipykernel + python-ipython + python-jupyterlab-widgets + python-nbformat + python-traitlets + python-widgetsnbextension)) (native-inputs - `(("python-mock" ,python-mock) - ("python-pytest" ,python-pytest) - ("python-pytest-cov" ,python-pytest-cov))) + (list python-mock python-pytest python-pytest-cov)) (home-page "https://ipython.org") (synopsis "IPython HTML widgets for Jupyter") (description "Ipywidgets are interactive HTML widgets for Jupyter @@ -11572,22 +12174,20 @@ in the data.") (define-public python-jupyter-console (package (name "python-jupyter-console") - (version "6.1.0") + (version "6.4.0") (source (origin (method url-fetch) (uri (pypi-uri "jupyter_console" version)) (sha256 (base32 - "06s3kr5vx0l1y1b7fxb04dmrppscl7q69sl9yyfr0d057d1ssvkg")))) + "1iqrxhd8hvlyf8cqbc731ssnwm61wrycnbiczy5wsfahd3hlh8i4")))) (build-system python-build-system) (propagated-inputs - `(("python-ipykernel" ,python-ipykernel) - ("python-jupyter-client" ,python-jupyter-client) - ("python-prompt-toolkit" ,python-prompt-toolkit-2) - ("python-pygments" ,python-pygments))) + (list python-ipykernel python-jupyter-client python-prompt-toolkit-2 + python-pygments)) (native-inputs - `(("python-nose" ,python-nose))) + (list python-nose python-pytest)) (home-page "https://jupyter.org") (synopsis "Jupyter terminal console") (description "This package provides a terminal-based console frontend for @@ -11646,10 +12246,9 @@ Jupyter kernels such as IJulia and IRKernel.") (setenv "QT_QPA_PLATFORM" "offscreen") #t))))) (propagated-inputs - `(("python-ipykernel" ,python-ipykernel) - ("python-ipython" ,python-ipython))) + (list python-ipykernel python-ipython python-pyqt)) (native-inputs - `(("python-pytest" ,python-pytest))) + (list python-pytest)) (home-page "https://jupyter.org") (synopsis "Jupyter Qt console") (description "This package provides a Qt-based console for Jupyter with @@ -11686,10 +12285,9 @@ support for rich media output.") "six>=1.11.0")) #t))))) (propagated-inputs - `(("python-editorconfig" ,python-editorconfig) - ("python-six" ,python-six))) + (list python-editorconfig python-six)) (native-inputs - `(("python-pytest" ,python-pytest))) + (list python-pytest)) (synopsis "JavaScript unobfuscator and beautifier") (description "Beautify, unpack or deobfuscate JavaScript, leveraging popular online obfuscators.") @@ -11709,12 +12307,12 @@ popular online obfuscators.") (build-system python-build-system) (arguments '(#:tests? #f)) ; there are none. (propagated-inputs - `(("python-ipykernel" ,python-ipykernel) - ("python-ipywidgets" ,python-ipywidgets) - ("python-jupyter-console" ,python-jupyter-console) - ("python-nbconvert" ,python-nbconvert) - ("python-notebook" ,python-notebook) - ("python-qtconsole" ,python-qtconsole))) + (list python-ipykernel + python-ipywidgets + python-jupyter-console + python-nbconvert + python-notebook + python-qtconsole)) (home-page "https://jupyter.org") (synopsis "Web application for interactive documents") (description @@ -11736,9 +12334,7 @@ simulation, statistical modeling, machine learning and much more.") (base32 "1bpalpia6r5x1kknbk11p1fzph56fmmnp405ds8icksd3knr5aw4")))) (native-inputs - `(("python-hypothesis" ,python-hypothesis) - ("python-pytest" ,python-pytest) - ("python-pytest-runner" ,python-pytest-runner))) + (list python-hypothesis python-pytest python-pytest-runner)) (build-system python-build-system) ;; XXX: Incompatible with Pytest 4: <https://github.com/chardet/chardet/issues/173>. (arguments `(#:tests? #f)) @@ -11752,6 +12348,27 @@ automatically detect a wide range of file encodings.") (define-public python2-chardet (package-with-python2 python-chardet)) +(define-public python-charset-normalizer + (package + (name "python-charset-normalizer") + (version "2.0.5") + (source + (origin + (method url-fetch) + (uri (pypi-uri "charset-normalizer" version)) + (sha256 + (base32 "0rr3iv2xw4rz5ijnfqk229fw85cq6p6rhqqsilm0ldzncblfg63h")))) + (build-system python-build-system) + (native-inputs + (list python-pytest)) + (home-page "https://github.com/ousret/charset_normalizer") + (synopsis "Universal Charset Detector, alternative to Chardet") + (description "This library helps you read text from an unknown charset +encoding. Motivated by @code{chardet}, it tries to resolve the issue by +taking a new approach. All IANA character set names for which the Python core +library provides codecs are supported.") + (license license:expat))) + (define-public python-docopt (package (name "python-docopt") @@ -11770,7 +12387,7 @@ automatically detect a wide range of file encodings.") (patches (search-patches "python-docopt-pytest6-compat.patch")))) (build-system python-build-system) (native-inputs - `(("python-pytest" ,python-pytest))) + (list python-pytest)) (arguments `(#:phases (modify-phases %standard-phases @@ -11815,7 +12432,7 @@ programmatically with command-line parsers like @code{getopt} and #t)))) #:tests? #f)) ; no test suite (propagated-inputs - `(("dialog" ,dialog))) + (list dialog)) (home-page "http://pythondialog.sourceforge.net/") (synopsis "Python interface to the UNIX dialog utility") (description "A Python wrapper for the dialog utility. Its purpose is to @@ -11851,7 +12468,7 @@ This allows one to make simple text-mode user interfaces on Unix-like systems") (patches (search-patches "python-configobj-setuptools.patch")))) (build-system python-build-system) (propagated-inputs - `(("python-six" ,python-six))) + (list python-six)) (synopsis "Config file reading, writing and validation") (description "ConfigObj is a simple but powerful config file reader and writer: an ini file round tripper. Its main feature is that it is very easy to @@ -11875,7 +12492,7 @@ config files.") "1p1pzpf5qpf80bfxsx1mbw9blyhhypjvhl3i60pbmhfmhvlpplgd")))) (build-system python-build-system) (native-inputs - `(("python-pyyaml" ,python-pyyaml))) + (list python-pyyaml)) (arguments `(#:phases (modify-phases %standard-phases @@ -11978,7 +12595,7 @@ the standard library.") (replace 'check (lambda _ (invoke "pytest" "tests.py")))))) (native-inputs - `(("python-pytest" ,python-pytest))) + (list python-pytest)) (home-page "https://github.com/foutaise/texttable/") (synopsis "Python module for creating simple ASCII tables") (description "Texttable is a Python module for creating simple ASCII @@ -12009,6 +12626,17 @@ for atomic file system operations.") (define-public python2-atomicwrites (package-with-python2 python-atomicwrites)) +(define-public python-atomicwrites-1.4 + (package + (inherit python-atomicwrites) + (version "1.4.0") + (source (origin + (method url-fetch) + (uri (pypi-uri "atomicwrites" version)) + (sha256 + (base32 + "0yla2svfhfqrcj8qbyqzx7wi4jy0dwcxvlkg0k3zjd54s5m3jw5f")))))) + (define-public python-qstylizer (package (name "python-qstylizer") @@ -12031,16 +12659,15 @@ for atomic file system operations.") (lambda _ (setenv "PBR_VERSION" "3.0.1")))))) (native-inputs - `(("python-pbr" ,python-pbr) - ("python-pytest" ,python-pytest) - ("python-pytest-catchlog" ,python-pytest-catchlog) - ("python-pytest-cov" ,python-pytest-cov) - ("python-pytest-mock" ,python-pytest-mock) - ("python-pytest-runner" ,python-pytest-runner) - ("python-pytest-xdist" ,python-pytest-xdist))) + (list python-pbr + python-pytest + python-pytest-catchlog + python-pytest-cov + python-pytest-mock + python-pytest-runner + python-pytest-xdist)) (propagated-inputs - `(("python-inflection" ,python-inflection) - ("python-tinycss" ,python-tinycss))) + (list python-inflection python-tinycss)) (home-page "https://github.com/blambright/qstylizer") (synopsis "Qt stylesheet generation utility for PyQt/PySide") (description "@code{qstylizer} is a Python package designed to help with @@ -12050,16 +12677,16 @@ the construction of PyQt/PySide stylesheets.") (define-public python-click-threading (package (name "python-click-threading") - (version "0.4.4") + (version "0.5.0") (source (origin (method url-fetch) (uri (pypi-uri "click-threading" version)) (sha256 (base32 - "1rsxc2fbkxlhwhlmxsdjzq3spn284l6rvjfcz9mbb17ibgdgmc5j")))) + "0f9lmxwcq0y9lb8w0whbni7gwy12gbv74h1igh85qn9aq0iydkxd")))) (build-system python-build-system) (propagated-inputs - `(("python-click" ,python-click))) + (list python-click)) (synopsis "Utilities for multithreading in Click") (description "This package provides utilities for multithreading in Click applications.") @@ -12078,7 +12705,7 @@ applications.") "091i03bhxyzsdbc6kilxhivfda2f8ymz3b33xa6cj5kbzjiirz8n")))) (build-system python-build-system) (propagated-inputs - `(("python-click" ,python-click))) + (list python-click)) (synopsis "Logging for click applications") (description "This package provides a Python library for logging Click applications.") @@ -12099,7 +12726,7 @@ applications.") (arguments `(#:tests? #f)) ; no target (propagated-inputs - `(("python-click" ,python-click))) + (list python-click)) (synopsis "Extends click.Group") (description "This package extends click.Group to invoke a command without explicit subcommand name.") @@ -12128,13 +12755,13 @@ explicit subcommand name.") (invoke "pytest")) #t))))) (native-inputs - `(("python-coverage" ,python-coverage) - ("python-freezegun" ,python-freezegun) - ("python-pretend" ,python-pretend) - ("python-pytest" ,python-pytest) - ("python-pytest-asyncio" ,python-pytest-asyncio) - ("python-simplejson" ,python-simplejson) - ("python-twisted" ,python-twisted))) + (list python-coverage + python-freezegun + python-pretend + python-pytest + python-pytest-asyncio + python-simplejson + python-twisted)) (home-page "https://www.structlog.org/") (synopsis "Structured Logging for Python") (description "@code{structlog} changes logging in Python by adding structure @@ -12153,8 +12780,7 @@ to your log entries.") "1xhak74yj3lqflvpijg15rnkklrigvsp5q7s4as4h6a157d8q8ip")))) (build-system python-build-system) (native-inputs - `(("python-pytest" ,python-pytest) - ("python-setuptools-scm" ,python-setuptools-scm))) + (list python-pytest python-setuptools-scm)) (synopsis "Namespace control and lazy-import mechanism") (description "With apipkg you can control the exported namespace of a Python package and greatly reduce the number of imports for your users. It is a small @@ -12188,8 +12814,7 @@ pure Python module that works on virtually all Python versions.") (add-installed-pythonpath inputs outputs) (invoke "pytest" "-vv"))))))) (native-inputs - `(("python-pytest" ,python-pytest) - ("python-setuptools-scm" ,python-setuptools-scm))) + (list python-pytest python-setuptools-scm)) (synopsis "Rapid multi-Python deployment") (description "Execnet provides a share-nothing model with channel-send/receive communication for distributing execution across many @@ -12218,8 +12843,7 @@ minimal and fast API targeting the following uses: "19574j3jwssm2dkqykih4568xqfgjsa3hcd79yl5s2vfys3qvh8g")))) (build-system python-build-system) (propagated-inputs - `(("python-dateutil" ,python-dateutil) - ("python-pytz" ,python-pytz))) + (list python-dateutil python-pytz)) (synopsis "Python library for parsing iCalendar files") (description "The icalendar package is a parser/generator of iCalendar files for use with Python.") @@ -12263,9 +12887,9 @@ files for use with Python.") (replace 'check (lambda _ (invoke "py.test" "-v")))))) (native-inputs - `(("python-pytest" ,python-pytest))) + (list python-pytest)) (propagated-inputs - `(("python-args" ,python-args))) + (list python-args)) (home-page "https://github.com/kennethreitz/clint") (synopsis "Command-line interface tools") (description @@ -12289,7 +12913,7 @@ output, progress bar display, and pipes.") "1j81nddvnb145x4p81bnfpyai6g26i2dc1633ycsk025bb18m01a")))) (build-system python-build-system) (propagated-inputs - `(("python-appdirs" ,python-appdirs))) + (list python-appdirs)) (home-page "https://github.com/alex/rply") (synopsis "Parser generator for Python") (description @@ -12324,14 +12948,9 @@ with a new public API, and RPython support.") (setenv "HOME" "/tmp") (invoke "nosetests")))))) (native-inputs - `(("python-coverage" ,python-coverage) - ("python-nose" ,python-nose))) + (list python-coverage python-nose)) (propagated-inputs - `(("python-astor" ,python-astor) - ("python-colorama" ,python-colorama) - ("python-rply" ,python-rply) - ("python-funcparserlib" - ,python-funcparserlib))) + (list python-astor python-colorama python-rply python-funcparserlib)) (home-page "http://hylang.org/") (synopsis "Lisp frontend to Python") (description @@ -12494,18 +13113,17 @@ concurrent.futures package from Python 3.2") "0b2v3mim90rmfvixkaniz2qrs650sk230rzgd5zhcjfldmlqgxpc")))) (build-system python-build-system) (propagated-inputs - `(("python-six" ,python-six) - ("python-utils" ,python-utils))) + (list python-six python-utils)) (native-inputs - `(("python-flake8" ,python-flake8) - ("python-freezegun" ,python-freezegun) - ("python-pycodestyle" ,python-pycodestyle) - ("python-pytest" ,python-pytest) - ("python-pytest-cache" ,python-pytest-cache) - ("python-pytest-cov" ,python-pytest-cov) - ("python-pytest-flakes" ,python-pytest-flakes) - ("python-pytest-pep8" ,python-pytest-pep8) - ("python-sphinx" ,python-sphinx))) + (list python-flake8 + python-freezegun + python-pycodestyle + python-pytest + python-pytest-cache + python-pytest-cov + python-pytest-flakes + python-pytest-pep8 + python-sphinx)) (home-page "https://github.com/WoLpH/python-progressbar") (synopsis "Text progress bar library for Python") (description @@ -12555,64 +13173,86 @@ text.") (define-public python2-colorama (package-with-python2 python-colorama)) +;; awscli and botocore do not accept version 0.4.4 +(define-public python-colorama-for-awscli + (package + (inherit python-colorama) + (version "0.4.3") + (source + (origin + (method url-fetch) + (uri (pypi-uri "colorama" version)) + (sha256 + (base32 "189n8hpijy14jfan4ha9f5n06mnl33cxz7ay92wjqgkr639s0vg9")))))) + (define-public python-moto (package (name "python-moto") - ;; XXX: Use a pre-release for compatibility with latest botocore & friends. - (version "1.3.16.dev134") + (version "2.2.12") (source (origin (method url-fetch) (uri (pypi-uri "moto" version)) (sha256 (base32 - "1pix0c7zszjwzfy88n1rpih9vkdm25nqcvz93z850xvgwb4v81bd")))) + "0pvay0jp119lzzwf5qj5h6311271yq0w2i6344ds20grpf6g6gz8")))) (build-system python-build-system) (arguments - `(#:phases (modify-phases %standard-phases - (add-after 'unpack 'patch-hardcoded-executable-names - (lambda _ - (substitute* "moto/batch/models.py" - (("/bin/sh") - (which "sh"))) - (substitute* (find-files "tests" "\\.py$") - (("#!/bin/bash") - (string-append "#!" (which "bash")))) - #t)) - (replace 'check - (lambda _ - (invoke "pytest" "-vv" "-m" "not network" - ;; These tests require Docker. - "-k" "not test_terminate_job \ -and not test_invoke_function_from_sqs_exception")))))) + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'patch-hardcoded-executable-names + (lambda* (#:key inputs #:allow-other-keys) + (let ((bash-exec (search-input-file inputs "/bin/sh"))) + (substitute* "moto/batch/models.py" + (("/bin/sh") bash-exec)) + (substitute* (find-files "tests" "\\.py$") + (("#!/bin/bash") (string-append "#!" bash-exec)))))) + (replace 'check + (lambda* (#:key inputs outputs tests? #:allow-other-keys) + (when tests? + (add-installed-pythonpath inputs outputs) + (invoke "pytest" "-vv" "-m" "not network" "-k" + (string-append + ;; These tests require Docker. + "not test_terminate_job" + " and not test_invoke_function_from_sqs_exception" + " and not test_rotate_secret_lambda_invocations" + ;; These tests also require the network. + " and not test_put_record_batch_http_destination" + " and not test_put_record_http_destination" + " and not test_dependencies" + " and not test_cancel_running_job" + " and not test_container_overrides")))))))) (native-inputs - `(("python-flask" ,python-flask) - ("python-flask-cors" ,python-flask-cors) - ("python-freezegun" ,python-freezegun) - ("python-parameterized" ,python-parameterized) - ("python-pytest" ,python-pytest) - ("python-sure" ,python-sure))) + (list python-flask + python-flask-cors + python-freezegun + python-parameterized + python-pytest + python-sure)) + (inputs + `(("bash" ,bash-minimal))) (propagated-inputs - `(("python-aws-xray-sdk" ,python-aws-xray-sdk) - ("python-boto" ,python-boto) - ("python-boto3" ,python-boto3) - ("python-botocore" ,python-botocore) - ("python-cfn-lint" ,python-cfn-lint) - ("python-cryptography" ,python-cryptography) - ("python-dateutil" ,python-dateutil) - ("python-docker" ,python-docker) - ("python-idna" ,python-idna) - ("python-jinja2" ,python-jinja2) - ("python-jose" ,python-jose) - ("python-jsondiff" ,python-jsondiff) - ("python-mock" ,python-mock) - ("python-pytz" ,python-pytz) - ("python-pyyaml" ,python-pyyaml) - ("python-requests" ,python-requests) - ("python-responses" ,python-responses) - ("python-six" ,python-six) - ("python-sshpubkeys" ,python-sshpubkeys) - ("python-werkzeug" ,python-werkzeug) - ("python-xmltodict" ,python-xmltodict))) + (list python-aws-xray-sdk + python-boto + python-boto3 + python-botocore + python-cfn-lint + python-cryptography + python-dateutil + python-docker + python-idna + python-jinja2 + python-jose + python-jsondiff + python-mock + python-pytz + python-pyyaml + python-requests + python-responses + python-six + python-sshpubkeys + python-werkzeug + python-xmltodict)) (home-page "https://github.com/spulec/moto") (synopsis "Mock out the boto library") (description @@ -12633,7 +13273,7 @@ and not test_invoke_function_from_sqs_exception")))))) "1dcxvszbikgzh99ybdc7jq0zb9wspy2ds8z9mjsqiyv3q884xpr5")))) (build-system python-build-system) (propagated-inputs - `(("python-pyasn1" ,python-pyasn1))) + (list python-pyasn1)) (synopsis "Pure-Python RSA implementation") (description "Python-RSA is a pure-Python RSA implementation. It supports encryption and decryption, signing and verifying signatures, and key @@ -12658,7 +13298,7 @@ library as well as on the command line.") "1c35qyhvy27q9ih9n899f3h4sdnpgq027dbiilly2qb5cvgarchm")))) (build-system python-build-system) (native-inputs - `(("python-setuptools-scm" ,python-setuptools-scm))) + (list python-setuptools-scm)) (synopsis "Plugin and hook calling mechanism for Python") (description "Pluggy is an extraction of the plugin manager as used by Pytest but stripped of Pytest specific details.") @@ -12704,7 +13344,7 @@ Pytest but stripped of Pytest specific details.") (native-inputs ;; XXX: Not actually used since there are no tests but required for ;; build. - `(("python-pytest" ,python-pytest))) + (list python-pytest)) (home-page "https://plumbum.readthedocs.io") (synopsis "Python shell combinators library") (description @@ -12725,9 +13365,9 @@ code.") "1zqqjlgmhgkpzg9ss5ki8wamxl83xn51fs6gn2a8cxsx9vkbvcvj")))) (build-system python-build-system) (propagated-inputs - `(("python-packaging" ,python-packaging))) + (list python-packaging)) (native-inputs - `(("python-unittest2" ,python-unittest2))) + (list python-unittest2)) (home-page "https://deprecation.readthedocs.io/") (synopsis "Python library to handle automated deprecations") (description @@ -12755,17 +13395,17 @@ that deprecated code is eventually removed.") ;; pytest>=2.8.0 for installation. '(#:tests? #f)) (propagated-inputs - `(("python-filelock" ,python-filelock) - ("python-packaging" ,python-packaging) - ("python-pluggy" ,python-pluggy) - ("python-py" ,python-py) - ("python-six" ,python-six) - ("python-toml" ,python-toml) - ("python-virtualenv" ,python-virtualenv))) + (list python-filelock + python-packaging + python-pluggy + python-py + python-six + python-toml + python-virtualenv)) (native-inputs - `(; FIXME: Missing: ("python-pytest-timeout" ,python-pytest-timeout) - ("python-pytest" ,python-pytest) ; >= 2.3.5 - ("python-setuptools-scm" ,python-setuptools-scm))) + (list ; FIXME: Missing: ("python-pytest-timeout" ,python-pytest-timeout) + python-pytest ; >= 2.3.5 + python-setuptools-scm)) (home-page "https://tox.readthedocs.io") (synopsis "Virtualenv-based automation of test activities") (description "Tox is a generic virtualenv management and test command line @@ -12788,7 +13428,7 @@ servers.") "0k0765x1mybcrzajh3hiqkl8sy9hs0bmn4900frxy0j3ykvaxqmx")))) (build-system python-build-system) (native-inputs - `(("python-nose" ,python-nose))) + (list python-nose)) (synopsis "JSON Matching Expressions") (description "JMESPath (pronounced “james path”) is a Python library that allows one to declaratively specify how to extract elements from a JSON @@ -12811,10 +13451,9 @@ document.") (base32 "1kn1w4dp9mrsq6kzmhf4pjmx3wicxc3dw1mwa924q8g48g77lr4c")))) (build-system python-build-system) (native-inputs - `(("cmake" ,cmake) - ("python-cython" ,python-cython))) + (list cmake python-cython)) (inputs - `(("symengine" ,symengine))) + (list symengine)) (home-page "https://github.com/symengine/symengine.py") (synopsis "Python library providing wrappers to SymEngine") (description @@ -12838,10 +13477,9 @@ manipulation library.") ;; fail. (arguments '(#:tests? #false)) (propagated-inputs - `(("python-future" ,python-future))) + (list python-future)) (native-inputs - `(("python-nose" ,python-nose) - ("python-numpy" ,python-numpy))) + (list python-nose python-numpy)) (home-page "https://uncertainties-python-package.readthedocs.io/") (synopsis "Calculations with uncertainties") (description @@ -12863,7 +13501,7 @@ expression.") "0f54sd4w1a72ij1bcxs2x7dk9xf8bzclawijf1z18bqx9f96l2gm")))) (build-system python-build-system) (native-inputs - `(("python-pytest" ,python-pytest))) + (list python-pytest)) (home-page "https://github.com/newville/asteval") (synopsis "Minimalistic evaluator of Python expressions") (description @@ -12884,12 +13522,9 @@ using the @code{ast} module") "0iab33jjb60f8kn0k0cqb0vjp1mdskks2n3kpn97zkw5cvjhq2b7")))) (build-system python-build-system) (propagated-inputs - `(("python-asteval" ,python-asteval) - ("python-numpy" ,python-numpy) - ("python-scipy" ,python-scipy) - ("python-uncertainties" ,python-uncertainties))) + (list python-asteval python-numpy python-scipy python-uncertainties)) (native-inputs - `(("python-pytest" ,python-pytest))) + (list python-pytest)) (home-page "https://lmfit.github.io/lmfit-py/") (synopsis "Least-Squares minimization with bounds and constraints") (description @@ -12918,8 +13553,7 @@ enhancements to optimization and data fitting problems.") ;; subset of this library, so keep it around for now, but disable tests. '(#:tests? #f)) (propagated-inputs - `(("python-paramiko" ,python-paramiko) - ("python-requests" ,python-requests))) + (list python-paramiko python-requests)) (home-page "https://github.com/boto/boto") (synopsis "Python interfaces for Amazon Web Services") (description @@ -12934,22 +13568,20 @@ This software is unmaintained, and new projects should use @code{boto3} instead. ;; are compatible. (package (name "python-botocore") - (version "1.19.22") + (version "1.22.11") (source (origin (method url-fetch) (uri (pypi-uri "botocore" version)) (sha256 (base32 - "0iim86x7c6hqmvd61ygz6x6x9glnsfbnyzv2y67qjdcdx8jpkmw7")))) + "1z7g2scyzvfq4yj9b4w911k7802ry1v6lqfnwq12l0ak7ywmsvrh")))) (build-system python-build-system) (arguments ;; FIXME: Many tests are failing. '(#:tests? #f)) (propagated-inputs - `(("python-dateutil" ,python-dateutil) - ("python-jmespath" ,python-jmespath) - ("python-urllib3" ,python-urllib3))) + (list python-dateutil python-jmespath python-urllib3)) (home-page "https://github.com/boto/botocore") (synopsis "Low-level interface to AWS") (description "Botocore is a Python library that provides a low-level @@ -12962,7 +13594,7 @@ interface to the Amazon Web Services (AWS) API.") (define-public python-boto3 (package (name "python-boto3") - (version "1.16.22") + (version "1.19.11") (home-page "https://github.com/boto/boto3") (source (origin (method git-fetch) @@ -12970,23 +13602,19 @@ interface to the Amazon Web Services (AWS) API.") (file-name (git-file-name name version)) (sha256 (base32 - "0h20hgl4yfl58g75qhb6ibrdmzn47md3srgar7hask14cjmfhfy3")))) + "1wv0ci2z5ywvm63dh4mp64vqyyvkm4qxc8dxv8ncrqiiphpgr9aq")))) (arguments `(#:phases (modify-phases %standard-phases (add-after 'unpack 'delete-network-tests ;; Deleting integration tests because they are trying to connect to AWS. - (lambda _ - (delete-file-recursively "tests/integration") - #t))))) + (lambda _ + (delete-file-recursively "tests/integration")))))) (build-system python-build-system) (native-inputs - `(("python-nose" ,python-nose) - ("python-mock" ,python-mock))) + (list python-nose python-mock python-pytest)) (propagated-inputs - `(("python-botocore" ,python-botocore) - ("python-jmespath" ,python-jmespath) - ("python-s3transfer" ,python-s3transfer))) + (list python-botocore python-jmespath python-s3transfer)) (synopsis "AWS SDK for Python") (description "Boto3 is a Python library for writing programs that interact with @@ -13039,7 +13667,7 @@ in pure Python.") #t)))) #:tests? #f)) ; no tests provided (propagated-inputs - `(("python-six" ,python-six))) + (list python-six)) (inputs `(("xdotool" ,xdotool) ("libX11" ,libx11))) @@ -13074,10 +13702,9 @@ python-xdo for newer bindings.)") (format #t "test suite not run~%")) #t))))) (propagated-inputs - `(("python-markupsafe" ,python-markupsafe))) + (list python-markupsafe)) (native-inputs - `(("python-mock" ,python-mock) - ("python-nose" ,python-nose))) + (list python-mock python-nose)) (home-page "https://www.makotemplates.org/") (synopsis "Templating language for Python") (description "Mako is a templating language for Python that compiles @@ -13122,7 +13749,7 @@ server with very acceptable performance.") "11yfkzyplizdgndy34vyd5qlmr1n5mxis3a3svxmx8fnccdvknxc")))) (build-system python-build-system) (native-inputs - `(("python-pytest" ,python-pytest))) + (list python-pytest)) (home-page "https://github.com/pydanny/whichcraft") (synopsis "Cross-platform cross-python shutil.which functionality") (description @@ -13142,22 +13769,19 @@ designed to work across multiple versions of Python.") (base32 "0mx49whhwcxmvcak27zr7p7ndzkn3w7psfd7fzh3n91fi1r4v6kb")))) (build-system python-build-system) (native-inputs - `(("python-freezegun" ,python-freezegun) - ("python-pytest" ,python-pytest) - ("python-pytest-catchlog" ,python-pytest-catchlog) - ("python-pytest-cov" ,python-pytest-cov) - ("python-pytest-mock" ,python-pytest-mock))) + (list python-freezegun python-pytest python-pytest-catchlog + python-pytest-cov python-pytest-mock)) (propagated-inputs - `(("python-binaryornot" ,python-binaryornot) - ("python-click" ,python-click) - ("python-future" ,python-future) - ("python-jinja2" ,python-jinja2) - ("python-jinja2-time" ,python-jinja2-time) - ("python-poyo" ,python-poyo) - ("python-requests" ,python-requests) - ("python-slugify" ,python-slugify) - ("python-text-unidecode" ,python-text-unidecode) - ("python-whichcraft" ,python-whichcraft))) + (list python-binaryornot + python-click + python-future + python-jinja2 + python-jinja2-time + python-poyo + python-requests + python-slugify + python-text-unidecode + python-whichcraft)) (home-page "https://github.com/cookiecutter/cookiecutter") (synopsis "Command-line utility that creates projects from project templates") @@ -13180,11 +13804,9 @@ project template.") "1xia20wm0vx5dk85kcwgh13bylz8qh47ffjxssd2586r60xi783a")))) (build-system python-build-system) (native-inputs - `(("python-webob" ,python-webob) - ("python-webtest" ,python-webtest))) + (list python-webob python-webtest)) (propagated-inputs - `(("python-lxml" ,python-lxml) - ("python-cssselect" ,python-cssselect))) + (list python-lxml python-cssselect)) (home-page "https://github.com/gawel/pyquery") (synopsis "Make jQuery-like queries on xml documents") (description "pyquery allows you to make jQuery queries on xml documents. @@ -13243,11 +13865,9 @@ and provides a uniform API regardless of which JSON implementation is used.") "1sv600dgqwpimr6i1g59y9hpn50mc236gdqkr7zin13kvlpx0g87")))) (build-system python-build-system) (native-inputs - `(("python-case" ,python-case) - ("python-pytest-sugar" ,python-pytest-sugar) - ("python-mock" ,python-mock))) + (list python-case python-pytest-sugar python-mock)) (propagated-inputs - `(("python-vine" ,python-vine))) + (list python-vine)) (home-page "https://github.com/celery/py-amqp") (synopsis "Low-level AMQP client for Python (fork of amqplib)") @@ -13281,8 +13901,7 @@ alternative when librabbitmq is not available.") "0jd9864k3csc06kipiwzjlk9mq4054s8kzk5q1cfnxj8572s4iv4")))) (build-system python-build-system) (propagated-inputs - `(("python-six" ,python-six) - ("python-twisted" ,python-twisted))) + (list python-six python-twisted)) (home-page "https://github.com/txamqp/txamqp") (synopsis "Communicate with AMQP peers and brokers using Twisted") (description @@ -13294,9 +13913,6 @@ also includes support for using Thrift RPC over AMQP in Twisted applications.") (license license:asl2.0))) -(define-public python2-txamqp - (package-with-python2 python-txamqp)) - (define-public python-kombu (package (name "python-kombu") @@ -13310,15 +13926,10 @@ applications.") "15k8f7mzqr049sg9vi48m19vjykviafk3f0p5xzgw9by0x0kyxjj")))) (build-system python-build-system) (native-inputs - `(("python-mock" ,python-mock) - ("python-case" ,python-case) - ("python-pyro4" ,python-pyro4) - ("python-pytest-sugar" ,python-pytest-sugar) - ("python-pytz" ,python-pytz))) + (list python-mock python-case python-pyro4 python-pytest-sugar + python-pytz)) (propagated-inputs - `(("python-anyjson" ,python-anyjson) - ("python-amqp" ,python-amqp) - ("python-redis" ,python-redis))) + (list python-anyjson python-amqp python-redis)) (home-page "https://kombu.readthedocs.io") (synopsis "Message passing library for Python") (description "The aim of Kombu is to make messaging in Python as easy as @@ -13354,8 +13965,7 @@ RabbitMQ messaging server is the most popular implementation.") "03msmapj3s5zgqk87d646mafz7a01h5bm2wijalgpi0s80ks5na2")))) (build-system python-build-system) (native-inputs - `(("python-case" ,python-case) - ("python-pytest" ,python-pytest))) + (list python-case python-pytest)) (home-page "https://github.com/celery/billiard") (synopsis "Python multiprocessing fork with improvements and bugfixes") @@ -13400,12 +14010,9 @@ Python 2.4 and 2.5, and will draw its fixes/improvements from python-trunk.") "pytest>=3.0")) #t))))) (native-inputs - `(("python-case" ,python-case) - ("python-pytest" ,python-pytest))) + (list python-case python-pytest)) (propagated-inputs - `(("python-pytz" ,python-pytz) - ("python-billiard" ,python-billiard) - ("python-kombu" ,python-kombu))) + (list python-pytz python-billiard python-kombu)) (home-page "https://celeryproject.org") (synopsis "Distributed Task Queue") (description "Celery is an asynchronous task queue/job queue based on @@ -13501,27 +14108,27 @@ ISO 8859, etc.).") (lambda* (#:key inputs outputs #:allow-other-keys) (add-installed-pythonpath inputs outputs) (invoke "pytest" "-vv" "-k" - ;; These tests try to download online data. - (string-append "not test_PolyLineROI" - " and not test_getArrayRegion_axisorder" - " and not test_getArrayRegion" - " and not test_PlotCurveItem" - " and not test_NonUniformImage_colormap" - " and not test_NonUniformImage_lut" - " and not test_ImageItem_axisorder" - " and not test_ImageItem"))))))) + (string-append + ;; These tests try to download online data. + "not test_PolyLineROI" + " and not test_getArrayRegion_axisorder" + " and not test_getArrayRegion" + " and not test_PlotCurveItem" + " and not test_NonUniformImage_colormap" + " and not test_NonUniformImage_lut" + " and not test_ImageItem_axisorder" + " and not test_ImageItem" + ;; The test_reload test fails and suggests adding + ;; "--assert=plain" to the pytest command, but it + ;; doesn't solve the failure. + " and not test_reload"))))))) (native-inputs - `(("python-pytest" ,python-pytest) - ("python-pytest-cov" ,python-pytest-cov) - ("python-pytest-xdist" ,python-pytest-xdist))) + (list python-pytest python-pytest-cov python-pytest-xdist)) (inputs - `(("qtbase" ,qtbase-5))) + (list qtbase-5)) (propagated-inputs - `(("python-h5py" ,python-h5py) - ("python-numpy" ,python-numpy) - ("python-pyopengl" ,python-pyopengl) - ("python-scipy" ,python-scipy) - ("python-pyqt" ,python-pyqt))) + (list python-h5py python-numpy python-pyopengl python-scipy + python-pyqt)) (home-page "http://www.pyqtgraph.org") (synopsis "Scientific graphics and GUI library for Python") (description @@ -13554,10 +14161,9 @@ applications.") (setenv "QT_QPA_PLATFORM" "offscreen") #t))))) (native-inputs - `(("python-pytest" ,python-pytest) - ("python-pytest-runner" ,python-pytest-runner))) + (list python-pytest python-pytest-runner)) (propagated-inputs - `(("python-pyqt" ,python-pyqt))) + (list python-pyqt)) (home-page "https://github.com/CabbageDevelopment/qasync") (synopsis "Implementation of the PEP 3156 Event-Loop with Qt") (description @@ -13626,8 +14232,7 @@ main process so that they are handled correctly.") '(;; The test suite relies on some non-portable Windows interfaces. #:tests? #f)) (propagated-inputs - `(("python-dateutil" ,python-dateutil) - ("python-pyicu" ,python-pyicu))) + (list python-dateutil python-pyicu)) (synopsis "Parse and generate vCard and vCalendar files") (description "Vobject is intended to be a full featured Python package for parsing and generating vCard and vCalendar files. Currently, iCalendar files @@ -13651,7 +14256,7 @@ way.") (base32 "00yvj8bxmhhhhd74v7j0x673is7vizmxwgb3dd5xmnkr74ybyi7w")))) (build-system python-build-system) - (native-inputs `(("python-pytest" ,python-pytest-6))) + (native-inputs (list python-pytest-6)) (home-page "https://software.clapper.org/munkres/") (synopsis "Implementation of the Munkres algorithm") (description "The Munkres module provides an implementation of the Munkres @@ -13659,9 +14264,6 @@ algorithm (also called the Hungarian algorithm or the Kuhn-Munkres algorithm), useful for solving the Assignment Problem.") (license license:bsd-3))) -(define-public python2-munkres - (package-with-python2 python-munkres)) - (define-public python-whoosh (package (name "python-whoosh") @@ -13676,7 +14278,7 @@ useful for solving the Assignment Problem.") (build-system python-build-system) (arguments '(#:tests? #f)) ; Test invocation is no longer supported by Python. (native-inputs - `(("python-pytest" ,python-pytest))) + (list python-pytest)) (home-page "https://bitbucket.org/mchaput/whoosh") (synopsis "Full text indexing, search, and spell checking library") (description @@ -13692,6 +14294,50 @@ checking library.") ,python2-backport-ssl-match-hostname) ,@(package-propagated-inputs whoosh)))))) +(define-public python-codespell + (package + (name "python-codespell") + (version "2.1.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "codespell" version)) + (sha256 + (base32 "1r9y714cz8m894rxp7pyvicr1lw2iid24vz6fxbl5wzy8ibgxlqr")))) + (build-system python-build-system) + (inputs + (list python-chardet)) + (native-inputs + (list python-check-manifest python-flake8 python-pytest + python-pytest-cov python-pytest-dependency)) + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda* (#:key outputs tests? #:allow-other-keys) + (when tests? + ;; Make installed executable available for running the tests. + (setenv "PATH" + (string-append (assoc-ref outputs "out") "/bin" + ":" (getenv "PATH"))) + (invoke "pytest" "-vv"))))))) + (home-page "https://github.com/codespell-project/codespell/") + (synopsis "Spellchecker for code") + (description "Codespell fixes common misspellings in text files. +It's designed primarily for checking misspelled words in source code, +but it can be used with other files as well. It does not check for word +membership in a complete dictionary, but instead looks for a set of +common misspellings. Therefore it should catch errors like \"adn\", but +it will not catch \"adnasdfasdf\". This also means it shouldn't +generate false-positives when you use a niche term it doesn't know +about.") + (license + (list + ; for codespell and codespell_lib + license:gpl2 + ; for dictionary*.txt + license:cc-by-sa3.0)))) + (define-public python-pathlib (package (name "python-pathlib") @@ -13746,8 +14392,7 @@ anymore.") (arguments `(#:python ,python-2)) (propagated-inputs - `(("python2-scandir" ,python2-scandir) - ("python2-six" ,python2-six))) + (list python2-scandir python2-six)) (home-page "https://pypi.org/project/pathlib2/") (synopsis "Object-oriented file system paths - backport of standard pathlib module") @@ -13798,7 +14443,7 @@ ambiguities (forward vs. backward slashes, etc.). (add-installed-pythonpath inputs outputs) (invoke "pytest" "-vv" "jellyfish/test.py"))))))) (native-inputs - `(("python-pytest" ,python-pytest))) + (list python-pytest)) (home-page "https://github.com/jamesturk/jellyfish") (synopsis "Approximate and phonetic matching of strings") (description "Jellyfish uses a variety of string comparison and phonetic @@ -13825,7 +14470,7 @@ encoding algorithms to do fuzzy string matching.") `(;; It supports Python 3, but Python 3 can already do Unicode CSV. #:python ,python-2)) (native-inputs - `(("python2-unittest2" ,python2-unittest2))) + (list python2-unittest2)) (home-page "https://github.com/jdunck/python-unicodecsv") (synopsis "Unicode CSV module for Python 2") (description "Unicodecsv is a drop-in replacement for Python 2.7's CSV @@ -13865,12 +14510,9 @@ module, adding support for Unicode strings.") (find-files out "\\.gz$")) #t)))))) (propagated-inputs - `(("python-chardet" ,python-chardet) - ("python-cryptography" ,python-cryptography) - ("python-sortedcontainers" ,python-sortedcontainers))) + (list python-chardet python-cryptography python-sortedcontainers)) (native-inputs - `(("python-nose" ,python-nose) - ("python-tox" ,python-tox))) + (list python-nose python-tox)) (home-page "https://github.com/pdfminer/pdfminer.six") (synopsis "PDF parser and analyzer") (description "@code{pdfminer.six} is a community maintained fork of @@ -13908,8 +14550,8 @@ can also be used to get the exact location, font or color of the text.") (lambda* (#:key inputs tests? #:allow-other-keys) (when tests? (invoke "pytest" "-vv"))))))) - (native-inputs `(("python-pytest" ,python-pytest))) - (inputs `(("libarchive" ,libarchive))) + (native-inputs (list python-pytest)) + (inputs (list libarchive)) (home-page "https://github.com/markokr/rarfile") (synopsis "RAR archive reader for Python") (description "This is Python module for RAR archive reading. The interface @@ -13938,12 +14580,8 @@ is made as zipfile like as possible.") "tests") (invoke "python" "-m" "pytest" "-vv"))))))) (propagated-inputs - `(("python-attrs" ,python-attrs) - ("python-colorama" ,python-colorama) - ("python-commonmark" ,python-commonmark) - ("python-ipywidgets" ,python-ipywidgets) - ("python-pygments" ,python-pygments) - ("python-typing-extensions" ,python-typing-extensions))) + (list python-attrs python-colorama python-commonmark python-pygments + python-typing-extensions)) (native-inputs `(("python-pytest" ,python-pytest) ("tests" @@ -13969,16 +14607,17 @@ syntax highlighting, markdown and more to the terminal.") (define-public python-magic (package (name "python-magic") - (version "0.4.22") + (version "0.4.24") (home-page "https://github.com/ahupp/python-magic") (source (origin (method git-fetch) (uri (git-reference (url home-page) (commit version))) (file-name (git-file-name name version)) + (patches (search-patches "python-magic-python-bytecode.patch")) (sha256 (base32 - "0zbdjr5shijs0jayz7gycpx0kn6v2bh83dpanyajk2vmy47jvbd6")))) + "17jalhjbfd600lzfz296m0nvgp6c7vx1mgz82jbzn8hgdzknf4w0")))) (build-system python-build-system) (arguments '(#:phases (modify-phases %standard-phases @@ -13990,22 +14629,26 @@ syntax highlighting, markdown and more to the terminal.") ;; python-magic to fail. (add-before 'build 'hard-code-path-to-libmagic (lambda* (#:key inputs #:allow-other-keys) - (let ((file (assoc-ref inputs "file"))) + (let ((magic (search-input-file inputs "/lib/libmagic.so"))) (substitute* "magic/loader.py" - (("ctypes\\.util\\.find_library\\('magic'\\)") - (string-append "'" file "/lib/libmagic.so'")))))) + (("find_library\\('magic'\\)") + (string-append "'" magic "'")))))) (replace 'check (lambda* (#:key tests? #:allow-other-keys) ;; The test suite mandates this variable. (setenv "LC_ALL" "en_US.UTF-8") (if tests? - (invoke "python" "./test/test.py") + (with-directory-excursion "test" + (invoke "python" "./test.py") + (invoke "python" "./libmagic_test.py")) (format #t "test suite not run~%"))))))) (native-inputs - `(("which" ,which))) + (list which)) (inputs ;; python-magic needs to be able to find libmagic.so. - `(("file" ,file))) + ;; Use a newer version because 5.39 returns bogus for some archives + ;; (notably Chromium .crx extensions), which breaks e.g. 'diffoscope'. + (list file-next)) (synopsis "File type identification using libmagic") (description "This module uses ctypes to access the libmagic file type @@ -14037,15 +14680,15 @@ the same purpose: to provide Python bindings for libmagic.") `(#:python ,python-2 #:tests? #f)) (propagated-inputs - `(("python2-dateutil" ,python2-dateutil) - ;; The python-file package also provides a magic.py module. - ;; This is an unfortunate state of affairs; however, s3cmd - ;; fails to install if it cannot find specifically the - ;; python-magic package. Thus we include it, instead of using - ;; python-file. Ironically, s3cmd sometimes works better - ;; without libmagic bindings at all: - ;; https://github.com/s3tools/s3cmd/issues/198 - ("python2-magic" ,python2-magic))) + (list python2-dateutil + ;; The python-file package also provides a magic.py module. + ;; This is an unfortunate state of affairs; however, s3cmd + ;; fails to install if it cannot find specifically the + ;; python-magic package. Thus we include it, instead of using + ;; python-file. Ironically, s3cmd sometimes works better + ;; without libmagic bindings at all: + ;; https://github.com/s3tools/s3cmd/issues/198 + python2-magic)) (home-page "https://s3tools.org/s3cmd") (synopsis "Command line tool for S3-compatible storage services") (description @@ -14069,9 +14712,9 @@ CloudFront content delivery network.") "107x2wmchlch8saixb488cgjz9n6inl38wi7nxkb942rbaapxiqb")))) (build-system python-build-system) (native-inputs - `(("python-nose" ,python-nose))) + (list python-nose)) (inputs - `(("pkg-config" ,pkg-config))) + (list pkg-config)) (arguments `(#:phases (modify-phases %standard-phases @@ -14125,14 +14768,14 @@ development version of CPython that are not available in older releases.") (define-public python-future (package (name "python-future") - (version "0.17.1") + (version "0.18.2") (source (origin (method url-fetch) (uri (pypi-uri "future" version)) (sha256 (base32 - "1f2rlqn9rh7adgir52dlbqz69gsab44x0mlm8gf1cs7xvhv54137")))) + "0zakvfj87gy6mn1nba06sdha63rn4njm7bhh0wzyrxhcny8avgmi")))) (build-system python-build-system) ;; Many tests connect to the network or are otherwise flawed. ;; https://github.com/PythonCharmers/python-future/issues/210 @@ -14162,10 +14805,9 @@ to support both Python 2 and Python 3 with minimal overhead.") "15ix8crpad26cfl1skyg7qajqqfdrm8q5ahhmlfmqi1aw0jqj2g2")))) (build-system python-build-system) (native-inputs - `(("python-cython" ,python-cython) - ("python-sphinx" ,python-sphinx))) + (list python-cython python-sphinx)) (inputs - `(("pari-gp" ,pari-gp))) + (list pari-gp)) (arguments `(#:modules ((guix build python-build-system) ((guix build gnu-build-system) #:prefix gnu:) @@ -14224,8 +14866,7 @@ respectively.") " line += ' -L" pcre "/lib" " -L " libgc "/lib'"))) #t)))))) - (inputs `(("pcre" ,pcre) - ("libgc" ,libgc))) + (inputs (list pcre libgc)) (home-page "https://shedskin.github.io/") (synopsis "Experimental Python-2 to C++ Compiler") (description (string-append "This is an experimental compiler for a subset of @@ -14264,7 +14905,7 @@ to occurrences in strings and comments.") (base32 "16z8zq83hxy48g6hh4xczbdz50qvxv9k1aahr4fqq7jis60cc262")))) (build-system python-build-system) (inputs - `(("file" ,file))) + (list file)) (arguments '(#:phases (modify-phases %standard-phases @@ -14303,8 +14944,7 @@ own code, responding to click events and updating clock every second.") (lambda _ (invoke "py.test" "-vv" "tests" "README.rst")))))) (native-inputs - `(("python-pytest" ,python-pytest) - ("python-six" ,python-six))) + (list python-pytest python-six)) (home-page "https://github.com/ionelmc/python-tblib") (synopsis "Traceback serialization library") (description @@ -14322,6 +14962,37 @@ multiple processes (imagine multiprocessing, billiard, futures, celery etc). (define-public python2-tblib (package-with-python2 python-tblib)) +(define-public python-tftpy + (package + (name "python-tftpy") + (version "0.8.2") + (source + (origin + (method git-fetch) ;no tests in PyPI archive + (uri (git-reference + (url "https://github.com/msoulier/tftpy") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1gl04ps8h8r7av3h0zbm8gwmkqs9rkk5vf7n8mv2bzrkwvy9hacc")))) + (build-system python-build-system) + (arguments + `(#:phases (modify-phases %standard-phases + (replace 'check + (lambda* (#:key tests? inputs outputs #:allow-other-keys) + (when tests? + ;; The default DEBUG logging level is way too verbose. + (substitute* "t/test.py" + (("logging\\.DEBUG") + "logging.INFO")) + (invoke "python" "-m" "unittest" "t/test.py"))))))) + (home-page "http://tftpy.sourceforge.net/") + (synopsis "Python trivial file transfer protocol (TFTP) library") + (description "TFTPy is a trivial file transfer protocol (TFTP) Python +library. It can be used to act both as a TFTP client or TFTP server.") + (license license:expat))) + (define-public python-greenlet (package (name "python-greenlet") @@ -14355,10 +15026,9 @@ are synchronized with data exchanges on \"channels\".") "19qmqsh984zq1rzzjy4vqnmviaqnymcyl8h7z99pnicbgwnm2adz")))) (build-system python-build-system) (propagated-inputs - `(("python-graphviz" ,python-graphviz))) + (list python-graphviz)) (native-inputs - `(("python-mock" ,python-mock) - ("graphviz" ,graphviz))) + (list python-mock graphviz)) (home-page "https://mg.pov.lt/objgraph/") (synopsis "Draw Python object reference graphs with graphviz") (description @@ -14474,14 +15144,11 @@ graphviz.") ("python-zope.event" ,python-zope-event) ("python-zope.interface" ,python-zope-interface))) (native-inputs - `(("python-six" ,python-six) - - ;; For tests. - ("python-dnspython" ,python-dnspython) - ("python-psutil" ,python-psutil))) + (list python-six + ;; For tests. + python-dnspython python-psutil)) (inputs - `(("c-ares" ,c-ares) - ("libev" ,libev))) + (list c-ares libev)) (home-page "https://www.gevent.org/") (synopsis "Coroutine-based network library") (description @@ -14529,12 +15196,12 @@ format.") (substitute* "src/twisted/python/_setup.py" (("\".+ = twisted\\.conch\\.scripts\\..+\",") ""))))))) (propagated-inputs - `(("python-zope-interface" ,python-zope-interface) - ("python-pyhamcrest" ,python-pyhamcrest) - ("python-incremental" ,python-incremental) - ("python-hyperlink" ,python-hyperlink) - ("python-constantly" ,python-constantly) - ("python-automat" ,python-automat))) + (list python-zope-interface + python-pyhamcrest + python-incremental + python-hyperlink + python-constantly + python-automat)) (home-page "https://twistedmatrix.com/") (synopsis "Asynchronous networking framework written in Python") (description @@ -14542,9 +15209,6 @@ format.") focus on event-based network programming and multiprotocol integration.") (license license:expat))) -(define-public python2-twisted - (package-with-python2 python-twisted)) - (define-public python-pika (package (name "python-pika") @@ -14577,13 +15241,12 @@ focus on event-based network programming and multiprotocol integration.") (lambda _ (invoke "nosetests")))))) (native-inputs - `(("python-mock" ,python-mock) - ("python-nose" ,python-nose) - - ;; These are optional at runtime, and provided here for tests. - ("python-gevent" ,python-gevent) - ("python-tornado" ,python-tornado) - ("python-twisted" ,python-twisted))) + (list python-mock + python-nose + ;; These are optional at runtime, and provided here for tests. + python-gevent + python-tornado + python-twisted)) (home-page "https://pika.readthedocs.org") (synopsis "Pure Python AMQP Client Library") (description @@ -14649,7 +15312,7 @@ data in Python.") (build-system python-build-system) (arguments '(#:tests? #f)) ; XXX: needs zookeeper (propagated-inputs - `(("python-six" ,python-six))) + (list python-six)) (home-page "https://kazoo.readthedocs.org") (synopsis "High-level Zookeeper client library") (description @@ -14674,11 +15337,9 @@ programming errors.") (build-system python-build-system) (arguments '(#:tests? #f)) ; XXX: needs zookeeper, kafka, etc. (propagated-inputs - `(("python-gevent" ,python-gevent) - ("python-kazoo" ,python-kazoo) - ("python-tabulate" ,python-tabulate))) + (list python-gevent python-kazoo python-tabulate)) (inputs - `(("librdkafka" ,librdkafka))) + (list librdkafka)) (home-page "https://pykafka.readthedocs.io/") (synopsis "Apache Kafka client for Python") (description @@ -14764,7 +15425,7 @@ objects, patterned after the Mocha library for Ruby.") "1jhnxgnw8y3mbzjssixh6qkc7a3afc4fygajhqrqalnilyvpzshq")))) (build-system python-build-system) (native-inputs - `(("python-pytest" ,python-pytest))) + (list python-pytest)) (home-page "https://github.com/jpvanhal/inflection") (synopsis "Python string transformation library") (description @@ -14809,15 +15470,10 @@ Wikipedia code samples at "17q6wi3q280kxmxzb2iwnnqih2xbljn18v0bjx2ip18p079j43ix")))) (build-system python-build-system) (native-inputs - `( ;; For testing - ("python-mock" ,python-mock) - ("python-pytest-mock" ,python-pytest-mock) - ("python-pytest" ,python-pytest))) + (list ;; For testing + python-mock python-pytest-mock python-pytest)) (propagated-inputs - `(("python-backpack" ,python-backpack) - ("python-clikit" ,python-clikit) - ("python-pastel" ,python-pastel) - ("python-pylev" ,python-pylev))) + (list python-backpack python-clikit python-pastel python-pylev)) (home-page "https://github.com/sdispater/cleo") (synopsis "Command-line arguments library for Python") (description @@ -14840,8 +15496,7 @@ docstring and colored output.") (base32 "062n694sfv24ylda6nh8228y2q9hrvy554kqx84y7czsjfbg4mxc")))) (build-system python-build-system) (native-inputs - `(("python-pytest" ,python-pytest) - ("python-pyyaml" ,python-pyyaml))) + (list python-pytest python-pyyaml)) (home-page "https://github.com/sdispater/tomlkit") (synopsis "Style-preserving TOML library") (description @@ -14894,7 +15549,7 @@ running in.") "0kvyapavbirk2x3n1jx4yb9nyigrj1s3x15nm3qhpvhkpqvqdqm2")) (patches (search-patches "python-memcached-syntax-warnings.patch")))) (build-system python-build-system) - (propagated-inputs `(("python-six" ,python-six))) + (propagated-inputs (list python-six)) (home-page "https://github.com/linsomniac/python-memcached") (synopsis "Pure python memcached client") @@ -14918,9 +15573,7 @@ more, possibly remote, memcached servers.") (build-system python-build-system) (arguments '(#:tests? #f)) ; no test in the PyPI tarball (propagated-inputs - `(("python-crashtest" ,python-crashtest) - ("python-pastel" ,python-pastel) - ("python-pylev" ,python-pylev))) + (list python-crashtest python-pastel python-pylev)) (home-page "https://github.com/sdispater/clikit") (synopsis "Group of utilities to build command line interfaces") (description @@ -14978,15 +15631,10 @@ strings require only one extra byte in addition to the strings themselves.") (lambda _ (invoke "pifpaf" "run" "memcached" "--port" "11211" "--" "pytest")))))) (native-inputs - `(("memcached" ,memcached) - ("python-fakeredis" ,python-fakeredis) - ("python-flexmock" ,python-flexmock) - ("python-pifpaf" ,python-pifpaf) - ("python-pytest" ,python-pytest))) + (list memcached python-fakeredis python-flexmock python-pifpaf + python-pytest)) (propagated-inputs - `(("python-memcached" ,python-memcached) - ("python-msgpack-python" ,python-msgpack-python) - ("python-redis" ,python-redis))) + (list python-memcached python-msgpack-python python-redis)) (home-page "https://github.com/sdispater/cachy") (synopsis "Simple yet effective caching library") (description @@ -14998,7 +15646,7 @@ database, file, dict stores. Cachy supports python versions 2.7+ and 3.2+.") (define-public poetry (package (name "poetry") - (version "1.1.5") + (version "1.1.11") ;; Poetry can only be built from source with Poetry. (source (origin @@ -15006,7 +15654,7 @@ database, file, dict stores. Cachy supports python versions 2.7+ and 3.2+.") (uri (pypi-uri "poetry" version)) (sha256 (base32 - "1dvx08ksv5wnsj45db23921rj136akmcnxa0kmlsddf3wbh6wcka")))) + "17pnf2j4adlm9fhyg5jkkvs8bzcigb6nj72vr0687fxybzsj4zbx")))) (build-system python-build-system) (arguments `(#:tests? #f ;; Pypi does not have tests. @@ -15022,23 +15670,23 @@ database, file, dict stores. Cachy supports python versions 2.7+ and 3.2+.") (("packaging>=20.4,<21.0") "packaging>=20.0,<21.0")) #t))))) (propagated-inputs - `(("python-cachecontrol" ,python-cachecontrol) - ("python-cachy" ,python-cachy) - ("python-cleo" ,python-cleo) - ("python-clikit" ,python-clikit) - ("python-html5lib" ,python-html5lib) - ("python-keyring" ,python-keyring) - ("python-msgpack-transitional" ,python-msgpack-transitional) - ("python-packaging" ,python-packaging) - ("python-pexpect" ,python-pexpect) - ("python-pip" ,python-pip) - ("python-pkginfo" ,python-pkginfo) - ("python-poetry-core" ,python-poetry-core) - ("python-requests" ,python-requests) - ("python-requests-toolbelt" ,python-requests-toolbelt-0.9.1) - ("python-shellingham" ,python-shellingham) - ("python-tomlkit" ,python-tomlkit) - ("python-virtualenv" ,python-virtualenv))) + (list python-cachecontrol + python-cachy + python-cleo + python-clikit + python-html5lib + python-keyring + python-msgpack-transitional + python-packaging + python-pexpect + python-pip + python-pkginfo + python-poetry-core + python-requests + python-requests-toolbelt-0.9.1 + python-shellingham + python-tomlkit + python-virtualenv)) (home-page "https://python-poetry.org") (synopsis "Python dependency management and packaging made easy") (description "Poetry is a tool for dependency management and packaging @@ -15098,12 +15746,9 @@ some degree most natural languages too.") (when tests? (invoke "python" "-m" "unittest"))))))) (native-inputs - `(("python-black" ,python-black) - ("python-isort" ,python-isort))) + (list python-black python-isort)) (propagated-inputs - `(("python-typing-extensions" ,python-typing-extensions) - ("python-typing-inspect" ,python-typing-inspect) - ("python-pyyaml" ,python-pyyaml))) + (list python-typing-extensions python-typing-inspect python-pyyaml)) (home-page "https://github.com/Instagram/LibCST") (synopsis "Concrete Syntax Tree (CST) parser and serializer library for Python") (description @@ -15142,8 +15787,7 @@ feels like an AST.") (patches (search-patches "python-typing-inspect-fix.patch")))) (build-system python-build-system) (propagated-inputs - `(("python-mypy-extensions" ,python-mypy-extensions) - ("python-typing-extensions" ,python-typing-extensions))) + (list python-mypy-extensions python-typing-extensions)) (home-page "https://github.com/ilevkivskyi/typing_inspect") (synopsis "API for inspection of types in the Python @code{typing} module") (description @@ -15162,7 +15806,7 @@ inspection of types defined in the Python standard typing module.") (base32 "0hwh29m9wa582ramj30p4pysckdrmki1z1b8iaaxk6mpfx2kc8wp")))) (native-inputs - `(("python-setuptools-scm" ,python-setuptools-scm))) + (list python-setuptools-scm)) (build-system python-build-system) (home-page "https://github.com/ionelmc/python-lazy-object-proxy") (synopsis "Lazy object proxy for python") @@ -15185,8 +15829,21 @@ until the object is actually required, and caches the result of said call.") (base32 "1m0xvyby8baaxp6pfm0fgq8d2pq5dd8qm8bzfbrs009jaw5pza74")))) (build-system python-build-system) - (native-inputs `(("unzip" ,unzip))) - (arguments '(#:tests? #f)) ; XXX: requires internet access + (arguments + `(#:tests? #f ; XXX: requires internet access + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'patch-getprotobyname-calls + ;; These calls are problematic in the build environment as there is + ;; no /etc/protocols. This breaks the sanity-check phase of any + ;; package depnding on this one. + (lambda _ + (substitute* "dns/rdtypes/IN/WKS.py" + (("socket.getprotobyname\\('tcp'\\)") + "6") + (("socket.getprotobyname\\('udp'\\)") + "17"))))))) + (native-inputs (list unzip)) (home-page "https://www.dnspython.org") (synopsis "DNS toolkit for Python") (description @@ -15262,8 +15919,7 @@ simple, lightweight implementation.") (("dnspython3") "dnspython")) #t))))) (propagated-inputs - `(("python-dnspython" ,python-dnspython) - ("python-idna" ,python-idna))) + (list python-dnspython python-idna)) (home-page "https://github.com/JoshData/python-email-validator") (synopsis "Email address validation library for Python") (description @@ -15276,14 +15932,29 @@ simple, lightweight implementation.") (define-public python-ukpostcodeparser (package (name "python-ukpostcodeparser") - (version "1.0.3") + (version "1.1.2") (source (origin (method url-fetch) (uri (pypi-uri "UkPostcodeParser" version)) (sha256 (base32 - "1jwg9z4rz51mcka1821rwgycsd0mcicyp1kiwjfa2kvg8bm9p2qd")))) + "03jkf1ygbwq3akzbcjyjk1akc1hv2sfgx90306pq1nwklbpn80lk")))) (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + ;; Tests for lowercase postcodes fail. + (invoke "pytest" "-vv" "ukpostcodeparser/test/parser.py" "-k" + (string-append "not test_091 " + "and not test_097 " + "and not test_098 " + "and not test_125 " + "and not test_131")))))))) + (native-inputs + (list python-pytest)) (home-page "https://github.com/hamstah/ukpostcodeparser") (synopsis "UK Postcode parser for Python") (description @@ -15296,58 +15967,35 @@ parsing UK postcodes.") (define-public python-faker (package - (name "python-faker") - (version "8.12.1") - (source (origin - (method url-fetch) - (uri (pypi-uri "Faker" version)) - (sha256 - (base32 - "1f95g8adzdh97cbfq7j3482iy4yskbahhjma2cm2mrhrdmi5j241")))) - (build-system python-build-system) - (arguments - '(#:phases - (modify-phases %standard-phases - (replace 'check - (lambda _ (invoke "python" "-m" "pytest" "-v")))))) - (native-inputs - `(;; For testing - ("python-freezegun" ,python-freezegun) - ("python-pytest" ,python-pytest) - ("python-random2" ,python-random2) - ("python-ukpostcodeparser" ,python-ukpostcodeparser) - ("python-validators" ,python-validators))) - (propagated-inputs - `(("python-dateutil" ,python-dateutil) - ("python-text-unidecode" ,python-text-unidecode))) - (home-page "https://github.com/joke2k/faker") - (synopsis "Python package that generates fake data") - (description - "Faker is a Python package that generates fake data such as names, + (name "python-faker") + (version "9.3.1") + (source (origin + (method url-fetch) + (uri (pypi-uri "Faker" version)) + (sha256 + (base32 + "0lpfdc4ndvk7chgqrfd2b1my4n54pccq9b645vp9cp5s5ypyknfd")))) + (build-system python-build-system) + (arguments + '(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda _ (invoke "python" "-m" "pytest" "-v")))))) + (native-inputs + (list ;; For testing + python-freezegun + python-pytest-6 + python-random2 + python-ukpostcodeparser + python-validators)) + (propagated-inputs + (list python-dateutil python-text-unidecode)) + (home-page "https://github.com/joke2k/faker") + (synopsis "Python package that generates fake data") + (description + "Faker is a Python package that generates fake data such as names, addresses, and phone numbers.") - (license license:expat) - (properties `((python2-variant . ,(delay python2-faker)))))) - -;; Faker 4.0 dropped Python 2 support, so we stick with this older version here. -(define-public python2-faker - (let ((base (package-with-python2 (strip-python2-variant - python-faker)))) - (package - (inherit base) - (version "3.0.1") - (source (origin - (method url-fetch) - (uri (pypi-uri "Faker" version)) - (sha256 - (base32 - "11cr0qvspkdh6198rqy56qildk7bnp6llj8kyy1dan5sp5n4dxy7")))) - (native-inputs - `(("python-mock" ,python2-mock) - ,@(package-native-inputs base))) - (propagated-inputs - `(("python2-ipaddress" ,python2-ipaddress) - ("python2-six" ,python2-six) - ,@(package-propagated-inputs base)))))) + (license license:expat))) (define-public python-pyaml (package @@ -15361,9 +16009,9 @@ addresses, and phone numbers.") "0fi604ix8lbpj1266q7js6szm771saprdzzcdwmj43wy83694qmr")))) (build-system python-build-system) (native-inputs - `(("python-unidecode" ,python-unidecode))) + (list python-unidecode)) (propagated-inputs - `(("python-pyyaml" ,python-pyyaml))) + (list python-pyyaml)) (home-page "https://github.com/mk-fg/pretty-yaml") (synopsis "YAML pretty-print library for Python") (description @@ -15387,11 +16035,9 @@ YAML-serialized data.") "14rq1mvm0jda90lcx9gyyby9dvq4x3js2cmxvd6vl4686ixwyqh1")))) (build-system python-build-system) (native-inputs - `(("python-pytest" ,python-pytest) - ("python-nose" ,python-nose) - ("python-toml" ,python-toml))) + (list python-pytest python-nose python-toml)) (propagated-inputs - `(("python-simplejson" ,python-simplejson))) + (list python-simplejson)) (home-page "https://github.com/sdispater/backpack") (synopsis "Utilities for working with Python collections") (description "Backpack provides some useful utilities for working with @@ -15424,9 +16070,9 @@ collections of data.") (add-installed-pythonpath inputs outputs) (invoke "py.test")))))) (propagated-inputs - `(("python-wcwidth" ,python-wcwidth))) + (list python-wcwidth)) (native-inputs - `(("python-pytest" ,python-pytest))) + (list python-pytest)) (home-page "https://github.com/prompt-toolkit/python-prompt-toolkit") (synopsis "Library for building command line interfaces in Python") (description @@ -15450,9 +16096,7 @@ characters, mouse support, and auto suggestions.") (base32 "0fgacqk73w7s932vy46pan2yp8rvjmlkag20xvaydh9mhf6h85zx")))) (propagated-inputs - `(("python-wcwidth" ,python-wcwidth) - ("python-six" ,python-six) - ("python-pygments" ,python-pygments))) + (list python-wcwidth python-six python-pygments)) (properties '()))) (define-public python2-prompt-toolkit @@ -15473,80 +16117,44 @@ characters, mouse support, and auto suggestions.") (package-with-python2 python-prompt-toolkit-1)) (define-public python-jedi - ;; The 0.18.0 release tests do not work with Python 3.9.6. Use a more - ;; recent commit. - (let ((commit "1d944943c311b2d71655432f8870d68b2cf7d44b") - (revision "1")) - (package - (name "python-jedi") - (version - (git-version "0.18.0" revision commit)) - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/davidhalter/jedi") - (commit commit))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "052szkbv2pf9hy21any6zb4dhx3c5w1v6b9hn5grlc84zfm350vq")))) - (build-system python-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - (add-after 'unpack 'unpack-submodule-sources - (lambda* (#:key inputs #:allow-other-keys) - (copy-recursively (assoc-ref inputs "python-django-stubs") - "jedi/third_party/django-stubs") - (copy-recursively (assoc-ref inputs "python-typeshed") - "jedi/third_party/typeshed") - #t)) - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (setenv "HOME" "/tmp") - ;; Disable the pytest tests that fail with pytest 6. See: - ;; https://github.com/davidhalter/jedi/issues/1660. - (invoke "pytest" "-vv" "-k" - "not test_completion[pytest")) - #t))))) - (native-inputs - `(("python-pytest" ,python-pytest) - ("python-docopt" ,python-docopt) - ("python-django-stubs" - ,(origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/davidhalter/django-stubs") - (commit "3d2534ea8d8300c4c9db8f18e300355d5fd5488b"))) - (file-name "django-stubs-checkout") - (sha256 - (base32 "1fpvn4lcqkd2q18z29rcnwakm649fccw2k6jik5d64j7p6xns08r")))) - ("python-typeshed" - ,(origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/davidhalter/typeshed") - (commit "ae9d4f4b21bb5e1239816c301da7b1ea904b44c3"))) - (file-name "typeshed-checkout") - (sha256 - (base32 "02xdip4amj0a7z9xph2mj46x1k55bjxl8d0gkpy25575acyx1kjq")))))) - (propagated-inputs - `(("python-parso" ,python-parso))) - (home-page "https://github.com/davidhalter/jedi") - (synopsis "Autocompletion and static analysis library for Python") - (description - "Jedi is a static analysis tool for Python that can be used in Integrated + (package + (name "python-jedi") + (version "0.18.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/davidhalter/jedi") + (commit (string-append "v" version)) + (recursive? #true))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "07drmi3ai49jw5n23ibkambcgijqcw073ihypjgxfnks5lv4yqy1")))) + (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (setenv "HOME" "/tmp") + (invoke "python" "-m" "pytest" "-vv")) + #t))))) + (native-inputs + (list python-colorama python-docopt python-django-2.2 python-pytest)) + (propagated-inputs + (list python-parso)) + (home-page "https://github.com/davidhalter/jedi") + (synopsis "Autocompletion and static analysis library for Python") + (description + "Jedi is a static analysis tool for Python that can be used in Integrated Development Environments (@dfn{IDE}s) and text editors. It understands Python on a deeper level than many other static analysis frameworks for Python. -Jedi understands docstrings and you can use Jedi autocompletion in your REPL as -well.") - (license license:expat)))) - -(define-public python2-jedi - (package-with-python2 python-jedi)) +Jedi understands docstrings and you can use Jedi autocompletion in your REPL +as well.") + (license license:expat))) (define-public ptpython (package @@ -15562,18 +16170,15 @@ well.") (arguments `(#:tests? #f)) ;there are no tests (propagated-inputs - `(("python-appdirs" ,python-appdirs) - ("python-black" ,python-black) - ("python-jedi" ,python-jedi) - ("python-prompt-toolkit" ,python-prompt-toolkit) - ("python-pygments" ,python-pygments))) + (list python-appdirs python-black python-jedi python-prompt-toolkit + python-pygments)) (home-page "https://github.com/jonathanslenders/ptpython") (synopsis "Python Read-Eval-Print-Loop with nice IDE-like features") (description "ptpython is a Python read-eval-print loop with IDE-like features. -It supports syntax highlighting, multiline editing, autocompletion, mouse, -color schemes, bracketed paste, Vi and Emacs keybindings, Chinese characters -etc.") + It supports syntax highlighting, multiline editing, autocompletion, mouse, + color schemes, bracketed paste, Vi and Emacs keybindings, Chinese characters + etc.") (license license:bsd-3) (properties `((python2-variant . ,(delay ptpython-2)))))) @@ -15616,15 +16221,13 @@ etc.") (arguments `(#:test-target "pytest")) (native-inputs - `(("python-easyprocess" ,python-easyprocess) - ("python-pytest" ,python-pytest) - ("python-pytest-runner" ,python-pytest-runner))) + (list python-easyprocess python-pytest python-pytest-runner)) (home-page "https://github.com/ponty/entrypoint2") (synopsis "Command-line interface for Python modules") (description "@code{entrypoint2} is an easy to use command-line interface for Python -modules based on @code{argparse}. It translates function signature and -documentation to argparse configuration.") + modules based on @code{argparse}. It translates function signature and + documentation to argparse configuration.") (license license:bsd-3))) (define-public python-pyvirtualdisplay @@ -15643,13 +16246,10 @@ documentation to argparse configuration.") ;; FileNotFoundError: [Errno 2] No such file or directory: 'Xvnc'. `(#:tests? #f)) (native-inputs - `(("python-entrypoint2" ,python-entrypoint2) - ("python-psutil" ,python-psutil) - ("python-pytest" ,python-pytest) - ("python-pytest-runner" ,python-pytest-runner))) + (list python-entrypoint2 python-psutil python-pytest + python-pytest-runner)) (propagated-inputs - `(("python-easyprocess" ,python-easyprocess) - ("python-pillow" ,python-pillow))) + (list python-easyprocess python-pillow)) (home-page "https://github.com/ponty/pyvirtualdisplay") (synopsis "Python wrapper for Xvfb, Xephyr and Xvnc") (description @@ -15682,16 +16282,14 @@ documentation to argparse configuration.") (invoke "./run_tests.py" "--unit") #t))))) (native-inputs - `(("python-mock" ,python-mock) - ("python-pycodestyle" ,python-pycodestyle) - ("python-pyflakes" ,python-pyflakes))) + (list python-mock python-pycodestyle python-pyflakes)) (home-page "https://stem.torproject.org/") (synopsis "Python controller library that allows applications to interact with Tor") (description "Stem is a Python controller library for Tor. With it you can use Tor's -control protocol to script against the Tor process and read descriptor data -relays publish about themselves.") + control protocol to script against the Tor process and read descriptor data + relays publish about themselves.") (license license:lgpl3))) (define-public python-pyserial @@ -15717,13 +16315,130 @@ relays publish about themselves.") "https://github.com/pyserial/pyserial") (synopsis "Python Serial Port Bindings") (description "@code{pyserial} provide serial port bindings for Python. It -supports different byte sizes, stop bits, parity and flow control with RTS/CTS -and/or Xon/Xoff. The port is accessed in RAW mode.") + supports different byte sizes, stop bits, parity and flow control with RTS/CTS + and/or Xon/Xoff. The port is accessed in RAW mode.") (license license:bsd-3))) (define-public python2-pyserial (package-with-python2 python-pyserial)) +(define-public python-pyserial-asyncio + (package + (name "python-pyserial-asyncio") + (version "0.5") + (source + (origin + (method url-fetch) + (uri (pypi-uri "pyserial-asyncio" version)) + (sha256 + (base32 "0cwd2cjz859v6jrm3y6hikfqjyhyfj5vhfjb8vvflvl6791yah8n")))) + (build-system python-build-system) + (propagated-inputs (list python-pyserial)) + (home-page "https://github.com/pyserial/pyserial-asyncio") + (synopsis "Pyserial asynchronous I/O extension") + (description "This package extends Pyserial with asynchronous I/O + support.") + (license license:bsd-3))) + +(define-public python-pymodbus + (package + (name "python-pymodbus") + (version "2.5.3") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/riptideio/pymodbus") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0kjjrx7xrlx0pf3y67hhr4xvqrly3xzmvf6ic5as61m6z19m7zd5")))) + (build-system python-build-system) + (arguments + `(#:phases (modify-phases %standard-phases + (add-after 'unpack 'disable-problematic-tests + (lambda _ + ;; The following test modules rely on Python's own + ;; 'test' module, which is not distributed in the Python + ;; package of Guix. + (delete-file "test/test_client_async_asyncio.py") + (delete-file "test/test_client_sync_diag.py") + ;; The following test module requires the asynctest + ;; library, abandoned without support for Python 3.9+ + ;; (see: + ;; https://github.com/riptideio/pymodbus/issues/681). + (delete-file "test/test_server_asyncio.py"))) + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "python" "-m" "pytest"))))))) + (native-inputs + (list python-mock + python-pytest + python-redis + python-sqlalchemy + python-tornado + python-twisted)) + (propagated-inputs + (list python-pyserial + python-six + ;; For the REPL. + python-aiohttp + python-click + python-prompt-toolkit + python-pygments + python-pyserial-asyncio)) + (home-page "https://github.com/riptideio/pymodbus/") + (synopsis "Modbus protocol stack in Python") + (description "Pymodbus is a full Modbus protocol implementation using + @code{asyncio}, @code{tornado} or @code{twisted} for its asynchronous + communications core. It includes the following @emph{client} features: + @itemize + @item full read/write protocol on discrete and register + @item most of the extended protocol (diagnostic/file/pipe/setting/information) + @item TCP, UDP, Serial ASCII, Serial RTU, and Serial Binary + @item asynchronous and synchronous versions + @item payload builder/decoder utilities + @item pymodbus read eval print loop (REPL). + @end itemize + It also includes the following @emph{server} features: + @itemize + @item can function as a fully implemented Modbus server + @item TCP, UDP, Serial ASCII, Serial RTU, and Serial Binary + @item asynchronous and synchronous versions + @item full server control context (device information, counters, etc) + @item a number of backing contexts (database, redis, sqlite, a slave device). + @end itemize") + (license license:bsd-3))) + +(define-public python-kivy-garden + (package + (name "python-kivy-garden") + (version "0.1.4") + (source + (origin + (method url-fetch) + (uri (pypi-uri "kivy-garden" version)) + (sha256 + (base32 "0wkcpr2zc1q5jb0bi7v2dgc0vs5h1y7j42mviyh764j2i0kz8mn2")))) + (build-system python-build-system) + (arguments + '(#:phases (modify-phases %standard-phases + (add-after 'install 'remove-bat-file + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (delete-file + (string-append out "/bin/garden.bat")))))))) + (propagated-inputs + (list python-requests)) + (home-page "https://github.com/kivy-garden/garden") + (synopsis "Garden tool for Kivy flowers") + (description + "This package provides the @command{garden} command to install packages +for Kivy, the multitouch application platform.") + (license license:expat))) + (define-public python-kivy (package (name "python-kivy") @@ -15744,21 +16459,25 @@ and/or Xon/Xoff. The port is accessed in RAW mode.") (add-after 'patch-generated-file-shebangs 'set-sdl-paths (lambda* (#:key inputs #:allow-other-keys) (setenv "KIVY_SDL2_PATH" - (search-input-directory inputs "/include/SDL2"))))))) + (search-input-directory inputs "/include/SDL2")))) + (add-before 'sanity-check 'set-home + (lambda _ + ;; 'kivy/__init__.py' wants to create $HOME/.kivy. + (setenv "HOME" (getcwd))))))) (native-inputs - `(("pkg-config" ,pkg-config) - ("python-cython" ,python-cython))) + (list pkg-config python-cython)) (inputs - `(("gstreamer" ,gstreamer) - ("mesa" ,mesa) - ("sdl-union" - ,(sdl-union (list sdl2 sdl2-image sdl2-mixer sdl2-ttf))))) + (list gstreamer + mesa + (sdl-union (list sdl2 sdl2-image sdl2-mixer sdl2-ttf)) + python-docutils + python-kivy-garden + python-pygments)) (home-page "https://kivy.org") - (synopsis - "Multitouch application framework") + (synopsis "Multitouch application framework") (description - "A software library for rapid development of -hardware-accelerated multitouch applications.") + "Kivy is a software library for rapid development of hardware-accelerated +multitouch applications.") (license license:expat))) (define-public python2-kivy @@ -15786,12 +16505,11 @@ hardware-accelerated multitouch applications.") (("average_size=512") "")) #t))))) (propagated-inputs - `(("python-chardet" ,python-chardet) - ("python-hypothesis" ,python-hypothesis))) + (list python-chardet python-hypothesis)) (home-page "https://github.com/audreyr/binaryornot") (synopsis "Package to check if a file is binary or text") (description "Ultra-lightweight pure Python package to check if a file is -binary or text.") + binary or text.") (license license:bsd-3) (properties `((python2-variant . ,(delay python2-binaryornot)))))) @@ -15802,10 +16520,10 @@ binary or text.") `(("python2-enum34" ,python2-enum34) ,@(package-propagated-inputs base)))))) -(define-public python-binwalk +(define-public binwalk (package - (name "python-binwalk") - (version "2.2.0") + (name "binwalk") + (version "2.3.2") (source (origin (method git-fetch) @@ -15814,8 +16532,7 @@ binary or text.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 - "1bxgj569fzwv6jhcbl864nmlsi9x1k1r20aywjxc8b9b1zgqrlvc")))) + (base32 "01dalxw07c42ka4fqpixcacvy42h04ya909lzpmsblr9s2xdgwcm")))) (build-system python-build-system) (arguments `(#:phases @@ -15824,14 +16541,16 @@ binary or text.") (lambda _ (setenv "HOME" "")))))) (native-inputs - `(("python-coverage" ,python-coverage) - ("python-nose" ,python-nose))) + (list python-coverage python-nose)) (home-page "https://github.com/ReFirmLabs/binwalk") (synopsis "Firmware analysis tool") (description "Binwalk is a tool for analyzing, reverse engineering, and -extracting firmware images") + extracting firmware images") (license license:expat))) +(define-public python-binwalk + (deprecated-package "python-binwalk" binwalk)) + (define-public python-nltk (package (name "python-nltk") @@ -15848,18 +16567,15 @@ extracting firmware images") ;; TODO Try packaging these resources. #:tests? #f)) (propagated-inputs - `(("python-click" ,python-click) - ("python-joblib" ,python-joblib) - ("python-regex" ,python-regex) - ("python-tqdm" ,python-tqdm))) + (list python-click python-joblib python-regex python-tqdm)) (native-inputs - `(("unzip" ,unzip))) + (list unzip)) (home-page "http://nltk.org/") (synopsis "Natural Language Toolkit") (description "It provides interfaces to over 50 corpora and lexical -resources such as WordNet, along with a suite of text processing libraries -for classification, tokenization, stemming, tagging, parsing, and semantic -reasoning, wrappers for natural language processing libraries.") + resources such as WordNet, along with a suite of text processing libraries + for classification, tokenization, stemming, tagging, parsing, and semantic + reasoning, wrappers for natural language processing libraries.") (license license:asl2.0))) ;; Versions >=3.5 breaks backward-compatibility, @@ -15874,7 +16590,7 @@ reasoning, wrappers for natural language processing libraries.") (uri (pypi-uri "nltk" version ".zip")) (sha256 (base32 "153x2clrnigs74jdgnn3qmljdjj4gprmvpdvh49i18ls4m8mbm5y")))) - (propagated-inputs `(("python-six" ,python-six))))) + (propagated-inputs (list python-six)))) (define-public python2-nltk (package-with-python2 python-nltk)) @@ -15891,7 +16607,7 @@ reasoning, wrappers for natural language processing libraries.") "0zis4707r9hdg5qgkhp3wss9camr9h56ixyfc8n9dxwlnnly4x4c")))) (build-system python-build-system) (propagated-inputs - `(("python-certifi" ,python-certifi))) + (list python-certifi)) (home-page "https://github.com/mongodb/mongo-python-driver") (synopsis "Python driver for MongoDB") (description "Python driver for MongoDB.") @@ -15915,13 +16631,12 @@ reasoning, wrappers for natural language processing libraries.") (arguments '(#:tests? #f)) ; The tests are not distributed (propagated-inputs - `(("python-requests" ,python-requests) - ("python-six" ,python-six))) + (list python-requests python-six)) (home-page "https://github.com/cablehead/python-consul") (synopsis "Python client for Consul") (description "Python client for @url{http://www.consul.io/,Consul}, a tool for service -discovery, monitoring and configuration.") + discovery, monitoring and configuration.") (license license:expat))) (define-public python2-consul @@ -15942,7 +16657,7 @@ discovery, monitoring and configuration.") (base32 "0xdqskycznqc7mfp60bhw1zq8wx7yx1dvmbq3brnm1dx3xnqa0zd")))) (build-system python-build-system) (propagated-inputs - `(("python-six" ,python-six))) + (list python-six)) (arguments ;; The tests require a bunch of not very nice packages with fixed ;; version requirements (e.g. python-coveralls). @@ -15973,13 +16688,13 @@ discovery, monitoring and configuration.") (invoke "pytest" "-vv")))))) (build-system python-build-system) (native-inputs - `(("python-pytest" ,python-pytest))) + (list python-pytest)) (propagated-inputs - `(("python-defusedxml" ,python-defusedxml))) + (list python-defusedxml)) (home-page "https://github.com/eea/odfpy") (synopsis "Python API and tools to manipulate OpenDocument files") (description "Collection of libraries and utility programs written in -Python to manipulate OpenDocument 1.2 files.") + Python to manipulate OpenDocument 1.2 files.") (license ;; The software is mainly dual GPL2+ and ASL2.0, but includes a ;; number of files with other licenses. @@ -16006,23 +16721,21 @@ Python to manipulate OpenDocument 1.2 files.") (lambda _ (invoke "pytest" "-v")))))) (native-inputs - `(("python-hypothesis" ,python-hypothesis) - ("python-pytest-cov" ,python-pytest-cov) - ("python-pytest-mock" ,python-pytest-mock) - ("python-pytest" ,python-pytest))) + (list python-hypothesis python-pytest-cov python-pytest-mock + python-pytest)) (propagated-inputs ; TODO: Add python-fastnumbers. - `(("python-pyicu" ,python-pyicu))) + (list python-pyicu)) (home-page "https://github.com/SethMMorton/natsort") (synopsis "Natural sorting for python and shell") (description "Natsort lets you apply natural sorting on lists instead of -lexicographical. If you use the built-in @code{sorted} method in python -on a list such as @code{[@code{a20}, @code{a9}, @code{a1}, @code{a4}, -@code{a10}]}, it would be returned as @code{[@code{a1}, @code{a10}, @code{a20}, -@code{a4}, @code{a9}]}. Natsort provides a function @code{natsorted} that -identifies numbers and sorts them separately from strings. It can also sort -version numbers, real numbers, mixed types and more, and comes with a shell -command @command{natsort} that exposes this functionality in the command line.") + lexicographical. If you use the built-in @code{sorted} method in python + on a list such as @code{[@code{a20}, @code{a9}, @code{a1}, @code{a4}, + @code{a10}]}, it would be returned as @code{[@code{a1}, @code{a10}, @code{a20}, + @code{a4}, @code{a9}]}. Natsort provides a function @code{natsorted} that + identifies numbers and sorts them separately from strings. It can also sort + version numbers, real numbers, mixed types and more, and comes with a shell + command @command{natsort} that exposes this functionality in the command line.") (license license:expat))) (define-public glances @@ -16048,19 +16761,15 @@ command @command{natsort} that exposes this functionality in the command line.") #t)))) (build-system python-build-system) (propagated-inputs - `(("python-future" ,python-future) - ("python-psutil" ,python-psutil))) + (list python-future python-psutil)) (home-page "https://github.com/nicolargo/glances") (synopsis "Cross-platform curses-based monitoring tool") (description "Glances is a curses-based monitoring tool for a wide variety of platforms. -Glances uses the PsUtil library to get information from your system. It -monitors CPU, load, memory, network bandwidth, disk I/O, disk use, and more.") + Glances uses the PsUtil library to get information from your system. It + monitors CPU, load, memory, network bandwidth, disk I/O, disk use, and more.") (license license:lgpl3+))) -(define-public python-glances - (deprecated-package "python-glances" glances)) - (define-public python-graphql-core (package (name "python-graphql-core") @@ -16083,108 +16792,76 @@ monitors CPU, load, memory, network bandwidth, disk I/O, disk use, and more.") (("'gevent==1.1rc1'") "'gevent'")) #t))))) (native-inputs - `(("python-gevent" ,python-gevent) - ("python-mock" ,python-mock) - ("python-pytest-mock" ,python-pytest-mock))) + (list python-gevent python-mock python-pytest-mock)) (propagated-inputs - `(("python-promise" ,python-promise) - ("python-six" ,python-six))) + (list python-promise python-six)) (home-page "https://github.com/graphql-python/graphql-core") (synopsis "GraphQL implementation for Python") (description "GraphQL implementation for Python. GraphQL is a data query language and -runtime designed and used to request and deliver data to mobile and web apps. -This library is a port of @url{https://github.com/graphql/graphql-js,graphql-js} -to Python.") + runtime designed and used to request and deliver data to mobile and web apps. + This library is a port of @url{https://github.com/graphql/graphql-js,graphql-js} + to Python.") (license license:expat))) (define-public python-graphql-relay (package (name "python-graphql-relay") - (version "0.4.5") + (version "3.1.0") (source (origin (method url-fetch) (uri (pypi-uri "graphql-relay" version)) (sha256 (base32 - "1nv5dxcj59zv31qvl8bd142njmxcmymny2dz3br1l2cpbljbf5i7")))) + "1d70vwam9gjhx7fqzsa03x7lc6ivcqki5r9pk8m7rslmb7pagmbh")))) (build-system python-build-system) (arguments - '(#:tests? #f)) ; The tests are not distributed + '(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "pytest" "tests"))))))) + (native-inputs + (list + python-pytest + python-pytest-asyncio)) (propagated-inputs - `(("python-graphql-core" ,python-graphql-core) - ("python-promise" ,python-promise) - ("python-six" ,python-six))) + (list python-graphql-core)) (home-page "https://github.com/graphql-python/graphql-relay-py") (synopsis "Relay implementation for Python") (description "This is a library to allow the easy creation of Relay-compliant servers -using the GraphQL Python reference implementation of a GraphQL server. It -should be noted that the code is a exact port of the original -@url{https://github.com/graphql/graphql-relay-js,graphql-relay js implementation} -from Facebook.") + using the GraphQL Python reference implementation of a GraphQL server. It + should be noted that the code is a exact port of the original + @url{https://github.com/graphql/graphql-relay-js,graphql-relay js implementation} + from Facebook.") (license license:expat))) (define-public python-graphene (package (name "python-graphene") - (version "0.10.2") + (version "3.0") (source (origin (method url-fetch) (uri (pypi-uri "graphene" version)) (sha256 (base32 - "09zhac7igh9ixdz0ay6csy35b40l1jwbf2wrbxmgxwfhy51iy06q")))) + "08m1n2ydk48c18cvl8474v3pwwacjl1vgq61m9qs00122mp0cj5g")))) (build-system python-build-system) (propagated-inputs - `(("python-graphql-core" ,python-graphql-core) - ("python-graphql-relay" ,python-graphql-relay) - ("python-iso8601" ,python-iso8601) - ("python-promise" ,python-promise) - ("python-six" ,python-six))) + (list python-graphql-core python-graphql-relay python-aniso8601 + python-promise python-six)) (arguments `(#:tests? #f)) ; no tests/ in the PyPI tarball (home-page "https://graphene-python.org/") (synopsis "GraphQL Framework for Python") (description "Graphene is a Python library for building GraphQL schemas/types. -A GraphQL schema describes your data model, and provides a GraphQL server -with an associated set of resolve methods that know how to fetch data.") - (license license:expat))) - -(define-public python-nautilus - (package - (name "python-nautilus") - (version "0.4.9") - (source - (origin - (method url-fetch) - (uri (pypi-uri "nautilus" version)) - (sha256 - (base32 - "01hwzjc1zshk4vvxrcghm398fpy4jls66dyz06g07mrwqif8878p")))) - (build-system python-build-system) - (arguments `(#:tests? #f)) ; fails to import test modules - (propagated-inputs - `(("python-bcrypt" ,python-bcrypt) - ("python-click" ,python-click) - ("python-consul" ,python-consul) - ("python-graphene" ,python-graphene) - ("python-jinja2" ,python-jinja2) - ("python-peewee" ,python-peewee) - ("python-pika" ,python-pika) - ("python-tornado" ,python-tornado) - ("python-wtforms" ,python-wtforms))) - (native-inputs - `(("python-nose2" ,python-nose2))) - (home-page "https://github.com/AlecAivazis/nautilus") - (synopsis "Library for creating microservice applications") - (description - "Nautilus is a framework for flux based microservices that looks to -provide extendible implementations of common aspects of a cloud so that you can -focus on building massively scalable web applications.") + A GraphQL schema describes your data model, and provides a GraphQL server + with an associated set of resolve methods that know how to fetch data.") (license license:expat))) (define-public python-random2 @@ -16200,18 +16877,18 @@ focus on building massively scalable web applications.") (patches (search-patches "python-random2-getrandbits-test.patch")))) (build-system python-build-system) - (native-inputs `(("unzip" ,unzip))) + (native-inputs (list unzip)) (home-page "http://pypi.python.org/pypi/random2") (synopsis "Python 3 version of the Python 2 @code{random} module") (description "This package provides a Python 3 ported version of Python 2.7’s -@code{random} module. It has also been back-ported to work in Python 2.6. + @code{random} module. It has also been back-ported to work in Python 2.6. -In Python 3, the implementation of @code{randrange()} was changed, so that -even with the same seed you get different sequences in Python 2 and 3. + In Python 3, the implementation of @code{randrange()} was changed, so that + even with the same seed you get different sequences in Python 2 and 3. -This package closes that gap, allowing stable random number generation -between the different Python versions.") + This package closes that gap, allowing stable random number generation + between the different Python versions.") (license license:psfl))) (define-public python2-random2 @@ -16234,8 +16911,8 @@ between the different Python versions.") (home-page "https://github.com/shibukawa/snowball_py") (synopsis "Snowball stemming library collection for Python") (description "This package provides 16 word stemmer algorithms generated -from Snowball algorithms. It includes the 15 original ones plus the Poerter -English stemmer.") + from Snowball algorithms. It includes the 15 original ones plus the Poerter + English stemmer.") (license license:bsd-3))) (define-public python2-snowballstemmer @@ -16278,17 +16955,17 @@ English stemmer.") ;; the Makefile will build anyway (invoke "make" "check")))))) (native-inputs - `(("procps" ,procps))) ; required for tests + (list procps)) ; required for tests (home-page "https://github.com/dvarrazzo/py-setproctitle") (synopsis "Setproctitle implementation for Python to customize the process title") (description "The library allows a process to change its title (as displayed -by system tools such as ps and top). + by system tools such as ps and top). -Changing the title is mostly useful in multi-process systems, for -example when a master process is forked: changing the children's title -allows identifying the task each process is busy with. The technique -is used by PostgreSQL and the OpenSSH Server for example.") + Changing the title is mostly useful in multi-process systems, for + example when a master process is forked: changing the children's title + allows identifying the task each process is busy with. The technique + is used by PostgreSQL and the OpenSSH Server for example.") (license license:bsd-3) (properties `((python2-variant . ,(delay python2-setproctitle)))))) @@ -16324,15 +17001,15 @@ is used by PostgreSQL and the OpenSSH Server for example.") (lambda _ (invoke "py.test" "-vv" )))))) (native-inputs - `(("python-pytest" ,python-pytest))) + (list python-pytest)) (home-page "https://github.com/jamesturk/validictory") (synopsis "General purpose Python data validator") (description "It allows validation of arbitrary Python data structures. -The schema format is based on the JSON Schema -proposal (http://json-schema.org), so combined with json the library is also -useful as a validator for JSON data.") + The schema format is based on the JSON Schema + proposal (http://json-schema.org), so combined with json the library is also + useful as a validator for JSON data.") (license license:expat))) (define-public python2-validictory @@ -16355,9 +17032,9 @@ useful as a validator for JSON data.") (synopsis "Analyze binary and library file information") (description "This Python library provides interfaces for parsing and -analyzing two binary and library file formats; the Executable and Linking -Format (ELF), and debugging information in the Debugging With Attributed -Record Format (DWARF).") + analyzing two binary and library file formats ; the Executable and Linking + Format (ELF), and debugging information in the Debugging With Attributed + Record Format (DWARF).") (license license:public-domain))) (define-public python-pyev @@ -16383,7 +17060,7 @@ Record Format (DWARF).") (("libev_dll_name = find_library\\(\\\"ev\\\"\\)") (string-append "libev_dll_name = \"" libev "\""))))))))) (inputs - `(("libev" ,libev))) + (list libev)) (home-page "https://github.com/gabrielfalcao/pyev") (synopsis "Python libev interface") (description "Pyev provides a Python interface to libev.") @@ -16408,7 +17085,7 @@ Record Format (DWARF).") (synopsis "Gets image size of files in various formats in Python") (description "This package allows determination of image size from -PNG, JPEG, JPEG2000 and GIF files in pure Python.") + PNG, JPEG, JPEG2000 and GIF files in pure Python.") (license license:expat))) (define-public python2-imagesize @@ -16451,20 +17128,20 @@ PNG, JPEG, JPEG2000 and GIF files in pure Python.") (patches (search-patches "python-argcomplete-1.11.1-fish31.patch")))) (build-system python-build-system) (native-inputs - `(("python-coverage" ,python-coverage) - ("python-flake8" ,python-flake8) - ("python-pexpect" ,python-pexpect) - ("python-wheel" ,python-wheel) - ("tcsh" ,tcsh) - ("fish" ,fish) - ("bash-full" ,bash))) ;full Bash for 'test_file_completion' + (list python-coverage + python-flake8 + python-pexpect + python-wheel + tcsh + fish + bash)) ;full Bash for 'test_file_completion' (home-page "https://github.com/kislyuk/argcomplete") (synopsis "Shell tab completion for Python argparse") (description "argcomplete provides extensible command line tab completion -of arguments and options for Python scripts using @code{argparse}. It's -particularly useful for programs with many options or sub-parsers that can -dynamically suggest completions; for example, when browsing resources over the -network.") + of arguments and options for Python scripts using @code{argparse}. It's + particularly useful for programs with many options or sub-parsers that can + dynamically suggest completions ; for example, when browsing resources over the + network.") (license license:asl2.0) (properties `((python2-variant . ,(delay python2-argcomplete)))))) @@ -16501,7 +17178,7 @@ network.") (lambda _ (invoke "py.test")))))) (native-inputs - `(("python-pytest" ,python-pytest))) + (list python-pytest)) (home-page "https://github.com/sprymix/csscompressor") (synopsis "Python port of YUI CSS Compressor") (description @@ -16529,7 +17206,7 @@ network.") (home-page "http://opensource.perlig.de/rcssmin/") (synopsis "CSS Minifier") (description "The minifier is based on the semantics of the YUI compressor, -which itself is based on the rule list by Isaac Schlueter.") + which itself is based on the rule list by Isaac Schlueter.") (license license:asl2.0))) (define-public python-rjsmin @@ -16560,36 +17237,36 @@ which itself is based on the rule list by Isaac Schlueter.") (invoke "py.test" "-vv" "tests") #t)))))) (native-inputs - `(("python-pytest" ,python-pytest))) + (list python-pytest)) (home-page "http://opensource.perlig.de/rjsmin/") (synopsis "Javascript Minifier") (description "@code{rJSmin} is a javascript minifier written in Python. The -minifier is based on the semantics of jsmin.c by Douglas Crockford. The module -is a re-implementation aiming for speed, so it can be used at runtime (rather -than during a preprocessing step).") + minifier is based on the semantics of jsmin.c by Douglas Crockford. The module + is a re-implementation aiming for speed, so it can be used at runtime (rather + than during a preprocessing step).") (license license:asl2.0))) (define-public python-xopen (package (name "python-xopen") - (version "0.5.0") + (version "0.8.2") (source - (origin - (method url-fetch) - (uri (pypi-uri "xopen" version)) - (sha256 - (base32 - "17xbrgi23l87yg6h0qcknssp2q812miiy33qw6v45v5gx0jwv5xh")))) + (origin + (method url-fetch) + (uri (pypi-uri "xopen" version)) + (sha256 + (base32 + "1xrlcnd6fri3w97zzzp6vyk4l21yq1lc8r4wksi06hgpkbh4jdq0")))) (build-system python-build-system) (propagated-inputs - `(("python-setuptools-scm" ,python-setuptools-scm))) + (list python-setuptools-scm)) (home-page "https://github.com/marcelm/xopen/") (synopsis "Open compressed files transparently") (description "This module provides an @code{xopen} function that works like -Python's built-in @code{open} function, but can also deal with compressed files. -Supported compression formats are gzip, bzip2 and, xz, and are automatically -recognized by their file extensions. The focus is on being as efficient as -possible on all supported Python versions.") + Python's built-in @code{open} function, but can also deal with compressed files. + Supported compression formats are gzip, bzip2 and, xz, and are automatically + recognized by their file extensions. The focus is on being as efficient as + possible on all supported Python versions.") (license license:expat))) (define-public python2-xopen @@ -16632,33 +17309,33 @@ possible on all supported Python versions.") (invoke "python" "Cheetah/Tests/Test.py")))))) (propagated-inputs - `(("python-markdown" ,python-markdown))) ;optional + (list python-markdown)) ;optional (home-page "https://cheetahtemplate.org/") (synopsis "Template engine") (description "Cheetah is a text-based template engine and Python code -generator. + generator. -Cheetah can be used as a standalone templating utility or referenced as -a library from other Python applications. It has many potential uses, -but web developers looking for a viable alternative to ASP, JSP, PHP and -PSP are expected to be its principle user group. + Cheetah can be used as a standalone templating utility or referenced as + a library from other Python applications. It has many potential uses, + but web developers looking for a viable alternative to ASP, JSP, PHP and + PSP are expected to be its principle user group. -Features: -@enumerate -@item Generates HTML, SGML, XML, SQL, Postscript, form email, LaTeX, or any other - text-based format. -@item Cleanly separates content, graphic design, and program code. -@item Blends the power and flexibility of Python with a simple template language - that non-programmers can understand. -@item Gives template writers full access to any Python data structure, module, - function, object, or method in their templates. -@item Makes code reuse easy by providing an object-orientated interface to - templates that is accessible from Python code or other Cheetah templates. - One template can subclass another and selectively reimplement sections of it. -@item Provides a simple, yet powerful, caching mechanism that can dramatically - improve the performance of a dynamic website. -@item Compiles templates into optimized, yet readable, Python code. -@end enumerate") + Features: + @enumerate + @item Generates HTML, SGML, XML, SQL, Postscript, form email, LaTeX, or any other + text-based format. + @item Cleanly separates content, graphic design, and program code. + @item Blends the power and flexibility of Python with a simple template language + that non-programmers can understand. + @item Gives template writers full access to any Python data structure, module, + function, object, or method in their templates. + @item Makes code reuse easy by providing an object-orientated interface to + templates that is accessible from Python code or other Cheetah templates. + One template can subclass another and selectively reimplement sections of it. + @item Provides a simple, yet powerful, caching mechanism that can dramatically + improve the performance of a dynamic website. + @item Compiles templates into optimized, yet readable, Python code. + @end enumerate") (license (license:x11-style "file://LICENSE")))) (define-public python2-cheetah @@ -16696,16 +17373,13 @@ Features: (setenv "PYTHONHASHSEED" "random") #t))))) (propagated-inputs - `(("python-fastimport" ,python-fastimport) - ("python-urllib3" ,python-urllib3))) + (list python-fastimport python-urllib3)) (native-inputs - `(("python-mock" ,python-mock) - ("python-geventhttpclient" ,python-geventhttpclient) - ("git" ,git))) + (list python-mock python-geventhttpclient git)) (home-page "https://www.dulwich.io/") (synopsis "Git implementation in Python") (description "Dulwich is an implementation of the Git file formats and -protocols written in pure Python.") + protocols written in pure Python.") ;; Can be used with either license. (license (list license:asl2.0 license:gpl2+)))) @@ -16728,17 +17402,17 @@ protocols written in pure Python.") (lambda _ (invoke "python" "test/test_pbkdf2.py")))))) (propagated-inputs - `(("python-pycrypto" ,python-pycrypto))) ; optional + (list python-pycrypto)) ; optional (home-page "https://www.dlitz.net/software/python-pbkdf2/") (synopsis "Password-based key derivation") (description "This module implements the password-based key derivation -function, PBKDF2, specified in RSA PKCS#5 v2.0. + function, PBKDF2, specified in RSA PKCS#5 v2.0. -PKCS#5 v2.0 Password-Based Key Derivation is a key derivation function which -is part of the RSA Public Key Cryptography Standards series. The provided -implementation takes a password or a passphrase and a salt value (and -optionally a iteration count, a digest module, and a MAC module) and provides -a file-like object from which an arbitrarily-sized key can be read.") + PKCS#5 v2.0 Password-Based Key Derivation is a key derivation function which + is part of the RSA Public Key Cryptography Standards series. The provided + implementation takes a password or a passphrase and a salt value (and + optionally a iteration count, a digest module, and a MAC module) and provides + a file-like object from which an arbitrarily-sized key can be read.") (license license:expat))) (define-public python2-pbkdf2 @@ -16759,18 +17433,18 @@ a file-like object from which an arbitrarily-sized key can be read.") ;; FIXME: Tests require packaging 'pymaging'. '(#:tests? #f)) (propagated-inputs - `(("python-lxml" ,python-lxml) ; for SVG output - ("python-pillow" ,python-pillow) ; for PNG output - ("python-six" ,python-six))) + (list python-lxml ; for SVG output + python-pillow ; for PNG output + python-six)) (home-page "https://github.com/lincolnloop/python-qrcode") (synopsis "QR Code image generator") (description "This package provides a pure Python QR Code generator -module. It uses the Python Imaging Library (PIL) to allow for the generation -of QR Codes. + module. It uses the Python Imaging Library (PIL) to allow for the generation + of QR Codes. -In addition this package provides a command line tool to generate QR codes and -either write these QR codes to a file or do the output as ascii art at the -console.") + In addition this package provides a command line tool to generate QR codes and + either write these QR codes to a file or do the output as ascii art at the + console.") (license license:bsd-3))) (define-public python2-qrcode @@ -16789,12 +17463,12 @@ console.") "0vzy6gd60l79ff750scl0sz48r1laalkl6md6dwzah4dcadgn5qv")))) (build-system python-build-system) (propagated-inputs - `(("python-docutils" ,python-docutils))) + (list python-docutils)) (home-page "https://github.com/Snaipe/python-rst-to-ansi") (synopsis "Convert RST to ANSI-decorated console output") (description "Python module dedicated to rendering RST (reStructuredText) documents -to ansi-escaped strings suitable for display in a terminal.") + to ansi-escaped strings suitable for display in a terminal.") (license license:expat))) (define-public python-ansi2html @@ -16810,15 +17484,14 @@ to ansi-escaped strings suitable for display in a terminal.") "1wa00zffprb78w1mqq90dk47czz1knanys2a40zbw2vyapd5lp9y")))) (build-system python-build-system) (native-inputs - `(("python-mock" ,python-mock) - ("python-nose" ,python-nose))) + (list python-mock python-nose)) (propagated-inputs - `(("python-six" ,python-six))) + (list python-six)) (home-page "https://github.com/ralphbean/ansi2html") (synopsis "Convert ANSI-decorated console output to HTML") (description "@command{ansi2html} is a Python library and command line utility for -converting text with ANSI color codes to HTML or LaTeX.") + converting text with ANSI color codes to HTML or LaTeX.") (license license:gpl3+))) (define-public python2-ansi2html @@ -16842,10 +17515,10 @@ converting text with ANSI color codes to HTML or LaTeX.") (synopsis "Terminal framework API") (description "Easy ANSI is a terminal framework API to give you an easy way to use -colors, cursor control movements, and line/box drawing. It is not meant as a -replacement to more full-featured frameworks (such as curses or urwid), but as -a tool to quickly create nice-looking screens in your terminal window. You -can even create animations with the cursor controls.") + colors, cursor control movements, and line/box drawing. It is not meant as a + replacement to more full-featured frameworks (such as curses or urwid), but as + a tool to quickly create nice-looking screens in your terminal window. You + can even create animations with the cursor controls.") (license license:expat))) (define-public python-ddt @@ -16861,15 +17534,15 @@ can even create animations with the cursor controls.") "0y2k756qjz1rhpivi60hy29b4bf0bh3wck39i1mn6pkil9k779k4")))) (build-system python-build-system) (native-inputs - `(("python-pytest" ,python-pytest))) + (list python-pytest)) (propagated-inputs - `(("python-pyyaml" ,python-pyyaml))) + (list python-pyyaml)) (home-page "https://github.com/datadriventests/ddt") (synopsis "Data-Driven Tests") (description "Data-Driven Tests (@dfn{DDT}) allow you to multiply one test case by -running it with different test data, and make it appear as multiple test -cases.") + running it with different test data, and make it appear as multiple test + cases.") (license license:expat))) (define-public python-pycountry @@ -16888,16 +17561,16 @@ cases.") (synopsis "ISO databases for languages, countries, currencies, etc.") (description "@code{pycountry} provides the ISO databases for the standards: -@enumerate -@item 639-3 (Languages) -@item 3166 (Countries) -@item 3166-3 (Deleted Countries) -@item 3166-2 (Subdivisions of countries) -@item 4217 (Currencies) -@item 15924 (Scripts) -@end enumerate -It includes a copy from Debian’s pkg-isocodes and makes the data accessible -through a Python API.") + @enumerate + @item 639-3 (Languages) + @item 3166 (Countries) + @item 3166-3 (Deleted Countries) + @item 3166-2 (Subdivisions of countries) + @item 4217 (Currencies) + @item 15924 (Scripts) + @end enumerate + It includes a copy from Debian’s pkg-isocodes and makes the data accessible + through a Python API.") (license license:lgpl2.1+))) (define-public python2-pycountry @@ -16917,14 +17590,14 @@ through a Python API.") ;; TODO: Unundle picosat. http://fmv.jku.at/picosat/ (build-system python-build-system) (native-inputs - `(("unzip" ,unzip))) + (list unzip)) (home-page "https://github.com/ContinuumIO/pycosat") (synopsis "Bindings to picosat (a SAT solver)") (description "This package provides efficient Python bindings to @code{picosat} on -the C level. When importing pycosat, the @code{picosat} solver becomes part -of the Python process itself. @code{picosat} is a @dfn{Boolean Satisfiability -Problem} (SAT) solver.") + the C level. When importing pycosat, the @code{picosat} solver becomes part + of the Python process itself. @code{picosat} is a @dfn{Boolean Satisfiability + Problem} (SAT) solver.") (license license:expat))) (define-public python2-pycosat @@ -16955,13 +17628,13 @@ Problem} (SAT) solver.") (synopsis "Version of dict that keeps keys in insertion order") (description "This is an implementation of an ordered dictionary with @dfn{Key -Insertion Order} (KIO: updates of values do not affect the position of the -key), @dfn{Key Value Insertion Order} (KVIO, an existing key's position is -removed and put at the back). The standard library module @code{OrderedDict}, -implemented later, implements a subset of @code{ordereddict} functionality. -Sorted dictionaries are also provided. Currently only with @dfn{Key Sorted -Order} (KSO, no sorting function can be specified, but a transform can be -specified to apply on the key before comparison (e.g. @code{string.lower})).") + Insertion Order} (KIO: updates of values do not affect the position of the + key), @dfn{Key Value Insertion Order} (KVIO, an existing key's position is + removed and put at the back). The standard library module @code{OrderedDict}, + implemented later, implements a subset of @code{ordereddict} functionality. + Sorted dictionaries are also provided. Currently only with @dfn{Key Sorted + Order} (KSO, no sorting function can be specified, but a transform can be + specified to apply on the key before comparison (e.g. @code{string.lower})).") (license license:expat))) (define-public python-pypeg2 @@ -16976,15 +17649,15 @@ specified to apply on the key before comparison (e.g. @code{string.lower})).") (base32 "0v8ziaam2r637v94ra4dbjw6jzxz99gs5x4i585kgag1v204yb9b")))) (build-system python-build-system) - (propagated-inputs `(("python-lxml" ,python-lxml))) + (propagated-inputs (list python-lxml)) (arguments ;;https://bitbucket.org/fdik/pypeg/issues/36/test-failures-on-py35 '(#:tests? #f)) (home-page "https://fdik.org/pyPEG/") (synopsis "Parsing Expression Grammars in Python") (description "PyPEG is an intrinsic parser interpreter framework for -Python. It is based on Parsing Expression Grammars, PEG. With pyPEG you can -parse many formal languages.") + Python. It is based on Parsing Expression Grammars, PEG. With pyPEG you can + parse many formal languages.") (license license:gpl2))) (define-public python-incremental @@ -17002,7 +17675,7 @@ parse many formal languages.") (home-page "https://github.com/hawkowl/incremental") (synopsis "Library for versioning Python projects") (description "Incremental is a small library that versions your Python -projects.") + projects.") (license license:expat))) (define-public python2-incremental @@ -17012,39 +17685,50 @@ projects.") (package (name "python-invoke") (home-page "https://www.pyinvoke.org/") - (version "1.5.0") + (version "1.6.0") (source (origin (method url-fetch) (uri (pypi-uri "invoke" version)) (sha256 (base32 - "0l16v7zcbgi36z6pvmdrs5q4ks8lalcafi5d9nhrpcjzbc3n1igh")))) + "1lsql9daabfr31c7syva5myc5bka45k57ygs9fliv63qrwp1wk9p")))) (build-system python-build-system) (arguments ;; XXX: Requires many dependencies that are not yet in Guix. `(#:tests? #f #:phases (modify-phases %standard-phases + (add-after 'unpack 'delete-python2-code + (lambda _ + (delete-file-recursively "invoke/vendor/yaml2"))) (add-after 'unpack 'fix-bash-path (lambda* (#:key inputs #:allow-other-keys) (let ((bash (assoc-ref inputs "bash"))) (substitute* "invoke/config.py" (("shell = \"/bin/bash\"") - (string-append "shell = \"" bash "/bin/bash\"")) - ) - #t)))))) + (string-append "shell = \"" bash "/bin/bash\""))))))))) (inputs `(("bash" ,bash-minimal))) (synopsis "Pythonic task execution") (description "Invoke is a Python task execution tool and library, drawing inspiration -from various sources to arrive at a powerful and clean feature set. It is -evolved from the Fabric project, but focuses on local and abstract concerns -instead of servers and network commands.") + from various sources to arrive at a powerful and clean feature set. It is + evolved from the Fabric project, but focuses on local and abstract concerns + instead of servers and network commands.") (license license:bsd-3))) (define-public python2-invoke - (package-with-python2 python-invoke)) + (let ((parent (package-with-python2 python-invoke))) + (package + (inherit parent) + (arguments + (substitute-keyword-arguments (package-arguments parent) + ((#:phases phases #t) + `(modify-phases ,phases + (delete 'delete-python2-code) + (add-after 'unpack 'delete-python3-code + (lambda _ + (delete-file-recursively "invoke/vendor/yaml3")))))))))) (define-public python-automat (package @@ -17071,17 +17755,14 @@ instead of servers and network commands.") (substitute* "setup.py" (("\"automat-visualize = automat._visualize:tool\"") ""))))))) (native-inputs - `(("python-m2r" ,python-m2r) - ("python-setuptools-scm" ,python-setuptools-scm) - ("python-graphviz" ,python-graphviz))) + (list python-m2r python-setuptools-scm python-graphviz)) (propagated-inputs - `(("python-six" ,python-six) - ("python-attrs" ,python-attrs))) + (list python-six python-attrs)) (home-page "https://github.com/glyph/Automat") (synopsis "Self-service finite-state machines") (description "Automat is a library for concise, idiomatic Python -expression of finite-state automata (particularly deterministic finite-state -transducers).") + expression of finite-state automata (particularly deterministic finite-state + transducers).") (license license:expat))) (define-public python2-automat @@ -17099,15 +17780,13 @@ transducers).") "16gdm8i06jjmlpvckpfmlkr4693dh0vs192vgsqn84fsdkbbm45z")))) (build-system python-build-system) (propagated-inputs - `(("python-docutils" ,python-docutils) - ("python-mistune" ,python-mistune))) + (list python-docutils python-mistune)) (native-inputs - `(("python-pygments" ,python-pygments) - ("python-mock" ,python-mock))) + (list python-pygments python-mock)) (home-page "https://github.com/miyakogi/m2r") (synopsis "Markdown to reStructuredText converter") (description "M2R converts a markdown file including reST markups to valid -reST format.") + reST format.") (license license:expat))) (define-public python2-m2r @@ -17127,8 +17806,8 @@ reST format.") (home-page "https://github.com/twisted/constantly") (synopsis "Symbolic constants in Python") (description "Constantly is a Python library that provides symbolic -constant support. It includes collections and constants with text, numeric, -and bit flag values.") + constant support. It includes collections and constants with text, numeric, + and bit flag values.") (license license:expat))) (define-public python2-constantly @@ -17152,16 +17831,13 @@ and bit flag values.") (when tests? (invoke "pytest"))))))) (native-inputs - `(("python-coverage" ,python-coverage) - ("python-hypothesis" ,python-hypothesis) - ("python-pympler" ,python-pympler) - ("python-pytest" ,python-pytest) - ("python-six" ,python-six))) + (list python-coverage python-hypothesis python-pympler python-pytest + python-six)) (home-page "https://github.com/python-attrs/attrs/") (synopsis "Attributes without boilerplate") (description "@code{attrs} is a Python package with class decorators that -ease the chores of implementing the most common attribute-related object -protocols.") + ease the chores of implementing the most common attribute-related object + protocols.") (license license:expat))) (define-public python2-attrs @@ -17196,15 +17872,14 @@ protocols.") ;; fails due to deprecation warnings, etc. #:tests? #f)) (native-inputs - `(("python-coverage-test-runner" ,python-coverage-test-runner) - ("python-pep8" ,python-pep8))) + (list python-coverage-test-runner python-pep8)) (propagated-inputs - `(("python-pyaml" ,python-pyaml))) + (list python-pyaml)) (home-page "https://liw.fi/cliapp/") (synopsis "Python framework for command line programs") (description "@code{cliapp} is a Python framework for command line -programs. It contains the typical stuff such programs need to do, such -as parsing the command line for options, and iterating over input files.") + programs. It contains the typical stuff such programs need to do, such + as parsing the command line for options, and iterating over input files.") (license license:gpl2+))) (define-public python2-cliapp @@ -17226,8 +17901,7 @@ as parsing the command line for options, and iterating over input files.") (file-name (git-file-name name version)))) (build-system python-build-system) (native-inputs - `(("python-coverage-test-runner" ,python-coverage-test-runner) - ("python-pep8" ,python-pep8))) + (list python-coverage-test-runner python-pep8)) (arguments `(#:phases (modify-phases %standard-phases @@ -17239,11 +17913,11 @@ as parsing the command line for options, and iterating over input files.") (lambda _ (invoke "make" "check")))))) (home-page "https://liw.fi/ttystatus/") (synopsis "Python library for showing progress reporting and -status updates on terminals") + status updates on terminals") (description "@code{ttystatus} is a Python library for showing progress -reporting and status updates on terminals, for command line programs. -Output is automatically adapted to the width of the terminal: truncated -if it does not fit, and resized if the terminal size changes.") + reporting and status updates on terminals, for command line programs. + Output is automatically adapted to the width of the terminal: truncated + if it does not fit, and resized if the terminal size changes.") (license license:gpl3+))) (define-public python2-ttystatus @@ -17268,11 +17942,11 @@ if it does not fit, and resized if the terminal size changes.") (home-page "https://liw.fi/tracing/") (synopsis "Python debug logging helper") (description "@code{python2-tracing} is a python library for -logging debug messages. It provides a way to turn debugging messages -on and off, based on the filename they occur in. It is much faster -than using @code{logging.Filter} to accomplish the same thing, which -matters when code is run in production mode. The actual logging still -happens using the @code{logging} library.") + logging debug messages. It provides a way to turn debugging messages + on and off, based on the filename they occur in. It is much faster + than using @code{logging.Filter} to accomplish the same thing, which + matters when code is run in production mode. The actual logging still + happens using the @code{logging} library.") (license license:gpl3+))) (define-public python-astroid @@ -17290,23 +17964,21 @@ happens using the @code{logging} library.") (base32 "1amzf996inwmh4r3mlpzmch60xs6lrg86vppfnwl1y0l8r0y7zxh")))) (build-system python-build-system) (propagated-inputs - `(("python-lazy-object-proxy" ,python-lazy-object-proxy) - ("python-wrapt" ,python-wrapt))) + (list python-lazy-object-proxy python-wrapt)) (native-inputs - `(("python-pytest" ,python-pytest) - ("python-pytest-runner" ,python-pytest-runner))) + (list python-pytest python-pytest-runner)) (home-page "https://github.com/PyCQA/astroid") (synopsis "Common base representation of python source code for pylint and -other projects") + other projects") (description "@code{python-astroid} provides a common base representation -of python source code for projects such as pychecker, pyreverse, pylint, etc. + of python source code for projects such as pychecker, pyreverse, pylint, etc. -It provides a compatible representation which comes from the _ast module. It -rebuilds the tree generated by the builtin _ast module by recursively walking -down the AST and building an extended ast. The new node classes have -additional methods and attributes for different usages. They include some -support for static inference and local name scopes. Furthermore, astroid -builds partial trees by inspecting living objects.") + It provides a compatible representation which comes from the _ast module. It + rebuilds the tree generated by the builtin _ast module by recursively walking + down the AST and building an extended ast. The new node classes have + additional methods and attributes for different usages. They include some + support for static inference and local name scopes. Furthermore, astroid + builds partial trees by inspecting living objects.") (license license:lgpl2.1+) (properties `((python2-variant . ,(delay python2-astroid)))))) @@ -17324,26 +17996,26 @@ builds partial trees by inspecting living objects.") (base32 "0fir4b67sm7shcacah9n61pvq313m523jb4q80sycrh3p8nmi6zw")))) (arguments - (substitute-keyword-arguments (package-arguments base) - ((#:phases phases) - `(modify-phases ,phases - (add-after 'unpack 'remove-spurious-test - (lambda _ - ;; https://github.com/PyCQA/astroid/issues/276 - (delete-file "astroid/tests/unittest_brain.py") - #t)) - (replace 'check - (lambda _ - (invoke"python" "-m" "unittest" "discover" - "-p" "unittest*.py"))))))) + `(#:python ,python-2 + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'remove-spurious-test + (lambda _ + ;; https://github.com/PyCQA/astroid/issues/276 + (delete-file "astroid/tests/unittest_brain.py"))) + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "python" "-m" "unittest" "discover" + "-p" "unittest*.py"))))))) (native-inputs `()) (propagated-inputs - `(("python2-backports-functools-lru-cache" - ,python2-backports-functools-lru-cache) - ("python2-enum34" ,python2-enum34) - ("python2-singledispatch" ,python2-singledispatch) - ,@(alist-delete "python-typed-ast" - (package-propagated-inputs base))))))) + (list python2-backports-functools-lru-cache + python2-enum34 + python2-lazy-object-proxy + python2-singledispatch + python2-six + python2-wrapt))))) (define-public python-isbnlib (package @@ -17361,9 +18033,9 @@ builds partial trees by inspecting living objects.") (home-page "https://github.com/xlcnd/isbnlib") (synopsis "Python library to work with ISBN strings") (description "@code{python-isbnlib} is a (pure) python library that provides -several useful methods and functions to validate, clean, transform, hyphenate and -get metadata for ISBN strings. Its origin was as the core of isbntools. This short -version, is suitable to be include as a dependency in other projects.") + several useful methods and functions to validate, clean, transform, hyphenate and + get metadata for ISBN strings. Its origin was as the core of isbntools. This short + version, is suitable to be include as a dependency in other projects.") (license license:lgpl3+))) (define-public python-isort @@ -17442,9 +18114,9 @@ version, is suitable to be include as a dependency in other projects.") (home-page "https://github.com/PyCQA/isort") (synopsis "Python utility/library to sort python imports") (description "@code{python-isort} is a python utility/library to sort -imports alphabetically, and automatically separated into sections. It -provides a command line utility, a python library and plugins for various -editors.") + imports alphabetically, and automatically separated into sections. It + provides a command line utility, a python library and plugins for various + editors.") (license license:expat) (properties `((python2-variant . ,(delay python2-isort)))))) @@ -17470,13 +18142,13 @@ editors.") "0jidrkk2w6bhjm197plxiaxrav64mgcrign0bfyr7md2ilc5zplg")))) (build-system python-build-system) (native-inputs - `(("python2-setuptools-scm" ,python2-setuptools-scm))) + (list python2-setuptools-scm)) (arguments `(#:python ,python-2)) (home-page "https://github.com/jaraco/backports.functools_lru_cache") (synopsis "Backport of functools.lru_cache from Python 3.3") (description "@code{python2-backports-functools-lru-cache} is a backport -of @code{functools.lru_cache} from python 3.3.") + of @code{functools.lru_cache} from python 3.3.") (license license:expat))) (define-public python-configparser @@ -17491,13 +18163,13 @@ of @code{functools.lru_cache} from python 3.3.") (base32 "1priacxym85yjcf68hh38w55nqswaxp71ryjyfdk222kg9l85ln7")))) (native-inputs - `(("python-setuptools_scm" ,python-setuptools-scm))) + (list python-setuptools-scm)) (build-system python-build-system) (home-page "https://github.com/jaraco/configparser/") (synopsis "Backport of configparser from python 3.5") (description "@code{python-configparser} is a backport of -@code{configparser} from Python 3.5 so that it can be used directly -in other versions.") + @code{configparser} from Python 3.5 so that it can be used directly + in other versions.") (license license:expat))) (define-public python2-configparser @@ -17518,14 +18190,14 @@ in other versions.") (home-page "https://github.com/RonnyPfannschmidt/iniconfig") (synopsis "Simple INI-file parser") (description "The @code{iniconfig} package provides a small and simple -INI-file parser module having a unique set of features; @code{iniconfig} -@itemize -@item maintains the order of sections and entries; -@item supports multi-line values with or without line-continuations; -@item supports \"#\" comments everywhere; -@item raises errors with proper line-numbers; -@item raises an error when two sections have the same name. -@end itemize") + INI-file parser module having a unique set of features ; @code{iniconfig} + @itemize + @item maintains the order of sections and entries ; + @item supports multi-line values with or without line-continuations ; + @item supports \"#\" comments everywhere ; + @item raises errors with proper line-numbers ; + @item raises an error when two sections have the same name. + @end itemize") (license license:expat))) (define-public python-mamba @@ -17541,13 +18213,12 @@ INI-file parser module having a unique set of features; @code{iniconfig} (build-system python-build-system) (arguments `(#:tests? #f)) ; No test (propagated-inputs - `(("python-clint" ,python-clint) - ("python-coverage" ,python-coverage))) + (list python-clint python-coverage)) (home-page "https://nestorsalceda.com/mamba/") (synopsis "Test runner for Python") (description "Mamba is a Behaviour-Driven Development tool for Python developers. -Is heavily influenced from RSpec, Mocha, Jasmine or Ginkgo.") + Is heavily influenced from RSpec, Mocha, Jasmine or Ginkgo.") (license license:expat))) (define-public python-mando @@ -17562,16 +18233,15 @@ Is heavily influenced from RSpec, Mocha, Jasmine or Ginkgo.") "0q6rl085q1hw1wic52pqfndr0x3nirbxnhqj9akdm5zhq2fv3zkr")))) (build-system python-build-system) (propagated-inputs - `(("python-rst2ansi" ,python-rst2ansi) - ("python-six" ,python-six))) + (list python-rst2ansi python-six)) (native-inputs - `(("python-pytest" ,python-pytest))) + (list python-pytest)) (home-page "https://mando.readthedocs.org/") (synopsis "Wrapper around argparse, allowing creation of complete CLI applications") (description "This package is a wrapper around argparse, allowing you to write complete CLI -applications in seconds while maintaining all the flexibility.") + applications in seconds while maintaining all the flexibility.") (license license:expat))) (define-public python2-mando @@ -17595,7 +18265,7 @@ applications in seconds while maintaining all the flexibility.") (synopsis "Python command-line parsing library") (description "This package is mostly for people who want to have @code{argparse} on -older Pythons because it was not part of the standard library back then.") + older Pythons because it was not part of the standard library back then.") (license license:psfl))) (define-public python-mwclient @@ -17614,14 +18284,10 @@ older Pythons because it was not part of the standard library back then.") (base32 "120snnsh9n5svfwkyj1w9jrxf99jnqm0jk282yypd3lpyca1l9hj")))) (build-system python-build-system) (propagated-inputs - `(("python-requests-oauthlib" ,python-requests-oauthlib) - ("python-six" ,python-six))) + (list python-requests-oauthlib python-six)) (native-inputs - `(("python-mock" ,python-mock) - ("python-pytest" ,python-pytest) - ("python-pytest-cov" ,python-pytest-cov) - ("python-pytest-runner" ,python-pytest-runner) - ("python-responses" ,python-responses))) + (list python-mock python-pytest python-pytest-cov + python-pytest-runner python-responses)) (home-page "https://github.com/btongminh/mwclient") (synopsis "MediaWiki API client") (description "This package provides a MediaWiki API client.") @@ -17654,7 +18320,7 @@ older Pythons because it was not part of the standard library back then.") (synopsis "Convenient utilities not included with the standard Python install") (description "Python Utils is a collection of small Python functions and classes which -make common patterns shorter and easier.") + make common patterns shorter and easier.") (license license:bsd-2))) (define-public python-diff-match-patch @@ -17672,7 +18338,7 @@ make common patterns shorter and easier.") (home-page "https://code.google.com/p/google-diff-match-patch") (synopsis "Synchronize plain text") (description "Diff Match and Patch libraries offer robust algorithms to -perform the operations required for synchronizing plain text.") + perform the operations required for synchronizing plain text.") (license license:asl2.0))) (define-public python2-diff-match-patch @@ -17691,7 +18357,7 @@ perform the operations required for synchronizing plain text.") "1gm82jddm1lkazdi8lfsl1b3vi1z0252ng60mzjym8irnv94qfhy")))) (build-system python-build-system) (propagated-inputs - `(("six" ,python-six))) + (list python-six)) (home-page "https://github.com/tkhyn/dirsync") (synopsis "Advanced directory tree synchronisation tool") (description "Advanced directory tree synchronisation tool.") @@ -17703,26 +18369,26 @@ perform the operations required for synchronizing plain text.") (define-public python-levenshtein (package (name "python-levenshtein") - (version "0.12.0") + (version "0.12.2") (source (origin (method url-fetch) (uri (pypi-uri "python-Levenshtein" version)) (sha256 (base32 - "1c9ybqcja31nghfcc8xxbbz9h60s9qi12b9hr4jyl69xbvg12fh3")))) + "1xj60gymwx1jl2ra9razx2wk8nb9cv1i7l8d14qsp8a8s7xra8yw")))) (build-system python-build-system) (home-page "https://github.com/ztane/python-Levenshtein") (synopsis "Fast computation of Levenshtein distance and string similarity") (description "The Levenshtein Python C extension module contains functions for fast computation of -@enumerate -@item Levenshtein (edit) distance, and edit operations -@item string similarity -@item approximate median strings, and generally string averaging -@item string sequence and set similarity -@end enumerate -It supports both normal and Unicode strings.") + @enumerate + @item Levenshtein (edit) distance, and edit operations + @item string similarity + @item approximate median strings, and generally string averaging + @item string sequence and set similarity + @end enumerate + It supports both normal and Unicode strings.") (license license:gpl2+))) (define-public python2-levenshtein @@ -17748,12 +18414,12 @@ It supports both normal and Unicode strings.") (synopsis "Directory iteration function") (description "Directory iteration function like os.listdir(), except that instead of -returning a list of bare filenames, it yields DirEntry objects that include -file type and stat information along with the name. Using scandir() increases -the speed of os.walk() by 2-20 times (depending on the platform and file -system) by avoiding unnecessary calls to os.stat() in most cases. + returning a list of bare filenames, it yields DirEntry objects that include + file type and stat information along with the name. Using scandir() increases + the speed of os.walk() by 2-20 times (depending on the platform and file + system) by avoiding unnecessary calls to os.stat() in most cases. -This package is part of the Python standard library since version 3.5.") + This package is part of the Python standard library since version 3.5.") (license license:bsd-3))) (define-public python2-scandir @@ -17776,10 +18442,10 @@ This package is part of the Python standard library since version 3.5.") (synopsis "Python implementations of various stemming algorithms") (description "Python implementations of the Porter, Porter2, Paice-Husk, and Lovins -stemming algorithms for English. These implementations are straightforward and -efficient, unlike some Python versions of the same algorithms available on the -Web. This package is an extraction of the stemming code included in the Whoosh -search engine.") + stemming algorithms for English. These implementations are straightforward and + efficient, unlike some Python versions of the same algorithms available on the + Web. This package is an extraction of the stemming code included in the Whoosh + search engine.") (license license:public-domain))) (define-public python-factory-boy @@ -17803,38 +18469,37 @@ search engine.") (description "Factory_boy is a fixtures replacement based on thoughtbot’s factory_girl. -As a fixtures replacement tool, it aims to replace static, hard to maintain -fixtures with easy-to-use factories for complex object. + As a fixtures replacement tool, it aims to replace static, hard to maintain + fixtures with easy-to-use factories for complex object. -Instead of building an exhaustive test setup with every possible combination -of corner cases, factory_boy allows you to use objects customized for the -current test, while only declaring the test-specific fields") + Instead of building an exhaustive test setup with every possible combination + of corner cases, factory_boy allows you to use objects customized for the + current test, while only declaring the test-specific fields") (license license:expat))) (define-public python-translate-toolkit (package (name "python-translate-toolkit") - (version "2.1.0") + (version "3.5.1") (source (origin (method url-fetch) - (uri (pypi-uri "translate-toolkit" version ".tar.bz2")) + (uri (pypi-uri "translate-toolkit" version ".tar.gz")) (sha256 - (base32 "1vlkwrg83vb17jc36pmwh2b7jphwf390lz0jw8hakcg16qhwypvq")))) + (base32 "020pp7pbpnavxd41z90vyzzx06ci57mx9drkgbsb89wxxx4gal9v")))) (build-system python-build-system) (native-inputs - `(("python-pytest" ,python-pytest) - ("python-sphinx" ,python-sphinx))) + (list python-pytest python-sphinx)) (propagated-inputs - `(("python-babel" ,python-babel) - ("python-beautifulsoup4" ,python-beautifulsoup4) - ("python-chardet" ,python-chardet) - ("python-diff-match-patch" ,python-diff-match-patch) - ("python-levenshtein" ,python-levenshtein) - ("python-lxml" ,python-lxml) - ("python-six" ,python-six) - ("python-vobject" ,python-vobject) - ("python-pyyaml" ,python-pyyaml))) + (list python-babel + python-beautifulsoup4 + python-chardet + python-diff-match-patch + python-levenshtein + python-lxml + python-six + python-vobject + python-pyyaml)) (arguments ;; TODO: tests are not run, because they end with ;; TypeError: parse() missing 2 required positional arguments: 'tree' and @@ -17845,35 +18510,32 @@ current test, while only declaring the test-specific fields") (synopsis "Tools and API for translation and localization engineering") (description "Tools and API for translation and localization engineering. It contains -several utilities, as well as an API for building localization tools.") + several utilities, as well as an API for building localization tools.") (license license:gpl2+))) +;; Required for virtaal, newer versions do not build with python2 (define-public python2-translate-toolkit - (package-with-python2 python-translate-toolkit)) + (package-with-python2 + (package + (inherit python-translate-toolkit) + (version "2.1.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "translate-toolkit" version ".tar.bz2")) + (sha256 + (base32 "1vlkwrg83vb17jc36pmwh2b7jphwf390lz0jw8hakcg16qhwypvq"))))))) (define-public python-packaging - (package + (package/inherit python-packaging-bootstrap (name "python-packaging") - (version "20.0") - (source - (origin - (method url-fetch) - (uri (pypi-uri "packaging" version)) - ;; XXX: The URL in the patch file is wrong, it should be - ;; <https://github.com/pypa/packaging/pull/256>. - (patches (search-patches "python-packaging-test-arch.patch")) - (sha256 - (base32 - "1y2ip3a4ykkpgnwgn85j6hkspcl0cg3mzms97f40mk57vwqq67gy")))) - (build-system python-build-system) (arguments `(#:phases (modify-phases %standard-phases (replace 'check (lambda* (#:key tests? #:allow-other-keys) (if tests? - (invoke "py.test" "-vv") - (format #t "test suite not run~%")) - #t))))) + (invoke "pytest" "-vv") + (format #t "test suite not run~%"))))))) (native-inputs `(("python-pretend" ,python-pretend) ("python-pytest" ,python-pytest))) @@ -17883,8 +18545,8 @@ several utilities, as well as an API for building localization tools.") (home-page "https://github.com/pypa/packaging") (synopsis "Core utilities for Python packages") (description "Packaging is a Python module for dealing with Python packages. -It offers an interface for working with package versions, names, and dependency -information.") + It offers an interface for working with package versions, names, and dependency + information.") ;; From 'LICENSE': This software is made available under the terms of ;; *either* of the licenses found in LICENSE.APACHE or LICENSE.BSD. ;; Contributions to this software is made under the terms of *both* these @@ -17894,37 +18556,6 @@ information.") (define-public python2-packaging (package-with-python2 python-packaging)) -;; Variants with minimal dependencies, for bootstrapping Pytest. -(define-public python-packaging-bootstrap - (hidden-package - (package/inherit - python-packaging - (name "python-packaging-bootstrap") - (arguments - (substitute-keyword-arguments (package-arguments python-packaging) - ((#:phases phases) - `(modify-phases ,phases - (add-after 'unpack 'fix-dependencies - (lambda* (#:key tests? #:allow-other-keys) - (substitute* "setup.py" (("\"six\"") "")))))) - ((#:tests? _ #f) #f))) - (native-inputs '()) - (propagated-inputs - `(("python-pyparsing" ,python-pyparsing)))))) - -(define-public python2-packaging-bootstrap - (hidden-package - (package/inherit - python2-packaging - (name "python2-packaging-bootstrap") - (native-inputs '()) - (propagated-inputs - `(("python-pyparsing" ,python2-pyparsing) - ("python-six" ,python2-six-bootstrap))) - (arguments - `(#:tests? #f - ,@(package-arguments python2-packaging)))))) - (define-public python-relatorio (package (name "python-relatorio") @@ -17938,20 +18569,16 @@ information.") "09nhrz80dfm60nssbvjgz4czzy4yzfa8gxczcdlzbgcnnvm914vb")))) (build-system python-build-system) (propagated-inputs - `(("python-lxml" ,python-lxml) - ("python-genshi" ,python-genshi))) + (list python-lxml python-genshi)) (native-inputs - `(("python-magic" ,python-magic))) + (list python-magic)) (home-page "https://relatorio.tryton.org/") (synopsis "Templating library able to output ODT and PDF files") (description "Relatorio is a templating library which provides a way to -easily output ODT, ODS, PNG, SVG and several other kinds of files. Support -for more filetypes can be easily added by creating plugins for them.") + easily output ODT, ODS, PNG, SVG and several other kinds of files. Support + for more filetypes can be easily added by creating plugins for them.") (license license:gpl3+))) -(define-public python2-relatorio - (package-with-python2 python-relatorio)) - (define-public python-radon (package (name "python-radon") @@ -17977,22 +18604,19 @@ for more filetypes can be easily added by creating plugins for them.") (lambda _ (invoke "python" "radon/tests/run.py")))))) (propagated-inputs - `(("python-colorama" ,python-colorama) - ("python-flake8-polyfill" ,python-flake8-polyfill) - ("python-mando" ,python-mando))) + (list python-colorama python-flake8-polyfill python-mando)) (native-inputs - `(("python-pytest" ,python-pytest) - ("python-pytest-mock" ,python-pytest-mock))) + (list python-pytest python-pytest-mock)) (home-page "https://radon.readthedocs.org/") (synopsis "Code Metrics in Python") (description "Radon is a Python tool which computes various code metrics. -Supported metrics are: -@itemize @bullet -@item raw metrics: SLOC, comment lines, blank lines, &c. -@item Cyclomatic Complexity (i.e. McCabe’s Complexity) -@item Halstead metrics (all of them) -@item the Maintainability Index (a Visual Studio metric) -@end itemize") + Supported metrics are: + @itemize @bullet + @item raw metrics: SLOC, comment lines, blank lines, &c. + @item Cyclomatic Complexity (i.e. McCabe’s Complexity) + @item Halstead metrics (all of them) + @item the Maintainability Index (a Visual Studio metric) + @end itemize") (properties `((python2-variant . ,(delay python2-radon)))) (license license:expat))) @@ -18017,15 +18641,14 @@ Supported metrics are: "1and0drq8w9iplsic22n2h7hkpyq03a1mbqk4sgcdqhqzdqm539w")))) (build-system python-build-system) (propagated-inputs - `(("python-mock" ,python-mock) - ("python-six" ,python-six))) + (list python-mock python-six)) (native-inputs - `(("python-nose" ,python-nose))) + (list python-nose)) (home-page "https://github.com/gabrielfalcao/sure") (synopsis "Automated testing library in python for python") (description "Sure is a python library that leverages a DSL for writing assertions. -Sure is heavily inspired by @code{RSpec Expectations} and @code{should.js}.") + Sure is heavily inspired by @code{RSpec Expectations} and @code{should.js}.") (license license:gpl3+))) (define-public python2-sure @@ -18052,7 +18675,7 @@ Sure is heavily inspired by @code{RSpec Expectations} and @code{should.js}.") "ANSI terminal tool for python, colored shell and other handy fancy features") (description "@code{Couleur} provides python programs a way to use the ANSI features in a unix -terminal such as coloured output in the shell, overwriting output, indentation, etc.") + terminal such as coloured output in the shell, overwriting output, indentation, etc.") ;; README.md says ASL2.0, but all source code headers are LGPL3+. ;; https://github.com/gabrielfalcao/couleur/issues/11 (license license:lgpl3+))) @@ -18077,13 +18700,13 @@ terminal such as coloured output in the shell, overwriting output, indentation, ;; for which it does not have the permission to write. #:tests? #f)) (propagated-inputs - `(("python-cffi" ,python-cffi))) + (list python-cffi)) (home-page "https://github.com/FSX/misaka") (synopsis "Python binding for Hoedown") (description "@code{Misaka} is a CFFI-based binding for @code{Hoedown}, a fast markdown processing -library written in C. It features a fast HTML renderer and functionality to make custom -renderers (e.g. man pages or LaTeX).") + library written in C. It features a fast HTML renderer and functionality to make custom + renderers (e.g. man pages or LaTeX).") (license license:expat))) (define-public python2-misaka @@ -18105,9 +18728,7 @@ renderers (e.g. man pages or LaTeX).") "1640i9g8dycql3cc8j0bky0jkzj0q39blfbp4lsgpkprkfgcdk8v")))) (build-system python-build-system) (native-inputs - `(("python-couleur" ,python2-couleur) - ("python-sure" ,python2-sure) - ("python-misaka" ,python2-misaka))) + (list python2-couleur python2-sure python2-misaka)) (arguments `(#:python ,python-2 #:phases @@ -18123,9 +18744,9 @@ renderers (e.g. man pages or LaTeX).") (synopsis "Markdown-based test runner for python") (description "@code{Steadymark} allows documentation to be written in github-flavoured -markdown. The documentation may contain snippets of code surrounded by python -code blocks and @code{Steadymark} will find these snippets and run them, making -sure that there are no old malfunctional examples in the documentation examples.") + markdown. The documentation may contain snippets of code surrounded by python + code blocks and @code{Steadymark} will find these snippets and run them, making + sure that there are no old malfunctional examples in the documentation examples.") (license license:expat))) (define-public python-jsonpointer @@ -18143,7 +18764,7 @@ sure that there are no old malfunctional examples in the documentation examples. (home-page "https://github.com/stefankoegl/python-json-pointer") (synopsis "Identify specific nodes in a JSON document") (description "@code{jsonpointer} allows you to access specific nodes -by path in a JSON document (see RFC 6901).") + by path in a JSON document (see RFC 6901).") (license license:bsd-3))) (define-public python2-jsonpointer @@ -18166,11 +18787,11 @@ by path in a JSON document (see RFC 6901).") "0k9pff06lxama3nhsc7cdxbp83422bdy8ifs52i6xkas8hpyzfzr")))) (build-system python-build-system) (propagated-inputs - `(("python-jsonpointer" ,python-jsonpointer))) + (list python-jsonpointer)) (home-page "https://github.com/stefankoegl/python-json-patch") (synopsis "Applying JSON Patches in Python 2.6+ and 3.x") (description "@code{jsonpatch} is a library and program that allows -applying JSON Patches according to RFC 6902.") + applying JSON Patches according to RFC 6902.") (license license:bsd-3))) (define-public python2-jsonpatch @@ -18212,13 +18833,13 @@ applying JSON Patches according to RFC 6902.") (lambda _ (invoke "pytest" "-v")))))) (native-inputs - `(("python-pytest" ,python-pytest))) + (list python-pytest)) (home-page "https://rfc3986.readthedocs.io/") (synopsis "Parse and validate URI references") (description "@code{rfc3986} is a Python implementation of RFC@tie{}3986 including -validation and authority parsing. This module also supports RFC@tie{}6874 -which adds support for zone identifiers to IPv6 addresses.") + validation and authority parsing. This module also supports RFC@tie{}6874 + which adds support for zone identifiers to IPv6 addresses.") (license license:asl2.0))) (define-public python2-rfc3986 @@ -18239,7 +18860,7 @@ which adds support for zone identifiers to IPv6 addresses.") (home-page "https://pypi.org/project/rfc3987/") (synopsis "Parsing and validation of URIs (RFC 3986) and IRIs (RFC 3987)") (description "@code{rfc3987} provides routines for parsing and -validation of URIs (see RFC 3986) and IRIs (see RFC 3987).") + validation of URIs (see RFC 3986) and IRIs (see RFC 3987).") (license license:gpl3+))) (define-public python2-rfc3987 @@ -18272,13 +18893,13 @@ validation of URIs (see RFC 3986) and IRIs (see RFC 3987).") (invoke "pytest" "tests/test_ipv6.py") #t)))))) (native-inputs - `(("python-pytest" ,python-pytest))) + (list python-pytest)) (home-page "https://pypi.org/project/rfc6555/") (synopsis "Python implementation of RFC 6555") (description "Python implementation of the Happy Eyeballs Algorithm described in RFC -6555. Provided with a single file and dead-simple API to allow easy vendoring -and integration into other projects.") + 6555. Provided with a single file and dead-simple API to allow easy vendoring + and integration into other projects.") (license license:asl2.0)))) (define-public python-bagit @@ -18294,14 +18915,12 @@ and integration into other projects.") "1m6y04qmig0b5hzb35lnaw3d2yfydb7alyr1579yblvgs3da6j7j")))) (build-system python-build-system) (native-inputs - `(("python-setuptools-scm" ,python-setuptools-scm) - ("python-coverage" ,python-coverage) - ("python-mock" ,python-mock))) + (list python-setuptools-scm python-coverage python-mock)) (home-page "https://libraryofcongress.github.io/bagit-python/") (synopsis "Create and validate BagIt packages") (description "Bagit is a Python library and command line utility for working -with BagIt style packages. BagIt is a minimalist packaging format for digital -preservation.") + with BagIt style packages. BagIt is a minimalist packaging format for digital + preservation.") (license license:cc0))) (define-public python-prov @@ -18317,19 +18936,15 @@ preservation.") "1vi2fj31vygfcqrkimdmk52q2ldw08g9fn4v4zlgdfgcjlhqyhxn")))) (build-system python-build-system) (propagated-inputs - `(("python-dateutil" ,python-dateutil) - ("python-lxml" ,python-lxml) - ("python-networkx" ,python-networkx) - ("python-rdflib" ,python-rdflib))) + (list python-dateutil python-lxml python-networkx python-rdflib)) (native-inputs - `(("graphviz" ,graphviz) - ("python-pydot" ,python-pydot))) + (list graphviz python-pydot)) (home-page "https://github.com/trungdong/prov") (synopsis "W3C Provenance Data Model supporting PROV-JSON, PROV-XML and PROV-O (RDF)") (description "This package provides a library for W3C Provenance Data Model supporting -PROV-O (RDF), PROV-XML, PROV-JSON import/export.") + PROV-O (RDF), PROV-XML, PROV-JSON import/export.") (license license:expat))) (define-public python-arcp @@ -18345,23 +18960,23 @@ PROV-O (RDF), PROV-XML, PROV-JSON import/export.") "1p8mfyjssa6pbn5dp6pyzv9yy6kwm2rz5jn2kjbq5vy9f9wsq5sw")))) (build-system python-build-system) (native-inputs - `(("python-pytest" ,python-pytest))) + (list python-pytest)) (home-page "http://arcp.readthedocs.io/") (synopsis "Archive and Package URI parser and generator") (description "@acronym{arcp, Archive and Package} provides functions for creating -@code{arcp_} URIs, which can be used for identifying or parsing hypermedia files -packaged in an archive or package, like a ZIP file. arcp URIs can be used to -consume or reference hypermedia resources bundled inside a file archive or an -application package, as well as to resolve URIs for archive resources within a -programmatic framework. This URI scheme provides mechanisms to generate a -unique base URI to represent the root of the archive, so that relative URI -references in a bundled resource can be resolved within the archive without -having to extract the archive content on the local file system. An arcp URI can -be used for purposes of isolation (e.g. when consuming multiple archives), -security constraints (avoiding \"climb out\" from the archive), or for -externally identiyfing sub-resources referenced by hypermedia formats.") + @code{arcp_} URIs, which can be used for identifying or parsing hypermedia files + packaged in an archive or package, like a ZIP file. arcp URIs can be used to + consume or reference hypermedia resources bundled inside a file archive or an + application package, as well as to resolve URIs for archive resources within a + programmatic framework. This URI scheme provides mechanisms to generate a + unique base URI to represent the root of the archive, so that relative URI + references in a bundled resource can be resolved within the archive without + having to extract the archive content on the local file system. An arcp URI can + be used for purposes of isolation (e.g. when consuming multiple archives), + security constraints (avoiding \"climb out\" from the archive), or for + externally identiyfing sub-resources referenced by hypermedia formats.") (license license:asl2.0))) (define-public python-shellescape @@ -18389,15 +19004,15 @@ externally identiyfing sub-resources referenced by hypermedia formats.") (invoke "python" "tests/test_shellescape.py")) #t))))) (native-inputs - `(("python-pytest" ,python-pytest))) + (list python-pytest)) (home-page "https://github.com/chrissimpkins/shellescape") (synopsis "Shell escape a string to safely use it as a token in a shell command") (description "The shellescape Python module defines the @code{shellescape.quote()} -function that returns a shell-escaped version of a Python string. This is a -backport of the @code{shlex.quote()} function from Python 3.8 that makes it -accessible to users of Python 3 versions < 3.3 and all Python 2.x versions.") + function that returns a shell-escaped version of a Python string. This is a + backport of the @code{shlex.quote()} function from Python 3.8 that makes it + accessible to users of Python 3 versions < 3.3 and all Python 2.x versions.") (license license:expat))) (define-public python-validators @@ -18417,24 +19032,18 @@ accessible to users of Python 3 versions < 3.3 and all Python 2.x versions.") (lambda _ (invoke "pytest" "-vv")))))) (propagated-inputs - `(("python-decorator" ,python-decorator) - ("python-six" ,python-six))) + (list python-decorator python-six)) (native-inputs - `(("python-flake8" ,python-flake8) - ("python-isort" ,python-isort) - ("python-pytest" ,python-pytest))) + (list python-flake8 python-isort python-pytest)) (home-page "https://github.com/kvesteri/validators") (synopsis "Data validation library") (description "This package contains validators for different things such as email -addresses, IP addresses, URLs, hashes and more. It has been designed to -be easy to use and not require defining a schema or form just to validate -some input.") + addresses, IP addresses, URLs, hashes and more. It has been designed to + be easy to use and not require defining a schema or form just to validate + some input.") (license license:expat))) -(define-public python2-validators - (package-with-python2 python-validators)) - (define-public python-validate-email (package (name "python-validate-email") @@ -18450,7 +19059,7 @@ some input.") (home-page "https://github.com/syrusakbary/validate_email") (synopsis "Verifies if an email address is valid and really exists") (description "@code{validate_email} can be used to verify if an email -address is valid and really exists.") + address is valid and really exists.") (license license:lgpl3+))) (define-public python2-validate-email @@ -18469,14 +19078,14 @@ address is valid and really exists.") "00pamnwla3khk8nyla7y28dq9jnh69swd7f4jfsl7sn1izs8n8zk")))) (build-system python-build-system) (propagated-inputs - `(("python-click" ,python-click) - ("python-iso8601" ,python-iso8601) - ("python-jsonpointer" ,python-jsonpointer) - ("python-pyyaml" ,python-pyyaml) - ("python-requests" ,python-requests) - ("python-rfc3987" ,python-rfc3987) - ("python-six" ,python-six) - ("python-validate-email" ,python-validate-email))) + (list python-click + python-iso8601 + python-jsonpointer + python-pyyaml + python-requests + python-rfc3987 + python-six + python-validate-email)) (home-page "https://github.com/pipermerriam/flex") (synopsis "Validates Swagger schemata") (description "@code{flex} can be used to validate Swagger schemata.") @@ -18498,16 +19107,55 @@ address is valid and really exists.") "0kizhh3mnhpa08wfnsv1gagy22bpxzxszgbiylkhpz1d8qvwrykk")))) (build-system python-build-system) (propagated-inputs - `(("python-dateutil" ,python-dateutil) - ("python-simplejson" ,python-simplejson))) + (list python-dateutil python-simplejson)) (native-inputs - `(("python-pytest" ,python-pytest) - ("python-pytz" ,python-pytz))) + (list python-pytest python-pytz)) (home-page "https://github.com/marshmallow-code/marshmallow") (synopsis "Convert complex datatypes to and from native -Python datatypes.") + Python datatypes") (description "@code{marshmallow} provides a library for converting -complex datatypes to and from native Python datatypes.") + complex datatypes to and from native Python datatypes.") + (license license:expat))) + +(define-public python-marshmallow-3.2 + (package + (inherit python-marshmallow) + (version "3.2.1") + (source + (origin + (method url-fetch) + (uri (pypi-uri "marshmallow" version)) + (sha256 + (base32 "1w18klwj0z9bqxj252qpj1hz8l46nl27sbc89rkajc7mln73wbws")))))) + +(define-public python-marshmallow-jsonapi + (package + (name "python-marshmallow-jsonapi") + (version "0.24.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "marshmallow-jsonapi" version)) + (sha256 + (base32 "1d9pxcgmln4gls99vwj1h24qv0lz7fb2jqmqrsiv1pid1snc125x")))) + (build-system python-build-system) + (propagated-inputs + (list python-marshmallow-3.2)) + (native-inputs + (list python-faker + python-flake8 + python-flake8-bugbear + python-flask + python-mock + python-pre-commit + python-pytest + python-tox)) + (home-page "https://github.com/marshmallow-code/marshmallow-jsonapi") + (synopsis "JSON:API 1.0 formatting with Marshmallow") + (description + "The marshmallow-jsonapi package provides a simple way to produce + @uref{https://jsonapi.org, JSON:API}-compliant data in any Python Web framework. + It includes optional utilities to integrate with Flask.") (license license:expat))) (define-public python-apispec @@ -18532,15 +19180,14 @@ complex datatypes to and from native Python datatypes.") ;; yet in Guix. "-k" "not openapi_tools_validate")))))) (propagated-inputs - `(("python-pyyaml" ,python-pyyaml))) + (list python-pyyaml)) (native-inputs - `(("python-pytest" ,python-pytest) - ("python-marshmallow" ,python-marshmallow))) + (list python-pytest python-marshmallow)) (home-page "https://github.com/marshmallow-code/apispec") (synopsis "Swagger/OpenAPI specification generator") (description "@code{python-apispec} is a pluggable API specification -generator. It currently supports the OpenAPI specification, formerly known -as Swagger.") + generator. It currently supports the OpenAPI specification, formerly known + as Swagger.") (license license:expat))) (define-public python-flasgger @@ -18567,24 +19214,21 @@ as Swagger.") "flake8 flasgger --ignore=E731,F403")) (invoke "py.test")))))) (propagated-inputs - `(("python-flask" ,python-flask) - ("python-pyyaml" ,python-pyyaml) - ("python-jsonschema" ,python-jsonschema) - ("python-mistune" ,python-mistune) - ("python-six" ,python-six))) + (list python-flask python-pyyaml python-jsonschema python-mistune + python-six)) (native-inputs - `(("python-decorator" ,python-decorator) - ("python-flake8" ,python-flake8) - ("python-flask-restful" ,python-flask-restful) - ("python-flex" ,python-flex) - ("python-pytest" ,python-pytest) - ("python-pytest-cov" ,python-pytest-cov) - ("python-marshmallow" ,python-marshmallow) - ("python-apispec" ,python-apispec))) + (list python-decorator + python-flake8 + python-flask-restful + python-flex + python-pytest + python-pytest-cov + python-marshmallow + python-apispec)) (home-page "https://github.com/rochacbruno/flasgger/") (synopsis "Extract Swagger specs from your Flask project") (description "@code{python-flasgger} allows extracting Swagger specs -from your Flask project. It is a fork of Flask-Swagger.") + from your Flask project. It is a fork of Flask-Swagger.") (license license:expat))) (define-public python-swagger-spec-validator @@ -18600,19 +19244,14 @@ from your Flask project. It is a fork of Flask-Swagger.") "11g627icrsqwazsncwi0sdvprcj6hwaayw5xk3xsj8d97bmrzqjp")))) (build-system python-build-system) (propagated-inputs - `(("python-jsonschema" ,python-jsonschema) - ("python-pyyaml" ,python-pyyaml) - ("python-six" ,python-six))) + (list python-jsonschema python-pyyaml python-six)) (home-page "https://github.com/Yelp/swagger_spec_validator") (synopsis "Validation of Swagger specifications") (description "@code{swagger_spec_validator} provides a library for -validating Swagger API specifications.") + validating Swagger API specifications.") (license license:asl2.0))) -(define-public python2-swagger-spec-validator - (package-with-python2 python-swagger-spec-validator)) - (define-public python-apache-libcloud (package (name "python-apache-libcloud") @@ -18639,7 +19278,7 @@ validating Swagger API specifications.") (substitute* "libcloud/test/compute/test_ssh_client.py" (("class ShellOutSSHClientTests") "@unittest.skip(\"Guix container doesn't have ssh service\") -class ShellOutSSHClientTests")) + class ShellOutSSHClientTests")) #t)) (add-before 'check 'copy-secret (lambda _ @@ -18647,20 +19286,16 @@ class ShellOutSSHClientTests")) "libcloud/test/secrets.py") #t))))) (inputs - `(("openssh" ,openssh))) + (list openssh)) (propagated-inputs - `(("python-paramiko" ,python-paramiko) - ("python-requests" ,python-requests))) + (list python-paramiko python-requests)) (native-inputs - `(("python-lockfile" ,python-lockfile) - ("python-mock" ,python-mock) - ("python-pytest" ,python-pytest) - ("python-pytest-runner" ,python-pytest-runner) - ("python-requests-mock" ,python-requests-mock))) + (list python-lockfile python-mock python-pytest python-pytest-runner + python-requests-mock)) (home-page "https://libcloud.apache.org/") (synopsis "Unified Cloud API") (description "@code{libcloud} is a Python library for interacting with -many of the popular cloud service providers using a unified API.") + many of the popular cloud service providers using a unified API.") (license license:asl2.0))) (define-public python-smmap @@ -18675,22 +19310,16 @@ many of the popular cloud service providers using a unified API.") (base32 "0ijlnv60y8f41py1wnn5n1a1i81cxd9dfpdhr0k3cgkrcbz8850p")))) (build-system python-build-system) (native-inputs - `(("python-nosexcover" ,python-nosexcover))) + (list python-nosexcover)) (home-page "https://github.com/Byron/smmap") (synopsis "Python sliding window memory map manager") (description "@code{smmap} is a pure Python implementation of a sliding -window memory map manager.") + window memory map manager.") (license license:bsd-3))) -(define-public python-smmap2 - (deprecated-package "python-smmap2" python-smmap)) - (define-public python2-smmap (package-with-python2 python-smmap)) -(define-public python2-smmap2 - (deprecated-package "python2-smmap2" python2-smmap)) - (define-public python-regex (package (name "python-regex") @@ -18709,13 +19338,13 @@ window memory map manager.") (lambda* (#:key inputs outputs #:allow-other-keys) (add-installed-pythonpath inputs outputs) (invoke "python" "-c" - "from regex.test_regex import test_main; test_main()")))))) - (home-page "https://bitbucket.org/mrabarnett/mrab-regex") - (synopsis "Alternative regular expression module") - (description "This regular expression implementation is backwards- + "from regex.test_regex import test_main ; test_main()")))))) + (home-page "https://bitbucket.org/mrabarnett/mrab-regex") + (synopsis "Alternative regular expression module") + (description "This regular expression implementation is backwards- compatible with the standard @code{re} module, but offers additional functionality like full case-folding for case-insensitive matches in Unicode.") - (license license:psfl))) + (license license:psfl))) (define-public python2-regex (package-with-python2 python-regex)) @@ -18733,9 +19362,7 @@ functionality like full case-folding for case-insensitive matches in Unicode.") "091lp9bpqi8yf1nmyg19xmvw611lrzq2q94cl1k5gnlh0c6vl1s1")))) (build-system python-build-system) (inputs - `(("mesa" ,mesa) - ("freeglut" ,freeglut) - ("glu" ,glu))) + (list mesa freeglut glu)) (arguments `(#:tests? #f ; Tests fail: AttributeError: 'GLXPlatform' object has no ;attribute 'OSMesa' @@ -18779,8 +19406,7 @@ library.") (base32 "01iggy5jwxv7lxnj51zbmlbhag9wcb7dvrbwgi97i90n0a5m3r8j")))) (inputs - `(("mesa" ,mesa) - ("python-numpy" ,python-numpy))) ; for cython module + (list mesa python-numpy)) ; for cython module ; numpy_formathandler, thus not propagated (arguments `(#:tests? #f @@ -18812,8 +19438,7 @@ library.") (lambda _ (delete-file "rencode/t.py") #t))))) - (native-inputs `(("pkg-config" ,pkg-config) - ("python-cython" ,python-cython))) + (native-inputs (list pkg-config python-cython)) (home-page "https://github.com/aresch/rencode") (synopsis "Serialization of heterogeneous data structures") (description @@ -18841,11 +19466,8 @@ pure Python module.") "0nv207ql2wmh9q62503np056c4vf1c1hlsi5cvv5p5kx574k6r2y")))) (build-system python-build-system) (native-inputs - `(("python-pyyaml" ,python-pyyaml) - ("python-radon" ,python-radon) - ("python-requests" ,python-requests) - ("python-flake8" ,python-flake8) - ("python-tox" ,python-tox))) + (list python-pyyaml python-radon python-requests python-flake8 + python-tox)) (arguments `(#:tests? #f ;test suite not shipped with the PyPI archive #:phases @@ -18939,9 +19561,9 @@ ignoring formatting changes.") #t)))))) (home-page "https://pydub.com") (inputs - `(("ffmpeg" ,ffmpeg))) + (list ffmpeg)) (propagated-inputs - `(("python-scipy" ,python-scipy))) + (list python-scipy)) (synopsis "Manipulate audio with a high level interface in Python") (description "@code{pydub} makes it easy to manipulate audio in Python. It relies on @@ -18966,11 +19588,8 @@ ignoring formatting changes.") (lambda _ (invoke "pytest" "-vv" "-k" "not perf")))))) (native-inputs - `(("python-pytest" ,python-pytest) - ("python-pytest-asyncio" ,python-pytest-asyncio) - ("python-pytest-timeout" ,python-pytest-timeout) - ("python-setuptools-scm" ,python-setuptools-scm) - ("python-toml" ,python-toml))) + (list python-pytest python-pytest-asyncio python-pytest-timeout + python-setuptools-scm python-toml)) (home-page "https://github.com/tqdm/tqdm") (synopsis "Fast, extensible progress meter") (description @@ -19030,12 +19649,12 @@ created by running @code{python setup.py develop}).") (base32 "11rpd653zcgzkq3sgwkzs3mpxl3r5rij59745ni84ikv8smjmlm3")))) (build-system python-build-system) (propagated-inputs - `(("python-tqdm" ,python-tqdm) - ("python-packaging" ,python-packaging) - ("python-pkginfo" ,python-pkginfo) - ("python-readme-renderer" ,python-readme-renderer) - ("python-requests" ,python-requests) - ("python-requests-toolbelt" ,python-requests-toolbelt))) + (list python-tqdm + python-packaging + python-pkginfo + python-readme-renderer + python-requests + python-requests-toolbelt)) (home-page "https://github.com/pypa/twine") (synopsis "Collection of utilities for interacting with PyPI") (description @@ -19094,8 +19713,7 @@ lines are read from a single file.") (native-inputs `(("python-pbr" ,python-pbr-minimal))) (propagated-inputs - `(("python-linecache2" ,python-linecache2) - ("python-six" ,python-six))) + (list python-linecache2 python-six)) (home-page "https://github.com/testing-cabal/traceback2") (synopsis "Backports of the traceback module") @@ -19196,10 +19814,20 @@ services.") (base32 "1nii1sz5jq75ilf18bjnr11l9rz1lvdmyk66bxl7q90qan85yhjj")))) (build-system python-build-system) + (arguments + '(#:phases (modify-phases %standard-phases + (add-after 'unpack 'dont-install-defunct-egginfo + (lambda _ + ;; When a ".git" directory is missing, the setup.py + ;; script invokes setuptools.setup twice, once with + ;; "0" as the version. Prevent that. + (substitute* "setup.py" + (("if not isdir\\('\\.git'\\):") + "if False:"))))))) (native-inputs - `(("python-pytest" ,python-pytest))) + (list python-pytest)) (propagated-inputs - `(("python-setuptools-scm" ,python-setuptools-scm))) + (list python-setuptools-scm)) (home-page "https://github.com/Changaco/setuptools_scm_git_archive/") (synopsis "Setuptools_scm plugin for git archives") (description @@ -19266,13 +19894,10 @@ Git.") (with-directory-excursion "pyclipper" (invoke "cython" "--cplus" "pyclipper.pyx"))))))) (propagated-inputs - `(("python-setuptools-scm-git-archive" ,python-setuptools-scm-git-archive))) + (list python-setuptools-scm-git-archive)) (native-inputs - `(("python-cython" ,python-cython) - ("python-pytest" ,python-pytest) - ("python-pytest-runner" ,python-pytest-runner) - ("python-unittest2" ,python-unittest2) - ("unzip" ,unzip))) + (list python-cython python-pytest python-pytest-runner + python-unittest2 unzip)) (home-page "https://github.com/greginvm/pyclipper") (synopsis "Wrapper for Angus Johnson's Clipper library") (description @@ -19298,13 +19923,9 @@ Angus Johnson's polygon clipping Clipper library (ver. 6.4.2).") (arguments `(#:python ,python-2)) (native-inputs - `(("unzip" ,unzip) - ("python2-pytest" ,python2-pytest) - ("python2-pytest-runner" ,python2-pytest-runner))) + (list unzip python2-pytest python2-pytest-runner)) (propagated-inputs - `(("python-fonttools" ,python2-fonttools) - ("python-pyclipper" ,python2-pyclipper) - ("python-ufolib" ,python2-ufolib))) + (list python2-fonttools python2-pyclipper python2-ufolib)) (home-page "https://github.com/typemytype/booleanOperations") (synopsis "Boolean operations on paths") (description @@ -19378,10 +19999,9 @@ particularly convenient for use in tests.") (lambda (filename) (string-suffix? ".py" filename))))))))) (native-inputs - `(("python-tempdir" ,python-tempdir) - ("python-nose" ,python-nose))) + (list python-tempdir python-nose)) (propagated-inputs - `(("python-h5py" ,python-h5py))) + (list python-h5py)) (home-page "https://www.activepapers.org/") (synopsis "Executable papers for scientific computing") (description @@ -19427,7 +20047,7 @@ such as figshare or Zenodo.") (delete-file "setup.cfg") (invoke "py.test")))))) (native-inputs - `(("python-pytest" ,python-pytest))) + (list python-pytest)) (home-page "https://github.com/k-bx/python-semver") (synopsis "Python helper for Semantic Versioning") (description "This package provides a Python library for @@ -19451,11 +20071,9 @@ such as figshare or Zenodo.") (arguments '(#:tests? #f)) ;FIXME: Some tests require network access. (native-inputs - `(("python-cloudpickle" ,python-cloudpickle) - ("python-dill" ,python-dill) - ("python-msgpack" ,python-msgpack))) + (list python-cloudpickle python-dill python-msgpack)) (propagated-inputs - `(("python-serpent" ,python-serpent))) + (list python-serpent)) (home-page "https://pyro4.readthedocs.io") (synopsis "Distributed object middleware for Python") (description @@ -19509,10 +20127,9 @@ is the new Pyro version that is actively developed.") "16l48aj9fps9r7jyk8gpxppwrv0fqvlc13sayxskz28r5s6sjwbl")))) (build-system python-build-system) (inputs - `(("netcdf" ,netcdf))) + (list netcdf)) (propagated-inputs - `(("python-numpy" ,python2-numpy-1.8) - ("python-pyro" ,python2-pyro))) + (list python2-numpy-1.8 python2-pyro)) (arguments ;; ScientificPython is not compatible with Python 3 `(#:python ,python-2 @@ -19549,7 +20166,7 @@ not actively maintained and works only with Python 2 and NumPy < 1.9.") "1fqwh3ba9jd42nigvn5shndgwb1zy7kh9520ncvqci7n8ffjr6p1")))) (build-system python-build-system) (native-inputs - `(("netcdf" ,netcdf))) + (list netcdf)) (propagated-inputs `(("python-scientific" ,python2-scientific) ("python-tkinter" ,python-2 "tk"))) @@ -19631,9 +20248,9 @@ queue.") "05pd1hyhqvpw87rnbvl3vdyf619snpyccbswaxisdj17frwnjacf")))) (build-system python-build-system) (propagated-inputs - `(("python-heapdict" ,python-heapdict))) + (list python-heapdict)) (native-inputs - `(("python-pytest" ,python-pytest))) + (list python-pytest)) (home-page "https://zict.readthedocs.io/en/latest/") (synopsis "Composable mutable mapping tools") (description "This package provides abstract @code{MutableMapping} classes @@ -19682,9 +20299,8 @@ user's @file{~/Trash} directory.") `(modify-phases ,phases (add-before 'check 'setenv (lambda _ - (setenv "PYTHONPATH" - (string-append (getcwd) ":" (getenv "PYTHONPATH"))) - #t))))))))) + (setenv "GUIX_PYTHONPATH" + (string-append (getcwd) ":" (getenv "GUIX_PYTHONPATH")))))))))))) (define-public python-pyfavicon (package @@ -19702,9 +20318,7 @@ user's @file{~/Trash} directory.") ;; repository require online data. '(#:tests? #f)) (propagated-inputs - `(("python-aiohttp" ,python-aiohttp) - ("python-beautifulsoup4" ,python-beautifulsoup4) - ("python-pillow" ,python-pillow))) + (list python-aiohttp python-beautifulsoup4 python-pillow)) (home-page "https://github.com/bilelmoussaoui/pyfavicon") (synopsis "Async favicon fetcher") (description @@ -19723,9 +20337,7 @@ user's @file{~/Trash} directory.") (base32 "090krlxj7az0d9yl8i20vjrqi66dfxx7y5xakjhxzsfp7qmldnc7")))) (build-system python-build-system) (propagated-inputs - `(("python-pathspec" ,python-pathspec) - ("python-pyyaml" ,python-pyyaml) - ("python-setuptools" ,python-setuptools))) + (list python-pathspec python-pyyaml python-setuptools)) (home-page "https://github.com/adrienverge/yamllint") (synopsis "Linter for YAML files") (description @@ -19782,14 +20394,9 @@ style guide, even if the original code didn't violate the style guide.") "/bin/jq"))) #t))))) (inputs - `(("python-argcomplete" ,python-argcomplete) - ("python-pyyaml" ,python-pyyaml) - ("python-xmltodict" ,python-xmltodict) - ("jq" ,jq))) + (list python-argcomplete python-pyyaml python-xmltodict jq)) (native-inputs - `(("python-coverage" ,python-coverage) - ("python-flake8" ,python-flake8) - ("python-wheel" ,python-wheel))) + (list python-coverage python-flake8 python-wheel)) (home-page "https://github.com/kislyuk/yq") (synopsis "Command-line YAML/XML processor") (description @@ -19851,7 +20458,7 @@ files, and Makefiles.") (lambda _ (invoke "py.test")))))) (native-inputs - `(("python-pytest" ,python-pytest))) + (list python-pytest)) (home-page "https://github.com/Suor/whatever") (synopsis "Make anonymous functions by partial application of operators") (description "@code{whatever} provides an easy way to make anonymous @@ -19882,8 +20489,7 @@ functions by partial application of operators.") (lambda _ (invoke "py.test")))))) (native-inputs - `(("python-pytest" ,python-pytest) - ("python-whatever" ,python-whatever))) + (list python-pytest python-whatever)) (home-page "https://github.com/Suor/funcy") (synopsis "Functional tools") (description "@code{funcy} is a library that provides functional tools. @@ -19968,11 +20574,9 @@ Week instances stringify to this form.") (string-append "'" libzbar "/lib/libzbar.so.0'"))) #t)))))) (native-inputs - `(("pkg-config" ,pkg-config) - ("python-numpy" ,python-numpy) - ("python-pillow" ,python-pillow))) + (list pkg-config python-numpy python-pillow)) (inputs - `(("zbar" ,zbar))) + (list zbar)) (home-page "https://github.com/NaturalHistoryMuseum/pyzbar/") (synopsis "Read one-dimensional barcodes and QR codes") (description @@ -20022,7 +20626,7 @@ and @code{tokens_to_src} to roundtrip.") "0ydxqz2dvns44g55p8ix2x18qkfk3aaz0m0dc70f3g6n8js35h47")))) (build-system python-build-system) (propagated-inputs - `(("python-tokenize-rt" ,python-tokenize-rt))) + (list python-tokenize-rt)) (home-page "https://github.com/asottile/future-fstrings") (synopsis "Backport of fstrings to Python < 3.6") (description @@ -20052,7 +20656,7 @@ source bytes using the UTF-8 encoding and then rewrites Python 3.6 style (replace 'check (lambda _ (invoke "pytest")))))) - (native-inputs `(("python-pytest" ,python-pytest))) + (native-inputs (list python-pytest)) (home-page "https://github.com/python/typed_ast") (synopsis "Fork of Python @code{ast} modules with type comment support") (description "This package provides a parser similar to the standard @@ -20082,36 +20686,35 @@ based on the CPython 2.7 and 3.7 parsers.") (arguments `(#:phases (modify-phases %standard-phases - (add-before 'check 'disable-failing-tests + ;; Unfortunately, this doesn't seem to be enough to fix these two + ;; tests, but we'll patch this anyway. + (add-after 'unpack 'patch-shell-reference (lambda _ (substitute* "tests/test_completion/test_completion.py" - (("def test_show_completion") - "def _test_show_completion") - (("def test_install_completion") - "def _test_install_completion")) - (substitute* "tests/test_completion/test_completion_install.py" - (("def test_completion_install_bash") - "def _test_completion_install_bash") - (("def test_completion_install_zsh") - "def _test_completion_install_zsh") - (("def test_completion_install_fish") - "def _test_completion_install_fish") - (("def test_completion_install_powershell") - "def _test_completion_install_powershell")) - #t)) + (("\"bash\"") (string-append "\"" (which "bash") "\"")) + (("\"/bin/bash\"") (string-append "\"" (which "bash") "\""))))) (replace 'check - (lambda _ - (setenv "PYTHONPATH" - (string-append (getcwd) ":" - (getenv "PYTHONPATH"))) - (invoke "python" "-m" "pytest" "tests/") - #t))))) + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (setenv "HOME" "/tmp") ; some tests need it + + ;; This is for completion tests + (with-output-to-file "/tmp/.bashrc" (lambda _ (display "# dummy"))) + + (setenv "GUIX_PYTHONPATH" + (string-append (getcwd) ":" + (getenv "GUIX_PYTHONPATH"))) + (let ((disabled-tests (list "test_show_completion" + "test_install_completion"))) + (invoke "python" "-m" "pytest" "tests/" + "-k" + (string-append "not " + (string-join disabled-tests + " and not ")))))))))) (propagated-inputs - `(("python-click" ,python-click))) + (list python-click)) (native-inputs - `(("python-coverage" ,python-coverage) - ("python-pytest" ,python-pytest) - ("python-shellingham" ,python-shellingham))) + (list python-coverage python-pytest python-shellingham)) (home-page "https://github.com/tiangolo/typer") (synopsis "Typer builds CLI based on Python type hints") @@ -20212,22 +20815,19 @@ Included are implementations of: '("bpython3" "bpython3-curses" "bpython3-urwid" "bpdb3"))) #t))))) (propagated-inputs - `(("python-pygments" ,python-pygments) - ("python-requests" ,python-requests) - ("python-curtsies" ,python-curtsies) - ("python-greenlet" ,python-greenlet) - ("python-six" ,python-six) - ("python-cwcwidth" ,python-cwcwidth) - ("python-pyxdg" ,python-pyxdg) - ;; optional dependencies - ("python-urwid" ,python-urwid) ; for bpython-urwid only - ("python-watchdog" ,python-watchdog) - ("python-jedi" ,python-jedi))) + (list python-pygments + python-requests + python-curtsies + python-greenlet + python-six + python-cwcwidth + python-pyxdg + ;; optional dependencies + python-urwid ; for bpython-urwid only + python-watchdog + python-jedi)) (native-inputs - `(("python-sphinx" ,python-sphinx) - ("python-mock" ,python-mock) - ("python-tox" ,python-tox) - ("python-wheel" ,python-wheel))) + (list python-sphinx python-mock python-tox python-wheel)) (home-page "https://bpython-interpreter.org/") (synopsis "Fancy interface to the Python interpreter") (description "Bpython is a fancy interface to the Python @@ -20283,7 +20883,7 @@ file system events on Linux.") "14gv8ll3ipqv4kyc2xiy891nrmjl4ic823zfyx8hassagyclyppw")))) (build-system python-build-system) (native-inputs - `(("unzip" ,unzip))) + (list unzip)) (arguments `(#:python ,python-2 #:tests? #f @@ -20373,7 +20973,7 @@ working with iterables.") (base32 "0wnp3yqcgx0rpy8dz51vh75lbp2qif67da19zi7m3ca98n887hgb")))) (build-system python-build-system) (inputs - `(("python-six" ,python-six))) + (list python-six)) (home-page "https://readthedocs.org/projects/latexcodec/") (synopsis "Work with LaTeX code in Python") (description "Lexer and codec to work with LaTeX code in Python.") @@ -20391,11 +20991,9 @@ working with iterables.") (base32 "070wfcmxrd7xg1si421mi9150gmx2qwx431nwf69sq3hhmgnx080")))) (build-system python-build-system) (native-inputs - `(("python-nose" ,python-nose))) + (list python-nose)) (inputs - `(("python-latexcodec" ,python-latexcodec) - ("python-pyyaml" ,python-pyyaml) - ("python-six" ,python-six))) + (list python-latexcodec python-pyyaml python-six)) (arguments `(#:test-target "nosetests")) (home-page "https://pybtex.org/") @@ -20415,7 +21013,7 @@ in Python. You can simply type pybtex instead of bibtex.") (sha256 (base32 "09vagxgbq78wvq4xbikmn2hpqqsa2i96kqsmphf7dqynfv0dlsd5")))) (build-system python-build-system) - (propagated-inputs `(("python-six" ,python-six))) + (propagated-inputs (list python-six)) (home-page "https://github.com/tadeck/onetimepass/") (synopsis "One-time password library") (description "Python one-time password library for HMAC-based (HOTP) and @@ -20433,7 +21031,7 @@ time-based (TOTP) passwords.") (sha256 (base32 "161k8771m7w60qakyvrwf9q62lvakmix7mpfylpy7713qs939f0j")))) (native-inputs - `(("python-pytest" ,python-pytest))) + (list python-pytest)) (build-system python-build-system) (arguments `(#:phases (modify-phases %standard-phases @@ -20462,7 +21060,7 @@ Parso is also able to list multiple syntax errors in your Python file.") "0i11f6z6lix8ixi3vsk6s76zvvpmgrw6zjrcwjm0m4hjdh83vfvf")))) (build-system python-build-system) (native-inputs - `(("python-pytest" ,python-pytest))) + (list python-pytest)) (home-page "https://github.com/python-trio/async_generator") (synopsis "Async generators and context managers for Python 3.5+") (description "@code{async_generator} back-ports Python 3.6's native async @@ -20537,9 +21135,9 @@ Glob2 currently based on the glob code from Python 3.3.1.") "0pd9by719qh882hqs6xpby61sn1x5h98hms5p2p8yqnycrf1s0h2")))) (build-system python-build-system) (native-inputs - `(("unzip" ,unzip))) + (list unzip)) (propagated-inputs - `(("python-gevent" ,python-gevent))) + (list python-gevent)) (home-page "https://gehrcke.de/gipc/") (synopsis "Child process management in the context of gevent") (description "Usage of Python's multiprocessing package in a @@ -20561,7 +21159,7 @@ gevent-powered application.") "0wwlbifcbpzy3wfv6yzsxncarsngzizmmxbn6cy5gazlcq7h4k5x")))) (build-system python-build-system) (propagated-inputs - `(("python-wcwidth" ,python-wcwidth))) + (list python-wcwidth)) (arguments `(#:phases (modify-phases %standard-phases @@ -20635,14 +21233,13 @@ path components.") (("setup\\(") "setup(\n test_suite=\"test\","))))))) (propagated-inputs - `(("python-beautifultable" ,python-beautifultable) - ("python-dateutil" ,python-dateutil) - ("python-gitpython" ,python-gitpython) - ("python-globber" ,python-globber) - ("python-matplotlib" ,python-matplotlib) - ("python-sqlalchemy" ,python-sqlalchemy) - ("python-sqlalchemy-utils" - ,python-sqlalchemy-utils))) + (list python-beautifultable + python-dateutil + python-gitpython + python-globber + python-matplotlib + python-sqlalchemy + python-sqlalchemy-utils)) (home-page "https://github.com/asharov/git-hammer") (synopsis "Provide statistics for git repositories") (description @@ -20674,7 +21271,7 @@ commit, but it also includes some other useful statistics.") (string-append "'" fuse "/lib/libfuse.so'"))) #t)))))) (propagated-inputs - `(("fuse" ,fuse))) + (list fuse)) (home-page "https://github.com/fusepy/fusepy") (synopsis "Simple ctypes bindings for FUSE") (description "Python module that provides a simple interface to FUSE and @@ -20707,9 +21304,9 @@ MacFUSE. The binding is created using the standard @code{ctypes} library.") (string-append "\"" fuse "/lib/libfuse.so\"")))) #t))))) (inputs - `(("fuse" ,fuse))) + (list fuse)) (propagated-inputs - `(("python-paramiko" ,python-paramiko))) + (list python-paramiko)) (home-page "https://github.com/rianhunter/fusepyng") (synopsis "Simple ctypes bindings for FUSE") (description "@code{fusepyng} is a Python module that provides a simple @@ -20717,20 +21314,39 @@ interface to FUSE on various operating systems. It's just one file and is implemented using @code{ctypes}.") (license license:isc))) +(define-public python-update-checker + (package + (name "python-update-checker") + (version "0.18.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "update-checker" version)) + (sha256 + (base32 "04yb5a9mi45ax50m2m0ih6gdvkk1j7gfmy83dd58i1f59axlabba")))) + (build-system python-build-system) + (propagated-inputs (list python-requests)) + (native-inputs (list python-black python-flake8 python-pytest)) + (home-page "https://github.com/bboe/update_checker") + (synopsis "Python module that will check for package updates") + (description "This package provides a Python module that will check for +package updates.") + (license license:bsd-2))) + (define-public python-userspacefs (package (name "python-userspacefs") - (version "2.0.3") + (version "2.0.4") (source (origin (method url-fetch) (uri (pypi-uri "userspacefs" version)) (sha256 (base32 - "1v6saf62ml3j63adalvlkj4iavxjbsbapl20b21mn73p7kvn4ayf")))) + "06f2gsiypas270nqfjir4wwjlpkjp097pm6zchc7k20ggg32gv1k")))) (build-system python-build-system) (propagated-inputs - `(("python-fusepyng" ,python-fusepyng))) + (list python-fusepyng)) (home-page "https://github.com/rianhunter/userspacefs") (synopsis "User-space file systems for Python") (description @@ -20770,13 +21386,9 @@ user-space file systems in Python.") (delete-file "test/test_python_gen.py") (invoke "pytest"))))))) (propagated-inputs - `(("python-ply" ,python-ply) - ("python-six" ,python-six))) + (list python-ply python-six)) (native-inputs - `(("python-coverage" ,python-coverage) - ("python-mock" ,python-mock) - ("python-pytest" ,python-pytest) - ("python-pytest-runner" ,python-pytest-runner))) + (list python-coverage python-mock python-pytest python-pytest-runner)) (home-page "https://github.com/dropbox/stone") (synopsis "Official Api Spec Language for Dropbox") (description @@ -20846,9 +21458,7 @@ inferring type information using compile-time introspection.") (arguments `(#:tests? #f)) ;requires online data (propagated-inputs - `(("python-appdirs" ,python-appdirs) - ("python-packaging" ,python-packaging) - ("python-requests" ,python-requests))) + (list python-appdirs python-packaging python-requests)) (home-page "https://github.com/fatiando/pooch") (synopsis "Manage your Python library's sample data files") (description @@ -20870,10 +21480,9 @@ and corruption checks.") "1vzmz1xh38b84dv0f4hlp7arwmx8wjlih6lf964bpy8dnyk6s5rs")))) (build-system python-build-system) (propagated-inputs - `(("python-monotonic" ,python-monotonic) - ("python-six" ,python-six))) + (list python-monotonic python-six)) (native-inputs - `(("python-testtools" ,python-testtools))) + (list python-testtools)) (home-page "https://github.com/harlowja/fasteners") (synopsis "Python package that provides useful locks") (description @@ -20900,8 +21509,7 @@ and corruption checks.") "1yp2jaxg3v86pia0q512dg3hz6s9y5vzdivsgrba1kds05ial14g")))) (build-system python-build-system) (propagated-inputs - `(("python-requests" ,python-requests) - ("python-six" ,python-six))) + (list python-requests python-six)) (home-page "https://github.com/dashea/requests-file") (synopsis "File transport adapter for Requests") @@ -20938,10 +21546,9 @@ library to allow local file system access via @code{file://} URLs.") (when tests? (invoke "pytest" "-vv"))))))) (native-inputs - `(("python-coverage" ,python-coverage) - ("python-pytest" ,python-pytest))) + (list python-coverage python-pytest)) (propagated-inputs - `(("python-editdistance" ,python-editdistance))) + (list python-editdistance)) (home-page "https://github.com/chriskuehl/identify") (synopsis "File identification library for Python") (description @@ -20963,12 +21570,9 @@ identifying what the file is.") "1d5s8v6kpsgazyahflhji1cfdcf89rv7l7z55v774bhzvcjp2y99")))) (build-system python-build-system) (native-inputs - `(("python-pytest" ,python-pytest) - ("python-responses" ,python-responses))) + (list python-pytest python-responses)) (propagated-inputs - `(("python-idna" ,python-idna) - ("python-requests" ,python-requests) - ("python-requests-file" ,python-requests-file))) + (list python-idna python-requests python-requests-file)) (home-page "https://github.com/john-kurkowski/tldextract") (synopsis @@ -21007,12 +21611,9 @@ Public Suffix List's private domains as well.") ;; This test fails. It tries to open a network socket. (invoke "pytest" "-vv" "-k" "not test_error_message"))))))) (native-inputs - `(("python-pytest" ,python-pytest) - ("python-pytest-runner" ,python-pytest-runner))) + (list python-pytest python-pytest-runner)) (inputs - `(("python-argcomplete" ,python-argcomplete) - ("python-colorama" ,python-colorama) - ("python-termcolor" ,python-termcolor))) + (list python-argcomplete python-colorama python-termcolor)) (home-page "https://github.com/tldr-pages/tldr-python-client") (synopsis "Python command-line client for tldr pages") (description "This package provides the @code{tldr} command allowing users @@ -21043,9 +21644,7 @@ effort to simplify the man pages with practical examples.") ;; This test fails. It tries to open a network socket. (invoke "pytest" "-vv" "-k" "not test_smoke")))))) (native-inputs - `(("python-coverage" ,python-coverage) - ("python-mock" ,python-mock) - ("python-pytest" ,python-pytest))) + (list python-coverage python-mock python-pytest)) (home-page "https://ekalinin.github.io/nodeenv/") (synopsis "Create isolated node.js environments") (description @@ -21068,7 +21667,7 @@ environments.") "0wkbwz208j8nfrsmzmclvxg22ymknn0mlz76wbdza9k2bx2zja6l")))) (build-system python-build-system) (propagated-inputs - `(("python-requests" ,python-requests))) + (list python-requests)) (home-page "https://github.com/Bemmu/PyNamecheap") (synopsis @@ -21095,11 +21694,8 @@ environments.") (arguments `(#:tests? #f)) ;requires internet access (propagated-inputs - `(("python-future" ,python-future) - ("python-pynamecheap" ,python-pynamecheap) - ("python-requests" ,python-requests) - ("python-tldextract" ,python-tldextract) - ("python-urllib3" ,python-urllib3))) + (list python-future python-pynamecheap python-requests + python-tldextract python-urllib3)) (home-page "https://github.com/AnalogJ/lexicon") (synopsis "Manipulate DNS records on various DNS providers") @@ -21135,9 +21731,7 @@ Let's Encrypt.") (lambda _ (invoke "pytest" "-vv")))))) (native-inputs - `(("python-covdefaults" ,python-covdefaults) - ("python-coverage" ,python-coverage) - ("python-pytest" ,python-pytest))) + (list python-covdefaults python-coverage python-pytest)) (home-page "https://github.com/asottile/cfgv") (synopsis "Configuration validation library") (description @@ -21170,14 +21764,14 @@ validation testing and application logic.") (define-public python-numba (package (name "python-numba") - (version "0.51.2") + (version "0.54.1") (source (origin (method url-fetch) (uri (pypi-uri "numba" version)) (sha256 (base32 - "0s0777m8kq4l96i88zj78np7283v1n4878qfc1gvzb8l45bmkg8n")))) + "0gzl2hz9azav9mny4mga19096rrnpw5816r1h4iwrvb4r01wipzr")))) (build-system python-build-system) (arguments `(#:phases @@ -21185,24 +21779,27 @@ validation testing and application logic.") (add-after 'unpack 'disable-proprietary-features (lambda _ (setenv "NUMBA_DISABLE_HSA" "1") - (setenv "NUMBA_DISABLE_CUDA" "1") - #t)) + (setenv "NUMBA_DISABLE_CUDA" "1"))) + (add-after 'unpack 'disable-failing-tests + (lambda _ + ;; This one test fails because a deprecation warning is printed. + (substitute* "numba/tests/test_import.py" + (("def test_no_accidental_warnings") + "def disabled_test_no_accidental_warnings")))) (replace 'check - (lambda* (#:key inputs outputs #:allow-other-keys) - (add-installed-pythonpath inputs outputs) - ;; Something is wrong with the PYTHONPATH when running the - ;; tests from the build directory, as it complains about not being - ;; able to import certain modules. - (with-directory-excursion "/tmp" - (setenv "HOME" (getcwd)) - (invoke "python3" "-m" "numba.runtests" "-v" "-m"))))))) + (lambda* (#:key tests? inputs outputs #:allow-other-keys) + (when tests? + (add-installed-pythonpath inputs outputs) + ;; Something is wrong with the PYTHONPATH when running the + ;; tests from the build directory, as it complains about not being + ;; able to import certain modules. + (with-directory-excursion "/tmp" + (setenv "HOME" (getcwd)) + (invoke "python3" "-m" "numba.runtests" "-v" "-m")))))))) (propagated-inputs - `(("python-llvmlite" ,python-llvmlite) - ("python-numpy" ,python-numpy) - ("python-singledispatch" ,python-singledispatch))) + (list python-llvmlite python-numpy python-singledispatch)) (native-inputs ;for tests - `(("python-jinja2" ,python-jinja2) - ("python-pygments" ,python-pygments))) + (list python-jinja2 python-pygments)) (home-page "https://numba.pydata.org") (synopsis "Compile Python code using LLVM") (description "Numba gives you the power to speed up your applications with @@ -21226,14 +21823,49 @@ tool).") (uri (pypi-uri "numcodecs" version)) (sha256 (base32 - "0kbfr8pl3x9glsypbq8hzim003f16ml1b1cvgrh4w1sdvgal6j7g")))) + "0kbfr8pl3x9glsypbq8hzim003f16ml1b1cvgrh4w1sdvgal6j7g")) + (modules '((guix build utils))) + (snippet + '(begin + (delete-file-recursively "c-blosc") + (for-each delete-file '("numcodecs/blosc.c" + "numcodecs/compat_ext.c" + "numcodecs/lz4.c" + "numcodecs/vlen.c" + "numcodecs/zstd.c")))))) (build-system python-build-system) + (arguments + `(#:tests? #false ; TODO: unclear why numcodecs.* are not found + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'disable-avx2 + (lambda _ + (setenv "DISABLE_NUMCODECS_AVX2" "1"))) + (add-after 'unpack 'unbundle + (lambda _ + (substitute* "setup.py" + (("sources=sources \\+ blosc_sources,") + "sources=sources,") + (("extra_compile_args=extra_compile_args") + "extra_compile_args=list(base_compile_args)") + (("'numcodecs.zstd',") + "'numcodecs.zstd', libraries=['zstd'], ") + (("'numcodecs.lz4',") + "'numcodecs.lz4', libraries=['lz4'], ") + (("'numcodecs.blosc',") + "'numcodecs.blosc', libraries=['blosc'], ")))) + (replace 'check + (lambda* (#:key tests? inputs outputs #:allow-other-keys) + (when tests? + (add-installed-pythonpath inputs outputs) + (invoke "pytest" "-vv"))))))) + (inputs + (list c-blosc lz4 zlib + `(,zstd "lib"))) (propagated-inputs - `(("python-numpy" ,python-numpy) - ("python-msgpack" ,python-msgpack))) + (list python-numpy python-msgpack)) (native-inputs - `(("python-pytest" ,python-pytest) - ("python-setuptools-scm" ,python-setuptools-scm))) + (list python-cython python-pytest python-setuptools-scm)) (home-page "https://github.com/zarr-developers/numcodecs") (synopsis "Buffer compression and transformation codecs") (description @@ -21284,13 +21916,10 @@ codecs for use in data storage and communication applications.") (invoke "pytest" "-vv" "-k" "not lmdb") #t))))) (propagated-inputs - `(("python-asciitree" ,python-asciitree) - ("python-fasteners" ,python-fasteners) - ("python-numcodecs" ,python-numcodecs) - ("python-numpy" ,python-numpy))) + (list python-asciitree python-fasteners python-numcodecs + python-numpy)) (native-inputs - `(("python-pytest" ,python-pytest) - ("python-setuptools-scm" ,python-setuptools-scm))) + (list python-pytest python-setuptools-scm)) (home-page "https://github.com/zarr-developers/zarr-python") (synopsis "Chunked, compressed, N-dimensional arrays for Python") (description @@ -21341,20 +21970,17 @@ N-dimensional arrays for Python.") (find-files "dist" "\\.whl$"))) #t))))) (propagated-inputs - `(("python-h5py" ,python-h5py) - ("python-importlib-metadata" ,python-importlib-metadata) - ("python-natsort" ,python-natsort) - ("python-numcodecs" ,python-numcodecs) - ("python-packaging" ,python-packaging) - ("python-pandas" ,python-pandas) - ("python-scipy" ,python-scipy) - ("python-zarr" ,python-zarr))) + (list python-h5py + python-importlib-metadata + python-natsort + python-numcodecs + python-packaging + python-pandas + python-scipy + python-zarr)) (native-inputs - `(("python-joblib" ,python-joblib) - ("python-pytest" ,python-pytest) - ("python-toml" ,python-toml) - ("python-flit" ,python-flit) - ("python-setuptools-scm" ,python-setuptools-scm))) + (list python-joblib python-pytest python-toml python-flit + python-setuptools-scm)) (home-page "https://github.com/theislab/anndata") (synopsis "Annotated data for data analysis pipelines") (description "Anndata is a package for simple (functional) high-level APIs @@ -21384,7 +22010,7 @@ object-oriented library such as @code{scikit-learn}.") (invoke "nosetests" "-v")) #t))))) (native-inputs - `(("python-nose" ,python-nose))) + (list python-nose)) (home-page "https://pypi.org/project/dill/") (synopsis "Serialize all of Python") (description "Dill extends Python's @code{pickle} module for serializing @@ -21431,7 +22057,7 @@ the saved state of the original interpreter session.") (invoke "python" "-m" "multiprocess.tests") #t))))) (propagated-inputs - `(("python-dill" ,python-dill))) + (list python-dill)) (home-page "https://pypi.org/project/multiprocess/") (synopsis "Multiprocessing and multithreading in Python") (description @@ -21443,14 +22069,14 @@ library's @code{threading} module.") (define-public python-toolz (package (name "python-toolz") - (version "0.11.1") + (version "0.11.2") (source (origin (method url-fetch) (uri (pypi-uri "toolz" version)) (sha256 (base32 - "1grz3zvw5ixwqqlbv0n7j11mlcxb66cirh5i9x9zw8kqy0hpk967")))) + "0cxwlh8dz8gq0l0bzchjnqqwhdp261nfd958ppqm518k2mg2scbb")))) (build-system python-build-system) (arguments `(#:phases @@ -21462,7 +22088,7 @@ library's @code{threading} module.") (invoke "python" "-m" "pytest" "--doctest-modules" "--pyargs" "toolz"))))))) (native-inputs - `(("python-pytest" ,python-pytest))) + (list python-pytest)) (home-page "https://github.com/pytoolz/toolz/") (synopsis "List processing tools and functional utilities") (description @@ -21473,22 +22099,25 @@ functions, and dictionaries.") (define-public python-cytoolz (package (name "python-cytoolz") - (version "0.9.0.1") + (version "0.11.2") (source (origin (method url-fetch) (uri (pypi-uri "cytoolz" version)) (sha256 (base32 - "1r80p88hm3f3r4zpixzr047y5hw4bzy41m4xywnhycda83x0dk44")))) + "1d12mgaippxxhn24w2hj0my3aqkx80fks5g4wzfdsvl0acqnc8za")) + (modules '((guix build utils))) + (snippet + '(for-each delete-file (find-files "cytoolz" "\\.c$"))))) (build-system python-build-system) ;; FIXME: tests fail with "module 'cytoolz.curried' has no attribute ;; 'exceptions'" (arguments '(#:tests? #f)) (propagated-inputs - `(("python-toolz" ,python-toolz))) + (list python-toolz)) (native-inputs - `(("python-cython" ,python-cython))) + (list python-cython)) (home-page "https://github.com/pytoolz/cytoolz") (synopsis "High performance functional utilities") (description @@ -21497,6 +22126,22 @@ main differences are that @code{cytoolz} is faster and cytoolz offers a C API that is accessible to other projects developed in Cython.") (license license:bsd-3))) +;; python-cooler doesn't work with 0.11 yet +(define-public python-cytoolz-for-cooler + (package + (inherit python-cytoolz) + (version "0.10.1") + (source + (origin + (method url-fetch) + (uri (pypi-uri "cytoolz" version)) + (sha256 + (base32 + "0p4a9nadsy1337gy2cnb5yanbn03j3zm6d9adyqad9bk3nlbpxc2")) + (modules '((guix build utils))) + (snippet + '(for-each delete-file (find-files "cytoolz" "\\.c$"))))))) + (define-public python-sortedcollections (package (name "python-sortedcollections") @@ -21510,7 +22155,7 @@ that is accessible to other projects developed in Cython.") "1kfabpnjyjm5ml2zspry9jy3xq49aybchgaa4ahic2jqdjfn1sfq")))) (build-system python-build-system) (propagated-inputs - `(("python-sortedcontainers" ,python-sortedcontainers))) + (list python-sortedcontainers)) (arguments '(#:tests? #f)) ; Tests not included in release tarball. (home-page "http://www.grantjenks.com/docs/sortedcollections/") (synopsis "Python Sorted Collections") @@ -21593,11 +22238,9 @@ data.") (invoke "pytest" "-s" "-vv") (format #t "test suite not run~%"))))))) (native-inputs - `(;; For tests. - ("python-cloudpickle-testpkg" ,python-cloudpickle-testpkg) - ("python-psutil" ,python-psutil) - ("python-pytest" ,python-pytest) - ("python-tornado" ,python-tornado-6))) + (list ;; For tests. + python-cloudpickle-testpkg python-psutil python-pytest + python-tornado-6)) (home-page "https://github.com/cloudpipe/cloudpickle") (synopsis "Extended pickling support for Python objects") (description @@ -21668,7 +22311,7 @@ they use the same path.") ;; TypeError: calling <function run at 0x7ffff2568d90> returned None, not a test (arguments '(#:tests? #f)) (propagated-inputs - `(("python-numpy" ,python-numpy))) + (list python-numpy)) (home-page "https://github.com/blosc/python-blosc") (synopsis "Python wrapper for the Blosc data compressor library") (description "Blosc is a high performance compressor optimized for binary @@ -21699,12 +22342,12 @@ This Python package wraps the Blosc library.") "1sy3vdfyyx3bc5590zb7gwpsmimqz8m992x9hsydq8nmhixqjrxa")))) (build-system python-build-system) (propagated-inputs - `(("python-blosc" ,python-blosc) - ("python-locket" ,python-locket) - ("python-numpy" ,python-numpy) - ("python-pandas" ,python-pandas) - ("python-pyzmq" ,python-pyzmq) - ("python-toolz" ,python-toolz))) + (list python-blosc + python-locket + python-numpy + python-pandas + python-pyzmq + python-toolz)) (home-page "https://github.com/dask/partd/") (synopsis "Appendable key-value storage") (description "Partd stores key-value pairs. Values are raw bytes. We @@ -21733,41 +22376,45 @@ behavior and not have to worry about the specific internal implementation decisions with any given backend.") (license license:bsd-3))) +;; Note: Remember to update python-distributed when updating dask. (define-public python-dask (package (name "python-dask") - (version "2021.7.1") + (version "2021.11.2") (source (origin - (method url-fetch) - (uri (pypi-uri "dask" version)) + (method git-fetch) + (uri (git-reference + (url "https://github.com/dask/dask/") + (commit "5a8275dd53193b47457cdfadc0e2356ea3eb6ccd"))) + (file-name (git-file-name name version)) (sha256 - (base32 "131c1bp193d7wp4gx09j6wark1c322c8sqjy22i0jaafl5rqfbz7")))) + (base32 "0h8w7c03mn6s2mmwbqd2sqay3k4vaqiwlsbvliziggw28042zfw2")) + (snippet + ;; Delete generated copy of python-versioneer. We recreate it below. + '(delete-file "versioneer.py")))) (build-system python-build-system) (arguments `(#:phases (modify-phases %standard-phases - (add-after 'unpack 'disable-broken-tests + (add-after 'unpack 'versioneer (lambda _ - ;; This test is marked as xfail when pytest-xdist is used. - (substitute* "dask/tests/test_threaded.py" - (("def test_interrupt\\(\\)" m) - (string-append "@pytest.mark.skip(reason=\"Disabled by Guix\")\n" - m))))) + (invoke "versioneer" "install"))) (replace 'check - (lambda _ (invoke "pytest" "-vv")))))) + (lambda* (#:key tests? #:allow-other-keys) + (when tests? (invoke "pytest" "-vv"))))))) (propagated-inputs - `(("python-cloudpickle" ,python-cloudpickle) - ("python-fsspec" ,python-fsspec) - ("python-numpy" ,python-numpy) - ("python-packaging" ,python-packaging) - ("python-pandas" ,python-pandas) - ("python-partd" ,python-partd) - ("python-toolz" ,python-toolz) - ("python-pyyaml" ,python-pyyaml))) + (list python-cloudpickle + python-fsspec + python-numpy + python-packaging + python-pandas + python-partd + python-toolz + python-pyyaml)) (native-inputs - `(("python-pytest" ,python-pytest) - ("python-pytest-runner" ,python-pytest-runner))) + (list python-pytest python-pytest-runner python-pytest-rerunfailures + python-versioneer)) (home-page "https://github.com/dask/dask/") (synopsis "Parallel computing with task scheduling") (description @@ -21791,8 +22438,8 @@ run on top of the dynamic task schedulers. ") (base32 "0nrw4sr3afldrp7073hvc0rgdz282s0l819jdmj1i6nn05v33h0l")))) (build-system python-build-system) - (native-inputs `(("python-pytest" ,python-pytest))) - (inputs `(("python" ,python))) + (native-inputs (list python-pytest)) + (inputs (list python)) (home-page "https://github.com/luther9/ilinkedlist-py") (synopsis "Immutable linked list library") (description @@ -21873,7 +22520,7 @@ on regular expressions.") "1kqipkbdaw5s1xg0gi29awm03vp1x8dz24pjidgxagvkvrjpzhi7")))) (build-system python-build-system) (propagated-inputs - `(("python-six" ,python-six))) + (list python-six)) (home-page "https://github.com/rholder/retrying") (synopsis "Library for adding retry behavior") (description "Retrying is a general-purpose retrying library to simplify @@ -21906,14 +22553,14 @@ Features: ;; attribute 'empty_template_setup'". `(#:tests? #false)) (propagated-inputs - `(("python-cfgv" ,python-cfgv) - ("python-identify" ,python-identify) - ("python-importlib-metadata" ,python-importlib-metadata) - ("python-importlib-resources" ,python-importlib-resources) - ("python-nodeenv" ,python-nodeenv) - ("python-pyyaml" ,python-pyyaml) - ("python-toml" ,python-toml) - ("python-virtualenv" ,python-virtualenv))) + (list python-cfgv + python-identify + python-importlib-metadata + python-importlib-resources + python-nodeenv + python-pyyaml + python-toml + python-virtualenv)) (home-page "https://github.com/pre-commit/pre-commit") (synopsis "Framework for managing multi-language pre-commit hooks") (description @@ -21924,14 +22571,14 @@ multi-language pre-commit hooks.") (define-public python-precis-i18n (package (name "python-precis-i18n") - (version "1.0.0") + (version "1.0.3") (source (origin (method url-fetch) (uri (pypi-uri "precis_i18n" version)) (sha256 (base32 - "0gjhvwd8aifx94rl1ag08vlmndyx2q3fkyqb0c4i46x3p2bc2yi2")))) + "1qfb78zpx565vqkg0xhx75pna9sc35m370vpcz82982c8ix3ypyz")))) (build-system python-build-system) (home-page "https://github.com/byllyfish/precis_i18n") (synopsis "Implementation of the PRECIS framework") @@ -21953,7 +22600,7 @@ RFC 8265 and RFC 8266.") "1mp9lk0b2qa37b7y6ak4lvf6ifw2ylyy6bkf9ik77md3j4xrwlc7")))) (build-system python-build-system) (propagated-inputs - `(("python-six" ,python-six))) + (list python-six)) (home-page "https://github.com/abseil/abseil-py") (synopsis "Abseil Python common libraries") (description @@ -21997,8 +22644,7 @@ source via the Abstract Syntax Tree.") (build-system python-build-system) (arguments '(#:tests? #f)) ; there are none (propagated-inputs - `(("python-six" ,python-six) - ("python-wheel" ,python-wheel))) + (list python-six python-wheel)) (home-page "https://github.com/simonpercivall/astunparse") (synopsis "AST unparser for Python") (description "This package provides an AST unparser for Python. It is a @@ -22018,7 +22664,7 @@ distribution.") (base32 "1xv77kzghiqfm4fnvlv0p878ma152dvcfkly3jij89lqigxcw7zq")))) (build-system python-build-system) (propagated-inputs - `(("python-astunparse" ,python-astunparse))) + (list python-astunparse)) (home-page "https://pypi.org/project/gast/") (synopsis "Generic Python AST that abstracts the underlying Python version") (description @@ -22040,7 +22686,7 @@ module.") "08nlnydddfp1jj0cdmshvld1irzngbp3dij928wqsg9ziklm6mw9")))) (build-system python-build-system) (propagated-inputs - `(("python-babel" ,python-babel))) + (list python-babel)) (home-page "https://github.com/dahlia/wikidata") (synopsis "Wikidata client library") (description @@ -22062,7 +22708,7 @@ module.") "1m9aa4qnyj21lbq4sbvmv1vcz7zksss4rz37ddf2hxv4hk8b547w")))) (build-system python-build-system) (native-inputs - `(("python-nose" ,python-nose))) + (list python-nose)) (home-page "https://github.com/gnublade/doctest-ignore-unicode") (synopsis "Ignore Unicode literal prefixes in doctests") (description @@ -22103,10 +22749,7 @@ class in a @acronym{DRY, Don't Repeat Yourself} way.") (arguments `(#:tests? #f)) ; No tests exist. (propagated-inputs - `(("python-extras" ,python-extras) - ("python-arrow" ,python-arrow) - ("python-numpy" ,python-numpy) - ("python-ruamel.yaml" ,python-ruamel.yaml))) + (list python-extras python-arrow python-numpy python-ruamel.yaml)) (home-page "https://construct.readthedocs.io") (synopsis "Declarative and symmetrical parser and builder for binary data") (description @@ -22137,12 +22780,9 @@ make your work easier.") (add-installed-pythonpath inputs outputs) (invoke "pytest" "-vv")))))) (native-inputs - `(("python-pytest" ,python-pytest) - ("python-pytest-cov" ,python-pytest-cov) - ("python-pytest-asyncio" ,python-pytest-asyncio))) + (list python-pytest python-pytest-cov python-pytest-asyncio)) (propagated-inputs - `(("python-async-generator" ,python-async-generator) - ("python-attrs" ,python-attrs))) + (list python-async-generator python-attrs)) (home-page "https://github.com/python-trio/outcome") (synopsis "Capture the outcome of Python function calls") (description @@ -22154,13 +22794,13 @@ project.") (define-public python-trio (package (name "python-trio") - (version "0.17.0") + (version "0.19.0") (source (origin (method url-fetch) (uri (pypi-uri "trio" version)) (sha256 - (base32 "0zcxirpdvvl54pbfkgw7vz984879xwvdygqfpggnam24is2zjp78")))) + (base32 "1qgg4zhca81dxc1nlmcr5pl1bclmvdp3niqbyslwxs65bs732pl9")))) (build-system python-build-system) (arguments `(#:phases @@ -22171,39 +22811,43 @@ project.") (setenv "HOME" "/tmp") #t)) (replace 'check - (lambda _ - (invoke "pytest" "-vv" "-k" - (string-append - ;; This test times out. - "not test_ki_protection_works" - ;; Assertion errors. - " and not test_guest_mode_ki" - " and not test_run_in_trio_thread_ki" - ;; These try to raise KeyboardInterrupt which does not work - ;; in the build environment. - " and not test_ki_self" - " and not test_ki_wakes_us_up" - ;; Failure in name resolution. - " and not test_getnameinfo" - " and not test_SocketType_resolve" - ;; OSError: protocol not found. - " and not test_getprotobyname"))))))) + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "pytest" "-vv" "-k" + (string-append + ;; This test times out. + "not test_ki_protection_works" + ;; Assertion errors. + " and not test_guest_mode_ki" + " and not test_run_in_trio_thread_ki" + " and not test_simple_cancel_scope_usage_doesnt_create_cyclic_garbage" + " and not test_nursery_cancel_doesnt_create_cyclic_garbage" + " and not test_locals_destroyed_promptly_on_cancel" + ;; These try to raise KeyboardInterrupt which does not work + ;; in the build environment. + " and not test_ki_self" + " and not test_ki_wakes_us_up" + ;; Failure in name resolution. + " and not test_getnameinfo" + " and not test_SocketType_resolve" + ;; OSError: protocol not found. + " and not test_getprotobyname")))))))) (native-inputs - `(("python-astor" ,python-astor) - ("python-ipython" ,python-ipython) - ("python-jedi" ,python-jedi) - ("python-pylint" ,python-pylint) - ("python-pyopenssl" ,python-pyopenssl) - ("python-pytest" ,python-pytest) - ("python-pytest-cov" ,python-pytest-cov) - ("python-trustme" ,python-trustme))) + (list python-astor + python-ipython + python-jedi + python-pylint + python-pyopenssl + python-pytest + python-pytest-cov + python-trustme)) (propagated-inputs - `(("python-attrs" ,python-attrs) - ("python-idna" ,python-idna) - ("python-outcome" ,python-outcome) - ("python-sniffio" ,python-sniffio) - ("python-sortedcontainers" - ,python-sortedcontainers))) + (list python-async-generator + python-attrs + python-idna + python-outcome + python-sniffio + python-sortedcontainers)) (home-page "https://github.com/python-trio/trio") (synopsis "Friendly Python library for async concurrency and I/O") (description @@ -22231,15 +22875,10 @@ programs that do multiple things at the same time with parallelized I/O.") (lambda _ (invoke "pytest" "-vv")))))) (native-inputs - `(("python-attrs" ,python-attrs) - ("python-pytest" ,python-pytest))) + (list python-attrs python-pytest)) (propagated-inputs - `(("python-mypy" ,python-mypy) - ("python-mypy-extensions" - ,python-mypy-extensions) - ("python-trio" ,python-trio) - ("python-typing-extensions" - ,python-typing-extensions))) + (list python-mypy python-mypy-extensions python-trio + python-typing-extensions)) (home-page "https://github.com/python-trio/trio-typing") (synopsis "Static type checking support for Trio and related projects") (description @@ -22295,8 +22934,7 @@ and dates in \"human readable\" forms. For example, it would display "1zmpdph6zddgrnkkcykh6qk5s46l7s5mzfqrh82m4b5iffn61qv7")))) (build-system python-build-system) (propagated-inputs - `(("python-twisted" ,python-twisted) - ("python-six" ,python-six))) + (list python-twisted python-six)) (home-page "https://github.com/crossbario/txaio") (synopsis "Compatibility layer between Python asyncio and Twisted") (description "Txaio provides a compatibility layer between the Python @@ -22316,7 +22954,7 @@ and dates in \"human readable\" forms. For example, it would display "14zvz51gzf9i1i3d1sj363ba4rksl6lcf4lz1arl8hpqgcbir8r3")))) (build-system python-build-system) (native-inputs - `(("python-nose" ,python-nose))) + (list python-nose)) (home-page "https://github.com/brentp/toolshed/") (synopsis "Collection of modules and functions for working with data") (description "This is a collection of well-tested, simple modules and @@ -22336,7 +22974,7 @@ functions that aim to reduce boilerplate when working with data.") "1rxn6snn0r32r07g45hdjhh8aa1xzx6fjrm8g62d8vzp46z7rzrp")))) (build-system python-build-system) (native-inputs - `(("python-nose" ,python-nose))) + (list python-nose)) (home-page "https://github.com/spotify/annoy/") (synopsis "Approximate nearest neighbors library") (description @@ -22358,8 +22996,7 @@ processes may share the same data.") "0r79cx4v2dw4hzr0annkkxxis46c8hivq61sr39z6p7lcjsbk1ki")))) (build-system python-build-system) (propagated-inputs - `(("python-dateutil" ,python-dateutil) - ("python-natsort" ,python-natsort))) + (list python-dateutil python-natsort)) (home-page "https://github.com/kiorky/croniter") (synopsis "Iterate datetime objects with cron-like syntax") (description @@ -22382,7 +23019,7 @@ format.") ;; Comptability tests fail so they are disabled. `(#:tests? #f)) (inputs - `(("python-dateutil" ,python-dateutil))) + (list python-dateutil)) (home-page "https://gitlab.com/doctormo/python-crontab/") (synopsis "Module for reading and writing crontab files") (description "This Python module can read, write crontab files, and @@ -22428,7 +23065,7 @@ by Igor Pavlov.") (replace 'check (lambda _ (invoke "nosetests")))))) (native-inputs - `(("python-nose" ,python-nose))) + (list python-nose)) (home-page "https://github.com/pydron/ifaddr") (synopsis "Network interface and IP address enumeration library") (description "This package provides a network interface and IP address @@ -22448,9 +23085,9 @@ enumeration library in Python.") "0narq8haa3b375vfblbyil77n8bw0wxqnanl91pl0wwwm884mqjb")))) (build-system python-build-system) (native-inputs - `(("python-nose" ,python-nose))) + (list python-nose)) (propagated-inputs - `(("python-ifaddr" ,python-ifaddr))) + (list python-ifaddr)) (arguments `(#:phases (modify-phases %standard-phases @@ -22516,7 +23153,7 @@ compatible).") (base32 "00bqdsfx8jgmfz5bgkx10nlw5bfsw11a86f91zkl53snvk45xl3h")))) (build-system python-build-system) (inputs - `(("bdb" ,bdb))) + (list bdb)) (arguments '(#:phases (modify-phases %standard-phases @@ -22552,7 +23189,7 @@ Complete support for Berkeley DB Base Replication. Support for RPC.") "0gdpwdzf1fngsi6jrdyj4qdf6cr7gnnr3zp80dpkzbgz0spskj07")))) (build-system python-build-system) (native-inputs - `(("python-pytest" ,python-pytest))) + (list python-pytest)) (home-page "https://dbfread.readthedocs.io") (synopsis "Read DBF Files with Python") (description @@ -22586,7 +23223,7 @@ one-off scripts.") " " m))) #t))))) (native-inputs - `(("python-freezegun" ,python-freezegun))) + (list python-freezegun)) (home-page "https://github.com/pydanny/cached-property") (synopsis @@ -22611,15 +23248,12 @@ time-or-computationally-expensive properties quick and easy and works in Python (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "0yi5y9pfpbc4bc4ibr8cblif8ls1wf3k0zawyx86r2qwxxkkyd6k")))) + (base32 "1q05pzca3wfwgnbg03l3bagnhh348yx68w4aa91rg3g8zlviwjz1")))) (build-system python-build-system) (propagated-inputs - `(("python-branca" ,python-branca) - ("python-jinja2" ,python-jinja2) - ("python-numpy" ,python-numpy) - ("python-requests" ,python-requests))) + (list python-branca python-jinja2 python-numpy python-requests)) (native-inputs - `(("python-pytest" ,python-pytest))) + (list python-pytest)) (home-page "https://github.com/python-visualization/folium") (synopsis "Make beautiful maps with Leaflet.js & Python") (description "@code{folium} makes it easy to visualize data that’s been @@ -22670,7 +23304,7 @@ for manual interpretation.") "1hpbydpn2alyswiajfbvhzq4c7f36vdmvxy91hgv8l1lb2g2vfrj")))) (build-system python-build-system) (propagated-inputs - `(("python-dateutil" ,python-dateutil))) + (list python-dateutil)) (home-page "https://github.com/MKuranowski/pyroutelib3") (synopsis "Library for simple routing on OSM data") (description "Library for simple routing on OSM data") @@ -22689,9 +23323,9 @@ for manual interpretation.") "0zwhfkrzf3n5847dbnfng92k7ak199l9v6x6ax3dgdidfpm6d2fz")))) (build-system python-build-system) (propagated-inputs - `(("python-pyparsing" ,python-pyparsing))) + (list python-pyparsing)) (native-inputs - `(("python-future" ,python-future))) + (list python-future)) (home-page "https://github.com/sciunto-org/python-bibtexparser") (synopsis "Python library to parse BibTeX files") (description "BibtexParser is a Python library to parse BibTeX files.") @@ -22700,17 +23334,17 @@ for manual interpretation.") (define-public python-distro (package (name "python-distro") - (version "1.4.0") + (version "1.6.0") (source (origin (method url-fetch) (uri (pypi-uri "distro" version)) (sha256 (base32 - "0mrg75w4ap7mdzyga75yaid9n8bgb345ih5mwjp3plj6v1jxwb9n")))) + "09441261dd3c8b2gv15vhw1cryzg60lmgpkk07v6hpwwkyhfbxc3")))) (build-system python-build-system) (native-inputs - `(("python-pytest" ,python-pytest))) + (list python-pytest)) (home-page "https://github.com/nir0s/distro") (synopsis "OS platform information API") @@ -22741,15 +23375,10 @@ information in various formats.") (replace 'check (lambda _ (invoke "pytest")))))) (propagated-inputs - `(("python-cairocffi" ,python-cairocffi) - ("python-cssselect2" ,python-cssselect2) - ("python-defusedxml" ,python-defusedxml) - ("python-pillow" ,python-pillow) - ("python-tinycss2" ,python-tinycss2))) + (list python-cairocffi python-cssselect2 python-defusedxml + python-pillow python-tinycss2)) (native-inputs - `(("python-pytest-flake8" ,python-pytest-flake8) - ("python-pytest-isort" ,python-pytest-isort) - ("python-pytest-runner" ,python-pytest-runner))) + (list python-pytest-flake8 python-pytest-isort python-pytest-runner)) (home-page "https://cairosvg.org/") (synopsis "SVG to PDF/PS/PNG converter based on Cairo") (description "CairoSVG is a SVG converter based on Cairo. It can export @@ -22816,9 +23445,7 @@ converters and more, those based on the library itself.") (build-system python-build-system) (arguments '(#:tests? #f)) ;missing dependencies (propagated-inputs - `(("python-dateutil" ,python-dateutil) - ("python-docopt" ,python-docopt) - ("python-pyyaml" ,python-pyyaml))) + (list python-dateutil python-docopt python-pyyaml)) (home-page "https://github.com/grokzen/pykwalify") (synopsis "Python lib/cli for JSON/YAML schema validation") @@ -22830,31 +23457,34 @@ for YAML and JSON.") (define-public python-dbusmock (package (name "python-dbusmock") - (version "0.18.3") + (version "0.24.1") (source (origin (method url-fetch) (uri (pypi-uri "python-dbusmock" version)) (sha256 (base32 - "0hp2kyac88nh9iv6l8hlmv7s1sa1s5f1a3wc2pmlmmxnd211fjlr")))) + "0kvjwn5sdp3rqcbclvxljkmk988l12dvppzfn3ldy3jxbyyn1mjn")))) (build-system python-build-system) (arguments '(#:phases (modify-phases %standard-phases - (add-after 'unpack 'patch-shell-path - (lambda _ + (add-after 'unpack 'patch-paths + (lambda* (#:key inputs #:allow-other-keys) (substitute* "tests/test_code.py" (("/bin/bash") (which "bash"))) - #t))))) + (substitute* "dbusmock/testcase.py" + (("'dbus-daemon'") + (string-append "'" (assoc-ref inputs "dbus") + "/bin/dbus-daemon'")))))))) (native-inputs - `(;; For tests. - ("dbus" ,dbus) ; for dbus-daemon - ("python-nose" ,python-nose) - ("which" ,which))) + (list ;; For tests. + dbus ; for dbus-daemon + python-nose which)) + (inputs + (list dbus)) (propagated-inputs - `(("python-dbus" ,python-dbus) - ("python-pygobject" ,python-pygobject))) + (list python-dbus python-pygobject)) (home-page "https://github.com/martinpitt/python-dbusmock") (synopsis "Python library for mock D-Bus objects") (description "python-dbusmock allows for the easy creation of mock objects on @@ -22879,9 +23509,7 @@ services to what you expect in your tests.") ;; XXX: No tests on PyPI, and the repository has no tags. (arguments '(#:tests? #f)) (propagated-inputs - `(("python-dateutil" ,python-dateutil) - ("python-simplejson" ,python-simplejson) - ("python-sortedcontainers" ,python-sortedcontainers))) + (list python-dateutil python-simplejson python-sortedcontainers)) (synopsis "Serialize Python types to/from JSON") (description "This package provides functionality to serialize arbitrary data types @@ -22923,9 +23551,7 @@ register custom encoders and decoders.") (add-installed-pythonpath inputs outputs) (invoke "pytest")))))) (native-inputs - `(("double-conversion" ,double-conversion) - ("python-setuptools-scm" ,python-setuptools-scm) - ("python-pytest" ,python-pytest))) + (list double-conversion python-setuptools-scm python-pytest)) (home-page "https://github.com/ultrajson/ultrajson") (synopsis "Ultra fast JSON encoder and decoder for Python") (description @@ -22961,10 +23587,7 @@ bindings for Python 3.") (invoke "py.test" "-v" "tests") #t))))) (propagated-inputs - `(("python-flexmock" ,python-flexmock) - ("python-pytest" ,python-pytest) - ("python-pytest-cov" ,python-pytest-cov) - ("python-six" ,python-six))) + (list python-flexmock python-pytest python-pytest-cov python-six)) (home-page "https://github.com/oinume/iocapture") (synopsis "Python capturing tool for stdout and stderr") (description @@ -23032,20 +23655,18 @@ standard error channel (stderr) in your program.") " and not test_send_receive" " and not test_socket_options")))))))) (propagated-inputs - `(("python-idna" ,python-idna) - ("python-sniffio" ,python-sniffio) - ("python-typing-extensions" ,python-typing-extensions))) + (list python-idna python-sniffio python-typing-extensions)) (native-inputs - `(("python-coverage" ,python-coverage) - ("python-hypothesis" ,python-hypothesis) - ("python-iniconfig" ,python-iniconfig) - ("python-mock" ,python-mock) - ("python-pytest" ,python-pytest-6) - ("python-pytest-mock" ,python-pytest-mock) - ("python-pytest-trio" ,python-pytest-trio) - ("python-setuptools-scm" ,python-setuptools-scm) - ("python-trustme" ,python-trustme) - ("python-uvloop" ,python-uvloop))) + (list python-coverage + python-hypothesis + python-iniconfig + python-mock + python-pytest-6 + python-pytest-mock + python-pytest-trio + python-setuptools-scm + python-trustme + python-uvloop)) (home-page "https://github.com/agronholm/anyio") (synopsis "Compatibility layer for multiple asynchronous event loops") (description @@ -23075,11 +23696,8 @@ itself.") "1p5h3dnpbsjmqrvil96s71asc6i3gpinmbrabqmwnrsxprz7r3ns")))) (build-system python-build-system) (propagated-inputs - `(("python-iocapture" ,python-iocapture) - ("python-mock" ,python-mock) - ("python-pytest" ,python-pytest) - ("python-pytest-cov" ,python-pytest-cov) - ("python-pytest-xdist" ,python-pytest-xdist))) + (list python-iocapture python-mock python-pytest python-pytest-cov + python-pytest-xdist)) (home-page "https://github.com/neithere/argh/") (synopsis "Argparse wrapper with natural syntax") (description @@ -23104,7 +23722,7 @@ including the native API of @code{python-argparse}.") (build-system python-build-system) (arguments '(#:tests? #f)) ; there are none (propagated-inputs - `(("python-six" ,python-six))) + (list python-six)) (home-page "https://pypi.org/project/ppft/") (synopsis "Fork of Parallel Python") (description @@ -23139,8 +23757,7 @@ load balancing.") (invoke "py.test" "-vv") #t))))) (native-inputs - `(("python-pytest" ,python-pytest) - ("which" ,which))) + (list python-pytest which)) (home-page "https://pypi.org/project/pox/") (synopsis "Python utilities for file system exploration and automated builds") (description @@ -23172,12 +23789,9 @@ essential tools are located.") (lambda _ (invoke "python" "./tests/__main__.py")))))) (propagated-inputs - `(("python-dill" ,python-dill) - ("python-multiprocess" ,python-multiprocess) - ("python-pox" ,python-pox) - ("python-ppft" ,python-ppft))) + (list python-dill python-multiprocess python-pox python-ppft)) (native-inputs - `(("python-pytest" ,python-pytest))) + (list python-pytest)) (home-page "https://pypi.org/project/pathos/") (synopsis "Parallel graph management and execution in heterogeneous computing") @@ -23192,7 +23806,7 @@ the syntactic logic to configure and launch jobs in an execution environment.") (define-public python-flit (package (name "python-flit") - (version "3.2.0") + (version "3.3.0") ;; We fetch the sources via git because on pypi the package is split into ;; two parts: flit and flit_core; flit_core cannot be built without flit. (source (origin @@ -23203,7 +23817,7 @@ the syntactic logic to configure and launch jobs in an execution environment.") (file-name (git-file-name name version)) (sha256 (base32 - "0fpqxpz5bv2xpv1akmc0c8yfss6sj09wdzxrlf3qw1lp1jhbzpyc")))) + "0mvyymw3zqsnip4x4ca6anr5rbx30hcmpqwrnhjwcm7s8mycd01x")))) (build-system python-build-system) (arguments `(#:phases @@ -23248,8 +23862,7 @@ the syntactic logic to configure and launch jobs in an execution environment.") (find-files "dist" "\\.whl$"))))))) #:tests? #f)) ; XXX: Check requires network access. (propagated-inputs - `(("python-pytoml" ,python-pytoml) - ("python-toml" ,python-toml))) + (list python-pytoml python-toml)) (native-inputs `(("python-docutils" ,python-docutils) ("python-responses" ,python-responses) @@ -23334,7 +23947,7 @@ scripts to load entry points more quickly.") (base32 "07f9cgjr3h4j2m67fhwapn8fja87vazl58zsj4yppf9y3an2x6dp")))) (native-inputs - `(("python-tox" ,python-tox))) + (list python-tox)) (arguments `(#:phases (modify-phases %standard-phases @@ -23365,7 +23978,7 @@ that take parsers as their arguments and return them as result values.") (arguments `(#:tests? #f)) ;FIXME: tests fail, not sure why (native-inputs - `(("unzip" ,unzip))) + (list unzip)) (build-system python-build-system) (home-page "https://github.com/avakar/speg") (synopsis "PEG-based parser interpreter with memoization") @@ -23385,57 +23998,13 @@ memoization.") (base32 "00cyvigg4npbph39ghkg77xbxisa6plf75vii24igxfizik0337f")))) (build-system python-build-system) (propagated-inputs - `(("python-speg" ,python-speg))) + (list python-speg)) (home-page "https://github.com/avakar/pycson") (synopsis "Parser for Coffeescript Object Notation (CSON)") (description "This package is a parser for Coffeescript Object Notation (CSON).") (license license:expat))) -(define-public python-asynctest - (package - (name "python-asynctest") - (version "0.13.0") - (source - (origin - (method url-fetch) - (uri (pypi-uri "asynctest" version)) - (sha256 - (base32 - "1b3zsy7p84gag6q8ai2ylyrhx213qdk2h2zb6im3xn0m5n264y62")))) - (build-system python-build-system) - (arguments - '(#:phases - (modify-phases %standard-phases - (replace 'check - (lambda _ - (invoke "python" "-X" "dev" "-m" "unittest" "-v" "test"))) - (add-after 'unpack 'disable-tests - (lambda* _ - ;; XXX: 7 tests fail out of 220. Disable them for now. - (substitute* (list "test/test_selector.py" - "test/test_mock.py") - (("def test_events_watched_outside_test_are_ignored") - "@unittest.skip('disabled by guix') - def test_events_watched_outside_test_are_ignored") - (("def test_awaited_from_autospec_mock.*" line) - (string-append line " return True\n")) - (("def test_create_autospec_on_coroutine_and_using_assert_methods.*" line) - (string-append line " return True\n")) - (("def test_patch_coroutine_with_multiple_scopes.*" line) - (string-append line " return True\n")) - (("def test_multiple_patches_on_coroutine.*" line) - (string-append line " return True\n")) - (("def test_patch_coroutine_only_when_running.*" line) - (string-append line " return True\n"))) - #t))))) - (home-page "https://github.com/Martiusweb/asynctest") - (synopsis "Extension of unittest for testing asyncio libraries") - (description - "The package asynctest is built on top of the standard unittest module -and cuts down boilerplate code when testing libraries for asyncio.") - (license license:asl2.0))) - (define-public python-aionotify (package (name "python-aionotify") @@ -23480,8 +24049,7 @@ and cuts down boilerplate code when testing libraries for asyncio.") (lambda _ (invoke "make" "SKIP_DEPS=1")))))) (native-inputs - `(("python-nose" ,python-nose) - ("python-coverage" ,python-coverage))) + (list python-nose python-coverage)) (home-page "https://github.com/clarete/forbiddenfruit") (synopsis "Patch python built-in objects") (description "This project allows Python code to extend built-in types.") @@ -23500,11 +24068,10 @@ and cuts down boilerplate code when testing libraries for asyncio.") "1lqp3jgfngyhaxjgj3n230hn90wsylwilh120yjf62h7b1s02mh8")))) (build-system python-build-system) (propagated-inputs - `(("python-six" ,python-six) - ;; `which`, `kadmin.local` binaries called inside library - ("which" ,which) - ("mit-krb5" ,mit-krb5))) - (native-inputs `(("mit-krb5" ,mit-krb5))) + (list python-six + ;; `which`, `kadmin.local` binaries called inside library + which mit-krb5)) + (native-inputs (list mit-krb5)) (arguments '(#:phases (modify-phases %standard-phases @@ -23537,15 +24104,12 @@ tests.") "1j2idrbrbczykzlb56q1bn0ivc9c0rjjljpk4yz86xn3gxfkpv8n")))) (build-system python-build-system) (propagated-inputs - `(("python-decorator" ,python-decorator) - ("python-six" ,python-six))) + (list python-decorator python-six)) (inputs - `(("mit-krb5" ,mit-krb5))) + (list mit-krb5)) ;; for tests (native-inputs - `(("python-parameterized" ,python-parameterized) - ("python-k5test" ,python-k5test) - ("python-nose" ,python-nose))) + (list python-parameterized python-k5test python-nose)) (home-page "https://github.com/pythongssapi/python-gssapi") (synopsis "Python GSSAPI Wrapper") (description @@ -23567,8 +24131,7 @@ also be usable with other GSSAPI mechanisms.") "0lk45ifdv2cpkl6ayfyix7jwmnxa1rha7xvb0ih5999k115wzqs4")))) (build-system python-build-system) (native-inputs - `(("python-mock" ,python-mock) - ("git" ,git))) + (list python-mock git)) (home-page "https://github.com/mgedmin/check-manifest") (synopsis "Check MANIFEST.in in a Python source package for completeness") (description "Python package can include a MANIFEST.in file to help with @@ -23620,12 +24183,9 @@ files. These files are used to translate strings in android apps.") (delete-file "tests/test_snapshot_diff.py") #t))))) (propagated-inputs - `(("python-argh" ,python-argh) - ("python-pathtools" ,python-pathtools) - ("python-pyyaml" ,python-pyyaml))) + (list python-argh python-pathtools python-pyyaml)) (native-inputs - `(("python-pytest-cov" ,python-pytest-cov) - ("python-pytest-timeout" ,python-pytest-timeout))) + (list python-pytest-cov python-pytest-timeout)) (home-page "https://github.com/gorakhargosh/watchdog") (synopsis "File system events monitoring") (description "This package provides a way to monitor file system events @@ -23636,7 +24196,7 @@ but portable.") (define-public python-watchgod (package (name "python-watchgod") - (version "0.6") + (version "0.7") (source (origin ;; There are no tests in the PyPI tarball. @@ -23646,7 +24206,7 @@ but portable.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "1lqx44wkryakgpyqj3m0hsz61bqr07vc7smgzh188374hwvscp66")))) + (base32 "1w2xsidwp9n4giqhja0bzw7rwrh01db0kdxf2n54mv3dkx545jpq")))) (build-system python-build-system) (arguments `(#:phases @@ -23656,19 +24216,14 @@ but portable.") (when tests? (invoke "pytest" "-vv"))))))) (native-inputs - `(("python-coverage" ,python-coverage) - ("python-docutils" ,python-docutils) - ("python-flake8" ,python-flake8) - ("python-isort" ,python-isort) - ("python-pycodestyle" ,python-pycodestyle) - ("python-pyflakes" ,python-pyflakes) - ("python-pygments" ,python-pygments) - ("python-pytest" ,python-pytest) - ("python-pytest-cov" ,python-pytest-cov) - ("python-pytest-aiohttp" ,python-pytest-aiohttp) - ("python-pytest-mock" ,python-pytest-mock) - ("python-pytest-sugar" ,python-pytest-sugar) - ("python-pytest-toolbox" ,python-pytest-toolbox))) + (list python-coverage + python-pygments + python-pytest + python-pytest-asyncio + python-pytest-cov + python-pytest-mock + python-pytest-sugar + python-pytest-toolbox)) (home-page "https://github.com/samuelcolvin/watchgod") (synopsis "Simple, modern file watching and code reload in Python") (description @@ -23689,7 +24244,7 @@ operating systems and an elegant approach to concurrency using threading.") (base32 "0qb0y7ipby42m4m7h0ipazpdyc3bn9xi46lvifcwwl5albn31rim")))) (build-system python-build-system) - (native-inputs `(("unzip" ,unzip))) + (native-inputs (list unzip)) (home-page "https://bitbucket.org/techtonik/python-wget/") (synopsis "Pure Python download utility") (description "The python-wget library provides an API to download files @@ -23715,21 +24270,21 @@ with features similar to the @command{wget} utility.") ;; No tests `(#:tests? #f)) (propagated-inputs - `(("python-android-stringslib" ,python-android-stringslib) - ("python-dateutil" ,python-dateutil) - ("python-gitlab" ,python-gitlab) - ("python-lxml" ,python-lxml) - ("python-polib" ,python-polib) - ("python-pyenchant" ,python-pyenchant) - ("python-pygit2" ,python-pygit2) - ("python-pygithub" ,python-pygithub) - ("python-pyqt" ,python-pyqt) - ("python-requests" ,python-requests) - ("python-ruamel.yaml" ,python-ruamel.yaml) - ("python-translation-finder" ,python-translation-finder) - ("python-watchdog" ,python-watchdog))) + (list python-android-stringslib + python-dateutil + python-gitlab + python-lxml + python-polib + python-pyenchant + python-pygit2 + python-pygithub + python-pyqt + python-requests + python-ruamel.yaml + python-translation-finder + python-watchdog)) (native-inputs - `(("qttools" ,qttools))) + (list qttools)) (home-page "https://framagit.org/tyreunom/offlate") (synopsis "Offline translation interface for online translation tools") (description "Offlate offers a unified interface for different translation @@ -23753,7 +24308,7 @@ an upload option to send your work back to the platform.") "0486i99wf8ssa7sgn81fn6fv6i4rhhq6n751bc740b3hzfbpmpl4")))) (build-system python-build-system) (native-inputs - `(("python-nose" ,python-nose))) + (list python-nose)) (home-page "https://github.com/ppannuto/python-titlecase") (synopsis "Capitalize strings similar to book titles") (description @@ -23805,11 +24360,9 @@ custom PNG processing.") "1s00zn75y2dkxgnbw8kl8dw4p1mc77cv78fwfa4yb0274s96w0a5")))) (build-system python-build-system) (native-inputs - `(("python-hypothesis" ,python-hypothesis) - ("python-pycodestyle" ,python-pycodestyle) - ("python-pytest" ,python-pytest))) + (list python-hypothesis python-pycodestyle python-pytest)) (propagated-inputs - `(("python-levenshtein" ,python-levenshtein))) + (list python-levenshtein)) (home-page "https://github.com/seatgeek/fuzzywuzzy") (synopsis "Fuzzy string matching in Python") (description "Approximate string matching using @@ -23854,8 +24407,7 @@ your process.") "0gyady7x3v3l9fm1zan0idaggqqcm31y7g5vxk7h05p5h7f39bjs")))) (build-system python-build-system) (propagated-inputs - `(("python-lxml" ,python-lxml) - ("python-jinja2" ,python-jinja2))) + (list python-lxml python-jinja2)) (home-page "https://gcovr.com/") (synopsis "Utility for generating code coverage results") (description @@ -23903,13 +24455,13 @@ content models.") ;; Testing requires undocumented setup changes, and so testing is disabled here. (arguments `(#:tests? #f)) (propagated-inputs - `(("python-certifi" ,python-certifi) - ("python-six" ,python-six) - ("python-dateutil" ,python-dateutil) - ("python-urllib3" ,python-urllib3) - ("python-pyjwt" ,python-pyjwt) - ("python-cryptography" ,python-cryptography) - ("python-nose" ,python-nose))) + (list python-certifi + python-six + python-dateutil + python-urllib3 + python-pyjwt + python-cryptography + python-nose)) (synopsis "DocuSign Python Client") (description "The Official DocuSign Python Client Library used to interact with the eSign REST API. Send, sign, and approve documents using this client.") @@ -23929,7 +24481,7 @@ content models.") "0i4xyiqbhjz2g16zbim17zjdbjkw79xsw8k59942vvq4is1cmfxh")))) (build-system python-build-system) (propagated-inputs - `(("python-cffi" ,python-cffi))) + (list python-cffi)) (home-page "https://github.com/xattr/xattr") (synopsis "Python wrapper for extended file system attributes") @@ -23972,12 +24524,9 @@ we can stop writing custom parsers for syslog-type records.") "1qmank3c217ddiig3xr8ps0mqaydcp0q5a62in9a9g4zf72zjnqd")))) (build-system python-build-system) (propagated-inputs - `(("python-json-logger" ,python-json-logger))) + (list python-json-logger)) (native-inputs - `(("python-mock" ,python-mock) - ("python-pytest" ,python-pytest) - ("python-setuptools-scm" ,python-setuptools-scm) - ("python-six" ,python-six))) + (list python-mock python-pytest python-setuptools-scm python-six)) (home-page "https://github.com/jd/daiquiri") (synopsis "Library to configure Python logging easily") @@ -24005,20 +24554,17 @@ logging in Python. It also provides some custom formatters and handlers.") (invoke "python" "setup.py" "testr" "--slowest" "--testr-args=until-failure")))))) (propagated-inputs - `(("python-click" ,python-click) - ("python-daiquiri" ,python-daiquiri) - ("python-fixtures" ,python-fixtures) - ("python-jinja2" ,python-jinja2) - ("python-pbr" ,python-pbr) - ("python-psutil" ,python-psutil) - ("python-six" ,python-six) - ("python-xattr" ,python-xattr))) + (list python-click + python-daiquiri + python-fixtures + python-jinja2 + python-pbr + python-psutil + python-six + python-xattr)) (native-inputs - `(("python-mock" ,python-mock) - ("python-os-testr" ,python-os-testr) - ("python-requests" ,python-requests) - ("python-testrepository" ,python-testrepository) - ("python-testtools" ,python-testtools))) + (list python-mock python-os-testr python-requests + python-testrepository python-testtools)) (home-page "https://github.com/jd/pifpaf") (synopsis "Tools and fixtures to manage daemons for testing in Python") (description "Pifpaf is a suite of fixtures and a command-line tool that @@ -24041,14 +24587,14 @@ evolved from its precursor @code{overtest}.") "12x3wmrdzm6wgk0vz02hb769h68nr49q47w5q1pj95pc89hsa34v")))) (build-system python-build-system) (propagated-inputs - `(("python-docutils" ,python-docutils) - ("python-html5lib" ,python-html5lib) - ("python-nbconvert" ,python-nbconvert) - ("python-nbformat" ,python-nbformat) - ("python-pytest" ,python-pytest) - ("python-six" ,python-six))) + (list python-docutils + python-html5lib + python-nbconvert + python-nbformat + python-pytest + python-six)) (native-inputs - `(("python-pbr-minimal" ,python-pbr-minimal))) + (list python-pbr-minimal)) (home-page "https://github.com/minrk/pytest-check-links") (synopsis "Check links in files") (description "This package provides a pytest plugin that checks URLs for @@ -24101,19 +24647,40 @@ replacement for dictionaries where immutability is desired.") (define-public python-unpaddedbase64 (package (name "python-unpaddedbase64") - (version "1.1.0") + (version "2.1.0") (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/matrix-org/python-unpaddedbase64") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) + (method url-fetch) + (uri (pypi-uri "unpaddedbase64" version)) (sha256 - (base32 - "0if3fjfxga0bwdq47v77fs9hrcqpmwdxry2i2a7pdqsp95258nxd")))) + (base32 "01ghlmw63fgslwj8j74vkpf1kqvr7a4agm6nyn89vqwx106ccwvj")))) (build-system python-build-system) - (home-page "https://pypi.org/project/unpaddedbase64/") + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda* (#:key inputs tests? #:allow-other-keys) + (when tests? + (copy-recursively (string-append + (assoc-ref inputs "tests") "/tests") + "tests") + (invoke "python" "-m" "pytest" "-vv"))))))) + (native-inputs + `(("python-pytest" ,python-pytest) + ("tests" + ;; The release on pypi comes without tests. We can't build from this + ;; checkout, though, because installation requires an invocation of + ;; poetry. + ,(origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/matrix-org/python-unpaddedbase64") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1n6har8pxv0mqb96lanzihp1xf76aa17jw3977drb1fgz947pnmz")))))) + (home-page "https://github.com/matrix-org/python-unpaddedbase64") (synopsis "Encode and decode Base64 without “=” padding") (description "RFC 4648 specifies that Base64 should be padded to a multiple of 4 bytes @@ -24152,9 +24719,7 @@ information for your operating system.") (base32 "0c86g0vvzdcg3nrcsqnbzlfhpprc2i894p8i14hska56yl27d6w9")))) (build-system python-build-system) (propagated-inputs - `(("python-six" ,python-six) - ("python-frozendict" ,python-frozendict) - ("python-simplejson" ,python-simplejson))) + (list python-six python-frozendict python-simplejson)) (home-page "https://github.com/matrix-org/python-canonicaljson") (synopsis "Canonical JSON") (description @@ -24184,13 +24749,10 @@ information for your operating system.") (base32 "0280f8zyycsmd7iy65bs438flm7m8ffs1kcxfbvhi8hbazkqc19m")))) (build-system python-build-system) (propagated-inputs - `(("python-canonicaljson" ,python-canonicaljson) - ("python-importlib-metadata" ,python-importlib-metadata) - ("python-pynacl" ,python-pynacl) - ("python-typing-extensions" ,python-typing-extensions) - ("python-unpaddedbase64" ,python-unpaddedbase64))) + (list python-canonicaljson python-importlib-metadata python-pynacl + python-typing-extensions python-unpaddedbase64)) (native-inputs - `(("python-setuptools-scm" ,python-setuptools-scm))) + (list python-setuptools-scm)) (home-page "https://github.com/matrix-org/python-signedjson") (synopsis "Sign JSON objects with ED25519 signatures") (description @@ -24234,8 +24796,7 @@ key. (base32 "1f0357a6g1h96sk6wy030xmc1p4rd80a999qvxd28v7nlm1blsqy")))) (build-system python-build-system) (propagated-inputs - `(("python-six" ,python-six) - ("python-pynacl" ,python-pynacl))) + (list python-six python-pynacl)) (home-page "https://github.com/ecordell/pymacaroons") (synopsis "Python Macaroon Library") (description @@ -24272,10 +24833,9 @@ enforcement of that policy.") (invoke "nosetests" "-s" "test")) #t))))) (native-inputs - `(("python-nose" ,python-nose))) + (list python-nose)) (propagated-inputs - `(("python-gssapi" ,python-gssapi) - ("python-pyasn1" ,python-pyasn1))) + (list python-gssapi python-pyasn1)) (synopsis "Python LDAP client") (description "LDAP3 is a strictly RFC 4510 conforming LDAP V3 pure Python client @@ -24316,13 +24876,13 @@ tbutils (define-public python-eliot (package (name "python-eliot") - (version "1.12.0") + (version "1.13.0") (source (origin (method url-fetch) (uri (pypi-uri "eliot" version)) (sha256 - (base32 "0wabv7hk63l12881f4zw02mmj06583qsx2im0yywdjlj8f56vqdn")))) + (base32 "1xzzhsjrrw430dc84vamf683bwp9i0nr86xf2iav6yla615ijq2p")))) (build-system python-build-system) (arguments `(#:phases @@ -24338,25 +24898,33 @@ tbutils ;; be installed and these tests should pass. (lambda _ (delete-file "eliot/tests/test_prettyprint.py") + #t)) + (add-after 'remove-eliot-prettyprint-tests 'remove-failing-tests + (lambda _ + ;; These tests started to fail after updating python-pandas to + ;; 1.3.3 and python-dask to 2021.9.1. + (substitute* "eliot/tests/test_validation.py" + (("test_omitLoggerFromActionType") + "_test_omitLoggerFromActionType") + (("test_logCallsDefaultLoggerWrite") + "_test_logCallsDefaultLoggerWrite")) #t))))) (propagated-inputs - `(("python-boltons" ,python-boltons) - ("python-pyrsistent" ,python-pyrsistent) - ("python-six" ,python-six) - ("python-zope-interface" ,python-zope-interface))) + (list python-boltons python-pyrsistent python-six + python-zope-interface)) (native-inputs - `(("python-black" ,python-black) - ("python-coverage" ,python-coverage) - ("python-dask" ,python-dask) - ("python-flake8" ,python-flake8) - ("python-hypothesis" ,python-hypothesis) - ("python-pytest" ,python-pytest) - ("python-setuptools" ,python-setuptools) - ("python-sphinx" ,python-sphinx) - ("python-sphinx-rtd-theme" ,python-sphinx-rtd-theme) - ("python-testtools" ,python-testtools) - ("python-twine" ,python-twine) - ("python-twisted" ,python-twisted))) + (list python-black + python-coverage + python-dask + python-flake8 + python-hypothesis + python-pytest + python-setuptools + python-sphinx + python-sphinx-rtd-theme + python-testtools + python-twine + python-twisted)) (home-page "https://github.com/itamarst/eliot/") (synopsis "Eliot: the logging system that tells you why it happened") (description @@ -24379,13 +24947,13 @@ happened, and what caused it.") "1xh88ss279fprxnzd10dczmqwjhppbyvljm33zrg2mgybwd66qr7")))) (build-system python-build-system) (native-inputs - `(("python-certifi" ,python-certifi) - ("python-coverage" ,python-coverage) - ("python-pretend" ,python-pretend) - ("python-pyopenssl" ,python-pyopenssl) - ("python-pytest" ,python-pytest) - ("python-sphinx" ,python-sphinx) - ("python-twisted" ,python-twisted))) + (list python-certifi + python-coverage + python-pretend + python-pyopenssl + python-pytest + python-sphinx + python-twisted)) (home-page "https://pem.readthedocs.io/") (synopsis "Easy PEM file parsing in Python") (description @@ -24411,9 +24979,7 @@ happened, and what caused it.") "0imfxx4yjj1lbq0n5ad45al3wvv4qv96sivnc1r51i66mxi658z8")))) (build-system python-build-system) (propagated-inputs - `(("python-pyopenssl" ,python-pyopenssl) - ("python-service-identity" ,python-service-identity) - ("python-twisted" ,python-twisted))) + (list python-pyopenssl python-service-identity python-twisted)) (synopsis "Run TLS servers with Twisted") (description "This package provides an easy-to-use SNI endpoint for use @@ -24432,23 +24998,22 @@ with the Twisted web framework.") (base32 "1cplx4llq7i508w6fgwjdv9di7rsz9k9irfmzdfbiz6q6a0ykf1d")))) (build-system python-build-system) (propagated-inputs - `(("python-acme" ,python-acme) - ("python-attrs" ,python-attrs) - ("python-eliot" ,python-eliot) - ("python-josepy" ,python-josepy) - ("python-pem" ,python-pem) - ("python-treq" ,python-treq) - ("python-twisted" ,python-twisted) - ("python-txsni" ,python-txsni))) + (list python-acme + python-attrs + python-eliot + python-josepy + python-pem + python-treq + python-twisted + python-txsni)) (native-inputs - `(("python-fixtures" ,python-fixtures) - ("python-hypothesis" ,python-hypothesis) - ("python-mock" ,python-mock) - ("python-service-identity" - ,python-service-identity) - ("python-testrepository" ,python-testrepository) - ("python-testscenarios" ,python-testscenarios) - ("python-testtools" ,python-testtools))) + (list python-fixtures + python-hypothesis + python-mock + python-service-identity + python-testrepository + python-testscenarios + python-testtools)) (home-page "https://github.com/twisted/txacme") (synopsis "Twisted implexmentation of the ACME protocol") (description @@ -24474,16 +25039,15 @@ networking engine for Python.") "1xk2x0slz1f8cqv7vn77qx99xfd1mshhswiwrljk9m72w2m9iivd")))) (build-system python-build-system) (propagated-inputs - `(("python-cryptography" ,python-cryptography) - ("python-dateutil" ,python-dateutil) - ("python-defusedxml" ,python-defusedxml) - ("python-importlib-resources" - ,python-importlib-resources) - ("python-pyopenssl" ,python-pyopenssl) - ("python-pytz" ,python-pytz) - ("python-requests" ,python-requests) - ("python-six" ,python-six) - ("python-xmlschema" ,python-xmlschema))) + (list python-cryptography + python-dateutil + python-defusedxml + python-importlib-resources + python-pyopenssl + python-pytz + python-requests + python-six + python-xmlschema)) (home-page "https://idpy.org") (synopsis "Python implementation of SAML Version 2 Standard") (description @@ -24507,9 +25071,9 @@ there are extensions that allow you to use it with other frameworks.") (base32 "0jr6bxj67vg988vkm6nz8jj98v9lg46bn49lkhak3n598jbrkas6")))) (build-system python-build-system) (native-inputs - `(("python-pytest" ,python-pytest))) + (list python-pytest)) (propagated-inputs - `(("python-click" ,python-click))) + (list python-click)) (synopsis "Extension for Click to register external CLI commands") (description "This package provides n extension module for Click to register external CLI commands via setuptools entry-points.") @@ -24529,9 +25093,7 @@ register external CLI commands via setuptools entry-points.") "0klb0ysybzlh2wihvir82hgq62v0jjmlcqklwajyms7c0p529yby")))) (build-system python-build-system) (native-inputs - `(("python-coverage" ,python-coverage) - ("python-pytest" ,python-pytest) - ("python-pytest-runner" ,python-pytest-runner))) + (list python-coverage python-pytest python-pytest-runner)) (home-page "https://github.com/ulif/diceware/") (synopsis "Generates memorable passphrases") (description "This package generates passphrases by concatenating words @@ -24552,18 +25114,18 @@ cryptographically signed ones).") "1lk3qmy1hkaphk4n7ayfk0wl6m2yvd6r7qkam6yncqfzgkbc1phs")))) (build-system python-build-system) (native-inputs - `(("python-check-manifest" ,python-check-manifest) - ("python-coverage" ,python-coverage) - ("python-isort" ,python-isort) - ("python-mock" ,python-mock) - ("python-pydoctstyle" ,python-pydocstyle) - ("python-pytest-cache" ,python-pytest-cache) - ("python-pytest-cov" ,python-pytest-cov) - ("python-pytest-pep8" ,python-pytest-pep8) - ("python-pytest-runner" ,python-pytest-runner) - ("python-pytest" ,python-pytest) - ("python-setuptools-scm" ,python-setuptools-scm) - ("python-tox" ,python-tox))) + (list python-check-manifest + python-coverage + python-isort + python-mock + python-pydocstyle + python-pytest-cache + python-pytest-cov + python-pytest-pep8 + python-pytest-runner + python-pytest + python-setuptools-scm + python-tox)) (home-page "https://github.com/inveniosoftware/dictdiffer") (synopsis "Diff and patch Python dictionary objects") (description @@ -24574,13 +25136,13 @@ dictionaries.") (define-public pyzo (package (name "pyzo") - (version "4.11.2") + (version "4.11.7") (source (origin (method url-fetch) (uri (pypi-uri "pyzo" version)) (sha256 - (base32 "1jk5f79lj09vnsdk9h01w21p9h49z2hhf8xhkx8471pjbg9vrlzr")))) + (base32 "1qa007nw464r7jw8y8fqf17jx473q55p5ay5bh8kq55v0zyi27yn")))) (build-system python-build-system) (arguments `(#:phases @@ -24588,13 +25150,12 @@ dictionaries.") (add-before 'check 'fix-home-directory (lambda _ ;; Tests fail with "Permission denied: '/homeless-shelter'". - (setenv "HOME" "/tmp") - #t))) + (setenv "HOME" "/tmp")))) ;; Tests fail with "Uncaught Python exception: python: undefined ;; symbol: objc_getClass". #:tests? #f)) (propagated-inputs - `(("python-pyqt" ,python-pyqt))) + (list python-pyqt)) (home-page "https://pyzo.org") (synopsis "Python IDE for scientific computing") @@ -24642,7 +25203,7 @@ Open Sound Control 1.0} specification.") "0mplkcpb5d8wjf8vk195fys4y6a3wbibiyf708imw33lphfk9g1a")))) (build-system python-build-system) (native-inputs - `(("python-nose" ,python-nose))) + (list python-nose)) (home-page "https://github.com/alecthomas/voluptuous") (synopsis "Python data validation library") (description @@ -24663,27 +25224,24 @@ intended for validating data coming into Python as JSON, YAML, etc.") "1f18plbc9yyvhn0js3d2bii9yld8zfl775gxsaw9jza5pmlg9ss2")))) (build-system python-build-system) (propagated-inputs - `(("python-attrs" ,python-attrs) - ("python-colorama" ,python-colorama) - ("python-pyperclip" ,python-pyperclip) - ("python-wcwidth" ,python-wcwidth))) + (list python-attrs python-colorama python-pyperclip python-wcwidth)) (native-inputs - `(("python-codecov" ,python-codecov) - ("python-coverage" ,python-coverage) - ("python-doc8" ,python-doc8) - ("python-flake8" ,python-flake8) - ("python-invoke" ,python-invoke) - ("python-mock" ,python-mock) - ("python-pytest" ,python-pytest) - ("python-pytest-cov" ,python-pytest-cov) - ("python-pytest-mock" ,python-pytest-mock) - ("python-setuptools-scm" ,python-setuptools-scm) - ("python-sphinx" ,python-sphinx) - ("python-sphinx-autobuild" ,python-sphinx-autobuild) - ("python-sphinx-rtd-theme" ,python-sphinx-rtd-theme) - ("python-tox" ,python-tox) - ("python-twine" ,python-twine) - ("which" ,which))) + (list python-codecov + python-coverage + python-doc8 + python-flake8 + python-invoke + python-mock + python-pytest + python-pytest-cov + python-pytest-mock + python-setuptools-scm + python-sphinx + python-sphinx-autobuild + python-sphinx-rtd-theme + python-tox + python-twine + which)) (home-page "https://github.com/python-cmd2/cmd2") (synopsis "Tool for building interactive command line applications") (description @@ -24717,7 +25275,7 @@ be necessary when using @code{cmd}.") (("ctypes\\.util\\.find_library\\('tidy'\\)") (format #f "'~a'" libtidy))) #t)))))) - (inputs `(("tidy" ,tidy))) + (inputs (list tidy)) (home-page "https://github.com/countergram/pytidylib") (synopsis "Python wrapper for HTML Tidy library") (description @@ -24805,7 +25363,7 @@ For the most part it's transliterated from C, the major differences are: #t)))) #:tests? #f)) ; _curses.error: setupterm: could not find terminal (native-inputs - `(("ncurses" ,ncurses))) + (list ncurses)) (home-page "https://github.com/Rockhopper-Technologies/jinxed") (synopsis "Jinxed Terminal Library") (description @@ -24825,7 +25383,7 @@ For the most part it's transliterated from C, the major differences are: "0lz0w2ajdvwd269a7ppnzawmx8px0116j0nx8xvhlihxrd28zx4y")))) (build-system python-build-system) (propagated-inputs - `(("python-lxml" ,python-lxml))) + (list python-lxml)) (home-page "https://svgutils.readthedocs.io") (synopsis "Python SVG editor") (description "This is an utility package that helps with editing and @@ -24852,12 +25410,9 @@ placement and scaling of SVG figures and adding markers, such as labels.") (delete-file "blessed/win_terminal.py") #t)))) (build-system python-build-system) (propagated-inputs - `(("python-jinxed" ,python-jinxed) - ("python-six" ,python-six) - ("python-wcwidth" ,python-wcwidth))) + (list python-jinxed python-six python-wcwidth)) (native-inputs - `(("python-mock" ,python-mock) - ("python-pytest" ,python-pytest))) + (list python-mock python-pytest)) (home-page "https://github.com/jquast/blessed") (synopsis "Wrapper around terminal capabilities") (description @@ -24878,13 +25433,9 @@ positioning, and keyboard input.") "13fnrv7z3y0yfafzcjbl55cqxncvbxadr72ql4l29pgyvrqxpsfb")))) (build-system python-build-system) (propagated-inputs - `(("python-bleach" ,python-bleach) - ("python-docutils" ,python-docutils) - ("python-pygments" ,python-pygments) - ("python-six" ,python-six))) + (list python-bleach python-docutils python-pygments python-six)) (native-inputs - `(("python-mock" ,python-mock) - ("python-pytest" ,python-pytest))) + (list python-mock python-pytest)) (home-page "https://github.com/pypa/readme_renderer") (synopsis "Render README files in Warehouse") (description @@ -24913,9 +25464,9 @@ and plain text.") (lambda _ (invoke "python" "setup.py" "nosetests")))))) (native-inputs - `(("python-nose" ,python-nose))) + (list python-nose)) (propagated-inputs - `(("python-zope-interface" ,python-zope-interface))) + (list python-zope-interface)) (home-page "https://launchpad.net/lazr.delegates") (synopsis "Easily write objects that delegate behavior") (description @@ -24928,14 +25479,14 @@ and delegating behavior.") (define-public python-lazr-config (package (name "python-lazr-config") - (version "2.2.2") + (version "2.2.3") (source (origin (method url-fetch) (uri (pypi-uri "lazr.config" version)) (sha256 (base32 - "11xpddgyhyj7sf27wbmrq5lnqk21wnprx3ajycgwlxjamh6sgffd")))) + "1qdbrzl61q7cjhbnxvw9y3frcr935y7diwy15xrwcv9ynvw76jmp")))) (build-system python-build-system) (arguments '(#:phases @@ -24944,10 +25495,9 @@ and delegating behavior.") (lambda _ (invoke "python" "-s" "-m" "nose" "-P" "lazr")))))) (native-inputs - `(("python-nose" ,python-nose))) + (list python-nose)) (propagated-inputs - `(("python-lazr-delegates" ,python-lazr-delegates) - ("python-zope-interface" ,python-zope-interface))) + (list python-lazr-delegates python-zope-interface)) (home-page "https://launchpad.net/lazr.config") (synopsis "Create configuration schemas and process and validate configurations") (description @@ -24972,10 +25522,9 @@ validation.") "01lg1b0jpf8605mzaz9miq3nray6s7a7gc8n4wzg5nsxl8fglcp4")))) (build-system python-build-system) (propagated-inputs - `(("python-atpublic" ,python-atpublic) - ("python-zope-interface" ,python-zope-interface))) + (list python-atpublic python-zope-interface)) (native-inputs - `(("python-nose2" ,python-nose2))) + (list python-nose2)) (home-page "https://fluflbounce.readthedocs.io/en/latest/") (synopsis "Email bounce detectors") (description "The @code{flufl.bounce} library provides a set of heuristics @@ -24998,7 +25547,7 @@ RFC 3464.") "1flwpn1xhgc957zj3zxw92dhdjh0lsy0hdvzq32dzqpsajfsvq1r")))) (build-system python-build-system) (propagated-inputs - `(("python-atpublic" ,python-atpublic))) + (list python-atpublic)) (home-page "https://flufli18n.readthedocs.io") (synopsis "API for Python internationalization") (description @@ -25024,8 +25573,7 @@ different tasks.") "055941zyma3wfx25jhm8wcsghpv3jc3iwi1gdrdjhzcnfhn62lxq")))) (build-system python-build-system) (propagated-inputs - `(("python-atpublic" ,python-atpublic) - ("python-psutil" ,python-psutil))) + (list python-atpublic python-psutil)) (home-page "https://flufllock.readthedocs.io") (synopsis "NFS-safe file locking with timeouts for POSIX systems") (description @@ -25049,7 +25597,7 @@ and have a maximum lifetime built-in.") "1nkm95mhcfhl4x5jgs6y97ikszaxsfh07nyawsih6cxxm6l62641")))) (build-system python-build-system) (native-inputs - `(("python-nose2" ,python-nose2))) + (list python-nose2)) (home-page "https://gitlab.com/warsaw/flufl.testing") (synopsis "Collection of test tool plugins") (description @@ -25072,10 +25620,9 @@ and have a maximum lifetime built-in.") (base32 "15zczdcm90wl54c68f1qjb05nkd5bjsc9xjl3lk4frs7k7wkmrvp")))) (build-system python-build-system) (native-inputs - `(("python-pytest" ,python-pytest) - ("python-pytest-mock" ,python-pytest-mock))) + (list python-pytest python-pytest-mock)) (propagated-inputs - `(("python-pygments" ,python-pygments))) + (list python-pygments)) (arguments `(#:phases (modify-phases %standard-phases (replace 'check @@ -25102,15 +25649,10 @@ It adds a simple and readable way to print stuff during development.") "1ypbyqxlk7n6zibk90js3ybz37xmin3kk0i35g8c51bwqpcfyxg8")))) (build-system python-build-system) (propagated-inputs - `(("python-dateutil" ,python-dateutil) - ("python-pytz" ,python-pytz) - ("python-regex" ,python-regex) - ("python-ruamel.yaml" ,python-ruamel.yaml) - ("python-tzlocal" ,python-tzlocal))) + (list python-dateutil python-pytz python-regex python-ruamel.yaml + python-tzlocal)) (native-inputs - `(("python-mock" ,python-mock) - ("python-parameterized" ,python-parameterized) - ("tzdata" ,tzdata-for-tests))) + (list python-mock python-parameterized tzdata-for-tests)) (arguments `(;; TODO: Of 23320 tests, 6 fail and 53 error. #:tests? #f @@ -25143,11 +25685,9 @@ dates in almost any string formats commonly found on web pages.") "0rzkg3nymsbwdjc0ms2bsajkda02jipwyp3xk97qj71f21lz3dd1")))) (build-system python-build-system) (native-inputs - `(("python-pytest" ,python-pytest))) + (list python-pytest)) (propagated-inputs - `(("python-packaging" ,python-packaging) - ("python-pyyaml" ,python-pyyaml) - ("python-toml" ,python-toml))) + (list python-packaging python-pyyaml python-toml)) (home-page "https://github.com/pyupio/dparse") (synopsis "Parser for Python dependency files") (description "This package provides a parser for Python dependency files.") @@ -25166,9 +25706,7 @@ dates in almost any string formats commonly found on web pages.") "1ymi9ssk7i0mx3mviplf4csfvzibdd6wyj4qzj6s487n9xgnp85y")))) (build-system python-build-system) (native-inputs - `(("python-hypothesis" ,python-hypothesis) - ("python-mock" ,python-mock) - ("python-nose" ,python-nose))) + (list python-hypothesis python-mock python-nose)) (arguments '(#:phases (modify-phases %standard-phases @@ -25211,10 +25749,7 @@ facility for filtering those results.") (("def test_check_live") "def _test_check_live")) #t))))) (propagated-inputs - `(("python-click" ,python-click) - ("python-dparse" ,python-dparse) - ("python-packaging" ,python-packaging) - ("python-requests" ,python-requests))) + (list python-click python-dparse python-packaging python-requests)) (home-page "https://github.com/pyupio/safety") (synopsis "Check installed dependencies for known vulnerabilities") (description "Safety checks installed dependencies for known vulnerabilities. @@ -25224,23 +25759,23 @@ By default it uses the open Python vulnerability database Safety DB.") (define-public python-pypandoc (package (name "python-pypandoc") - (version "1.5") + (version "1.6.4") (source (origin (method url-fetch) (uri (pypi-uri "pypandoc" version)) (sha256 (base32 - "1zvn9764cf7kkjkmr9gw6wc8adpk06qxr1rhxwa9pg0zmdvrk90l")))) + "149basv4pvzg9zm74cjz68x8s2n5fykyj7prgysb0qfmja73r83f")))) (build-system python-build-system) (inputs - `(("pandoc" ,pandoc) - ("pandoc-citeproc" ,pandoc-citeproc))) + (list pandoc)) (propagated-inputs `(("wheel" ,python-wheel))) (native-inputs `(("texlive" ,(texlive-updmap.cfg (list texlive-amsfonts texlive-fonts-ec + texlive-generic-iftex texlive-hyperref texlive-oberdiek texlive-lm @@ -25274,7 +25809,7 @@ and pandoc-citeproc.") "1kmp3iwxxyzjsd47j2sprd47ihhkwhb3yydih3af5bbfq0ibh1w8")))) (build-system python-build-system) (propagated-inputs - `(("python-rply" ,python-rply))) + (list python-rply)) (arguments `(#:phases (modify-phases %standard-phases (replace 'check @@ -25311,12 +25846,9 @@ equivalent schemata in the XML-based default RELAX NG syntax.") (invoke "py.test" "-v")) #t))))) (propagated-inputs - `(("python-rsa" ,python-rsa) - ("python-pyaes" ,python-pyaes))) + (list python-rsa python-pyaes)) (native-inputs - `(("python-pytest" ,python-pytest) - ("python-pytest-asyncio" ,python-pytest-asyncio) - ("python-pytest-trio" ,python-pytest-trio))) + (list python-pytest python-pytest-asyncio python-pytest-trio)) (home-page "https://docs.telethon.dev") (synopsis "Full-featured Telegram client library for Python 3") (description "This library is designed to make it easy to write Python @@ -25336,8 +25868,7 @@ programs that can interact with Telegram.") "00aaff50jy4j0nakdzq9258z1gzrac9baarli2ymgspj88jg5968")))) (build-system python-build-system) (propagated-inputs - `(("python-lxml" ,python-lxml) - ("python-rnc2rng" ,python-rnc2rng))) + (list python-lxml python-rnc2rng)) (home-page "https://github.com/brechtm/citeproc-py") (synopsis "Citations and bibliography formatter") @@ -25363,12 +25894,9 @@ are plain text, reStructuredText and HTML.") (arguments `(#:tests? #f)) ; PyPI tarball lacks tests (native-inputs - `(("python-hypothesis" ,python-hypothesis) - ("python-pytest-cov" ,python-pytest-cov) - ("python-pytest-runner" ,python-pytest-runner))) + (list python-hypothesis python-pytest-cov python-pytest-runner)) (propagated-inputs - `(("python-arrow" ,python-arrow) - ("python-six" ,python-six))) + (list python-arrow python-six)) (home-page "https://inform.readthedocs.io") (synopsis "Print & logging utilities for communicating with user") (description @@ -25392,7 +25920,7 @@ cleanly print different types of messages.") (arguments `(#:tests? #f)) ; PyPI tarball lacks tests (propagated-inputs - `(("python-inform" ,python-inform))) + (list python-inform)) (home-page "https://nestedtext.org") (synopsis "Human readable and writable data interchange format") (description @@ -25453,9 +25981,7 @@ module patches @code{asyncio} to allow nested use of @code{asyncio.run} and (invoke "pytest" "--maxfail" "3" "--verbose")) #t))))) (native-inputs - `(("python-aiohttp" ,python-aiohttp) - ("python-pytest" ,python-pytest) - ("python-pytest-asyncio" ,python-pytest-asyncio))) + (list python-aiohttp python-pytest python-pytest-asyncio)) (home-page "https://github.com/yuvipanda/simpervisor") (synopsis "Simple async process supervisor") (description @@ -25476,7 +26002,7 @@ module patches @code{asyncio} to allow nested use of @code{asyncio.run} and (base32 "1mzk4yabxj6r149fswhis18hd8dnag5sj8i4wb06450zq3pi8dh7")))) (native-inputs - `(("unzip" ,unzip))) + (list unzip)) (build-system python-build-system) (arguments '(#:tests? #f)) ; No test suite. (home-page "https://www.parallelpython.com") @@ -25504,12 +26030,9 @@ applications with variable CPU loads).") (base32 "089smpq29ll0z37lnq26r2f72d31i33xm9fw9pc6hlcsm6nbjbiv")))) (build-system python-build-system) (native-inputs - `(("ghostscript" ,ghostscript) - ("pkg-config" ,pkg-config) - ("python-nose" ,python-nose))) + (list ghostscript pkg-config python-nose)) (inputs - `(("djvulibre" ,djvulibre) - ("python-cython" ,python-cython))) + (list djvulibre python-cython)) (arguments `(#:phases (modify-phases %standard-phases @@ -25530,14 +26053,15 @@ applications with variable CPU loads).") (define-public python-versioneer (package (name "python-versioneer") - (version "0.19") + (version "0.21") (source (origin (method url-fetch) (uri (pypi-uri "versioneer" version)) (sha256 (base32 - "1bmg8y78am371rd9b4clf11b8g1h7xvq8q58z03jvgdwpsdx7zm4")))) + "084fglxafbzvf1vbkzfajvs9qwnvjwwn8pxql9nrlpyipv5xpwk4")) + (patches (search-patches "python-versioneer-guix-support.patch")))) (build-system python-build-system) (home-page "https://github.com/python-versioneer/python-versioneer") @@ -25571,9 +26095,7 @@ process.") "src/zlib-1.2.8")))))) (build-system python-build-system) (inputs - `(("libpng" ,libpng) - ("libtiff" ,libtiff) - ("zlib" ,zlib))) + (list libpng libtiff zlib)) (arguments `(#:python ,python-2 #:phases @@ -25602,7 +26124,7 @@ process.") "17n3w8c20kgkgc6khaafdhhlcdj4bzman4paxqsl7harma59137k")))) (build-system python-build-system) (propagated-inputs - `(("python-immutables" ,python-immutables))) + (list python-immutables)) (home-page "https://github.com/MagicStack/contextvars") (synopsis "PEP 567 Backport") @@ -25641,9 +26163,7 @@ disk files in asyncio applications.") "0c5cbbqrfyjwakdh3kbwxis6mbrbwky1z1fqslgszgpcj4g43q30")))) (build-system python-build-system) (propagated-inputs - `(("python-typing-extensions" - ,python-typing-extensions) - ("python-typing-inspect" ,python-typing-inspect))) + (list python-typing-extensions python-typing-inspect)) (home-page "https://pyre-check.org") (synopsis "Type system extensions for use with @code{python-pyre}") @@ -25716,9 +26236,9 @@ query Watchman to discover file changes.") (invoke "pytest" "tests")) #t))))) (propagated-inputs - `(("python-importlib-metadata" ,python-importlib-metadata))) + (list python-importlib-metadata)) (native-inputs - `(("python-pytest" ,python-pytest))) + (list python-pytest)) (home-page "https://gitlab.com/dpizetta/helpdev") (synopsis "Extract information about the Python environment easily") @@ -25760,10 +26280,9 @@ older versions of Python and so are packaged here.") "1d2j64wgbggzv5rhvil10zndp2w78wa5np5w0psj122ws9qr9wsa")))) (build-system python-build-system) (native-inputs - `(("python-mock" ,python-mock))) + (list python-mock)) (propagated-inputs - `(("python-logutils" ,python-logutils) - ("python-pyyaml" ,python-pyyaml))) + (list python-logutils python-pyyaml)) (home-page "https://github.com/gmr/helper") (synopsis "Library for writing configurable applications and daemons") (description @@ -25796,11 +26315,9 @@ applications and daemons.") (for-each make-file-writable (find-files ".")) #t))))) (native-inputs - `(("python-pytest" ,python-pytest) - ("python-pytest-cov" ,python-pytest-cov) - ("python-pytest-runner" ,python-pytest-runner))) + (list python-pytest python-pytest-cov python-pytest-runner)) (propagated-inputs - `(("python-libsass" ,python-libsass))) + (list python-libsass)) (home-page "https://github.com/spyder-ide/qtsass") (synopsis "Compile SCSS files to valid Qt stylesheets") (description @@ -25829,8 +26346,7 @@ handling those variations.") ;; added as native-inputs. #:tests? #f)) (propagated-inputs - `(("python-helpdev" ,python-helpdev) - ("python-qtpy" ,python-qtpy))) + (list python-helpdev python-qtpy)) (home-page "https://github.com/ColinDuquesnoy/QDarkStyleSheet") (synopsis @@ -25862,7 +26378,7 @@ Qt applications.") (invoke "pytest"))) #t))))) (native-inputs - `(("python-pytest" ,python-pytest))) + (list python-pytest)) (home-page "https://github.com/scott-griffiths/bitstring") (synopsis "Simple construction, analysis and modification of binary data") @@ -25884,7 +26400,7 @@ Qt applications.") "0bh2kyj8wd7h9gg4nsvrbykl5ly0f70f0wi3fbm204b1f0fcmywj")))) (build-system python-build-system) (propagated-inputs - `(("python-pyyaml" ,python-pyyaml))) + (list python-pyyaml)) (home-page "https://github.com/beetbox/confuse") (synopsis "Painless YAML configuration") (description "Confuse is a configuration library for Python that uses @@ -25907,10 +26423,9 @@ integration, human-readable errors, and standard OS-specific locations.") (arguments `(#:tests? #false)) ; almost all tests want to run mkfs.btrfs (propagated-inputs - `(("python-cffi" ,python-cffi))) + (list python-cffi)) (native-inputs - `(("python-pytest" ,python-pytest) - ("python-pytest-runner" ,python-pytest-runner))) + (list python-pytest python-pytest-runner)) (home-page "https://gitlab.com/rubdos/pyreflink") (synopsis "Python wrapper around reflink system call") (description @@ -25945,16 +26460,15 @@ implementations.") "${Coin_INCLUDE_DIR};${SoQt_INCLUDE_DIRS}")) #t))))) (native-inputs - `(("cmake" ,cmake) - ("swig" ,swig))) + (list cmake swig)) (inputs - `(("python-wrapper" ,python-wrapper) - ("qtbase" ,qtbase-5) - ("libxi" ,libxi) - ("libice" ,libice) - ("soqt" ,soqt) - ("glew" ,glew) - ("coin3D" ,coin3D-4))) + (list python-wrapper + qtbase-5 + libxi + libice + soqt + glew + coin3D-4)) (home-page "https://github.com/coin3d/pivy") (synopsis "Python bindings to Coin3D") (description @@ -25975,7 +26489,7 @@ Application Programming Interface based on the Open Inventor 2.1 API.") "0gw106k4b6y8mw7pp52awxyplj2bwvwk315k4sywzwh0g1abfcxx")))) (build-system python-build-system) (propagated-inputs - `(("python-colorama" ,python-colorama))) + (list python-colorama)) (home-page "https://github.com/MasterOdin/crayons") (synopsis "TextUI colors for Python") (description "This package gives you colored strings for the terminal. @@ -25996,9 +26510,9 @@ restores the original state after the string is printed.") "1pi597z94n2mkd821ln52fq0g727n2jxfskf280ip3kf7jw8w294")))) (build-system python-build-system) (native-inputs - `(("python-pytest" ,python-pytest))) + (list python-pytest)) (inputs - `(("sane-backends" ,sane-backends))) + (list sane-backends)) (home-page "https://github.com/python-pillow/Sane") (synopsis "Python interface to the SANE scanner") (description "This package provides Python interface to the SANE scanner @@ -26040,25 +26554,25 @@ and frame grabber interface.") (lambda* (#:key outputs #:allow-other-keys) (wrap-program (string-append (assoc-ref outputs "out") "/bin/screenkey") - `("PYTHONPATH" ":" prefix (,(getenv "PYTHONPATH"))) + `("GUIX_PYTHONPATH" ":" prefix (,(getenv "GUIX_PYTHONPATH"))) `("GI_TYPELIB_PATH" - ":" prefix (,(getenv "GI_TYPELIB_PATH")))) - #t))))) + ":" prefix (,(getenv "GI_TYPELIB_PATH"))))))))) (inputs - `(("python-distutils-extra" ,python-distutils-extra) - ("python-tokenize-rt" ,python-tokenize-rt) - ("libx11" ,libx11) - ("libxtst" ,libxtst) - ("gtk+" ,gtk+) - ("python-pygobject" ,python-pygobject) - ("python-pycairo" ,python-pycairo) - ("python-setuptools-git" ,python-setuptools-git) - ("python-babel" ,python-babel))) + (list python-distutils-extra + python-tokenize-rt + libx11 + libxtst + gtk+ + python-pygobject + python-pycairo + python-setuptools-git + python-babel)) (home-page "https://www.thregr.org/~wavexx/software/screenkey/") (synopsis "Screencast tool to display pressed keys") (description - "A screencast tool to display your keys inspired by Screenflick.") + "Screenkey is a screencast tool to display your keys inspired by +Screenflick.") (license license:gpl3+))) (define-public python-jinja2-cli @@ -26074,11 +26588,9 @@ and frame grabber interface.") "0vikx7v6fbvww6kfrv0k5a24jyv3ak7nindg60906pdd1m9qvkcw")))) (build-system python-build-system) (propagated-inputs - `(("python-jinja2" ,python-jinja2))) + (list python-jinja2)) (native-inputs - `(("python-flake8" ,python-flake8) - ("python-jinja2" ,python-jinja2) - ("python-pytest" ,python-pytest))) + (list python-flake8 python-jinja2 python-pytest)) (home-page "https://github.com/mattrobenolt/jinja2-cli") (synopsis "Command-line interface to Jinja2") (description @@ -26156,9 +26668,7 @@ iGoogle subscription lists.") (invoke "nosetests" "-v" "--exclude=^load_tests$")))))) (native-inputs ;; For tests. - `(("python-docutils" ,python-docutils) - ("python-nose" ,python-nose) - ("python-pygments" ,python-pygments))) + (list python-docutils python-nose python-pygments)) (home-page "https://github.com/leohemsted/smartypants.py") (synopsis "Translate punctuation characters into smart quotes") (description @@ -26190,10 +26700,10 @@ entities (lambda _ (invoke "nosetests" "-v")))))) (propagated-inputs - `(("python-smartypants" ,python-smartypants))) + (list python-smartypants)) (native-inputs ;; For tests. - `(("python-nose" ,python-nose))) + (list python-nose)) (home-page "https://github.com/mintchaos/typogrify") (synopsis "Filters to transform text into typographically-improved HTML") (description @@ -26216,7 +26726,7 @@ Django template systems, the filters can be used in any environment.") "1k4ydp5rgkv4985v459kcl06i1igjm1ywvh2vkbi9ck1zyyri1z5")))) (build-system python-build-system) (propagated-inputs - `(("python-six" ,python-six))) + (list python-six)) (home-page "https://github.com/nir0s/ld") (synopsis "OS platform information API") (description @@ -26255,8 +26765,7 @@ runs on, such as a reliable machine-readable ID, or version information.") (invoke "pytest")) #t))))) (native-inputs - `(("python-cython" ,python-cython) - ("python-pytest" ,python-pytest))) + (list python-cython python-pytest)) (home-page "https://github.com/scoder/quicktions") (synopsis "Fast fractions data type for rational numbers") (description @@ -26281,10 +26790,7 @@ is the cythonized version of @code{fractions.Fraction}.") ;; pathvalidate tests depend on pytest-md-report, which ;; depends on pathvalidate. (native-inputs - `(("python-allpairspy" ,python-allpairspy) - ("python-click" ,python-click) - ("python-faker" ,python-faker) - ("python-pytest" ,python-pytest))) + (list python-allpairspy python-click python-faker python-pytest)) (home-page "https://github.com/thombashi/pathvalidate") (synopsis "Sanitize strings representing paths") (description @@ -26325,9 +26831,7 @@ result.") "0rvdd2ikdr0yg6cx6594fdzn53cmdc0g0i6qsbcdq8i2kxjdpd5x")))) (build-system python-build-system) (propagated-inputs - `(("python-commonmark" ,python-commonmark) - ("python-docutils" ,python-docutils) - ("python-sphinx" ,python-sphinx))) + (list python-commonmark python-docutils python-sphinx)) (arguments '(#:phases (modify-phases %standard-phases (add-after 'unpack 'delete-test-sphinx @@ -26337,8 +26841,8 @@ result.") (home-page "https://github.com/readthedocs/recommonmark") (synopsis "Docutils-compatibility bridge to CommonMark") (description - "This packages provides a docutils-compatibility bridge to CommonMark, -enabling you to write CommonMark inside of Docutils & Sphinx projects.") + "This package provides a docutils-compatibility bridge to CommonMark that +lets you write CommonMark inside of Docutils & Sphinx projects.") (license license:expat))) (define-public python-pyhull @@ -26354,7 +26858,7 @@ enabling you to write CommonMark inside of Docutils & Sphinx projects.") "091sph52c4yk1jlm5w8xidxpzbia9r7s42bnb23q4m4b56ihmzyj")))) (build-system python-build-system) (propagated-inputs - `(("python-numpy" ,python-numpy))) + (list python-numpy)) (home-page "https://github.com/materialsvirtuallab/pyhull") (synopsis "Python wrapper to Qhull") (description @@ -26411,7 +26915,8 @@ and BMI2).") (file-name (git-file-name name version)) (sha256 (base32 - "1yy62k3cjr6556nbp651w6v4hzl7kz4y75wy2dfqgndgbnixskx2")))) + "1yy62k3cjr6556nbp651w6v4hzl7kz4y75wy2dfqgndgbnixskx2")) + (patches (search-patches "python-peachpy-determinism.patch")))) (build-system python-build-system) (arguments '(#:phases (modify-phases %standard-phases @@ -26420,11 +26925,9 @@ and BMI2).") (when tests? (invoke "python" "setup.py" "nosetests"))))))) (native-inputs - `(("python-nose" ,python-nose) - ("python-rednose" ,python-rednose))) + (list python-nose python-rednose)) (propagated-inputs - `(("python-six" ,python-six) - ("python-opcodes" ,python-opcodes))) + (list python-six python-opcodes)) (synopsis "Efficient assembly code generation in Python") (description "PeachPy is a Python framework for writing high-performance assembly kernels. @@ -26457,8 +26960,9 @@ supports x86_64 instructions up to AVX-512 and SHA.") (build-system python-build-system) (home-page "https://github.com/hsoft/sgmllib") (synopsis "Python 3 port of sgmllib") - (description "This package is a port of sgmllib that is no longer part -of Python 3.") + (description "This packages provides an unmaintained port of sgmllib to +Python 3. It is used to parse text files formatted in @acronym{SGML,Standard +Generalized Mark-up Language}.") (license license:bsd-3)))) (define-public python-cwcwidth @@ -26474,11 +26978,8 @@ of Python 3.") "1azrphpkcyggg38xvkfb9dpc4xmmm90p02kf8dkqd4d6j5w96aj8")))) (build-system python-build-system) (native-inputs - `(("python-cython" ,python-cython) - ("python-pytest" ,python-pytest) - ("python-setuptools-scm" ,python-setuptools-scm) - ("python-toml" ,python-toml) - ("python-wheel" ,python-wheel))) + (list python-cython python-pytest python-setuptools-scm python-toml + python-wheel)) (home-page "https://github.com/sebastinas/cwcwidth") (synopsis "Python bindings for wc(s)width") @@ -26515,11 +27016,9 @@ functions defined in POSIX.1-2001 and POSIX.1-2008.") (string-append (getcwd) ":" (getenv "GUIX_PYTHONPATH"))) (invoke "pytest"))))))) (native-inputs - `(("python-pytest" ,python-pytest) - ("python-pytest-cov" ,python-pytest-cov) - ("python-wheel" ,python-wheel))) + (list python-pytest python-pytest-cov python-wheel)) (propagated-inputs - `(("python-jinja2" ,python-jinja2))) + (list python-jinja2)) (home-page "https://github.com/Technologicat/pyan") (synopsis "Offline call graph generator for Python 3") (description "Pyan takes one or more Python source files, performs @@ -26528,6 +27027,176 @@ objects in the combined source, and how they define or use each other. The graph can be output for rendering by GraphViz or yEd.") (license license:gpl2))) +(define-public python-multipledispatch + (package + (name "python-multipledispatch") + (version "0.6.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "multipledispatch" version)) + (sha256 + (base32 + "1slblghfjg9fdi9zpd7gmrkvfbv20nrdgnrymcnbky8bzm8i9ax7")))) + (build-system python-build-system) + (propagated-inputs (list python-six)) + (home-page "https://github.com/mrocklin/multipledispatch/") + (synopsis "Multiple dispatch for Python based on pattern matching") + (description "This library provides an efficient mechanism for overloading +function implementations based on the types of the arguments.") + (license license:bsd-3))) + +(define-public python-logical-unification + (package + (name "python-logical-unification") + (version "0.4.3") + (source + (origin + (method url-fetch) + (uri (pypi-uri "logical-unification" version)) + (sha256 + (base32 + "0j57953hi7kg2rl0163vzjzsvzdyjimnklhx6idf5vaqqf1d3p1j")))) + (build-system python-build-system) + (propagated-inputs + (list python-multipledispatch python-toolz)) + (home-page "https://github.com/pythological/unification/") + (synopsis "Logical unification in Python for solving symbolic expressions") + (description "This library provides algorithms and data types for solving +symbolic expressions in pure Python using the technique of logical unification.") + (license license:bsd-3))) + +(define-public python-cons + (package + (name "python-cons") + (version "0.4.2") + (source + (origin + (method url-fetch) + (uri (pypi-uri "cons" version)) + (sha256 + (base32 + "0w9giq196wps7mbm47c4shdzs5yvwvqajqzkim2p92i51sm5qgvm")))) + (build-system python-build-system) + (native-inputs + (list python-pytest-6 python-toml)) + (propagated-inputs + (list python-logical-unification)) + (home-page "https://github.com/pythological/python-cons") + (synopsis "Cons cell data structures and related algorithms for Python") + (description + "This library implements algorithms and data structures for Lisp-style +cons cells in Python.") + (license license:lgpl3+))) + +(define-public python-etuples + (package + (name "python-etuples") + (version "0.3.3") + (source + (origin + (method url-fetch) + (uri (pypi-uri "etuples" version)) + (sha256 + (base32 + "0jhfyp177v37rl0i7wqfx7q6s5qkz027hl283d1x8d0vm3w0zqc8")))) + (build-system python-build-system) + (propagated-inputs + (list python-cons python-multipledispatch)) + (home-page "https://github.com/pythological/etuples") + (synopsis "S-expressions in Python") + (description + "This library implements eval'able S-expression in Python using tuple-like objects.") + (license license:asl2.0))) + +(define-public python-minikanren + (package + (name "python-minikanren") + (version "1.0.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/pythological/kanren") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0g7wfj5hxalwz7k1301nsjqhjpzsif1bj6wjm2x2kavlm2ypv9jc")))) + (build-system python-build-system) + (arguments + '(#:phases (modify-phases %standard-phases + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "python" "-m" "pytest" "-v" "tests/" "kanren/")) + #t))))) + (native-inputs + (list python-coveralls + python-pydocstyle + python-pytest + python-pytest-cov + python-pylint + python-black + python-sympy + python-versioneer + python-coverage + python-pre-commit)) + (propagated-inputs + (list python-toolz python-cons python-multipledispatch + python-etuples python-logical-unification)) + (home-page "https://github.com/pythological/kanren") + (synopsis "Relational logic programming in pure Python") + (description + "The minikanren library provides an algorithmic core for computer algebra +systems in Python.") + (license license:bsd-3))) + +(define-public python-dotenv + (package + (name "python-dotenv") + (version "0.19.2") + (source + (origin + (method url-fetch) + (uri (pypi-uri "python-dotenv" version)) + (sha256 + (base32 "0pv5ygpr6syc6zkw21in4ysqs3k7qaxk9m1g5pzlafwm3silkpm5")))) + (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda* (#:key tests? inputs outputs #:allow-other-keys) + (when tests? + (add-installed-pythonpath inputs outputs) + (setenv "PATH" (string-append (getenv "PATH") ":" + (assoc-ref outputs "out") "/bin")) + ;; Skip the ipython tests. + (delete-file "tests/test_ipython.py") + (invoke "python" "-m" "pytest"))))))) + (propagated-inputs + (list python-click)) + (native-inputs + (list python-mock python-pytest python-sh)) + (home-page "https://github.com/theskumar/python-dotenv") + (synopsis "Setup environment variables according to .env files") + (description + "This package provides the @code{python-dotenv} Python module to read +key-value pairs from a @code{.env} file and set them as environment variables.") + (license license:bsd-3))) + +(define-public python-dotenv-0.13.0 + (package (inherit python-dotenv) + (name "python-dotenv") + (version "0.13.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "python-dotenv" version)) + (sha256 + (base32 + "0x5dagmfn31phrbxlwacw3s4w5vibv8fxqc62nqcdvdhjsy0k69v")))))) + (define-public date2name (let ((commit "6c8f37277e8ec82aa50f90b8921422be30c4e798") (revision "1")) @@ -26563,3 +27232,553 @@ files and directories and adds a datestamp in standard ISO 8601+ format YYYY-MM-DD at the beginning of the file or directory name.") (home-page "https://github.com/novoid/date2name") (license license:gpl3+)))) + +(define-public python-braintree + (package + (name "python-braintree") + (version "4.12.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "braintree" version)) + (sha256 + (base32 "19kli85q18p80nsn8fm4ql6axpr7bllfqg5chv2ywhr8zr8bssll")))) + (build-system python-build-system) + (propagated-inputs + (list python-requests)) + (home-page + "https://developers.braintreepayments.com/python/sdk/server/overview") + (synopsis "Braintree Python Library") + (description "The Braintree Python SDK provides integration access to the +Braintree Gateway. Braintree is a US-based payments service provider.") + (license license:expat))) + +(define-public python-markuppy + (package + (name "python-markuppy") + (version "1.14") + (source + (origin + (method url-fetch) + (uri (pypi-uri "MarkupPy" version)) + (sha256 + (base32 "0pqdmpxbr8iq22b4css2gz5z6s01ddpzyj25x27kgbs2lp0f5phs")))) + (build-system python-build-system) + (home-page "https://github.com/tylerbakke/MarkupPy") + (synopsis "A pythonic HTML/XML generator") + (description "This Python module attempts to make it easier to generate +HTML/XML from a Python program in an intuitive, lightweight, customizable and +pythonic way.") + (license license:expat))) + +(define-public python-tablib + (package + (name "python-tablib") + (version "3.0.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "tablib" version)) + (sha256 + (base32 "03f1z6jq6rf67gwhbm9ma4rydm8h447a5nh5lcs5l8jg8l4aqg7q")))) + (build-system python-build-system) + (arguments + '(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (setenv "GUIX_PYTHONPATH" + (string-append (getcwd) "/build/lib:" + (getenv "GUIX_PYTHONPATH"))) + (invoke "pytest"))))))) + (native-inputs + (list python-pandas ;; required for test-suite + python-pytest python-pytest-cov python-setuptools-scm)) + (propagated-inputs + (list python-markuppy + python-odfpy + python-openpyxl + python-pyyaml + python-tabulate + python-xlrd + python-xlwt)) + (home-page "https://tablib.readthedocs.io") + (synopsis "Format agnostic tabular data library") + (description "@code{tablib} is a format-agnostic tabular dataset library, +written in Python. Supported output formats are Excel (Sets + Books), +JSON (Sets + Books), YAML (Sets + Books), HTML (Sets), Jira (Sets), +TSV (Sets), ODS (Sets), CSV (Sets), and DBF (Sets). + +@code{tablib} also supports Pandas DataFrames (Sets). Anyhow, since pandas is +quite huge, this Guix package doesn't depend on pandas. In case, just also +install @code{python-pandas}.") + (license license:expat))) + +(define-public python-csb43 + (package + (name "python-csb43") + (version "0.9.1") + (source + (origin + (method url-fetch) + (uri (pypi-uri "csb43" version)) + (sha256 + (base32 "0r0csl9npncnkfafg3rg6xr38d1qr0sxvq7wn7mg9bq41hvvh1si")))) + (build-system python-build-system) + (native-inputs + (list python-lxml)) + (propagated-inputs + (list python-pycountry python-pyyaml python-tablib)) + (home-page "https://bitbucket.org/wmj/csb43") + (synopsis "Tools for converting from the Spanish banks' format CSB norm +43 (CSB43)") + (description "This package provides tools to convert files in the format +used by multiple Spanish banks (standard 43 of the Spanish Banking Council +[CSB43] / Spanish Banking Association [AEB43]) to other formats. + +Supported output formats are: OFX, HomeBank CSV, HTML, JSON, ODS (OpenDocument +spreadsheet), CSV, TSV, XLS, XLSX (Microsoft Excel spreadsheet), and YAML.") + (license license:lgpl3))) + +(define-public python-febelfin-coda + (package + (name "python-febelfin-coda") + (version "0.1.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "febelfin-coda" version)) + (sha256 + (base32 "10nf4hdwldqgdmh4g613vx55sbsw1x1yzpvs3crwlggbp75fjjfi")))) + (build-system python-build-system) + (home-page "https://coda.b2ck.com/") + (synopsis "A module to parse Belgian CODA files") + (description "This package provides a module to parse Coded statement of +account (CODA) files as defined be the Belgian Febelfin bank standard.") + (license license:bsd-3))) + +(define-public python-ofxparse + (package + (name "python-ofxparse") + (version "0.21") + (source + (origin + (method url-fetch) + (uri (pypi-uri "ofxparse" version)) + (sha256 + (base32 "19y4sp5l9jqiqzzlbqdfiab42qx7d84n4xm4s7jfq397666vcyh5")))) + (build-system python-build-system) + (arguments + '(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "nosetests" "-v"))))))) + (native-inputs + (list python-nose)) + (propagated-inputs + (list python-beautifulsoup4 python-lxml python-six)) + (home-page "http://sites.google.com/site/ofxparse") + (synopsis "Tools for working with the OFX (Open Financial Exchange) file +format") + (description "@code{ofxparse} is a parser for Open Financial +Exchange (.ofx) format files. OFX files are available from almost any online +banking site, so they work well if you want to pull together your finances +from multiple sources. Online trading accounts also often provide account +statements in OFX files.") + (license license:expat))) + +(define-public python-stripe + (package + (name "python-stripe") + (version "2.60.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "stripe" version)) + (sha256 + (base32 "0258lzh4qikhinfggnlfh5aklcvg7lrvl8giqrh0yf0l61wvfrl9")))) + (build-system python-build-system) + (arguments + '(#:tests? #f)) ;; tests require network + (propagated-inputs + (list python-requests)) + (home-page "https://github.com/stripe/stripe-python") + (synopsis "Python bindings for the Stripe financial services' API") + (description "This package provides access to the Stripe financial +services' API. It includes a pre-defined set of classes for API resources +that initialize themselves dynamically from API responses which makes it +compatible with a wide range of versions of the Stripe API.") + (license license:expat))) + +(define-public python-platformdirs + (package + (name "python-platformdirs") + (version "2.2.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "platformdirs" version)) + (sha256 + (base32 "07hq5qrp7pqj63iczg01wbf5ii6f0ncd0dq5mzkdhsslmg9slbb3")))) + (build-system python-build-system) + (native-inputs + (list python-appdirs python-pytest python-pytest-cov + python-pytest-mock)) + (home-page "https://github.com/platformdirs/platformdirs") + (synopsis "Determine the appropriate platform-specific directories") + (description "When writing applications, finding the right location to +store user data and configuration varies per platform. Even for +single-platform apps, there may by plenty of nuances in figuring out the right +location. This small Python module determines the appropriate +platform-specific directories, e.g. the ``user data dir''.") + (license license:expat))) + +(define-public python-json2html + (package + (name "python-json2html") + (version "1.3.0") + (source + ;; There are no tests in the PyPI tarball. + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/softvar/json2html") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1ncypljnl5y8lsxy6ibcqy412kx3mzxl4ajg67568hvq98kv1sb3")))) + (build-system python-build-system) + (arguments + '(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda* (#:key tests? inputs outputs #:allow-other-keys) + (when tests? + (add-installed-pythonpath inputs outputs) + (invoke "python" "test/run_tests.py"))))))) + (home-page "https://github.com/softvar/json2html") + (synopsis "Convert JSON to HTML table") + (description "@code{python-json2html} is a python module to convert JSON +into a human readable HTML table representation.") + (license license:expat))) + +(define-public python-face + (package + (name "python-face") + (version "20.1.1") + (source + (origin + (method url-fetch) + (uri (pypi-uri "face" version)) + (sha256 + (base32 "0gpd9f0rmbv3rd2szi2na37l29fabkwazikjrxc6wca1lddwlnbx")))) + (build-system python-build-system) + (arguments + '(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda* (#:key tests? inputs outputs #:allow-other-keys) + (when tests? + ;; Make installed package available for running the tests. + (add-installed-pythonpath inputs outputs) + (invoke "pytest" "-v"))))))) + (native-inputs + (list python-pytest)) + (propagated-inputs + (list python-boltons)) + (home-page "https://github.com/mahmoud/face") + (synopsis "CLI parsing and dispatching microframework") + (description "@code{python-face} is a Pythonic microframework for building +command-line applications. + +@itemize +@item First-class subcommand support +@item Powerful middleware architecture +@item Separate parser layer +@item Built-in flagfile support +@item Handy testing utilities +@item Themeable help display +@end itemize") + (license license:bsd-3))) + +(define-public python-glom + (package + (name "python-glom") + (version "20.11.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "glom" version)) + (sha256 + (base32 "04pba09vdr3qjvqvy14g60fscdsi35chbbyqpczdp76cpir101al")))) + (build-system python-build-system) + (arguments + '(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda* (#:key tests? inputs outputs #:allow-other-keys) + (when tests? + ;; Make installed executable available for running the tests. + (setenv "PATH" + (string-append (assoc-ref outputs "out") "/bin" + ":" (getenv "PATH"))) + (invoke "pytest" "-v"))))))) + (native-inputs + (list python-pytest python-pyyaml)) + (propagated-inputs + (list python-attrs python-boltons python-face)) + (home-page "https://github.com/mahmoud/glom") + (synopsis "Declaratively restructure data") + (description "Real applications have real data, and real data +nests---objects inside of objects inside of lists of objects. glom is a new +and powerful way to handle real-world data, featuring: + +@itemize +@item Path-based access to nested data structures +@item Readable, meaningful error messages +@item Declarative data transformation, using lightweight, Pythonic specifications +@item Built-in data exploration and debugging features +@end itemize") + (license license:bsd-3))) + +(define-public python-box + (package + (name "python-box") + (version "5.3.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "python-box" version)) + (sha256 + (base32 + "0jhrdif57khx2hsw1q6a9x42knwcvq8ijgqyq1jmll6y6ifyzm2f")))) + (build-system python-build-system) + (propagated-inputs + (list python-msgpack python-ruamel.yaml python-toml)) + (home-page "https://github.com/cdgriffith/Box") + (synopsis "Advanced Python dictionaries with dot notation access") + (description + "This package provides the @code{python-box} Python module. +It implements advanced Python dictionaries with dot notation access.") + (license license:expat))) + +(define-public python-fields + (package + (name "python-fields") + (version "5.0.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "fields" version)) + (sha256 + (base32 "09sppvhhkhkv9zc9g994m53z15v92csxwcf42ggkaknlv01smm1i")))) + (build-system python-build-system) + (home-page "https://python-fields.readthedocs.io/") + (synopsis "Python container class boilerplate killer") + (description "Avoid repetetive boilerplate code in Python classes.") + (license license:bsd-3))) + +(define-public python-aspectlib + (package + (name "python-aspectlib") + (version "1.5.2") + (source + (origin + (method url-fetch) + (uri (pypi-uri "aspectlib" version)) + (sha256 + (base32 "1am4ycf292zbmgz791z393v63w7qrynf8q5p9db2wwf2qj1fqxfj")))) + (build-system python-build-system) + (propagated-inputs (list python-fields)) + (home-page "https://github.com/ionelmc/python-aspectlib") + (synopsis + "Python monkey-patching and decorators") + (description + "This package provides an aspect-oriented programming, monkey-patch +and decorators library. It is useful when changing behavior in existing +code is desired. It includes tools for debugging and testing: +simple mock/record and a complete capture/replay framework.") + (license license:bsd-2))) + +(define-public python-ijson + (package + (name "python-ijson") + (version "3.1.4") + (source + (origin + (method url-fetch) + (uri (pypi-uri "ijson" version)) + (sha256 + (base32 "1sp463ywj4jv5cp6hsv2qwiima30d09xsabxb2dyq5b17jp0640x")))) + (arguments + `(#:phases + (modify-phases %standard-phases + ;; the tests run by the default setup.py require yajl 1.x, + ;; but we have 2.x. yajl 1.x support is going to be removed + ;; anyway, so use pytest to avoid running the yajl1-related + ;; tests. See: https://github.com/ICRAR/ijson/issues/55 + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "pytest" "-vv"))))))) + (inputs + ;; libyajl is optional, but compiling with it makes faster + ;; backends available to ijson: + (list libyajl)) + (native-inputs + (list python-pytest)) + (build-system python-build-system) + (home-page "https://github.com/ICRAR/ijson") + (synopsis "Iterative JSON parser with Python iterator interfaces") + (description + "Ijson is an iterative JSON parser with standard Python iterator +interfaces.") + (license license:bsd-3))) + +(define-public python-orgparse + (package + (name "python-orgparse") + (version "0.3.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "orgparse" version)) + (sha256 + (base32 "14iv4pg3rma9560plg0w943x04mr2cmrssda43y2d1x9acrd2n71")))) + (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "pytest" "-vv" "orgparse/tests"))))))) + (native-inputs + (list python-pytest python-setuptools-scm)) + (home-page "https://github.com/karlicoss/orgparse") + (synopsis "Emacs Org mode parser in Python") + (description + "This package is a Python module for reading Emacs Org mode files.") + (license license:bsd-3))) + +(define-public dynaconf + (package + (name "dynaconf") + (version "3.1.7") + (source + (origin + (method git-fetch) + (uri + (git-reference + (url "https://github.com/rochacbruno/dynaconf") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0pjyjsdzairpn5vq8nzddhxwxmr18grn272nj31wcy2ipwdl3c3h")) + (patches (search-patches "dynaconf-unvendor-deps.patch")) + (modules '((guix build utils))) + (snippet '(begin + ;; Remove vendored dependencies + (let ((unvendor '("click" "dotenv" "ruamel" "toml"))) + (with-directory-excursion "dynaconf/vendor" + (for-each delete-file-recursively unvendor)) + (with-directory-excursion "dynaconf/vendor_src" + (for-each delete-file-recursively unvendor))))))) + (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda* (#:key tests? outputs #:allow-other-keys) + (when tests? + (setenv "PATH" + (string-append (assoc-ref outputs "out") "/bin:" + (getenv "PATH"))) + ;; These tests depend on hvac and a live Vault process. + (delete-file "tests/test_vault.py") + (invoke "make" "test_only"))))))) + (propagated-inputs + (list python-click python-configobj python-dotenv-0.13.0 + python-ruamel.yaml python-toml)) + (native-inputs + (list python-django python-flask python-pytest-6 python-pytest-cov + python-pytest-mock)) + (home-page "https://www.dynaconf.com/") + (synopsis "The dynamic configurator for your Python project") + (description + "This package provides @code{dynaconf} the dynamic configurator manager for +your Python project. It provides features such as: + +@itemize +@item Inspired by the @url{https://12factor.net/config, 12-factor application guide}; +@item Settings management (default values, validation, parsing, templating); +@item Protection of sensitive information (passwords/tokens); +@item Multiple file formats @code{toml|yaml|json|ini|py} and also customizable +loaders; +@item Full support for environment variables to override existing settings +(dotenv support included); +@item Optional layered system for multiple environments @code{[default, +development, testing, production]}; +@item Built-in support for Hashicorp Vault and Redis as settings and secrets storage; +@item Built-in extensions for Django and Flask web frameworks; +@item CLI for common operations such as @code{init, list, write, validate, export}. +@end itemize") + (license license:expat))) + +(define-public pudb + (package + (name "pudb") + (version "2021.2") + (source + (origin + (method url-fetch) + (uri (pypi-uri "pudb" version)) + (sha256 + (base32 "0p16pvzfa3w02ybg3n0iy5rs23z4rz4a42lb8wh3mcq62y9ik2w7")))) + (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-before 'check 'fix-read-only-home + (lambda _ + (setenv "HOME" "/tmp"))) + (replace 'check + (lambda* (#:key inputs outputs tests? #:allow-other-keys) + (when tests? + (add-installed-pythonpath inputs outputs) + (invoke "pytest"))))))) + (native-inputs + (list python-numpy python-pytest python-pytest-mock)) + (propagated-inputs + (list python-jedi python-pygments python-urwid python-urwid-readline)) + (home-page "https://documen.tician.de/pudb/") + (synopsis "Console-based Python debugger") + (description + "@command{pudb} is a full-screen, console-based Python debugger providing +all the niceties of modern GUI-based debuggers in a more lightweight and +keyboard-friendly package.") + (license license:expat))) + +(define-public python-iwlib + (package + (name "python-iwlib") + (version "1.7.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "iwlib" version)) + (sha256 + (base32 "18bd35wn7zclalpqbry42pf7bjrdggxkkw58mc0k1vkhg9czc1d8")))) + (build-system python-build-system) + (inputs + (list wireless-tools)) + (propagated-inputs (list python-cffi)) + (home-page "https://github.com/nhoad/python-iwlib") + (synopsis "Python module to interface with iwlib") + (description + "This package provides a Python interface to iw wireless tools.") + (license license:gpl2))) |