;;; Copyright © 2016, 2017, 2018, 2019 Marius Bakke <mbakke@fastmail.com>
;;; Copyright © 2016, 2017 Stefan Reichör <stefan@xsteve.at>
;;; Copyright © 2016 Dylan Jeffers <sapientech@sapientech@openmailbox.org>
-;;; Copyright © 2016, 2017 Alex Vong <alexvong1995@gmail.com>
+;;; Copyright © 2016, 2017, 2019 Alex Vong <alexvong1995@gmail.com>
;;; Copyright © 2016, 2017, 2018 Arun Isaac <arunisaac@systemreboot.net>
;;; Copyright © 2016, 2017, 2018 Julien Lepiller <julien@lepiller.eu>
;;; Copyright © 2016, 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2019 Brett Gilio <brettg@posteo.net>
;;; Copyright © 2019 Sam <smbaines8@gmail.com>
;;; Copyright © 2019 Jack Hill <jackhill@jackhill.us>
+;;; Copyright © 2019 Guillaume Le Vaillant <glv@posteo.net>
+;;; Copyright © 2019 Alex Griffin <a@ajgrf.com>
+;;; Copyright © 2019 Pierre Langlois <pierre.langlois@gmx.com>
+;;; Copyright © 2019 Jacob MacDonald <jaccarmac@gmail.com>
+;;; Copyright © 2019 Giacomo Leidi <goodoldpaul@autistici.org>
;;;
;;; This file is part of GNU Guix.
;;;
#:use-module (gnu packages compression)
#:use-module (gnu packages crypto)
#:use-module (gnu packages databases)
+ #:use-module (gnu packages dbm)
#:use-module (gnu packages file)
#:use-module (gnu packages fontutils)
#:use-module (gnu packages gcc)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages python)
#:use-module (gnu packages python-check)
+ #:use-module (gnu packages python-compression)
#:use-module (gnu packages python-crypto)
#:use-module (gnu packages python-web)
#:use-module (gnu packages qt)
(define-public python-babel
(package
(name "python-babel")
- (version "2.6.0")
+ (version "2.7.0")
(source
(origin
(method url-fetch)
(uri (pypi-uri "Babel" version))
(sha256
(base32
- "08rxmbx2s4irp0w0gmn498vns5xy0fagm0fg33xa772jiks51flc"))))
+ "0a7wawx8vsg7igvz6p3x909fskhg4b2y1910xk4f4c8y22p3aqg8"))))
(build-system python-build-system)
(native-inputs
`(("python-freezegun" ,python-freezegun)
(define-public python2-babel
(package-with-python2 python-babel))
+;; Sphinx < 2.0 requires this version. Remove once no longer needed.
+(define-public python2-babel-2.6
+ (package
+ (inherit python2-babel)
+ (version "2.6.0")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "Babel" version))
+ (sha256
+ (base32
+ "08rxmbx2s4irp0w0gmn498vns5xy0fagm0fg33xa772jiks51flc"))))))
+
(define-public python2-backport-ssl-match-hostname
(package
(name "python2-backport-ssl-match-hostname")
(define-public python-setuptools
(package
(name "python-setuptools")
- (version "40.0.0")
+ (version "41.0.1")
(source
(origin
(method url-fetch)
(uri (pypi-uri "setuptools" version ".zip"))
(sha256
(base32
- "0pq116lr14gnc62v76nk0npkm6krb2mpp7p9ab369zgv4n7dnah1"))
+ "04sns22y2hhsrwfy1mha2lgslvpjsjsz8xws7h2rh5a7ylkd28m2"))
(modules '((guix build utils)))
(snippet
'(begin
`(("python2-functools32" ,python2-functools32)
,@(package-propagated-inputs jsonschema))))))
+;; This old version is still required by docker-compose as of 1.24.0.
+(define-public python-jsonschema-2.6
+ (package
+ (name "python-jsonschema")
+ (version "2.6.0")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "jsonschema" version))
+ (sha256
+ (base32
+ "00kf3zmpp9ya4sydffpifn0j0mzm342a2vzh82p6r0vh10cg7xbg"))))
+ (build-system python-build-system)
+ (arguments
+ '(#:phases
+ (modify-phases %standard-phases
+ (replace 'check (lambda _ (invoke "nosetests"))))))
+ (native-inputs
+ `(("python-nose" ,python-nose)
+ ("python-vcversioner" ,python-vcversioner)))
+ (home-page "https://github.com/Julian/jsonschema")
+ (synopsis "Implementation of JSON Schema for Python")
+ (description
+ "Jsonschema is an implementation of JSON Schema for Python.")
+ (license license:expat)
+ (properties `((python2-variant . ,(delay python2-jsonschema))))))
+
(define-public python-schema
(package
(name "python-schema")
(define-public python-unidecode
(package
(name "python-unidecode")
- (version "1.0.23")
+ (version "1.1.0")
(source (origin
(method url-fetch)
(uri (pypi-uri "Unidecode" version))
(sha256
(base32
- "1ysjbr3nqfqj97h8zyj3v9pya413vkv7a1mzml80w37xx15kb1cb"))))
+ "00pi0czzwvbf7djhkkjyvimj60wqdx0llbddzfnax650g9b8yscc"))))
(build-system python-build-system)
(home-page "https://pypi.python.org/pypi/Unidecode")
(synopsis "ASCII transliterations of Unicode text")
(define-public python-pygments
(package
(name "python-pygments")
- (version "2.4.0")
+ (version "2.4.2")
(source
(origin
(method url-fetch)
(uri (pypi-uri "Pygments" version))
(sha256
(base32
- "1xb5n3hvhk63kxypc03k7kfry20pny6gygi4bsl9kw1rnzzsdjri"))))
+ "15v2sqm5g12bqa0c7wikfh9ck2nl97ayizy1hpqhmws5gqalq748"))))
(build-system python-build-system)
(arguments
;; FIXME: Tests require sphinx, which depends on this.
(define-public python-robotframework
(package
(name "python-robotframework")
- (version "3.1.1")
+ (version "3.1.2")
;; There are no tests in the PyPI archive.
(source
(origin
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
- (base32
- "1aaiamc9l35m5sf7xl2qc5q9308v7sz3p1qgzcslsjxzddphyn4v"))
+ (base32 "16gnxy0qinh8fhs0qvhff5z2xh49c3cqgm0d7bfjw120df6x7fym"))
(patches (search-patches
"python-robotframework-honor-source-date-epoch.patch"))))
(build-system python-build-system)
Server (PLS).")
(license license:expat)))
+;; XXX: We must use a non-release version since the latest release version
+;; requires python-jedi version < 0.15.
(define-public python-language-server
- (package
- (name "python-language-server")
- (version "0.26.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "python-language-server" version))
- (sha256
- (base32
- "1vs9ckfmm534n1hq3m871916wsjvi5h4gyj6wlzg13ck6506lx0s"))))
- (build-system python-build-system)
- (propagated-inputs
- `(("python-pluggy" ,python-pluggy)
- ("python-jsonrpc-server" ,python-jsonrpc-server)
- ("python-jedi" ,python-jedi)
- ("python-yapf" ,python-yapf)
- ("python-pyflakes" ,python-pyflakes)
- ("python-pydocstyle" ,python-pydocstyle)
- ("python-pycodestyle" ,python-pycodestyle)
- ("python-mccabe" ,python-mccabe)
- ("python-rope" ,python-rope)
- ("python-autopep8" ,python-autopep8)
- ("python-pylint" ,python-pylint)))
- (home-page "https://github.com/palantir/python-language-server")
- (synopsis "Python implementation of the Language Server Protocol")
- (description
- "The Python Language Server (pyls) is an implementation of the Python 3
+ (let ((commit "c3cab77a85b1de4af1aec1bafea6a7320d6baec5")
+ (revision "1"))
+ (package
+ (name "python-language-server")
+ (version (git-version "0.28.3" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/palantir/python-language-server.git")
+ (commit commit)))
+ (sha256
+ (base32
+ "1q0xdwgln09sh58j0ryygj92hfgdhwcs57zjvqihya23jr5v0bz4"))))
+ (build-system python-build-system)
+ (propagated-inputs
+ `(("python-pluggy" ,python-pluggy)
+ ("python-jsonrpc-server" ,python-jsonrpc-server)
+ ("python-jedi" ,python-jedi)
+ ("python-yapf" ,python-yapf)
+ ("python-pyflakes" ,python-pyflakes)
+ ("python-pydocstyle" ,python-pydocstyle)
+ ("python-pycodestyle" ,python-pycodestyle)
+ ("python-mccabe" ,python-mccabe)
+ ("python-rope" ,python-rope)
+ ("python-autopep8" ,python-autopep8)
+ ("python-pylint" ,python-pylint)))
+ (home-page "https://github.com/palantir/python-language-server")
+ (synopsis "Python implementation of the Language Server Protocol")
+ (description
+ "The Python Language Server (pyls) is an implementation of the Python 3
language specification for the Language Server Protocol (LSP). This tool is
used in text editing environments to provide a complete and integrated
feature-set for programming Python effectively.")
- (license license:expat)))
+ (license license:expat))))
(define-public python-black
(package
(define-public mallard-ducktype
(package
(name "mallard-ducktype")
- (version "1.0.1")
+ (version "1.0.2")
(source
(origin
(method git-fetch)
- ;; git-reference because a proper source tarball is not available
- ;; https://lists.gnu.org/archive/html/guix-devel/2019-05/msg00209.html
+ ;; git-reference because tests are not included in pypi source tarball
+ ;; https://issues.guix.gnu.org/issue/36755#2
(uri (git-reference
(url "https://github.com/projectmallard/mallard-ducktype.git")
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32
- "0crland0kmpsyjfmnflcw7gaqy5b87b6ah17cmr9d5z1kyazf54n"))))
+ "1jk9bfz7g04ip78s03b0xak6d54rj4h9zpgadkziy1ji216g6y4c"))))
(build-system python-build-system)
+ (arguments
+ '(#:phases
+ (modify-phases %standard-phases
+ (replace 'check
+ (lambda _
+ (with-directory-excursion "tests"
+ (invoke "sh" "runtests")))))))
(home-page "http://projectmallard.org")
(synopsis "Convert Ducktype to Mallard documentation markup")
(description
(define-public python-cython
(package
(name "python-cython")
- (version "0.29.7")
+ (version "0.29.13")
(source
(origin
(method url-fetch)
(uri (pypi-uri "Cython" version))
(sha256
(base32
- "1s61hq2ikawxp6qvmkbfvvaxy9rqj67cddzwgcfc3dwi44b83l2m"))))
+ "13k37lrcgagwwnzr5bzririsscb793vndj234d475x1h9ad0d7f2"))))
(build-system python-build-system)
;; we need the full python package and not just the python-wrapper
;; because we need libpython3.3m.so
(replace 'check
(lambda _
- (invoke "python" "runtests.py" "-vv"))))))
+ ;; Disable compiler optimizations to greatly reduce the running
+ ;; time of the test suite.
+ (setenv "CFLAGS" "-O0")
+
+ (invoke "python" "runtests.py" "-vv"
+ "-j" (number->string (parallel-job-count))))))))
(home-page "https://cython.org/")
(synopsis "C extensions for Python")
(description "Cython is an optimising static compiler for both the Python
("pkg-config" ,pkg-config)
("python-sphinx" ,python-sphinx)
("python-numpydoc" ,python-numpydoc)
- ("texlive" ,(texlive-union (list texlive-fonts-amsfonts
- texlive-fonts-cm-super
+ ("texlive" ,(texlive-union (list texlive-fonts-cm-super
texlive-fonts-ec
texlive-generic-ifxetex
texlive-generic-pdftex
- texlive-latex-amsfonts
+ texlive-amsfonts
texlive-latex-capt-of
texlive-latex-cmap
texlive-latex-environ
(define-public python-pygit2
(package
(name "python-pygit2")
- (version "0.28.0")
+ (version "0.28.2")
(source
(origin
(method url-fetch)
(uri (pypi-uri "pygit2" version))
(sha256
- (base32 "0lngsaz029d4fjcwhl17pr59nh9gwl6hwfin36nph60fgsmfdg3d"))))
+ (base32 "11kzj5mjkspvplnpdb6bj8dcj6rgmkk986k8hjcklyg5yaxkz32d"))))
(build-system python-build-system)
(arguments
'(#:tests? #f)) ; tests don't run correctly in our environment
(define-public python-matplotlib
(package
(name "python-matplotlib")
- (version "2.2.3")
+ (version "3.1.1")
(source
(origin
(method url-fetch)
(uri (pypi-uri "matplotlib" version))
(sha256
(base32
- "1rcc7x9ig3hpchkc4cwdvym3y451w74275fxr455zkfagrsvymbk"))))
+ "14qc109dibp32xfd9lah54djc0rc76fhbsj9cwyb328lzqmd5sqz"))))
(build-system python-build-system)
(propagated-inputs ; the following packages are all needed at run time
`(("python-cycler" ,python-cycler)
("python-pillow" ,python-pillow)
("python-pytz" ,python-pytz)
("python-six" ,python-six)
- ;; 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
- ;; help of the environment variable GI_TYPELIB_PATH. At build time this
- ;; is done automatically by a 'native-search-path' procedure. However,
- ;; at run-time the user must set this variable as follows:
- ;;
- ;; export GI_TYPELIB_PATH=~/.guix-profile/lib/girepository-1.0
- ("gtk+" ,gtk+)
;; From version 1.4.0 'matplotlib' makes use of 'cairocffi' instead of
;; 'pycairo'. However, 'pygobject' makes use of a 'pycairo' 'context'
;; object. For this reason we need to import both libraries.
- ;; https://pythonhosted.org/cairocffi/cffi_api.html#converting-pycairo
+ ;; https://cairocffi.readthedocs.io/en/stable/cffi_api.html#converting-pycairo-wrappers-to-cairocffi
("python-pycairo" ,python-pycairo)
- ;; XXX: qtwebkit cannot be built reliably.
- ("python-pyqt" ,python-pyqt-without-qtwebkit)
("python-cairocffi" ,python-cairocffi)))
(inputs
`(("libpng" ,libpng)
("tk" ,tk)))
(native-inputs
`(("pkg-config" ,pkg-config)
- ("python-nose" ,python-nose)
- ("python-mock" ,python-mock)))
+ ("python-pytest" ,python-pytest)
+ ("python-mock" ,python-mock)
+ ("unzip" ,unzip)
+ ("jquery-ui"
+ ,(origin
+ (method url-fetch)
+ (uri "https://jqueryui.com/resources/download/jquery-ui-1.12.1.zip")
+ (sha256
+ (base32
+ "0kb21xf38diqgxcdi1z3s9ssq36pldvyqxy56hn6pcva6rs3c8zq"))))))
(arguments
`(#:phases
(modify-phases %standard-phases
+ ;; XXX We disable all image comparison tests because we're using a
+ ;; newer version of FreeType than matplotlib expects. This leads to
+ ;; minor differences throughout the tests.
+ (add-after 'unpack 'fix-and-disable-failing-tests
+ (lambda _
+ (substitute* (append (find-files "lib/matplotlib/tests/"
+ "test_.*\\.py$")
+ (find-files "lib/mpl_toolkits/tests"
+ "test_.*\\.py$"))
+ (("^from matplotlib" match)
+ (string-append "import pytest\n" match))
+ (("( *)@image_comparison" match indent)
+ (string-append indent
+ "@pytest.mark.skip(reason=\"unknown minor image differences\")\n"
+ match)))
+ (substitute* "lib/matplotlib/tests/test_animation.py"
+ (("/bin/sh") (which "sh")))
+ (for-each delete-file
+ ;; test_normal_axes, test_get_tightbbox_polar
+ '("lib/matplotlib/tests/test_axes.py"
+ ;; test_outward_ticks
+ "lib/matplotlib/tests/test_tightlayout.py"
+ ;; Fontconfig returns no fonts.
+ "lib/matplotlib/tests/test_font_manager.py"))
+ #t))
+ (add-before 'install 'install-jquery-ui
+ (lambda* (#:key outputs inputs #:allow-other-keys)
+ (let ((dir (string-append (assoc-ref outputs "out")
+ "/lib/python3.7/site-packages/matplotlib/backends/web_backend/")))
+ (mkdir-p dir)
+ (invoke "unzip"
+ (assoc-ref inputs "jquery-ui")
+ "-d" dir))
+ #t))
+ (delete 'check)
+ (add-after 'install 'check
+ (lambda* (#:key outputs inputs #:allow-other-keys)
+ (add-installed-pythonpath inputs outputs)
+ (invoke "python" "tests.py" "-v"
+ "-m" "not network")))
(add-before 'build 'configure-environment
(lambda* (#:key outputs inputs #:allow-other-keys)
- (let ((cairo (assoc-ref inputs "cairo"))
- (gtk+ (assoc-ref inputs "gtk+")))
- ;; Setting these directories in the 'basedirlist' of 'setup.cfg'
+ (let ((cairo (assoc-ref inputs "cairo")))
+ ;; Setting this directory in the 'basedirlist' of 'setup.cfg'
;; has not effect.
- (setenv "LD_LIBRARY_PATH"
- (string-append cairo "/lib:" gtk+ "/lib"))
+ (setenv "LD_LIBRARY_PATH" (string-append cairo "/lib"))
(setenv "HOME" (getcwd))
(call-with-output-file "setup.cfg"
(lambda (port)
(format port "[directories]~%
basedirlist = ~a,~a~%
- [rc_options]~%
-backend = TkAgg~%"
+[packages]~%
+tests = True~%"
(assoc-ref inputs "tcl")
(assoc-ref inputs "tk")))))
#t)))))
(let ((matplotlib (package-with-python2
(strip-python2-variant python-matplotlib))))
(package (inherit matplotlib)
+ (version "2.2.3")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "matplotlib" version))
+ (sha256
+ (base32
+ "1rcc7x9ig3hpchkc4cwdvym3y451w74275fxr455zkfagrsvymbk"))))
;; Make sure to use special packages for Python 2 instead
;; of those automatically rewritten by package-with-python2.
(propagated-inputs
`(("python-matplotlib" ,python-matplotlib)
("python-colorspacious" ,python-colorspacious)
("python-sphinx" ,python-sphinx)
+ ("python-sphinx-copybutton" ,python-sphinx-copybutton)
("python-sphinx-gallery" ,python-sphinx-gallery)
("python-numpydoc" ,python-numpydoc)
("python-ipython" ,python-ipython)
("python-ipykernel" ,python-ipykernel)
("python-mock" ,python-mock)
("graphviz" ,graphviz)
- ("texlive" ,(texlive-union (list texlive-latex-amsfonts
+ ("texlive" ,(texlive-union (list texlive-amsfonts
texlive-latex-amsmath
texlive-latex-enumitem
texlive-latex-expdlist
texlive-generic-pdftex
- texlive-fonts-amsfonts
texlive-fonts-ec
texlive-fonts-adobe-times
texlive-fonts-txfonts)))
`(#:tests? #f ; we're only generating documentation
#:phases
(modify-phases %standard-phases
+ ;; The tests in python-matplotlib are run after the install phase, so
+ ;; we need to delete the extra phase here.
+ (delete 'check)
(replace 'build
(lambda _
(chdir "doc")
(license (package-license python-matplotlib))))
(define-public python2-matplotlib-documentation
- (package-with-python2 python-matplotlib-documentation))
+ (let ((parent (package-with-python2 python-matplotlib-documentation)))
+ (package
+ (inherit parent)
+ (native-inputs
+ (alist-delete "python-sphinx-copybutton"
+ (package-native-inputs parent))))))
+
+(define-public python-matplotlib-venn
+ (package
+ (name "python-matplotlib-venn")
+ (version "0.11.5")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "matplotlib-venn" version ".zip"))
+ (sha256
+ (base32
+ "13w3i1wih0mij08hrgppzg0g9z50y54rc28l6gdi1r5w45l7l0dy"))))
+ (build-system python-build-system)
+ (arguments '(#:tests? #f)) ; tests are not included
+ (propagated-inputs
+ `(("python-matplotlib" ,python-matplotlib)
+ ("python-numpy" ,python-numpy)
+ ("python-scipy" ,python-scipy)))
+ (native-inputs
+ `(("unzip" ,unzip)))
+ (home-page "https://github.com/konstantint/matplotlib-venn")
+ (synopsis "Plot area-proportional Venn diagrams")
+ (description
+ "This package provides tools for plotting area-proportional two- and
+three-way Venn diagrams in @code{matplotlib}.")
+ (license license:expat)))
(define-public python2-pysnptools
(package
(define-public python-scipy
(package
(name "python-scipy")
- (version "1.1.0")
+ (version "1.3.1")
(source
(origin
(method url-fetch)
(uri (pypi-uri "scipy" version))
(sha256
(base32
- "1lfg686w6vv2m2dfs8v9d0bf2i18z7wz5vgzjnkgmpr4hi0550w7"))))
+ "1df113c9i6vazsn6y3n9wc22jh737z1g7dmx3mypkdwpdnscyhr6"))))
(build-system python-build-system)
(propagated-inputs
`(("python-numpy" ,python-numpy)
(properties `((python2-variant . ,(delay python2-scipy))))
(license license:bsd-3)))
+;; Version 1.2.2 is the last version to support Python 2
(define-public python2-scipy
- (package-with-python2
- (strip-python2-variant python-scipy)))
+ (package
+ (inherit (package-with-python2
+ (strip-python2-variant python-scipy)))
+ (version "1.2.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "scipy" version))
+ (sha256
+ (base32
+ "1cgvgin8fvckv96hjh3ikmwkra5rif51bdb75ifzf7xbil5iwcx4"))))))
(define-public python-socksipy-branch
(package
(define-public python-olefile
(package
(name "python-olefile")
- (version "0.45.1")
+ (version "0.46")
(source
(origin
(method url-fetch)
- (uri (string-append "https://github.com/decalage2/olefile/archive/v"
- version ".tar.gz"))
+ (uri (string-append "https://github.com/decalage2/olefile/releases/"
+ "download/v" version "/olefile-" version ".tar.gz"))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
- "18ai19zwagm6nli14k8bii31ipbab2rp7plrvsm6gmfql551a8ai"))))
+ "1kjxh4gr651hpqkjfv89cfzr40hyvf3vjlda7mifiail83j7j07m"))))
(build-system python-build-system)
- (home-page
- "https://www.decalage.info/python/olefileio")
+ (home-page "https://www.decalage.info/python/olefileio")
(synopsis "Read and write Microsoft OLE2 files.")
(description
"@code{olefile} can parse, read and write Microsoft OLE2 files (Structured
(define-public python-pillow
(package
(name "python-pillow")
- (version "5.4.1")
+ (version "6.1.0")
(source
(origin
(method url-fetch)
(uri (pypi-uri "Pillow" version))
(sha256
(base32
- "17waygkhhzjd75kajlfw9v57mbb41lcpg6cvkdijqd7smm76ccsj"))))
+ "1pnrsz0f0n0c819v1pdr8j6rm8xvhc9f3kh1fv9xpdp9n5ygf108"))))
(build-system python-build-system)
(native-inputs
`(("python-pytest" ,python-pytest)))
(define-public python-pycparser
(package
(name "python-pycparser")
- (version "2.18")
+ (version "2.19")
(source
(origin
(method url-fetch)
(uri (pypi-uri "pycparser" version))
(sha256
(base32
- "09mjyw82ibqzl449g7swy8bfxnfpmas0815d2rkdjlcqw81wma4r"))))
+ "1cr5dcj9628lkz1qlwq3fv97c25363qppkmcayqvd05dpy573259"))))
(outputs '("out" "doc"))
(build-system python-build-system)
(native-inputs
(copy-file (string-append "." file)
(string-append doc file)))
'("/README.rst" "/CHANGES" "/LICENSE"))
- (copy-recursively "examples" examples)))))))
+ (copy-recursively "examples" examples)
+ #t))))))
(home-page "https://github.com/eliben/pycparser")
(synopsis "C parser in Python")
(description
(define-public python2-setuptools-scm
(package-with-python2 python-setuptools-scm))
+(define-public python-pathlib2
+ (package
+ (name "python-pathlib2")
+ (version "2.3.3")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "pathlib2" version))
+ (sha256
+ (base32
+ "0hpp92vqqgcd8h92msm9slv161b1q160igjwnkf2ag6cx0c96695"))))
+ (build-system python-build-system)
+ (propagated-inputs
+ `(("python-scandir" ,python-scandir)
+ ("python-six" ,python-six)))
+ (home-page "https://pypi.python.org/pypi/pathlib2/")
+ (synopsis "Object-oriented file system paths")
+ (description "The goal of pathlib2 is to provide a backport of the
+standard @code{pathlib} module which tracks the standard library module, so
+all the newest features of the standard @code{pathlib} can be used also on
+older Python versions.")
+ (license license:expat)))
+
+(define-public python-importlib-metadata
+ (package
+ (name "python-importlib-metadata")
+ (version "0.18")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "importlib_metadata" version))
+ (sha256
+ (base32
+ "1nqj6vj2z4byi8flzf2lbldhqgicsz9mkpv4k69kjd8p8qxy4vnb"))))
+ (build-system python-build-system)
+ (propagated-inputs
+ `(("python-configparser" ,python-configparser)
+ ("python-contextlib2" ,python-contextlib2)
+ ("python-docutils" ,python-docutils)
+ ("python-pathlib2" ,python-pathlib2)
+ ("python-rst.linker" ,python-rst.linker)
+ ("python-zipp" ,python-zipp)))
+ (native-inputs
+ `(("python-setuptools-scm" ,python-setuptools-scm)
+ ("python-sphinx" ,python-sphinx)))
+ (home-page "https://importlib-metadata.readthedocs.io/")
+ (synopsis "Read metadata from Python packages")
+ (description
+ "@code{importlib_metadata} is a library which provides an API for
+accessing an installed Python package's metadata, such as its entry points or
+its top-level name. This functionality intends to replace most uses of
+@code{pkg_resources} entry point API and metadata API. Along with
+@code{importlib.resources} in Python 3.7 and newer, this can eliminate the
+need to use the older and less efficient @code{pkg_resources} package.")
+ (license license:asl2.0)))
+
+(define-public python-jaraco-packaging
+ (package
+ (name "python-jaraco-packaging")
+ (version "6.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "jaraco.packaging" version))
+ (sha256
+ (base32
+ "0zimrnkh33b9g8ffw11mjh6kvs54cy5gcjw1h5cl1r7dc833dmkm"))))
+ (build-system python-build-system)
+ (propagated-inputs
+ `(("python-pytest" ,python-pytest)
+ ("python-pytest-checkdocs" ,python-pytest-checkdocs)
+ ("python-pytest-flake8" ,python-pytest-flake8)
+ ("python-rst.linker" ,python-rst.linker)
+ ("python-setuptools" ,python-setuptools)
+ ("python-setuptools-scm" ,python-setuptools-scm)
+ ("python-six" ,python-six)
+ ("python-sphinx" ,python-sphinx)))
+ (home-page "https://github.com/jaraco/jaraco.packaging")
+ (synopsis "Tools to supplement packaging Python releases")
+ (description
+ "This package provides various tools to supplement packaging Python
+releases.")
+ (license license:expat)))
+
(define-public python-pathpy
(package
(name "python-pathpy")
- (version "11.0.1")
+ (version "11.5.0")
(source
(origin
(method url-fetch)
(uri (pypi-uri "path.py" version))
(sha256
- (base32 "07x15v8c7ry9bvycw294c9yq6ky9v2b0dalvgi6rn38ilh69vsz7"))))
- ;; (outputs '("out" "doc"))
+ (base32 "1jxkf91syzxlpiwgm83fjfz1m5xh3jrvv4iyl5wjsnkk599pls5n"))))
+ (outputs '("out" "doc"))
(build-system python-build-system)
(propagated-inputs
- `(("python-appdirs" ,python-appdirs)))
+ `(("python-appdirs" ,python-appdirs)
+ ("python-importlib-metadata" ,python-importlib-metadata)))
(native-inputs
`(("python-setuptools-scm" ,python-setuptools-scm)
("python-sphinx" ,python-sphinx)
("python-rst.linker" ,python-rst.linker)
("python-pytest" ,python-pytest)
- ("python-pytest-runner" ,python-pytest-runner)))
+ ("python-pytest-runner" ,python-pytest-runner)
+ ("python-jaraco-packaging" ,python-jaraco-packaging)))
(arguments
- ;; FIXME: Documentation and tests require "jaraco.packaging".
- `(#:tests? #f))
- ;; #:phases
- ;; (modify-phases %standard-phases
- ;; (add-after 'build 'build-doc
- ;; (lambda _
- ;; (setenv "LANG" "en_US.UTF-8")
- ;; (zero? (system* "python" "setup.py" "build_sphinx"))))
- ;; (add-after 'install 'install-doc
- ;; (lambda* (#:key outputs #:allow-other-keys)
- ;; (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
- ;; (doc (string-append data "/doc/" ,name "-" ,version))
- ;; (html (string-append doc "/html")))
- ;; (mkdir-p html)
- ;; (for-each (lambda (file)
- ;; (copy-file file (string-append doc "/" file)))
- ;; '("README.rst" "CHANGES.rst"))
- ;; (copy-recursively "build/sphinx/html" html)))))))
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-after 'build 'build-doc
+ (lambda _
+ (setenv "LANG" "en_US.UTF-8")
+ (invoke "python" "setup.py" "build_sphinx")))
+ (add-after 'install 'install-doc
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
+ (doc (string-append data "/doc/" ,name "-" ,version))
+ (html (string-append doc "/html")))
+ (mkdir-p html)
+ (for-each (lambda (file)
+ (copy-file file (string-append doc "/" file)))
+ '("README.rst" "CHANGES.rst"))
+ (copy-recursively "build/sphinx/html" html)
+ #t)))
+ (replace 'check
+ (lambda _
+ ;; The import time test aborts if an import takes longer than
+ ;; 100ms. It may very well take a little longer than that.
+ (invoke "pytest" "-v" "-k" "not test_import_time"))))))
(home-page "https://github.com/jaraco/path.py")
(synopsis "Python module wrapper for built-in os.path")
(description
;; Tests fail because of missing native python kernel which I assume is
;; provided by the ipython package, which we cannot use because it would
;; cause a dependency cycle.
- (arguments `(#:tests? #f))
+ (arguments
+ `(#:tests? #f
+
+ #:phases (modify-phases %standard-phases
+ (add-after 'unpack 'set-tool-file-names
+ (lambda* (#:key inputs #:allow-other-keys)
+ (let ((iproute (assoc-ref inputs "iproute")))
+ (substitute* "jupyter_client/localinterfaces.py"
+ (("'ip'")
+ (string-append "'" iproute "/sbin/ip'")))
+ #t))))))
+ (inputs
+ `(("iproute" ,iproute)))
(propagated-inputs
`(("python-pyzmq" ,python-pyzmq)
("python-traitlets" ,python-traitlets)
(define-public python-ipykernel
(package
(name "python-ipykernel")
- (version "5.1.0")
+ (version "5.1.1")
(source
(origin
(method url-fetch)
(uri (pypi-uri "ipykernel" version))
(sha256
- (base32 "0br95qhrd5k65g10djngiy27hs0642301hlf2q142i8djabvzh0g"))))
+ (base32 "173nm29g85w8cac3fg40b27qaq26g41wgg6qn79ql1hq4w2n5sgh"))))
(build-system python-build-system)
(arguments
`(#:phases
(lambda _
(setenv "HOME" "/tmp")
(invoke "pytest" "-v")
- #t)))))
+ #t))
+ (add-after 'install 'set-python-file-name
+ (lambda* (#:key outputs #:allow-other-keys)
+ ;; Record the absolute file name of the 'python' executable in
+ ;; 'kernel.json'.
+ (let ((out (assoc-ref outputs "out")))
+ (substitute* (string-append out "/share/jupyter"
+ "/kernels/python3/kernel.json")
+ (("\"python\"")
+ (string-append "\"" (which "python") "\"")))
+ #t))))))
(propagated-inputs
`(("python-ipython" ,python-ipython)
;; imported at runtime during connect
"This package provides the IPython kernel for Jupyter.")
(license license:bsd-3)))
+;; Version 5.1.1 and above no longer support Python 2.
(define-public python2-ipykernel
- (package-with-python2 python-ipykernel))
+ (package
+ (name "python2-ipykernel")
+ (version "5.1.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "ipykernel" version))
+ (sha256
+ (base32 "0br95qhrd5k65g10djngiy27hs0642301hlf2q142i8djabvzh0g"))))
+ (build-system python-build-system)
+ (arguments
+ `(#:python ,python-2
+ #:phases
+ (modify-phases %standard-phases
+ (replace 'check
+ (lambda _
+ (setenv "HOME" "/tmp")
+ (invoke "pytest" "-v")
+ #t)))))
+ (propagated-inputs
+ `(("python2-ipython" ,python2-ipython)
+ ;; imported at runtime during connect
+ ("python2-jupyter-client" ,python2-jupyter-client)))
+ (native-inputs
+ `(("python2-pytest" ,python2-pytest)
+ ("python2-nose" ,python2-nose)))
+ (home-page "https://ipython.org")
+ (synopsis "IPython Kernel for Jupyter")
+ (description
+ "This package provides the IPython kernel for Jupyter.")
+ (license license:bsd-3)))
(define-public python-pari-jupyter
(package
(description "The package provides a PARI/GP kernel for Jupyter.")
(license license:gpl3+)))
+(define-public python-backcall
+ (package
+ (name "python-backcall")
+ (version "0.1.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "backcall" version))
+ (sha256
+ (base32
+ "1r01dqch3f8fdj3n6fviw8hxqrs6w5v0qw4izmvqzry1w9dxiv1q"))))
+ (build-system python-build-system)
+ (home-page "https://github.com/takluyver/backcall/")
+ (synopsis "Specifications for callback functions passed in to an API")
+ (description
+ "If your code lets other people supply callback functions, it's important
+to specify the function signature you expect, and check that functions support
+that. Adding extra parameters later would break other peoples code unless
+you're careful. The @code{backcall} package provides a way of specifying the
+callback signature using a prototype function.")
+ (license license:bsd-3)))
+
;; This is the latest release of the LTS version of ipython with support for
;; Python 2.7 and Python 3.x. Later non-LTS versions starting from 6.0 have
-;; dropped support for Python 2.7. We may want to rename this package.
-(define-public python-ipython
+;; dropped support for Python 2.7.
+(define-public python2-ipython
(package
- (name "python-ipython")
+ (name "python2-ipython")
(version "5.8.0")
(source
(origin
(sha256
(base32 "01l93i4hspf0lvhmycvc8j378bslm9rw30mwfspsl6v1ayc69b2b"))))
(build-system python-build-system)
- (outputs '("out" "doc"))
(propagated-inputs
- `(("python-pyzmq" ,python-pyzmq)
- ("python-prompt-toolkit" ,python-prompt-toolkit-1)
+ `(("python2-backports-shutil-get-terminal-size"
+ ,python2-backports-shutil-get-terminal-size)
+ ("python2-pathlib2" ,python2-pathlib2)
+ ("python2-pyzmq" ,python2-pyzmq)
+ ("python2-prompt-toolkit" ,python2-prompt-toolkit-1)
+ ("python2-terminado" ,python2-terminado)
+ ("python2-matplotlib" ,python2-matplotlib)
+ ("python2-numpy" ,python2-numpy)
+ ("python2-numpydoc" ,python2-numpydoc)
+ ("python2-jinja2" ,python2-jinja2)
+ ("python2-mistune" ,python2-mistune)
+ ("python2-pexpect" ,python2-pexpect)
+ ("python2-pickleshare" ,python2-pickleshare)
+ ("python2-simplegeneric" ,python2-simplegeneric)
+ ("python2-jsonschema" ,python2-jsonschema)
+ ("python2-traitlets" ,python2-traitlets)
+ ("python2-nbformat" ,python2-nbformat)
+ ("python2-pygments" ,python2-pygments)))
+ (inputs
+ `(("readline" ,readline)
+ ("which" ,which)))
+ (native-inputs
+ `(("graphviz" ,graphviz)
+ ("pkg-config" ,pkg-config)
+ ("python2-requests" ,python2-requests) ;; for tests
+ ("python2-testpath" ,python2-testpath)
+ ("python2-mock" ,python2-mock)
+ ("python2-nose" ,python2-nose)))
+ (arguments
+ `(#:python ,python-2
+ #:phases
+ (modify-phases %standard-phases
+ (add-before 'check 'delete-broken-tests
+ (lambda* (#:key inputs #:allow-other-keys)
+ ;; These tests throw errors for unknown reasons.
+ (delete-file "IPython/core/tests/test_profile.py")
+ (delete-file "IPython/core/tests/test_interactiveshell.py")
+ (delete-file "IPython/core/tests/test_magic.py")
+ #t)))))
+ (home-page "https://ipython.org")
+ (synopsis "IPython is a tool for interactive computing in Python")
+ (description
+ "IPython provides a rich architecture for interactive computing with:
+Powerful interactive shells, a browser-based notebook, support for interactive
+data visualization, embeddable interpreters and tools for parallel
+computing.")
+ (license license:bsd-3)))
+
+(define-public python-ipython
+ (package
+ (name "python-ipython")
+ (version "7.5.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "ipython" version ".tar.gz"))
+ (sha256
+ (base32 "09mbxq37mfn88xjnib7qfzaq9krr7gf1jxwy1p6mcjr254082h78"))))
+ (build-system python-build-system)
+ (propagated-inputs
+ `(("python-backcall" ,python-backcall)
+ ("python-pyzmq" ,python-pyzmq)
+ ("python-prompt-toolkit" ,python-prompt-toolkit)
("python-terminado" ,python-terminado)
("python-matplotlib" ,python-matplotlib)
("python-numpy" ,python-numpy)
("python-numpydoc" ,python-numpydoc)
+ ("python-jedi" ,python-jedi)
("python-jinja2" ,python-jinja2)
("python-mistune" ,python-mistune)
("python-pexpect" ,python-pexpect)
("pkg-config" ,pkg-config)
("python-requests" ,python-requests) ;; for tests
("python-testpath" ,python-testpath)
- ("python-nose" ,python-nose)
- ("python-sphinx" ,python-sphinx)
- ("python-shpinx-rtd-theme" ,python-sphinx-rtd-theme)
- ;; FIXME: It's possible that a smaller union would work just as well.
- ("texlive" ,(texlive-union (list texlive-fonts-amsfonts
- texlive-fonts-ec
- texlive-generic-ifxetex
- texlive-generic-pdftex
- texlive-latex-amsfonts
- texlive-latex-capt-of
- texlive-latex-cmap
- texlive-latex-environ
- texlive-latex-eqparbox
- texlive-latex-etoolbox
- texlive-latex-expdlist
- texlive-latex-fancyhdr
- texlive-latex-fancyvrb
- texlive-latex-fncychap
- texlive-latex-float
- texlive-latex-framed
- texlive-latex-geometry
- texlive-latex-graphics
- texlive-latex-hyperref
- texlive-latex-mdwtools
- texlive-latex-multirow
- texlive-latex-oberdiek
- texlive-latex-parskip
- texlive-latex-preview
- texlive-latex-tabulary
- texlive-latex-threeparttable
- texlive-latex-titlesec
- texlive-latex-trimspaces
- texlive-latex-ucs
- texlive-latex-upquote
- texlive-latex-url
- texlive-latex-varwidth
- texlive-latex-wrapfig)))
- ("texinfo" ,texinfo)))
+ ("python-nose" ,python-nose)))
(arguments
`(#:phases
(modify-phases %standard-phases
- (add-after 'install 'install-doc
- (lambda* (#:key inputs outputs #:allow-other-keys)
- (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
- (doc (string-append data "/doc/" ,name "-" ,version))
- (html (string-append doc "/html"))
- (man1 (string-append data "/man/man1"))
- (info (string-append data "/info"))
- (examples (string-append doc "/examples"))
- (python-arg (string-append "PYTHON=" (which "python"))))
- (setenv "LANG" "en_US.utf8")
- ;; Make installed package available for running the tests
- (add-installed-pythonpath inputs outputs)
- (with-directory-excursion "docs"
- ;; FIXME: pdf fails to build
- ;;(system* "make" "pdf" "PAPER=a4")
- (system* "make" python-arg "html")
- (system* "make" python-arg "info"))
- (copy-recursively "docs/man" man1)
- (copy-recursively "examples" examples)
- (copy-recursively "docs/build/html" html)
- ;; (copy-file "docs/build/latex/ipython.pdf"
- ;; (string-append doc "/ipython.pdf"))
- (mkdir-p info)
- (copy-file "docs/build/texinfo/ipython.info"
- (string-append info "/ipython.info"))
- (copy-file "COPYING.rst" (string-append doc "/COPYING.rst")))
+ (add-after 'unpack 'make-docs-reproducible
+ (lambda _
+ (substitute* "IPython/sphinxext/ipython_directive.py"
+ ((".*import datetime") "")
+ ((".*datetime.datetime.now\\(\\)") "")
+ (("%timeit") "# %timeit"))
#t))
;; Tests can only be run after the library has been installed and not
;; within the source directory.
(substitute* "./IPython/core/tests/test_inputtransformer.py"
(("#!/usr/bin/env python")
(string-append "#!" (which "python"))))
- ;; Disable 1 failing test
- (substitute* "./IPython/core/tests/test_magic.py"
- (("def test_dirops\\(\\):" all)
- (string-append "@dec.skipif(True)\n" all)))
;; This test introduces a circular dependency on ipykernel
;; (which depends on ipython).
(delete-file "IPython/core/tests/test_display.py")
- ;; These tests throw errors for unknown reasons.
- (delete-file "IPython/extensions/tests/test_storemagic.py")
- (delete-file "IPython/core/tests/test_displayhook.py")
+ ;; AttributeError: module 'IPython.core' has no attribute 'formatters'
(delete-file "IPython/core/tests/test_interactiveshell.py")
- (delete-file "IPython/core/tests/test_pylabtools.py")
- (delete-file "IPython/core/tests/test_paths.py")
#t)))))
(home-page "https://ipython.org")
(synopsis "IPython is a tool for interactive computing in Python")
Powerful interactive shells, a browser-based notebook, support for interactive
data visualization, embeddable interpreters and tools for parallel
computing.")
- (license license:bsd-3)
- (properties `((python2-variant . ,(delay python2-ipython))))))
+ (license license:bsd-3)))
-(define-public python2-ipython
- (let ((ipython (package-with-python2 (strip-python2-variant python-ipython))))
- (package
- (inherit ipython)
- ;; FIXME: add pyreadline once available.
- (propagated-inputs
- `(("python2-backports-shutil-get-terminal-size"
- ,python2-backports-shutil-get-terminal-size)
- ("python2-pathlib2" ,python2-pathlib2)
- ,@(package-propagated-inputs ipython)))
- (native-inputs
- `(("python2-mock" ,python2-mock)
- ,@(package-native-inputs ipython))))))
+(define-public python-ipython-documentation
+ (package
+ (inherit python-ipython)
+ (name "python-ipython-documentation")
+ (version (package-version python-ipython))
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (delete 'build)
+ (delete 'check)
+ (replace 'install
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((data (string-append (assoc-ref outputs "out") "/share"))
+ (doc (string-append data "/doc/" ,name "-" ,version))
+ (html (string-append doc "/html"))
+ (man1 (string-append data "/man/man1"))
+ (info (string-append data "/info"))
+ (examples (string-append doc "/examples"))
+ (python-arg (string-append "PYTHON=" (which "python"))))
+ (setenv "LANG" "en_US.utf8")
+ (with-directory-excursion "docs"
+ ;; FIXME: pdf fails to build
+ ;;(system* "make" "pdf" "PAPER=a4")
+ (system* "make" python-arg "html")
+ ;; FIXME: the generated texi file contains ^@^@, which trips
+ ;; up the parser.
+ ;; (system* "make" python-arg "info")
+ )
+ (copy-recursively "docs/man" man1)
+ (copy-recursively "examples" examples)
+ (copy-recursively "docs/build/html" html)
+ ;; (copy-file "docs/build/latex/ipython.pdf"
+ ;; (string-append doc "/ipython.pdf"))
+ (mkdir-p info)
+ ;; (copy-file "docs/build/texinfo/ipython.info"
+ ;; (string-append info "/ipython.info"))
+ (copy-file "COPYING.rst" (string-append doc "/COPYING.rst")))
+ #t)))))
+ (inputs
+ `(("python-ipython" ,python-ipython)
+ ("python-ipykernel" ,python-ipykernel)))
+ (native-inputs
+ `(("python-sphinx" ,python-sphinx)
+ ("python-sphinx-rtd-theme" ,python-sphinx-rtd-theme)
+ ;; FIXME: It's possible that a smaller union would work just as well.
+ ("texlive" ,(texlive-union (list texlive-amsfonts
+ texlive-fonts-ec
+ texlive-generic-ifxetex
+ texlive-generic-pdftex
+ texlive-latex-capt-of
+ texlive-latex-cmap
+ texlive-latex-environ
+ texlive-latex-eqparbox
+ texlive-latex-etoolbox
+ texlive-latex-expdlist
+ texlive-latex-fancyhdr
+ texlive-latex-fancyvrb
+ texlive-latex-fncychap
+ texlive-latex-float
+ texlive-latex-framed
+ texlive-latex-geometry
+ texlive-latex-graphics
+ texlive-latex-hyperref
+ texlive-latex-mdwtools
+ texlive-latex-multirow
+ texlive-latex-needspace
+ texlive-latex-oberdiek
+ texlive-latex-parskip
+ texlive-latex-preview
+ texlive-latex-tabulary
+ texlive-latex-threeparttable
+ texlive-latex-titlesec
+ texlive-latex-trimspaces
+ texlive-latex-ucs
+ texlive-latex-upquote
+ texlive-latex-url
+ texlive-latex-varwidth
+ texlive-latex-wrapfig)))
+ ("texinfo" ,texinfo)))))
(define-public python-urwid
(package
;; "ValueError: unichr() arg not in range(0x10000) (narrow Python build)"
(arguments `(#:tests? #f))))
+(define-public python-notify2
+ (package
+ (name "python-notify2")
+ (version "0.3.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "notify2" version))
+ (sha256
+ (base32
+ "0z8rrv9rsg1r2qgh2dxj3dfj5xnki98kgi3w839kqby4a26i1yik"))))
+ (build-system python-build-system)
+ (arguments `(#:tests? #f)) ; tests depend on system state
+ (native-inputs
+ `(("python-dbus" ,python-dbus)))
+ (home-page "https://bitbucket.org/takluyver/pynotify2")
+ (synopsis "Python interface to D-Bus notifications")
+ (description
+ "Pynotify2 provides a Python interface for sending D-Bus notifications.
+It is a reimplementation of pynotify in pure Python, and an alternative to
+the GObject Introspection bindings to libnotify for non-GTK applications.")
+ (license (list license:bsd-2
+ license:lgpl2.1+))))
+
+(define-public python2-notify2
+ (package-with-python2 python-notify2))
+
(define-public python-lxml
(package
(name "python-lxml")
(define-public python-soupsieve
(package
(name "python-soupsieve")
- (version "1.9.1")
+ (version "1.9.2")
(source
(origin
(method url-fetch)
(uri (pypi-uri "soupsieve" version))
(sha256
(base32
- "1jnzkiwmjl6yvqckc9mf689g87b6yz07sv868hap2aa5arggy3mj"))))
+ "0in9rc9q3h8w5b4qf7kvl3qxcvw6vrz35ckblchgf70hm6pg3dbj"))))
(build-system python-build-system)
(arguments `(#:tests? #f))
;;XXX: 2 tests fail currently despite claming they were to be
(define-public python2-netaddr
(package-with-python2 python-netaddr))
+(define-public python2-pyroute2
+ (package
+ (name "python2-pyroute2")
+ (version "0.5.6")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "pyroute2" version))
+ (sha256
+ (base32
+ "1gmz4r1w0yzj6fjjypnalmfyy0lnfznydyn62gi3wk50j5hhxbny"))))
+ (build-system python-build-system)
+ (arguments
+ `(#:python ,python-2)) ;Python 3.x is not supported
+ (home-page "https://github.com/svinota/pyroute2")
+ (synopsis "Python netlink library")
+ (description
+ "Pyroute2 is a pure Python netlink library with minimal dependencies.
+Supported netlink families and protocols include:
+@itemize
+@item rtnl, network settings - addresses, routes, traffic controls
+@item nfnetlink - netfilter API: ipset, nftables, ...
+@item ipq - simplest userspace packet filtering, iptables QUEUE target
+@item devlink - manage and monitor devlink-enabled hardware
+@item generic - generic netlink families
+ @itemize
+ @item nl80211 - wireless functions API (basic support)
+ @item taskstats - extended process statistics
+ @item acpi_events - ACPI events monitoring
+ @item thermal_events - thermal events monitoring
+ @item VFS_DQUOT - disk quota events monitoring
+ @end itemize
+@end itemize")
+ (license license:gpl2+)))
+
(define-public python-wrapt
(package
(name "python-wrapt")
- (version "1.11.1")
+ (version "1.11.2")
(source
- (origin
- (method url-fetch)
- (uri (pypi-uri "wrapt" version))
- (sha256
- (base32
- "0cqmysny1pz01jw26q48q5zasvns6507rwhgm6wcw743f0r01sja"))))
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "wrapt" version))
+ (sha256
+ (base32
+ "1q81762dgsgrd12f8qc39zk8s5wll3m5xc32jdmlf6cls4gh4njn"))))
(build-system python-build-system)
(arguments
;; Tests are not included in the tarball, they are only available in the
(home-page "https://github.com/GrahamDumpleton/wrapt")
(synopsis "Module for decorators, wrappers and monkey patching")
(description
- "The aim of the wrapt module is to provide a transparent object proxy for
+ "The aim of the wrapt module is to provide a transparent object proxy for
Python, which can be used as the basis for the construction of function
wrappers and decorator functions.")
(license license:bsd-2)))
specification.")
(license license:bsd-4)))
+(define-public python-idna-2.7
+ (package (inherit python-idna)
+ (version "2.7")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "idna" version))
+ (sha256
+ (base32
+ "05jam7d31767dr12x0rbvvs8lxnpb1mhdb2zdlfxgh83z6k3hjk8"))))))
+
+
(define-public python2-idna
(package-with-python2 python-idna))
(define-public python-pip
(package
(name "python-pip")
- (version "18.1")
+ (version "19.2.1")
(source
(origin
(method url-fetch)
(uri (pypi-uri "pip" version))
(sha256
(base32
- "188fclay154s520n43s7cxxlhdaiysvxf19zk8vr1xbyjyyr58n0"))))
+ "100sd12ss4mbdj5lf3wawad29cm573b27765mq098x6xhcj71395"))))
(build-system python-build-system)
(arguments
'(#:tests? #f)) ; there are no tests in the pypi archive.
(package
(name "python-debian")
(home-page "https://salsa.debian.org/python-debian-team/python-debian")
- (version "0.1.28")
+ (version "0.1.36")
(source
(origin
- (method url-fetch)
- (uri (pypi-uri name version))
+ ;; Use git-fetch, as pypi doesn't include test suite.
+ (method git-fetch)
+ (uri (git-reference
+ (url home-page)
+ (commit version)))
+ (file-name (git-file-name name version))
(sha256
(base32
- "0i15f0xzx679sd0ldq2sls9pnnps9fv6vhqvnv9dzf4qhma42i0y"))))
+ "0qy6x28bj6yfikhjww932v5xq4mf5bm1iczl7acy4c7zm6mwhqfa"))))
(build-system python-build-system)
+ (arguments
+ `(#:phases (modify-phases %standard-phases
+ (add-after 'unpack 'remove-debian-specific-tests
+ ;; python-apt, apt and dpkg are not yet available in guix,
+ ;; and these tests heavily depend on them.
+ (lambda _
+ (delete-file "lib/debian/tests/test_deb822.py")
+ (delete-file "lib/debian/tests/test_debfile.py")
+ #t)))))
(propagated-inputs
- `(("python-six" ,python-six)))
+ `(("python-six" ,python-six)
+ ("python-chardet" ,python-chardet)))
(synopsis "Debian package related modules")
(description
;; XXX: Use @enumerate instead of @itemize to work around
(define-public python-jupyter-console
(package
(name "python-jupyter-console")
- (version "5.2.0")
+ (version "6.0.0")
(source
(origin
(method url-fetch)
(uri (pypi-uri "jupyter_console" version))
(sha256
(base32
- "1kam1qzgwr7srhm5r6aj90di5sws4bq0jmiw15452ddamb9yspal"))))
+ "1xdjw11cppf1fxvwkw2bk13ckkwas3bdah8baingn9296mvfi31h"))))
(build-system python-build-system)
- ;; Tests only run in an TTY.
- (arguments `(#:tests? #f))
(propagated-inputs
`(("python-ipykernel" ,python-ipykernel)
("python-jupyter-client" ,python-jupyter-client)
- ("python-prompt-toolkit" ,python-prompt-toolkit-1)
+ ("python-prompt-toolkit" ,python-prompt-toolkit)
("python-pygments" ,python-pygments)))
(native-inputs
`(("python-nose" ,python-nose)))
(license license:bsd-3)))
(define-public python2-jupyter-console
- (package-with-python2 python-jupyter-console))
+ (package
+ (name "python2-jupyter-console")
+ (version "5.2.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "jupyter_console" version))
+ (sha256
+ (base32
+ "1kam1qzgwr7srhm5r6aj90di5sws4bq0jmiw15452ddamb9yspal"))))
+ (build-system python-build-system)
+ ;; Tests only run in an TTY.
+ (arguments `(#:tests? #f))
+ (propagated-inputs
+ `(("python2-ipykernel" ,python2-ipykernel)
+ ("python2-jupyter-client" ,python2-jupyter-client)
+ ("python2-prompt-toolkit" ,python2-prompt-toolkit-1)
+ ("python2-pygments" ,python2-pygments)))
+ (native-inputs
+ `(("python2-nose" ,python2-nose)))
+ (home-page "https://jupyter.org")
+ (synopsis "Jupyter terminal console")
+ (description "This package provides a terminal-based console frontend for
+Jupyter kernels. It also allows for console-based interaction with non-Python
+Jupyter kernels such as IJulia and IRKernel.")
+ (license license:bsd-3)))
;; The python-ipython and python-jupyter-console require each other. To get
;; the functionality in both packages working, strip down the
@code{ArgumentParser} object.")
(license license:asl2.0)))
+(define-public python-contextlib2
+ (package
+ (name "python-contextlib2")
+ (version "0.5.5")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "contextlib2" version))
+ (sha256
+ (base32
+ "0j6ad6lwwyc9kv71skj098v5l7x5biyj2hs4lc5x1kcixqcr97sh"))))
+ (build-system python-build-system)
+ (home-page "http://contextlib2.readthedocs.org/")
+ (synopsis "Tools for decorators and context managers")
+ (description "This module is primarily a backport of the Python
+3.2 contextlib to earlier Python versions. Like contextlib, it
+provides utilities for common tasks involving decorators and context
+managers. It also contains additional features that are not part of
+the standard library.")
+ (license license:psfl)))
+
(define-public python2-contextlib2
(package
(name "python2-contextlib2")
(define-public python-texttable
(package
(name "python-texttable")
- (version "0.8.7")
+ (version "0.9.1")
(source
(origin
(method url-fetch)
(uri (pypi-uri "texttable" version))
(sha256
(base32
- "1liiiydgkg37i46a418aw19fyf6z3ds51wdwwpyjbs12x0phhf4a"))))
+ "0yawv64c0zbawwv6zz84whb32fnb2n9jylwjcfsrcdgh7xvl340i"))))
(build-system python-build-system)
(arguments '(#:tests? #f)) ; no tests
(home-page "https://github.com/foutaise/texttable/")
("python2-pytest" ,python2-pytest)
,@(package-native-inputs promise))))))
+(define-public python-progressbar33
+ (package
+ (name "python-progressbar33")
+ (version "2.4")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "progressbar33" version))
+ (sha256
+ (base32
+ "1zvf6zs5hzrc03p9nfs4p16vhilqikycvv1yk0pxn8s07fdhvzji"))))
+ (build-system python-build-system)
+ (home-page "http://github.com/germangh/python-progressbar")
+ (synopsis "Text progress bar library for Python")
+ (description
+ "This package provides a text progress bar library for Python. This
+version only differs from the original @code{progressbar} package in that it
+uses relative package imports instead of absolute imports, which is necessary
+for the module to work under Python 3.3.")
+ ;; Either or both of these licenses may be selected.
+ (license (list license:lgpl2.1+ license:bsd-3))))
+
(define-public python-colorama
(package
(name "python-colorama")
(define-public python-botocore
(package
- (name "python-botocore")
- (version "1.8.43")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "botocore" version))
- (sha256
- (base32
- "12cqpbnz3vfv41mp9admvciw7bc7hz57sjpqs2bxaw9wnfmbw5lg"))))
- (build-system python-build-system)
- (arguments
- ;; FIXME: Many tests are failing.
- '(#:tests? #f))
- (propagated-inputs
- `(("python-dateutil" ,python-dateutil)
- ("python-docutils" ,python-docutils)
- ("python-jmespath" ,python-jmespath)))
- (native-inputs
- `(("python-mock" ,python-mock)
- ("python-nose" ,python-nose)
- ("behave" ,behave)
- ("python-tox" ,python-tox)
- ("python-wheel" ,python-wheel)))
- (home-page "https://github.com/boto/botocore")
- (synopsis "Low-level interface to AWS")
- (description "Botocore is a Python library that provides a low-level
+ (name "python-botocore")
+ (version "1.12.149")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "botocore" version))
+ (sha256
+ (base32
+ "12597f74khp3ngwr282cb949w0gcqj20rkfc3x275dijavyy5cmf"))))
+ (build-system python-build-system)
+ (arguments
+ ;; FIXME: Many tests are failing.
+ '(#:tests? #f))
+ (propagated-inputs
+ `(("python-dateutil" ,python-dateutil)
+ ("python-docutils" ,python-docutils)
+ ("python-jmespath" ,python-jmespath)))
+ (native-inputs
+ `(("python-mock" ,python-mock)
+ ("python-nose" ,python-nose)
+ ("behave" ,behave)
+ ("python-tox" ,python-tox)
+ ("python-urllib3" ,python-urllib3)
+ ("python-wheel" ,python-wheel)))
+ (home-page "https://github.com/boto/botocore")
+ (synopsis "Low-level interface to AWS")
+ (description "Botocore is a Python library that provides a low-level
interface to the Amazon Web Services (AWS) API.")
- (license license:asl2.0)))
+ (license license:asl2.0)))
(define-public python2-botocore
(package-with-python2 python-botocore))
(define-public python-mako
(package
(name "python-mako")
- (version "1.0.10")
+ (version "1.1.0")
(source
(origin
(method url-fetch)
(uri (pypi-uri "Mako" version))
(sha256
(base32
- "0r9rysn19fmrxnzfcn7sg20kjhcrx9qri0my9n5vdzp1g2g92rbi"))))
+ "0jqa3qfpykyn4fmkn0kh6043sfls7br8i2bsdbccazcvk9cijsd3"))))
(build-system python-build-system)
+ (arguments
+ `(#:phases (modify-phases %standard-phases
+ (replace 'check
+ (lambda _
+ (invoke "pytest" "-vv"))))))
(propagated-inputs
`(("python-markupsafe" ,python-markupsafe)))
(native-inputs
`(("python-mock" ,python-mock)
- ("python-nose" ,python-nose)
("python-pytest" ,python-pytest)))
(home-page "https://www.makotemplates.org/")
(synopsis "Templating language for Python")
(define-public python-twisted
(package
(name "python-twisted")
- (version "19.2.0")
+ (version "19.7.0")
(source (origin
(method url-fetch)
(uri (pypi-uri "Twisted" version ".tar.bz2"))
(sha256
(base32
- "1gmb8d57s13d8znvqnxi47vqzqz141z443dbxg9wjkp8ia9f220p"))))
+ "17d3hnxv9qndagzz63mdpyk99xj63p9gq586vjn0rxk8cl197nym"))))
(build-system python-build-system)
(arguments
- '(#:tests? #f)) ; FIXME: Some tests are failing.
+ '(#:tests? #f)) ; FIXME: some tests fail
(propagated-inputs
`(("python-zope-interface" ,python-zope-interface)
("python-pyhamcrest" ,python-pyhamcrest)
(define-public python-jedi
(package
(name "python-jedi")
- (version "0.13.3")
+ (version "0.15.1")
(source
(origin
(method url-fetch)
(uri (pypi-uri "jedi" version))
(sha256
(base32
- "0nsrjlb57njqppxmi8wjsb1dkad7qa7svx67jbkhixq66lz61c1b"))))
+ "0bp4pxhsynaarbvzblsn5x32lzp29svy3sxfy8i6m5iwz9s9r1ds"))))
(build-system python-build-system)
(arguments
- `( ;; Many tests are failing with Python 3.7.x as of version 0.13.3 (see:
- ;; https://github.com/davidhalter/jedi/issues/1263)
- #:tests? #f
- #:phases
+ `(#:phases
(modify-phases %standard-phases
+ (add-after 'unpack 'disable-file-completion-test
+ ;; A single parameterized test currently fail (see:
+ ;; https://github.com/davidhalter/jedi/issues/1395). Remove it.
+ (lambda _
+ (substitute* "test/test_api/test_completion.py"
+ ((".*'example.py', 'rb\"' \\+ join\\('\\.\\.'.*") ""))
+ #t))
(replace 'check
- (lambda* (#:key tests? #:allow-other-keys)
- (when tests?
- (invoke "py.test" "-vv")))))))
+ (lambda _
+ (setenv "HOME" "/tmp")
+ (invoke "python" "-m" "pytest"))))))
(native-inputs
`(("python-pytest" ,python-pytest)
("python-docopt" ,python-docopt)))
(license license:expat)))
(define-public python2-jedi
- (let ((base (package-with-python2 (strip-python2-variant python-jedi))))
- (package
- (inherit base)
- (arguments (substitute-keyword-arguments (package-arguments base)
- ((#:tests? _) #t))))))
+ (package-with-python2 python-jedi))
(define-public ptpython
(package
(define-public python-stem
(package
(name "python-stem")
- (version "1.7.0")
+ (version "1.7.1")
(source
(origin
(method url-fetch)
(uri (pypi-uri "stem" version))
(sha256
(base32
- "1awiglfiajnx2hva9aqpj3fmdvdb4qg7cwnlfyih827m68y3cq8v"))))
+ "18lc95pmc7i089nlsb06dsxyjl5wbhxfqgdxbjcia35ndh8z7sn9"))))
(build-system python-build-system)
(arguments
`(#:phases
(define-public python-glances
(package
(name "python-glances")
- (version "3.0.2")
+ (version "3.1.1")
(source
(origin
(method url-fetch)
(uri (pypi-uri "Glances" version))
(sha256
(base32
- "09fxysfp1n16csqvzvawy74qm6a94nvwjf3vcf5gkqp4i6k4vjjy"))))
+ "07j1ggzsqiskyz1i4mrnyr9i95v0dqi0i0hibnv1l188km8shmi8"))
+ (modules '((guix build utils)))
+ (snippet
+ '(begin
+ ;; Glances phones PyPI for weekly update checks by default.
+ ;; Disable these. The user can re-enable them if desired.
+ (substitute* "glances/outdated.py"
+ (("^(.*)self\\.load_config\\(config\\)\n" line indentation)
+ (string-append indentation
+ "self.args.disable_check_update = True\n"
+ line)))
+ #t))))
(build-system python-build-system)
(propagated-inputs
- `(("python-psutil" ,python-psutil)))
+ `(("python-future" ,python-future)
+ ("python-psutil" ,python-psutil)))
(home-page
"https://github.com/nicolargo/glances")
- (synopsis
- "A cross-platform curses-based monitoring tool")
+ (synopsis "Cross-platform curses-based monitoring tool")
(description
"Glances is a curses-based monitoring tool for a wide variety of platforms.
-Glances uses the PsUtil library to get information from your system. It monitors
-CPU, load, memory, network bandwidth, disk I/O, disk use, and more.")
+Glances uses the PsUtil library to get information from your system. It
+monitors CPU, load, memory, network bandwidth, disk I/O, disk use, and more.")
(license license:lgpl3+)))
(define-public python2-glances
(define-public python-swagger-spec-validator
(package
(name "python-swagger-spec-validator")
- (version "2.1.0")
+ (version "2.4.3")
(source
(origin
(method url-fetch)
(uri (pypi-uri "swagger-spec-validator" version))
(sha256
(base32
- "13hkpn2lycwr0468yqhjb3kwszqf7hjwlq61w7vdxq1caz31k4nw"))))
+ "11g627icrsqwazsncwi0sdvprcj6hwaayw5xk3xsj8d97bmrzqjp"))))
(build-system python-build-system)
(propagated-inputs
`(("python-jsonschema" ,python-jsonschema)
+ ("python-pyyaml" ,python-pyyaml)
("python-six" ,python-six)))
(home-page
"https://github.com/Yelp/swagger_spec_validator")
(define-public python2-setuptools-scm-git-archive
(package-with-python2 python-setuptools-scm-git-archive))
+(define-public python-setuptools-git
+ (package
+ (name "python-setuptools-git")
+ (version "1.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "setuptools-git" version))
+ (sha256
+ (base32
+ "0i84qjwp5m0l9qagdjww2frdh63r37km1c48mrvbmaqsl1ni6r7z"))))
+ (build-system python-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ ;; This is needed for tests.
+ (add-after 'unpack 'configure-git
+ (lambda _
+ (setenv "HOME" "/tmp")
+ (invoke "git" "config" "--global" "user.email" "guix")
+ (invoke "git" "config" "--global" "user.name" "guix")
+ #t)))))
+ (native-inputs
+ `(("git" ,git-minimal)))
+ (home-page "https://github.com/msabramo/setuptools-git")
+ (synopsis "Setuptools revision control system plugin for Git")
+ (description
+ "This package provides a plugin for Setuptools for revision control with
+Git.")
+ (license license:bsd-3)))
+
(define-public python-pyclipper
(package
(name "python-pyclipper")
@code{f} strings.")
(license license:expat)))
+(define-public python-typed-ast
+ (package
+ (name "python-typed-ast")
+ (version "1.3.5")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "typed-ast" version))
+ (sha256
+ (base32
+ "1m7pr6qpana3cvqwiw7mlvrgvmw27ch5mx1592572xhlki8g85ak"))))
+ (build-system python-build-system)
+ (arguments
+ `(#:modules ((guix build utils)
+ (guix build python-build-system)
+ (ice-9 ftw)
+ (srfi srfi-1)
+ (srfi srfi-26))
+ #:phases
+ (modify-phases %standard-phases
+ (replace 'check
+ (lambda _
+ (let ((cwd (getcwd)))
+ (setenv "PYTHONPATH"
+ (string-append cwd "/build/"
+ (find (cut string-prefix? "lib" <>)
+ (scandir (string-append cwd "/build")))
+ ":"
+ (getenv "PYTHONPATH"))))
+ (invoke "pytest")
+ #t)))))
+ (native-inputs `(("python-pytest" ,python-pytest)))
+ (home-page "https://github.com/python/typed_ast")
+ (synopsis "Fork of Python @code{ast} modules with type comment support")
+ (description "This package provides a parser similar to the standard
+@code{ast} library. Unlike @code{ast}, the parsers in @code{typed_ast}
+include PEP 484 type comments and are independent of the version of Python
+under which they are run. The @code{typed_ast} parsers produce the standard
+Python AST (plus type comments), and are both fast and correct, as they are
+based on the CPython 2.7 and 3.7 parsers.")
+ ;; See the file "LICENSE" for the details.
+ (license (list license:psfl
+ license:asl2.0
+ license:expat)))) ;ast27/Parser/spark.py
+
(define-public python-typing
(package
(name "python-typing")
(define-public python-pybtex
(package
(name "python-pybtex")
- (version "0.21")
+ (version "0.22.2")
(source
(origin
(method url-fetch)
(uri (pypi-uri "pybtex" version))
(sha256
- (base32
- "00300j8dn5pxq4ndxmfmbmycg2znawkqs49val2x6jlmfiy6r2mg"))))
+ (base32 "070wfcmxrd7xg1si421mi9150gmx2qwx431nwf69sq3hhmgnx080"))))
(build-system python-build-system)
(native-inputs
`(("python-nose" ,python-nose)))
(define-public python-parso
(package
(name "python-parso")
- (version "0.3.1")
+ (version "0.5.1")
(source
(origin
(method url-fetch)
(uri (pypi-uri "parso" version))
(sha256
(base32
- "18p89iwcm8mnf380f92g9w0bhx5km8wxp392vvjcq4y1ld1llw1m"))))
+ "171a9ivhxwsd52h1cgsz40zgzpgzscn7yqb7sdjhy8m1lzj0wsv6"))))
(native-inputs
`(("python-pytest" ,python-pytest)))
(build-system python-build-system)
+ (arguments
+ `(#:phases (modify-phases %standard-phases
+ (replace 'check
+ (lambda _ (invoke "pytest" "-vv"))))))
(home-page "https://github.com/davidhalter/parso")
(synopsis "Python Parser")
(description "Parso is a Python parser that supports error recovery and
(define-public python-dask
(package
(name "python-dask")
- (version "1.2.0")
+ (version "1.2.2")
(source
(origin
(method url-fetch)
(uri (pypi-uri "dask" version))
(sha256
- (base32
- "1y0dqcp72ixwblgway0jpvfirlxfcmwrjiivdq96firj1hw127sd"))))
+ (base32 "0b29gvf96gmp20wicly3v3mhyc93zbm3mdv935fka6x0wax7cy2y"))))
(build-system python-build-system)
;; A single test out of 5000+ fails. This test is marked as xfail when
;; pytest-xdist is used.
(define-public python-astunparse
(package
(name "python-astunparse")
- (version "1.6.1")
+ (version "1.6.2")
(source
(origin
(method url-fetch)
(uri (pypi-uri "astunparse" version))
(sha256
- (base32
- "1jhidwyrqn17avqh9xnnm3wd7q7aahaq009cba67g86y6gxicyyj"))))
+ (base32 "0rzbc44xcvzjhhiy7wac96mgal5mcjz1mfq8rmvgswskf4kf9cys"))))
(build-system python-build-system)
- (arguments '(#:tests? #f)) ; there are none
+ (arguments '(#:tests? #f)) ; there are none
(propagated-inputs
`(("python-six" ,python-six)
("python-wheel" ,python-wheel)))
(define-public python2-pylzma
(package-with-python2 python-pylzma))
+
+(define-public python2-zeroconf
+ (package
+ (name "python2-zeroconf")
+
+ ;; This is the last version that supports Python 2.x.
+ (version "0.19.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "zeroconf" version))
+ (sha256
+ (base32
+ "0ykzg730n915qbrq9bn5pn06bv6rb5zawal4sqjyfnjjm66snkj3"))))
+ (build-system python-build-system)
+ (arguments
+ `(#:python ,python-2
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'patch-requires
+ (lambda* (#:key inputs #:allow-other-keys)
+ (substitute* "setup.py"
+ (("enum-compat")
+ "enum34"))
+ #t)))))
+ (native-inputs
+ `(("python2-six" ,python2-six)
+ ("python2-enum32" ,python2-enum34)
+ ("python2-netifaces" ,python2-netifaces)
+ ("python2-typing" ,python2-typing)))
+ (home-page "https://github.com/jstasiak/python-zeroconf")
+ (synopsis "Pure Python mDNS service discovery")
+ (description
+ "Pure Python multicast DNS (mDNS) service discovery library (Bonjour/Avahi
+compatible).")
+ (license license:lgpl2.1+)))
+
+(define-public python-bsddb3
+ (package
+ (name "python-bsddb3")
+ (version "6.2.6")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "bsddb3" version))
+ (sha256
+ (base32
+ "019db2y6bfmiqbrgg9x9f6h72qjmqh05czdn2v5sy9bl0gs23mj2"))))
+ (build-system python-build-system)
+ (inputs
+ `(("bdb" ,bdb)))
+ (arguments
+ '(#:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'configure-locations
+ (lambda* (#:key inputs #:allow-other-keys)
+ (setenv "BERKELEYDB_DIR" (assoc-ref inputs "bdb"))
+ (setenv "YES_I_HAVE_THE_RIGHT_TO_USE_THIS_BERKELEY_DB_VERSION" "1")
+ #t))
+ (replace 'check
+ (lambda _
+ (invoke "python3" "test3.py" "-v"))))))
+ (home-page "https://www.jcea.es/programacion/pybsddb.htm")
+ (synopsis "Python bindings for Oracle Berkeley DB")
+ (description
+ "This module provides a nearly complete wrapping of the Oracle/Sleepycat
+C API for the Database Environment, Database, Cursor, Log Cursor, Sequence and
+Transaction objects, and each of these is exposed as a Python type in the
+bsddb3.db module. The database objects can use various access methods: btree,
+hash, recno, and queue. Complete support of Berkeley DB distributed
+transactions. Complete support for Berkeley DB Replication Manager.
+Complete support for Berkeley DB Base Replication. Support for RPC.")
+ (license license:bsd-3)))
+
+(define-public python-dbfread
+ (package
+ (name "python-dbfread")
+ (version "2.0.7")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "dbfread" version))
+ (sha256
+ (base32
+ "0gdpwdzf1fngsi6jrdyj4qdf6cr7gnnr3zp80dpkzbgz0spskj07"))))
+ (build-system python-build-system)
+ (native-inputs
+ `(("python-pytest" ,python-pytest)))
+ (home-page "https://dbfread.readthedocs.io")
+ (synopsis "Read DBF Files with Python")
+ (description
+ "This library reads DBF files and returns the data as native Python data
+types for further processing. It is primarily intended for batch jobs and
+one-off scripts.")
+ (license license:expat)))
+
+(define-public python-cached-property
+ (package
+ (name "python-cached-property")
+ (version "1.5.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "cached-property" version))
+ (sha256
+ (base32
+ "010m1bl380l2r3vwq24r5v14l6gwvgm9v0mqqjkjss552jgsa5wj"))))
+ (build-system python-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ ;; https://github.com/pydanny/cached-property/issues/131
+ ;; recent versions of freezegun break one test
+ (add-after 'unpack 'disable-broken-test
+ (lambda _
+ (substitute* "tests/test_cached_property.py"
+ (("def test_threads_ttl_expiry\\(self\\)" m)
+ (string-append "@unittest.skip(\"Disabled by Guix\")\n"
+ " " m)))
+ #t)))))
+ (native-inputs
+ `(("python-freezegun" ,python-freezegun)))
+ (home-page
+ "https://github.com/pydanny/cached-property")
+ (synopsis
+ "Decorator for caching properties in classes")
+ (description
+ "This package provides a decorator which makes caching
+time-or-computationally-expensive properties quick and easy and works in Python
+2 or 3.")
+ (license license:bsd-3)))
+
+(define-public python-folium
+ (package
+ (name "python-folium")
+ (version "0.10.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "folium" version))
+ (sha256
+ (base32
+ "18fzxijsgrb95r0a8anc9ba5ijyw3nlnv3rpavfbkqa5v878x84f"))))
+ (build-system python-build-system)
+ (propagated-inputs
+ `(("python-branca" ,python-branca)
+ ("python-jinja2" ,python-jinja2)
+ ("python-numpy" ,python-numpy)
+ ("python-requests" ,python-requests)))
+ (native-inputs
+ `(("python-pytest" ,python-pytest)))
+ (home-page "https://github.com/python-visualization/folium")
+ (synopsis "Make beautiful maps with Leaflet.js & Python")
+ (description "@code{folium} makes it easy to visualize data that’s been
+manipulated in Python on an interactive leaflet map. It enables both the
+binding of data to a map for @code{choropleth} visualizations as well as
+passing rich vector/raster/HTML visualizations as markers on the map.
+
+The library has a number of built-in tilesets from OpenStreetMap, Mapbox, and
+Stamen, and supports custom tilesets with Mapbox or Cloudmade API keys. It
+supports Image, Video, GeoJSON and TopoJSON overlays.")
+ (license license:expat)))
+
+(define-public jube
+ (package
+ ;; This is a command-line tool, so no "python-" prefix.
+ (name "jube")
+ (version "2.2.2")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "http://apps.fz-juelich.de/jsc/jube/jube2/download.php?version="
+ version))
+ (sha256
+ (base32
+ "0xq4k1q63s1p6swgyp61vahlrd1fqmgbm0gm5kpj8ikwy0yc0nqk"))
+ (file-name (string-append "jube-" version ".tar.gz"))))
+ (build-system python-build-system)
+ (home-page "https://apps.fz-juelich.de/jsc/jube/jube2/docu/index.html")
+ (synopsis "Benchmarking environment")
+ (description
+ "JUBE helps perform and analyze benchmarks in a systematic way. For each
+benchmarked application, benchmark data is stored in a format that allows JUBE
+to deduct the desired information. This data can be parsed by automatic pre-
+and post-processing scripts that draw information and store it more densely
+for manual interpretation.")
+ (license license:gpl3+)))
+
+(define-public python-pyroutelib3
+ (package
+ (name "python-pyroutelib3")
+ (version "1.3.post1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "pyroutelib3" version))
+ (sha256
+ (base32
+ "1hpbydpn2alyswiajfbvhzq4c7f36vdmvxy91hgv8l1lb2g2vfrj"))))
+ (build-system python-build-system)
+ (propagated-inputs
+ `(("python-dateutil" ,python-dateutil)))
+ (home-page "https://github.com/MKuranowski/pyroutelib3")
+ (synopsis "Library for simple routing on OSM data")
+ (description "Library for simple routing on OSM data")
+ (license license:gpl3+)))
+
+(define-public python-elementpath
+ (package
+ (name "python-elementpath")
+ (version "1.2.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "elementpath" version))
+ (sha256
+ (base32
+ "1syn2z543brab23dskh3fjd9pqvz6npqbcicrs2d88dbg26xl08p"))))
+ (build-system python-build-system)
+ (home-page
+ "https://github.com/sissaschool/elementpath")
+ (synopsis
+ "XPath 1.0/2.0 parsers and selectors for ElementTree and lxml")
+ (description
+ "The proposal of this package is to provide XPath 1.0 and 2.0 selectors
+for Python's ElementTree XML data structures, both for the standard
+ElementTree library and for the @uref{http://lxml.de, lxml.etree} library.
+
+For lxml.etree this package can be useful for providing XPath 2.0 selectors,
+because lxml.etree already has it's own implementation of XPath 1.0.")
+ (license license:expat)))