[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
01/01: Merge branch 'master' into core-updates
From: |
Marius Bakke |
Subject: |
01/01: Merge branch 'master' into core-updates |
Date: |
Sun, 19 Nov 2017 09:05:05 -0500 (EST) |
mbakke pushed a commit to branch core-updates
in repository guix.
commit 2dd12924cf4a30a96262b6d392fcde58c9f10d4b
Merge: 259b4f3 a93447b
Author: Marius Bakke <address@hidden>
Date: Sun Nov 19 15:01:00 2017 +0100
Merge branch 'master' into core-updates
Makefile.am | 8 +-
build-aux/hydra/gnu-system.scm | 34 +-
doc/contributing.texi | 12 +-
doc/guix.texi | 241 +-
gnu.scm | 100 +-
gnu/build/linux-boot.scm | 43 +-
gnu/local.mk | 23 +-
gnu/packages.scm | 10 +-
gnu/packages/accessibility.scm | 2 +-
gnu/packages/admin.scm | 17 +-
gnu/packages/aidc.scm | 7 +-
gnu/packages/android.scm | 1 +
gnu/packages/aspell.scm | 2 +
gnu/packages/audio.scm | 100 +-
gnu/packages/autotools.scm | 2 +-
.../{4.13-x86_64.conf => 4.14-arm.conf} | 7397 +++++++++-----------
.../linux-libre/{4.13-i686.conf => 4.14-i686.conf} | 324 +-
.../{4.13-x86_64.conf => 4.14-x86_64.conf} | 330 +-
gnu/packages/backup.scm | 8 +-
gnu/packages/benchmark.scm | 4 +-
gnu/packages/bioinformatics.scm | 1136 ++-
gnu/packages/bittorrent.scm | 15 +-
gnu/packages/bootloaders.scm | 29 +-
gnu/packages/calendar.scm | 2 +
gnu/packages/certs.scm | 4 +-
gnu/packages/check.scm | 1437 +++-
gnu/packages/compression.scm | 260 +-
gnu/packages/cran.scm | 325 +-
gnu/packages/crypto.scm | 101 +-
gnu/packages/cups.scm | 36 +
gnu/packages/cyrus-sasl.scm | 2 +-
gnu/packages/databases.scm | 661 +-
gnu/packages/dav.scm | 4 +-
gnu/packages/django.scm | 7 +-
gnu/packages/docker.scm | 3 +-
gnu/packages/ebook.scm | 14 +-
gnu/packages/emacs.scm | 82 +-
gnu/packages/engineering.scm | 314 +-
gnu/packages/enlightenment.scm | 2 +-
gnu/packages/file-systems.scm | 118 +
gnu/packages/finance.scm | 34 +-
gnu/packages/firmware.scm | 6 +-
gnu/packages/fontutils.scm | 4 +-
gnu/packages/freedesktop.scm | 6 +-
gnu/packages/game-development.scm | 10 +-
gnu/packages/games.scm | 2 +
gnu/packages/gcc.scm | 1 +
gnu/packages/glib.scm | 9 +-
gnu/packages/gnome.scm | 154 +-
gnu/packages/gnucash.scm | 13 +-
gnu/packages/gnupg.scm | 127 +-
gnu/packages/gnuzilla.scm | 63 +-
gnu/packages/graph.scm | 4 +-
gnu/packages/graphviz.scm | 28 +
gnu/packages/guile.scm | 6 +-
gnu/packages/haskell-check.scm | 728 ++
gnu/packages/haskell-crypto.scm | 530 ++
gnu/packages/haskell-web.scm | 845 +++
gnu/packages/haskell.scm | 2183 +-----
gnu/packages/ibus.scm | 9 +-
gnu/packages/idris.scm | 2 +
gnu/packages/image-viewers.scm | 13 +-
gnu/packages/image.scm | 1 +
gnu/packages/imagemagick.scm | 4 +-
gnu/packages/irc.scm | 7 +-
gnu/packages/iso-codes.scm | 4 +-
gnu/packages/java.scm | 766 +-
gnu/packages/javascript.scm | 34 +
gnu/packages/jrnl.scm | 5 +-
gnu/packages/kde-frameworks.scm | 534 +-
gnu/packages/kde.scm | 6 +-
gnu/packages/kodi.scm | 60 +
gnu/packages/language.scm | 1 +
gnu/packages/ldc.scm | 1 +
gnu/packages/libffi.scm | 1 +
gnu/packages/libreoffice.scm | 48 +-
gnu/packages/libupnp.scm | 8 +-
gnu/packages/libusb.scm | 2 +-
gnu/packages/linux.scm | 105 +-
gnu/packages/logging.scm | 1 +
gnu/packages/machine-learning.scm | 56 +-
gnu/packages/mail.scm | 13 +-
gnu/packages/markup.scm | 2 +-
gnu/packages/maths.scm | 11 +-
gnu/packages/mc.scm | 2 +-
gnu/packages/medical.scm | 1 +
gnu/packages/mes.scm | 10 +-
gnu/packages/messaging.scm | 58 +-
gnu/packages/mingw.scm | 6 +-
gnu/packages/mp3.scm | 5 +-
gnu/packages/mpd.scm | 1 +
gnu/packages/mpi.scm | 8 +-
gnu/packages/music.scm | 43 +-
gnu/packages/nano.scm | 4 +-
gnu/packages/networking.scm | 1 +
gnu/packages/nutrition.scm | 1 +
gnu/packages/nvi.scm | 3 +-
gnu/packages/ocaml.scm | 2 +-
gnu/packages/openstack.scm | 44 +-
gnu/packages/package-management.scm | 34 +-
gnu/packages/parallel.scm | 9 +-
gnu/packages/password-utils.scm | 22 +-
.../audacity-build-with-system-portaudio.patch | 64 +
.../patches/gcc-4-compile-with-gcc-5.patch | 65 +
gnu/packages/patches/icecat-bug-1348660-pt5.patch | 727 ++
gnu/packages/patches/icecat-bug-1415133.patch | 40 +
...ktexteditor-5.39.0-autotests-dependencies.patch | 49 +
.../patches/libetonyek-build-with-mdds-1.2.patch | 74 -
gnu/packages/patches/libvisio-fix-tests.patch | 35 -
gnu/packages/patches/mupdf-CVE-2017-15587.patch | 10 +-
gnu/packages/patches/netsurf-system-utf8proc.patch | 51 +-
.../patches/owncloud-disable-updatecheck.patch | 49 +
gnu/packages/patches/psm-arch.patch | 13 +
gnu/packages/patches/psm-ldflags.patch | 13 +
gnu/packages/patches/psm-repro.patch | 14 +
.../python-networkx2-reproducible-build.patch | 29 +
gnu/packages/patches/qemu-CVE-2017-15038.patch | 51 +
gnu/packages/patches/qemu-CVE-2017-15268.patch | 62 +
gnu/packages/patches/qemu-CVE-2017-15289.patch | 66 +
gnu/packages/pdf.scm | 58 +-
gnu/packages/perl-check.scm | 1169 ++++
gnu/packages/perl.scm | 1141 +--
gnu/packages/python-crypto.scm | 637 ++
gnu/packages/python-web.scm | 2444 +++++++
gnu/packages/python.scm | 5666 +--------------
gnu/packages/qt.scm | 2 +-
gnu/packages/rdf.scm | 3 +
gnu/packages/regex.scm | 4 +-
gnu/packages/rust.scm | 2 +-
gnu/packages/samba.scm | 12 +-
gnu/packages/sdl.scm | 18 +-
gnu/packages/sssd.scm | 4 +
gnu/packages/statistics.scm | 198 +-
gnu/packages/storage.scm | 1 +
gnu/packages/suckless.scm | 2 +-
gnu/packages/sync.scm | 6 +-
gnu/packages/syncthing.scm | 66 +-
gnu/packages/synergy.scm | 28 +-
gnu/packages/tcl.scm | 2 +-
gnu/packages/terminals.scm | 6 +-
gnu/packages/tex.scm | 81 +-
gnu/packages/time.scm | 280 +-
gnu/packages/tls.scm | 51 +
gnu/packages/tor.scm | 2 +
gnu/packages/tryton.scm | 4 +
gnu/packages/version-control.scm | 10 +-
gnu/packages/video.scm | 18 +-
gnu/packages/vim.scm | 6 +-
gnu/packages/virtualization.scm | 6 +-
gnu/packages/vpn.scm | 1 +
gnu/packages/w3m.scm | 6 +-
gnu/packages/web-browsers.scm | 3 +-
gnu/packages/web.scm | 104 +-
gnu/packages/webkit.scm | 4 +-
gnu/packages/wget.scm | 61 +
gnu/packages/wm.scm | 13 +-
gnu/packages/xdisorg.scm | 38 +
gnu/packages/xml.scm | 1 +
gnu/packages/xorg.scm | 33 +-
gnu/services.scm | 20 +-
gnu/services/admin.scm | 6 +
gnu/services/audio.scm | 1 +
gnu/services/avahi.scm | 7 +-
gnu/services/base.scm | 12 +-
gnu/services/ssh.scm | 7 +
gnu/services/telephony.scm | 305 +
gnu/services/xorg.scm | 9 +-
gnu/system.scm | 5 +-
gnu/system/install.scm | 47 +-
gnu/system/linux-initrd.scm | 5 +-
gnu/system/vm.scm | 8 +-
gnu/tests/install.scm | 4 +-
guix/build-system/go.scm | 2 +
guix/build-system/r.scm | 9 +-
guix/build/compile.scm | 28 +-
guix/build/download.scm | 61 +-
guix/build/go-build-system.scm | 60 +-
guix/build/graft.scm | 1 +
guix/build/pull.scm | 61 +-
guix/build/texlive-build-system.scm | 2 +-
guix/cve.scm | 94 +-
guix/download.scm | 40 +-
guix/ftp-client.scm | 11 +-
guix/git.scm | 10 +-
guix/http-client.scm | 13 +-
guix/i18n.scm | 51 +
guix/import/cran.scm | 91 +-
guix/import/utils.scm | 28 +-
guix/licenses.scm | 10 +-
guix/records.scm | 18 +-
guix/scripts/refresh.scm | 3 +-
guix/ui.scm | 120 +-
guix/utils.scm | 17 +
guix/workers.scm | 28 +-
nix/scripts/list-runtime-roots.in | 94 +-
po/guix/POTFILES.in | 1 +
tests/guix-build.sh | 2 +-
tests/guix-gc.sh | 10 +-
tests/guix-package.sh | 2 +-
tests/guix-system.sh | 32 +-
tests/services.scm | 10 +-
tests/workers.scm | 26 +
202 files changed, 19726 insertions(+), 15166 deletions(-)
diff --cc gnu/local.mk
index d8b8b14,2fbafe1..eb61fe8
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@@ -535,7 -542,10 +543,8 @@@ dist_patch_DATA =
%D%/packages/patches/ath9k-htc-firmware-binutils.patch \
%D%/packages/patches/ath9k-htc-firmware-gcc.patch \
%D%/packages/patches/ath9k-htc-firmware-objcopy.patch \
+ %D%/packages/patches/audacity-build-with-system-portaudio.patch \
%D%/packages/patches/automake-skip-amhello-tests.patch \
- %D%/packages/patches/automake-regexp-syntax.patch \
- %D%/packages/patches/automake-test-gzip-warning.patch \
%D%/packages/patches/avahi-localstatedir.patch \
%D%/packages/patches/avidemux-install-to-lib.patch \
%D%/packages/patches/awesome-reproducible-png.patch \
@@@ -629,10 -641,11 +638,11 @@@
%D%/packages/patches/gawk-shell.patch \
%D%/packages/patches/gcc-arm-bug-71399.patch \
%D%/packages/patches/gcc-arm-link-spec-fix.patch \
- %D%/packages/patches/gcc-asan-powerpc-missing-include.patch \
%D%/packages/patches/gcc-cross-environment-variables.patch \
+ %D%/packages/patches/gcc-fix-texi2pod.patch \
%D%/packages/patches/gcc-libvtv-runpath.patch \
%D%/packages/patches/gcc-strmov-store-file-names.patch \
+ %D%/packages/patches/gcc-4-compile-with-gcc-5.patch \
%D%/packages/patches/gcc-4.6-gnu-inline.patch \
%D%/packages/patches/gcc-4.9.3-mingw-gthr-default.patch \
%D%/packages/patches/gcc-5.0-libvtv-runpath.patch \
@@@ -730,6 -746,11 +740,8 @@@
%D%/packages/patches/hurd-fix-eth-multiplexer-dependency.patch \
%D%/packages/patches/hydra-disable-darcs-test.patch \
%D%/packages/patches/icecat-avoid-bundled-libraries.patch \
+ %D%/packages/patches/icecat-bug-1348660-pt5.patch \
+ %D%/packages/patches/icecat-bug-1415133.patch \
- %D%/packages/patches/icu4c-CVE-2017-7867-CVE-2017-7868.patch \
- %D%/packages/patches/icu4c-CVE-2017-14952.patch \
- %D%/packages/patches/icu4c-reset-keyword-list-iterator.patch \
%D%/packages/patches/id3lib-CVE-2007-4460.patch \
%D%/packages/patches/ilmbase-fix-tests.patch \
%D%/packages/patches/intltool-perl-compatibility.patch \
@@@ -986,8 -1022,10 +1002,11 @@@
%D%/packages/patches/python2-pygobject-2-gi-info-type-error-domain.patch \
%D%/packages/patches/python-pygpgme-fix-pinentry-tests.patch \
%D%/packages/patches/python2-subprocess32-disable-input-test.patch \
- %D%/packages/patches/python2-unittest2-remove-argparse.patch \
+ %D%/packages/patches/python-unittest2-python3-compat.patch \
+ %D%/packages/patches/python-unittest2-remove-argparse.patch \
+ %D%/packages/patches/qemu-CVE-2017-15038.patch \
+ %D%/packages/patches/qemu-CVE-2017-15268.patch \
+ %D%/packages/patches/qemu-CVE-2017-15289.patch \
%D%/packages/patches/qt4-ldflags.patch \
%D%/packages/patches/qtscript-disable-tests.patch \
%D%/packages/patches/quagga-reproducible-build.patch \
diff --cc gnu/packages/check.scm
index 1d2ac20,5a926eb..7e713c6
--- a/gnu/packages/check.scm
+++ b/gnu/packages/check.scm
@@@ -332,3 -352,1418 +352,1390 @@@ for every Python test framework. It su
(define-public python2-parameterized
(package-with-python2 python-parameterized))
+
+ (define-public python-mock
+ (package
+ (name "python-mock")
- (version "1.0.1")
++ (version "2.0.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "mock" version))
+ (sha256
+ (base32
- "0kzlsbki6q0awf89rc287f3aj8x431lrajf160a70z0ikhnxsfdq"))))
++ "1flbpksir5sqrvq2z0dp8sl4bzbadg21sj4d42w3klpdfvgvcn5i"))))
++ (propagated-inputs
++ `(("python-pbr" ,python-pbr-minimal)
++ ("python-six" ,python-six)))
+ (build-system python-build-system)
- (arguments '(#:test-target "check"))
++ (native-inputs
++ `(("python-unittest2" ,python-unittest2)))
++ (arguments
++ `(#:phases
++ (modify-phases %standard-phases
++ (replace 'check
++ (lambda _
++ (zero? (system* "unit2")))))))
+ (home-page "https://github.com/testing-cabal/mock")
+ (synopsis "Python mocking and patching library for testing")
+ (description
+ "Mock is a library for testing in Python. It allows you to replace parts
+ of your system under test with mock objects and make assertions about how they
+ have been used.")
++ (properties `((python2-variant . ,(delay python2-mock))))
+ (license license:expat)))
+
+ (define-public python2-mock
- (package-with-python2 python-mock))
-
-;;; Some packages (notably, certbot and python-acme) rely on this newer
version
-;;; of python-mock. However, a large number of packages fail to build with
-;;; address@hidden, so we add a new variable for now. Also, there may be a
dependency
-;;; cycle between mock and six, so we avoid creating address@hidden for now.
-(define-public python-mock-2
- (package
- (inherit python-mock)
- (version "2.0.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "mock" version))
- (sha256
- (base32
- "1flbpksir5sqrvq2z0dp8sl4bzbadg21sj4d42w3klpdfvgvcn5i"))))
- (propagated-inputs
- `(("python-pbr" ,python-pbr-minimal)
- ,@(package-propagated-inputs python-mock)))))
++ (let ((base (package-with-python2
++ (strip-python2-variant python-mock))))
++ (package (inherit base)
++ (propagated-inputs
++ `(("python2-functools32" ,python2-functools32)
++ ("python2-funcsigs" ,python2-funcsigs)
++ ,@(package-propagated-inputs base))))))
+
+ (define-public python-nose
+ (package
+ (name "python-nose")
+ (version "1.3.7")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "nose" version))
+ (sha256
+ (base32
+ "164a43k7k2wsqqk1s6vavcdamvss4mz0vd6pwzv2h9n8rgwzxgzi"))))
+ (build-system python-build-system)
+ (arguments
+ '(#:tests? #f)) ; FIXME: test suite fails
+ (home-page "http://readthedocs.org/docs/nose/")
+ (synopsis "Python testing library")
+ (description
+ "Nose extends the unittest library to make testing easier.")
+ (license license:lgpl2.0+)))
+
+ (define-public python2-nose
+ (package-with-python2 python-nose))
+
+ (define-public python-nose2
+ (package
+ (name "python-nose2")
+ (version "0.6.5")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "nose2" version))
+ (sha256
+ (base32
+ "1x4zjq1zlyrh8b9ba0cmafd3w94pxhid408kibyjd3s6h1lap6s7"))))
+ (build-system python-build-system)
+ (arguments `(#:tests? #f)) ; 'module' object has no attribute 'collector'
+ (propagated-inputs
+ `(("python-cov-core" ,python-cov-core)
+ ("python-pytest-cov" ,python-pytest-cov)
+ ("python-six" ,python-six)))
+ (home-page "https://github.com/nose-devs/nose2")
+ (synopsis "Next generation of nicer testing for Python")
+ (description
+ "Nose2 is the next generation of nicer testing for Python, based on the
+ plugins branch of unittest2. Nose2 aims to improve on nose by providing a
+ better plugin api, being easier for users to configure, and simplifying
internal
+ interfaces and processes.")
+ (license license:bsd-2)))
+
+ (define-public python2-nose2
+ (package-with-python2 python-nose2))
+
+ (define-public python-unittest2
+ (package
+ (name "python-unittest2")
- (version "0.5.1")
++ (version "1.1.0")
+ (source
+ (origin
+ (method url-fetch)
- (uri (string-append
-
"https://pypi.python.org/packages/source/u/unittest2py3k/unittest2py3k-"
- version ".tar.gz"))
++ (uri (pypi-uri "unittest2" version))
++ (patches
++ (search-patches "python-unittest2-python3-compat.patch"
++ "python-unittest2-remove-argparse.patch"))
+ (sha256
+ (base32
- "00yl6lskygcrddx5zspkhr0ibgvpknl4678kkm6s626539grq93q"))))
++ "0y855kmx7a8rnf81d3lh5lyxai1908xjp0laf4glwa4c8472m212"))))
+ (build-system python-build-system)
++ (arguments
++ '(#:phases
++ (modify-phases %standard-phases
++ (replace 'check
++ (lambda _
++ (zero? (system* "python" "-m" "unittest2" "discover"
"--verbose")))))))
++ (propagated-inputs
++ `(("python-six" ,python-six)
++ ("python-traceback2" ,python-traceback2)))
+ (home-page "http://pypi.python.org/pypi/unittest2")
+ (synopsis "Python unit testing library")
+ (description
+ "Unittest2 is a replacement for the unittest module in the Python
+ standard library.")
+ (license license:psfl)))
+
+ (define-public python2-unittest2
- (package (inherit python-unittest2)
- (name "python2-unittest2")
- (version "1.1.0")
- (source
- (origin
- (method url-fetch)
- (uri (string-append
- "https://pypi.python.org/packages/source/u/unittest2/unittest2-"
- version ".tar.gz"))
- (sha256
- (base32
- "0y855kmx7a8rnf81d3lh5lyxai1908xjp0laf4glwa4c8472m212"))
- (patches
- (search-patches "python2-unittest2-remove-argparse.patch"))))
- (propagated-inputs
- `(("python2-six" ,python2-six)
- ("python2-traceback2" ,python2-traceback2)))
- (arguments
- `(#:python ,python-2
- #:tests? #f)))) ; no setup.py test command
++ (package-with-python2 python-unittest2))
+
+ (define-public python-pytest
+ (package
+ (name "python-pytest")
- (version "2.7.3")
++ (version "3.2.3")
+ (source
+ (origin
+ (method url-fetch)
- (uri (string-append
- "https://pypi.python.org/packages/source/p/pytest/pytest-"
- version ".tar.gz"))
++ (uri (pypi-uri "pytest" version))
+ (sha256
+ (base32
- "1z4yi986f9n0p8qmzmn21m21m8j1x78hk3505f89baqm6pdw7afm"))
- (modules '((guix build utils)))
- (snippet
- ;; One of the tests involves the /usr directory, so it fails.
- '(substitute* "testing/test_argcomplete.py"
- (("def test_remove_dir_prefix\\(self\\):")
- "@pytest.mark.xfail\n def test_remove_dir_prefix(self):")))))
++ "0g6w86ks73fnrnsyib9ii2rbyx830vn7aglsjqz9v1n2xwbndyi7"))))
+ (build-system python-build-system)
++ (arguments
++ `(#:phases
++ (modify-phases %standard-phases
++ (add-before 'check 'disable-invalid-tests
++ (lambda _
++ ;; Some tests involves the /usr directory, and fails.
++ (substitute* "testing/test_argcomplete.py"
++ (("def test_remove_dir_prefix\\(self\\):")
++ "@pytest.mark.xfail\n def test_remove_dir_prefix(self):"))
++ (substitute* "testing/test_argcomplete.py"
++ (("def test_remove_dir_prefix" line)
++ (string-append "@pytest.mark.skip"
++ "(reason=\"Assumes that /usr exists.\")\n "
++ line)))
++ #t)))))
+ (propagated-inputs
+ `(("python-py" ,python-py)))
+ (native-inputs
+ `(;; Tests need the "regular" bash since 'bash-final' lacks `compgen`.
+ ("bash" ,bash)
++ ("python-hypothesis" ,python-hypothesis)
+ ("python-nose" ,python-nose)
- ("python-mock" ,python-mock)))
++ ("python-mock" ,python-mock)
++ ("python-setuptools-scm" ,python-setuptools-scm)))
+ (home-page "http://pytest.org")
+ (synopsis "Python testing library")
+ (description
+ "Pytest is a testing tool that provides auto-discovery of test modules
+ and functions, detailed info on failing assert statements, modular fixtures,
+ and many external plugins.")
+ (license license:expat)))
+
+ (define-public python2-pytest
+ (package-with-python2 python-pytest))
+
-;; Some packages require a newer pytest.
-(define-public python-pytest-3.0
++(define-public python-pytest-bootstrap
+ (package
+ (inherit python-pytest)
- (name "python-pytest")
- (version "3.0.7")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "pytest" version))
- (sha256
- (base32
- "1asc4b2nd2a4f0g3r12y97rslq5wliji7b73wwkvdrm5s7mrc1mp"))))
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (add-before 'check 'disable-invalid-test
- (lambda _
- (substitute* "testing/test_argcomplete.py"
- (("def test_remove_dir_prefix" line)
- (string-append "@pytest.mark.skip"
- "(reason=\"Assumes that /usr exists.\")\n "
- line)))
- #t)))))
- (native-inputs
- `(("python-hypothesis" ,python-hypothesis)
- ,@(package-native-inputs python-pytest)))
- (properties `((python2-variant . ,(delay python2-pytest-3.0))))))
++ (name "python-pytest-bootstrap")
++ (native-inputs `(("python-setuptools-scm" ,python-setuptools-scm)))
++ (arguments `(#:tests? #f))))
+
-(define-public python2-pytest-3.0
- (let ((base (package-with-python2
- (strip-python2-variant python-pytest-3.0))))
- (package (inherit base)
- (native-inputs
- `(("python2-enum34" ,python2-enum34)
- ,@(package-native-inputs base))))))
++(define-public python2-pytest-bootstrap
++ (package-with-python2 python-pytest-bootstrap))
+
+ (define-public python-pytest-cov
+ (package
+ (name "python-pytest-cov")
+ (version "2.4.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "pytest-cov" version))
+ (sha256
+ (base32
+ "03c2qc42r4bczyw93gd7n0qi1h1jfhw7fnbhi33c3vp1hs81gm2k"))))
+ (build-system python-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (replace 'check
+ (lambda _
+ ;; options taken from tox.ini
+ ;; TODO: make "--restructuredtext" tests pass. They currently fail
+ ;; with "Duplicate implicit target name"
+ (zero? (system* "python" "./setup.py" "check"
+ "--strict" "--metadata")))))))
+ (propagated-inputs
+ `(("python-coverage" ,python-coverage)
+ ("python-pytest" ,python-pytest)))
+ (home-page "https://github.com/pytest-dev/pytest-cov")
+ (synopsis "Pytest plugin for measuring coverage")
+ (description
+ "Pytest-cov produces coverage reports. It supports centralised testing
and
+ distributed testing in both @code{load} and @code{each} modes. It also
+ supports coverage of subprocesses.")
+ (license license:expat)))
+
+ (define-public python2-pytest-cov
+ (package-with-python2 python-pytest-cov))
+
+ (define-public python-pytest-runner
+ (package
+ (name "python-pytest-runner")
+ (version "2.11.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "pytest-runner" version))
+ (sha256
+ (base32
+ "1cw978kqqcq916b9gfns1qjqvg33c5ail5jhw9054dsynkm32flq"))))
+ (build-system python-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ ;; The fancy way of setting the version with setuptools_scm does not
+ ;; seem to work here.
+ (add-after 'unpack 'set-version
+ (lambda _
+ (substitute* "docs/conf.py"
+ (("version = setuptools_scm\\.get_version\\(root='\\.\\.')")
+ (string-append "version = \"" ,version "\"")))
+ #t)))))
+ (native-inputs
- `(("python-pytest" ,python-pytest)
++ `(("python-pytest" ,python-pytest-bootstrap)
+ ("python-setuptools-scm" ,python-setuptools-scm)))
+ (home-page "https://github.com/pytest-dev/pytest-runner")
+ (synopsis "Invoke py.test as a distutils command")
+ (description
+ "This package provides a @command{pytest-runner} command that
+ @file{setup.py} files can use to run tests.")
+ (license license:expat)))
+
+ (define-public python2-pytest-runner
+ (package-with-python2 python-pytest-runner))
+
+ (define-public python-pytest-mock
+ (package
+ (name "python-pytest-mock")
+ (version "1.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "pytest-mock" version ".zip"))
+ (sha256
+ (base32
+ "03zxar5drzm7ksqyrwypjaza3cri6wqvpr6iam92djvg6znp32gp"))))
+ (build-system python-build-system)
+ (native-inputs
+ `(("unzip" ,unzip)))
+ (propagated-inputs
+ `(("python-pytest" ,python-pytest)))
+ (home-page "https://github.com/pytest-dev/pytest-mock/")
+ (synopsis "Thin-wrapper around the mock package for easier use with
py.test")
+ (description
+ "This plugin installs a @code{mocker} fixture which is a thin-wrapper
+ around the patching API provided by the @code{mock} package, but with the
+ benefit of not having to worry about undoing patches at the end of a test.
+ The mocker fixture has the same API as @code{mock.patch}, supporting the
+ same arguments.")
+ (properties `((python2-variant . ,(delay python2-pytest-mock))))
+ (license license:expat)))
+
+ (define-public python2-pytest-mock
+ (let ((base (package-with-python2
+ (strip-python2-variant python-pytest-mock))))
+ (package (inherit base)
+ (propagated-inputs
+ `(("python2-mock" ,python2-mock)
+ ,@(package-propagated-inputs base))))))
+
+ (define-public python-pytest-xdist
+ (package
+ (name "python-pytest-xdist")
+ (version "1.14")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "pytest-xdist" version ".zip"))
+ (sha256
+ (base32
+ "08rn2l39ds60xshs4js787l84pfckksqklfq2wq9x8ig2aci2pja"))
+ (modules '((guix build utils)))
+ (snippet
+ '(begin
+ ;; Remove pre-compiled .pyc files from source.
+ (for-each delete-file-recursively
+ (find-files "." "__pycache__" #:directories? #t))
+ (for-each delete-file (find-files "." "\\.pyc$"))
+ #t))))
+ (build-system python-build-system)
+ (arguments
+ '(#:tests? #f)) ;FIXME: Some tests are failing.
+ ;; #:phases
+ ;; (modify-phases %standard-phases
+ ;; (delete 'check)
+ ;; (add-after 'install 'check
+ ;; (lambda* (#:key inputs outputs #:allow-other-keys)
+ ;; (add-installed-pythonpath inputs outputs)
+ ;; (zero? (system* "py.test" "-v")))))
+ (native-inputs
+ `(("unzip" ,unzip)
+ ("python-setuptools-scm" ,python-setuptools-scm)))
+ (propagated-inputs
+ `(("python-execnet" ,python-execnet)
+ ("python-pytest" ,python-pytest)
+ ("python-py" ,python-py)))
+ (home-page
+ "https://github.com/pytest-dev/pytest-xdist")
+ (synopsis
+ "Plugin for py.test with distributed testing and loop-on-failing modes")
+ (description
+ "The pytest-xdist plugin extends py.test with some unique test execution
+ modes: parallelization, running tests in boxed subprocesses, the ability
+ to run tests repeatedly when failed, and the ability to run tests on multiple
+ Python interpreters or platforms. It uses rsync to copy the existing
+ program code to a remote location, executes there, and then syncs the
+ result back.")
+ (license license:expat)))
+
+ (define-public python2-pytest-xdist
+ (package-with-python2 python-pytest-xdist))
+
+ (define-public python-scripttest
+ (package
+ (name "python-scripttest")
+ (version "1.3")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+
"https://pypi.python.org/packages/source/s/scripttest/scripttest-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "0f4w84k8ck82syys7yg9maz93mqzc8p5ymis941x034v44jzq74m"))))
+ (build-system python-build-system)
+ (native-inputs
+ `(("python-pytest" ,python-pytest)))
+ (home-page "http://pythonpaste.org/scripttest/")
+ (synopsis "Python library to test command-line scripts")
+ (description "Scripttest is a Python helper library for testing
+ interactive command-line applications. With it you can run a script in a
+ subprocess and see the output as well as any file modifications.")
+ (license license:expat)))
+
+ (define-public python2-scripttest
+ (package-with-python2 python-scripttest))
+
+ (define-public python-testtools
+ (package
+ (name "python-testtools")
+ (version "1.4.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "testtools" version))
+ (sha256
+ (base32
+ "1vw8yljnd75d396hhw6s2hrf4cclzy845ifd5am0lxsl235z3i8c"))))
+ (build-system python-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'fix-module-imports
+ (lambda _
+ (substitute* "setup.py"
+ (("'unittest2>=0.8.0',") ""))
+ (substitute* '("testtools/testcase.py"
+ "testtools/testsuite.py"
+ "testtools/run.py"
+ "testtools/tests/test_run.py"
+ "testtools/tests/test_testsuite.py"
+ "testtools/tests/test_deferredruntest.py")
+ ;; unittest2 is a backport of Python2.7 features to Python 2.4.
+ (("import unittest2 as unittest") "import unittest")
+ (("import unittest2") "import unittest as unittest2")
+ (("from unittest2 import") "from unittest import"))
+ (substitute* "testtools/tests/test_testresult.py"
+ ;; NUL in source code is not allowed (raises ValueError).
+ (("\\x00\\x04") "\\x04"))
+ #t)))))
+ (propagated-inputs
+ `(("python-mimeparse" ,python-mimeparse)
+ ("python-extras" ,python-extras)))
+ (home-page "https://github.com/testing-cabal/testtools")
+ (synopsis
+ "Extensions to the Python standard library unit testing framework")
+ (description
+ "Testtools extends the Python standard library unit testing framework to
+ provide matchers, more debugging information, and cross-Python
+ compatibility.")
+ (license license:psfl)))
+
+ (define-public python2-testtools
+ (package-with-python2 python-testtools))
+
+ (define-public python-testscenarios
+ (package
+ (name "python-testscenarios")
+ (version "0.4")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+
"https://pypi.python.org/packages/source/t/testscenarios/testscenarios-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "1671jvrvqlmbnc42j7pc5y6vc37q44aiwrq0zic652pxyy2fxvjg"))))
+ (build-system python-build-system)
+ (propagated-inputs
+ `(("python-testtools" ,python-testtools)))
+ (home-page "https://launchpad.net/testscenarios")
+ (synopsis "Pyunit extension for dependency injection")
+ (description
+ "Testscenarios provides clean dependency injection for Python unittest
+ style tests.")
+ (license (list license:bsd-3 license:asl2.0)))) ; at the user's option
+
+ (define-public python2-testscenarios
+ (package-with-python2 python-testscenarios))
+
+ (define-public python-testresources
+ (package
+ (name "python-testresources")
+ (version "0.2.7")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+
"https://pypi.python.org/packages/source/t/testresources/testresources-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "0cbj3plbllyz42c4b5xxgwaa7mml54lakslrn4kkhinxhdri22md"))))
+ (build-system python-build-system)
+ (home-page "https://launchpad.net/testresources")
+ (synopsis
+ "Pyunit extension for managing test resources")
+ (description
+ "Testresources is an extension to Python's unittest to allow declarative
+ use of resources by test cases.")
+ (license (list license:bsd-3 license:asl2.0)))) ; at the user's option
+
+ (define-public python2-testresources
+ (package-with-python2 python-testresources))
+
+ (define-public python-subunit
+ (package
+ (name "python-subunit")
+ (version "0.0.21")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+
"https://pypi.python.org/packages/source/p/python-subunit/python-subunit-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "1nkw9wfbvizmpajbj3in8ns07g7lwkiv8hip14jjlwk3cacls6jv"))))
+ (build-system python-build-system)
+ (propagated-inputs
+ `(("python-extras" ,python-extras)
+ ("python-mimeparse" ,python-mimeparse)))
+ (native-inputs
+ `(("python-testscenarios" ,python-testscenarios)))
+ (home-page "http://launchpad.net/subunit")
+ (synopsis "Python implementation of the subunit protocol")
+ (description
+ "Python-subunit is a Python implementation of the subunit test streaming
+ protocol.")
+ (license (list license:bsd-3 license:asl2.0)))) ; at the user's option
+
+ (define-public python2-subunit
+ (package-with-python2 python-subunit))
+
+ (define-public python-fixtures
+ (package
+ (name "python-fixtures")
+ (version "1.4.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "fixtures" version))
+ (sha256
+ (base32
+ "0djxvdwm8s60dbfn7bhf40x6g818p3b3mlwijm1c3bqg7msn271y"))))
+ (build-system python-build-system)
+ (arguments
+ '(#:phases
+ (modify-phases %standard-phases
+ (replace 'check
+ (lambda _
+ (zero? (system* "python" "-m" "testtools.run"
+ "fixtures.test_suite")))))))
+ (propagated-inputs
+ `(("python-six" ,python-six)))
+ (native-inputs
+ `(("python-mock" ,python-mock)
+ ("python-pbr-minimal" ,python-pbr-minimal)
+ ("python-testtools" ,python-testtools)))
+ (home-page "https://launchpad.net/python-fixtures")
+ (synopsis "Python test fixture library")
+ (description
+ "Fixtures provides a way to create reusable state, useful when writing
+ Python tests.")
+ (license (list license:bsd-3 license:asl2.0)))) ; at user's option
+
+ (define-public python2-fixtures
+ (package-with-python2 python-fixtures))
+
+ (define-public python-testrepository
+ (package
+ (name "python-testrepository")
+ (version "0.0.20")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+
"https://pypi.python.org/packages/source/t/testrepository/testrepository-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "1ssqb07c277010i6gzzkbdd46gd9mrj0bi0i8vn560n2k2y4j93m"))))
+ (build-system python-build-system)
+ (arguments
+ ;; FIXME: Many tests are failing.
+ '(#:tests? #f))
+ (propagated-inputs
+ `(("python-fixtures" ,python-fixtures)
+ ("python-subunit" ,python-subunit)
+ ("python-testtools" ,python-testtools)))
+ (native-inputs
+ `(("python-pbr-minimal" ,python-pbr-minimal) ;; same as for building
fixture
+ ("python-mimeparse" ,python-mimeparse)))
+ (home-page "https://launchpad.net/testrepository")
+ (synopsis "Database for Python test results")
+ (description "Testrepository provides a database of test results which can
+ be used as part of a developer's workflow to check things such as what tests
+ have failed since the last commit or what tests are currently failing.")
+ (license (list license:bsd-3 license:asl2.0)))) ; at user's option
+
+ (define-public python2-testrepository
+ (package-with-python2 python-testrepository))
+
+ (define-public python-coverage
+ (package
+ (name "python-coverage")
- (version "4.1")
++ (version "4.4.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "coverage" version))
+ (sha256
+ (base32
- "01rbr4br4lsk0lwn8fb96zwd2xr4f0mg1w7iq3j11i8f5ig2nqs1"))))
++ "097l4s3ssxm1vncsn0nw3a1pbzah28773q36c1ab9wz01r04973s"))))
+ (build-system python-build-system)
+ (arguments
+ ;; FIXME: 95 tests failed, 539 passed, 6 skipped, 2 errors.
+ '(#:tests? #f))
+ (home-page "http://nedbatchelder.com/code/coverage")
+ (synopsis "Code coverage measurement for Python")
+ (description
+ "Coverage measures code coverage, typically during test execution. It
+ uses the code analysis tools and tracing hooks provided in the Python standard
+ library to determine which lines are executable, and which have been
+ executed.")
+ (license license:bsd-3)))
+
+ (define-public python2-coverage
+ (package-with-python2 python-coverage))
+
+ (define-public python-cov-core
+ (package
+ (name "python-cov-core")
+ (version "1.15.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "cov-core" version))
+ (sha256
+ (base32
+ "0k3np9ymh06yv1ib96sb6wfsxjkqhmik8qfsn119vnhga9ywc52a"))))
+ (build-system python-build-system)
+ (propagated-inputs
+ `(("python-coverage" ,python-coverage)))
+ (home-page "https://github.com/schlamar/cov-core")
+ (synopsis "Coverage plugin core for pytest-cov, nose-cov and nose2-cov")
+ (description
+ "This is a library package for use by @code{pytest-cov}, @code{nose-cov}
+ and @code{nose2-cov}. It is useful for developing coverage plugins for these
+ testing frameworks.")
+ (license license:expat)))
+
+ (define-public python2-cov-core
+ (package-with-python2 python-cov-core))
+
+ (define-public python-testpath
+ (package
+ (name "python-testpath")
+ (version "0.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/jupyter/testpath/archive/"
+ version ".tar.gz"))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "04kh3fgvmqz6cfcw79q70qwjz7ib7lxm27cc548iy2rpr33qqf55"))))
+ (build-system python-build-system)
+ (arguments
+ `(#:tests? #f ; this package does not even have a setup.py
+ #:modules ((guix build python-build-system)
+ (guix build utils)
+ (srfi srfi-1))
+ #:imported-modules (,@%python-build-system-modules
+ (srfi srfi-1))
+ #:phases
+ (modify-phases %standard-phases
+ (delete 'install)
+ (replace 'build
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let* ((version (last
+ (string-split (assoc-ref inputs "python") #\-)))
+ (x.y (string-join (take (string-split version #\.) 2)
+ "."))
+ (dir (string-append
+ (assoc-ref outputs "out")
+ "/lib/python" x.y "/site-packages/testpath")))
+ (mkdir-p dir)
+ (copy-recursively "testpath" dir))
+ #t)))))
+ (home-page "https://github.com/takluyver/testpath")
+ (synopsis "Test utilities for code working with files and commands")
+ (description
+ "Testpath is a collection of utilities for Python code working with files
+ and commands. It contains functions to check things on the filesystem, and
+ tools for mocking system commands and recording calls to those.")
+ (license license:expat)))
+
+ (define-public python2-testpath
+ (package-with-python2 python-testpath))
+
+ (define-public python-testlib
+ (package
+ (name "python-testlib")
+ (version "0.6.5")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://pypi.python.org/packages/source/t/testlib/testlib-"
+ version ".zip"))
+ (sha256
+ (base32 "1mz26cxn4x8bbgv0rn0mvj2z05y31rkc8009nvdlb3lam5b4mj3y"))))
+ (build-system python-build-system)
+ (native-inputs
+ `(("unzip" ,unzip))) ; for unpacking the source
+ (synopsis "Python micro test suite harness")
+ (description "A micro unittest suite harness for Python.")
+ (home-page "https://github.com/trentm/testlib")
+ (license license:expat)))
+
+ (define-public python2-testlib
+ (package-with-python2 python-testlib))
+
+ ;;; The software provided by this package was integrated into pytest 2.8.
+ (define-public python-pytest-cache
+ (package
+ (name "python-pytest-cache")
+ (version "1.0")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "pytest-cache" version))
+ (sha256
+ (base32
+ "1a873fihw4rhshc722j4h6j7g3nj7xpgsna9hhg3zn6ksknnhx5y"))))
+ (build-system python-build-system)
+ (propagated-inputs
+ `(("python-apipkg" ,python-apipkg)
+ ("python-execnet" ,python-execnet)
+ ("python-py" ,python-py)
+ ("python-pytest" ,python-pytest)))
+ (synopsis "Py.test plugin with mechanisms for caching across test runs")
+ (description "The pytest-cache plugin provides tools to rerun failures
from
+ the last py.test invocation.")
+ (home-page "https://bitbucket.org/hpk42/pytest-cache/")
+ (license license:expat)))
+
+ (define-public python2-pytest-cache
+ (package-with-python2 python-pytest-cache))
+
+ (define-public python-pytest-localserver
+ (package
+ (name "python-pytest-localserver")
+ (version "0.3.5")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "pytest-localserver" version))
+ (sha256
+ (base32
+ "0dvqspjr6va55zwmnnc2mmpqc7mm65kxig9ya44x1z8aadzxpa4p"))))
+ (build-system python-build-system)
+ (arguments
+ `(#:phases (modify-phases %standard-phases
+ (replace 'check
+ (lambda _
+ (zero? (system* "py.test" "--genscript=runtests.py"))
+ (zero? (system* "py.test")))))))
+ (native-inputs
+ `(("python-pytest" ,python-pytest)
+ ("python-requests" ,python-requests)
+ ("python-six" ,python-six)))
+ (propagated-inputs
+ `(("python-werkzeug" ,python-werkzeug)))
+ (synopsis "Py.test plugin to test server connections locally")
+ (description "Pytest-localserver is a plugin for the pytest testing
+ framework which enables you to test server connections locally.")
+ (home-page "https://pypi.python.org/pypi/pytest-localserver")
+ (license license:expat)))
+
+ (define-public python-pytest-xprocess
+ (package
+ (name "python-pytest-xprocess")
+ (version "0.9.1")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "pytest-xprocess" version))
+ (sha256
+ (base32
+ "17zlql1xqw3ywcgwwbqmw633aly99lab12hm02asr8awvg5603pp"))))
+ (build-system python-build-system)
+ (propagated-inputs
+ `(("python-pytest" ,python-pytest)
+ ("python-pytest-cache" ,python-pytest-cache)
+ ("python-psutil" ,python-psutil)))
+ (synopsis "Pytest plugin to manage external processes across test runs")
+ (description "Pytest-xprocess is an experimental py.test plugin for
managing
+ processes across test runs.")
+ (home-page "https://bitbucket.org/pytest-dev/pytest-xprocess")
+ (license license:expat)))
+
+ (define-public python-pytest-subtesthack
+ (package
+ (name "python-pytest-subtesthack")
+ (version "0.1.1")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "pytest-subtesthack" version))
+ (sha256
+ (base32
+ "15kzcr5pchf3id4ikdvlv752rc0j4d912n589l4rifp8qsj19l1x"))))
+ (build-system python-build-system)
+ (propagated-inputs
+ `(("python-pytest" ,python-pytest)))
+ (synopsis "Set-up and tear-down fixtures for unit tests")
+ (description "This plugin allows you to set up and tear down fixtures
within
+ unit test functions that use @code{py.test}. This is useful for using
+ @command{hypothesis} inside py.test, as @command{hypothesis} will call the
test
+ function multiple times, without setting up or tearing down fixture state as
is
+ normally the case.")
+ (home-page "https://github.com/untitaker/pytest-subtesthack/")
+ (license license:unlicense)))
+
+ (define-public python2-pytest-subtesthack
+ (package-with-python2 python-pytest-subtesthack))
+
+ (define-public python-hypothesis
+ (package
+ (name "python-hypothesis")
+ (version "3.1.0")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "hypothesis" version))
+ (sha256
+ (base32
+ "0qyqq9akm4vshhn8cngjc1qykcvsn7cz6dlm6njfsgpbraqrmbbw"))))
+ (build-system python-build-system)
+ (native-inputs
+ `(("python-flake8" ,python-flake8)
- ("python-pytest" ,python-pytest)))
++ ("python-pytest" ,python-pytest-bootstrap)))
+ (synopsis "Library for property based testing")
+ (description "Hypothesis is a library for testing your Python code
against a
+ much larger range of examples than you would ever want to write by hand. It’s
+ based on the Haskell library, Quickcheck, and is designed to integrate
+ seamlessly into your existing Python unit testing work flow.")
+ (home-page "https://github.com/DRMacIver/hypothesis")
+ (license license:mpl2.0)
+ (properties `((python2-variant . ,(delay python2-hypothesis))))))
+
+ (define-public python2-hypothesis
+ (let ((hypothesis (package-with-python2
+ (strip-python2-variant python-hypothesis))))
+ (package (inherit hypothesis)
+ (propagated-inputs
+ `(("python2-enum34" ,python2-enum34)
+ ,@(package-propagated-inputs hypothesis))))))
+
+ (define-public python-lit
+ (package
+ (name "python-lit")
+ (version "0.5.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "lit" version))
+ (sha256
+ (base32
+ "135m2b9cwih85g66rjggavck328z7lj37srgpq3jxszbg0g2b91y"))))
+ (build-system python-build-system)
+ (home-page "http://llvm.org/")
+ (synopsis "LLVM Software Testing Tool")
+ (description "@code{lit} is a portable tool for executing LLVM and Clang
+ style test suites, summarizing their results, and providing indication of
+ failures.")
+ (license license:ncsa)))
+
+ (define-public python2-lit
+ (package-with-python2 python-lit))
+
+ (define-public python-pytest-pep8
+ (package
+ (name "python-pytest-pep8")
+ (version "1.0.6")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "pytest-pep8" version))
+ (sha256
+ (base32
+ "06032agzhw1i9d9qlhfblnl3dw5hcyxhagn7b120zhrszbjzfbh3"))))
+ (build-system python-build-system)
+ (arguments
+ `(#:tests? #f)) ; Fails with recent pytest and pep8. See upstream issues
#8 and #12.
+ (native-inputs
+ `(("python-pytest" ,python-pytest)))
+ (propagated-inputs
+ `(("python-pep8" ,python-pep8)))
+ (home-page "https://bitbucket.org/pytest-dev/pytest-pep8")
+ (synopsis "Py.test plugin to check PEP8 requirements")
+ (description "Pytest plugin for checking PEP8 compliance.")
+ (license license:expat)))
+
+ (define-public python2-pytest-pep8
+ (package-with-python2 python-pytest-pep8))
+
+ (define-public python-pytest-flakes
+ (package
+ (name "python-pytest-flakes")
+ (version "1.0.1")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "pytest-flakes" version))
+ (sha256
+ (base32
+ "0flag3n33kbhyjrhzmq990rvg4yb8hhhl0i48q9hw0ll89jp28lw"))))
+ (build-system python-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (delete 'check)
+ (add-after 'install 'check
+ (lambda* (#:key outputs inputs #:allow-other-keys)
+ ;; It's easier to run tests after install.
+ ;; Make installed package available for running the tests
+ (add-installed-pythonpath inputs outputs)
+ (zero? (system* "py.test" "-vv")))))))
+ (native-inputs
+ `(("python-coverage" ,python-coverage)
+ ("python-pytest" ,python-pytest)
+ ("python-pytest-cache" ,python-pytest-cache)
+ ("python-pytest-pep8" ,python-pytest-pep8)))
+ (propagated-inputs
+ `(("python-pyflakes" ,python-pyflakes)))
+ (home-page "https://github.com/fschulze/pytest-flakes")
+ (synopsis "Py.test plugin to check source code with pyflakes")
+ (description "Pytest plugin for checking Python source code with
pyflakes.")
+ (license license:expat)))
+
+ (define-public python2-pytest-flakes
+ (package-with-python2 python-pytest-flakes))
+
+ (define-public python2-coverage-test-runner
+ (package
+ (name "python2-coverage-test-runner")
+ (version "1.11")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "http://git.liw.fi/cgi-bin/cgit/cgit.cgi/"
+ "coverage-test-runner/snapshot/coverage-test-runner-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "0y1m7z3dl63kmhcmydl1mwg0hacnf6ghrx9dah17j9iasssfa3g7"))))
+ (build-system python-build-system)
+ (arguments
+ `(#:python ,python-2
+ #:phases
+ (modify-phases %standard-phases
+ (replace 'check
+ (lambda _
+ (zero? (system* "./testrun")))))))
+ (propagated-inputs
+ `(("python2-coverage" ,python2-coverage)))
+ (home-page "https://liw.fi/coverage-test-runner/")
+ (synopsis "Python module for running unit tests")
+ (description "@code{CoverageTestRunner} is a python module for running
+ unit tests and failing them if the unit test module does not exercise all
+ statements in the module it tests.")
+ (license license:gpl3+)))
+
+ (define-public python-pylint
+ (package
+ (name "python-pylint")
+ (version "1.7.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://github.com/PyCQA/pylint/archive/pylint-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "0mzn1czhf1mgr2wiqfihb274sja02h899b85kywdpivppa9nwrmp"))))
+ (build-system python-build-system)
+ (native-inputs
+ `(("python-pytest" ,python-pytest)
+ ("python-pytest-runner" ,python-pytest-runner)
+ ("python-tox" ,python-tox)))
+ (propagated-inputs
+ `(("python-astroid" ,python-astroid)
+ ("python-isort" ,python-isort)
+ ("python-mccabe" ,python-mccabe)
+ ("python-six" ,python-six)))
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (replace 'check
+ (lambda _
+ ;; Somehow, tests for python2-pylint
+ ;; fail if run from the build directory
+ (let ((work "/tmp/work"))
+ (mkdir-p work)
+ (setenv "PYTHONPATH"
+ (string-append (getenv "PYTHONPATH") ":" work))
+ (copy-recursively "." work)
+ (with-directory-excursion "/tmp"
+ (zero? (system* "python" "-m" "unittest" "discover"
+ "-s" (string-append work
"/pylint/test")
+ "-p" "*test_*.py")))))))))
+ (home-page "https://github.com/PyCQA/pylint")
+ (synopsis "Python source code analyzer which looks for coding standard
+ errors")
+ (description "Pylint is a Python source code analyzer which looks
+ for programming errors, helps enforcing a coding standard and sniffs
+ for some code smells (as defined in Martin Fowler's Refactoring book).
+
+ Pylint has many rules enabled by default, way too much to silence them
+ all on a minimally sized program. It's highly configurable and handle
+ pragmas to control it from within your code. Additionally, it is
+ possible to write plugins to add your own checks.")
+ (properties `((python2-variant . ,(delay python2-pylint))))
+ (license license:gpl2+)))
+
+ (define-public python2-pylint
+ (let ((pylint (package-with-python2
+ (strip-python2-variant python-pylint))))
+ (package (inherit pylint)
+ (propagated-inputs
+ `(("python2-backports-functools-lru-cache"
+ ,python2-backports-functools-lru-cache)
+ ("python2-configparser" ,python2-configparser)
+ ,@(package-propagated-inputs pylint))))))
+
+ (define-public python-paramunittest
+ (package
+ (name "python-paramunittest")
+ (version "0.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "ParamUnittest" version))
+ (sha256
+ (base32
+ "0kp793hws5xv1wvycxq7jw2pwy36f35k39jg8hx5qikij5a0jid1"))))
+ (build-system python-build-system)
+ (home-page
+ "https://github.com/rik0/ParamUnittest")
+ (synopsis
+ "Simple extension to have parametrized unit tests")
+ (description
+ "This package allows to create parametrized unit-tests that work with
the standard
+ unittest package. A parametrized test case is automatically converted to
multiple test
+ cases. Since they are TestCase subclasses, they work with other test suites
that
+ recognize TestCases.")
+ (license license:bsd-2)))
+
+ (define-public python2-python-paramunittest
+ (package-with-python2 python-paramunittest))
+
+ (define-public python-pytest-warnings
+ (package
+ (name "python-pytest-warnings")
+ (version "0.2.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "pytest-warnings" version))
+ (sha256
+ (base32
+ "0gf2dpahpl5igb7jh1sr9acj3z3gp7zahqdqb69nk6wx01c8kc1g"))))
+ (build-system python-build-system)
+ (propagated-inputs
- `(("pytest" ,python-pytest-3.0)))
++ `(("pytest" ,python-pytest)))
+ (home-page "https://github.com/fschulze/pytest-warnings")
+ (synopsis "Pytest plugin to list Python warnings in pytest report")
+ (description
+ "Python-pytest-warnings is a pytest plugin to list Python warnings in
+ pytest report.")
+ (license license:expat)))
+
+ (define-public python2-pytest-warnings
+ (package-with-python2 python-pytest-warnings))
+
+ (define-public python-pytest-capturelog
+ (package
+ (name "python-pytest-capturelog")
+ (version "0.7")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "pytest-capturelog" version ".tar.gz"))
+ (sha256
+ (base32
+ "038049nyjl7di59ycnxvc9nydivc5m8np3hqq84j2iirkccdbs5n"))))
+ (build-system python-build-system)
+ (propagated-inputs
- `(("pytest" ,python-pytest-3.0)))
++ `(("pytest" ,python-pytest)))
+ (home-page "http://bitbucket.org/memedough/pytest-capturelog/overview")
+ (synopsis "Pytest plugin to catch log messages")
+ (description
+ "Python-pytest-catchlog is a pytest plugin to catch log messages.")
+ (license license:expat)))
+
+ (define-public python2-pytest-capturelog
+ (package-with-python2 python-pytest-capturelog))
+
+ (define-public python-pytest-catchlog
+ (package
+ (name "python-pytest-catchlog")
+ (version "1.2.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "pytest-catchlog" version ".zip"))
+ (sha256
+ (base32
+ "1w7wxh27sbqwm4jgwrjr9c2gy384aca5jzw9c0wzhl0pmk2mvqab"))))
+ (build-system python-build-system)
+ (native-inputs
+ `(("unzip" ,unzip)))
+ (propagated-inputs
- `(("pytest" ,python-pytest-3.0)))
++ `(("pytest" ,python-pytest)))
+ (home-page "https://github.com/eisensheng/pytest-catchlog")
+ (synopsis "Pytest plugin to catch log messages")
+ (description
+ "Python-pytest-catchlog is a pytest plugin to catch log messages. This
is
+ a fork of pytest-capturelog.")
+ (license license:expat)))
+
+ (define-public python2-pytest-catchlog
+ (package-with-python2 python-pytest-catchlog))
+
+ (define-public python-nosexcover
+ (package
+ (name "python-nosexcover")
+ (version "1.0.11")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "nosexcover" version))
+ (sha256
+ (base32
+ "10xqr12qv62k2flxwqhh8cr00cjhn7sfjrm6p35gd1x5bmjkr319"))))
+ (build-system python-build-system)
+ (propagated-inputs
+ `(("python-coverage" ,python-coverage)
+ ("python-nose" ,python-nose)))
+ (home-page "http://github.com/cmheisel/nose-xcover")
+ (synopsis "Extends nose.plugins.cover to add Cobertura-style XML reports")
+ (description "Nose-xcover is a companion to the built-in
+ @code{nose.plugins.cover}. This plugin will write out an XML coverage report
+ to a file named coverage.xml.
+
+ It will honor all the options you pass to the Nose coverage plugin,
+ especially -cover-package.")
+ (license license:expat)))
+
+ (define-public python2-nosexcover
+ (package-with-python2 python-nosexcover))
+
+ (define-public python-discover
+ (package
+ (name "python-discover")
+ (version "0.4.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://pypi.python.org/packages/source/d/discover/discover-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "0y8d0zwiqar51kxj8lzmkvwc3b8kazb04gk5zcb4nzg5k68zmhq5"))))
+ (build-system python-build-system)
+ (home-page "http://pypi.python.org/pypi/discover/")
+ (synopsis
+ "Python test discovery for unittest")
+ (description
+ "Discover provides test discovery for unittest, a feature that has been
+ backported from Python 2.7 for Python 2.4+.")
+ (license license:bsd-3)))
+
+ (define-public python2-discover
+ (package-with-python2 python-discover))
+
+ (define-public behave
+ (package
+ (name "behave")
+ (version "1.2.5")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "behave" version ".tar.bz2"))
+ (sha256
+ (base32
+ "1iypp6z46r19n4xmgx6m1lwmlpfjh8vapq8izigrqlaarvp2y64c"))))
+ (build-system python-build-system)
+ (propagated-inputs
+ `(("python-six" ,python-six)
+ ("python-parse" ,python-parse)
+ ("python-parse-type" ,python-parse-type)))
+ (arguments `(#:tests? #f)) ;TODO: tests require nose>=1.3 and
+ ;PyHamcrest>=1.8
+ (home-page "https://github.com/behave/behave")
+ (synopsis "Python behavior-driven development")
+ (description
+ "Behave is a tool for behavior-driven development in python.
+ Behavior-driven development (or BDD) is an agile software development
+ technique that encourages collaboration between developers, QA and
+ non-technical or business participants in a software project. Behave uses
+ tests written in a natural language style, backed up by Python code.")
+ (license license:x11)))
+
+ (define-public python-behave-web-api
+ (package
+ (name "python-behave-web-api")
+ (version "1.0.6")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "behave-web-api" version))
+ (sha256
+ (base32
+ "03kpq2xsy1gab3jy0dccbxlsg7vwfy4lagss0qldwmx3xz6b3i19"))))
+ (build-system python-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'fix-dependencies
+ (lambda _
+ (substitute* "setup.py"
+ (("'wheel'") "") ; We don't use it.
+ (("'ordereddict==1.1'") ""))))))) ; Python >= 2.7 has it
built-in.
+ (propagated-inputs
+ `(("behave" ,behave)
+ ("python-requests" ,python-requests)))
+ (home-page "https://github.com/jefersondaniel/behave-web-api")
+ (synopsis "Provides testing for JSON APIs with Behave for Python")
+ (description "This package provides testing utility modules for testing
+ JSON APIs with Behave.")
+ (license license:expat)))
+
+ (define-public python2-behave-web-api
+ (package-with-python2 python-behave-web-api))
+
+ (define-public python-rednose
+ (package
+ (name "python-rednose")
+ (version "1.2.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "rednose" version))
+ (sha256
+ (base32
+ "0b0bsna217lr1nykyhl5fgjly15zhdvqd4prg4wy1zrgfv7al6m0"))))
+ (build-system python-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'fix-deps
+ (lambda _
+ ;; See <https://github.com/JBKahn/rednose/issues/12>
+ (substitute* "setup.py"
+ (("python-termstyle") "termstyle"))
+ #t)))))
+ (propagated-inputs
+ `(("python-colorama" ,python-colorama)
+ ("python-termstyle" ,python-termstyle)))
+ (native-inputs
+ `(("python-six" ,python-six)
+ ("python-nose" ,python-nose)))
+ (home-page "https://github.com/JBKahn/rednose")
+ (synopsis "Colored output for Python nosetests")
+ (description "This package provides colored output for the
+ @command{nosetests} command of the Python Nose unit test framework.")
+ (license license:bsd-3)))
+
+ (define-public python2-rednose
+ (package-with-python2 python-rednose))
+
+ (define-public python-nose-randomly
+ (package
+ (name "python-nose-randomly")
+ (version "1.2.5")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "nose-randomly" version))
+ (sha256
+ (base32
+ "1cw9dlr1zh3w4i438kin7z0rm8092ki52hayisyc43h9pcplq7rn"))))
+ (build-system python-build-system)
+ (native-inputs
+ `(("python-nose" ,python-nose)
+ ("python-numpy" ,python-numpy)))
+ (home-page "https://github.com/adamchainz/nose-randomly")
+ (synopsis
+ "Nose plugin to randomly order tests and control random.seed")
+ (description
+ "This is a @code{Nose} plugin to randomly order tests which can be quite
+ powerful in discovering hidden flaws in the tests themselves, while helping to
+ reduce inter-test dependencies. It also helps in controlling
@code{random.seed},
+ by resetting it to a repeatable number for each test, enabling the tests to
+ create data based on random numbers and yet remain repeatable.")
+ (license license:bsd-3)))
+
+ (define-public python2-nose-randomly
+ (package-with-python2 python-nose-randomly))
+
+ (define-public python-nose-timer
+ (package
+ (name "python-nose-timer")
+ (version "0.7.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "nose-timer" version))
+ (patches
+ (search-patches
+ ;; This patch will not be needed in the next version.
+ ;; It is taken from the master branch.
+ "python-nose-timer-drop-ordereddict.patch"))
+ (sha256
+ (base32
+ "1s32ymsnby8lz2qk55ifj9zi50dqcg6swnj5cz2rmwxg2jsslsxp"))))
+ (build-system python-build-system)
+ (propagated-inputs
+ `(("python-nose" ,python-nose)
+ ("python-termcolor" ,python-termcolor)))
+ (home-page "https://github.com/mahmoudimus/nose-timer")
+ (synopsis "Timer plugin for nosetests")
+ (description "Shows how much time was needed to run individual tests.")
+ (license license:expat)))
+
+ (define-public python2-nose-timer
+ (package-with-python2 python-nose-timer))
+
+ (define-public python-freezegun
+ (package
+ (name "python-freezegun")
+ (version "0.3.8")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "freezegun" version))
+ (sha256
+ (base32
+ "1sf38d3ibv1jhhvr52x7dhrsiyqk1hm165dfv8w8wh0fhmgxg151"))))
+ (build-system python-build-system)
+ (native-inputs
+ `(("python-mock" ,python-mock)
+ ("python-nose" ,python-nose)
+ ("python-coverage" ,python-coverage)))
+ (propagated-inputs
+ `(("python-six" ,python-six)
+ ("python-dateutil" ,python-dateutil)))
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ ;; The tests are normally executed via `make test`, but the PyPi
+ ;; package does not include the Makefile.
+ (replace 'check
+ (lambda _
+ (zero? (system* "nosetests" "./tests/")))))))
+ (home-page "https://github.com/spulec/freezegun")
+ (synopsis "Test utility for mocking the datetime module")
+ (description
+ "FreezeGun is a library that allows your python tests to travel through
+ time by mocking the datetime module.")
+ (license license:asl2.0)))
+
+ (define-public python2-freezegun
+ (package-with-python2 python-freezegun))
+
+ (define-public python-flexmock
+ (package
+ (name "python-flexmock")
+ (version "0.10.2")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "flexmock" version))
+ (sha256
+ (base32
+ "0arc6njvs6i9v9hgvzk5m50296g7zy5m9d7pyb43vdsdgxrci5gy"))))
+ (build-system python-build-system)
+ (home-page "https://flexmock.readthedocs.org")
+ (synopsis "Testing library for Python")
+ (description
+ "flexmock is a testing library for Python that makes it easy to create
+ mocks, stubs and fakes.")
+ (license license:bsd-3)))
+
+ (define-public python2-flexmock
+ (package-with-python2 python-flexmock))
+
+ (define-public python-flaky
+ (package
+ (name "python-flaky")
+ (version "3.4.0")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "flaky" version))
+ (sha256
+ (base32
+ "18pkmf79rfkfpy1d2rrx3v55nxj762ilyk9rvd6s6dccxw58imsa"))))
+ (build-system python-build-system)
+ (arguments
+ ;; TODO: Tests require 'coveralls' and 'genty' which are not in Guix yet.
+ '(#:tests? #f))
+ (home-page "https://github.com/box/flaky")
+ (synopsis "Automatically rerun flaky tests")
+ (description
+ "Flaky is a plugin for @code{nose} or @code{py.test} that automatically
+ reruns flaky tests.
+
+ Ideally, tests reliably pass or fail, but sometimes test fixtures must rely
+ on components that aren't 100% reliable. With flaky, instead of removing
+ those tests or marking them to @code{@@skip}, they can be automatically
+ retried.")
+ (license license:asl2.0)))
+
+ (define-public python2-flaky
+ (package-with-python2 python-flaky))
diff --cc gnu/packages/databases.scm
index 7fcef3f,b825a24..4f34141
--- a/gnu/packages/databases.scm
+++ b/gnu/packages/databases.scm
@@@ -1866,3 -1928,577 +1928,578 @@@ and web services platform functionality
;; configure: error: ... can only be build on 64bit platforms
(supported-systems '("x86_64-linux" "mips64el-linux" "aarch64-linux"))
(license license:gpl2)))
+
+ (define-public r-rmysql
+ (package
+ (name "r-rmysql")
+ (version "0.10.13")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (cran-uri "RMySQL" version))
+ (sha256
+ (base32
+ "1j0vr2l4s02cg2hzgr3pla96pjj4h85sxw28lidy58rg5awnsf82"))))
+ (properties `((upstream-name . "RMySQL")))
+ (build-system r-build-system)
+ (native-inputs
+ `(("pkg-config" ,pkg-config)))
+ (inputs
+ `(("mariadb" ,mariadb)
+ ("zlib" ,zlib)))
+ (propagated-inputs
+ `(("r-dbi" ,r-dbi)))
+ (home-page "https://github.com/r-dbi/RMySQL")
+ (synopsis "Database interface and MySQL driver for R")
+ (description
+ "This package provides a DBI interface to MySQL / MariaDB. The RMySQL
+ package contains an old implementation based on legacy code from S-PLUS which
+ is being phased out. A modern MySQL client based on Rcpp is available from
+ the RMariaDB package.")
+ (license license:gpl2)))
+
+ (define-public python-ccm
+ (package
+ (name "python-ccm")
+ (version "2.1.6")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "ccm" version))
+ (sha256
+ (base32
+ "177dfxsmk3k4cih6fh6v8d91bh4nqx7ns6pc07w7m7i3cvdx3c8n"))))
+ (build-system python-build-system)
+ (propagated-inputs
+ `(("python-pyyaml" ,python-pyyaml)
+ ;; Not listed in setup.py, but used in ccmlib/node.py for full
+ ;; functionality
+ ("python-psutil" ,python-psutil)
+ ("python-six" ,python-six)))
+ (home-page "https://github.com/pcmanus/ccm")
+ (synopsis "Cassandra Cluster Manager for Apache Cassandra clusters on
+ localhost")
+ (description "Cassandra Cluster Manager is a development tool for testing
+ local Cassandra clusters. It creates, launches and removes Cassandra clusters
+ on localhost.")
+ (license license:asl2.0)))
+
+ (define-public python2-ccm
+ (package-with-python2 python-ccm))
+
+ (define-public python2-pysqlite
+ (package
+ (name "python2-pysqlite")
+ (version "2.8.3")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "pysqlite" version))
+ (sha256
+ (base32
+ "1424gwq9sil2ffmnizk60q36vydkv8rxs6m7xs987kz8cdc37lqp"))))
+ (build-system python-build-system)
+ (inputs
+ `(("sqlite" ,sqlite)))
+ (arguments
+ `(#:python ,python-2 ; incompatible with Python 3
+ #:tests? #f)) ; no test target
+ (home-page "https://github.com/ghaering/pysqlite")
+ (synopsis "SQLite bindings for Python")
+ (description
+ "Pysqlite provides SQLite bindings for Python that comply to the
+ Database API 2.0T.")
+ (license license:zlib)))
+
+ (define-public python-sqlalchemy
+ (package
+ (name "python-sqlalchemy")
+ (version "1.0.12")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://pypi.python.org/packages/source/S/"
+ "SQLAlchemy/SQLAlchemy-" version ".tar.gz"))
+ (sha256
+ (base32
+ "1l8qclhd0s90w3pvwhi5mjxdwr5j7gw7cjka2fx6f2vqmq7f4yb6"))))
+ (build-system python-build-system)
+ (native-inputs
+ `(("python-cython" ,python-cython) ;for c extensions
+ ("python-pytest" ,python-pytest)
+ ("python-mock" ,python-mock))) ;for tests
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (replace 'check
+ (lambda _ (zero? (system* "py.test")))))))
+ (home-page "http://www.sqlalchemy.org")
+ (synopsis "Database abstraction library")
+ (description
+ "SQLAlchemy is the Python SQL toolkit and Object Relational Mapper that
+ gives application developers the full power and flexibility of SQL. It
+ provides a full suite of well known enterprise-level persistence patterns,
+ designed for efficient and high-performing database access, adapted into a
+ simple and Pythonic domain language.")
+ (license license:x11)))
+
+ (define-public python2-sqlalchemy
+ (package-with-python2 python-sqlalchemy))
+
+ (define-public python-sqlalchemy-utils
+ (package
+ (name "python-sqlalchemy-utils")
+ (version "0.32.13")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "SQLAlchemy-Utils" version))
+ (sha256
+ (base32
+ "0vsib7gidjamzsz6w4s5pdhxzxsrkghjnm4sqwk94igjrl3i5ixj"))))
+ (build-system python-build-system)
+ (arguments
+ '(#:tests? #f)) ; FIXME: Many tests require a running database server.
+ ;; #:phases
+ ;; (modify-phases %standard-phases
+ ;; (replace 'check
+ ;; (lambda _
+ ;; (zero? (system* "py.test" "sqlalchemy_utils" "tests")))))
+ (propagated-inputs
+ `(("python-six" ,python-six)
+ ("python-sqlalchemy" ,python-sqlalchemy)))
+ (native-inputs
+ `(("python-dateutil" ,python-dateutil)
+ ("python-flexmock" ,python-flexmock)
+ ("python-psycopg2" ,python-psycopg2)
+ ("python-pytest" ,python-pytest)
+ ("python-pytz" ,python-pytz)))
+ (home-page "https://github.com/kvesteri/sqlalchemy-utils")
+ (synopsis "Various utility functions for SQLAlchemy")
+ (description
+ "SQLAlchemy-utils provides various utility functions and custom data
types
+ for SQLAlchemy. SQLAlchemy is an SQL database abstraction library for Python.
+
+ You might also want to install the following optional dependencies:
+ @enumerate
+ @item @code{python-passlib}
+ @item @code{python-babel}
+ @item @code{python-cryptography}
+ @item @code{python-pytz}
+ @item @code{python-psycopg2}
+ @item @code{python-furl}
+ @item @code{python-flask-babel}
+ @end enumerate
+ ")
+ (license license:bsd-3)))
+
+ (define-public python2-sqlalchemy-utils
+ (package-with-python2 python-sqlalchemy-utils))
+
+ (define-public python-alembic
+ (package
+ (name "python-alembic")
+ (version "0.9.5")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "alembic" version))
+ (sha256
+ (base32
+ "01gx2syqbaxh4hr9pf7pxhlb6p36qaf99140dy19lsx1paxb9p4b"))))
+ (build-system python-build-system)
+ (native-inputs
+ `(("python-mock" ,python-mock)
+ ("python-pytest-cov" ,python-pytest-cov)))
+ (propagated-inputs
+ `(("python-dateutil" ,python-dateutil)
+ ("python-sqlalchemy" ,python-sqlalchemy)
+ ("python-mako" ,python-mako)
+ ("python-editor" ,python-editor)))
+ (home-page "http://bitbucket.org/zzzeek/alembic")
+ (synopsis
+ "Database migration tool for SQLAlchemy")
+ (description
+ "Alembic is a lightweight database migration tool for usage with the
+ SQLAlchemy Database Toolkit for Python.")
+ (license license:expat)))
+
+ (define-public python2-alembic
+ (package-with-python2 python-alembic))
+
+ (define-public python-pickleshare
+ (package
+ (name "python-pickleshare")
+ (version "0.5")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://pypi.python.org/packages/source/p/"
+ "pickleshare/pickleshare-" version ".tar.gz"))
+ (sha256
+ (base32 "11ljr90j3p6qswdrbl7p4cjb2i93f6vn0vx9anzpshsx0d2mggn0"))))
+ (build-system python-build-system)
+ (propagated-inputs
+ `(("python-pathpy" ,python-pathpy)))
+ (home-page "https://github.com/vivainio/pickleshare")
+ (synopsis "Tiny key value database with concurrency support")
+ (description
+ "PickleShare is a small ‘shelve’-like datastore with concurrency support.
+ Like shelve, a PickleShareDB object acts like a normal dictionary. Unlike
+ shelve, many processes can access the database simultaneously. Changing a
+ value in database is immediately visible to other processes accessing the same
+ database. Concurrency is possible because the values are stored in separate
+ files. Hence the “database” is a directory where all files are governed by
+ PickleShare.")
+ (license license:expat)))
+
+ (define-public python2-pickleshare
+ (package-with-python2 python-pickleshare))
+
+ (define-public python-apsw
+ (package
+ (name "python-apsw")
- (version "3.9.2-r1")
++ (version "3.20.1-r1")
+ (source
+ (origin
+ (method url-fetch)
- (uri (pypi-uri "apsw" version))
++ (uri (string-append "https://github.com/rogerbinns/apsw/archive/"
++ version ".tar.gz"))
+ (sha256
+ (base32
- "0w4jb0wpx785qw42r3h4fh7gl5w2968q48i7gygybsfxck8nzffs"))))
++ "00ai7m2pqi26qaflhz314d8k5i3syw7xzr145fhfl0crhyh6adz2"))))
+ (build-system python-build-system)
+ (inputs
+ `(("sqlite" ,sqlite)))
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (replace 'build
+ (lambda _
+ (zero?
+ (system* "python" "setup.py" "build"
"--enable-all-extensions"))))
+ (add-after 'build 'build-test-helper
+ (lambda _
+ (zero?
+ (system
+ (string-append "gcc -fPIC -shared -o ./testextension.sqlext "
+ "-I. -Isqlite3 src/testextension.c") ))))
+ (delete 'check)
+ (add-after 'install 'check
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (add-installed-pythonpath inputs outputs)
+ (zero? (system* "python" "setup.py" "test")))))))
+ (home-page "https://github.com/rogerbinns/apsw/")
+ (synopsis "Another Python SQLite Wrapper")
+ (description "APSW is a Python wrapper for the SQLite
+ embedded relational database engine. In contrast to other wrappers such as
+ pysqlite it focuses on being a minimal layer over SQLite attempting just to
+ translate the complete SQLite API into Python.")
+ (license license:zlib)))
+
+ (define-public python2-apsw
+ (package-with-python2 python-apsw))
+
+ (define-public python2-neo4j-driver
+ (package
+ (name "python2-neo4j-driver")
+ ;; NOTE: When upgrading to 1.5.0, please add a python3 variant.
+ (version "1.4.0")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "neo4j-driver" version))
+ (sha256
+ (base32
+ "011r1vh182p8mm83d8dz9rfnc3l7rf7fd00cyrbyfzi71jmc4g98"))))
+ (build-system python-build-system)
+ (arguments
+ `(#:python ,python-2))
+ (home-page "https://neo4j.com/developer/python/")
+ (synopsis "Neo4j driver code written in Python")
+ (description "This package provides the Neo4j Python driver that connects
+ to the database using Neo4j's binary protocol. It aims to be minimal, while
+ being idiomatic to Python.")
+ (license license:asl2.0)))
+
+ (define-public python2-py2neo
+ (package
+ (name "python2-py2neo")
+ (version "3.1.2")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "py2neo" version))
+ (sha256
+ (base32
+ "1f1q95vqcvlc3nsc33p841swnjdcjazddlq2dzi3qfnjqjrajxw1"))))
+ (build-system python-build-system)
+ (arguments
+ `(#:python ,python-2))
+ (home-page "http://py2neo.org")
+ (synopsis "Library and toolkit for working with Neo4j in Python")
+ (description "This package provides a client library and toolkit for
+ working with Neo4j from within Python applications and from the command
+ line. The core library has no external dependencies and has been carefully
+ designed to be easy and intuitive to use.")
+ (license license:asl2.0)))
+
+ (define-public python-psycopg2
+ (package
+ (name "python-psycopg2")
+ (version "2.7.3.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "psycopg2" version))
+ (sha256
+ (base32
+ "0rda1j02ds6s28752fhmpwg761sh6jsxi1gpczqkrd28cki1cywv"))))
+ (build-system python-build-system)
+ (arguments
+ ;; Tests would require a postgresql database "psycopg2_test"
+ ;; and a running postgresql database management service.
+ `(#:tests? #f)) ; TODO re-enable after providing a test-db.
+ (inputs
+ `(("postgresql" ,postgresql))) ; libpq
+ (home-page "http://initd.org/psycopg/")
+ (synopsis "Python PostgreSQL adapter")
+ (description
+ "psycopg2 is a thread-safe PostgreSQL adapter that implements DB-API
2.0. ")
+ (license license:lgpl3+)))
+
+ (define-public python2-psycopg2
+ (package-with-python2 python-psycopg2))
+
+ (define-public python-sadisplay
+ (package
+ (name "python-sadisplay")
+ (version "0.4.6")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "sadisplay" version))
+ (sha256
+ (base32
+ "0zqad2fl7q26p090qmqgmxbm6iwgf9zij1w8da1g3wdgjj72ql05"))))
+ (build-system python-build-system)
+ (propagated-inputs
+ `(("python-sqlalchemy" ,python-sqlalchemy)))
+ (native-inputs
+ `(("python-nose" ,python-nose)))
+ (home-page "https://bitbucket.org/estin/sadisplay")
+ (synopsis "SQLAlchemy schema displayer")
+ (description "This package provides a program to build Entity
+ Relationship diagrams from a SQLAlchemy model (or directly from the
+ database).")
+ (license license:bsd-3)))
+
+ (define-public python2-sadisplay
+ (package-with-python2 python-sadisplay))
+
+ (define-public python-mysqlclient
+ (package
+ (name "python-mysqlclient")
+ (version "1.3.10")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "mysqlclient" version))
+ (sha256
+ (base32
+ "0qkj570x4rbsblji6frvsvp2v1ap32dqzj1lq62zp9515ffsyaj5"))))
+ (build-system python-build-system)
+ (native-inputs
+ `(("mariadb" ,mariadb)
+ ("nose" ,python-nose)
+ ("mock" ,python-mock)
+ ("py.test" ,python-pytest)))
+ (inputs
+ `(("mysql" ,mysql)
+ ("libz" ,zlib)
+ ("openssl" ,openssl)))
+ (home-page "https://github.com/PyMySQL/mysqlclient-python")
+ (synopsis "MySQLdb is an interface to the popular MySQL database server
for Python")
+ (description "MySQLdb is an interface to the popular MySQL database server
+ for Python. The design goals are:
+ @enumerate
+ @item Compliance with Python database API version 2.0 [PEP-0249],
+ @item Thread-safety,
+ @item Thread-friendliness (threads will not block each other).
+ @end enumerate")
+ (license license:gpl2)))
+
+ (define-public python2-mysqlclient
+ (package-with-python2 python-mysqlclient))
+
+ (define-public python-hiredis
+ (package
+ (name "python-hiredis")
+ (version "0.2.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "hiredis" version))
+ (sha256
+ (base32
+ "1dfm2k9l9zar9nw9fwmm74zrgraxdxs04vx9li56fjcf289qx5fa"))))
+ (build-system python-build-system)
+ (arguments
+ ;; no tests
+ `(#:tests? #f))
+ (home-page "https://github.com/redis/hiredis-py")
+ (synopsis "Python extension that wraps protocol parsing code in hiredis")
+ (description "Python-hiredis is a python extension that wraps protocol
+ parsing code in hiredis. It primarily speeds up parsing of multi bulk
replies.")
+ (license license:bsd-3)))
+
+ (define-public python2-hiredis
+ (package-with-python2 python-hiredis))
+
+ (define-public python-fakeredis
+ (package
+ (name "python-fakeredis")
+ (version "0.8.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "fakeredis" version))
+ (sha256
+ (base32
+ "0zncahj3byyasyfx9i7k991ph0n0lq8v3a21pqri5qxn9564bk9r"))))
+ (build-system python-build-system)
+ (arguments
+ ;; no tests
+ `(#:tests? #f))
+ (home-page "https://github.com/jamesls/fakeredis")
+ (synopsis "Fake implementation of redis API for testing purposes")
+ (description "Fakeredis is a pure python implementation of the redis-py
+ python client that simulates talking to a redis server. This was created for
a
+ single purpose: to write unittests. Setting up redis is not hard, but many
time
+ you want to write unittests that do not talk to an external server (such as
+ redis). This module now allows tests to simply use this module as a
reasonable
+ substitute for redis.")
+ (license license:bsd-3)))
+
+ (define-public python2-fakeredis
+ (package-with-python2 python-fakeredis))
+
+ (define-public python-redis
+ (package
+ (name "python-redis")
+ (version "2.10.5")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "redis" version))
+ (sha256
+ (base32 "0csmrkxb29x7xs9b51zplwkkq2hwnbh9jns1g85dykn5rxmaxysx"))))
+ (build-system python-build-system)
+ ;; Tests require a running Redis server
+ (arguments '(#:tests? #f))
+ ;; As long as we are not running test, we do not need this input :-)
+ ;;(native-inputs
+ ;; `(("python-pytest" ,python-pytest)))
+ (home-page "https://github.com/andymccurdy/redis-py")
+ (synopsis "Redis Python client")
+ (description
+ "This package provides a Python interface to the Redis key-value store.")
+ (license license:expat)))
+
+ (define-public python2-redis
+ (package-with-python2 python-redis))
+
+ (define-public python-rq
+ (package
+ (name "python-rq")
+ (version "0.7.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "rq" version))
+ (sha256
+ (base32 "0gaq5pnh0zy46r8jvygi0ifbvz3pq6i7xla78ijcgjw0x77qzsdh"))))
+ (build-system python-build-system)
+ (propagated-inputs
+ `(("python-click" ,python-click)
+ ("python-redis" ,python-redis)))
+ (home-page "http://python-rq.org/")
+ (synopsis "Simple job queues for Python")
+ (description
+ "RQ (Redis Queue) is a simple Python library for queueing jobs and
+ processing them in the background with workers. It is backed by Redis and it
+ is designed to have a low barrier to entry.")
+ (license license:bsd-2)))
+
+ (define-public python2-rq
+ (package-with-python2 python-rq))
+
+ (define-public python-trollius-redis
+ (package
+ (name "python-trollius-redis")
+ (version "0.1.4")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "trollius_redis" version))
+ (sha256
+ (base32
+ "0k3vypszmgmaipgw9xscvgm79h2zd6p6ci8gdp5sxl6g5kbqr9fy"))))
+ (build-system python-build-system)
+ ;; TODO: Tests require packaging 'hiredis'.
+ (arguments '(#:tests? #f))
+ (home-page "https://github.com/benjolitz/trollius-redis")
+ (synopsis "Port of asyncio-redis to trollius")
+ (description "@code{trollius-redis} is a Redis client for Python
+ trollius. It is an asynchronious IO (PEP 3156) implementation of the
+ Redis protocol.")
+ (license license:bsd-2)))
+
+ (define-public python2-trollius-redis
+ (package-with-python2 python-trollius-redis))
+
+ (define-public python-sqlparse
+ (package
+ (name "python-sqlparse")
+ (version "0.2.4")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "sqlparse" version))
+ (sha256
+ (base32
+ "1v3xh0bkfhb262dbndgzhivpnhdwavdzz8jjhx9vx0xbrx2880nf"))))
+ (build-system python-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (replace 'check
+ (lambda _ (zero? (system* "py.test")))))))
+ (native-inputs
+ `(("python-pytest" ,python-pytest)))
+ (home-page "https://github.com/andialbrecht/sqlparse")
+ (synopsis "Non-validating SQL parser")
+ (description "Sqlparse is a non-validating SQL parser for Python. It
+ provides support for parsing, splitting and formatting SQL statements.")
+ (license license:bsd-3)))
+
+ (define-public python2-sqlparse
+ (package-with-python2 python-sqlparse))
+
+ (define-public python-sql
+ (package
+ (name "python-sql")
+ (version "0.9")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "python-sql" version))
+ (sha256
+ (base32
+ "0p6kaqj02vz0habmdx37zjk6hjxdfm8aw737zs059vvpr70ird87"))))
+ (build-system python-build-system)
+ (home-page "https://python-sql.tryton.org/")
+ (synopsis "Library to write SQL queries in a pythonic way")
+ (description "@code{python-sql} is a library to write SQL queries, that
+ transforms idiomatic python function calls to well-formed SQL queries.")
+ (license license:bsd-3)))
+
+ (define-public python2-sql
+ (package-with-python2 python-sql))
diff --cc gnu/packages/django.scm
index f983b1a,bbf231a..e118143
--- a/gnu/packages/django.scm
+++ b/gnu/packages/django.scm
@@@ -151,7 -154,7 +154,7 @@@ with arguments to the field constructor
`(("python-django" ,python-django)
("python-setuptools-scm" ,python-setuptools-scm)))
(propagated-inputs
-- `(("python-pytest" ,python-pytest-3.0)))
++ `(("python-pytest" ,python-pytest)))
(home-page "http://pytest-django.readthedocs.org/")
(synopsis "Django plugin for py.test")
(description "Pytest-django is a plugin for py.test that provides a set of
diff --cc gnu/packages/gcc.scm
index a4d181c,79e159f..dab2f99
--- a/gnu/packages/gcc.scm
+++ b/gnu/packages/gcc.scm
@@@ -136,10 -136,10 +136,11 @@@ where the OS part is overloaded to deno
(method url-fetch)
(uri (string-append "mirror://gnu/gcc/gcc-"
version "/gcc-" version ".tar.bz2"))
+ (patches (search-patches "gcc-4-compile-with-gcc-5.patch"))
(sha256
(base32
- "10k2k71kxgay283ylbbhhs51cl55zn2q38vj5pk4k950qdnirrlj"))))
+ "10k2k71kxgay283ylbbhhs51cl55zn2q38vj5pk4k950qdnirrlj"))
+ (patches (search-patches "gcc-fix-texi2pod.patch"))))
(build-system gnu-build-system)
;; Separate out the run-time support libraries because all the
diff --cc gnu/packages/package-management.scm
index cd81888,1570992..7c1d42c
--- a/gnu/packages/package-management.scm
+++ b/gnu/packages/package-management.scm
@@@ -35,7 -35,7 +35,8 @@@
#:use-module (gnu packages guile)
#:use-module (gnu packages file)
#:use-module (gnu packages backup)
+ #:use-module (gnu packages bootstrap) ;for 'bootstrap-guile-origin'
+ #:use-module (gnu packages check)
#:use-module (gnu packages compression)
#:use-module (gnu packages gnupg)
#:use-module (gnu packages databases)
diff --cc gnu/packages/python-crypto.scm
index 0000000,77409d8..98a869d
mode 000000,100644..100644
--- a/gnu/packages/python-crypto.scm
+++ b/gnu/packages/python-crypto.scm
@@@ -1,0 -1,637 +1,637 @@@
+ ;;; GNU Guix --- Functional package management for GNU
+ ;;; Copyright © 2015 Eric Dvorsak <address@hidden>
+ ;;; Copyright © 2015, 2016, 2017 Efraim Flashner <address@hidden>
+ ;;; Copyright © 2015, 2016, 2017 Leo Famulari <address@hidden>
+ ;;; Copyright © 2016, 2017 Marius Bakke <address@hidden>
+ ;;; Copyright © 2017 Ben Sturmfels <address@hidden>
+ ;;; Copyright © 2016 Sou Bunnbu <address@hidden>
+ ;;; Copyright © 2015 Cyril Roelandt <address@hidden>
+ ;;; Copyright © 2014, 2017 Eric Bavier <address@hidden>
+ ;;; Copyright © 2015, 2016 David Thompson <address@hidden>
+ ;;; Copyright © 2016, 2017 Tobias Geerinckx-Rice <address@hidden>
+ ;;; Copyright © 2016, 2017 ng0 <address@hidden>
+ ;;; Copyright © 2014, 2015 Mark H Weaver <address@hidden>
+ ;;; Copyright © 2015, 2016, 2017 Ricardo Wurmus <address@hidden>
+ ;;; Copyright © 2016 Danny Milosavljevic <address@hidden>
+ ;;; Copyright © 2016, 2017 Arun Isaac <address@hidden>
+ ;;; Copyright © 2017 Carlo Zancanaro <address@hidden>
+ ;;;
+ ;;; This file is part of GNU Guix.
+ ;;;
+ ;;; 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.
+ ;;;
+ ;;; 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 GNU Guix. If not, see <http://www.gnu.org/licenses/>.
+
+ (define-module (gnu packages python-crypto)
+ #:use-module (guix packages)
+ #:use-module (guix download)
+ #:use-module (guix git-download)
+ #:use-module (guix build-system python)
+ #:use-module (gnu packages)
+ #:use-module (gnu packages check)
+ #:use-module (gnu packages crypto)
+ #:use-module (gnu packages libffi)
+ #:use-module (gnu packages multiprecision)
+ #:use-module (gnu packages protobuf)
+ #:use-module (gnu packages python)
+ #:use-module (gnu packages time)
+ #:use-module (gnu packages tls)
+ #:use-module ((guix licenses) #:prefix license:)
+ #:use-module (srfi srfi-1))
+
+ (define-public python-passlib
+ (package
+ (name "python-passlib")
+ (version "1.7.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "passlib" version))
+ (sha256
+ (base32
+ "1q2khqpj9rlcgdmkypjdq1kswvhjf72bq0zk2cv669cc2dj8z51x"))))
+ (build-system python-build-system)
+ (native-inputs
+ `(("python-nose" ,python-nose)))
+ (propagated-inputs
+ `(("python-py-bcrypt" ,python-py-bcrypt)))
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-before 'check 'set-PYTHON_EGG_CACHE
+ ;; some tests require access to "$HOME/.cython"
+ (lambda* _ (setenv "PYTHON_EGG_CACHE" "/tmp") #t)))))
+ (home-page "https://bitbucket.org/ecollins/passlib")
+ (synopsis
+ "Comprehensive password hashing framework")
+ (description
+ "Passlib is a password hashing library for Python 2 & 3, which provides
+ cross-platform implementations of over 30 password hashing algorithms, as well
+ as a framework for managing existing password hashes. It's designed to be
+ useful for a wide range of tasks, from verifying a hash found in /etc/shadow,
+ to providing full-strength password hashing for multi-user application.")
+ (license license:bsd-3)))
+
+ (define-public python2-passlib
+ (package-with-python2 python-passlib))
+
+ (define-public python-py-bcrypt
+ (package
+ (name "python-py-bcrypt")
+ (version "0.4")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://pypi.python.org/packages/source/p/py-bcrypt/py-bcrypt-"
+ version
+ ".tar.gz"))
+ (sha256
+ (base32
+ "0y6smdggwi5s72v6p1nn53dg6w05hna3d264cq6kas0lap73p8az"))))
+ (build-system python-build-system)
+ (home-page "https://code.google.com/p/py-bcrypt")
+ (synopsis
+ "Bcrypt password hashing and key derivation")
+ (description
+ "A python wrapper of OpenBSD's Blowfish password hashing code. This
+ system hashes passwords using a version of Bruce Schneier's Blowfish block
+ cipher with modifications designed to raise the cost of off-line password
+ cracking and frustrate fast hardware implementation. The computation cost of
+ the algorithm is parametised, so it can be increased as computers get faster.
+ The intent is to make a compromise of a password database less likely to
+ result in an attacker gaining knowledge of the plaintext passwords (e.g. using
+ John the Ripper).")
+ ;; "sha2.c" is under BSD-3;
+ ;; "blowfish.c" and "bcrypt.c" are under BSD-4;
+ ;; the rest is under ISC.
+ (license (list license:isc license:bsd-3 license:bsd-4))))
+
+ (define-public python2-py-bcrypt
+ (package-with-python2 python-py-bcrypt))
+
+ (define-public python-paramiko
+ (package
+ (name "python-paramiko")
+ (version "2.1.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "paramiko" version))
+ (sha256
+ (base32
+ "04734n0wy3hxk6rij4fr29in5jmr70nxpc7pqi2ksbjysfz4kbjz"))))
+ (build-system python-build-system)
+ (arguments
+ '(#:phases
+ (modify-phases %standard-phases
+ (replace 'check
+ (lambda _
+ (zero? (system* "python" "test.py")))))))
+ (propagated-inputs
+ `(("python-pyasn1" ,python-pyasn1)
+ ("python-cryptography" ,python-cryptography)))
+ (home-page "http://www.paramiko.org/")
+ (synopsis "SSHv2 protocol library")
+ (description "Paramiko is a python implementation of the SSHv2 protocol,
+ providing both client and server functionality. While it leverages a Python C
+ extension for low level cryptography (PyCrypto), Paramiko itself is a pure
+ Python interface around SSH networking concepts.")
+ (license license:lgpl2.1+)))
+
+ (define-public python2-paramiko
+ (package-with-python2 python-paramiko))
+
+ (define-public python-ecdsa
+ (package
+ (name "python-ecdsa")
+ (version "0.13")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://pypi.python.org/packages/source/e/ecdsa/ecdsa-"
+ version
+ ".tar.gz"))
+ (sha256
+ (base32
+ "1yj31j0asmrx4an9xvsaj2icdmzy6pw0glfpqrrkrphwdpi1xkv4"))))
+ (build-system python-build-system)
+ (inputs
+ `(("openssl" ,openssl)))
+ (home-page
+ "https://github.com/warner/python-ecdsa")
+ (synopsis
+ "ECDSA cryptographic signature library (pure python)")
+ (description
+ "This is an easy-to-use implementation of ECDSA cryptography (Elliptic
+ Curve Digital Signature Algorithm), implemented purely in Python. With this
+ library, you can quickly create keypairs (signing key and verifying key), sign
+ messages, and verify the signatures. The keys and signatures are very short,
+ making them easy to handle and incorporate into other protocols.")
+ (license license:expat)))
+
+ (define-public python2-ecdsa
+ (package-with-python2 python-ecdsa))
+
+ ;;; Pycrypto is abandoned upstream:
+ ;;;
+ ;;; https://github.com/dlitz/pycrypto/issues/173
+ ;;;
+ ;;; TODO Remove this package from GNU Guix.
+ (define-public python-pycrypto
+ (package
+ (name "python-pycrypto")
+ (version "2.6.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "pycrypto" version))
+ (patches (search-patches "python-pycrypto-CVE-2013-7459.patch"))
+ (sha256
+ (base32
+ "0g0ayql5b9mkjam8hym6zyg6bv77lbh66rv1fyvgqb17kfc1xkpj"))))
+ (build-system python-build-system)
+ (inputs
+ `(("python" ,python)
+ ("gmp" ,gmp)))
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-before 'build 'set-build-env
+ ;; pycrypto runs an autoconf configure script behind the scenes
+ (lambda _ (setenv "CONFIG_SHELL" (which "bash")) #t)))))
+ (home-page "http://www.pycrypto.org/")
+ (synopsis "Cryptographic modules for Python")
+ (description
+ "Pycrypto is a collection of both secure hash functions (such as SHA256
+ and RIPEMD160), and various encryption algorithms (AES, DES, RSA, ElGamal,
+ etc.). The package is structured to make adding new modules easy.")
+ (license license:public-domain)))
+
+ (define-public python2-pycrypto
+ (let ((pycrypto (package-with-python2 python-pycrypto)))
+ (package (inherit pycrypto)
+ (inputs
+ `(("python" ,python-2)
+ ,@(alist-delete
+ "python"
+ (package-inputs pycrypto)))))))
+
+ (define-public python-keyring
+ (package
+ (name "python-keyring")
+ (version "8.7")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "keyring" version))
+ (sha256
+ (base32
+ "0482rmi2x6p78wl2kz8qzyq21xz1sbbfwnv5x7dggar4vkwxhzfx"))))
+ (build-system python-build-system)
+ (native-inputs
+ `(("python-setuptools-scm" ,python-setuptools-scm)))
+ (propagated-inputs
+ `(("python-pycrypto" ,python-pycrypto)))
+ (arguments
+ `(#:tests? #f)) ;TODO: tests require pytest
+ (home-page "https://github.com/jaraco/keyring")
+ (synopsis "Store and access your passwords safely")
+ (description
+ "The Python keyring lib provides a easy way to access the system keyring
+ service from python. It can be used in any application that needs safe
+ password storage.")
+ ;; "MIT" and PSF dual license
+ (license license:x11)))
+
+ (define-public python2-keyring
+ (package-with-python2 python-keyring))
+
+ (define-public python-certifi
+ (package
+ (name "python-certifi")
+ (version "2017.1.23")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "certifi" version))
+ (sha256
+ (base32
+ "1klrzl3hgvcf2mjk00g0k3kk1p2z27vzwnxivwar4vhjmjvpz1w1"))))
+ (build-system python-build-system)
+ (home-page "https://certifi.io/")
+ (synopsis "Python CA certificate bundle")
+ (description
+ "Certifi is a Python library that contains a CA certificate bundle, which
+ is used by the Requests library to verify HTTPS requests.")
+ (license license:asl2.0)))
+
+ (define-public python2-certifi
+ (package-with-python2 python-certifi))
+
+ (define-public python-cryptography-vectors
+ (package
+ (name "python-cryptography-vectors")
+ (version "2.0.3")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "cryptography_vectors" version))
+ (sha256
+ (base32
+ "1qa117fs1yd50zn2cfxh7d9l999ds0z4h83m9m7j4fk6ffm33f5y"))))
+ (build-system python-build-system)
+ (home-page "https://github.com/pyca/cryptography")
+ (synopsis "Test vectors for the cryptography package")
+ (description
+ "This package contains test vectors for the cryptography package.")
+ ;; Distributed under either BSD-3 or ASL2.0
+ (license (list license:bsd-3 license:asl2.0))))
+
+ (define-public python2-cryptography-vectors
+ (package-with-python2 python-cryptography-vectors))
+
+ (define-public python-cryptography
+ (package
+ (name "python-cryptography")
+ (version "2.0.3")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "cryptography" version))
+ (sha256
+ (base32
+ "0fnck37zyvbzmccbp7w3jy27jgmij1992j5wyy3gxhw6a11b4jyh"))))
+ (build-system python-build-system)
+ (inputs
+ `(("openssl" ,openssl)))
+ (propagated-inputs
+ `(("python-asn1crypto" ,python-asn1crypto)
+ ("python-cffi" ,python-cffi)
+ ("python-six" ,python-six)
+ ("python-idna" ,python-idna)
+ ("python-iso8601" ,python-iso8601)))
+ (native-inputs
+ `(("python-cryptography-vectors" ,python-cryptography-vectors)
+ ("python-hypothesis" ,python-hypothesis)
+ ("python-pretend" ,python-pretend)
+ ("python-pytz" ,python-pytz)
- ("python-pytest" ,python-pytest-3.0)))
++ ("python-pytest" ,python-pytest)))
+ (home-page "https://github.com/pyca/cryptography")
+ (synopsis "Cryptographic recipes and primitives for Python")
+ (description
+ "cryptography is a package which provides cryptographic recipes and
+ primitives to Python developers. It aims to be the “cryptographic standard
+ library” for Python. The package includes both high level recipes, and low
+ level interfaces to common cryptographic algorithms such as symmetric ciphers,
+ message digests and key derivation functions.")
+ ;; Distributed under either BSD-3 or ASL2.0
+ (license (list license:bsd-3 license:asl2.0))
+ (properties `((python2-variant . ,(delay python2-cryptography))))))
+
+ (define-public python2-cryptography
+ (let ((crypto (package-with-python2
+ (strip-python2-variant python-cryptography))))
+ (package (inherit crypto)
+ (propagated-inputs
+ `(("python2-ipaddress" ,python2-ipaddress)
+ ("python2-backport-ssl-match-hostname"
+ ,python2-backport-ssl-match-hostname)
+ ("python2-enum34" ,python2-enum34)
+ ,@(package-propagated-inputs crypto))))))
+
+ (define-public python-pyopenssl
+ (package
+ (name "python-pyopenssl")
+ (version "17.3.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "pyOpenSSL" version))
+ (sha256
+ (base32
+ "0xkc1wfnpg6abzllivg3ylhc63npjdy1v81f4kc08bm8cj80nqr9"))))
+ (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)
+ (zero? (system* "py.test" "-v" "-k"
+ (string-append
+ ;; This test tries to look up certificates from
+ ;; the compiled-in default path in OpenSSL,
which
+ ;; does not exist in the build environment.
+ "not test_fallback_default_verify_paths "
+ ;; This test attempts to make a connection to
+ ;; an external web service.
+ "and not test_set_default_verify_paths"))))))))
+ (propagated-inputs
+ `(("python-cryptography" ,python-cryptography)
+ ("python-six" ,python-six)))
+ (inputs
+ `(("openssl" ,openssl)))
+ (native-inputs
+ `(("python-flaky" ,python-flaky)
+ ("python-pretend" ,python-pretend)
- ("python-pytest" ,python-pytest-3.0)))
++ ("python-pytest" ,python-pytest)))
+ (home-page "https://github.com/pyca/pyopenssl")
+ (synopsis "Python wrapper module around the OpenSSL library")
+ (description
+ "PyOpenSSL is a high-level wrapper around a subset of the OpenSSL
+ library.")
+ (license license:asl2.0)))
+
+ (define-public python2-pyopenssl
+ (package-with-python2 python-pyopenssl))
+
+ (define-public python-axolotl-curve25519
+ (package
+ (name "python-axolotl-curve25519")
+ (version "0.1")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/tgalal/python-axolotl-curve25519")
+ (commit "e4a9c4de0eae27223200579c58d1f8f6d20637e2")))
+ (file-name (string-append name "-" version "-checkout"))
+ (sha256
+ (base32
+ "0agap5q0hmvf6cwzjqc05kw53pjgf6942pcivpazksmg1vk400ra"))))
+ (build-system python-build-system)
+ (arguments
+ `(;; Prevent creation of the egg. This works around
+ ;; https://debbugs.gnu.org/cgi/bugreport.cgi?bug=20765
+ #:configure-flags '("--root=/")))
+ (home-page "https://github.com/tgalal/python-axolotl-curve25519")
+ (synopsis "Python wrapper for curve25519 library")
+ (description "This is a python wrapper for the curve25519 library
+ with ed25519 signatures. The C code was pulled from
+ libaxolotl-android. At the moment this wrapper is meant for use by
+ python-axolotl.")
+ (license (list license:gpl3 ; Most files
+ license:bsd-3)))) ; curve/curve25519-donna.c
+
+ (define-public python2-axolotl-curve25519
+ (package-with-python2 python-axolotl-curve25519))
+
+ (define-public python-axolotl
+ (package
+ (name "python-axolotl")
+ (version "0.1.35")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://github.com/tgalal/python-axolotl/archive/"
+ version ".tar.gz"))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32 "1z8d89p7v40p4bwywjm9h4z28fdvra79ddw06azlkrfjbl7dxmz8"))))
+ (build-system python-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ ;; Don't install tests
+ (add-before 'install 'remove-tests
+ (lambda _
+ (for-each delete-file-recursively
+ '("axolotl/tests" "build/lib/axolotl/tests"))
+ #t)))))
+ (propagated-inputs
+ `(("python-axolotl-curve25519" ,python-axolotl-curve25519)
+ ("python-dateutil" ,python-dateutil)
+ ("python-protobuf" ,python-protobuf)
+ ("python-pycrypto" ,python-pycrypto)))
+ (home-page "https://github.com/tgalal/python-axolotl")
+ (synopsis "Python port of libaxolotl-android")
+ (description "This is a python port of libaxolotl-android. This
+ is a ratcheting forward secrecy protocol that works in synchronous and
+ asynchronous messaging environments.")
+ (license license:gpl3)))
+
+ (define-public python2-axolotl
+ (package-with-python2 python-axolotl))
+
+ ;; SlowAES isn't compatible with Python 3.
+ (define-public python2-slowaes
+ (package
+ (name "python2-slowaes")
+ (version "0.1a1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "slowaes" version))
+ (sha256
+ (base32
+ "02dzajm83a7lqgxf6r3hgj64wfmcxz8gs4nvgxpvj5n19kjqlrc3"))))
+ (build-system python-build-system)
+ (arguments `(#:python ,python-2))
+ (home-page "http://code.google.com/p/slowaes/")
+ (synopsis "Implementation of AES in Python")
+ (description "This package contains an implementation of AES in Python.
+ This implementation is slow (hence the project name) but still useful when
+ faster ones are not available.")
+ (license license:asl2.0)))
+
+ (define-public python-pyaes
+ (package
+ (name "python-pyaes")
+ (version "1.6.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "pyaes" version))
+ (sha256
+ (base32
+ "0bp9bjqy1n6ij1zb86wz9lqa1dhla8qr1d7w2kxyn7jbj56sbmcw"))))
+ (build-system python-build-system)
+ (home-page "https://github.com/ricmoo/pyaes")
+ (synopsis "Implementation of AES in Python")
+ (description "This package contains a pure-Python implementation of the
+ AES block cipher algorithm and the common modes of operation (CBC, CFB, CTR,
+ ECB and OFB).")
+ (license license:expat)))
+
+ (define-public python2-pyaes
+ (package-with-python2 python-pyaes))
+
+ (define-public python-asn1crypto
+ (package
+ (name "python-asn1crypto")
+ (version "0.22.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/wbond/asn1crypto/archive/"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "1kn910896l3knmilla1c9ly20q181s43w1ah08lzkbm1h3j6pcz0"))))
+ (build-system python-build-system)
+ (home-page "https://github.com/wbond/asn1crypto")
+ (synopsis "ASN.1 parser and serializer in Python")
+ (description "asn1crypto is an ASN.1 parser and serializer with
definitions
+ for private keys, public keys, certificates, CRL, OCSP, CMS, PKCS#3, PKCS#7,
+ PKCS#8, PKCS#12, PKCS#5, X.509 and TSP.")
+ (license license:expat)))
+
+ (define-public python2-asn1crypto
+ (package-with-python2 python-asn1crypto))
+
+ (define-public python-pynacl
+ (package
+ (name "python-pynacl")
+ (version "1.1.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "PyNaCl" version))
+ (modules '((guix build utils)))
+ ;; Remove bundled libsodium
+ (snippet '(delete-file-recursively "src/libsodium"))
+ (sha256
+ (base32
+ "135gz0020fqx8fbr9izpwyq49aww202nkqacq0cw61xz99sjpx9j"))))
+ (build-system python-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-before 'build 'use-system-sodium
+ (lambda _
+ (setenv "SODIUM_INSTALL" "system")
+ #t)))))
+ (native-inputs
+ `(("python-pytest" ,python-pytest)))
+ (propagated-inputs
+ `(("python-cffi" ,python-cffi)
+ ("python-six" ,python-six)
+ ("libsodium" ,libsodium)))
+ (home-page "https://github.com/pyca/pynacl/")
+ (synopsis "Python bindings to libsodium")
+ (description
+ "PyNaCl is a Python binding to libsodium, which is a fork of the
+ Networking and Cryptography library. These libraries have a stated goal
+ of improving usability, security and speed.")
+ (license license:asl2.0)))
+
+ (define-public python2-pgpdump
+ (package
+ (name "python2-pgpdump")
+ (version "1.5")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "pgpdump" version))
+ (sha256
+ (base32
+ "0s4nh8h7qsdj2yf29bspjs1zvxd4lcd11r6g11dp7fppgf2h0iqw"))))
+ (build-system python-build-system)
+
+ ;; Currently fails to build with Python 3.
+ (arguments `(#:python ,python-2))
+
+ (home-page "https://github.com/toofishes/python-pgpdump")
+ (synopsis "Python library for parsing PGP packets")
+ (description
+ "Python-pgpdump is an OpenPGP packet parser based on
+ @uref{http://www.mew.org/~kazu/proj/pgpdump/, pgpdump}. It notably supports:
+
+ @itemize
+ @item signature packets;
+ @item public key packets;
+ @item secret key packets;
+ @item trust, user ID, and user attribute packets;
+ @item ASCII-armor decoding and CRC check.
+ @end itemize\n")
+ (license license:bsd-3)))
+
+ (define-public python2-roca-detect
+ (package
+ (name "python2-roca-detect")
+ (version "1.0.8")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "roca-detect" version))
+ (sha256
+ (base32
+ "1di4akyw2lf5r8zfwvyhkilz8jv8g4b66rgaqwfabmjwma6gnw27"))))
+ (build-system python-build-system)
+ (native-inputs
+ ;; TODO: apk_parse_ph4, pyjks
+ `(("python2-dateutil" ,python2-dateutil)
+ ("python2-six" ,python2-six)
+ ("python2-cryptography" ,python2-cryptography)
+ ("python2-future" ,python2-future)
+ ("python2-coloredlogs" ,python2-coloredlogs)
+ ("python2-pgpdump" ,python2-pgpdump)))
+ (arguments
+ `(;; Basic testing routine is quite simple and works with Py3
+ ;; but the rest of the code that processes the different
+ ;; key formats and extracts the modulus for inspection is
+ ;; not yet fully py3 ready.
+ #:python ,python-2))
+ (home-page "https://github.com/crocs-muni/roca")
+ (synopsis "ROCA detection tool")
+ (description
+ "This tool is related to the paper entitled @i{Return of the
+ Coppersmith’s Attack: Practical Factorization of Widely Used RSA Moduli}. It
+ enables you to test public RSA keys for a presence of the described
+ vulnerability. Currently the tool supports the following key formats: X.509
+ Certificate (DER encoded, PEM encoded), RSA PEM (encoded private key, public
+ key), SSH public key, ASC-encoded OpenPGP key, APK Android application, LDIFF
+ file, and more.")
+ (license license:gpl3)))
diff --cc gnu/packages/python.scm
index d257d48,d461197..3f8dea4
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@@ -1904,137 -1448,30 +1477,75 @@@ matching them against a list of media-r
(define-public python2-mimeparse
(package-with-python2 python-mimeparse))
- (define-public python-nose
+ (define-public python-pafy
(package
- (name "python-nose")
- (version "1.3.7")
+ (name "python-pafy")
+ (version "0.5.3.1")
(source
- (origin
- (method url-fetch)
- (uri (pypi-uri "nose" version))
- (sha256
- (base32
- "164a43k7k2wsqqk1s6vavcdamvss4mz0vd6pwzv2h9n8rgwzxgzi"))))
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "pafy" version))
+ (sha256
+ (base32
+ "1a7dxi95m1043rxx1r5x3ngb66nwlq6aqcasyqqjzmmmjps4zrim"))))
(build-system python-build-system)
(arguments
- '(#:tests? #f)) ; FIXME: test suite fails
- (home-page "http://readthedocs.org/docs/nose/")
- (synopsis "Python testing library")
- (description
- "Nose extends the unittest library to make testing easier.")
- (license license:lgpl2.0+)))
-
- (define-public python2-nose
- (package-with-python2 python-nose))
-
- (define-public python-nose2
- (package
- (name "python-nose2")
- (version "0.6.5")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "nose2" version))
- (sha256
- (base32
- "1x4zjq1zlyrh8b9ba0cmafd3w94pxhid408kibyjd3s6h1lap6s7"))))
- (build-system python-build-system)
- (arguments `(#:tests? #f)) ; 'module' object has no attribute 'collector'
+ `(#:tests? #f)) ; Currently pafy can not find itself in the tests
(propagated-inputs
- `(("python-cov-core" ,python-cov-core)
- ("python-pytest-cov" ,python-pytest-cov)
- ("python-six" ,python-six)))
- (home-page "https://github.com/nose-devs/nose2")
- (synopsis "Next generation of nicer testing for Python")
+ ;; Youtube-dl is a python package which is imported in the file
+ ;; "backend_youtube_dl.py", therefore it needs to be propagated.
+ `(("youtube-dl" ,youtube-dl)))
+ (home-page "https://np1.github.io/pafy/")
+ (synopsis "Retrieve YouTube content and metadata")
(description
- "Nose2 is the next generation of nicer testing for Python, based on the
- plugins branch of unittest2. Nose2 aims to improve on nose by providing a
- better plugin api, being easier for users to configure, and simplifying
internal
- interfaces and processes.")
- (license license:bsd-2)))
-
- (define-public python2-nose2
- (package-with-python2 python-nose2))
+ "@code{pafy} is a python library to retrieve YouTube content and
metadata.")
+ (license license:lgpl3+)))
+(define-public python2-funcsigs
+ (package
+ (name "python2-funcsigs")
+ (version "1.0.2")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "funcsigs" version))
+ (sha256
+ (base32
+ "0l4g5818ffyfmfs1a924811azhjj8ax9xd1cffr1mzd3ycn0zfx7"))))
+ (build-system python-build-system)
+ (arguments
+ `(#:python ,python-2))
+ (native-inputs
+ `(("python2-unittest2" ,python2-unittest2)))
+ (home-page "http://funcsigs.readthedocs.org")
+ (synopsis "Python function signatures from PEP362")
+ (description
+ "Backport of @code{funcsigs} which was introduced in Python 3.3.")
+ (license license:asl2.0)))
+
- (define-public python-unittest2
++(define-public python-pafy
+ (package
- (name "python-unittest2")
- (version "1.1.0")
++ (name "python-pafy")
++ (version "0.5.3.1")
+ (source
+ (origin
+ (method url-fetch)
- (uri (pypi-uri "unittest2" version))
- (patches
- (search-patches "python-unittest2-python3-compat.patch"
- "python-unittest2-remove-argparse.patch"))
- (sha256
- (base32
- "0y855kmx7a8rnf81d3lh5lyxai1908xjp0laf4glwa4c8472m212"))))
- (build-system python-build-system)
- (arguments
- '(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda _
- (zero? (system* "python" "-m" "unittest2" "discover"
"--verbose")))))))
- (propagated-inputs
- `(("python-six" ,python-six)
- ("python-traceback2" ,python-traceback2)))
- (home-page "http://pypi.python.org/pypi/unittest2")
- (synopsis "Python unit testing library")
- (description
- "Unittest2 is a replacement for the unittest module in the Python
- standard library.")
- (license license:psfl)))
-
- (define-public python2-unittest2
- (package-with-python2 python-unittest2))
-
- (define-public python-pafy
- (package
- (name "python-pafy")
- (version "0.5.3.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "pafy" version))
++ (uri (pypi-uri "pafy" version))
+ (sha256
+ (base32
+ "1a7dxi95m1043rxx1r5x3ngb66nwlq6aqcasyqqjzmmmjps4zrim"))))
+ (build-system python-build-system)
+ (arguments
+ `(#:tests? #f)) ; Currently pafy can not find itself in the tests
+ (propagated-inputs
+ ;; Youtube-dl is a python package which is imported in the file
+ ;; "backend_youtube_dl.py", therefore it needs to be propagated.
+ `(("youtube-dl" ,youtube-dl)))
+ (home-page "https://np1.github.io/pafy/")
+ (synopsis "Retrieve YouTube content and metadata")
+ (description
+ "@code{pafy} is a python library to retrieve YouTube content and
metadata.")
+ (license license:lgpl3+)))
+
(define-public python-py
(package
(name "python-py")