From aa8b7cee096507a351fe862128090fa7e6f47a33 Mon Sep 17 00:00:00 2001 From: "Collin J. Doering" Date: Tue, 25 May 2021 22:48:19 -0400 Subject: [PATCH] Revert "rekahsoft-gnu/packages/python-xyz.scm: Cleanup unused packages" This reverts commit 12786dc98da500c8ac10644b96852b61966320fb. --- rekahsoft-gnu/packages/python-xyz.scm | 1882 ++++++++++++++++++++++++- 1 file changed, 1874 insertions(+), 8 deletions(-) diff --git a/rekahsoft-gnu/packages/python-xyz.scm b/rekahsoft-gnu/packages/python-xyz.scm index e2b6e7d..101560b 100644 --- a/rekahsoft-gnu/packages/python-xyz.scm +++ b/rekahsoft-gnu/packages/python-xyz.scm @@ -19,16 +19,91 @@ (define-module (rekahsoft-gnu packages python-xyz) #:use-module ((guix licenses) #:prefix license:) #:use-module (gnu packages) - #:use-module (gnu packages base) + #:use-module (gnu packages algebra) + #:use-module (gnu packages adns) + #:use-module (gnu packages attr) + #: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) + #:use-module (gnu packages dbm) + #:use-module (gnu packages enchant) + #:use-module (gnu packages file) + #:use-module (gnu packages fontutils) + #:use-module (gnu packages gcc) + #:use-module (gnu packages geo) + #:use-module (gnu packages ghostscript) + #:use-module (gnu packages gl) #:use-module (gnu packages glib) + #:use-module (gnu packages gnome) + #:use-module (gnu packages graphviz) + #:use-module (gnu packages graphics) + #:use-module (gnu packages gsasl) + #:use-module (gnu packages gstreamer) + #:use-module (gnu packages gtk) + #:use-module (gnu packages icu4c) + #:use-module (gnu packages image) + #:use-module (gnu packages imagemagick) + #:use-module (gnu packages kerberos) + #:use-module (gnu packages libevent) + #:use-module (gnu packages libffi) + #:use-module (gnu packages linux) + #:use-module (gnu packages llvm) + #:use-module (gnu packages man) + #:use-module (gnu packages maths) + #:use-module (gnu packages monitoring) + #:use-module (gnu packages multiprecision) + #:use-module (gnu packages networking) + #:use-module (gnu packages ncurses) + #:use-module (gnu packages openstack) + #:use-module (gnu packages pcre) + #:use-module (gnu packages perl) + #:use-module (gnu packages photo) + #:use-module (gnu packages pkg-config) #:use-module (gnu packages python) + #:use-module (gnu packages python-check) + #:use-module (gnu packages python-compression) #:use-module (gnu packages python-crypto) + #:use-module (gnu packages python-science) #:use-module (gnu packages python-web) #:use-module (gnu packages python-xyz) + #:use-module (gnu packages qt) + #:use-module (gnu packages readline) + #:use-module (gnu packages sdl) + #:use-module (gnu packages search) + #:use-module (gnu packages shells) + #:use-module (gnu packages sphinx) + #:use-module (gnu packages ssh) + #:use-module (gnu packages terminals) + #:use-module (gnu packages tex) + #:use-module (gnu packages texinfo) + #:use-module (gnu packages textutils) + #:use-module (gnu packages time) + #:use-module (gnu packages tls) + #:use-module (gnu packages version-control) + #:use-module (gnu packages video) + #:use-module (gnu packages web) + #:use-module (gnu packages base) + #:use-module (gnu packages xml) + #:use-module (gnu packages xorg) + #:use-module (gnu packages xdisorg) + #:use-module (gnu packages tcl) + #:use-module (gnu packages bdw-gc) + #:use-module (gnu packages serialization) #:use-module (guix packages) #:use-module (guix download) - #:use-module (guix build-system python)) + #:use-module (guix git-download) + #:use-module (guix hg-download) + #:use-module (guix utils) + #:use-module (guix build-system gnu) + #:use-module (guix build-system cmake) + #:use-module (guix build-system python) + #:use-module (guix build-system trivial) + #:use-module (srfi srfi-1) + #:use-module (srfi srfi-26)) (define-public python-virtualenv-clone (package @@ -63,12 +138,6 @@ (base32 "0aq2pmhfyq7vhbhyq8jgxiphncy1s79rmrsggz4p52m4cdhy134l")))) (build-system python-build-system) - (arguments - ;; TODO: tests disabled as currently they depend on examples and this needs to be explicitly handled - '(#:tests? #f)) - (native-inputs - `(("python-pytest" ,python-pytest) - ("python-pytest-runner" ,python-pytest-runner))) (home-page "https://github.com/textX/Arpeggio") (synopsis "Packrat parser interpreter") @@ -257,6 +326,182 @@ bindings for Python 2.5+ and 3."))) (define-public python2-ujson-1 (package-with-python2 python-ujson-1)) +(define-public python-iocapture + ;; The latest release is more than a year older than this commit. + (let ((commit "fdc021c431d0840303908dfc3ca8769db383595c") + (revision "1")) + (package + (name "python-iocapture") + (version "0.1.2") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/oinume/iocapture") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1mkbhqibxvgwg0p7slr8dfraa3g2s6bsayladhax2jccwj4kcndz")))) + (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (delete 'check) + (add-after 'install 'check + (lambda* (#:key inputs outputs #:allow-other-keys) + (add-installed-pythonpath inputs outputs) + (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))) + (home-page "https://github.com/oinume/iocapture") + (synopsis "Python capturing tool for stdout and stderr") + (description + "This package helps you to capture the standard out (stdout) and the +standard error channel (stderr) in your program.") + (license license:expat)))) + +(define-public python-argh + ;; There are 21 commits since the latest release containing important + ;; improvements. + (let ((commit "dcd3253f2994400a6a58a700c118c53765bc50a4") + (revision "1")) + (package + (name "python-argh") + (version (git-version "0.26.2" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/neithere/argh") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "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) + ("python-tox" ,python-tox))) + (home-page "https://github.com/neithere/argh/") + (synopsis "Argparse wrapper with natural syntax") + (description + "python-argh is a small library that provides several layers of +abstraction on top of @code{python-argparse}. The layers can be mixed. It is +always possible to declare a command with the highest possible (and least +flexible) layer and then tune the behaviour with any of the lower layers +including the native API of @code{python-argparse}.") + (license license:lgpl3+)))) + +(define-public python-ppft + (package + (name "python-ppft") + (version "1.6.6.1") + (source + (origin + (method url-fetch) + (uri (pypi-uri "ppft" version)) + (sha256 + (base32 + "1z1invkhszc5d2mvgr221v7cszzifcc77mz0pv3wjp6x5q2768cy")))) + (build-system python-build-system) + (arguments '(#:tests? #f)) ; there are none + (propagated-inputs + `(("python-six" ,python-six))) + (home-page "https://pypi.org/project/ppft/") + (synopsis "Fork of Parallel Python") + (description + "This package is a fork of Parallel Python. The Parallel Python +module (@code{pp}) provides an easy and efficient way to create +parallel-enabled applications for @dfn{symmetric multiprocessing} (SMP) +computers and clusters. It features cross-platform portability and dynamic +load balancing.") + (license license:bsd-3))) + +(define-public python-pox + (package + (name "python-pox") + (version "0.2.7") + (source + (origin + (method url-fetch) + (uri (pypi-uri "pox" version)) + (sha256 + (base32 + "0y17ckc2p6i6709s279sjdj4q459mpcc38ymg9zv9y6vl6jf3bq6")))) + (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda _ + (mkdir-p "/tmp/guix") + (setenv "SHELL" "bash") + (setenv "USERNAME" "guix") + (setenv "HOME" "/tmp/guix") ; must end on USERNAME... + (invoke "py.test" "-vv") + #t))))) + (native-inputs + `(("python-pytest" ,python-pytest) + ("which" ,which))) + (home-page "https://pypi.org/project/pox/") + (synopsis "Python utilities for filesystem exploration and automated builds") + (description + "Pox provides a collection of utilities for navigating and manipulating +filesystems. This module is designed to facilitate some of the low level +operating system interactions that are useful when exploring a filesystem on a +remote host. Pox provides Python equivalents of several shell commands such +as @command{which} and @command{find}. These commands allow automated +discovery of what has been installed on an operating system, and where the +essential tools are located.") + (license license:bsd-3))) + +(define-public python-pathos + (package + (name "python-pathos") + (version "0.2.5") + (source + (origin + (method url-fetch) + (uri (pypi-uri "pathos" version)) + (sha256 + (base32 + "0in8hxdz7k081ijn6q94gr39ycy7363sx4zysmbwyvd7snqjrbi1")))) + (build-system python-build-system) + (arguments + '(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda _ + (setenv "PYTHONPATH" + (string-append (getcwd) ":" (getenv "PYTHONPATH"))) + (invoke "python" "./tests/__main__.py")))))) + (propagated-inputs + `(("python-dill" ,python-dill) + ("python-multiprocess" ,python-multiprocess) + ("python-pox" ,python-pox) + ("python-ppft" ,python-ppft))) + (native-inputs + `(("python-pytest" ,python-pytest))) + (home-page "https://pypi.org/project/pathos/") + (synopsis + "Parallel graph management and execution in heterogeneous computing") + (description + "Python-pathos is a framework for heterogeneous computing. It provides a +consistent high-level interface for configuring and launching parallel +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))) + (define-public python-flit (package (name "python-flit") @@ -281,6 +526,258 @@ name as the name on PyPI. All subpackages and data files within a package are included automatically.") (license license:bsd-3))) +(define-public python-pathtools + (package + (name "python-pathtools") + (version "0.1.2") + (source + (origin + (method url-fetch) + (uri (pypi-uri "pathtools" version)) + (sha256 + (base32 + "1h7iam33vwxk8bvslfj4qlsdprdnwf8bvzhqh3jq5frr391cadbw")))) + (build-system python-build-system) + (home-page + "https://github.com/gorakhargosh/pathtools") + (synopsis "Path utilities for Python") + (description "Pattern matching and various utilities for file systems +paths.") + (license license:expat))) + +(define-public python-fastentrypoints + (package + (name "python-fastentrypoints") + (version "0.12") + (source + (origin + (method url-fetch) + (uri (pypi-uri "fastentrypoints" version)) + (sha256 + (base32 + "02s1j8i2dzbpbwgq2a3fiqwm3cnmhii2qzc0k42l0rdxd4a4ya7z")))) + (build-system python-build-system) + (home-page + "https://github.com/ninjaaron/fast-entry_points") + (synopsis + "Makes entry_points specified in setup.py load more quickly") + (description + "Using entry_points in your setup.py makes scripts that start really +slowly because it imports pkg_resources. This package allows such setup +scripts to load entry points more quickly.") + (license license:bsd-3))) + +(define-public python-funcparserlib + (package + (name "python-funcparserlib") + (version "0.3.6") + (source + (origin + (method url-fetch) + (uri (pypi-uri "funcparserlib" version)) + (sha256 + (base32 + "07f9cgjr3h4j2m67fhwapn8fja87vazl58zsj4yppf9y3an2x6dp")))) + (native-inputs + `(("python-tox" ,python-tox))) + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda _ + (invoke "tox")))))) + (build-system python-build-system) + (home-page + "https://github.com/vlasovskikh/funcparserlib") + (synopsis + "Recursive descent parsing library based on functional combinators") + (description + "This package is a recursive descent parsing library for Python based on +functional combinators. Parser combinators are just higher-order functions +that take parsers as their arguments and return them as result values.") + (license license:expat))) + +(define-public python-speg + (package + (name "python-speg") + (version "0.3") + (source + (origin + (method url-fetch) + (uri (pypi-uri "speg" version ".zip")) + (sha256 + (base32 "0w9y4jf4787dzhy6rvhwi0mpl0r8qkqmqmyv2hpwdpv8w53yzjqh")))) + (arguments + `(#:tests? #f)) ;FIXME: tests fail, not sure why + (native-inputs + `(("unzip" ,unzip))) + (build-system python-build-system) + (home-page "https://github.com/avakar/speg") + (synopsis "PEG-based parser interpreter with memoization") + (description "This package is a PEG-based parser and interpreter with +memoization.") + (license license:expat))) + +(define-public python-cson + (package + (name "python-cson") + (version "0.8") + (source + (origin + (method url-fetch) + (uri (pypi-uri "cson" version)) + (sha256 + (base32 "00cyvigg4npbph39ghkg77xbxisa6plf75vii24igxfizik0337f")))) + (build-system python-build-system) + (propagated-inputs + `(("python-speg" ,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* _ + (substitute* "test/test_selector.py" + ;; XXX: This test fails for unknown reason inside the build + ;; environment. + (("def test_events_watched_outside_test_are_ignored") + "@unittest.skip('disabled by guix') + def test_events_watched_outside_test_are_ignored"))))))) + (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") + (version "0.2.0") + (source + (origin + ;; Source tarball on PyPi lacks tests + (method git-fetch) + (uri (git-reference + (url "https://github.com/rbarrois/aionotify") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1sk9i8czxgsbrswsf1nlb4c82vgnlzi8zrvrxdip92w2z8hqh43y")) + (patches (search-patches "python-aionotify-0.2.0-py3.8.patch")))) + (build-system python-build-system) + (home-page "https://github.com/rbarrois/aionotify") + (synopsis "Asyncio-powered inotify library") + (description + "@code{aionotify} is a simple, asyncio-based inotify library.") + (license license:bsd-3))) + +(define-public python-forbiddenfruit + (package + (name "python-forbiddenfruit") + (version "0.1.3") + (source + (origin + ;; Source tarball on PyPi lacks Makefile that builds and runs tests + (method git-fetch) + (uri (git-reference + (url "https://github.com/clarete/forbiddenfruit") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1fp2xvdqpi910j9r3q68x38phpxbm700gjdi2m2j5gs91xdnyyh2")))) + (build-system python-build-system) + (arguments + '(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda _ + (invoke "make" "SKIP_DEPS=1")))))) + (native-inputs + `(("python-nose" ,python-nose) + ("python-coverage" ,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.") + (license (list license:gpl3+ license:expat)))) + +(define-public python-shouldbe + (package + (name "python-shouldbe") + (version "0.1.2") + (source + (origin + (method url-fetch) + (uri (pypi-uri "shouldbe" version)) + (sha256 + (base32 + "16zbvjxf71dl4yfbgcr6idyim3mdrfvix1dv8b95p0s9z07372pj")) + (patches (search-patches "python-shouldbe-0.1.2-cpy3.8.patch")))) + (build-system python-build-system) + (propagated-inputs + `(("python-forbiddenfruit" ,python-forbiddenfruit))) + (native-inputs + `(("python-nose" ,python-nose))) + (home-page "https://github.com/directxman12/should_be") + (synopsis "Python Assertion Helpers inspired by Shouldly") + (description + "Python Assertion Helpers inspired by Shouldly.") + (license license:isc))) + +(define-public python-k5test + (package + (name "python-k5test") + (version "0.9.2") + (source + (origin + (method url-fetch) + (uri (pypi-uri "k5test" version)) + (sha256 + (base32 + "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))) + (arguments + '(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'patch-paths + (lambda* _ + (substitute* "k5test/realm.py" + (("'kadmin_local'") "'kadmin.local'"))))))) + (home-page "https://github.com/pythongssapi/k5test") + (synopsis "Library for setting up self-contained Kerberos 5 environments") + (description + "@code{k5test} is a library for setting up self-contained Kerberos 5 +environments, and running Python unit tests inside those environments. It is +based on the file of the same name found alongside the MIT Kerberos 5 unit +tests.") + (license license:isc))) + (define-public python-gssapi (package (name "python-gssapi") @@ -312,6 +809,545 @@ GSSAPI C libraries. While it focuses on the Kerberos mechanism, it should also be useable with other GSSAPI mechanisms.") (license license:isc))) +(define-public python-check-manifest + (package + (name "python-check-manifest") + (version "0.37") + (source + (origin + (method url-fetch) + (uri (pypi-uri "check-manifest" version)) + (sha256 + (base32 + "0lk45ifdv2cpkl6ayfyix7jwmnxa1rha7xvb0ih5999k115wzqs4")))) + (build-system python-build-system) + (native-inputs + `(("python-mock" ,python-mock) + ("git" ,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 +sending package files to the Python Package Index. This package checks that +file to ensure it completely and accurately describes your project.") + (license license:expat))) + +(define-public python-android-stringslib + (package + (name "python-android-stringslib") + (version "0.1.2") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://framagit.org/tyreunom/python-android-strings-lib") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0gij55qzzq1h83kfpvhai1vf78kkhyvxa6l17m2nl24454lhfin4")))) + (build-system python-build-system) + (arguments + `(#:tests? #f)) + (home-page "https://framagit.org/tyreunom/python-android-strings-lib") + (synopsis "Android strings.xml support") + (description "Android Strings Lib provides support for android's strings.xml +files. These files are used to translate strings in android apps.") + (license license:expat))) + +(define-public python-watchdog + (package + (name "python-watchdog") + (version "0.9.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "watchdog" version)) + (sha256 + (base32 + "07cnvvlpif7a6cg4rav39zq8fxa5pfqawchr46433pij0y6napwn")))) + (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-before 'check 'remove-failing + (lambda _ + (delete-file "tests/test_inotify_buffer.py") + (delete-file "tests/test_snapshot_diff.py") + #t))))) + (propagated-inputs + `(("python-argh" ,python-argh) + ("python-pathtools" ,python-pathtools) + ("python-pyyaml" ,python-pyyaml))) + (native-inputs + `(("python-pytest-cov" ,python-pytest-cov) + ("python-pytest-timeout" ,python-pytest-timeout))) + (home-page "https://github.com/gorakhargosh/watchdog") + (synopsis "Filesystem events monitoring") + (description "This package provides a way to monitor filesystem events +such as a file modification and trigger an action. This is similar to inotify, +but portable.") + (license license:asl2.0))) + +(define-public python-wget + (package + (name "python-wget") + (version "3.2") + (source + (origin + (method url-fetch) + (uri (pypi-uri "wget" version ".zip")) + (sha256 + (base32 + "0qb0y7ipby42m4m7h0ipazpdyc3bn9xi46lvifcwwl5albn31rim")))) + (build-system python-build-system) + (native-inputs `(("unzip" ,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 +with features similar to the @command{wget} utility.") + (license license:unlicense))) + +(define-public offlate + (package + (name "offlate") + (version "0.5") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://framagit.org/tyreunom/offlate") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "13pqnbl05wcyldfvl75fp89vjgwsvxyc69vhnb17kkha2rc2k1h7")))) + (build-system python-build-system) + (arguments + ;; 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))) + (native-inputs + `(("qttools" ,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 +file formats, as well as many different online translation platforms. You can +use it to get work from online platforms, specialized such as the Translation +Project, or not such a gitlab instance when your upstream doesn't use any +dedicated platform. The tool proposes a unified interface for any format and +an upload option to send your work back to the platform.") + (license license:gpl3+))) + +(define-public python-titlecase + (package + (name "python-titlecase") + (version "0.12.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "titlecase" version)) + (sha256 + (base32 + "0486i99wf8ssa7sgn81fn6fv6i4rhhq6n751bc740b3hzfbpmpl4")))) + (build-system python-build-system) + (native-inputs + `(("python-nose" ,python-nose))) + (home-page "https://github.com/ppannuto/python-titlecase") + (synopsis "Capitalize strings similar to book titles") + (description + "Python-Titlecase is a Python port of John Gruber's titlecase.pl. +It capitalizes (predominantly English) strings in a way that is similar to +book titles, using the New York Times Manual of Style to leave certain words +lowercase.") + (license license:expat))) + +(define-public python-pypng + (package + (name "python-pypng") + (version "0.0.20") + (source + (origin + (method url-fetch) + (uri (pypi-uri "pypng" version)) + (sha256 + (base32 "02qpa22ls41vwsrzw9r9qhj1nhq05p03hb5473pay6y980s86chh")))) + (build-system python-build-system) + (home-page "https://github.com/drj11/pypng") + (synopsis "Pure Python PNG image encoder/decoder") + (description + "The PyPNG module implements support for PNG images. It reads and writes +PNG files with all allowable bit depths (1/2/4/8/16/24/32/48/64 bits per +pixel) and colour combinations: greyscale (1/2/4/8/16 bit); RGB, RGBA, +LA (greyscale with alpha) with 8/16 bits per channel; colour mapped +images (1/2/4/8 bit). Adam7 interlacing is supported for reading and writing. +A number of optional chunks can be specified (when writing) and +understood (when reading): tRNS, bKGD, gAMA. + +PyPNG is not a high level toolkit for image processing (like PIL) and does not +aim at being a replacement or competitor. Its strength lies in fine-grained +extensive support of PNG features. It can also read and write Netpbm PAM +files, with a focus on its use as an intermediate format for implementing +custom PNG processing.") + (license license:expat))) + +(define-public python-fuzzywuzzy + (package + (name "python-fuzzywuzzy") + (version "0.18.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "fuzzywuzzy" version)) + (sha256 + (base32 + "1s00zn75y2dkxgnbw8kl8dw4p1mc77cv78fwfa4yb0274s96w0a5")))) + (build-system python-build-system) + (native-inputs + `(("python-hypothesis" ,python-hypothesis) + ("python-pycodestyle" ,python-pycodestyle) + ("python-pytest" ,python-pytest))) + (propagated-inputs + `(("python-levenshtein" ,python-levenshtein))) + (home-page "https://github.com/seatgeek/fuzzywuzzy") + (synopsis "Fuzzy string matching in Python") + (description "Approximate string matching using +@emph{Levenshtein Distance} to calculate the differences between +sequences.") + (license license:gpl2))) + +(define-public python2-fuzzywuzzy + (package-with-python2 python-fuzzywuzzy)) + +(define-public python-block-tracing + (package + (name "python-block-tracing") + (version "1.0.1") + (source + (origin + (method url-fetch) + (uri (pypi-uri "block_tracing" version)) + (sha256 + (base32 + "0s2y729qr5rs7n506qfh8cssk8m2bi6k2y5vbrh2z3raf2d01alz")))) + (build-system python-build-system) + (arguments '(#:tests? #f)) ; no tests + (home-page "https://github.com/rianhunter/block_tracing") + (synopsis "Protect process memory") + (description + "@code{block_tracing} is a tiny Python library that can be used to +prevent debuggers and other applications from inspecting the memory within +your process.") + (license license:expat))) + +(define-public python-gcovr + (package + (name "python-gcovr") + (version "4.2") + (source + (origin + (method url-fetch) + (uri (pypi-uri "gcovr" version)) + (sha256 + (base32 + "0gyady7x3v3l9fm1zan0idaggqqcm31y7g5vxk7h05p5h7f39bjs")))) + (build-system python-build-system) + (propagated-inputs + `(("python-lxml" ,python-lxml) + ("python-jinja2" ,python-jinja2))) + (home-page "https://gcovr.com/") + (synopsis "Utility for generating code coverage results") + (description + "Gcovr provides a utility for managing the use of the GNU gcov +utility and generating summarized code coverage results. It is inspired +by the Python coverage.py package, which provides a similar utility for +Python.") + (license license:bsd-3))) + +(define-public python-owslib + (package + (name "python-owslib") + (version "0.19.2") + (source + (origin + (method url-fetch) + (uri (pypi-uri "OWSLib" version)) + (sha256 + (base32 "0v8vg0naa9rywvd31cpq65ljbdclpsrx09788v4xj7lg10np8nk0")))) + (build-system python-build-system) + (arguments + '(#:tests? #f)) ; TODO: package dependencies required for tests. + (synopsis "Interface for Open Geospatial Consortium web service") + (description + "OWSLib is a Python package for client programming with Open Geospatial +Consortium (OGC) web service (hence OWS) interface standards, and their related +content models.") + (home-page "https://geopython.github.io/OWSLib/") + (license license:bsd-3))) + +(define-public python-docusign-esign + (package + (name "python-docusign-esign") + (version "3.1.0") + (source (origin + (method url-fetch) + (uri (pypi-uri "docusign_esign" version)) + (sha256 + (base32 + "01f3h03vc97syjlmqyl7xa5j90pzgmwpspc5a0gra9saynnbkx37")))) + (build-system python-build-system) + ;; 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))) + (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.") + (home-page "https://www.docusign.com/devcenter") + (license license:expat))) + +(define-public python-xattr + (package + (name "python-xattr") + (version "0.9.7") + (source + (origin + (method url-fetch) + (uri (pypi-uri "xattr" version)) + (sha256 + (base32 + "0i4xyiqbhjz2g16zbim17zjdbjkw79xsw8k59942vvq4is1cmfxh")))) + (build-system python-build-system) + (propagated-inputs + `(("python-cffi" ,python-cffi))) + (home-page "https://github.com/xattr/xattr") + (synopsis + "Python wrapper for extended filesystem attributes") + (description "This package provides a Python wrapper for using extended +filesystem attributes. Extended attributes extend the basic attributes of files +and directories in the file system. They are stored as name:data pairs +associated with file system objects (files, directories, symlinks, etc).") + (license license:expat))) + +(define-public python-json-logger + (package + (name "python-json-logger") + (version "0.1.11") + (source + (origin + (method url-fetch) + (uri (pypi-uri "python-json-logger" version)) + (sha256 + (base32 + "10g2ya6nsvn5vxzvq2wb8q4d43i3d7756i5rxyjna6d0y9i138xp")))) + (build-system python-build-system) + (home-page + "https://github.com/madzak/python-json-logger") + (synopsis "JSON log formatter in Python") + (description "This library allows standard Python logging to output log data +as JSON objects. With JSON we can make our logs more readable by machines and +we can stop writing custom parsers for syslog-type records.") + (license license:bsd-3))) + +(define-public python-daiquiri + (package + (name "python-daiquiri") + (version "2.1.1") + (source + (origin + (method url-fetch) + (uri (pypi-uri "daiquiri" version)) + (sha256 + (base32 + "1qmank3c217ddiig3xr8ps0mqaydcp0q5a62in9a9g4zf72zjnqd")))) + (build-system python-build-system) + (propagated-inputs + `(("python-json-logger" ,python-json-logger))) + (native-inputs + `(("python-mock" ,python-mock) + ("python-pytest" ,python-pytest) + ("python-setuptools-scm" ,python-setuptools-scm) + ("python-six" ,python-six))) + (home-page "https://github.com/jd/daiquiri") + (synopsis + "Library to configure Python logging easily") + (description "The daiquiri library provides an easy way to configure +logging in Python. It also provides some custom formatters and handlers.") + (license license:asl2.0))) + +(define-public python-pifpaf + (package + (name "python-pifpaf") + (version "2.5.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "pifpaf" version)) + (sha256 + (base32 + "1gy9p4nqf70fh38wn4icyfm7i9wrvx22wnjpg71g89wxbz27igaa")))) + (build-system python-build-system) + (arguments + '(#: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) + ("python-fixtures" ,python-fixtures) + ("python-jinja2" ,python-jinja2) + ("python-pbr" ,python-pbr) + ("python-psutil" ,python-psutil) + ("python-six" ,python-six) + ("python-xattr" ,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))) + (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 +starts and stops daemons for a quick throw-away usage. This is typically +useful when needing these daemons to run integration testing. It originally +evolved from its precursor @code{overtest}.") + (license license:asl2.0))) + +(define-public python-pytest-check-links + (package + (name "python-pytest-check-links") + (version "0.3.0") + (source + (origin + (method url-fetch) + ;; URI uses underscores + (uri (pypi-uri "pytest_check_links" version)) + (sha256 + (base32 + "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))) + (native-inputs + `(("python-pbr-minimal" ,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 +HTML-containing files.") + (license license:bsd-3))) + +(define-public python-json5 + (package + (name "python-json5") + (version "0.8.5") + (source + (origin + ;; sample.json5 is missing from PyPi source tarball + (method git-fetch) + (uri (git-reference + (url "https://github.com/dpranke/pyjson5") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0nyngj18jlkgvm1177lc3cj47wm4yh3dqigygvcvw7xkyryafsqn")))) + (build-system python-build-system) + (home-page "https://github.com/dpranke/pyjson5") + (synopsis + "Python implementation of the JSON5 data format") + (description + "JSON5 extends the JSON data interchange format to make it slightly more +usable as a configuration language. This Python package implements parsing and +dumping of JSON5 data structures.") + (license license:asl2.0))) + +(define-public python-frozendict + (package + (name "python-frozendict") + (version "1.2") + (source + (origin + (method url-fetch) + (uri (pypi-uri "frozendict" version)) + (sha256 + (base32 "0ibf1wipidz57giy53dh7mh68f2hz38x8f4wdq88mvxj5pr7jhbp")))) + (build-system python-build-system) + (home-page "https://github.com/slezica/python-frozendict") + (synopsis "Simple immutable mapping for Python") + (description + "@dfn{frozendict} is an immutable wrapper around dictionaries that +implements the complete mapping interface. It can be used as a drop-in +replacement for dictionaries where immutability is desired.") + (license license:expat))) + +(define-public python-unpaddedbase64 + (package + (name "python-unpaddedbase64") + (version "1.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)) + (sha256 + (base32 + "0if3fjfxga0bwdq47v77fs9hrcqpmwdxry2i2a7pdqsp95258nxd")))) + (build-system python-build-system) + (home-page "https://pypi.org/project/unpaddedbase64/") + (synopsis "Encode and decode Base64 without “=” padding") + (description + "RFC 4648 specifies that Base64 should be padded to a multiple of 4 bytes +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") @@ -343,3 +1379,833 @@ also be useable with other GSSAPI mechanisms.") @item Can encode frozendict immutable dictionaries. @end itemize") (license license:asl2.0))) + +(define-public python-signedjson + (package + (name "python-signedjson") + (version "1.1.1") + (source + (origin + (method url-fetch) + (uri (pypi-uri "signedjson" version)) + (sha256 + (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))) + (native-inputs + `(("python-setuptools-scm" ,python-setuptools-scm))) + (home-page "https://github.com/matrix-org/python-signedjson") + (synopsis "Sign JSON objects with ED25519 signatures") + (description + "Sign JSON objects with ED25519 signatures. + +@itemize +@item More than one entity can sign the same object. +@item Each entity can sign the object with more than one key making it easier to +rotate keys +@item ED25519 can be replaced with a different algorithm. +@item Unprotected data can be added to the object under the @dfn{\"unsigned\"} +key. +@end itemize") + (license license:asl2.0))) + +(define-public python-daemonize + (package + (name "python-daemonize") + (version "2.5.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "daemonize" version)) + (sha256 + (base32 "1hwbl3gf9fdds9sc14zgjyjisjvxidrvqc11xlbb0b6jz17nw0nx")))) + (build-system python-build-system) + (home-page "https://github.com/thesharp/daemonize") + (synopsis "Library for writing system daemons in Python") + (description "Daemonize is a library for writing system daemons in Python.") + (license license:expat))) + +(define-public python-pymacaroons + (package + (name "python-pymacaroons") + (version "0.13.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "pymacaroons" version)) + (sha256 + (base32 "1f0357a6g1h96sk6wy030xmc1p4rd80a999qvxd28v7nlm1blsqy")))) + (build-system python-build-system) + (propagated-inputs + `(("python-six" ,python-six) + ("python-pynacl" ,python-pynacl))) + (home-page "https://github.com/ecordell/pymacaroons") + (synopsis "Python Macaroon Library") + (description + "Macaroons, like cookies, are a form of bearer credential. Unlike opaque +tokens, macaroons embed caveats that define specific authorization +requirements for the target service, the service that issued the root macaroon +and which is capable of verifying the integrity of macaroons it receives. + +Macaroons allow for delegation and attenuation of authorization. They are +simple and fast to verify, and decouple authorization policy from the +enforcement of that policy.") + (license license:expat))) + +(define-public python-ldap3 + (package + (name "python-ldap3") + (version "2.7") + (home-page "https://github.com/cannatag/ldap3") + (source + (origin + (method git-fetch) + (uri (git-reference (url home-page) + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0xw9fkqld21xsvdpaqir8ccc2l805xnn9gxahsnl70xzp3mwl0xv")))) + (build-system python-build-system) + (arguments + '(#:tests? #f ;TODO: Tests need a real LDAP server to run + #:phases (modify-phases %standard-phases + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "nosetests" "-s" "test")) + #t))))) + (native-inputs + `(("python-nose" ,python-nose))) + (propagated-inputs + `(("python-gssapi" ,python-gssapi) + ("python-pyasn1" ,python-pyasn1))) + (synopsis "Python LDAP client") + (description + "LDAP3 is a strictly RFC 4510 conforming LDAP V3 pure Python client +library.") + (license license:lgpl3+))) + +(define-public python-boltons + (package + (name "python-boltons") + (version "20.0.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "boltons" version)) + (sha256 + (base32 + "0lrr40qqj3ch8xarvyzbnbjs79pz5aywklllq53l347h1b8xnkg4")))) + (build-system python-build-system) + (home-page "https://github.com/mahmoud/boltons") + (synopsis "Extensions to the Python standard library") + (description + "Boltons is a set of over 230 pure-Python utilities in the same spirit +as — and yet conspicuously missing from — the standard library, including: + +@itemize +@item Atomic file saving, bolted on with fileutils +@item A highly-optimized OrderedMultiDict, in dictutils +@item Two types of PriorityQueue, in queueutils +@item Chunked and windowed iteration, in iterutils +@item Recursive data structure iteration and merging, with iterutils.remap +@item Exponential backoff functionality, including jitter, through +iterutils.backoff +@item A full-featured TracebackInfo type, for representing stack traces, in +tbutils +@end itemize") + (license license:bsd-3))) + +(define-public python-eliot + (package + (name "python-eliot") + (version "1.12.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "eliot" version)) + (sha256 + (base32 "0wabv7hk63l12881f4zw02mmj06583qsx2im0yywdjlj8f56vqdn")))) + (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'remove-journald-support + (lambda _ + (for-each delete-file + '("eliot/tests/test_journald.py" + "eliot/journald.py")) + #t)) + (add-after 'remove-journald-support 'remove-eliot-prettyprint-tests + ;; remove command-line tool's tests. TODO eliot-prettyprint should + ;; be installed and these tests should pass. + (lambda _ + (delete-file "eliot/tests/test_prettyprint.py") + #t))))) + (propagated-inputs + `(("python-boltons" ,python-boltons) + ("python-pyrsistent" ,python-pyrsistent) + ("python-six" ,python-six) + ("python-zope-interface" ,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))) + (home-page "https://github.com/itamarst/eliot/") + (synopsis "Eliot: the logging system that tells you why it happened") + (description + "@dfn{eliot} is a Python logging system that outputs causal chains of +actions: actions can spawn other actions, and eventually they either succeed +or fail. The resulting logs tell you the story of what your software did: what +happened, and what caused it.") + (license license:asl2.0))) + +(define-public python-pem + (package + (name "python-pem") + (version "20.1.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "pem" version)) + (sha256 + (base32 + "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))) + (home-page "https://pem.readthedocs.io/") + (synopsis "Easy PEM file parsing in Python") + (description + "This package provides a Python module for parsing and splitting PEM files.") + (license license:expat))) + +(define-public python-txsni + ;; We need a few commits on top of 0.1.9 for compatibility with newer + ;; Python and OpenSSL. + (let ((commit "5014c141a7acef63e20fcf6c36fa07f0cd754ce1") + (revision "0")) + (package + (name "python-txsni") + (version (git-version "0.1.9" revision commit)) + (home-page "https://github.com/glyph/txsni") + (source + (origin + (method git-fetch) + (uri (git-reference (url home-page) (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0imfxx4yjj1lbq0n5ad45al3wvv4qv96sivnc1r51i66mxi658z8")))) + (build-system python-build-system) + (propagated-inputs + `(("python-pyopenssl" ,python-pyopenssl) + ("python-service-identity" ,python-service-identity) + ("python-twisted" ,python-twisted))) + (synopsis "Run TLS servers with Twisted") + (description + "This package provides an easy-to-use SNI endpoint for use +with the Twisted web framework.") + (license license:expat)))) + +(define-public python-txacme + (package + (name "python-txacme") + (version "0.9.2") + (source + (origin + (method url-fetch) + (uri (pypi-uri "txacme" version)) + (sha256 + (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))) + (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))) + (home-page "https://github.com/twisted/txacme") + (synopsis "Twisted implexmentation of the ACME protocol") + (description + "ACME is Automatic Certificate Management Environment, a protocol that +allows clients and certificate authorities to automate verification and +certificate issuance. The ACME protocol is used by the free Let's Encrypt +Certificate Authority. + +txacme is an implementation of the protocol for Twisted, the event-driven +networking engine for Python.") + (license license:expat))) + +(define-public python-pysaml2 + (package + (name "python-pysaml2") + (version "5.0.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "pysaml2" version)) + (sha256 + (base32 + "1h8cmxh9cvxhrdfmkh92wg6zpxmhi2fixq1cy4hxismmaar7bsny")))) + (build-system python-build-system) + (propagated-inputs + `(("python-cryptography" ,python-cryptography) + ("python-dateutil" ,python-dateutil) + ("python-defusedxml" ,python-defusedxml) + ("python-pyopenssl" ,python-pyopenssl) + ("python-pytz" ,python-pytz) + ("python-requests" ,python-requests) + ("python-six" ,python-six))) + (home-page "https://idpy.org") + (synopsis "Python implementation of SAML Version 2 Standard") + (description + "PySAML2 is a pure python implementation of SAML Version 2 Standard. +It contains all necessary pieces for building a SAML2 service provider or +an identity provider. The distribution contains examples of both. + +This package was originally written to work in a WSGI environment, but +there are extensions that allow you to use it with other frameworks.") + (license license:asl2.0))) + +(define-public python-click-plugins + (package + (name "python-click-plugins") + (version "1.1.1") + (source + (origin + (method url-fetch) + (uri (pypi-uri "click-plugins" version)) + (sha256 + (base32 "0jr6bxj67vg988vkm6nz8jj98v9lg46bn49lkhak3n598jbrkas6")))) + (build-system python-build-system) + (native-inputs + `(("python-pytest" ,python-pytest))) + (propagated-inputs + `(("python-click" ,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.") + (home-page "https://github.com/click-contrib/click-plugins") + (license license:bsd-3))) + +(define-public python-diceware + (package + (name "python-diceware") + (version "0.9.6") + (source + (origin + (method url-fetch) + (uri (pypi-uri "diceware" version)) + (sha256 + (base32 + "0klb0ysybzlh2wihvir82hgq62v0jjmlcqklwajyms7c0p529yby")))) + (build-system python-build-system) + (native-inputs + `(("python-coverage" ,python-coverage) + ("python-pytest" ,python-pytest) + ("python-pytest-runner" ,python-pytest-runner))) + (home-page "https://github.com/ulif/diceware/") + (synopsis "Generates memorable passphrases") + (description "This package generates passphrases by concatenating words +randomly picked from wordlists. It supports several sources of +randomness (including real life dice) and different wordlists (including +cryptographically signed ones).") + (license license:gpl3+))) + +(define-public pyzo + (package + (name "pyzo") + (version "4.10.2") + (source + (origin + (method url-fetch) + (uri (pypi-uri "pyzo" version)) + (sha256 + (base32 "1zplxcb78qy8qibifmnsx5i9gnlfmw9n6nr4yflsabpxw57mx4m1")))) + (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-before 'check 'fix-home-directory + (lambda _ + ;; Tests fail with "Permission denied: '/homeless-shelter'". + (setenv "HOME" "/tmp") + #t))) + ;; Tests fail with "Uncaught Python exception: invalid literal for + ;; int() with base 10: 'test'". + #:tests? #f)) + (propagated-inputs + `(("python-pyqt" ,python-pyqt))) + (home-page "https://pyzo.org") + (synopsis + "Python IDE for scientific computing") + (description + "Pyzo is a Python IDE focused on interactivity and introspection, +which makes it very suitable for scientific computing. Its practical +design is aimed at simplicity and efficiency. + +It consists of two main components, the editor and the shell, and uses +a set of pluggable tools to help the programmer in various ways. Some +example tools are source structure, project manager, interactive help, +workspace...") + (license license:bsd-2))) + +(define-public python-osc + (package + (name "python-osc") + (version "1.7.4") + (source + (origin + (method url-fetch) + (uri (pypi-uri "python-osc" version)) + (sha256 + (base32 + "0cnh0z5lnng7fh48nmfaqqn8j25k13gkd4rhxd3m6sjqiix9s3vn")))) + (build-system python-build-system) + (home-page "https://github.com/attwad/python-osc") + (synopsis "Open Sound Control server and client implementations") + (description + "@code{python-osc} is a pure Python library with no external +dependencies. It implements the @uref{http://opensoundcontrol.org/spec-1_0, +Open Sound Control 1.0} specification.") + (license license:unlicense))) + +(define-public python-voluptuous + (package + (name "python-voluptuous") + (version "0.11.7") + (source + (origin + (method url-fetch) + (uri (pypi-uri "voluptuous" version)) + (sha256 + (base32 + "0mplkcpb5d8wjf8vk195fys4y6a3wbibiyf708imw33lphfk9g1a")))) + (build-system python-build-system) + (native-inputs + `(("python-nose" ,python-nose))) + (home-page "https://github.com/alecthomas/voluptuous") + (synopsis "Python data validation library") + (description + "Voluptuous is a Python data validation library. It is primarily +intended for validating data coming into Python as JSON, YAML, etc.") + (license license:bsd-3))) + +(define-public python-cmd2 + (package + (name "python-cmd2") + (version "1.0.2") + (source + (origin + (method url-fetch) + (uri (pypi-uri "cmd2" version)) + (sha256 + (base32 + "1f18plbc9yyvhn0js3d2bii9yld8zfl775gxsaw9jza5pmlg9ss2")))) + (build-system python-build-system) + (propagated-inputs + `(("python-attrs" ,python-attrs) + ("python-colorama" ,python-colorama) + ("python-pyperclip" ,python-pyperclip) + ("python-wcwidth" ,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))) + (home-page "https://github.com/python-cmd2/cmd2") + (synopsis "Tool for building interactive command line applications") + (description + "Cmd2 is a tool for building interactive command line applications in +Python. Its goal is to make it quick and easy for developers to build +feature-rich and user-friendly interactive command line applications. It +provides a simple API which is an extension of Python's built-in @code{cmd} +module. @code{cmd2} provides a wealth of features on top of @code{cmd} to +make your life easier and eliminates much of the boilerplate code which would +be necessary when using @code{cmd}.") + (license license:expat))) + +(define-public python-pytidylib + (package + (name "python-pytidylib") + (version "0.3.2") + (source (origin + (method url-fetch) + (uri (pypi-uri "pytidylib" version)) + (sha256 + (base32 + "1wqa9dv5d7swka14rnky862hc7dgk2g3dhlrz57hdn3hb7bwic92")))) + (build-system python-build-system) + (arguments + '(#:phases + (modify-phases %standard-phases + (add-before 'build 'qualify-libtidy + (lambda* (#:key inputs #:allow-other-keys) + (let ((libtidy (string-append (assoc-ref inputs "tidy") + "/lib/libtidy.so"))) + (substitute* "tidylib/tidy.py" + (("ctypes\\.util\\.find_library\\('tidy'\\)") + (format #f "'~a'" libtidy))) + #t)))))) + (inputs `(("tidy" ,tidy))) + (home-page "https://github.com/countergram/pytidylib") + (synopsis "Python wrapper for HTML Tidy library") + (description + "PyTidyLib is a Python package that wraps the HTML Tidy library. This +allows you, from Python code, to “fix” invalid (X)HTML markup.") + (license license:expat))) + +(define-public python2-pytidylib + (package-with-python2 python-pytidylib)) + +(define-public python-mujson + (package + (name "python-mujson") + (version "1.4") + (source + (origin + (method url-fetch) + (uri (pypi-uri "mujson" version)) + (sha256 + (base32 + "0wbj6r8yzsdx2b0kbldlkznr1a9nn33za2q9x3g0hbg420dwzn97")))) + (build-system python-build-system) + (home-page "https://github.com/mattgiles/mujson") + (synopsis "Use the fastest JSON functions available at import time") + (description "This packages selects the fastest JSON functions available +at import time.") + (license license:expat))) + +(define-public python-bashlex + (package + (name "python-bashlex") + (version "0.14") + (source + (origin + (method url-fetch) + (uri (pypi-uri "bashlex" version)) + (sha256 + (base32 + "1z9g96fgsfpdwawp4sb5x6hbdhmda7kgmcrqlf9xx4bs1f8f14js")))) + (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-before 'build 'pregenerate-yacc-tables + (lambda _ + ;; parser.py caches tables, which attempts to write to site lib + ;; see https://github.com/idank/bashlex/issues/51 + (invoke "python" "-c" "import bashlex")))))) + (home-page + "https://github.com/idank/bashlex") + (synopsis "Python parser for bash") + (description "@code{bashlex} is a Python port of the parser used +internally by GNU bash. + +For the most part it's transliterated from C, the major differences are: + +@itemize +@item it does not execute anything +@item it is reentrant +@item it generates a complete AST +@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)))