aboutsummaryrefslogtreecommitdiff
path: root/gnu/packages/python-xyz.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/python-xyz.scm')
-rw-r--r--gnu/packages/python-xyz.scm1231
1 files changed, 1055 insertions, 176 deletions
diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index e95dec21c2..07a52a0e5c 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -61,7 +61,7 @@
;;; Copyright © 2019 Jack Hill <jackhill@jackhill.us>
;;; Copyright © 2019, 2020 Guillaume Le Vaillant <glv@posteo.net>
;;; Copyright © 2019, 2020 Alex Griffin <a@ajgrf.com>
-;;; Copyright © 2019 Pierre Langlois <pierre.langlois@gmx.com>
+;;; Copyright © 2019, 2020 Pierre Langlois <pierre.langlois@gmx.com>
;;; Copyright © 2019 Jacob MacDonald <jaccarmac@gmail.com>
;;; Copyright © 2019, 2020 Giacomo Leidi <goodoldpaul@autistici.org>
;;; Copyright © 2019 Wiktor Żelazny <wzelazny@vurv.cz>
@@ -81,6 +81,8 @@
;;; Copyright © 2020 Josh Holland <josh@inv.alid.pw>
;;; Copyright © 2020 Yuval Kogman <nothingmuch@woobling.org>
;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de>
+;;; Copyright © 2020 Vinicius Monego <monego@posteo.net>
+;;; Copyright © 2020 Guy Fleury Iteriteka <gfleury@disroot.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -106,6 +108,7 @@
#:use-module (gnu packages backup)
#:use-module (gnu packages bash)
#:use-module (gnu packages check)
+ #:use-module (gnu packages cmake)
#:use-module (gnu packages compression)
#:use-module (gnu packages crypto)
#:use-module (gnu packages databases)
@@ -417,13 +420,13 @@ data for video and audio files.")
(define-public python-psutil
(package
(name "python-psutil")
- (version "5.7.0")
+ (version "5.7.2")
(source
(origin
(method url-fetch)
(uri (pypi-uri "psutil" version))
(sha256
- (base32 "03jykdi3dgf1cdal9bv4fq9zjvzj9l9bs99gi5ar81sdl5nc2pk8"))))
+ (base32 "1svv985vmqsls35kmvp3vhh26nsgz229324s9k29awf6qgqhm6ch"))))
(build-system python-build-system)
(arguments
;; FIXME: some tests do not return and time out. Some tests fail because
@@ -559,10 +562,10 @@ and function call return values in a human-readable way.")
(build-system python-build-system)
(native-inputs
`(("python-mock" ,python-mock)))
- (home-page "https://github.com/binstar/clyent")
+ (home-page "https://github.com/Anaconda-Platform/clyent")
(synopsis "Command line client library")
- (description "Clyent is a Python command line utiliy library. It is used
-by @code{binstar}, @code{binstar-build} and @code{chalmers}.")
+ (description "Clyent is a Python command line utility library. It is used
+by @code{binstar}, @code{binstar-build}, and @code{chalmers}.")
(license license:bsd-3)))
(define-public python2-clyent
@@ -649,13 +652,13 @@ and verifies that it matches the intended target hostname.")
(define-public python-bitarray
(package
(name "python-bitarray")
- (version "1.2.1")
+ (version "1.4.0")
(source (origin
(method url-fetch)
(uri (pypi-uri "bitarray" version))
(sha256
(base32
- "1kxrlxfj9nrx512sfwifwl9z4v6ky3qschl0zmk3s3dvc3s7bmif"))))
+ "177fj6wbw5jln54wpp6plcqy2329wjkwqwvgz7022rrg3xfrq49g"))))
(build-system python-build-system)
(home-page "https://github.com/ilanschnell/bitarray")
(synopsis "Efficient arrays of booleans")
@@ -1121,20 +1124,18 @@ multiple Unicode code points, e.g. \"G\" + acute-accent)
(define-public python-humanfriendly
(package
(name "python-humanfriendly")
- (version "4.4.1")
+ (version "8.2")
(source
(origin
(method url-fetch)
(uri (pypi-uri "humanfriendly" version))
(sha256
(base32
- "0pisgizjql86785jchfjv217g0lsgk114g2lja5j4y3lsc3b9szi"))))
+ "04ixg8b7p6xc8x8lffhi7wfl77xhszakhd0s6j0cf6a84j8yqlmz"))))
(build-system python-build-system)
(arguments
`(;; XXX: Tests depend on coloredlogs, which in turn depends on humanfriendly.
#:tests? #f))
- (propagated-inputs
- `(("python-monotonic" ,python-monotonic)))
(home-page "https://humanfriendly.readthedocs.io")
(synopsis "Human-friendly input and output in Python")
(description
@@ -1143,10 +1144,16 @@ text interfaces more user-friendly. It includes tools to parse and format
numbers, file sizes, and timespans, timers for long-running operations, menus
to allow the user to choose from a list of options, and terminal interaction
helpers.")
+ (properties `((python2-variant . ,(delay python2-humanfriendly))))
(license license:expat)))
(define-public python2-humanfriendly
- (package-with-python2 python-humanfriendly))
+ (let ((base (package-with-python2
+ (strip-python2-variant python-humanfriendly))))
+ (package (inherit base)
+ (propagated-inputs
+ `(("python2-monotonic" ,python2-monotonic)
+ ,@(package-propagated-inputs base))))))
(define-public python-textparser
(package
@@ -1306,7 +1313,7 @@ bits instead of primitive data types like @code{char}, @code{int}, etc.")
;; not included with the PyPI archive.
(method git-fetch)
(uri (git-reference
- (url "https://github.com/eerimoq/cantools.git")
+ (url "https://github.com/eerimoq/cantools")
(commit version)))
(file-name (git-file-name name version))
(sha256
@@ -1697,14 +1704,14 @@ after Andy Lester’s Perl module WWW::Mechanize.")
(define-public python-simplejson
(package
(name "python-simplejson")
- (version "3.14.0")
+ (version "3.17.0")
(source
(origin
(method url-fetch)
(uri (pypi-uri "simplejson" version))
(sha256
(base32
- "1lkv3xlf7ryzi69zqfdbkvpxdfy1rg1rq2yzcnxgf4km5m6difqy"))))
+ "108yf3252fy4ndqab7h46raksxfhcn113bzy2yd8369vidrjnjrb"))))
(build-system python-build-system)
(home-page "http://simplejson.readthedocs.org/en/latest/")
(synopsis
@@ -2046,7 +2053,7 @@ and is not compatible with JSON.")
(source (origin
(method git-fetch)
(uri (git-reference
- (url "https://github.com/SCons/scons.git")
+ (url "https://github.com/SCons/scons")
(commit version)))
(file-name (git-file-name name version))
(sha256
@@ -2389,17 +2396,47 @@ files.")
(define-public python2-pyld
(package-with-python2 python-pyld))
+(define-public python-cli-helpers
+ (package
+ (name "python-cli-helpers")
+ (version "2.0.1")
+ (source
+ (origin
+ ;; There's no source tarball on PyPI.
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/dbcli/cli_helpers")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1bg2iw9l5dip0kbs00hajdk2v18wvhssbnq8hdf71278qf0wks5l"))))
+ (build-system python-build-system)
+ (native-inputs
+ `(("python-pytest" ,python-pytest)))
+ (propagated-inputs
+ `(("python-wcwidth" ,python-wcwidth)
+ ("python-configobj" ,python-configobj)
+ ("python-tabulate" ,python-tabulate)
+ ("python-terminaltables" ,python-terminaltables)))
+ (home-page "https://github.com/dbcli/cli_helpers")
+ (synopsis "Helpers for building command-line apps")
+ (description
+ "CLI Helpers is a Python package that makes it easy to perform common
+tasks when building command-line apps. It's a helper library for command-line
+interfaces.")
+ (license license:bsd-3)))
+
(define-public python-click
(package
(name "python-click")
- (version "7.0")
+ (version "7.1.2")
(source
(origin
(method url-fetch)
(uri (pypi-uri "click" version))
(sha256
(base32
- "1mzjixd4vjbjvzb6vylki9w1556a9qmdh35kzmq6cign46av952v"))))
+ "06kbzd6sjfkqan3miwj9wqyddfxc2b6hi7p5s4dvqjb3gif2bdfj"))))
(build-system python-build-system)
(arguments
`(#:phases
@@ -2408,12 +2445,13 @@ files.")
(lambda* (#:key inputs #:allow-other-keys)
(let ((glibc (assoc-ref inputs ,(if (%current-target-system)
"cross-libc" "libc"))))
- (substitute* "click/_unicodefun.py"
+ (substitute* "src/click/_unicodefun.py"
(("'locale'")
(string-append "'" glibc "/bin/locale'"))))
#t))
(replace 'check
(lambda _
+ (setenv "PYTHONPATH" (string-append "./src:" (getenv "PYTHONPATH")))
(invoke "python" "-m" "pytest"))))))
(native-inputs
`(("python-pytest" ,python-pytest)))
@@ -2429,6 +2467,18 @@ with sensible defaults out of the box.")
(define-public python2-click
(package-with-python2 python-click))
+(define-public python-click-5
+ (package (inherit python-click)
+ (name "python-click")
+ (version "5.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "click" version))
+ (sha256
+ (base32 "0njsm0wn31l21bi118g5825ma5sa3rwn7v2x4wjd7yiiahkri337"))))
+ (arguments `())))
+
(define-public python-wheel
(package
(name "python-wheel")
@@ -3383,7 +3433,7 @@ software version simply.")
(origin
(method git-fetch)
(uri (git-reference
- (url "https://github.com/tantale/deprecated.git")
+ (url "https://github.com/tantale/deprecated")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
@@ -3419,7 +3469,7 @@ to deprecate classes, functions or methods.")
(origin
(method git-fetch)
(uri (git-reference
- (url "https://github.com/PyGithub/PyGithub.git")
+ (url "https://github.com/PyGithub/PyGithub")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
@@ -3486,7 +3536,7 @@ ecosystem, but can naturally be used also by other projects.")
(origin
(method git-fetch)
(uri (git-reference
- (url "https://github.com/robotframework/robotframework.git")
+ (url "https://github.com/robotframework/robotframework")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
@@ -3535,7 +3585,7 @@ process automation (RPA).")
(origin
(method git-fetch)
(uri (git-reference
- (url "https://github.com/boakley/robotframework-lint.git")
+ (url "https://github.com/boakley/robotframework-lint")
(commit commit)))
(file-name (git-file-name name version))
(sha256
@@ -3566,7 +3616,7 @@ utility, a static analysis tool (linter) for Robot Framework source files.")
(origin
(method git-fetch)
(uri (git-reference
- (url "https://github.com/robotframework/SSHLibrary.git")
+ (url "https://github.com/robotframework/SSHLibrary")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
@@ -3795,20 +3845,18 @@ Server (PLS).")
(define-public python-language-server
(package
(name "python-language-server")
- (version "0.32.0")
+ (version "0.34.1")
(source
(origin
(method url-fetch)
(uri (pypi-uri "python-language-server" version))
(sha256
(base32
- "0j5swacmjps9sas1gfwg0xi84rmjhfhz20cwg3k4058d20rs20ip"))))
+ "0gfjjlj7yg2nf8wkbrshwaljkwlqja4n7s1x949f495anmkg8vxr"))))
(build-system python-build-system)
(propagated-inputs
`(("python-pluggy" ,python-pluggy)
("python-jsonrpc-server" ,python-jsonrpc-server)
- ;; Note: Remove the special versions of Jedi and Parso when updating
- ;; this package.
("python-jedi" ,python-jedi)
("python-yapf" ,python-yapf)
("python-pyflakes" ,python-pyflakes)
@@ -3971,7 +4019,7 @@ and is very extensible.")
;; git-reference because tests are not included in pypi source tarball
;; https://issues.guix.gnu.org/issue/36755#2
(uri (git-reference
- (url "https://github.com/projectmallard/mallard-ducktype.git")
+ (url "https://github.com/projectmallard/mallard-ducktype")
(commit version)))
(file-name (git-file-name name version))
(sha256
@@ -4377,7 +4425,7 @@ color scales, and color space conversion easy. It has support for:
,(origin ; The build script expects scipy-sphinx-theme as a git submodule
(method git-fetch)
(uri (git-reference
- (url "https://github.com/scipy/scipy-sphinx-theme.git")
+ (url "https://github.com/scipy/scipy-sphinx-theme")
(commit "c466764e2231ba132c09826b5b138fffa1cfcec3")))
(sha256
(base32
@@ -4467,6 +4515,26 @@ library, libgit2 implements Git plumbing.")
;; GPL2.0 only, with linking exception.
(license license:gpl2)))
+(define-public python-patiencediff
+ (package
+ (name "python-patiencediff")
+ (version "0.2.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "patiencediff" version))
+ (sha256
+ (base32
+ "0yjk50lsd4gnllxls925xbcdxwvmda37w2a1shk0p1nvl3fcha6q"))))
+ (build-system python-build-system)
+ (home-page "https://www.breezy-vcs.org/")
+ (synopsis "Python implementation of the patiencediff algorithm")
+ (description
+ "This package contains a Python implementation of the @code{patiencediff}
+algorithm. Patiencediff provides a good balance of performance, nice output for
+humans, and implementation simplicity.")
+ (license license:gpl2)))
+
(define-public python-pyparsing
(package
(name "python-pyparsing")
@@ -4604,7 +4672,7 @@ To address this and enable easy cycling over arbitrary @code{kwargs}, the
(origin
(method git-fetch)
(uri (git-reference
- (url "https://github.com/njsmith/colorspacious.git")
+ (url "https://github.com/njsmith/colorspacious")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
@@ -4998,7 +5066,7 @@ as the original project seems to have been abandoned circa 2007.")
(origin
(method git-fetch)
(uri (git-reference
- (url "https://github.com/pagekite/PySocksipyChain.git")
+ (url "https://github.com/pagekite/PySocksipyChain")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
@@ -5019,15 +5087,23 @@ a simple netcat replacement with chaining support.")
(define-public python-pycodestyle
(package
(name "python-pycodestyle")
- (version "2.5.0")
+ (version "2.6.0")
(source
(origin
(method url-fetch)
(uri (pypi-uri "pycodestyle" version))
(sha256
(base32
- "0v4prb05n21bm8650v0a01k1nyqjdmkrsm3zycfxh2j5k9n962p4"))))
+ "0bhr6ia0hmgx3nhgibc9pmkzhlh1zcqk707i5fbxgs702ll7v2n5"))))
(build-system python-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (replace 'check
+ (lambda _
+ (invoke "pytest" "-vv"))))))
+ (native-inputs
+ `(("python-pytest" ,python-pytest)))
(home-page "https://pycodestyle.readthedocs.io/")
(synopsis "Python style guide checker")
(description "@code{pycodestyle} (formerly pep8) is a tool to check
@@ -5118,17 +5194,18 @@ multivalue dictionary that retains the order of insertions and deletions.")
(define-public python-autopep8
(package
(name "python-autopep8")
- (version "1.3.5")
+ (version "1.5.3")
(source
(origin
(method url-fetch)
(uri (pypi-uri "autopep8" version))
(sha256
(base32
- "192bvhzi4d0claqxgzymvv7k3qnj627742bc8sgxpzjj42pd9112"))))
+ "1w6vh627vrmgfbvrdcxrc3k4gxcldrb2lpgxv9irkdds851qrzb0"))))
(build-system python-build-system)
(propagated-inputs
- `(("python-pycodestyle" ,python-pycodestyle)))
+ `(("python-pycodestyle" ,python-pycodestyle)
+ ("python-toml" ,python-toml)))
(home-page "https://github.com/hhatto/autopep8")
(synopsis "Format Python code according to the PEP 8 style guide")
(description
@@ -5212,7 +5289,7 @@ Python's distutils.")
;; source from a (semi-arbitrary, i.e. latest as of now) git commit.
(method git-fetch)
(uri (git-reference
- (url "https://github.com/dieterv/elib.intl.git")
+ (url "https://github.com/dieterv/elib.intl")
(commit "d09997cfef")))
(file-name (string-append name "-" version "-checkout"))
(sha256
@@ -5312,6 +5389,132 @@ a general image processing tool.")
(define-public python2-pillow
(package-with-python2 python-pillow))
+(define-public python-pillow-2.9
+ (package
+ (inherit python-pillow)
+ (version "2.9.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "Pillow" version))
+ (sha256
+ (base32
+ "0ada7lf3lmbdsqm3b7ja920p1pllyfhmqndr85ikpj77fmz9s5qg"))))
+ (arguments
+ (substitute-keyword-arguments (package-arguments python-pillow)
+ ((#:tests? _ #f) #f)))
+ (properties '((hidden? #t)))))
+
+(define-public python-roifile
+ (package
+ (name "python-roifile")
+ (version "2020.5.28")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "roifile" version))
+ (sha256
+ (base32
+ "1vwbwfsw745gyqymff6dllc5zqjsgqmxaw245sw4an6yw9rcbzc0"))))
+ (build-system python-build-system)
+ (arguments `(#:tests? #f)) ; there are none
+ (propagated-inputs
+ `(("python-numpy" ,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
+ImageJ ROIs, an undocumented and ImageJ application specific format to store
+regions of interest, geometric shapes, paths, text, etc for image overlays.")
+ (license license:bsd-3)))
+
+(define-public python-tifffile
+ (package
+ (name "python-tifffile")
+ (version "2020.6.3")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "tifffile" version))
+ (sha256
+ (base32
+ "0xv3ynkbrsibqvx7250075idb7wm3canjd6lx2nzf3cbp6l07577"))))
+ (build-system python-build-system)
+ ;; Tests require lfdfiles, which depends on tifffile
+ (arguments `(#:tests? #f))
+ (propagated-inputs
+ `(("python-numpy" ,python-numpy)
+ ;;("python-lfdfiles" ,python-lfdfiles)
+ ("python-roifile" ,python-roifile)))
+ (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
+bio-scientific formats such as plain TIFF, BigTIFF, OME-TIFF, STK, LSM, SGI,
+NIH, ImageJ, MicroManager, MD GEL, and FluoView files. It also lets you write
+numpy arrays to TIFF, BigTIFF, and ImageJ hyperstack compatible files.")
+ (license license:bsd-3)))
+
+(define-public python-lfdfiles
+ (package
+ (name "python-lfdfiles")
+ (version "2020.1.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "lfdfiles" version))
+ (sha256
+ (base32
+ "1n9bkfn4vxl0lbhzd0m35lq86ayx5fwcj3ghpfl2vbjbsnfp3h47"))))
+ (build-system python-build-system)
+ (propagated-inputs
+ `(("python-click" ,python-click)
+ ("python-numpy" ,python-numpy)
+ ("python-tifffile" ,python-tifffile)))
+ (home-page "https://www.lfd.uci.edu/~gohlke/")
+ (synopsis "Work with LFD data files")
+ (description
+ "Lfdfiles is a Python library and console script for reading, writing,
+converting, and viewing many of the proprietary file formats used to store
+experimental data and metadata at the Laboratory for Fluorescence Dynamics.")
+ (license license:bsd-3)))
+
+(define-public python-imageio
+ (package
+ (name "python-imageio")
+ (version "2.8.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "imageio" version))
+ (sha256
+ (base32
+ "1ksjl523fm0fikrd85llxfba35rc1qsgwadgr6mbn9kis79xcpzv"))))
+ (build-system python-build-system)
+ (arguments
+ `(#:tests? #f ; many tests require online data
+ #:phases
+ (modify-phases %standard-phases
+ (replace 'check
+ (lambda* (#:key outputs inputs tests? #:allow-other-keys)
+ (if tests?
+ (begin
+ ;; Make installed package available for running the tests.
+ (add-installed-pythonpath inputs outputs)
+ (invoke "pytest" "-vv"))
+ #t))))))
+ (propagated-inputs
+ `(("python-numpy" ,python-numpy)
+ ("python-pillow" ,python-pillow)
+ ("python-psutil" ,python-psutil)))
+ (native-inputs
+ `(("python-pytest" ,python-pytest)))
+ (home-page "https://imageio.github.io/")
+ (synopsis "Library for reading and writing a wide range of image data")
+ (description
+ "Imageio is a Python library that provides an easy interface to read and
+write a wide range of image data, including animated images, video, volumetric
+data, and scientific formats.")
+ (license license:bsd-2)))
+
(define-public python-pycparser
(package
(name "python-pycparser")
@@ -5361,14 +5564,14 @@ a front-end for C compilers or analysis tools.")
(define-public python-pywavelets
(package
(name "python-pywavelets")
- (version "1.0.1")
+ (version "1.1.1")
(home-page "https://github.com/PyWavelets/pywt")
(source (origin
(method url-fetch)
(uri (pypi-uri "PyWavelets" version))
(sha256
(base32
- "1p3qv2v66ghnqrb1f98wyyhp9dz71jwcd6kfpsax65sfdpiyqp1w"))))
+ "1j88c0r4j1d4mb3f8qhz6nalyx21qrzmsm70rjngnkybd87v8r0s"))))
(build-system python-build-system)
(arguments
'(#:modules ((ice-9 ftw)
@@ -5376,17 +5579,18 @@ a front-end for C compilers or analysis tools.")
(srfi srfi-26)
(guix build utils)
(guix build python-build-system))
- #:phases (modify-phases %standard-phases
- (replace 'check
- (lambda _
- (let ((cwd (getcwd))
- (libdir (find (cut string-prefix? "lib." <>)
- (scandir "build"))))
- (with-directory-excursion (string-append cwd "/build/" libdir)
- (invoke "nosetests" "-v" "."))))))))
+ #:phases
+ (modify-phases %standard-phases
+ (replace 'check
+ (lambda _
+ (let ((cwd (getcwd))
+ (libdir (find (cut string-prefix? "lib." <>)
+ (scandir "build"))))
+ (with-directory-excursion (string-append cwd "/build/" libdir)
+ (invoke "pytest" "-vv"))))))))
(native-inputs
`(("python-matplotlib" ,python-matplotlib) ;for tests
- ("python-nose" ,python-nose)))
+ ("python-pytest" ,python-pytest)))
(propagated-inputs
`(("python-numpy" ,python-numpy)))
(synopsis "Wavelet transforms in Python")
@@ -5398,9 +5602,6 @@ similar to Fourier transforms, the difference being that Fourier transforms are
localized only in frequency instead of in time and frequency.")
(license license:expat)))
-(define-public python2-pywavelets
- (package-with-python2 python-pywavelets))
-
(define-public python-pywinrm
(package
(name "python-pywinrm")
@@ -5644,16 +5845,16 @@ memoizing PEG/Packrat parser in Python.")
(define-public python-gridmap
(package
(name "python-gridmap")
- (version "0.13.0")
+ (version "0.14.0")
(source
(origin
(method git-fetch)
(uri (git-reference
- (url "https://github.com/pygridtools/gridmap.git")
+ (url "https://github.com/pygridtools/gridmap")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
- (base32 "1478lbwsr1w24cii2x01m2910fvh8r43ghnb78nc972a96hqiknm"))))
+ (base32 "0v0sgpg6pz8h61f9aqjf5xk0ipr512bbz8dxzjjylksj135qr19l"))))
(build-system python-build-system)
(arguments
'(#:tests? #f)) ; FIXME: Requires python-cherrypy.
@@ -5680,7 +5881,7 @@ cluster without needing to write any wrapper code yourself.")
(origin
(method git-fetch)
(uri (git-reference
- (url "https://github.com/nickstenning/honcho.git")
+ (url "https://github.com/nickstenning/honcho")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
@@ -5835,6 +6036,29 @@ all the newest features of the standard @code{pathlib} can be used also on
older Python versions.")
(license license:expat)))
+(define-public python-importlib-resources
+ (package
+ (name "python-importlib-resources")
+ (version "3.0.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "importlib_resources" version))
+ (sha256
+ (base32
+ "1hq626mx5jl9zfl0wdrjkxsnh8qd98fqv322n68b9251xjk4bxqr"))))
+ (build-system python-build-system)
+ (native-inputs
+ `(("python-setuptools-scm" ,python-setuptools-scm)
+ ("python-toml" ,python-toml)))
+ (home-page "http://importlib-resources.readthedocs.io/")
+ (synopsis "Read resources from Python packages")
+ (description
+ "@code{importlib_resources} is a backport of Python 3's standard library
+@code{importlib.resources} module for Python 2.7, and Python 3.")
+ (properties `((python2-variant . ,(delay python2-importlib-resources))))
+ (license license:asl2.0)))
+
(define-public python2-importlib-resources
(package
(name "python2-importlib-resources")
@@ -6831,14 +7055,14 @@ the GObject Introspection bindings to libnotify for non-GTK applications.")
(define-public python-beautifulsoup4
(package
(name "python-beautifulsoup4")
- (version "4.7.1")
+ (version "4.9.1")
(source
(origin
(method url-fetch)
(uri (pypi-uri "beautifulsoup4" version))
(sha256
(base32
- "0j2kycz2dxgx68xzjm7rxg5xn6v61gq5ifvxyg99slmqkybnal4l"))))
+ "1mvzlw3pzbhsvl3z8784s5h7iiflm2hggiy1fxyrrxwnbc8lvk3k"))))
(build-system python-build-system)
(arguments
`(#:phases
@@ -6874,14 +7098,14 @@ converts incoming documents to Unicode and outgoing documents to UTF-8.")
(define-public python-soupsieve
(package
(name "python-soupsieve")
- (version "1.9.5")
+ (version "2.0.1")
(source
(origin
(method url-fetch)
(uri (pypi-uri "soupsieve" version))
(sha256
(base32
- "1nhd0q0ifwva9wn645s6pn74p1rd97asn3qfg75nphx1wkgcbhg2"))))
+ "0ch2rhvsbwfpvzm4kzy81rclbzr533yv83hzg1gx55byfa0w37d5"))))
(build-system python-build-system)
(arguments `(#:tests? #f))
;;XXX: 2 tests fail currently despite claming they were to be
@@ -6898,10 +7122,19 @@ some are not yet implemented).")
(properties `((python2-variant . ,(delay python2-soupsieve))))
(license license:expat)))
+;; This is the last version that supports python-2
(define-public python2-soupsieve
(let ((base (package-with-python2 (strip-python2-variant python-soupsieve))))
(package
(inherit base)
+ (version "1.9.6")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "soupsieve" version))
+ (sha256
+ (base32
+ "1apgqxngi1216h1cyvrvj9gy3wf45mh1lz4n76j26jf3k36bm1br"))))
(propagated-inputs
`(("python2-backports-functools-lru-cache"
,python2-backports-functools-lru-cache)
@@ -7250,30 +7483,47 @@ falling into the Python interpreter.")
(define-public python2-q
(package-with-python2 python-q))
-(define-public python2-xlib
+(define-public python-xlib
(package
- (name "python2-xlib")
- (version "0.14")
- (source (origin
- (method url-fetch)
- (uri (string-append "mirror://sourceforge/python-xlib/python-xlib"
- "/" version "/"
- "python-xlib-" version ".tar.gz"))
- (sha256
- (base32
- "1sv0447j0rx8cgs3jhjl695p5pv13ihglcjlrrz1kq05lsvb0wa7"))))
+ (name "python-xlib")
+ (version "0.27")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/python-xlib/python-xlib")
+ (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "09kimic8rhprx3q8nzalc4aggg42ahqm4v5qcj8dm68yvxfdk986"))))
(build-system python-build-system)
(arguments
- `(#:python ,python-2 ;Python 2 only
- #:tests? #f)) ;no tests
- (home-page "http://python-xlib.sourceforge.net/")
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-before 'check 'start-xserver
+ (lambda* (#:key inputs #:allow-other-keys)
+ (let ((xorg-server (assoc-ref inputs "xorg-server")))
+ ;; There must be a running X server and make check doesn't
+ ;; start one. Therefore we must do it.
+ (system (format #f "~a/bin/Xvfb :1 &" xorg-server))
+ (setenv "DISPLAY" ":1")
+ #t))))))
+ (native-inputs
+ `(("python-mock" ,python-mock)
+ ("python-setuptools-scm" ,python-setuptools-scm)
+ ("python-six" ,python-six)
+ ("xorg-server" ,xorg-server)))
+ (home-page "https://github.com/python-xlib/python-xlib")
(synopsis "Python X11 client library")
(description
- "The Python X Library is intended to be a fully functional X client
-library for Python programs. It is useful to implement low-level X clients.
-It is written entirely in Python.")
+ "The Python X Library is intended to be a fully functional
+X client library for Python programs. It is useful to implement
+low-level X clients. It is written entirely in Python.")
(license license:gpl2+)))
+(define-public python2-xlib
+ (package-with-python2 python-xlib))
+
(define-public python-singledispatch
(package
(name "python-singledispatch")
@@ -7481,14 +7731,14 @@ PEP 8.")
(define-public python-pyflakes
(package
(name "python-pyflakes")
- (version "2.1.1")
+ (version "2.2.0")
(source
(origin
(method url-fetch)
(uri (pypi-uri "pyflakes" version))
(sha256
(base32
- "18pq95a1xj2dgdd0m85gyfsn40jajj4xc3lp8wfv7igqhrc86xnr"))))
+ "1j3zqbiwkyicvww499bblq33x0bjpzdrxajhaysr7sk7x5gdgcim"))))
(build-system python-build-system)
(home-page
"https://github.com/pyflakes/pyflakes")
@@ -7582,13 +7832,13 @@ complexity of Python source code.")
(define-public python-flake8
(package
(name "python-flake8")
- (version "3.7.9")
+ (version "3.8.3")
(source (origin
(method url-fetch)
(uri (pypi-uri "flake8" version))
(sha256
(base32
- "1yscj6avirm6m12bjh4fn2lfgxaamqsjh9pirdqfi0fcgq8ils25"))))
+ "02527892hh0qjivxaiphzalj7q32qkna1cqaikjs7c03mk5ryjzh"))))
(build-system python-build-system)
(arguments
`(#:phases
@@ -8574,7 +8824,7 @@ Python Package Index (PyPI).")
(origin
(method git-fetch)
(uri (git-reference
- (url "https://github.com/trendmicro/tlsh.git")
+ (url "https://github.com/trendmicro/tlsh")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
@@ -8635,6 +8885,26 @@ a hash value.")
(define-public python2-termcolor
(package-with-python2 python-termcolor))
+(define-public python-terminaltables
+ (package
+ (name "python-terminaltables")
+ (version "3.1.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "terminaltables" version))
+ (sha256
+ (base32
+ "109vhldk6nv1z3hzp4dyqf6rjvlhl0y2k5k7qcm9fcrq5swhxszk"))))
+ (build-system python-build-system)
+ (home-page "https://github.com/Robpol86/terminaltables")
+ (synopsis
+ "Generate simple tables in terminals from a nested list of strings")
+ (description
+ "This package makes it easy to draw tables in terminal/console
+applications from a list of lists of strings. It supports multi-line rows.")
+ (license license:expat)))
+
(define-public python-libarchive-c
(package
(name "python-libarchive-c")
@@ -9875,6 +10145,38 @@ concurrent.futures package from Python 3.2")
("python2-pytest" ,python2-pytest)
,@(package-native-inputs promise))))))
+(define-public python-progressbar2
+ (package
+ (name "python-progressbar2")
+ (version "3.51.3")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "progressbar2" version))
+ (sha256
+ (base32
+ "0b2v3mim90rmfvixkaniz2qrs650sk230rzgd5zhcjfldmlqgxpc"))))
+ (build-system python-build-system)
+ (propagated-inputs
+ `(("python-six" ,python-six)
+ ("python-utils" ,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)))
+ (home-page "https://github.com/WoLpH/python-progressbar")
+ (synopsis "Text progress bar library for Python")
+ (description
+ "This package provides a Python progressbar library to provide
+visual (yet text based) progress to long running operations.")
+ (license license:bsd-3)))
+
(define-public python-progressbar33
(package
(name "python-progressbar33")
@@ -9887,7 +10189,7 @@ concurrent.futures package from Python 3.2")
(base32
"1zvf6zs5hzrc03p9nfs4p16vhilqikycvv1yk0pxn8s07fdhvzji"))))
(build-system python-build-system)
- (home-page "http://github.com/germangh/python-progressbar")
+ (home-page "https://github.com/germangh/python-progressbar")
(synopsis "Text progress bar library for Python")
(description
"This package provides a text progress bar library for Python. This
@@ -10046,6 +10348,29 @@ document.")
(define-public python2-jmespath
(package-with-python2 python-jmespath))
+(define-public python-symengine
+ (package
+ (name "python-symengine")
+ (version "0.6.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "symengine" version))
+ (sha256
+ (base32 "1kn1w4dp9mrsq6kzmhf4pjmx3wicxc3dw1mwa924q8g48g77lr4c"))))
+ (build-system python-build-system)
+ (native-inputs
+ `(("cmake" ,cmake)
+ ("python-cython" ,python-cython)))
+ (inputs
+ `(("symengine" ,symengine)))
+ (home-page "https://github.com/symengine/symengine.py")
+ (synopsis "Python library providing wrappers to SymEngine")
+ (description
+ "This library provides a Python wrapper to SymEngine, a fast C++ symbolic
+manipulation library.")
+ (license license:expat)))
+
(define-public python-botocore
(package
(name "python-botocore")
@@ -10081,6 +10406,24 @@ interface to the Amazon Web Services (AWS) API.")
(define-public python2-botocore
(package-with-python2 python-botocore))
+(define-public python-pyfiglet
+ (package
+ (name "python-pyfiglet")
+ (version "0.8.post1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "pyfiglet" version))
+ (sha256
+ (base32
+ "0f9n2076ga2ccsg174k2d7n0z4d44ml96yzc72s6g4nhalbk5hn6"))))
+ (build-system python-build-system)
+ (home-page "https://github.com/pwaller/pyfiglet")
+ (synopsis "Draw ASCII art big letters in Python")
+ (description "This module lets you draw large letter from ordinary characters
+in pure Python.")
+ (license license:expat)))
+
(define-public python-xdo
(package
(name "python-xdo")
@@ -11149,6 +11492,29 @@ functionality in a modular way, allowing you to extend your panel with your
own code, responding to click events and updating clock every second.")
(license license:bsd-3)))
+(define-public python2-selectors2
+ (package
+ (name "python2-selectors2")
+ (version "2.0.1")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "selectors2" version))
+ (sha256
+ (base32
+ "110qr00b9axz1f1jm12b495jkvrz80smknxvssqlhwk0dx67rdw1"))))
+ (build-system python-build-system)
+ (arguments
+ `(#:python ,python-2))
+ (native-inputs
+ `(("python2-mock" ,python2-mock)
+ ("python2-psutil" ,python2-psutil)))
+ (home-page "https://www.github.com/SethMichaelLarson/selectors2")
+ (synopsis "Backport of the selectors module from Python 3.5+")
+ (description
+ "This package provides a drop-in replacement for the @code{selectors}
+module in Python 3.5 and later.")
+ (license license:expat)))
+
(define-public python-tblib
(package
(name "python-tblib")
@@ -11195,13 +11561,13 @@ multiple processes (imagine multiprocessing, billiard, futures, celery etc).
(define-public python-greenlet
(package
(name "python-greenlet")
- (version "0.4.15")
+ (version "0.4.16")
(source (origin
(method url-fetch)
(uri (pypi-uri "greenlet" version))
(sha256
(base32
- "1g4g1wwc472ds89zmqlpyan3fbnzpa8qm48z3z1y6mlk44z485ll"))))
+ "0v2571d0av1hz3yx63gvmnrinyn57nnvibg4zkl9frv74b3yl1kf"))))
(build-system python-build-system)
(home-page "https://greenlet.readthedocs.io/")
(synopsis "Lightweight in-process concurrent programming")
@@ -11245,13 +11611,13 @@ graphviz.")
(define-public python-gevent
(package
(name "python-gevent")
- (version "20.5.0")
+ (version "20.6.2")
(source (origin
(method url-fetch)
(uri (pypi-uri "gevent" version))
(sha256
(base32
- "1yppsrs0ccld9j9zfbsd0bxb987b2zkh2ar7whjxcrqzpkvg3iqx"))
+ "1ldmppgghfphdaazjw6wq2i17xcmsjb2jsizfa4cjlg812zjlg52"))
(modules '((guix build utils)))
(snippet
'(begin
@@ -11370,15 +11736,15 @@ graphviz.")
"known_failures.py" "--ignore" "skipped_tests.txt"))))))
(propagated-inputs
`(("python-greenlet" ,python-greenlet)
- ("python-objgraph" ,python-objgraph)))
+ ("python-objgraph" ,python-objgraph)
+ ("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)
- ("python-zope.event" ,python-zope-event)
- ("python-zope.interface" ,python-zope-interface)))
+ ("python-psutil" ,python-psutil)))
(inputs
`(("c-ares" ,c-ares)
("libev" ,libev)))
@@ -11396,18 +11762,19 @@ to provide a high-level synchronous API on top of the libev event loop.")
(package
(inherit base)
(native-inputs `(,@(package-native-inputs base)
- ("python-mock" ,python2-mock))))))
+ ("python-mock" ,python2-mock)
+ ("python2-selectors2" ,python2-selectors2))))))
(define-public python-fastimport
(package
(name "python-fastimport")
- (version "0.9.6")
+ (version "0.9.8")
(source
(origin
(method url-fetch)
(uri (pypi-uri "fastimport" version))
(sha256
- (base32 "1aqjsin4rmqm7ln4j0p73fzxifws6c6ikgyhav7r137m2ixsxl43"))))
+ (base32 "1fb3b7y3sw55f6wykxx478ybkirz0l52lgdqmbhmc0h0jzmyiwmj"))))
(build-system python-build-system)
(home-page "https://github.com/jelmer/python-fastimport")
(synopsis "VCS fastimport parser and generator in Python")
@@ -11497,13 +11864,13 @@ It uses LR parsing and does extensive error checking.")
(define-public python-tabulate
(package
(name "python-tabulate")
- (version "0.7.7")
+ (version "0.8.7")
(source (origin
(method url-fetch)
(uri (pypi-uri "tabulate" version))
(sha256
(base32
- "1inqhspd4frxnp08c32yndr0lc4px1xfkqah184i5w09gkhvi843"))))
+ "01shi7bmj09f0bcm5s0c9skys063lzp76p0n4a2xmg041ni269yv"))))
(build-system python-build-system)
(arguments
;; FIXME: The pypi release tarball is missing a 'test/common.py'
@@ -11977,6 +12344,37 @@ It supports TSIG authenticated messages and EDNS0.")
(define-public python2-dnspython
(package-with-python2 python-dnspython))
+(define-public python-py3dns
+ (package
+ (name "python-py3dns")
+ (version "3.2.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "py3dns" version))
+ (sha256
+ (base32
+ "1r25f0ys5p37bhld7m7n4gb0lrysaym3w318w2f8bncq7r3d81qz"))))
+ (build-system python-build-system)
+ ;; This package wants to read /etc/resolv.conf. We can't patch it without
+ ;; removing functionality so we copy from Nix and "just don't build it".
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'patch-source
+ (lambda _
+ (substitute* "setup.py"
+ (("import DNS") "")
+ (("DNS.__version__") (string-append "\"" ,version "\"")))
+ #t)))
+ #:tests? #f)) ; Also skip the tests.
+ (home-page "https://launchpad.net/py3dns")
+ (synopsis "Python 3 DNS library")
+ (description "This Python 3 module provides a DNS API for looking up DNS
+entries from within Python 3 modules and applications. This module is a
+simple, lightweight implementation.")
+ (license license:psfl)))
+
(define-public python-email-validator
(package
(name "python-email-validator")
@@ -12549,7 +12947,7 @@ discovery, monitoring and configuration.")
(origin
(method git-fetch)
(uri (git-reference
- (url "https://github.com/schematics/schematics.git")
+ (url "https://github.com/schematics/schematics")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
@@ -12903,21 +13301,21 @@ English stemmer.")
(package-with-python2 python-snowballstemmer))
(define-public python-setproctitle
-(package
- (name "python-setproctitle")
- (version "1.1.10")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "setproctitle" version))
- (sha256
+ (package
+ (name "python-setproctitle")
+ (version "1.1.10")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "setproctitle" version))
+ (sha256
(base32
- "163kplw9dcrw0lffq1bvli5yws3rngpnvrxrzdw89pbphjjvg0v2"))))
- (build-system python-build-system)
- (arguments
- '(#:phases
- (modify-phases %standard-phases
- (add-before 'check 'patch-Makefile
+ "163kplw9dcrw0lffq1bvli5yws3rngpnvrxrzdw89pbphjjvg0v2"))))
+ (build-system python-build-system)
+ (arguments
+ '(#:phases
+ (modify-phases %standard-phases
+ (add-before 'check 'patch-Makefile
;; Stricly this is only required for the python2 variant.
;; But adding a phase in an inherited package seems to be
;; cumbersum. So we patch even for python3.
@@ -12928,30 +13326,30 @@ English stemmer.")
(("\\$\\(PYTHON\\) [^ ]which nosetests[^ ] ")
(string-append nose "/bin/nosetests "))))
#t)))
- (replace 'check
+ (replace 'check
(lambda _
(setenv "PYTHON" (or (which "python3") (which "python")))
- (setenv "PYCONFIG" (or (which "python3-config")
- (which "python-config")))
+ (setenv "PYCONFIG" (string-append (or (which "python3-config")
+ (which "python-config"))
+ " --embed"))
(setenv "CC" "gcc")
;; No need to extend PYTHONPATH to find the built package, since
;; the Makefile will build anyway
(invoke "make" "check"))))))
- (native-inputs
- `(("procps" ,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
+ (native-inputs
+ `(("procps" ,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).
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))))))
+ (license license:bsd-3)
+ (properties `((python2-variant . ,(delay python2-setproctitle))))))
(define-public python2-setproctitle
(let ((base (package-with-python2
@@ -13147,6 +13545,93 @@ network.")
(define-public python2-argcomplete
(package-with-python2 python-argcomplete))
+(define-public python-csscompressor
+ (package
+ (name "python-csscompressor")
+ (version "0.9.5")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "csscompressor" version))
+ (sha256
+ (base32
+ "018ssffvlpnc1salmnpyl52c11glzzwj4k9f757hl4pkpjnjp8mg"))))
+ (build-system python-build-system)
+ (arguments
+ '(#:phases
+ (modify-phases %standard-phases
+ (replace 'check
+ (lambda _
+ (invoke "py.test"))))))
+ (native-inputs
+ `(("python-pytest" ,python-pytest)))
+ (home-page "https://github.com/sprymix/csscompressor")
+ (synopsis "Python port of YUI CSS Compressor")
+ (description
+ "This package provides a python port of YUI CSS Compressor.")
+ (license license:bsd-3)))
+
+(define-public python-rcssmin
+ (package
+ (name "python-rcssmin")
+ (version "1.0.6")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "rcssmin" version))
+ (sha256
+ (base32
+ "0w42l4dhxghcz7pj3q7hkxp015mvb8z2cq9sfxbl31npsfavd1ya"))))
+ (build-system python-build-system)
+ (arguments
+ '(#:phases
+ (modify-phases %standard-phases
+ (replace 'check
+ (lambda _
+ (invoke "python" "run_tests.py" "tests"))))))
+ (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.")
+ (license license:asl2.0)))
+
+(define-public python-rjsmin
+ (package
+ (name "python-rjsmin")
+ (version "1.1.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "rjsmin" version))
+ (sha256
+ (base32
+ "0cmc72rlkvzz8fl89bc83czkx0pcvhzj7yn7m29r8pgnf5fcfpdi"))
+ (modules '((guix build utils)))
+ (snippet
+ '(begin
+ (for-each delete-file (find-files "bench" "\\.js$"))
+ #t))))
+ (build-system python-build-system)
+ (arguments
+ '(#:tests? #f ; Not all test files included.
+ #:phases
+ (modify-phases %standard-phases
+ (replace 'check
+ (lambda* (#:key inputs outputs tests? #:allow-other-keys)
+ (add-installed-pythonpath inputs outputs)
+ (if tests?
+ (invoke "py.test" "-vv" "tests")
+ #t))))))
+ (native-inputs
+ `(("python-pytest" ,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).")
+ (license license:asl2.0)))
+
(define-public python-xopen
(package
(name "python-xopen")
@@ -13970,6 +14455,27 @@ builds partial trees by inspecting living objects.")
,@(alist-delete "python-typed-ast"
(package-propagated-inputs base)))))))
+(define-public python-isbnlib
+ (package
+ (name "python-isbnlib")
+ (version "3.10.3")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "isbnlib" version))
+ (sha256
+ (base32
+ "07qhykv0x60d5rsx5pj6s4q15ri4znczscll3xmpf6gyclac1592"))))
+ (build-system python-build-system)
+ (arguments '(#:tests? #f)) ; No test
+ (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.")
+ (license license:lgpl3+)))
+
(define-public python-isort
(package
(name "python-isort")
@@ -14009,7 +14515,7 @@ editors.")
(define-public python2-backports-functools-lru-cache
(package
(name "python2-backports-functools-lru-cache")
- (version "1.5")
+ (version "1.6.1")
(source
(origin
(method url-fetch)
@@ -14017,7 +14523,7 @@ editors.")
(uri (pypi-uri "backports.functools_lru_cache" version))
(sha256
(base32
- "06jgv8gib4fhky0p5cmxdghvsgjyzcdgk48k8pxb1ccf11znk64x"))))
+ "0jidrkk2w6bhjm197plxiaxrav64mgcrign0bfyr7md2ilc5zplg"))))
(build-system python-build-system)
(native-inputs
`(("python2-setuptools-scm" ,python2-setuptools-scm)))
@@ -14053,6 +14559,28 @@ in other versions.")
(define-public python2-configparser
(package-with-python2 python-configparser))
+(define-public python-mamba
+ (package
+ (name "python-mamba")
+ (version "0.11.0")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "mamba" version))
+ (sha256
+ (base32
+ "0bpbgz9v63rpanjjpc8bnvrr8fkms5rzylh77xrcki1x6az7gnsz"))))
+ (build-system python-build-system)
+ (arguments `(#:tests? #f)) ; No test
+ (propagated-inputs
+ `(("python-clint" ,python-clint)
+ ("python-coverage" ,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.")
+ (license license:expat)))
+
(define-public python-mando
(package
(name "python-mando")
@@ -14169,14 +14697,22 @@ exception message with a traceback that points to the culprit.")
(define-public python-utils
(package
(name "python-utils")
- (version "2.1.0")
+ (version "2.4.0")
(source (origin
(method url-fetch)
(uri (pypi-uri "python-utils" version))
(sha256
(base32
- "1mcsy6q5am4ya72rgkpb6kax6vv7c93cfkkas89xnpa4sj9zf28p"))))
+ "12c0glzkm81ljgf6pwh0d4rmdm1r7vvgg3ifzp8yp9cfyngw07zj"))))
(build-system python-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (replace 'check
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (add-installed-pythonpath inputs outputs)
+ (delete-file "pytest.ini")
+ (invoke "pytest" "-vv"))))))
(native-inputs
`(("pytest-runner" ,python-pytest-runner)
("pytest" ,python-pytest)
@@ -14932,7 +15468,7 @@ Swagger 2.0).")
(origin
(method git-fetch)
(uri (git-reference
- (url "https://github.com/rochacbruno/flasgger.git")
+ (url "https://github.com/rochacbruno/flasgger")
(commit version)))
(file-name (git-file-name name version))
(sha256
@@ -15122,40 +15658,73 @@ functionality like full case-folding for case-insensitive matches in Unicode.")
(define-public python2-regex
(package-with-python2 python-regex))
-(define-public python2-pyopengl
+(define-public python-pyopengl
(package
- (name "python2-pyopengl")
- (version "3.1.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "PyOpenGL" version))
- (sha256
- (base32
- "1byxjj6a8rwzhxhjqlc588zdad2qwxdd7vlam2653ylll31waiwv"))))
- (arguments
- `(#:python ,python-2))
- (build-system python-build-system)
- (home-page "http://pyopengl.sourceforge.net")
- (synopsis "Standard OpenGL bindings for Python")
- (description
- "PyOpenGL is the most common cross platform Python binding to OpenGL and
+ (name "python-pyopengl")
+ (version "3.1.5")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "PyOpenGL" version))
+ (sha256
+ (base32
+ "091lp9bpqi8yf1nmyg19xmvw611lrzq2q94cl1k5gnlh0c6vl1s1"))))
+ (build-system python-build-system)
+ (inputs
+ `(("mesa" ,mesa)
+ ("freeglut" ,freeglut)
+ ("glu" ,glu)))
+ (arguments
+ `(#:tests? #f ; Tests fail: AttributeError: 'GLXPlatform' object has no
+ ;attribute 'OSMesa'
+ #:phases
+ (modify-phases %standard-phases
+ (add-before 'build 'fix-paths
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (substitute* '("OpenGL/platform/ctypesloader.py")
+ (("filenames_to_try = \\[\\]") "filenames_to_try = [name]"))
+ (substitute* '("OpenGL/platform/glx.py" "tests/check_glut_load.py")
+ (("'GL'")
+ (string-append "'" (assoc-ref inputs "mesa") "/lib/libGL.so'"))
+ (("'GLU'")
+ (string-append "'" (assoc-ref inputs "glu") "/lib/libGLU.so'"))
+ (("'glut',")
+ (string-append "'" (assoc-ref inputs "freeglut") "/lib/libglut.so',"))
+ (("'GLESv1_CM'")
+ (string-append "'" (assoc-ref inputs "mesa") "/lib/libGLESv1_CM.so'"))
+ (("'GLESv2'")
+ (string-append "'" (assoc-ref inputs "mesa") "/lib/libGLESv2.so'")))
+ ;; Not providing libgle. It seems to be very old.
+ #t)))))
+ (home-page "http://pyopengl.sourceforge.net")
+ (synopsis "Standard OpenGL bindings for Python")
+ (description
+ "PyOpenGL is the most common cross platform Python binding to OpenGL and
related APIs. The binding is created using the standard @code{ctypes}
library.")
- (license license:bsd-3)))
+ (license license:bsd-3)))
-(define-public python2-pyopengl-accelerate
+(define-public python-pyopengl-accelerate
(package
- (inherit python2-pyopengl)
- (name "python2-pyopengl-accelerate")
- (version "3.1.0")
+ (inherit python-pyopengl)
+ (name "python-pyopengl-accelerate")
+ (version "3.1.5")
(source
(origin
(method url-fetch)
(uri (pypi-uri "PyOpenGL-accelerate" version))
(sha256
(base32
- "0464c1ifzk0k92lyndikmvzjgnx1y25r7bkkc8pnxm4kp1q4czwj"))))
+ "01iggy5jwxv7lxnj51zbmlbhag9wcb7dvrbwgi97i90n0a5m3r8j"))))
+ (inputs
+ `(("mesa" ,mesa)
+ ("python-numpy" ,python-numpy))) ; for cython module
+ ; numpy_formathandler, thus not propagated
+ (arguments
+ `(#:tests? #f
+ #:phases
+ (modify-phases %standard-phases
+ (delete 'fix-paths))))
(synopsis "Acceleration code for PyOpenGL")
(description
"This is the Cython-coded accelerator module for PyOpenGL.")))
@@ -15465,7 +16034,7 @@ executed more than a given number of times during a given period.")
(origin
(method git-fetch)
(uri (git-reference
- (url "https://github.com/kovidgoyal/dukpy.git")
+ (url "https://github.com/kovidgoyal/dukpy")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
@@ -15932,7 +16501,7 @@ and works only with Python 2 and NumPy < 1.9.")
(origin (method git-fetch)
;; Source tarball on PyPI doesn't include tests.
(uri (git-reference
- (url "https://github.com/hsoft/send2trash.git")
+ (url "https://github.com/hsoft/send2trash")
(commit version)))
(file-name (git-file-name name version))
(sha256
@@ -16044,7 +16613,7 @@ files, and Makefiles.")
(invoke "py.test"))))))
(native-inputs
`(("python-pytest" ,python-pytest)))
- (home-page "http://github.com/Suor/whatever")
+ (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
functions by partial application of operators.")
@@ -16061,7 +16630,7 @@ functions by partial application of operators.")
(origin
(method git-fetch)
(uri (git-reference
- (url "https://github.com/Suor/funcy.git")
+ (url "https://github.com/Suor/funcy")
(commit version)))
(sha256
(base32 "1s98vkjnq3zq71737hn8xa15kssvmy1sfzsll3vrlv53902418mw"))
@@ -16076,7 +16645,7 @@ functions by partial application of operators.")
(native-inputs
`(("python-pytest" ,python-pytest)
("python-whatever" ,python-whatever)))
- (home-page "http://github.com/Suor/funcy")
+ (home-page "https://github.com/Suor/funcy")
(synopsis "Functional tools")
(description "@code{funcy} is a library that provides functional tools.
Examples are:
@@ -16180,7 +16749,7 @@ source bytes using the UTF-8 encoding and then rewrites Python 3.6 style
(origin
(method git-fetch)
(uri (git-reference
- (url "https://github.com/python/typed_ast.git")
+ (url "https://github.com/python/typed_ast")
(commit version)))
(sha256
(base32 "0l0hz809f7i356kmqkvfsaswiidb98j9hs9rrjnfawzqcbffzgyb"))
@@ -16621,7 +17190,7 @@ manager compatible with @code{asyncio}.")
(origin
(method git-fetch)
(uri (git-reference
- (url "https://github.com/miracle2k/python-glob2.git")
+ (url "https://github.com/miracle2k/python-glob2")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
@@ -16811,7 +17380,7 @@ user-space file systems in Python.")
(source (origin
(method git-fetch)
(uri (git-reference
- (url "https://github.com/pybind/pybind11.git")
+ (url "https://github.com/pybind/pybind11")
(commit (string-append "v" version))))
(sha256
(base32
@@ -16856,19 +17425,20 @@ inferring type information using compile-time introspection.")
(define-public python-fasteners
(package
(name "python-fasteners")
- (version "0.14.1")
+ (version "0.15")
(source
(origin
(method url-fetch)
(uri (pypi-uri "fasteners" version))
(sha256
(base32
- "063y20kx01ihbz2mziapmjxi2cd0dq48jzg587xdsdp07xvpcz22"))))
+ "1vzmz1xh38b84dv0f4hlp7arwmx8wjlih6lf964bpy8dnyk6s5rs"))))
(build-system python-build-system)
(propagated-inputs
`(("python-monotonic" ,python-monotonic)
- ("python-six" ,python-six)
- ("python-testtools" ,python-testtools)))
+ ("python-six" ,python-six)))
+ (native-inputs
+ `(("python-testtools" ,python-testtools)))
(home-page "https://github.com/harlowja/fasteners")
(synopsis "Python package that provides useful locks")
(description
@@ -17701,6 +18271,39 @@ on regular expressions.")
`(("python2-enum34" ,python2-enum34)
,@(package-propagated-inputs reparser))))))
+(define-public python-retrying
+ (package
+ (name "python-retrying")
+ (version "1.3.3")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/rholder/retrying")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1kqipkbdaw5s1xg0gi29awm03vp1x8dz24pjidgxagvkvrjpzhi7"))))
+ (build-system python-build-system)
+ (propagated-inputs
+ `(("python-six" ,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
+the task of adding retry behavior to just about anything.
+
+Features:
+
+@itemize
+@item Generic Decorator API.
+@item Specify stop condition (i.e. limit by number of attempts).
+@item Specify wait condition (i.e. exponential backoff sleeping between attempts).
+@item Customize retrying on Exceptions.
+@item Customize retrying on expected returned result.
+@end itemize")
+ (license license:asl2.0)))
+
(define-public python-precis-i18n
(package
(name "python-precis-i18n")
@@ -18137,14 +18740,13 @@ time-or-computationally-expensive properties quick and easy and works in Python
(define-public python-folium
(package
(name "python-folium")
- (version "0.10.1")
+ (version "0.11.0")
(source
(origin
(method url-fetch)
(uri (pypi-uri "folium" version))
(sha256
- (base32
- "0gcc267wxwxr57ry86pqpbiyfvl0g48hfvgy0f2mz9s58g87kgzd"))))
+ (base32 "19sclsq3xcjfa7bavzjpyn6rl9b15jbc76n5aag4cwhqqamqj1sl"))))
(build-system python-build-system)
(propagated-inputs
`(("python-branca" ,python-branca)
@@ -18474,7 +19076,7 @@ bindings for Python 2.5+ and 3.")))
(origin
(method git-fetch)
(uri (git-reference
- (url "https://github.com/oinume/iocapture.git")
+ (url "https://github.com/oinume/iocapture")
(commit commit)))
(file-name (git-file-name name version))
(sha256
@@ -18514,7 +19116,7 @@ standard error channel (stderr) in your program.")
(origin
(method git-fetch)
(uri (git-reference
- (url "https://github.com/neithere/argh.git")
+ (url "https://github.com/neithere/argh")
(commit commit)))
(file-name (git-file-name name version))
(sha256
@@ -18632,9 +19234,9 @@ essential tools are located.")
(synopsis
"Parallel graph management and execution in heterogeneous computing")
(description
- "Python-pathos is a framework for heterogenous computing. It provides a
+ "Python-pathos is a framework for heterogeneous computing. It provides a
consistent high-level interface for configuring and launching parallel
-computations across heterogenous resources. Python-pathos provides configurable
+computations across heterogeneous resources. Python-pathos provides configurable
launchers for parallel and distributed computing, where each launcher contains
the syntactic logic to configure and launch jobs in an execution environment.")
(license license:bsd-3)))
@@ -18820,9 +19422,9 @@ and cuts down boilerplate code when testing libraries for asyncio.")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
- (base32 "1sk9i8czxgsbrswsf1nlb4c82vgnlzi8zrvrxdip92w2z8hqh43y"))))
+ (base32 "1sk9i8czxgsbrswsf1nlb4c82vgnlzi8zrvrxdip92w2z8hqh43y"))
+ (patches (search-patches "python-aionotify-0.2.0-py3.8.patch"))))
(build-system python-build-system)
- (native-inputs `(("python-asynctest" ,python-asynctest)))
(home-page "https://github.com/rbarrois/aionotify")
(synopsis "Asyncio-powered inotify library")
(description
@@ -19343,7 +19945,12 @@ logging in Python. It also provides some custom formatters and handlers.")
"150av2pylsjy8ykrpyi0vzy2q24s9rhh2ya01zvwnvj9j5dspviz"))))
(build-system python-build-system)
(arguments
- `(#:tests? #f))
+ '(#:phases
+ (modify-phases %standard-phases
+ (replace 'check
+ (lambda _
+ (invoke "python" "setup.py" "testr" "--slowest"
+ "--testr-args=until-failure"))))))
(propagated-inputs
`(("python-click" ,python-click)
("python-daiquiri" ,python-daiquiri)
@@ -19404,7 +20011,7 @@ HTML-containing files.")
;; sample.json5 is missing from PyPi source tarball
(method git-fetch)
(uri (git-reference
- (url "https://github.com/dpranke/pyjson5.git")
+ (url "https://github.com/dpranke/pyjson5")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
@@ -19446,7 +20053,7 @@ replacement for dictionaries where immutability is desired.")
(origin
(method git-fetch)
(uri (git-reference
- (url "https://github.com/matrix-org/python-unpaddedbase64.git")
+ (url "https://github.com/matrix-org/python-unpaddedbase64")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
@@ -19461,6 +20068,25 @@ using “=” characters. However this conveys no benefit so many protocols
choose to use Base64 without the “=” padding.")
(license license:asl2.0)))
+(define-public python-py-cpuinfo
+ (package
+ (name "python-py-cpuinfo")
+ (version "5.0.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "py-cpuinfo" version))
+ (sha256
+ (base32
+ "0045y6832gqjg63jmw0qj2jwyypgjwr7sfdq3lfv49b6fxpl5xic"))))
+ (build-system python-build-system)
+ (home-page "https://github.com/workhorsy/py-cpuinfo")
+ (synopsis "Get CPU info with Python")
+ (description
+ "This Python module returns the CPU info by using the best sources of
+information for your operating system.")
+ (license license:expat)))
+
(define-public python-canonicaljson
(package
(name "python-canonicaljson")
@@ -20069,3 +20695,256 @@ For the most part it's transliterated from C, the major differences are:
@end itemize
")
(license license:gpl3+)))
+
+(define-public python-jinxed
+ (package
+ (name "python-jinxed")
+ (version "1.0.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "jinxed" version))
+ (sha256
+ (base32
+ "1n7vl03rhjd0xhjgbjlh8x9f8yfbhamcwkgvs4jg7g5qj8f0wk89"))))
+ (build-system python-build-system)
+ (arguments
+ '(#:phases
+ (modify-phases %standard-phases
+ (add-before 'check 'set-environment-variables
+ (lambda* (#:key inputs #:allow-other-keys)
+ (let ((ncurses (assoc-ref inputs "ncurses")))
+ (setenv "TERM" "LINUX")
+ (setenv "TERMINFO" (string-append ncurses "/share/terminfo"))
+ #t))))
+ #:tests? #f)) ; _curses.error: setupterm: could not find terminal
+ (native-inputs
+ `(("ncurses" ,ncurses)))
+ (home-page "https://github.com/Rockhopper-Technologies/jinxed")
+ (synopsis "Jinxed Terminal Library")
+ (description
+ "Jinxed is an implementation of a subset of the Python curses library.")
+ (license license:mpl2.0)))
+
+(define-public python-blessed
+ (package
+ (name "python-blessed")
+ (version "1.17.8")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "blessed" version))
+ (sha256
+ (base32
+ "1wdj342sk22hfrg0n91x2qnqsbzbiyq9y009v3pxnvfzn9bx0wbn"))
+ (modules '((guix build utils)))
+ (snippet
+ '(begin
+ ;; Don't get hung up on Windows test failures.
+ (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)))
+ (native-inputs
+ `(("python-mock" ,python-mock)
+ ("python-pytest" ,python-pytest)))
+ (home-page "https://github.com/jquast/blessed")
+ (synopsis "Wrapper around terminal capabilities")
+ (description
+ "Blessed is a thin, practical wrapper around terminal styling, screen
+positioning, and keyboard input.")
+ (license license:expat)))
+
+(define-public python-readme-renderer
+ (package
+ (name "python-readme-renderer")
+ (version "26.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "readme_renderer" version))
+ (sha256
+ (base32
+ "13fnrv7z3y0yfafzcjbl55cqxncvbxadr72ql4l29pgyvrqxpsfb"))))
+ (build-system python-build-system)
+ (propagated-inputs
+ `(("python-bleach" ,python-bleach)
+ ("python-docutils" ,python-docutils)
+ ("python-pygments" ,python-pygments)
+ ("python-six" ,python-six)))
+ (native-inputs
+ `(("python-mock" ,python-mock)
+ ("python-pytest" ,python-pytest)))
+ (home-page "https://github.com/pypa/readme_renderer")
+ (synopsis "Render README files in Warehouse")
+ (description
+ "Readme Renderer is a library that will safely render arbitrary README
+files into HTML. It is designed to be used in Warehouse to render the
+@code{long_description} for packages. It can handle Markdown, reStructuredText,
+and plain text.")
+ (license license:asl2.0)))
+
+(define-public python-lazr-delegates
+ (package
+ (name "python-lazr-delegates")
+ (version "2.0.4")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "lazr.delegates" version))
+ (sha256
+ (base32
+ "1rdnl85j9ayp8n85l0ciip621j9dcziz5qnmv2m7krgwgcn31vfx"))))
+ (build-system python-build-system)
+ (arguments
+ '(#:phases
+ (modify-phases %standard-phases
+ (replace 'check
+ (lambda _
+ (invoke "python" "setup.py" "nosetests"))))))
+ (native-inputs
+ `(("python-nose" ,python-nose)))
+ (propagated-inputs
+ `(("python-zope-interface" ,python-zope-interface)))
+ (home-page "https://launchpad.net/lazr.delegates")
+ (synopsis "Easily write objects that delegate behavior")
+ (description
+ "The @code{lazr.delegates} package makes it easy to write objects that
+delegate behavior to another object. The new object adds some property or
+behavior on to the other object, while still providing the underlying interface,
+and delegating behavior.")
+ (license license:lgpl3)))
+
+(define-public python-lazr-config
+ (package
+ (name "python-lazr-config")
+ (version "2.2.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "lazr.config" version))
+ (sha256
+ (base32
+ "11xpddgyhyj7sf27wbmrq5lnqk21wnprx3ajycgwlxjamh6sgffd"))))
+ (build-system python-build-system)
+ (arguments
+ '(#:phases
+ (modify-phases %standard-phases
+ (replace 'check
+ (lambda _
+ (invoke "python" "-s" "-m" "nose" "-P" "lazr"))))))
+ (native-inputs
+ `(("python-nose" ,python-nose)))
+ (propagated-inputs
+ `(("python-lazr-delegates" ,python-lazr-delegates)
+ ("python-zope-interface" ,python-zope-interface)))
+ (home-page "https://launchpad.net/lazr.config")
+ (synopsis "Create configuration schemas and process and validate configurations")
+ (description
+ "The LAZR config system is typically used to manage process configuration.
+Process configuration is for saying how things change when we run systems on
+different machines, or under different circumstances. This system uses ini-like
+file format of section, keys, and values. The config file supports inheritance
+to minimize duplication of information across files. The format supports schema
+validation.")
+ (license license:lgpl3)))
+
+(define-public python-flufl-bounce
+ (package
+ (name "python-flufl-bounce")
+ (version "3.0.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "flufl.bounce" version))
+ (sha256
+ (base32
+ "01lg1b0jpf8605mzaz9miq3nray6s7a7gc8n4wzg5nsxl8fglcp4"))))
+ (build-system python-build-system)
+ (propagated-inputs
+ `(("python-atpublic" ,python-atpublic)
+ ("python-zope-interface" ,python-zope-interface)))
+ (native-inputs
+ `(("python-nose2" ,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
+and an API for detecting the original bouncing email addresses from a bounce
+message. Many formats found in the wild are supported, as are VERP and
+RFC 3464.")
+ (license (list license:asl2.0
+ license:lgpl3)))) ; only for setup_headers.py
+
+(define-public python-flufl-i18n
+ (package
+ (name "python-flufl-i18n")
+ (version "3.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "flufl.i18n" version))
+ (sha256
+ (base32
+ "1flwpn1xhgc957zj3zxw92dhdjh0lsy0hdvzq32dzqpsajfsvq1r"))))
+ (build-system python-build-system)
+ (propagated-inputs
+ `(("python-atpublic" ,python-atpublic)))
+ (home-page "https://flufli18n.readthedocs.io")
+ (synopsis "API for Python internationalization")
+ (description
+ "This package provides a high level, convenient API for managing
+internationalization translation contexts in Python application. There is a
+simple API for single-context applications, such as command line scripts which
+only need to translate into one language during the entire course of thei
+execution. There is a more flexible, but still convenient API for multi-context
+applications, such as servers, which may need to switch language contexts for
+different tasks.")
+ (license license:asl2.0)))
+
+(define-public python-flufl-lock
+ (package
+ (name "python-flufl-lock")
+ (version "4.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "flufl.lock" version))
+ (sha256
+ (base32
+ "055941zyma3wfx25jhm8wcsghpv3jc3iwi1gdrdjhzcnfhn62lxq"))))
+ (build-system python-build-system)
+ (propagated-inputs
+ `(("python-atpublic" ,python-atpublic)
+ ("python-psutil" ,python-psutil)))
+ (home-page "https://flufllock.readthedocs.io")
+ (synopsis "NFS-safe file locking with timeouts for POSIX systems")
+ (description
+ "The @dfn{flufl.lock} package provides NFS-safe file locking with
+timeouts for POSIX systems. It is similar to the @code{O_EXCL} option of the
+@code{open} system call but uses a lockfile. Lock objects support lock-breaking
+and have a maximum lifetime built-in.")
+ (license (list license:asl2.0
+ license:lgpl3)))) ; only for setup_helpers.py
+
+(define-public python-flufl-testing
+ (package
+ (name "python-flufl-testing")
+ (version "0.8")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "flufl.testing" version))
+ (sha256
+ (base32
+ "1nkm95mhcfhl4x5jgs6y97ikszaxsfh07nyawsih6cxxm6l62641"))))
+ (build-system python-build-system)
+ (native-inputs
+ `(("python-nose2" ,python-nose2)))
+ (home-page "https://gitlab.com/warsaw/flufl.testing")
+ (synopsis "Collection of test tool plugins")
+ (description
+ "This package contains a small collection of test tool plugins for
+@code{nose2} and @code{flake8}.")
+ (license license:asl2.0)))