diff options
Diffstat (limited to 'gnu/packages/python.scm')
-rw-r--r-- | gnu/packages/python.scm | 274 |
1 files changed, 209 insertions, 65 deletions
diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm index c2685f6055..1db749bff1 100644 --- a/gnu/packages/python.scm +++ b/gnu/packages/python.scm @@ -16,7 +16,7 @@ ;;; Copyright © 2015, 2016 Erik Edrosa <erik.edrosa@gmail.com> ;;; Copyright © 2015, 2016 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2015 Kyle Meyer <kyle@kyleam.com> -;;; Copyright © 2015 Chris Marusich <cmmarusich@gmail.com> +;;; Copyright © 2015, 2016 Chris Marusich <cmmarusich@gmail.com> ;;; Copyright © 2016 Danny Milosavljevic <dannym+a@scratchpost.org> ;;; ;;; This file is part of GNU Guix. @@ -69,6 +69,7 @@ #:use-module (gnu packages texlive) #:use-module (gnu packages texinfo) #:use-module (gnu packages tls) + #:use-module (gnu packages version-control) #:use-module (gnu packages web) #:use-module (gnu packages base) #:use-module (gnu packages xml) @@ -701,7 +702,7 @@ concepts.") (define-public python-lockfile (package (name "python-lockfile") - (version "0.9.1") + (version "0.12.2") (source (origin (method url-fetch) @@ -709,18 +710,25 @@ concepts.") "lockfile-" version ".tar.gz")) (sha256 (base32 - "0iwif7i84gwpvrnpv4brshdk8j6l77smvknm8k3bg77mj6f5ini3")))) + "16gpx5hm73ah5n1079ng0vy381hl802v606npkx4x8nb0gg05vba")))) (build-system python-build-system) (arguments '(#:test-target "check")) + (native-inputs + `(("python-pbr" ,python-pbr))) (home-page "http://code.google.com/p/pylockfile/") (synopsis "Platform-independent file locking module") (description "The lockfile package exports a LockFile class which provides a simple API for locking files.") - (license license:expat))) + (license license:expat) + (properties `((python2-variant . ,(delay python2-lockfile)))))) (define-public python2-lockfile - (package-with-python2 python-lockfile)) + (let ((base (package-with-python2 (strip-python2-variant python-lockfile)))) + (package + (inherit base) + (native-inputs `(("python2-setuptools" ,python2-setuptools) + ,@(package-native-inputs base)))))) (define-public python-mock (package @@ -967,20 +975,14 @@ datetime module, available in Python 2.3+.") (define-public python-pandas (package (name "python-pandas") - (version "0.16.2") + (version "0.18.0") (source (origin (method url-fetch) (uri (pypi-uri "pandas" version)) (sha256 - (base32 "10agmrkps8bi5948vwpipfxds5kj1d076m9i0nhaxwqiw7gm6670")))) + (base32 "050qw0ap5bhyv5flp78x3lcq1dlminl3xaj6kbrm0jqmx0672xf9")))) (build-system python-build-system) - (arguments - `(;; Three tests fail: - ;; - test_read_google - ;; - test_read_yahoo - ;; - test_month_range_union_tz_dateutil - #:tests? #f)) (propagated-inputs `(("python-numpy" ,python-numpy) ("python-pytz" ,python-pytz) @@ -1519,7 +1521,7 @@ code introspection, and logging.") (define-public python-pytest (package (name "python-pytest") - (version "2.6.1") + (version "2.7.3") (source (origin (method url-fetch) @@ -1528,7 +1530,7 @@ code introspection, and logging.") version ".tar.gz")) (sha256 (base32 - "0g2w4p0n42wvz8rq4k6gnzpkakgz3g8sfanxk8jrsra9675snkcr")) + "1z4yi986f9n0p8qmzmn21m21m8j1x78hk3505f89baqm6pdw7afm")) (modules '((guix build utils))) (snippet ;; One of the tests involves the /usr directory, so it fails. @@ -1862,6 +1864,48 @@ and sensible default behaviors into your setuptools run.") (define-public python2-pbr-0.11 (package-with-python2 python-pbr-0.11)) +(define-public python-pbr + (package + (name "python-pbr") + (version "1.8.1") + (source + (origin + (method url-fetch) + (uri (string-append + "https://pypi.python.org/packages/source/p/pbr/pbr-" + version + ".tar.gz")) + (sha256 + (base32 + "0jcny36cf3s8ar5r4a575npz080hndnrfs4np1fqhv0ym4k7c4p2")))) + (build-system python-build-system) + (arguments + `(#:tests? #f)) ;; Most tests seem to use the Internet. + (propagated-inputs + `(("python-testrepository" ,python-testrepository) + ("git" ,git))) ;; pbr actually uses the "git" binary. + (inputs + `(("python-fixtures" ,python-fixtures) + ("python-mimeparse" ,python-mimeparse) + ("python-mock" ,python-mock) + ("python-setuptools" ,python-setuptools) + ("python-six" ,python-six) + ("python-sphinx" ,python-sphinx) + ("python-testrepository" ,python-testrepository) + ("python-testresources" ,python-testresources) + ("python-testscenarios" ,python-testscenarios) + ("python-testtools" ,python-testtools) + ("python-virtualenv" ,python-virtualenv))) + (home-page "https://launchpad.net/pbr") + (synopsis "Change the default behavior of Python’s setuptools") + (description + "Python Build Reasonableness (PBR) is a library that injects some useful +and sensible default behaviors into your setuptools run.") + (license asl2.0))) + +(define-public python2-pbr + (package-with-python2 python-pbr)) + (define-public python-fixtures (package (name "python-fixtures") @@ -5376,7 +5420,7 @@ should be stored on various operating systems.") (define-public python-llfuse (package (name "python-llfuse") - (version "0.41") + (version "1.0") (source (origin (method url-fetch) (uri (string-append @@ -5384,7 +5428,7 @@ should be stored on various operating systems.") "llfuse-" version ".tar.bz2")) (sha256 (base32 - "0yzy8ixpmxk00kdq6lx5vvwbs0n6s59qnja5q0js2ahbqyxiz2hb")))) + "1li7q04ljrvwharw4fblcbfhvk6s0l3lnv8yqb4c22lcgbkiqlps")))) (build-system python-build-system) (inputs `(("fuse" ,fuse) @@ -5396,34 +5440,54 @@ should be stored on various operating systems.") (description "Python-LLFUSE is a set of Python bindings for the low level FUSE API.") (home-page "https://bitbucket.org/nikratio/python-llfuse/") - ;; Python-LLFUSE includes underscore.js, which is MIT (expat) licensed. - ;; The rest of the package is licensed under LGPL2.0 or later. - (license (list license:expat lgpl2.0+)))) + (license lgpl2.0+) + (properties `((python2-variant . ,(delay python2-llfuse)))))) (define-public python2-llfuse - (package-with-python2 python-llfuse)) + (package (inherit (package-with-python2 + (strip-python2-variant python-llfuse))) + (propagated-inputs `(("python2-contextlib2" ,python2-contextlib2))))) + +;; For attic-0.16 +(define-public python-llfuse-0.41 + (package (inherit python-llfuse) + (version "0.41.1") + (source (origin + (method url-fetch) + (uri (string-append + "https://bitbucket.org/nikratio/python-llfuse/downloads/" + "llfuse-" version ".tar.bz2")) + (sha256 + (base32 + "1imlqw9b73086y97izr036f58pgc5akv4ihc2rrf8j5h75jbrlaa")))) + ;; Python-LLFUSE < 0.42 includes underscore.js, which is MIT (expat) + ;; licensed. The rest of the package is licensed under LGPL2.0 or later. + (license (list license:expat lgpl2.0+)))) (define-public python-msgpack (package (name "python-msgpack") - (version "0.4.6") + (version "0.4.7") (source (origin (method url-fetch) - (uri (string-append - "https://pypi.python.org/packages/source/m/" - "msgpack-python/msgpack-python-" version ".tar.gz")) + (uri (pypi-uri "msgpack-python" version)) (sha256 (base32 - "1527c76b6fn4zzkgfq5xvhh7x9a9686g7fjiz717rw5vklf5ik5z")))) + "0syd7bs83qs9qmxw540jbgsildbqk4yb57fmrlns1021llli402y")))) (build-system python-build-system) - (native-inputs - `(("python-setuptools" ,python-setuptools))) (synopsis "MessagePack (de)serializer") (description "MessagePack is a fast, compact binary serialization format, suitable for similar data to JSON. This package provides CPython bindings for reading and writing MessagePack data.") (home-page "https://pypi.python.org/pypi/msgpack-python/") - (license asl2.0))) + (license asl2.0) + (properties `((python2-variant . ,(delay python2-msgpack)))))) + +(define-public python2-msgpack + (package (inherit (package-with-python2 + (strip-python2-variant python-msgpack))) + (native-inputs + `(("python2-setuptools" ,python2-setuptools))))) (define-public python2-msgpack (package-with-python2 python-msgpack)) @@ -5760,7 +5824,7 @@ responses, rather than doing any computation.") (define-public python-cryptography-vectors (package (name "python-cryptography-vectors") - (version "1.2.3") + (version "1.3.1") (source (origin (method url-fetch) @@ -5769,7 +5833,7 @@ responses, rather than doing any computation.") version ".tar.gz")) (sha256 (base32 - "0shawgpax79gvjrj0a313sll9gaqys7q1hxngn6j4k24lmz7bwki")))) + "1144l3ypz3bngxd59lb4y74xa401w92lhvvjgxzglmvbh8wzkcbb")))) (build-system python-build-system) (native-inputs `(("python-setuptools" ,python-setuptools))) @@ -5786,14 +5850,14 @@ responses, rather than doing any computation.") (define-public python-cryptography (package (name "python-cryptography") - (version "1.2.3") + (version "1.3.1") (source (origin (method url-fetch) (uri (pypi-uri "cryptography" version)) (sha256 (base32 - "0kj511z4g21fhcr649pyzpl0zzkkc7hsgxxjys6z8wwfvmvirccf")))) + "1qjkrpfvxcyd0kal3zpm5y7f9p3y77ixn9jw8f4dqpgrw1sn3cxl")))) (build-system python-build-system) (inputs `(("openssl" ,openssl))) @@ -5837,7 +5901,7 @@ message digests and key derivation functions.") (define-public python-pyopenssl (package (name "python-pyopenssl") - (version "0.15.1") + (version "16.0.0") (source (origin (method url-fetch) @@ -5845,29 +5909,8 @@ message digests and key derivation functions.") "pyOpenSSL/pyOpenSSL-" version ".tar.gz")) (sha256 (base32 - "0wnnq15rhj7fhdcd8ycwiw6r6g3w9f9lcy6cigg8226vsrq618ph")))) + "0zfijaxlq4vgi6jz0d4i5xq9ygqnyps6br7lmigjhqnh8gp10g9n")))) (build-system python-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - (add-after 'unpack 'fix-tests - (lambda* (#:key inputs #:allow-other-keys) - (substitute* "OpenSSL/test/test_ssl.py" - (("client\\.connect\\(\\('verisign\\.com', 443\\)\\)") - "return True") - ;; FIXME: disable broken test - (("test_set_tmp_ecdh") "disabled__set_tmp_ecdh")) - (substitute* "OpenSSL/test/test_crypto.py" - (("command = b\"openssl \"") - (string-append "command = b\"" - (assoc-ref inputs "openssl") - "/bin/openssl" " \"")) - ;; FIXME: disable four broken tests - (("test_der") "disabled__der") - (("test_digest") "disabled__digest") - (("test_get_extension") "disabled__get_extension") - (("test_extension_count") "disabled__extension_count")) - #t))))) (propagated-inputs `(("python-cryptography" ,python-cryptography) ("python-six" ,python-six))) @@ -6025,7 +6068,10 @@ Python's @code{ctypes} foreign function interface (FFI).") #t)))))) (inputs `(("file" ,file))) (self-native-input? #f) - (synopsis "Python bindings to the libmagic file type guesser"))) + (synopsis "Python bindings to the libmagic file type guesser. Note that +this module and the python-magic module both provide a \"magic.py\" file; +these two modules, which are different and were developed separately, both +serve the same purpose: provide Python bindings for libmagic."))) (define-public python2-file (package-with-python2 python-file)) @@ -6736,13 +6782,13 @@ WebSocket usage in Python programs.") (define-public python-atomicwrites (package (name "python-atomicwrites") - (version "0.1.9") + (version "1.0.0") (source (origin (method url-fetch) (uri (pypi-uri "atomicwrites" version)) (sha256 (base32 - "08s05h211r07vs66r4din3swrbzb344vli041fihpg34q3lcxpvw")))) + "019fa4771q7fb1167yfbh6msdzcqini6v7i59rmf72mzdjd7x5qv")))) (build-system python-build-system) (synopsis "Atomic file writes in Python") (description "Library for atomic file writes using platform dependent tools @@ -7200,9 +7246,9 @@ authenticated session objects providing things like keep-alive.") 3.2.3 for use with older versions of Python and PyPy.") (license license:expat))) -(define-public python-futures +(define-public python2-futures (package - (name "python-futures") + (name "python2-futures") (version "3.0.3") (source (origin @@ -7212,8 +7258,9 @@ authenticated session objects providing things like keep-alive.") (base32 "1vcb34dqhzkhbq1957vdjszhhm5y3j9ba88dgwhqx2zynhmk9qig")))) (build-system python-build-system) + (arguments `(#:python ,python-2)) (native-inputs - `(("python-setuptools" ,python-setuptools))) + `(("python2-setuptools" ,python2-setuptools))) (home-page "https://github.com/agronholm/pythonfutures") (synopsis "Backport of the concurrent.futures package from Python 3.2") @@ -7223,9 +7270,6 @@ asynchronously executing callables. This package backports the concurrent.futures package from Python 3.2") (license bsd-3))) -(define-public python2-futures - (package-with-python2 python-futures)) - (define-public python-urllib3 (package (name "python-urllib3") @@ -8459,3 +8503,103 @@ is made as zipfile like as possible.") (define-public python2-rarfile (package-with-python2 python-rarfile)) + +(define-public python-magic + (package + (name "python-magic") + (version "0.4.3") + (source + (origin + (method url-fetch) + (uri (string-append "https://github.com/ahupp/python-magic/archive/" + version ".tar.gz")) + (sha256 + (base32 + "17bgy92i7sb021f2s4mw1dcvpm6p1mi9jihridwy1pyn8mzvpjgk")) + (file-name (string-append name "-" version "-checkout")))) + (build-system python-build-system) + (arguments + ;; The tests are unreliable, so don't run them. The tests fail + ;; under Python3 because they were written for Python2 and + ;; contain import statements that do not work in Python3. One of + ;; the tests fails under Python2 because its assertions are + ;; overly stringent; it relies on comparing output strings which + ;; are brittle and can change depending on the version of + ;; libmagic being used and the system on which the test is + ;; running. In my case, under GuixSD 0.10.0, only one test + ;; failed, and it seems to have failed only because the version + ;; of libmagic that is packaged in Guix outputs a slightly + ;; different (but not wrong) string than the one that the test + ;; expected. + '(#:tests? #f + #:phases (modify-phases %standard-phases + ;; Replace a specific method call with a hard-coded + ;; path to the necessary libmagic.so file in the + ;; store. If we don't do this, then the method call + ;; will fail to find the libmagic.so file, which in + ;; turn will cause any application using + ;; python-magic to fail. + (add-before 'build 'hard-code-path-to-libmagic + (lambda* (#:key inputs #:allow-other-keys) + (let ((file (assoc-ref inputs "file"))) + (substitute* "magic.py" + (("ctypes.util.find_library\\('magic'\\)") + (string-append "'" file "/lib/libmagic.so'"))) + #t)))))) + (native-inputs + `(("python-setuptools" ,python-setuptools))) + (inputs + ;; python-magic needs to be able to find libmagic.so. + `(("file" ,file))) + (home-page "https://github.com/ahupp/python-magic") + (synopsis "File type identification using libmagic") + (description + "This module uses ctypes to access the libmagic file type +identification library. It makes use of the local magic database and +supports both textual and MIME-type output. Note that this module and +the python-file module both provide a \"magic.py\" file; these two +modules, which are different and were developed separately, both serve +the same purpose: to provide Python bindings for libmagic.") + (license license:expat))) + +(define-public python2-magic + (package-with-python2 python-magic)) + +(define-public python2-s3cmd + (package + (name "python2-s3cmd") + (version "1.6.1") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://sourceforge/s3tools/" + "s3cmd-" version ".tar.gz")) + (sha256 + (base32 + "0ki1rzhm5icvi9ry5jswi4b22yqwyj0d2wsqsgilwx6qhi7pjxa6")))) + (build-system python-build-system) + (arguments + ;; s3cmd is written for python2 only and contains no tests. + `(#:python ,python-2 + #:tests? #f)) + (native-inputs + `(("python2-setuptools" ,python2-setuptools))) + (inputs + `(("python2-dateutil" ,python2-dateutil) + ;; The python-file package also provides a magic.py module. + ;; This is an unfortunate state of affairs; however, s3cmd + ;; fails to install if it cannot find specifically the + ;; python-magic package. Thus we include it, instead of using + ;; python-file. Ironically, s3cmd sometimes works better + ;; without libmagic bindings at all: + ;; https://github.com/s3tools/s3cmd/issues/198 + ("python2-magic" ,python2-magic))) + (home-page "http://s3tools.org/s3cmd") + (synopsis "Command line tool for S3-compatible storage services") + (description + "S3cmd is a command line tool for uploading, retrieving and managing data +in storage services that are compatible with the Amazon Simple Storage +Service (S3) protocol, including S3 itself. It supports rsync-like backup, +GnuPG encryption, and more. It also supports management of Amazon's +CloudFront content delivery network.") + (license gpl2+))) |