;;; Copyright © 2020 Collin J. Doering ;;; ;;; This file is part of the GNU Guix channel rekahsoft-guix ;;; ;;; The rekahsoft-guix channel for GNU Guix is free software; you can ;;; redistribute it and/or modify it under the terms of the GNU General Public ;;; License as published by the Free Software Foundation; either version 3 of ;;; the License, or (at your option) any later version. ;;; ;;; The rekahsoft-guix channel for GNU Guix is distributed in the hope that it ;;; will be useful, but WITHOUT ANY WARRANTY; without even the implied ;;; warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;;; GNU General Public License for more details. ;;; ;;; You should have received a copy of the GNU General Public License along ;;; with the rekahsoft-guix channel for GNU Guix. If not, see ;;; . (define-module (gnu packages python-xyz) #:use-module ((guix licenses) #:prefix license:) #:use-module (gnu packages) #: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 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 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 (name "python-virtualenv-clone") (version "0.5.4") (source (origin (method url-fetch) (uri (pypi-uri "virtualenv-clone" version)) (sha256 (base32 "0absh96fsxk9di7ir76f5djyfm2c214wnyk53avrhjy8akflhpk6")))) (build-system python-build-system) (native-inputs `(("python-pytest" ,python-pytest) ("python-tox" ,python-tox))) (home-page "https://github.com/edwardgeorge/virtualenv-clone") (synopsis "script to clone virtualenvs.") (description "script to clone virtualenvs.") (license license:expat))) (define-public python-arpeggio (package (name "python-arpeggio") (version "1.9.2") (source (origin (method url-fetch) (uri (pypi-uri "Arpeggio" version)) (sha256 (base32 "0aq2pmhfyq7vhbhyq8jgxiphncy1s79rmrsggz4p52m4cdhy134l")))) (build-system python-build-system) (home-page "https://github.com/textX/Arpeggio") (synopsis "Packrat parser interpreter") (description "Packrat parser interpreter") (license license:expat))) (define-public python-ordereddict (package (name "python-ordereddict") (version "1.1") (source (origin (method url-fetch) (uri (pypi-uri "ordereddict" version)) (sha256 (base32 "07qvy11nvgxpzarrni3wrww3vpc9yafgi2bch4j2vvvc42nb8d8w")))) (build-system python-build-system) (home-page "UNKNOWN") (synopsis "A drop-in substitute for Py2.7's new collections.OrderedDict that works in Python 2.4-2.6.") (description "A drop-in substitute for Py2.7's new collections.OrderedDict that works in Python 2.4-2.6.") (license license:expat))) (define-public python-parver (package (name "python-parver") (version "0.3.0") (source (origin (method url-fetch) (uri (pypi-uri "parver" version)) (sha256 (base32 "0a6jp17c1ag6b9yp5xgy9wvznk3g0v2f8gpwkcwxpyc9ygk98zdm")))) (build-system python-build-system) (native-inputs `(("python-six" ,python-six) ("python-attrs" ,python-attrs) ("python-arpeggio" ,python-arpeggio) ("python-pytest" ,python-pytest) ("python-hypothesis" ,python-hypothesis) ("python-pretend" ,python-pretend))) (home-page "https://github.com/RazerM/parver") (synopsis "Parse and manipulate version numbers") (description "Parse and manipulate version numbers.") (license license:expat))) (define-public python-pipenv (package (name "python-pipenv") (version "2018.11.26") (source (origin (method url-fetch) (uri (pypi-uri "pipenv" version)) (sha256 (base32 "0ip8zsrwmhrankrix0shig9g8q2knmr7b63sh7lqa8a5x03fcwx6")))) (build-system python-build-system) (native-inputs `(("python-pytest" ,python-pytest) ("python-arpeggio" ,python-arpeggio))) (propagated-inputs `(("python-certifi" ,python-certifi) ("python-invoke" ,python-invoke) ("python-parver" ,python-parver) ("python-ordereddict" ,python-ordereddict) ("python-requests" ,python-requests) ("python-virtualenv" ,python-virtualenv) ("python-virtualenv-clone" ,python-virtualenv-clone))) (arguments ;; FIXME: Tests currently fail due to an issue with python-typing and the ;; built in typing in pythong 3.7 '(#:tests? #f)) (home-page "https://github.com/pypa/pipenv") (synopsis "Python Development Workflow for Humans") (description "Python Development Workflow for Humans.") (license license:expat))) (define-public python-dbusmock (package (name "python-dbusmock") (version "0.19") (source (origin (method url-fetch) (uri (pypi-uri "python-dbusmock" version)) (sha256 (base32 "1hl6zk3blc561csjp5sfpbglpbwr9qp65f9k4smdxmgwsbp30zs9")))) (build-system python-build-system) (arguments '(#:phases (modify-phases %standard-phases (add-after 'unpack 'patch-shell-path (lambda _ (substitute* "tests/test_code.py" (("/bin/bash") (which "bash"))) #t))))) (native-inputs `(;; For tests. ("dbus" ,dbus) ; for dbus-daemon ("python-nose" ,python-nose) ("which" ,which))) (propagated-inputs `(("python-dbus" ,python-dbus) ("python-pygobject" ,python-pygobject))) (home-page "https://github.com/martinpitt/python-dbusmock") (synopsis "Python library for mock D-Bus objects") (description "python-dbusmock allows for the easy creation of mock objects on D-Bus. This is useful for writing tests for software which talks to D-Bus services such as upower, systemd, logind, gnome-session or others, and it is hard (or impossible without root privileges) to set the state of the real services to what you expect in your tests.") (license license:lgpl3+))) (define-public python-ujson (package (name "python-ujson") (version "2.0.3") (source (origin (method url-fetch) (uri (pypi-uri "ujson" version)) (sha256 (base32 "18z9gb9ggy1r464b9q1gqs078mqgrkj6dys5a47529rqk3yfybdx")) (modules '((guix build utils))) (snippet '(begin (delete-file-recursively "deps") #t)))) (build-system python-build-system) (arguments `(#:phases (modify-phases %standard-phases (add-after 'unpack 'link-to-system-double-conversion (lambda* (#:key inputs #:allow-other-keys) (let ((d-c (assoc-ref inputs "double-conversion"))) (substitute* "setup.py" (("./deps/double-conversion/double-conversion\"") (string-append d-c "/include/double-conversion\"")) (("-lstdc++" stdc) (string-append "-L" d-c "/lib\"," " \"-ldouble-conversion\"," " \"" stdc))) #t))) (replace 'check (lambda* (#:key inputs outputs #:allow-other-keys) (add-installed-pythonpath inputs outputs) (invoke "pytest")))))) (native-inputs `(("double-conversion" ,double-conversion) ("python-setuptools-scm" ,python-setuptools-scm) ("python-pytest" ,python-pytest))) (home-page "https://github.com/ultrajson/ultrajson") (synopsis "Ultra fast JSON encoder and decoder for Python") (description "UltraJSON is an ultra fast JSON encoder and decoder written in pure C with bindings for Python 3.") (license license:bsd-3))) (define-public python-ujson-1 (package (inherit python-ujson) (version "1.35") (source (origin (method url-fetch) (uri (pypi-uri "ujson" version)) (sha256 (base32 "11jz5wi7mbgqcsz52iqhpyykiaasila4lq8cmc2d54bfa3jp6q7n")))) (arguments '(#:phases %standard-phases)) (native-inputs '()) (home-page "http://www.esn.me") (description "UltraJSON is an ultra fast JSON encoder and decoder written in pure C with 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") (version "2.1.0") (source (origin (method url-fetch) (uri (pypi-uri "flit" version)) (sha256 (base32 "0h5vvmqinqzn97mr3ix7zx53af9ad4fimjjwqpx88yp8qhz4r5bc")))) (build-system python-build-system) (arguments `(#:tests? #f)) ; XXX: Check requires network access. (home-page "https://flit.readthedocs.io/") (synopsis "Simple packaging tool for simple packages") (description "Flit is a simple way to put Python packages and modules on PyPI. Flit packages a single importable module or package at a time, using the import 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") (version "1.6.5") (source (origin (method url-fetch) (uri (pypi-uri "gssapi" version)) (sha256 (base32 "02i5s7998dg5kcr4m0xwamd8vjqk1816xbzldyp68l91f6bynwcr")))) (build-system python-build-system) (propagated-inputs `(("python-decorator" ,python-decorator) ("python-six" ,python-six))) (inputs `(("mit-krb5" ,mit-krb5))) ;; for tests (native-inputs `(("python-shouldbe" ,python-shouldbe) ("python-parameterized" ,python-parameterized) ("python-k5test" ,python-k5test) ("python-nose" ,python-nose))) (home-page "https://github.com/pythongssapi/python-gssapi") (synopsis "Python GSSAPI Wrapper") (description "Python-GSSAPI provides both low-level and high level wrappers around the 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") (version "1.1.4") (source (origin (method url-fetch) (uri (pypi-uri "canonicaljson" version)) (sha256 (base32 "09cpacc8yvcc74i63pdmlfaahh77dnvbyw9zf29wml2zzwqfbg25")))) (build-system python-build-system) (propagated-inputs `(("python-six" ,python-six) ("python-frozendict" ,python-frozendict) ("python-simplejson" ,python-simplejson))) (home-page "https://github.com/matrix-org/python-canonicaljson") (synopsis "Canonical JSON") (description "Deterministically encode JSON. @itemize @item Encodes objects and arrays as RFC 7159 JSON. @item Sorts object keys so that you get the same result each time. @item Has no insignificant whitespace to make the output as small as possible. @item Escapes only the characters that must be escaped, U+0000 to U+0019 / U+0022 / U+0056, to keep the output as small as possible. @item Uses the shortest escape sequence for each escaped character. @item Encodes the JSON as UTF-8. @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)))