diff options
Diffstat (limited to 'gnu/packages/python.scm')
-rw-r--r-- | gnu/packages/python.scm | 1105 |
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))))) |