diff options
Diffstat (limited to 'gnu/packages/python-xyz.scm')
-rw-r--r-- | gnu/packages/python-xyz.scm | 1036 |
1 files changed, 946 insertions, 90 deletions
diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm index d63b71c14e..31cafd47d1 100644 --- a/gnu/packages/python-xyz.scm +++ b/gnu/packages/python-xyz.scm @@ -8,7 +8,7 @@ ;;; Copyright © 2015 Omar Radwan <toxemicsquire4@gmail.com> ;;; Copyright © 2015 Pierre-Antoine Rault <par@rigelk.eu> ;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020 Ricardo Wurmus <rekado@elephly.net> -;;; Copyright © 2015, 2016 Christopher Allan Webber <cwebber@dustycloud.org> +;;; Copyright © 2015, 2016, 2020 Christopher Allan Webber <cwebber@dustycloud.org> ;;; Copyright © 2015 Eric Dvorsak <eric@dvorsak.fr> ;;; Copyright © 2015, 2016 David Thompson <davet@gnu.org> ;;; Copyright © 2015, 2016, 2017, 2019 Leo Famulari <leo@famulari.name> @@ -39,7 +39,7 @@ ;;; Copyright © 2017 Ben Sturmfels <ben@sturm.com.au> ;;; Copyright © 2017, 2018, 2019 Mathieu Othacehe <m.othacehe@gmail.com> ;;; Copyright © 2017 José Miguel Sánchez García <jmi2k@openmailbox.org> -;;; Copyright © 2017 Roel Janssen <roel@gnu.org> +;;; Copyright © 2017, 2020 Roel Janssen <roel@gnu.org> ;;; Copyright © 2017, 2018, 2019 Kei Kebreau <kkebreau@posteo.net> ;;; Copyright © 2017 Rutger Helling <rhelling@mykolab.com> ;;; Copyright © 2017 Muriithi Frederick Muriuki <fredmanglis@gmail.com> @@ -63,7 +63,7 @@ ;;; Copyright © 2019, 2020 Alex Griffin <a@ajgrf.com> ;;; Copyright © 2019 Pierre Langlois <pierre.langlois@gmx.com> ;;; Copyright © 2019 Jacob MacDonald <jaccarmac@gmail.com> -;;; Copyright © 2019 Giacomo Leidi <goodoldpaul@autistici.org> +;;; Copyright © 2019, 2020 Giacomo Leidi <goodoldpaul@autistici.org> ;;; Copyright © 2019 Wiktor Żelazny <wzelazny@vurv.cz> ;;; Copyright © 2019, 2020 Tanguy Le Carrour <tanguy@bioneland.org> ;;; Copyright © 2019 Mădălin Ionel Patrașcu <madalinionel.patrascu@mdc-berlin.de> @@ -74,6 +74,8 @@ ;;; Copyright © 2020 Josh Marshall <joshua.r.marshall.1991@gmail.com> ;;; Copyright © 2020 Alexandros Theodotou <alex@zrythm.org> ;;; Copyright © 2020 Lars-Dominik Braun <ldb@leibniz-psychology.org> +;;; Copyright © 2020 Alex ter Weele <alex.ter.weele@gmail.com> +;;; Copyright © 2020 Matthew Kraai <kraai@ftbfs.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -638,6 +640,30 @@ certificate returned by the server to which a connection has been established, and verifies that it matches the intended target hostname.") (license license:psfl))) +(define-public python-bitarray + (package + (name "python-bitarray") + (version "1.2.1") + (source (origin + (method url-fetch) + (uri (pypi-uri "bitarray" version)) + (sha256 + (base32 + "1kxrlxfj9nrx512sfwifwl9z4v6ky3qschl0zmk3s3dvc3s7bmif")))) + (build-system python-build-system) + (home-page "https://github.com/ilanschnell/bitarray") + (synopsis "Efficient arrays of booleans") + (description "This package provides an object type which efficiently +represents an array of booleans. Bitarrays are sequence types and behave very +much like usual lists. Eight bits are represented by one byte in a contiguous +block of memory. The user can select between two representations: +little-endian and big-endian. All of the functionality is implemented in C. +Methods for accessing the machine representation are provided. This can be +useful when bit level access to binary files is required, such as portable +bitmap image files. Also, when dealing with compressed data which uses +variable bit length encoding, you may find this module useful.") + (license license:psfl))) + (define-public python-boolean.py (package (name "python-boolean.py") @@ -980,8 +1006,17 @@ to rebuild the original object tree. Because only safe literals are encoded, it is safe to send serpent data to other machines, such as over the network.") + (properties `((python2-variant . ,(delay python2-serpent)))) (license license:expat))) +(define-public python2-serpent + (let ((base (package-with-python2 (strip-python2-variant python-serpent)))) + (package + (inherit base) + (propagated-inputs + `(("python-enum34" ,python2-enum34) + ,@(package-propagated-inputs base)))))) + (define-public python-setuptools (package (name "python-setuptools") @@ -1107,6 +1142,207 @@ helpers.") (define-public python2-humanfriendly (package-with-python2 python-humanfriendly)) +(define-public python-textparser + (package + (name "python-textparser") + (version "0.23.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "textparser" version)) + (sha256 + (base32 + "0w5lyhrsvzs5a9q1l3sjgxgljrvd3ybf796w93kc39wayzvd02gh")))) + (build-system python-build-system) + (home-page "https://github.com/eerimoq/textparser") + (synopsis "Fast text parser for Python") + (description "This library provides a text parser written in the Python +language. It aims to be fast.") + (license license:expat))) + +(define-public python-aenum + (package + (name "python-aenum") + (version "2.2.3") + (source + (origin + (method url-fetch) + (uri (pypi-uri "aenum" version)) + (sha256 + (base32 + "1s3008rklv4n1kvmq6xdbdfyrpl0gf1rhqasmd27s5kwyjmlqcx4")))) + (build-system python-build-system) + (arguments + `(#:phases (modify-phases %standard-phases + (replace 'check + (lambda _ + (format #t "current working dir ~s~%" (getcwd)) + (setenv "PYTHONPATH" + (string-append ".:" (getenv "PYTHONPATH"))) + ;; We must run the test suite module directly, as it + ;; fails to define the 'tempdir' variable in scope for + ;; the tests otherwise + ;; (see:https://bitbucket.org/stoneleaf/aenum/\ + ;; issues/32/running-tests-with-python-setuppy-test). + (invoke "python3" "aenum/test.py") + ;; This one fails with "NameError: name + ;; 'test_pickle_dump_load' is not defined" (see: + ;; https://bitbucket.org/stoneleaf/aenum/issues/33 + ;; /error-running-the-test_v3py-test-suite). + ;; (invoke "python3" "aenum/test_v3.py") + #t))))) + (home-page "https://bitbucket.org/stoneleaf/aenum") + (synopsis "Advanced enumerations, namedtuples and constants for Python") + (description "The aenum library includes an @code{Enum} base class, a +metaclass-based @code{NamedTuple} implementation and a @code{NamedConstant} +class.") + (license license:bsd-3))) + +(define-public python-can + (package + (name "python-can") + (version "3.3.2") + (source + (origin + (method url-fetch) + (uri (pypi-uri "python-can" version)) + (sha256 + (base32 + "0bkbxi45sckzir6s0j3h01pkfn4vkz3ymih2zjp7zw77wz0vbvsz")))) + (build-system python-build-system) + (arguments + `(#:phases (modify-phases %standard-phases + (add-after 'unpack 'fix-broken-tests + ;; The tests try to run two scripts it expects should be + ;; in PATH, but they aren't at this time (see: + ;; https://github.com/hardbyte/python-can/issues/805). + (lambda _ + (substitute* "test/test_scripts.py" + (("\"can_logger\\.py --help\"") "") + (("\"can_player\\.py --help\"") "")) + #t))))) + (propagated-inputs + `(("python-aenum" ,python-aenum) + ("python-wrapt" ,python-wrapt))) + (native-inputs + `(("python-codecov" ,python-codecov) + ("python-future" ,python-future) + ("python-hypothesis" ,python-hypothesis) + ("python-mock" ,python-mock) + ("python-pyserial" ,python-pyserial) + ("python-pytest" ,python-pytest) + ("python-pytest-cov" ,python-pytest-cov) + ("python-pytest-runner" ,python-pytest-runner) + ("python-pytest-timeout" ,python-pytest-timeout))) + (home-page "https://github.com/hardbyte/python-can") + (synopsis "Controller Area Network (CAN) interface module for Python") + (description "This package defines the @code{can} module, which provides +controller area network (CAN) support for Python developers; providing common +abstractions to different hardware devices, and a suite of utilities for +sending and receiving messages on a CAN bus.") + (license license:gpl3+))) + +(define-public python-diskcache + (package + (name "python-diskcache") + (version "4.1.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "diskcache" version)) + (sha256 + (base32 + "1q2wz5sj16zgyy1zpq516qgbnfwsavk1pl2qks0f4r62z5cmmvmw")))) + (build-system python-build-system) + (arguments + `(#:tests? #f)) ;test suite not included in the release + (home-page "http://www.grantjenks.com/docs/diskcache/") + (synopsis "Disk and file backed cache library") + (description "DiskCache is a disk and file backed persistent cache.") + (license license:asl2.0))) + +(define-public python-bitstruct + (package + (name "python-bitstruct") + (version "8.9.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "bitstruct" version)) + (sha256 + (base32 + "1fpc1qh1vss05ap29xvhjp200fm0q4pvgcjl0qpryh7ay6xgr5vx")))) + (build-system python-build-system) + (home-page "https://github.com/eerimoq/bitstruct") + (synopsis "Python values to and C bit field structs converter") + (description "This module performs conversions between Python values and C +bit field structs represented as Python byte strings. It is intended to have +a similar interface as the @code{struct} module from Python, but working on +bits instead of primitive data types like @code{char}, @code{int}, etc.") + (license license:expat))) + +(define-public python-cantools + (package + (name "python-cantools") + (version "33.1.1") + (source + (origin + ;; We take the sources from the Git repository as the documentation is + ;; not included with the PyPI archive. + (method git-fetch) + (uri (git-reference + (url "https://github.com/eerimoq/cantools.git") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1aad137yd8b4jkfvlv812qsxmxcgra7g1p4wbxfsjy1cbf8fbq9q")))) + (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'build 'build-doc + (lambda _ + ;; See: https://github.com/eerimoq/cantools/issues/190. + (substitute* "README.rst" + (("https://github.com/eerimoq/cantools/raw/master\ +/docs/monitor.png") + "monitor.png")) + (with-directory-excursion "docs" + (invoke "make" "man" "info")))) + (add-after 'install 'install-doc + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (info (string-append out "/share/info")) + (man1 (string-append out "/share/man/man1"))) + (format #t "CWD: ~s~%" (getcwd)) + (install-file "docs/_build/texinfo/cantools.info" info) + (install-file "docs/_build/man/cantools.1" man1) + #t)))))) + (native-inputs + `(("sphinx" ,python-sphinx) + ("texinfo" ,texinfo))) + (propagated-inputs + `(("python-bitstruct" ,python-bitstruct) + ("python-can" ,python-can) + ("python-diskcache" ,python-diskcache) + ("python-textparser" ,python-textparser))) + (home-page "https://github.com/eerimoq/cantools") + (synopsis "Tools for the Controller Area Network (CAN) bus protocol") + (description "This package includes Controller Area Network (CAN) related +tools that can be used to: +@itemize +@item parse DBC, KCD, SYM, ARXML 4 and CDD files +@item encode and decode CAN messages +@item multiplex simple and extended signals +@item diagnose DID encoding and decoding +@item dump the CAN decoder output +@item test CAN nodes +@item generate C source code +@item monitor the CAN bus +@end itemize") + (license license:expat))) + (define-public python-capturer (package (name "python-capturer") @@ -1487,14 +1723,14 @@ Python 3.3+.") (define-public python-pyicu (package (name "python-pyicu") - (version "2.3.1") + (version "2.4.3") (source (origin (method url-fetch) (uri (pypi-uri "PyICU" version)) (sha256 (base32 - "1x4w8m7ifki9z2a187pgjr33z6z0rp2fii9b73djak1vhm9v9cnx")))) + "075bw66b3w0nw6mc5k32fwmrhyrmq3d7da3q2mw212qfmm0pgjn0")))) (build-system python-build-system) (inputs `(("icu4c" ,icu4c))) @@ -1505,24 +1741,10 @@ Python 3.3+.") (synopsis "Python extension wrapping the ICU C++ API") (description "PyICU is a python extension wrapping the ICU C++ API.") - (properties `((python2-variant . ,(delay python2-pyicu)))) (license license:x11))) (define-public python2-pyicu - (let ((base (package-with-python2 - (strip-python2-variant python-pyicu)))) - (package - (inherit base) - (arguments - `(,@(package-arguments base) - #:phases - (modify-phases %standard-phases - (add-before 'check 'delete-failing-test - (λ _ - ;; XXX: This fails due to Unicode issues unique to Python 2, - ;; it seems: <https://github.com/ovalhub/pyicu/issues/61>. - (delete-file "test/test_Script.py") - #t)))))))) + (package-with-python2 python-pyicu)) (define-public python2-dogtail ;; Python 2 only, as it leads to "TabError: inconsistent use of tabs and @@ -2057,14 +2279,14 @@ from git information. (define-public python-pyrsistent (package (name "python-pyrsistent") - (version "0.15.7") + (version "0.16.0") (home-page "https://github.com/tobgu/pyrsistent") (source (origin (method url-fetch) (uri (pypi-uri "pyrsistent" version)) (sha256 (base32 - "103j63g6lb5dfspph96zxjdpnq9h991kazd4f09ddgkpxpivbiyd")))) + "1lrsjgblnapfimd0alsi1as5nz2lfqv97131l7d6anbjzq2rjri8")))) (build-system python-build-system) (native-inputs `(("python-hypothesis" ,python-hypothesis) @@ -2594,14 +2816,14 @@ environments and back.") (define-public python-pyyaml (package (name "python-pyyaml") - (version "5.3") + (version "5.3.1") (source (origin (method url-fetch) (uri (pypi-uri "PyYAML" version)) (sha256 (base32 - "058nd4p8f25wwzy2aiwh18wcrdm6663cqbfdkgjp8y9cp7ampx79")))) + "0pb4zvkfxfijkpgd1b86xjsqql97ssf1knbd1v53wkg1qm9cgsmq")))) (build-system python-build-system) (inputs `(("libyaml" ,libyaml))) @@ -2611,8 +2833,7 @@ environments and back.") "PyYAML is a YAML parser and emitter for Python. PyYAML features a complete YAML 1.1 parser, Unicode support, pickle support, capable extension API, and sensible error messages. PyYAML supports standard YAML tags and -provides Python-specific tags that allow to represent an arbitrary Python -object.") +provides Python-specific tags that represent an arbitrary Python object.") (license license:expat))) (define-public python2-pyyaml @@ -3341,7 +3562,7 @@ receive files via the SCP1 protocol, as implemented by the OpenSSH ;; Note: As of version 1.7 the documentation is not worth building. (home-page "https://github.com/jaraco/rst.linker") (synopsis "Sphinx plugin to add links and timestamps") - (description "rst.linker allows to automatically replace text by a + (description "rst.linker automatically replaces text by a reStructuredText external reference or timestamps. It's primary purpose is to augment the changelog, but it can be used for other documents, too.") (license license:expat))) @@ -3656,14 +3877,14 @@ provides additional functionality on the produced Mallard documents.") (define-public python-cython (package (name "python-cython") - (version "0.29.15") + (version "0.29.16") (source (origin (method url-fetch) (uri (pypi-uri "Cython" version)) (sha256 (base32 - "0c5cjyxfvba6c0vih1fvhywp8bpz30vwvbjqdm1q1k55xzhmkn30")))) + "01gs10myw0rw4jsikvqs0859fg7gficxhv508cxvnb4l9wl5a9r3")))) (build-system python-build-system) ;; we need the full python package and not just the python-wrapper ;; because we need libpython3.3m.so @@ -5686,6 +5907,112 @@ away.") (define-public python2-ipython-genutils (package-with-python2 python-ipython-genutils)) +(define-public python-ipyparallel + (package + (name "python-ipyparallel") + (version "6.2.4") + (source + (origin + (method url-fetch) + (uri (pypi-uri "ipyparallel" version)) + (sha256 + (base32 + "0rf0dbpxf5z82bw8lsjj45r3wdd4wc74anz4wiiaf2rbjqlb1ivn")))) + (build-system python-build-system) + (arguments + `(#:tests? #f ; RuntimeError: IO Loop failed to start + #:phases + (modify-phases %standard-phases + (add-before 'check 'prepare-for-tests + (lambda _ + (setenv "HOME" (getcwd)) + #t))))) + (propagated-inputs + `(("python-dateutil" ,python-dateutil) + ("python-decorator" ,python-decorator) + ("python-ipykernel" ,python-ipykernel) + ("python-ipython" ,python-ipython) + ("python-ipython-genutils" ,python-ipython-genutils) + ("python-jupyter-client" ,python-jupyter-client) + ("python-pyzmq" ,python-pyzmq) + ("python-tornado" ,python-tornado) + ("python-traitlets" ,python-traitlets))) + (native-inputs + `(("python-ipython" ,python-ipython) + ("python-mock" ,python-mock) + ("python-nose" ,python-nose) + ("python-pytest" ,python-pytest) + ("python-pytest-cov" ,python-pytest-cov) + ("python-testpath" ,python-testpath))) + (home-page "https://ipython.org/") + (synopsis "Interactive Parallel Computing with IPython") + (description + "@code{ipyparallel} is a Python package and collection of CLI scripts for +controlling clusters for Jupyter. @code{ipyparallel} contains the following +CLI scripts: +@enumerate +@item ipcluster - start/stop a cluster +@item ipcontroller - start a scheduler +@item ipengine - start an engine +@end enumerate") + (license license:bsd-3))) + +(define-public python2-ipyparallel + (let ((ipyparallel (package-with-python2 python-ipyparallel))) + (package + (inherit ipyparallel) + (propagated-inputs + `(("python2-futures" ,python2-futures) + ,@(package-propagated-inputs ipyparallel)))))) + +(define-public python-ipython-cluster-helper + (package + (name "python-ipython-cluster-helper") + (version "0.6.4") + (source + (origin + (method url-fetch) + (uri (pypi-uri "ipython-cluster-helper" version)) + (sha256 + (base32 + "1l6mlwxlkxpbvawfwk6qffich7ahg9hq2bxfissgz6144p3k4arj")) + (modules '((guix build utils))) + (snippet + '(begin (substitute* "requirements.txt" + (("ipython.*") "ipython\n")) + #t)))) + (build-system python-build-system) + (arguments + `(#:tests? #f ; Test suite can't find IPython. + #:phases + (modify-phases %standard-phases + (replace 'check + (lambda* (#:key inputs outputs tests? #:allow-other-keys) + (if tests? + (begin + (setenv "HOME" (getcwd)) + (add-installed-pythonpath inputs outputs) + (invoke "python" "example/example.py" "--local")) + #t)))))) + (propagated-inputs + `(("python-ipyparallel" ,python-ipyparallel) + ("python-ipython" ,python-ipython) + ("python-netifaces" ,python-netifaces) + ("python-pyzmq" ,python-pyzmq) + ("python-setuptools" ,python-setuptools) + ("python-six" ,python-six))) + (home-page "https://github.com/roryk/ipython-cluster-helper") + (synopsis + "Simplify IPython cluster start up and use for multiple schedulers") + (description + "@code{ipython-cluster-helper} creates a throwaway parallel IPython +profile, launches a cluster and returns a view. On program exit it shuts the +cluster down and deletes the throwaway profile.") + (license license:expat))) + +(define-public python2-ipython-cluster-helper + (package-with-python2 python-ipython-cluster-helper)) + (define-public python-traitlets (package (name "python-traitlets") @@ -6150,14 +6477,14 @@ computing.") (define-public python-urwid (package (name "python-urwid") - (version "2.0.1") + (version "2.1.0") (source (origin (method url-fetch) (uri (pypi-uri "urwid" version)) (sha256 (base32 - "1g6cpicybvbananpjikmjk8npmjk4xvak1wjzji62wc600wkwkb4")))) + "11ndnhxd41m13darf5s0c6bafdpkzq1l6mfb04wbzdmyc1hg75h8")))) (build-system python-build-system) (home-page "http://urwid.org") (synopsis "Console user interface library for Python") @@ -6465,14 +6792,14 @@ of the structure, dynamics, and functions of complex networks.") (define-public python-datrie (package (name "python-datrie") - (version "0.8") + (version "0.8.2") (source (origin (method url-fetch) (uri (pypi-uri "datrie" version)) (sha256 (base32 - "0338r8xgmpy78556jhms0h6qkvyjr10p8bpgdvcpqzm9lrmxmmdx")))) + "0pbn32flkrpjiwfcknmj6398qa81ba783kbcvwan3kym73v0hnsj")))) (build-system python-build-system) (native-inputs `(("python-cython" ,python-cython) @@ -7677,14 +8004,14 @@ printing of sub-tables by specifying a row range.") (define-public python-tables (package (name "python-tables") - (version "3.4.4") + (version "3.6.1") (source (origin (method url-fetch) (uri (pypi-uri "tables" version)) (sha256 (base32 - "0affz7k8babh8wdmsgrz5jxrd569by2w8ffimcxs9wiaf5rw1idx")) + "0j8vnxh2m5n0cyk9z3ndcj5n1zj5rdxgc1gb78bqlyn2lyw75aa9")) (modules '((guix build utils))) (snippet '(begin @@ -7702,9 +8029,11 @@ printing of sub-tables by specifying a row range.") (add-after 'unpack 'use-gcc (lambda _ (substitute* "setup.py" - (("compiler = new_compiler\\(\\)" line) + (("^( +)compiler = new_compiler\\(\\)" line indent) (string-append line - "\ncompiler.set_executables(compiler='gcc'," + "\n" + indent + "compiler.set_executables(compiler='gcc'," "compiler_so='gcc'," "linker_exe='gcc'," "linker_so='gcc -shared')"))) @@ -7825,14 +8154,14 @@ primary use case is APIs defined before keyword-only parameters existed.") (define-public python-pyasn1 (package (name "python-pyasn1") - (version "0.4.3") + (version "0.4.8") (source (origin (method url-fetch) (uri (pypi-uri "pyasn1" version)) (sha256 (base32 - "1z5h38anjzzrxpraa9iq9llffyx2zs8gx0q6dc1g029miwnn50gv")))) + "1fnhbi3rmk47l9851gbik0flfr64vs5j0hbqx24cafjap6gprxxf")))) (build-system python-build-system) (home-page "http://pyasn1.sourceforge.net/") (synopsis "ASN.1 types and codecs") @@ -9049,13 +9378,13 @@ minimal and fast API targeting the following uses: (define-public python-icalendar (package (name "python-icalendar") - (version "4.0.4") + (version "4.0.5") (source (origin (method url-fetch) (uri (pypi-uri "icalendar" version)) (sha256 (base32 - "16gjvqv0n05jrb9g228pdjgzd3amz2pdhvcgsn1jypszjg5m2w9l")))) + "14ynjj65kfmlcvpb7k097w789wvxncd3cr3xz5m1jz9yl9v6vv5q")))) (build-system python-build-system) (propagated-inputs `(("python-dateutil" ,python-dateutil) @@ -9144,20 +9473,20 @@ with a new public API, and RPython support.") (define-public python-hy (package (name "python-hy") - (version "0.17.0") + (version "0.18.0") (source (origin (method url-fetch) (uri (pypi-uri "hy" version)) (sha256 (base32 - "1gdbqsirsdxj320wnp7my5awzs1kfs6m4fqmkzbd1zd47qzj0zfi")))) + "04dfwm336gw61fmgwikvh0cnxk682p19b4w555wl5d7mlym4rwj2")))) (build-system python-build-system) (arguments '(#:phases (modify-phases %standard-phases - (add-before 'install 'set-HOME - (lambda _ - (setenv "HOME" "/tmp"))) + (add-before 'install 'set-HOME + (lambda _ + (setenv "HOME" "/tmp") #t)) (replace 'check (lambda _ ;; Tests require write access to HOME. @@ -9168,10 +9497,8 @@ with a new public API, and RPython support.") ("python-nose" ,python-nose))) (propagated-inputs `(("python-astor" ,python-astor) - ("python-clint" ,python-clint) + ("python-colorama" ,python-colorama) ("python-rply" ,python-rply) - ("python-fastentrypoints" - ,python-fastentrypoints) ("python-funcparserlib" ,python-funcparserlib))) (home-page "http://hylang.org/") @@ -9182,9 +9509,6 @@ its Lisp code into the Python Abstract Syntax Tree, you have the whole world of Python at your fingertips, in Lisp form.") (license license:expat))) -(define-public python2-hy - (package-with-python2 python-hy)) - (define-public python2-functools32 (package (name "python2-functools32") @@ -9962,13 +10286,13 @@ programmatically interfacing with your system's $EDITOR.") (define-public python-vobject (package (name "python-vobject") - (version "0.9.5") + (version "0.9.6.1") (source (origin (method url-fetch) (uri (pypi-uri "vobject" version)) (sha256 (base32 - "0hqjgf3ay1m5w1c0k00g5yfpdz1zni5qnr5rh9b8fg9hjvhwlmhg")))) + "0081g4gngw28j7vw8101jk600wz4gzfrhf5myrqvn2mrfkn2llcn")))) (build-system python-build-system) (arguments '(;; The test suite relies on some non-portable Windows interfaces. @@ -9979,7 +10303,7 @@ programmatically interfacing with your system's $EDITOR.") (synopsis "Parse and generate vCard and vCalendar files") (description "Vobject is intended to be a full featured Python package for parsing and generating vCard and vCalendar files. Currently, iCalendar files -are supported and well tested. vCard 3.0 files are supported, and all data +are supported and well tested. vCard 3.0 files are supported, and all data should be imported, but only a few components are understood in a sophisticated way.") (home-page "https://eventable.github.io/vobject/") @@ -11357,14 +11681,14 @@ until the object is actually required, and caches the result of said call.") (define-public python-dnspython (package (name "python-dnspython") - (version "1.15.0") + (version "1.16.0") (source (origin (method url-fetch) (uri (string-append "http://www.dnspython.org/kits/" version "/dnspython-" version ".tar.gz")) (sha256 (base32 - "0jr4v2pd90i6l1xxbss2m05psbjaxvyvvvpq44wycijpfgjqln8i")))) + "1yaw7irazy42n0kdhlk7wyg8ki34rxcnc5xbc1wfwy245b0wbxab")))) (build-system python-build-system) (arguments '(#:tests? #f)) ; XXX: requires internet access (home-page "http://www.dnspython.org") @@ -11595,15 +11919,15 @@ characters, mouse support, and auto suggestions.") (define-public python-jedi (package (name "python-jedi") - (version "0.16.0") + (version "0.17.0") (source (origin (method url-fetch) (uri (pypi-uri "jedi" version)) - (patches (search-patches "python-jedi-deleted-variables.patch")) + (patches (search-patches "python-jedi-sort-project-test.patch")) (sha256 (base32 - "1mb5kmrk9bkc3kwzx02j62cdan1jqd92q1z7h7wi9d30jg5p3j6m")))) + "0c1h9x3a9klvk2g288wl328x8xgzw7136k6vs9hkd56b85vcjh6z")))) (build-system python-build-system) (arguments `(#:phases @@ -11611,7 +11935,7 @@ characters, mouse support, and auto suggestions.") (replace 'check (lambda _ (setenv "HOME" "/tmp") - (invoke "python" "-m" "pytest")))))) + (invoke "python" "-m" "pytest" "-vv")))))) (native-inputs `(("python-pytest" ,python-pytest) ("python-docopt" ,python-docopt))) @@ -11786,12 +12110,6 @@ hardware-accelerated multitouch applications.") (define-public python2-kivy (package-with-python2 python-kivy)) -(define-public python-kivy-next - (deprecated-package "python-kivy-next" python-kivy)) - -(define-public python2-kivy-next - (deprecated-package "python2-kivy-next" python2-kivy)) - (define-public python-binaryornot (package (name "python-binaryornot") @@ -12347,7 +12665,7 @@ by system tools such as ps and top). Changing the title is mostly useful in multi-process systems, for example when a master process is forked: changing the children's title -allows to identify the task each process is busy with. The technique +allows identifying the task each process is busy with. The technique is used by PostgreSQL and the OpenSSH Server for example.") (license license:bsd-3) (properties `((python2-variant . ,(delay python2-setproctitle)))))) @@ -15637,14 +15955,14 @@ and other tools.") (define-public python-typing-extensions (package (name "python-typing-extensions") - (version "3.7.2") + (version "3.7.4.1") (source (origin (method url-fetch) (uri (pypi-uri "typing_extensions" version)) (sha256 (base32 - "0wfsv71pvkyf2na938l579jh0v3kzl6g744ijgnahcwd4d9x0b7v")))) + "1wj1vcgbnm20aiinmphyxfrbv3qi9xdhvw89ab3qm42y9n4wq7h9")))) (build-system python-build-system) (home-page "https://github.com/python/typing/blob/master/typing_extensions/README.rst") @@ -15939,14 +16257,14 @@ time-based (TOTP) passwords.") (define-public python-parso (package (name "python-parso") - (version "0.6.2") + (version "0.7.0") (source (origin (method url-fetch) (uri (pypi-uri "parso" version)) (sha256 (base32 - "0mr1j4ijqnrihz1yap34g6i8vjldg5lz814sz4v0d8pbqvh5jmhc")))) + "0b7irps2dqmzq41sxbpvxbivhh1x2hwmbqp45bbpd82446p9z3lh")))) (native-inputs `(("python-pytest" ,python-pytest))) (build-system python-build-system) @@ -16811,26 +17129,35 @@ pure-Python.") (define-public python-cloudpickle (package (name "python-cloudpickle") - (version "0.6.1") + (version "1.3.0") (source (origin (method url-fetch) (uri (pypi-uri "cloudpickle" version)) (sha256 (base32 - "1wdw89mlm7fqa3fm3ymskx05jrys66n8m1z1a8s0mss0799ahsgi")))) + "0lx7gy9clp427qwcm7b23zdsldpr03gy3vxxhyi8fpbhwz859brq")))) (build-system python-build-system) - ;; FIXME: there are 5 errors in 122 tests: - ;; ERROR: test_function_pickle_compat_0_4_0 (tests.cloudpickle_test.CloudPickleTest) - ;; ERROR: test_function_pickle_compat_0_4_1 (tests.cloudpickle_test.CloudPickleTest) - ;; ERROR: test_function_pickle_compat_0_4_0 (tests.cloudpickle_test.Protocol2CloudPickleTest) - ;; ERROR: test_function_pickle_compat_0_4_1 (tests.cloudpickle_test.Protocol2CloudPickleTest) - ;; ERROR: test_temp_file (tests.cloudpickle_file_test.CloudPickleFileTests) - ;; TypeError: cannot serialize '_io.BufferedRandom' object - (arguments '(#:tests? #f)) + (arguments + '(#:phases (modify-phases %standard-phases + (add-before 'check 'do-not-override-PYTHONPATH + (lambda _ + ;; Append to PYTHONPATH instead of overriding it so + ;; that dependencies from Guix can be found. + (substitute* "tests/testutils.py" + (("env\\['PYTHONPATH'\\] = pythonpath") + "env['PYTHONPATH'] += os.pathsep + pythonpath")) + #t)) + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (if tests? + (invoke "pytest" "-s" "-vv") + (format #t "test suite not run~%")) + #t))))) (native-inputs - `(("python-pytest" ,python-pytest) - ("python-mock" ,python-mock) + `(;; For tests. + ("python-psutil" ,python-psutil) + ("python-pytest" ,python-pytest) ("python-tornado" ,python-tornado))) (home-page "https://github.com/cloudpipe/cloudpickle") (synopsis "Extended pickling support for Python objects") @@ -16840,10 +17167,19 @@ supported by the default pickle module from the Python standard library. It is especially useful for cluster computing where Python expressions are shipped over the network to execute on remote hosts, possibly close to the data.") + (properties `((python2-variant . ,(delay python2-cloudpickle)))) (license license:bsd-3))) (define-public python2-cloudpickle - (package-with-python2 python-cloudpickle)) + (let ((base (package-with-python2 (strip-python2-variant python-cloudpickle)))) + (package + (inherit base) + (native-inputs + `(("python-mock" ,python2-mock) + ,@(package-native-inputs base))) + (propagated-inputs + `(("python-futures" ,python2-futures) + ,@(package-propagated-inputs base)))))) (define-public python-locket (package @@ -16954,13 +17290,13 @@ decisions with any given backend.") (define-public python-dask (package (name "python-dask") - (version "2.9.0") + (version "2.14.0") (source (origin (method url-fetch) (uri (pypi-uri "dask" version)) (sha256 - (base32 "1w1hqr8vyx6ygwflj2737dcy0mmgvrc0s602gnny8pzlcbs9m76b")))) + (base32 "031j0j26s0675v0isyps2dphm03330n7dy8ifdy70jgvf78d119q")))) (build-system python-build-system) (arguments `(#:phases @@ -18255,14 +18591,14 @@ tests.") (define-public python-gssapi (package (name "python-gssapi") - (version "1.6.1") + (version "1.6.5") (source (origin (method url-fetch) (uri (pypi-uri "gssapi" version)) (sha256 (base32 - "1gymg4asvwrz7y13qpwp2s5g8qwq179d72gkj09q6bfcgs82l5wr")))) + "02i5s7998dg5kcr4m0xwamd8vjqk1816xbzldyp68l91f6bynwcr")))) (build-system python-build-system) (propagated-inputs `(("python-decorator" ,python-decorator) @@ -18425,6 +18761,29 @@ 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") @@ -18676,7 +19035,7 @@ logging in Python. It also provides some custom formatters and handlers.") (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 -allows to start and stop daemons for a quick throw-away usage. This is typically +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))) @@ -18732,3 +19091,500 @@ HTML-containing files.") 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.git") + (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-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))) |