mbakke pushed a commit to branch core-updates in repository guix. commit 2dd12924cf4a30a96262b6d392fcde58c9f10d4b Merge: 259b4f3 a93447b Author: Marius Bakke <mba...@fastmail.com> 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 -;;; mock@2, so we add a new variable for now. Also, there may be a dependency -;;; cycle between mock and six, so we avoid creating python2-mock@2 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 <e...@dvorsak.fr> + ;;; Copyright © 2015, 2016, 2017 Efraim Flashner <efr...@flashner.co.il> + ;;; Copyright © 2015, 2016, 2017 Leo Famulari <l...@famulari.name> + ;;; Copyright © 2016, 2017 Marius Bakke <mba...@fastmail.com> + ;;; Copyright © 2017 Ben Sturmfels <b...@sturm.com.au> + ;;; Copyright © 2016 Sou Bunnbu <iyzs...@gmail.com> + ;;; Copyright © 2015 Cyril Roelandt <tipec...@gmail.com> + ;;; Copyright © 2014, 2017 Eric Bavier <bav...@member.fsf.org> + ;;; Copyright © 2015, 2016 David Thompson <da...@gnu.org> + ;;; Copyright © 2016, 2017 Tobias Geerinckx-Rice <m...@tobias.gr> + ;;; Copyright © 2016, 2017 ng0 <n...@infotropique.org> + ;;; Copyright © 2014, 2015 Mark H Weaver <m...@netris.org> + ;;; Copyright © 2015, 2016, 2017 Ricardo Wurmus <rek...@elephly.net> + ;;; Copyright © 2016 Danny Milosavljevic <danny...@scratchpost.org> + ;;; Copyright © 2016, 2017 Arun Isaac <arunis...@systemreboot.net> + ;;; Copyright © 2017 Carlo Zancanaro <ca...@zancanaro.id.au> + ;;; + ;;; 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")