summaryrefslogtreecommitdiff
path: root/gnu/packages/python.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/python.scm')
-rw-r--r--gnu/packages/python.scm1105
1 files changed, 1004 insertions, 101 deletions
diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index c972b62500..5880cac099 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -10,8 +10,12 @@
;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2015 Christopher Allan Webber <cwebber@dustycloud.org>
;;; Copyright © 2015 Eric Dvorsak <eric@dvorsak.fr>
+;;; Copyright © 2015 David Thompson <davet@gnu.org>
;;; Copyright © 2015 Leo Famulari <leo@famulari.name>
;;; Copyright © 2015 Ben Woodcroft <donttrustben@gmail.com>
+;;; Copyright © 2015 Erik Edrosa <erik.edrosa@gmail.com>
+;;; Copyright © 2015 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2015 Kyle Meyer <kyle@kyleam.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -39,8 +43,8 @@
#:use-module (gnu packages backup)
#:use-module (gnu packages compression)
#:use-module (gnu packages databases)
+ #:use-module (gnu packages file)
#:use-module (gnu packages fontutils)
- #:use-module (gnu packages gdbm)
#:use-module (gnu packages gcc)
#:use-module (gnu packages ghostscript)
#:use-module (gnu packages glib)
@@ -90,7 +94,12 @@
(sha256
(base32
"1h7zbrf9pkj29hlm18b10548ch9757f75m64l47sy75rh43p7lqw"))
- (patches (list (search-patch "python-2.7-search-paths.patch")))))
+ (patches (map search-patch
+ '("python-2.7-search-paths.patch"
+ "python-2-deterministic-build-info.patch"
+ "python-2.7-source-date-epoch.patch")))))
+ (outputs '("out"
+ "tk")) ;tkinter; adds 50 MiB to the closure
(build-system gnu-build-system)
(arguments
`(#:tests? #f
@@ -141,8 +150,8 @@
(string-append "LDFLAGS=-Wl,-rpath="
(assoc-ref %outputs "out") "/lib"))
- #:modules ((ice-9 ftw)
- ,@%gnu-build-system-modules)
+ #:modules ((ice-9 ftw) (ice-9 match)
+ (guix build utils) (guix build gnu-build-system))
#:phases
(modify-phases %standard-phases
(add-before
@@ -156,7 +165,28 @@
"Lib/distutils/tests/test_spawn.py"
"Lib/test/test_subprocess.py"))
(("/bin/sh") (which "sh")))
+
+ ;; Use zero as the timestamp in .pyc files so that builds are
+ ;; deterministic. TODO: Remove it when this variable is set in
+ ;; gnu-build-system.scm.
+ (setenv "SOURCE_DATE_EPOCH" "1")
#t))
+ (add-before 'configure 'do-not-record-configure-flags
+ (lambda* (#:key configure-flags #:allow-other-keys)
+ ;; Remove configure flags from the installed '_sysconfigdata.py'
+ ;; and 'Makefile' so we don't end up keeping references to the
+ ;; build tools.
+ ;;
+ ;; Preserve at least '--with-system-ffi' since otherwise the
+ ;; thing tries to build libffi, fails, and we end up with a
+ ;; Python that lacks ctypes.
+ (substitute* "configure"
+ (("^CONFIG_ARGS=.*$")
+ (format #f "CONFIG_ARGS='~a'\n"
+ (if (member "--with-system-ffi" configure-flags)
+ "--with-system-ffi"
+ ""))))
+ #t))
(add-before
'check 'pre-check
(lambda _
@@ -174,7 +204,28 @@
(ftw "." (lambda (file stat flag)
(utime file circa-1980 circa-1980)
#t))
- #t))))))
+ #t)))
+ (add-after 'install 'move-tk-inter
+ (lambda* (#:key outputs #:allow-other-keys)
+ ;; When Tkinter support is built move it to a separate output so
+ ;; that the main output doesn't contain a reference to Tcl/Tk.
+ (let ((out (assoc-ref outputs "out"))
+ (tk (assoc-ref outputs "tk")))
+ (when tk
+ (match (find-files out "tkinter.*\\.so")
+ ((tkinter.so)
+ ;; The .so is in OUT/lib/pythonX.Y/lib-dynload, but we
+ ;; want it under TK/lib/pythonX.Y/site-packages.
+ (let* ((len (string-length out))
+ (target (string-append
+ tk "/"
+ (string-drop
+ (dirname (dirname tkinter.so))
+ len)
+ "/site-packages")))
+ (install-file tkinter.so target)
+ (delete-file tkinter.so)))))
+ #t))))))
(inputs
`(("bzip2" ,bzip2)
("gdbm" ,gdbm)
@@ -214,6 +265,7 @@ data types.")
'("python-fix-tests.patch"
;; XXX Try removing this patch for python > 3.4.3
"python-disable-ssl-test.patch"
+ "python-3-deterministic-build-info.patch"
"python-3-search-paths.patch")))
(patch-flags '("-p0"))
(sha256
@@ -234,23 +286,21 @@ data types.")
(define-public python2-minimal
(package (inherit python-2)
(name "python-minimal")
+ (outputs '("out"))
(arguments
(substitute-keyword-arguments (package-arguments python-2)
- ((#:configure-flags _)
- `(list "--enable-shared"
- (string-append "LDFLAGS=-Wl,-rpath="
- (assoc-ref %outputs "out") "/lib")))))
+ ((#:configure-flags cf)
+ `(append ,cf '("--without-system-ffi")))))
(inputs '()))) ;none of the optional dependencies
(define-public python-minimal
(package (inherit python)
(name "python-minimal")
+ (outputs '("out"))
(arguments
(substitute-keyword-arguments (package-arguments python)
- ((#:configure-flags _)
- `(list "--enable-shared"
- (string-append "LDFLAGS=-Wl,-rpath="
- (assoc-ref %outputs "out") "/lib")))))
+ ((#:configure-flags cf)
+ `(append ,cf '("--without-system-ffi")))))
;; OpenSSL is a mandatory dependency of Python 3.x, for urllib;
;; zlib is required by 'zipimport', used by pip.
@@ -262,6 +312,7 @@ data types.")
(name name)
(source #f)
(build-system trivial-build-system)
+ (outputs '("out"))
(propagated-inputs `(("python" ,python)))
(arguments
`(#:modules ((guix build utils))
@@ -413,9 +464,10 @@ John the Ripper).")
(build-system python-build-system)
(native-inputs
`(("python-setuptools" ,python-setuptools)))
+ (propagated-inputs
+ `(("python-pycrypto" ,python-pycrypto)))
(inputs
- `(("python-ecdsa" ,python-ecdsa)
- ("python-pycrypto" ,python-pycrypto)))
+ `(("python-ecdsa" ,python-ecdsa)))
(home-page "http://www.paramiko.org/")
(synopsis "SSHv2 protocol library")
(description "Paramiko is a python implementation of the SSHv2 protocol,
@@ -522,23 +574,22 @@ Cassandra cluster on localhost.")
(define-public python-pytz
(package
(name "python-pytz")
- (version "2013b")
+ (version "2015.7")
(source
(origin
(method url-fetch)
- (uri (string-append "https://launchpad.net/pytz/main/" version
- "/+download/pytz-" version ".tar.bz2"))
+ (uri (pypi-uri "pytz" version))
(sha256
(base32
- "19giwgfcrg0nr1gdv49qnmf2jb2ilkcfc7qyqvfpz4dp0p64ksv5"))))
+ "1spgdfp1ssya7v3kww7zp71xpj437skpqazcvqr3kr1p1brnw9lr"))))
(build-system python-build-system)
(arguments `(#:tests? #f)) ; no test target
- (home-page "https://launchpad.net/pytz")
+ (home-page "http://pythonhosted.org/pytz")
(synopsis "Python timezone library")
(description
"This library allows accurate and cross platform timezone calculations
using Python 2.4 or higher and provides access to the Olson timezone database.")
- (license x11)))
+ (license license:expat)))
(define-public python2-pytz
(package-with-python2 python-pytz))
@@ -547,15 +598,14 @@ using Python 2.4 or higher and provides access to the Olson timezone database.")
(define-public python-babel
(package
(name "python-babel")
- (version "1.3")
+ (version "2.1.1")
(source
(origin
(method url-fetch)
- (uri (string-append "https://pypi.python.org/packages/source/B/Babel/Babel-"
- version ".tar.gz"))
+ (uri (pypi-uri "Babel" version))
(sha256
(base32
- "0bnin777lc53nxd1hp3apq410jj5wx92n08h7h4izpl4f4sx00lz"))))
+ "0j2jgfzj1a2m39pm2qc36fzr7a6p5ybwndi0xdzhi2p8zw7dbdkz"))))
(build-system python-build-system)
(inputs
`(("python-pytz" ,python-pytz)
@@ -776,7 +826,13 @@ etc.). The package is structured to make adding new modules easy.")
(license public-domain)))
(define-public python2-pycrypto
- (package-with-python2 python-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
@@ -819,20 +875,22 @@ password storage.")
(license x11)))
(define-public python2-keyring
- (package-with-python2 python-keyring))
+ (let ((keyring (package-with-python2 python-keyring)))
+ (package (inherit keyring)
+ (inputs
+ `(("python2-pycrypto" ,python2-pycrypto))))))
(define-public python-six
(package
(name "python-six")
- (version "1.9.0")
+ (version "1.10.0")
(source
(origin
(method url-fetch)
- (uri (string-append "https://pypi.python.org/packages/source/s/"
- "six/six-" version ".tar.gz"))
+ (uri (pypi-uri "six" version))
(sha256
(base32
- "1mci5i8mjqmljmv33h0q3d4djc13zk1kfmb3fbvd3yy43x0m4h72"))))
+ "0snmb8xffb3vsma0z67i0h0w2g2dy0p3gsgh9gi4i0kgc5l8spqh"))))
(build-system python-build-system)
(inputs
`(("python-setuptools" ,python-setuptools)))
@@ -903,7 +961,7 @@ datetime module, available in Python 2.3+.")
(define-public python-parsedatetime
(package
(name "python-parsedatetime")
- (version "1.2")
+ (version "1.5")
(source
(origin
(method url-fetch)
@@ -911,11 +969,10 @@ datetime module, available in Python 2.3+.")
"parsedatetime/parsedatetime-" version ".tar.gz"))
(sha256
(base32
- "1zcj0pzxvpl4j2ma9awmpkfxldybi2kjaahjjpmgfbg5cxwcjsqv"))))
+ "1as0mm4ql3z0324nc9bys2s1ngh507i317p16b79rx86wlmvx9ix"))))
(build-system python-build-system)
(native-inputs
`(("python-setuptools" ,python-setuptools)))
- (arguments `(#:tests? #f)) ;no test target
(home-page "http://github.com/bear/parsedatetime/")
(synopsis
"Parse human-readable date/time text")
@@ -923,6 +980,9 @@ datetime module, available in Python 2.3+.")
"Parse human-readable date/time text.")
(license asl2.0)))
+(define-public python2-parsedatetime
+ (package-with-python2 python-parsedatetime))
+
(define-public python-pandas
(package
(name "python-pandas")
@@ -959,7 +1019,12 @@ doing practical, real world data analysis in Python.")
(license bsd-3)))
(define-public python2-pandas
- (package-with-python2 python-pandas))
+ (let ((pandas (package-with-python2 python-pandas)))
+ (package (inherit pandas)
+ (propagated-inputs
+ `(("python2-numpy" ,python2-numpy)
+ ,@(alist-delete "python-numpy"
+ (package-propagated-inputs pandas)))))))
(define-public python-tzlocal
(package
@@ -1501,7 +1566,7 @@ standard library.")
(base32
"0wbs4i4x3x7klr3v35ss6p9mcqz883i1xgcpkhvl7n2lyv6yhpda"))))
(inputs
- `(("python2-setuptools" ,python-setuptools)))
+ `(("python2-setuptools" ,python2-setuptools)))
(arguments
`(#:python ,python-2
#:tests? #f)))) ; no setup.py test command
@@ -1568,6 +1633,34 @@ and many external plugins.")
(define-public python2-pytest
(package-with-python2 python-pytest))
+(define-public python-pytest-cov
+ (package
+ (name "python-pytest-cov")
+ (version "2.2.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "pytest-cov" version))
+ (sha256
+ (base32
+ "1lf9jsmhqk5nc4w3kzwglmdzjvmi7ajvrsnwv826j3bn0wzx8c92"))))
+ (build-system python-build-system)
+ (propagated-inputs
+ `(("python-coverage" ,python-coverage)
+ ("python-pytest" ,python-pytest)))
+ (native-inputs
+ `(("python-setuptools" ,python-setuptools)))
+ (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 load and 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")
@@ -1595,6 +1688,7 @@ and many external plugins.")
#t)))))
(native-inputs
`(("python-pytest" ,python-pytest)
+ ("python-setuptools" ,python-setuptools)
("python-setuptools-scm" ,python-setuptools-scm)))
(home-page "https://bitbucket.org/pytest-dev/pytest-runner")
(synopsis "Invoke py.test as a distutils command")
@@ -2019,16 +2113,13 @@ files.")
(define-public python-certifi
(package
(name "python-certifi")
- (version "14.05.14")
+ (version "2015.11.20.1")
(source (origin
(method url-fetch)
- (uri
- (string-append
- "https://pypi.python.org/packages/source/c/certifi/certifi-"
- version ".tar.gz"))
+ (uri (pypi-uri "certifi" version))
(sha256
(base32
- "0s8vxzfz6s4m6fvxc7z25k9j35w0rh6jkw3wwcd1az1mssncn6qy"))))
+ "05lgwf9rz1kn465azy2bpb3zmpnsn9gkypbhnjlclchv98ssgc1h"))))
(build-system python-build-system)
(inputs
`(("python-setuptools" ,python-setuptools)))
@@ -2070,24 +2161,51 @@ with sensible defaults out of the box.")
(define-public python2-click
(package-with-python2 python-click))
+(define-public python-wheel
+ (package
+ (name "python-wheel")
+ (version "0.26.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "wheel" version))
+ (sha256
+ (base32
+ "032k1ajijbqnv0z0k88bhf75mdimi18fcmm28mss90610lw3bbga"))))
+ (build-system python-build-system)
+ (native-inputs
+ `(("python-setuptools" ,python-setuptools)
+ ("python-jsonschema" ,python-jsonschema)
+ ("python-pytest-cov" ,python-pytest-cov)))
+ (home-page "https://bitbucket.org/pypa/wheel/")
+ (synopsis "Built-package format for Python")
+ (description
+ "A wheel is a ZIP-format archive with a specially formatted filename and the
+.whl extension. It is designed to contain all the files for a PEP 376
+compatible install in a way that is very close to the on-disk format.")
+ (license license:expat)))
+
+(define-public python2-wheel
+ (package-with-python2 python-wheel))
+
(define-public python-requests
(package
(name "python-requests")
- (version "2.4.0")
+ (version "2.8.1")
(source (origin
(method url-fetch)
- (uri
- (string-append
- "https://pypi.python.org/packages/source/r/requests/requests-"
- version ".tar.gz"))
+ (uri (pypi-uri "requests" version))
(sha256
(base32
- "0gknlfx1wakrrm1zi8gi03x2lzj4dsns0vjw0nsmgqvkphyf01vh"))))
+ "0ny2nr1sqr4hcn3903ghmh7w2yni8shlfv240a8c9p6wyidqvzl4"))))
(build-system python-build-system)
- (inputs
- `(("python-setuptools" ,python-setuptools)
- ("python-certifi" ,python-certifi)))
- (arguments `(#:tests? #f)) ; no tests
+ (native-inputs
+ `(("python-setuptools" ,python-setuptools)))
+ (propagated-inputs
+ `(("python-py" ,python-py)
+ ("python-pytest" ,python-pytest)
+ ("python-pytest-cov" ,python-pytest-cov)
+ ("python-wheel" ,python-wheel)))
(home-page "http://python-requests.org/")
(synopsis "Python HTTP library")
(description
@@ -2155,19 +2273,18 @@ somewhat intelligeble.")
(define-public python-pyjwt
(package
(name "python-pyjwt")
- (version "0.2.1")
+ (version "1.4.0")
(source
(origin
(method url-fetch)
- (uri (string-append
- "https://pypi.python.org/packages/source/P/PyJWT/PyJWT-"
- version ".tar.gz"))
+ (uri (pypi-uri "PyJWT" version))
(sha256
(base32
- "1ahqblfy2sj3xz34wsa48cn9rp0dspzq56p54i5znmws3b8gml6g"))))
+ "1556v2jppd8mjkkj66pxb5rcazm35jq81r233mdl8hfmz9n3icp1"))))
(build-system python-build-system)
- (inputs
- `(("python-setuptools" ,python-setuptools)))
+ (native-inputs
+ `(("python-setuptools" ,python-setuptools)
+ ("python-pytest-runner" ,python-pytest-runner)))
(arguments
'(#:tests? #f)) ; test suite doesn't work
(home-page "http://github.com/progrium/pyjwt")
@@ -2182,23 +2299,23 @@ somewhat intelligeble.")
(define-public python-oauthlib
(package
(name "python-oauthlib")
- (version "0.6.3")
+ (version "1.0.3")
(source (origin
(method url-fetch)
- (uri
- (string-append
- "https://pypi.python.org/packages/source/o/oauthlib/oauthlib-"
- version ".tar.gz"))
+ (uri (pypi-uri "oauthlib" version))
(sha256
(base32
- "1yaj3j64la4arwsbhbfmpnickzh3jpg9nlpyg409v8pp24isn48a"))))
+ "1bfrj70vdjxjw74khbyh6f0dksv7p5rh2346jnlrffyacd3gwjzg"))))
(build-system python-build-system)
- (inputs
+ (native-inputs
`(("python-setuptools" ,python-setuptools)
- ("python-pyjwt" ,python-pyjwt)
- ("python-pycrypto" ,python-pycrypto)
+ ("python-coverage", python-coverage)
("python-nose" ,python-nose)
("python-mock" ,python-mock)))
+ (inputs
+ `(("python-blinker" ,python-blinker)
+ ("python-cryptography" ,python-cryptography)
+ ("python-pyjwt" ,python-pyjwt)))
(home-page "https://github.com/idan/oauthlib")
(synopsis "OAuth implementation for Python")
(description
@@ -2211,8 +2328,10 @@ OAuth request-signing logic.")
(package
(inherit base)
(inputs
- (append (package-inputs base)
- `(("python2-unittest2" ,python2-unittest2)))))))
+ `(("python2-unittest2" ,python2-unittest2)
+ ("python2-cryptography" ,python2-cryptography)
+ ,@(alist-delete "python-cryptography"
+ (package-inputs base)))))))
(define-public python-itsdangerous
(package
@@ -2351,6 +2470,29 @@ written in pure Python.")
(define-public python2-jinja2
(package-with-python2 python-jinja2))
+(define-public python-pystache
+ (package
+ (name "python-pystache")
+ (version "0.5.4")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "pystache" version))
+ (sha256
+ (base32
+ "0nmqsfmiw4arjxqkmf9z66ml950pcdjk6aq4gin4sywmzdjw5fzp"))))
+ (build-system python-build-system)
+ (native-inputs
+ `(("python-setuptools" ,python-setuptools)))
+ (home-page "http://defunkt.io/pystache/")
+ (synopsis "Python logic-less template engine")
+ (description
+ "Pystache is a Python implementation of the framework agnostic,
+logic-free templating system Mustache.")
+ (license license:expat)))
+
+(define-public python2-pystache
+ (package-with-python2 python-pystache))
+
(define-public python-joblib
(package
(name "python-joblib")
@@ -2704,7 +2846,11 @@ mining and data analysis.")
,@(package-native-inputs scikit-image)))
(propagated-inputs
`(("python2-pytz" ,python2-pytz)
- ,@(package-propagated-inputs scikit-image))))))
+ ("python2-matplotlib" ,python2-matplotlib)
+ ("python2-numpy" ,python2-numpy)
+ ("python2-scipy" ,python2-scipy)
+ ,@(fold alist-delete (package-propagated-inputs scikit-image)
+ '("python-matplotlib" "python-numpy" "python-scipy")))))))
(define-public python-redis
(package
@@ -3060,10 +3206,47 @@ that client code uses to construct the grammar directly in Python code.")
(define-public python2-numpydoc
(package-with-python2 python-numpydoc))
+(define-public python-numexpr
+ (package
+ (name "python-numexpr")
+ (version "2.4.4")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://pypi.python.org/packages/source/"
+ "n/numexpr/numexpr-" version ".tar.gz"))
+ (sha256
+ (base32
+ "0nsnff5312fm38w6dm34bw7ghfqqy8vl9gig0al963h4mz8zm8nz"))))
+ (build-system python-build-system)
+ (arguments `(#:tests? #f)) ; no tests included
+ (propagated-inputs
+ `(("python-numpy" ,python-numpy)))
+ (home-page "https://github.com/pydata/numexpr")
+ (synopsis "Fast numerical expression evaluator for NumPy")
+ (description
+ "Numexpr is a fast numerical expression evaluator for NumPy. With it,
+expressions that operate on arrays are accelerated and use less memory than
+doing the same calculation in Python. In addition, its multi-threaded
+capabilities can make use of all your cores, which may accelerate
+computations, most specially if they are not memory-bounded (e.g. those using
+transcendental functions).")
+ (license license:expat)))
+
+(define-public python2-numexpr
+ (let ((numexpr (package-with-python2 python-numexpr)))
+ (package (inherit numexpr)
+ ;; Make sure to use special packages for Python 2 instead
+ ;; of those automatically rewritten by package-with-python2.
+ (propagated-inputs
+ `(("python2-numpy" ,python2-numpy)
+ ,@(alist-delete "python-numpy"
+ (package-propagated-inputs numexpr)))))))
+
(define-public python-matplotlib
(package
(name "python-matplotlib")
- (version "1.4.2")
+ (version "1.4.3")
(source
(origin
(method url-fetch)
@@ -3071,13 +3254,15 @@ that client code uses to construct the grammar directly in Python code.")
"/matplotlib-" version ".tar.gz"))
(sha256
(base32
- "0m6v9nwdldlwk22gcd339zg6mny5m301fxgks7z8sb8m9wawg8qp"))))
+ "1dn05cvd0g984lzhh72wa0z93psgwshbbg93fkab6slx5m3l95av"))
+ (patches (list (search-patch "matplotlib-setupext-tk.patch")))))
(build-system python-build-system)
(outputs '("out" "doc"))
(propagated-inputs ; the following packages are all needed at run time
`(("python-pyparsing" ,python-pyparsing)
("python-pygobject" ,python-pygobject)
("gobject-introspection" ,gobject-introspection)
+ ("python-tkinter" ,python "tk")
;; The 'gtk+' package (and 'gdk-pixbuf', 'atk' and 'pango' propagated
;; from 'gtk+') provides the required 'typelib' files used by
;; 'gobject-introspection'. The location of these files is set with the
@@ -3112,7 +3297,8 @@ that client code uses to construct the grammar directly in Python code.")
;; FIXME: Add backends when available.
;("python-wxpython" ,python-wxpython)
;("python-pyqt" ,python-pyqt)
- ))
+ ("tcl" ,tcl)
+ ("tk" ,tk)))
(native-inputs
`(("pkg-config" ,pkg-config)
("texlive" ,texlive)
@@ -3131,8 +3317,12 @@ that client code uses to construct the grammar directly in Python code.")
(setenv "HOME" (getcwd))
(call-with-output-file "setup.cfg"
(lambda (port)
- (format port "[rc_options]~%
-backend = GTK3Agg~%")))))
+ (format port "[directories]~%
+basedirlist = ~a,~a~%
+[rc_options]~%
+backend = TkAgg~%"
+ (assoc-ref inputs "tcl")
+ (assoc-ref inputs "tk"))))))
(alist-cons-after
'install 'install-doc
(lambda* (#:key outputs #:allow-other-keys)
@@ -3150,13 +3340,23 @@ backend = GTK3Agg~%")))))
;; The doc recommends to run the 'html' target twice.
(system* "python" "make.py" "html")
(system* "python" "make.py" "html")
+ (copy-recursively "build/html" html)
(system* "python" "make.py" "latex")
(system* "python" "make.py" "texinfo")
+ (symlink (string-append html "/_images")
+ (string-append info "/matplotlib-figures"))
+ (with-directory-excursion "build/texinfo"
+ (substitute* "matplotlib.texi"
+ (("@image\\{([^,]*)" all file)
+ (string-append "@image{matplotlib-figures/" file)))
+ (symlink (string-append html "/_images")
+ "./matplotlib-figures")
+ (system* "makeinfo" "--no-split"
+ "-o" "matplotlib.info" "matplotlib.texi"))
(copy-file "build/texinfo/matplotlib.info"
(string-append info "/matplotlib.info"))
(copy-file "build/latex/Matplotlib.pdf"
- (string-append doc "/Matplotlib.pdf"))
- (copy-recursively "build/html" html))))
+ (string-append doc "/Matplotlib.pdf")))))
%standard-phases))))
(home-page "http://matplotlib.org")
(synopsis "2D plotting library for Python")
@@ -3176,10 +3376,9 @@ toolkits.")
(propagated-inputs
`(("python2-pycairo" ,python2-pycairo)
("python2-pygobject-2" ,python2-pygobject-2)
- ,@(alist-delete "python-pycairo"
- (alist-delete "python-pygobject"
- (package-propagated-inputs
- matplotlib))))))))
+ ("python2-tkinter" ,python-2 "tk")
+ ,@(fold alist-delete (package-propagated-inputs matplotlib)
+ '("python-pycairo" "python-pygobject" "python-tkinter")))))))
(define-public python2-pysnptools
(package
@@ -3456,7 +3655,7 @@ services for your Python modules and applications.")
(define-public python-pillow
(package
(name "python-pillow")
- (version "2.8.1")
+ (version "3.0.0")
(source
(origin
(method url-fetch)
@@ -3464,7 +3663,7 @@ services for your Python modules and applications.")
"Pillow/Pillow-" version ".tar.gz"))
(sha256
(base32
- "15n92axxph2s3kvg68bki9gv3nzwgq7130kp7wbblpi1l0cc2q47"))))
+ "1fsl6sywd4f4axvbpy5h5h26l6w8592j0f1wcnj1hmgy83svwl5d"))))
(build-system python-build-system)
(native-inputs
`(("python-setuptools" ,python-setuptools)
@@ -3833,20 +4032,19 @@ child application and control it as if a human were typing commands.")
(define-public python-setuptools-scm
(package
(name "python-setuptools-scm")
- (version "1.8.0")
+ (version "1.9.0")
(source (origin
(method url-fetch)
- (uri (string-append "https://pypi.python.org/packages/source/s/"
- "setuptools_scm/setuptools_scm-"
- version ".tar.bz2"))
+ (uri (pypi-uri "setuptools_scm" version))
(sha256
(base32
- "00p60v2yfqy1r58pjcx9wy6dvqd7wkpfs5z1dzwf7y75c1g3dgyx"))))
+ "0y24bl893zk6nrklbvdrlmpkalf214zjn6k1xrglljd29rrn4wxi"))))
(build-system python-build-system)
+ (native-inputs `(("python-setuptools" ,python-setuptools)))
(home-page "https://github.com/pypa/setuptools_scm/")
(synopsis "Manage Python package versions in SCM metadata")
(description
- "setuptools_scm handles managing your Python package versions in
+ "Setuptools_scm handles managing your Python package versions in
@dfn{software configuration management} (SCM) metadata instead of declaring
them as the version argument or in a SCM managed file.")
(license license:expat)))
@@ -3869,7 +4067,8 @@ them as the version argument or in a SCM managed file.")
(propagated-inputs
`(("python-appdirs" ,python-appdirs)))
(native-inputs
- `(("python-setuptools-scm" ,python-setuptools-scm)
+ `(("python-setuptools" ,python-setuptools)
+ ("python-setuptools-scm" ,python-setuptools-scm)
("python-pytest" ,python-pytest)
("python-pytest-runner" ,python-pytest-runner)))
(home-page "http://github.com/jaraco/path.py")
@@ -3896,6 +4095,8 @@ common operations on files to be invoked on those path objects directly.")
(build-system python-build-system)
(propagated-inputs
`(("python-pathpy" ,python-pathpy)))
+ (native-inputs
+ `(("python-setuptools" ,python-setuptools)))
(home-page "https://github.com/vivainio/pickleshare")
(synopsis "Tiny key value database with concurrency support")
(description
@@ -3924,7 +4125,8 @@ PickleShare.")
(base32 "0wwi1c6md4vkbcsfsf8dklf3vr4mcdj4mpxkanwgb6jb1432x5yw"))))
(build-system python-build-system)
(native-inputs
- `(("unzip" ,unzip)))
+ `(("python-setuptools" ,python-setuptools)
+ ("unzip" ,unzip)))
(home-page "http://cheeseshop.python.org/pypi/simplegeneric")
(synopsis "Python module for simple generic functions")
(description
@@ -4018,7 +4220,7 @@ without using the configuration machinery.")
`(("readline" ,readline)
("which" ,which)
("python-matplotlib" ,python-matplotlib)
- ("python-numpy" ,python-numpy-bootstrap)
+ ("python-numpy" ,python-numpy)
("python-numpydoc" ,python-numpydoc)
("python-jinja2" ,python-jinja2)
("python-mistune" ,python-mistune)
@@ -4108,8 +4310,9 @@ computing.")
(inputs
`(("python2-mock" ,python2-mock)
("python2-matplotlib" ,python2-matplotlib)
- ,@(alist-delete "python-matplotlib"
- (package-inputs ipython)))))))
+ ("python2-numpy" ,python2-numpy)
+ ,@(fold alist-delete (package-inputs ipython)
+ '("python-matplotlib" "python-numpy")))))))
(define-public python-isodate
(package
@@ -4211,6 +4414,17 @@ features useful for text console applications.")
(sha256
(base32 "1py62qir966lvdkngg0v8k1khsqxwk5m4s8nflpk1agk5f5nqb71"))))
(build-system gnu-build-system)
+ (arguments
+ '(#:phases
+ (modify-phases %standard-phases
+ (add-before
+ 'check 'pre-check
+ (lambda _
+ ;; XXX: For the missing '/etc/machine-id'.
+ (substitute* "test/run-test.sh"
+ (("DBUS_FATAL_WARNINGS=1")
+ "DBUS_FATAL_WARNINGS=0"))
+ #t)))))
(native-inputs
`(("pkg-config" ,pkg-config)))
(inputs
@@ -4542,7 +4756,9 @@ and statistical routines from scipy and statsmodels.")
(package (inherit seaborn)
(propagated-inputs
`(("python2-pytz" ,python2-pytz)
- ,@(package-propagated-inputs seaborn))))))
+ ("python2-pandas" ,python2-pandas)
+ ("python2-matplotlib" ,python2-matplotlib)
+ ("python2-scipy" ,python2-scipy))))))
(define-public python-sympy
(package
@@ -4677,7 +4893,7 @@ It is written entirely in Python.")
`(("python-certifi" ,python-certifi)))
(native-inputs
`(("python-setuptools" ,python-setuptools)))
- (home-page "https://pypi.python.org/pypi/tornado/4.1")
+ (home-page "http://www.tornadoweb.org/")
(synopsis "Python web framework and asynchronous networking library")
(description
"Tornado is a Python web framework and asynchronous networking library,
@@ -4846,6 +5062,20 @@ complexity of Python source code.")
(define-public python2-mccabe
(package-with-python2 python-mccabe))
+(define-public python-mccabe-0.2.1
+ (package (inherit python-mccabe)
+ (version "0.2.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "mccabe" version))
+ (sha256
+ (base32
+ "0fi4a81kr5bcv5p4xgibqr595hyj5dafkqgsmfk96mfy8w71fajs"))))))
+
+(define-public python2-mccabe-0.2.1
+ (package-with-python2 python-mccabe-0.2.1))
+
;; Flake8 2.4.1 requires an older version of pep8.
;; This should be removed ASAP.
(define-public python-pep8-1.5.7
@@ -4916,6 +5146,29 @@ complexity of Python source code.")
(define-public python2-flake8
(package-with-python2 python-flake8))
+;; This will only be needed by the python-hacking package and will not be
+;; necessary once python-hacking > 0.10.2 is released.
+(define-public python-flake8-2.2.4
+ (package (inherit python-flake8)
+ (inputs
+ `(("python-setuptools" ,python-setuptools)
+ ("python-pep8" ,python-pep8-1.5.7)
+ ("python-pyflakes" ,python-pyflakes-0.8.1)
+ ("python-mccabe" ,python-mccabe-0.2.1)
+ ("python-mock" ,python-mock)
+ ("python-nose" ,python-nose)))
+ (version "2.2.4")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "flake8" version))
+ (sha256
+ (base32
+ "1r9wsry4va45h1rck5hxd3vzsg2q3y6lnl6pym1bxvz8ry19jwx8"))))))
+
+(define-public python2-flake8-2.2.4
+ (package-with-python2 python-flake8-2.2.4))
+
(define-public python-mistune
(package
(name "python-mistune")
@@ -5464,7 +5717,7 @@ responses, rather than doing any computation.")
(define-public python-cryptography-vectors
(package
(name "python-cryptography-vectors")
- (version "1.0.1")
+ (version "1.0.2")
(source
(origin
(method url-fetch)
@@ -5473,7 +5726,7 @@ responses, rather than doing any computation.")
version ".tar.gz"))
(sha256
(base32
- "1i2chlyhlx4792di82fqzcy9wz0gnnc661bj46zr794ip4629sp4"))))
+ "0dx98kcypmarwwhi6rjwy30ridys2ja6mc6mjf0svd4nllkaljdq"))))
(build-system python-build-system)
(native-inputs
`(("python-setuptools" ,python-setuptools)))
@@ -5490,7 +5743,7 @@ responses, rather than doing any computation.")
(define-public python-cryptography
(package
(name "python-cryptography")
- (version "1.0.1")
+ (version "1.0.2")
(source
(origin
(method url-fetch)
@@ -5498,7 +5751,7 @@ responses, rather than doing any computation.")
"cryptography/cryptography-" version ".tar.gz"))
(sha256
(base32
- "1lxzvhlyl6h6nm77n34622rcj2cxnx220x9vgjlw76wjd8m0kqyg"))))
+ "1jmcidddbbgdavvnvjjc0pda4b9a5i9idsivchn69pqxx68x8k6n"))))
(build-system python-build-system)
(inputs
`(("openssl" ,openssl)))
@@ -5713,3 +5966,653 @@ Python's @code{ctypes} foreign function interface (FFI).")
(define-public python2-libarchive-c
(package-with-python2 python-libarchive-c))
+
+(define-public python-file
+ (package
+ (inherit file)
+ (name "python-file")
+ (build-system python-build-system)
+ (arguments
+ '(#:tests? #f ;no tests
+ #:phases (modify-phases %standard-phases
+ (add-before 'build 'change-directory
+ (lambda _
+ (chdir "python")
+ #t))
+ (add-before 'build 'set-library-file-name
+ (lambda* (#:key inputs #:allow-other-keys)
+ (let ((file (assoc-ref inputs "file")))
+ (substitute* "magic.py"
+ (("find_library\\('magic'\\)")
+ (string-append "'" file "/lib/libmagic.so'")))
+ #t))))))
+ (inputs `(("file" ,file)))
+ (self-native-input? #f)
+ (synopsis "Python bindings to the libmagic file type guesser")))
+
+(define-public python2-file
+ (package-with-python2 python-file))
+
+(define-public python-debian
+ (package
+ (name "python-debian")
+ (version "0.1.23")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://pypi.python.org/packages/source/p/python-debian/python-debian-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "193faznwnjc3n5991wyzim6h9gyq1zxifmfrnpm3avgkh7ahyynh"))))
+ (build-system python-build-system)
+ (inputs
+ `(("python-six" ,python-six)))
+ (native-inputs
+ `(("python-setuptools" ,python-setuptools)))
+ (home-page "http://packages.debian.org/sid/python-debian")
+ (synopsis "Debian package related modules")
+ (description
+ ;; XXX: Use @enumerate instead of @itemize to work around
+ ;; <http://bugs.gnu.org/21772>.
+ "This package provides Python modules that abstract many formats of
+Debian-related files, such as:
+
+@enumerate
+@item Debtags information;
+@item @file{debian/changelog} files;
+@item packages files, pdiffs;
+@item control files of single or multiple RFC822-style paragraphs---e.g.
+ @file{debian/control}, @file{.changes}, @file{.dsc};
+@item Raw @file{.deb} and @file{.ar} files, with (read-only) access to
+ contained files and meta-information.
+@end enumerate\n")
+
+ ;; Modules are either GPLv2+ or GPLv3+.
+ (license gpl3+)))
+
+(define-public python2-debian
+ (package-with-python2 python-debian))
+
+(define-public python-chardet
+ (package
+ (name "python-chardet")
+ (version "2.3.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://pypi.python.org/packages/source/c/chardet/chardet-"
+ version
+ ".tar.gz"))
+ (sha256
+ (base32
+ "1ak87ikcw34fivcgiz2xvi938dmclh078az65l9x3rmgljrkhgp5"))))
+ (build-system python-build-system)
+ (native-inputs
+ `(("python-setuptools" ,python-setuptools)))
+ (home-page "https://github.com/chardet/chardet")
+ (synopsis "Universal encoding detector for Python 2 and 3")
+ (description
+ "This package provides @code{chardet}, a Python module that can
+automatically detect a wide range of file encodings.")
+ (license lgpl2.1+)))
+
+(define-public python2-chardet
+ (package-with-python2 python-chardet))
+
+(define-public python-docopt
+ (package
+ (name "python-docopt")
+ (version "0.6.2")
+ (source
+ (origin
+ (method url-fetch)
+ ;; The release on PyPI does not include tests.
+ (uri (string-append
+ "https://github.com/docopt/docopt/archive/"
+ version ".tar.gz"))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "16bf890xbdz3m30rsv2qacklh2rdn1zrfspfnwzx9g7vwz8yw4r1"))))
+ (build-system python-build-system)
+ (native-inputs
+ `(("python-pytest" ,python-pytest)
+ ("python-setuptools" ,python-setuptools)))
+ (arguments
+ `(#:phases (alist-replace
+ 'check
+ (lambda _ (zero? (system* "py.test")))
+ %standard-phases)))
+ (home-page "http://docopt.org")
+ (synopsis "Command-line interface description language for Python")
+ (description "This library allows the user to define a command-line
+interface from a program's help message rather than specifying it
+programatically with command-line parsers like @code{getopt} and
+@code{argparse}.")
+ (license license:expat)))
+
+(define-public python2-docopt
+ (package-with-python2 python-docopt))
+
+(define-public python-zope-event
+ (package
+ (name "python-zope-event")
+ (version "4.1.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://pypi.python.org/packages/source/z"
+ "/zope.event/zope.event-" version ".tar.gz"))
+ (sha256
+ (base32
+ "11p75zpfz3ffhz21nzx9wb23xs993ck5s6hkjcvhswwizni5jynw"))))
+ (build-system python-build-system)
+ (inputs
+ `(("python-setuptools" ,python-setuptools)))
+ (home-page "http://pypi.python.org/pypi/zope.event")
+ (synopsis "Event publishing system for Python")
+ (description "Zope.event provides an event publishing API, intended for
+use by applications which are unaware of any subscribers to their events. It
+is a simple event-dispatching system on which more sophisticated event
+dispatching systems can be built.")
+ (license zpl2.1)))
+
+(define-public python2-zope-event
+ (package-with-python2 python-zope-event))
+
+(define-public python-zope-interface
+ (package
+ (name "python-zope-interface")
+ (version "4.1.3")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://pypi.python.org/packages/source/z"
+ "/zope.interface/zope.interface-" version ".tar.gz"))
+ (sha256
+ (base32
+ "0ks8h73b2g4bkad821qbv0wzjppdrwys33i7ka45ik3wxjg1l8if"))))
+ (build-system python-build-system)
+ (propagated-inputs
+ `(("python-zope-event" ,python-zope-event)))
+ (home-page "https://github.com/zopefoundation/zope.interface")
+ (synopsis "Python implementation of the \"design by contract\"
+methodology")
+ (description "Zope.interface provides an implementation of \"object
+interfaces\" for Python. Interfaces are a mechanism for labeling objects as
+conforming to a given API or contract.")
+ (license zpl2.1)))
+
+(define-public python2-zope-interface
+ (package-with-python2 python-zope-interface))
+
+(define-public python-zope-exceptions
+ (package
+ (name "python-zope-exceptions")
+ (version "4.0.8")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://pypi.python.org/packages/source/z"
+ "/zope.exceptions/zope.exceptions-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "0zwxaaa66sqxg5k7zcrvs0fbg9ym1njnxnr28dfmchzhwjvwnfzl"))))
+ (build-system python-build-system)
+ (arguments
+ '(#:tests? #f)) ; circular dependency with zope.testrunner
+ (propagated-inputs
+ `(("python-zope-interface" ,python-zope-interface)))
+ (home-page "http://cheeseshop.python.org/pypi/zope.exceptions")
+ (synopsis "Zope exceptions")
+ (description "Zope.exceptions provides general-purpose exception types
+that have uses outside of the Zope framework.")
+ (license zpl2.1)))
+
+(define-public python2-zope-exceptions
+ (package-with-python2 python-zope-exceptions))
+
+(define-public python-zope-testing
+ (package
+ (name "python-zope-testing")
+ (version "4.5.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://pypi.python.org/packages/source/z"
+ "/zope.testing/zope.testing-" version ".tar.gz"))
+ (sha256
+ (base32
+ "1yvglxhzvhl45mndvn9gskx2ph30zz1bz7rrlyfs62fv2pvih90s"))))
+ (build-system python-build-system)
+ (native-inputs
+ `(("python-zope-exceptions" ,python-zope-exceptions)))
+ (propagated-inputs
+ `(("python-zope-interface" ,python-zope-interface)))
+ (home-page "http://pypi.python.org/pypi/zope.testing")
+ (synopsis "Zope testing helpers")
+ (description "Zope.testing provides a number of testing utilities for HTML
+forms, HTTP servers, regular expressions, and more.")
+ (license zpl2.1)))
+
+(define-public python2-zope-testing
+ (package-with-python2 python-zope-testing))
+
+(define-public python-zope-testrunner
+ (package
+ (name "python-zope-testrunner")
+ (version "4.4.9")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://pypi.python.org/packages/source/z"
+ "/zope.testrunner/zope.testrunner-"
+ version ".zip"))
+ (sha256
+ (base32
+ "1r7iqknhh55y45f64mz5hghgvzx34h1i11k350s0avx6q8gznja1"))))
+ (build-system python-build-system)
+ (native-inputs
+ `(("python-six" ,python-six)
+ ("python-zope-exceptions" ,python-zope-exceptions)
+ ("python-zope-testing" ,python-zope-testing)
+ ("unzip" ,unzip)))
+ (propagated-inputs
+ `(("python-zope-interface" ,python-zope-interface)))
+ (home-page "http://pypi.python.org/pypi/zope.testrunner")
+ (synopsis "Zope testrunner script")
+ (description "Zope.testrunner provides a script for running Python
+tests.")
+ (license zpl2.1)))
+
+(define-public python2-zope-testrunner
+ (let ((base (package-with-python2 python-zope-testrunner)))
+ (package
+ (inherit base)
+ (native-inputs
+ (append (package-native-inputs base)
+ `(("python2-subunit" ,python2-subunit)
+ ("python2-mimeparse" ,python2-mimeparse)))))))
+
+(define-public python-zope-i18nmessageid
+ (package
+ (name "python-zope-i18nmessageid")
+ (version "4.0.3")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://pypi.python.org/packages/source/z"
+ "/zope.i18nmessageid/zope.i18nmessageid-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "1rslyph0klk58dmjjy4j0jxy21k03azksixc3x2xhqbkv97cmzml"))))
+ (build-system python-build-system)
+ (inputs
+ `(("python-setuptools" ,python-setuptools)))
+ (home-page "http://pypi.python.org/pypi/zope.i18nmessageid")
+ (synopsis "Message identifiers for internationalization")
+ (description "Zope.i18nmessageid provides facilities for declaring
+internationalized messages within program source text.")
+ (license zpl2.1)))
+
+(define-public python2-zope-i18nmessageid
+ (package-with-python2 python-zope-i18nmessageid))
+
+(define-public python-zope-schema
+ (package
+ (name "python-zope-schema")
+ (version "4.4.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://pypi.python.org/packages/source/z"
+ "/zope.schema/zope.schema-" version ".tar.gz"))
+ (sha256
+ (base32
+ "1p943jdxb587dh7php4vx04qvn7b2877hr4qs5zyckvp5afhhank"))))
+ (build-system python-build-system)
+ (propagated-inputs
+ `(("python-zope-event" ,python-zope-event)
+ ("python-zope-interface" ,python-zope-interface)))
+ (native-inputs
+ `(("python-zope-testing" ,python-zope-testing)))
+ (home-page "http://pypi.python.org/pypi/zope.schema")
+ (synopsis "Zope data schemas")
+ (description "Zope.scheme provides extensions to zope.interface for
+defining data schemas.")
+ (license zpl2.1)))
+
+(define-public python2-zope-schema
+ (package-with-python2 python-zope-schema))
+
+(define-public python-zope-configuration
+ (package
+ (name "python-zope-configuration")
+ (version "4.0.3")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://pypi.python.org/packages/source/z"
+ "/zope.configuration/zope.configuration-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "1x9dfqypgympnlm25p9m43xh4qv3p7d75vksv9pzqibrb4cggw5n"))))
+ (build-system python-build-system)
+ (propagated-inputs
+ `(("python-zope-i18nmessageid" ,python-zope-i18nmessageid)
+ ("python-zope-schema" ,python-zope-schema)))
+ (home-page "http://pypi.python.org/pypi/zope.configuration")
+ (synopsis "Zope Configuration Markup Language")
+ (description "Zope.configuration implements ZCML, the Zope Configuration
+Markup Language.")
+ (license zpl2.1)))
+
+(define-public python2-zope-configuration
+ (package-with-python2 python-zope-configuration))
+
+(define-public python-zope-proxy
+ (package
+ (name "python-zope-proxy")
+ (version "4.1.6")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://pypi.python.org/packages/source/z"
+ "/zope.proxy/zope.proxy-" version ".tar.gz"))
+ (sha256
+ (base32
+ "0pqwwmvm1prhwv1ziv9lp8iirz7xkwb6n2kyj36p2h0ppyyhjnm4"))))
+ (build-system python-build-system)
+ (propagated-inputs
+ `(("python-zope-interface" ,python-zope-interface)))
+ (home-page "http://pypi.python.org/pypi/zope.proxy")
+ (synopsis "Generic, transparent proxies")
+ (description "Zope.proxy provides generic, transparent proxies for Python.
+Proxies are special objects which serve as mostly-transparent wrappers around
+another object, intervening in the apparent behavior of the wrapped object
+only when necessary to apply the policy (e.g., access checking, location
+brokering, etc.) for which the proxy is responsible.")
+ (license zpl2.1)))
+
+(define-public python2-zope-proxy
+ (package-with-python2 python-zope-proxy))
+
+(define-public python-zope-location
+ (package
+ (name "python-zope-location")
+ (version "4.0.3")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://pypi.python.org/packages/source/z"
+ "/zope.location/zope.location-" version ".tar.gz"))
+ (sha256
+ (base32
+ "1nj9da4ksiyv3h8n2vpzwd0pb03mdsh7zy87hfpx72b6p2zcwg74"))))
+ (build-system python-build-system)
+ (native-inputs
+ `(("python-zope-proxy" ,python-zope-proxy)
+ ("python-zope-schema" ,python-zope-schema)))
+ (home-page "http://pypi.python.org/pypi/zope.location/")
+ (synopsis "Zope location library")
+ (description "Zope.location implements the concept of \"locations\" in
+Zope3, which are are special objects that have a structural location.")
+ (license zpl2.1)))
+
+(define-public python2-zope-location
+ (package-with-python2 python-zope-location))
+
+(define-public python-zope-security
+ (package
+ (name "python-zope-security")
+ (version "4.0.3")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://pypi.python.org/packages/source/z"
+ "/zope.security/zope.security-" version ".tar.gz"))
+ (sha256
+ (base32
+ "14zmf684amc0x32kq05yxnhfqd1cmyhafkw05gn81rn90zjv6ssy"))))
+ (build-system python-build-system)
+ (propagated-inputs
+ `(("python-zope-i18nmessageid" ,python-zope-i18nmessageid)
+ ("python-zope-component" ,python-zope-component)
+ ("python-zope-location" ,python-zope-location)
+ ("python-zope-proxy" ,python-zope-proxy)
+ ("python-zope-schema" ,python-zope-schema)
+ ("python-zope-testrunner" ,python-zope-testrunner)
+ ("python-zope-testing" ,python-zope-testing)))
+ (home-page "http://pypi.python.org/pypi/zope.security")
+ (synopsis "Zope security framework")
+ (description "Zope.security provides a generic mechanism to implement
+security policies on Python objects.")
+ (license zpl2.1)))
+
+(define-public python2-zope-security
+ (let ((zope-security (package-with-python2 python-zope-security)))
+ (package (inherit zope-security)
+ (propagated-inputs
+ `(("python2-zope-testrunner" ,python2-zope-testrunner)
+ ,@(alist-delete
+ "python-zope-testrunner"
+ (package-propagated-inputs zope-security)))))))
+
+(define-public python-zope-component
+ (package
+ (name "python-zope-component")
+ (version "4.2.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://pypi.python.org/packages/source/z"
+ "/zope.component/zope.component-" version ".tar.gz"))
+ (sha256
+ (base32
+ "06pqr8m5jv12xjyy5b59hh9anl61cxkzhw9mka33r3nxalmi2b18"))))
+ (build-system python-build-system)
+ (arguments
+ ;; Skip tests due to circular dependency with python-zope-security.
+ '(#:tests? #f))
+ (native-inputs
+ `(("python-zope-testing" ,python-zope-testing)))
+ (propagated-inputs
+ `(("python-zope-event" ,python-zope-event)
+ ("python-zope-interface" ,python-zope-interface)
+ ("python-zope-i18nmessageid" ,python-zope-i18nmessageid)
+ ("python-zope-configuration" ,python-zope-configuration)))
+ (home-page "https://github.com/zopefoundation/zope.component")
+ (synopsis "Zope Component Architecture")
+ (description "Zope.component represents the core of the Zope Component
+Architecture. Together with the zope.interface package, it provides
+facilities for defining, registering and looking up components.")
+ (license zpl2.1)))
+
+(define-public python2-zope-component
+ (package-with-python2 python-zope-component))
+
+(define-public python2-pythondialog
+ (package
+ (name "python2-pythondialog")
+ (version "3.3.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://pypi.python.org/packages/source/p/"
+ "python2-pythondialog/python2-pythondialog-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "1yhkagsh99bfi592ymczf8rnw8rk6n9hdqy3dd98m3yrx8zmjvry"))))
+ (build-system python-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'patch-path
+ (lambda* (#:key inputs #:allow-other-keys)
+ (let* ((dialog (assoc-ref inputs "dialog")))
+ ;; Since this library really wants to grovel the search path, we
+ ;; must hardcode dialog's store path into it.
+ (substitute* "dialog.py"
+ (("os.getenv\\(\"PATH\", \":/bin:/usr/bin\"\\)")
+ (string-append "os.getenv(\"PATH\") + \":" dialog "/bin\"")))
+ #t))))
+ #:python ,python-2
+ #:tests? #f)) ; no test suite
+ (propagated-inputs
+ `(("dialog" ,dialog)))
+ (home-page "http://pythondialog.sourceforge.net/")
+ (synopsis "Python interface to the UNIX dialog utility")
+ (description "A Python wrapper for the dialog utility. Its purpose is to
+provide an easy to use, pythonic and comprehensive Python interface to dialog.
+This allows one to make simple text-mode user interfaces on Unix-like systems")
+ (license lgpl2.1)))
+
+(define-public python-pyrfc3339
+ (package
+ (name "python-pyrfc3339")
+ (version "0.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://pypi.python.org/packages/source/p/"
+ "pyRFC3339/pyRFC3339-" version ".tar.gz"))
+ (sha256
+ (base32
+ "1pp648xsjaw9h1xq2mgwzda5wis2ypjmzxlksc1a8grnrdmzy155"))))
+ (build-system python-build-system)
+ (propagated-inputs
+ `(("python-pytz" ,python-pytz)))
+ (native-inputs
+ `(("python-nose" ,python-nose)
+ ("python-setuptools" ,python-setuptools)))
+ (home-page "https://github.com/kurtraschke/pyRFC3339")
+ (synopsis "Python timestamp library")
+ (description "Python library for generating and parsing RFC 3339-compliant
+timestamps.")
+ (license license:expat)))
+
+(define-public python2-pyrfc3339
+ (package-with-python2 python-pyrfc3339))
+
+(define-public python-werkzeug
+ (package
+ (name "python-werkzeug")
+ (version "0.11.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://pypi.python.org/packages/source/W/Werkzeug"
+ "/Werkzeug-" version ".tar.gz"))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "1gzwn1lkl90f3l1nzzxr7vjhm21qk8f837i8rvny5a209fcrhkzb"))))
+ (build-system python-build-system)
+ (native-inputs
+ `(("python-pytest" ,python-pytest)))
+ (home-page "http://werkzeug.pocoo.org/")
+ (synopsis "Utilities for WSGI applications")
+ (description "One of the most advanced WSGI utility modules. It includes a
+powerful debugger, full-featured request and response objects, HTTP utilities to
+handle entity tags, cache control headers, HTTP dates, cookie handling, file
+uploads, a powerful URL routing system and a bunch of community-contributed
+addon modules.")
+ (license x11)))
+
+(define-public python2-werkzeug
+ (package-with-python2 python-werkzeug))
+
+(define-public python-configobj
+ (package
+ (name "python-configobj")
+ (version "5.0.6")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://pypi.python.org/packages/source/c/configobj/"
+ "configobj-" version ".tar.gz"))
+ (sha256
+ (base32
+ "00h9rcmws03xvdlfni11yb60bz3kxfvsj6dg6nrpzj71f03nbxd2"))
+ ;; Patch setup.py so it looks for python-setuptools, which is
+ ;; required to parse the keyword 'install_requires' in setup.py.
+ (patches (list (search-patch "python-configobj-setuptools.patch")))))
+ (build-system python-build-system)
+ (native-inputs
+ `(("python-setuptools" ,python-setuptools)
+ ("python-six" ,python-six)))
+ (synopsis "Config file reading, writing and validation")
+ (description "ConfigObj is a simple but powerful config file reader and
+writer: an ini file round tripper. Its main feature is that it is very easy to
+use, with a straightforward programmer’s interface and a simple syntax for
+config files.")
+ (home-page "https://github.com/DiffSK/configobj")
+ (license bsd-3)))
+
+(define-public python2-configobj
+ (package-with-python2 python-configobj))
+
+(define-public python-configargparse
+ (package
+ (name "python-configargparse")
+ (version "0.10.0")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://pypi.python.org/packages/source/C/ConfigArgParse/"
+ "ConfigArgParse-" version ".tar.gz"))
+ (sha256
+ (base32
+ "19wh919gbdbzxzpagg52q3lm62yicm95ddlcx77dyjc1slyshl1v"))))
+ (build-system python-build-system)
+ (arguments
+ ;; FIXME: Bug in test suite filed upstream:
+ ;; https://github.com/bw2/ConfigArgParse/issues/32
+ '(#:tests? #f))
+ (synopsis "Replacement for argparse")
+ (description "A drop-in replacement for argparse that allows options to also
+be set via config files and/or environment variables.")
+ (home-page "https://github.com/bw2/ConfigArgParse")
+ (license license:expat)))
+
+(define-public python2-configargparse
+ (package-with-python2 python-configargparse))
+
+(define-public python-ndg-httpsclient
+ (package
+ (name "python-ndg-httpsclient")
+ (version "0.4.0")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://pypi.python.org/packages/source/n/ndg-httpsclient/"
+ "ndg_httpsclient-" version ".tar.gz"))
+ (sha256
+ (base32
+ "0x32ibixm3vv5m9xfk83xsqm8xcqw4dd0khbh6qbri6rxgymbhg8"))))
+ (build-system python-build-system)
+ (propagated-inputs
+ `(("python-pyopenssl" ,python-pyopenssl)))
+ (synopsis "HTTPS support for Python's httplib and urllib2")
+ (description "This is a HTTPS client implementation for httplib and urllib2
+based on PyOpenSSL. PyOpenSSL provides a more fully featured SSL implementation
+over the default provided with Python and importantly enables full verification
+of the SSL peer.")
+ (home-page "https://github.com/cedadev/ndg_httpsclient/")
+ (license bsd-3)))
+
+;; python2-openssl requires special care, so package-with-python2 is
+;; insufficient.
+(define-public python2-ndg-httpsclient
+ (package (inherit python-ndg-httpsclient)
+ (name "python2-ndg-httpsclient")
+ (arguments `(#:python ,python-2))
+ (propagated-inputs
+ `(("python2-pyopenssl" ,python2-pyopenssl)))))