diff options
author | Marius Bakke <mbakke@fastmail.com> | 2019-10-08 19:24:34 +0200 |
---|---|---|
committer | Marius Bakke <mbakke@fastmail.com> | 2019-10-08 19:24:34 +0200 |
commit | d1f3b333e6176a7879ab3742bbebb2a99f61a528 (patch) | |
tree | 8bd82ce68bd2534a48bf13c7256997f82dd1b3f4 /gnu/packages/python-xyz.scm | |
parent | e01d384efcdaf564bbb221e43b81e087c8e2af06 (diff) | |
parent | 861907f01efb1cae7f260e8cb7b991d5034a486a (diff) | |
download | patches-d1f3b333e6176a7879ab3742bbebb2a99f61a528.tar patches-d1f3b333e6176a7879ab3742bbebb2a99f61a528.tar.gz |
Merge branch 'master' into staging
Diffstat (limited to 'gnu/packages/python-xyz.scm')
-rw-r--r-- | gnu/packages/python-xyz.scm | 894 |
1 files changed, 654 insertions, 240 deletions
diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm index 459d5d44e1..b0f5ec7588 100644 --- a/gnu/packages/python-xyz.scm +++ b/gnu/packages/python-xyz.scm @@ -19,7 +19,7 @@ ;;; Copyright © 2015, 2016 Chris Marusich <cmmarusich@gmail.com> ;;; Copyright © 2016 Danny Milosavljevic <dannym+a@scratchpost.org> ;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox.org> -;;; Copyright © 2016, 2018 Hartmut Goebel <h.goebel@crazy-compilers.com> +;;; Copyright © 2016, 2018-2019 Hartmut Goebel <h.goebel@crazy-compilers.com> ;;; Copyright © 2016 Daniel Pimentel <d4n1@d4n1.org> ;;; Copyright © 2016 Sou Bunnbu <iyzsong@gmail.com> ;;; Copyright © 2016, 2017 Troy Sankey <sankeytms@gmail.com> @@ -64,6 +64,8 @@ ;;; 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> +;;; Copyright © 2019 Wiktor Żelazny <wzelazny@vurv.cz> ;;; ;;; This file is part of GNU Guix. ;;; @@ -334,7 +336,14 @@ by @code{binstar}, @code{binstar-build} and @code{chalmers}.") (arguments `(#:phases (modify-phases %standard-phases (replace 'check - (lambda _ (invoke "pytest" "-vv")))))) + (lambda _ + (invoke "pytest" "-vv" "-k" + (string-append + ;; XXX: These tests fail when using Pytest 4.x and + ;; Babel 2.6.0. Try removing this for later versions. + "not test_no_inherit_metazone_marker_never_in_output" + " and not test_smoke_dates" + " and not test_smoke_numbers"))))))) (home-page "http://babel.pocoo.org/") (synopsis "Tools for internationalizing Python applications") @@ -385,6 +394,32 @@ certificate returned by the server to which a connection has been established, and verifies that it matches the intended target hostname.") (license license:psfl))) +(define-public python-boolean.py + (package + (name "python-boolean.py") + (version "3.6") + (source + (origin + ;; There's no source tarball on PyPI. + (method git-fetch) + (uri (git-reference + (url "https://github.com/bastikr/boolean.py") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1wc89y73va58cj7dsx6c199zpxsy9q53dsffsdj6zmc90inqz6qs")))) + (build-system python-build-system) + (home-page "https://github.com/bastikr/boolean.py") + (synopsis "Boolean algebra in one Python module") + (description + "This is a small Python library that implements boolean algebra. +It defines two base elements, @code{TRUE} and @code{FALSE}, and a +@code{Symbol} class that can take on one of these two values. Calculations +are done only in terms of @code{AND}, @code{OR}, and @code{NOT}---other +compositions like @code{XOR} and @code{NAND} are emulated on top of them. +Expressions are constructed from parsed strings or directly in Python.") + (license license:bsd-2))) + (define-public python-hdf4 (package (name "python-hdf4") @@ -581,6 +616,29 @@ to users of that module.") (define-public python2-netcdf4 (package-with-python2 python-netcdf4)) +(define-public python-license-expression + (package + (name "python-license-expression") + (version "0.999") + (source + (origin + (method url-fetch) + (uri (pypi-uri "license-expression" version)) + (sha256 + (base32 "08ppb0bxbrsxazy88sgpl9yffvdsabw6dkk1nc332wcz2mphwwyf")))) + (build-system python-build-system) + (propagated-inputs + `(("python-boolean.py" ,python-boolean.py))) + (home-page "https://github.com/nexB/license-expression") + (synopsis "Apply boolean logic to license expressions") + (description + "This Python module defines a tiny language to evaluate and compare +license expressions using boolean logic. Logical combinations of licenses can +be tested for equality, containment, and equivalence. They can be normalised +and simplified. It supports SPDX license expressions as well as other naming +conventions and aliases in the same expression.") + (license license:gpl2+))) + (define-public python-lockfile (package (name "python-lockfile") @@ -706,6 +764,19 @@ Python 3 support.") (define-public python2-setuptools (package-with-python2 python-setuptools)) +;; The setuptools provided by Python 3.7.4 is too new for Tensorflow. +(define-public python-setuptools-for-tensorflow + (hidden-package + (package + (inherit python-setuptools) + (version "39.1.0") + (source (origin + (inherit (package-source python-setuptools)) + (uri (pypi-uri "setuptools" version ".zip")) + (sha256 + (base32 + "1mzdhvfhnv4lggxa8rjl0dzqxvfx377gg5sqs57v89wrp09lwj65"))))))) + (define-public python-uniseg (package (name "python-uniseg") @@ -881,6 +952,27 @@ messages in color.") (define-public python2-coloredlogs (package-with-python2 python-coloredlogs)) +(define-public python-editorconfig + (package + (name "python-editorconfig") + (version "0.12.2") + (source + (origin + (method url-fetch) + (uri (pypi-uri "EditorConfig" version)) + (sha256 + (base32 + "0v55z351p9qkyp3bbspwywwn28sbcknhirngjbj779n3z52z63hv")))) + (build-system python-build-system) + (home-page "https://editorconfig.org/") + (synopsis "EditorConfig bindings for python") + (description "The EditorConfig project consists of a file format for +defining coding styles and a collection of text editor plugins that enable +editors to read the file format and adhere to defined styles. EditorConfig +files are easily readable and they work nicely with version control systems.") + ;; "fnmatch.py" and "ini.py" are licensed under psfl, the rest is bsd-2. + (license (list license:bsd-2 license:psfl)))) + (define-public python-et-xmlfile (package (name "python-et-xmlfile") @@ -987,14 +1079,14 @@ from the Python interpreter, or as a small part of a larger application.") (define-public python-six (package (name "python-six") - (version "1.11.0") + (version "1.12.0") (source (origin (method url-fetch) (uri (pypi-uri "six" version)) (sha256 (base32 - "1scqzwc51c875z23phj48gircqjgnn3af8zy2izjwmnlxrxsgs3h")))) + "0wxs1q74v07ssjywbbm7x6h5v9qx209ld2yfsif4060sxi0h2sni")))) (build-system python-build-system) (arguments `(#:phases @@ -1200,14 +1292,14 @@ Python 3.3+.") (define-public python-pyicu (package (name "python-pyicu") - (version "2.2") + (version "2.3.1") (source (origin (method url-fetch) (uri (pypi-uri "PyICU" version)) (sha256 (base32 - "0wq9y5fi1ighgf5aws9nr87vi1w44p7q1k83rx2y3qj5d2xyhspa")))) + "1x4w8m7ifki9z2a187pgjr33z6z0rp2fii9b73djak1vhm9v9cnx")))) (build-system python-build-system) (inputs `(("icu4c" ,icu4c))) @@ -1656,14 +1748,14 @@ server.") (define-public python-py (package (name "python-py") - (version "1.5.4") + (version "1.8.0") (source (origin (method url-fetch) (uri (pypi-uri "py" version)) (sha256 (base32 - "1xxvwfn82457djf55f5n2c94699rfqnk43br8fif2r2q8gvrmm9z")))) + "0lsy1gajva083pzc7csj1cvbmminb7b4l6a0prdzyb3fd829nqyw")))) (build-system python-build-system) (arguments ;; FIXME: "ImportError: 'test' module incorrectly imported from @@ -2200,13 +2292,13 @@ JavaScript-like message boxes. Types of dialog boxes include: (package (name "python-pympler") (home-page "https://pythonhosted.org/Pympler/") - (version "0.5") + (version "0.7") (source (origin (method url-fetch) (uri (pypi-uri "Pympler" version)) (sha256 (base32 - "03qwsbilqgvnbl3a1jmpgixbr2kq6m3fvdlzyr3wdp01bwlc85kx")))) + "0ki7bqp1h9l1xc2k1h4vjyzsgs20i8ingvcdhszyi72s28wyf4bs")))) (build-system python-build-system) (arguments `(#:phases (modify-phases %standard-phases @@ -2983,38 +3075,44 @@ Language (TOML) configuration files.") 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 @@ -3245,11 +3343,39 @@ writing C extensions for Python as easy as Python itself.") (properties `((python2-variant . ,(delay python2-cython)))))) (define-public python2-cython - (package (inherit (package-with-python2 - (strip-python2-variant python-cython))) - (name "python2-cython") - (inputs - `(("python-2" ,python-2))))) ; this is not automatically changed + (let ((base (package-with-python2 (strip-python2-variant python-cython)))) + (package + (inherit base) + (name "python2-cython") + (inputs + `(("python-2" ,python-2))) ;this is not automatically changed + (arguments + (substitute-keyword-arguments (package-arguments base) + ((#:phases phases) + `(modify-phases ,phases + (add-before 'check 'adjust-test_embed + (lambda _ + (substitute* "runtests.py" + ;; test_embed goes great lengths to find the static libpythonX.Y.a + ;; so it can give the right -L flag to GCC when embedding static + ;; builds of Python. It is unaware that the Python "config" + ;; directory (where the static library lives) was renamed in + ;; Python 3, and falls back to sysconfig.get_config_var('LIBDIR'), + ;; which works fine, because that is where the shared library is. + ;; + ;; It also appears to be unaware that the Makefile in Demos/embed + ;; already unconditionally pass the static library location to GCC, + ;; after checking sysconfig.get_config_var('LIBPL). + ;; + ;; The effect is that the linker is unable to resolve libexpat + ;; symbols when building for Python 2, because neither the Python 2 + ;; shared library nor Expat is available. To fix it, we can either + ;; add Expat as an input and make it visible to the linker, or just + ;; prevent it from overriding the Python shared library location. + ;; The end result is identical, so we take the easy route. + ((" or libname not in os\\.listdir\\(libdir\\)") + "")) + #t))))))))) ;; The RPython toolchain currently does not support Python 3. (define-public python2-rpython @@ -3799,14 +3925,14 @@ convert between colorspaces like sRGB, XYZ, CIEL*a*b*, CIECAM02, CAM02-UCS, etc. (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) @@ -3823,7 +3949,7 @@ convert between colorspaces like sRGB, XYZ, CIEL*a*b*, CIECAM02, CAM02-UCS, etc. ;; 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) ("python-cairocffi" ,python-cairocffi))) (inputs @@ -3838,11 +3964,59 @@ convert between colorspaces like sRGB, XYZ, CIEL*a*b*, CIECAM02, CAM02-UCS, etc. ("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"))) @@ -3854,12 +4028,12 @@ convert between colorspaces like sRGB, XYZ, CIEL*a*b*, CIECAM02, CAM02-UCS, etc. (lambda (port) (format port "[directories]~% basedirlist = ~a,~a~% - [rc_options]~% -backend = TkAgg~%" +[packages]~% +tests = True~%" (assoc-ref inputs "tcl") (assoc-ref inputs "tk"))))) #t))))) - (home-page "http://matplotlib.org") + (home-page "https://matplotlib.org/") (synopsis "2D plotting library for Python") (description "Matplotlib is a Python 2D plotting library which produces publication @@ -3874,6 +4048,29 @@ toolkits.") (let ((matplotlib (package-with-python2 (strip-python2-variant python-matplotlib)))) (package (inherit matplotlib) + (version "2.2.4") + (source + (origin + (method url-fetch) + (uri (pypi-uri "matplotlib" version)) + (sha256 + (base32 + "09i1gnrra1590brc1f8d5rh2zvnknmfgzp613ab0462qkrwj15h2")))) + (arguments + (substitute-keyword-arguments (package-arguments matplotlib) + ((#:phases phases) + `(modify-phases ,phases + (replace 'install-jquery-ui + (lambda* (#:key outputs inputs #:allow-other-keys) + (let ((dir (string-append (assoc-ref outputs "out") + "/lib/python2.7/site-packages/" + "matplotlib/backends/web_backend/"))) + (mkdir-p dir) + (invoke "unzip" + (assoc-ref inputs "jquery-ui") + "-d" dir)) + #t)) + (delete 'check))))) ; These tests weren't run the the past. ;; Make sure to use special packages for Python 2 instead ;; of those automatically rewritten by package-with-python2. (propagated-inputs @@ -3897,6 +4094,7 @@ toolkits.") `(("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) @@ -3923,6 +4121,9 @@ toolkits.") `(#: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") @@ -3971,7 +4172,12 @@ toolkits.") (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 @@ -4032,14 +4238,14 @@ operators such as union, intersection, and difference.") (define-public python-scipy (package (name "python-scipy") - (version "1.2.2") + (version "1.3.1") (source (origin (method url-fetch) (uri (pypi-uri "scipy" version)) (sha256 (base32 - "1cgvgin8fvckv96hjh3ikmwkra5rif51bdb75ifzf7xbil5iwcx4")))) + "1df113c9i6vazsn6y3n9wc22jh737z1g7dmx3mypkdwpdnscyhr6")))) (build-system python-build-system) (propagated-inputs `(("python-numpy" ,python-numpy) @@ -4135,9 +4341,19 @@ routines such as routines for numerical integration and optimization.") (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 @@ -4170,14 +4386,14 @@ as the original project seems to have been abandoned circa 2007.") (define-public python-pycodestyle (package (name "python-pycodestyle") - (version "2.4.0") + (version "2.5.0") (source - (origin - (method url-fetch) - (uri (pypi-uri "pycodestyle" version)) - (sha256 - (base32 - "0fhy4vnlgpjq4qd1wdnl6pvdw7rah0ypmn8c9mkhz8clsndskz6b")))) + (origin + (method url-fetch) + (uri (pypi-uri "pycodestyle" version)) + (sha256 + (base32 + "0v4prb05n21bm8650v0a01k1nyqjdmkrsm3zycfxh2j5k9n962p4")))) (build-system python-build-system) (home-page "https://pycodestyle.readthedocs.io/") (synopsis "Python style guide checker") @@ -4356,14 +4572,14 @@ the OleFileIO module from PIL, the Python Image Library.") (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))) @@ -4839,13 +5055,13 @@ child application and control it as if a human were typing commands.") (define-public python-setuptools-scm (package (name "python-setuptools-scm") - (version "3.1.0") + (version "3.2.0") (source (origin (method url-fetch) (uri (pypi-uri "setuptools_scm" version)) (sha256 (base32 - "0h4bglwfz8b9prqljv8z3w9rgydfyxzaj05bm1y6zs5m6shz548i")))) + "0n3knn3p1sqlx31k2lahn7z9bacvlv8nhlfidj77vz50bxqlgasj")))) (build-system python-build-system) (home-page "https://github.com/pypa/setuptools_scm/") (synopsis "Manage Python package versions in SCM metadata") @@ -4884,14 +5100,13 @@ older Python versions.") (define-public python-importlib-metadata (package (name "python-importlib-metadata") - (version "0.18") + (version "0.23") (source (origin (method url-fetch) (uri (pypi-uri "importlib_metadata" version)) (sha256 - (base32 - "1nqj6vj2z4byi8flzf2lbldhqgicsz9mkpv4k69kjd8p8qxy4vnb")))) + (base32 "09mdqdfv5rdrwz80jh9m379gxmvk2vhjfz0fg53hid00icvxf65a")))) (build-system python-build-system) (propagated-inputs `(("python-configparser" ,python-configparser) @@ -4955,7 +5170,8 @@ releases.") (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) @@ -5054,14 +5270,14 @@ away.") (define-public python-traitlets (package (name "python-traitlets") - (version "4.3.2") + (version "4.3.3") (source (origin (method url-fetch) (uri (pypi-uri "traitlets" version)) (sha256 (base32 - "0dbq7sx26xqz5ixs711k5nc88p8a0nqyz6162pwks5dpcz9d4jww")))) + "1xsrwgivpkxlbr4dfndfsi098s29yqgswgjc1qqn69yxklvfw8yh")))) (build-system python-build-system) (arguments `(#:phases @@ -5069,7 +5285,7 @@ away.") (replace 'check (lambda _ (invoke "pytest" "-vv" "traitlets")))))) (propagated-inputs `(("python-ipython-genutils" ,python-ipython-genutils) - ("python-decorator" ,python-decorator))) ;not needed for >4.3.2 + ("python-decorator" ,python-decorator))) (native-inputs `(("python-pytest" ,python-pytest))) (properties `((python2-variant . ,(delay python2-traitlets)))) @@ -5388,6 +5604,13 @@ computing.") (arguments `(#:phases (modify-phases %standard-phases + (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. (delete 'check) @@ -5839,23 +6062,15 @@ of the structure, dynamics, and functions of complex networks.") (define-public python-datrie (package (name "python-datrie") - (version "0.7.1") + (version "0.8") (source (origin (method url-fetch) (uri (pypi-uri "datrie" version)) (sha256 (base32 - "08r0if7dry2q7p34gf7ffyrlnf4bdvnprxgydlfxgfnvq8f3f4bs")))) + "0338r8xgmpy78556jhms0h6qkvyjr10p8bpgdvcpqzm9lrmxmmdx")))) (build-system python-build-system) - (arguments - `(#:phases (modify-phases %standard-phases - (add-before 'build 'cythonize - (lambda _ - ;; Regenerate Cython classes to solve ABI issues with Python - ;; 3.7.0. See <https://github.com/pytries/datrie/issues/52>. - (invoke "cython" "src/datrie.pyx" "src/cdatrie.pxd" - "src/stdio_ext.pxd" "-a")))))) (native-inputs `(("python-cython" ,python-cython) ("python-hypothesis" ,python-hypothesis) @@ -6329,7 +6544,8 @@ applications.") (uri (pypi-uri "pep8" version)) (sha256 (base32 - "002rkl4lsn6x2mxmf8ar00l0m8i3mzrc6pnzz77blyksmpsxa4x1")))) + "002rkl4lsn6x2mxmf8ar00l0m8i3mzrc6pnzz77blyksmpsxa4x1")) + (patches (search-patches "python-pep8-stdlib-tokenize-compat.patch")))) (build-system python-build-system) (home-page "https://pep8.readthedocs.org/") (synopsis "Python style guide checker") @@ -6344,14 +6560,14 @@ PEP 8.") (define-public python-pyflakes (package (name "python-pyflakes") - (version "2.0.0") + (version "2.1.1") (source (origin (method url-fetch) (uri (pypi-uri "pyflakes" version)) (sha256 (base32 - "0jba28czyvimdc72llms3f17swp3i8jdcabf5w0j00adfbn64xls")))) + "18pq95a1xj2dgdd0m85gyfsn40jajj4xc3lp8wfv7igqhrc86xnr")))) (build-system python-build-system) (home-page "https://github.com/pyflakes/pyflakes") @@ -6440,35 +6656,20 @@ complexity of Python source code.") (define-public python2-pyflakes-0.8.1 (package-with-python2 python-pyflakes-0.8.1)) -;; This package is used by hypothesis which has thousands of dependent packages. -;; FIXME: Consolidate this with "python-flake8" below in the next rebuild cycle. -(define-public python-flake8-3.5 +(define-public python-flake8 (package (name "python-flake8") - (version "3.5.0") - (source - (origin - (method url-fetch) - (uri (pypi-uri "flake8" version)) - (sha256 - (base32 - "184b33grvvjmiwlv9kyd7yng9qv5ld24154j70z332xxg9gjclvj")))) + (version "3.7.7") + (source (origin + (method url-fetch) + (uri (pypi-uri "flake8" version)) + (sha256 + (base32 + "0qg6zggqigrd4k3gv88shd1a27d0cwgfql8vfiq2c7rl7w3rd6c5")))) (build-system python-build-system) (arguments `(#:phases (modify-phases %standard-phases - ;; Two errors don't seem to have assigned codes. - (add-after 'unpack 'delete-broken-test - (lambda _ (delete-file "tests/unit/test_pyflakes_codes.py") #t)) - (add-after 'unpack 'fix-problem-with-pycodestyle - (lambda _ - ;; See https://gitlab.com/pycqa/flake8/merge_requests/230 - ;; This should no longer be needed with the next release. - (substitute* "setup.py" - (("PEP8_PLUGIN\\('break_around_binary_operator'\\),") - "PEP8_PLUGIN('break_after_binary_operator'),\ -PEP8_PLUGIN('break_before_binary_operator'),")) - #t)) (delete 'check) (add-after 'install 'check (lambda* (#:key inputs outputs #:allow-other-keys) @@ -6477,6 +6678,7 @@ PEP8_PLUGIN('break_before_binary_operator'),")) #t))))) (propagated-inputs `(("python-pycodestyle" ,python-pycodestyle) + ("python-entrypoints" ,python-entrypoints) ("python-pyflakes" ,python-pyflakes) ("python-mccabe" ,python-mccabe))) (native-inputs @@ -6488,45 +6690,18 @@ PEP8_PLUGIN('break_before_binary_operator'),")) "The modular source code checker: pep8, pyflakes and co") (description "Flake8 is a wrapper around PyFlakes, pep8 and python-mccabe.") - (properties `((python2-variant . ,(delay python2-flake8-3.5)))) + (properties `((python2-variant . ,(delay python2-flake8)))) (license license:expat))) -(define-public python2-flake8-3.5 - (let ((base (package-with-python2 (strip-python2-variant python-flake8-3.5)))) +(define-public python2-flake8 + (let ((base (package-with-python2 (strip-python2-variant python-flake8)))) (package (inherit base) (propagated-inputs `(("python2-configparser" ,python2-configparser) ("python2-enum34" ,python2-enum34) + ("python2-typing" ,python2-typing) ,@(package-propagated-inputs base)))))) -;; Version 3.5.0 has compatibility issues with Pyflakes 2.0, so we need -;; this newer version. Keep it as a separate variable for now to avoid -;; rebuilding "python-hypothesis"; this should be removed in the next -;; rebuild cycle. -(define-public python-flake8 - (package - (inherit python-flake8-3.5) - (version "3.6.0") - (source (origin - (method url-fetch) - (uri (pypi-uri "flake8" version)) - (sha256 - (base32 - "0w0nprx22rbvrrkbfx9v5jc5gskbm08g219l7r8wai8zfswgadba")))) - (arguments - (substitute-keyword-arguments (package-arguments python-flake8-3.5) - ((#:phases phases) - `(modify-phases ,phases - (delete 'delete-broken-test) - (delete 'fix-problem-with-pycodestyle))))) - (properties `((python2-variant . ,(delay python2-flake8)))))) - -(define-public python2-flake8 - (let ((base (package-with-python2 (strip-python2-variant python-flake8)))) - (package (inherit base) - (propagated-inputs - (package-propagated-inputs python2-flake8-3.5))))) - ;; python-hacking requires flake8 <2.6.0. (define-public python-flake8-2.5 (package @@ -6570,6 +6745,12 @@ PEP8_PLUGIN('break_before_binary_operator'),")) (modify-phases %standard-phases (replace 'check (lambda _ + ;; Be compatible with Pytest 4: + ;; https://gitlab.com/pycqa/flake8-polyfill/merge_requests/7 + (substitute* "setup.cfg" + (("\\[pytest\\]") + "[tool:pytest]")) + (setenv "PYTHONPATH" (string-append (getcwd) "/build/lib:" (getenv "PYTHONPATH"))) @@ -6703,12 +6884,16 @@ pseudo terminal (pty), and interact with both the process and its pty.") ;; lines, but the test expects a single line... (("env\\['COLUMNS'\\] = '80'") "env['COLUMNS'] = '160'")) + + (substitute* "Makefile" + ;; Recent versions of python-coverage have caused the test + ;; coverage to decrease (as of version 0.7). Allow that. + (("--fail-under=100") + "--fail-under=90")) + #t)) - (delete 'check) - (add-after 'install 'check + (replace 'check ;; The test phase uses the built library and executable. - ;; It's easier to run it after install since the build - ;; directory contains version-specific PATH. (lambda* (#:key inputs outputs #:allow-other-keys) (add-installed-pythonpath inputs outputs) (setenv "PATH" (string-append (getenv "PATH") ":" @@ -6754,13 +6939,13 @@ add functionality and customization to your projects with their own plugins.") (define-public python-fonttools (package (name "python-fonttools") - (version "3.28.0") + (version "3.38.0") (source (origin (method url-fetch) (uri (pypi-uri "fonttools" version ".zip")) (sha256 (base32 - "0vsvjhidpb5kywpjgz1j3fywzkddxkb0afqai18qa3h6lqjyxwpb")))) + "12ripk3s7skgxr1bs9r8n13r94ym3s8iir7ivfixls9fa4dabmlh")))) (build-system python-build-system) (native-inputs `(("unzip" ,unzip) @@ -6989,14 +7174,14 @@ Supported netlink families and protocols include: (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 @@ -7005,7 +7190,7 @@ Supported netlink families and protocols include: (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))) @@ -7312,14 +7497,14 @@ responses, rather than doing any computation.") (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. @@ -7479,17 +7664,31 @@ serve the same purpose: provide Python bindings for libmagic."))) (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 @@ -7895,6 +8094,45 @@ Jupyter kernels such as IJulia and IRKernel.") support for rich media output.") (license license:bsd-3))) +(define-public python-jsbeautifier + (package + (name "python-jsbeautifier") + (version "1.10.2") + (home-page "https://github.com/beautify-web/js-beautify") + (source (origin + (method git-fetch) + (uri (git-reference + (url home-page) + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0wawb070ki1axb3jc9xvsrgpji52vcfif3zmjzc3z4g98m5xw4kg")))) + (build-system python-build-system) + (arguments + `(#:phases (modify-phases %standard-phases + (add-after 'unpack 'chdir + (lambda _ + ;; The upstream Git repository contains all the code, + ;; but this package only builds the python code. + (chdir "python") + #t)) + (add-after 'unpack 'patch-python-six-requirements + (lambda _ + (substitute* "python/setup.py" + (("six>=1.12.0") + "six>=1.11.0")) + #t))))) + (propagated-inputs + `(("python-editorconfig" ,python-editorconfig) + ("python-six" ,python-six))) + (native-inputs + `(("python-pytest" ,python-pytest))) + (synopsis "JavaScript unobfuscator and beautifier") + (description "Beautify, unpack or deobfuscate JavaScript, leveraging +popular online obfuscators.") + (license license:expat))) + (define-public jupyter (package (name "jupyter") @@ -7944,6 +8182,8 @@ simulation, statistical modeling, machine learning and much more.") ("python-pytest" ,python-pytest) ("python-pytest-runner" ,python-pytest-runner))) (build-system python-build-system) + ;; XXX: Incompatible with Pytest 4: <https://github.com/chardet/chardet/issues/173>. + (arguments `(#:tests? #f)) (home-page "https://github.com/chardet/chardet") (synopsis "Universal encoding detector for Python 2 and 3") (description @@ -8190,13 +8430,13 @@ tables.") (define-public python-atomicwrites (package (name "python-atomicwrites") - (version "1.1.5") + (version "1.3.0") (source (origin (method url-fetch) (uri (pypi-uri "atomicwrites" version)) (sha256 (base32 - "11bm90fwm2avvf4f3ib8g925w7jr4m11vcsinn1bi6ns4bm32214")))) + "19ngcscdf3jsqmpcxn6zl5b6anmsajb6izp1smcd1n02midl9abm")))) (build-system python-build-system) (synopsis "Atomic file writes in Python") (description "Library for atomic file writes using platform dependent tools @@ -8509,11 +8749,14 @@ otherwise matches 3.2’s API.") (base32 "0rdjmmsab550kxsssdq49jcniz77zlkpw4pvi9hvib3lsskjmh4y")))) (build-system python-build-system) - (arguments `(#:python ,python-2 - ;; FIXME: Python 2.7.14 moved the test.support library, - ;; but our package has not yet been adjusted. Enable - ;; tests when the python2 package has been fixed. - #:tests? #f)) + (arguments + `(#:python ,python-2 + #:phases + (modify-phases %standard-phases + (replace 'check + (lambda _ + (invoke "python" "test_futures.py") + #t))))) (home-page "https://github.com/agronholm/pythonfutures") (synopsis "Backport of the concurrent.futures package from Python 3.2") @@ -8627,14 +8870,14 @@ library as well as on the command line.") (define-public python-pluggy (package (name "python-pluggy") - (version "0.7.1") + (version "0.11.0") (source (origin (method url-fetch) (uri (pypi-uri "pluggy" version)) (sha256 (base32 - "1qbn70mksmr03hac6jgp6fiqc4l7859z8dchx2x950vhlij87swm")))) + "10511a54dvafw1jrk75mrhml53c7b7w4yaw7241696lc2hfvr895")))) (build-system python-build-system) (native-inputs `(("python-setuptools-scm" ,python-setuptools-scm))) @@ -9272,13 +9515,13 @@ anymore.") (define-public python2-pathlib2 (package (name "python2-pathlib2") - (version "2.3.2") + (version "2.3.3") (source (origin (method url-fetch) (uri (pypi-uri "pathlib2" version)) (sha256 (base32 - "10yb0iv5x2hs631rcppkhbddx799d3h8pcwmkbh2a66ns3w71ccf")))) + "0hpp92vqqgcd8h92msm9slv161b1q160igjwnkf2ag6cx0c96695")))) (build-system python-build-system) ;; We only need the the Python 2 variant, since for Python 3 our minimum ;; version is 3.4 which already includes this package as part of the @@ -9870,13 +10113,6 @@ graphviz.") (guix build utils) (guix build python-build-system)) #:phases (modify-phases %standard-phases - (add-after 'unpack 'unpack-libev - (lambda* (#:key inputs #:allow-other-keys) - (mkdir-p "deps/libev") - ;; FIXME: gevent requires building libev, even though - ;; it only links against the proper one. - (invoke "tar" "-xf" (assoc-ref inputs "libev-source") - "--strip-components=1" "-C" "deps/libev"))) (add-before 'patch-source-shebangs 'patch-hard-coded-paths (lambda _ (substitute* "src/gevent/subprocess.py" @@ -9894,6 +10130,11 @@ graphviz.") (setenv "CARES_EMBED" "false") (setenv "EMBED" "false") + ;; Prevent building bundled libev. + (substitute* "setup.py" + (("run_make=_BUILDING") + "run_make=False")) + (let ((greenlet (string-append (assoc-ref inputs "python-greenlet") "/include"))) @@ -9901,7 +10142,7 @@ graphviz.") (lambda (item) (string-prefix? "python" item))) ((python) - (setenv "CPATH" + (setenv "C_INCLUDE_PATH" (string-append greenlet "/" python))))) #t)) (add-before 'check 'skip-timer-test @@ -9933,8 +10174,7 @@ graphviz.") `(("python-greenlet" ,python-greenlet) ("python-objgraph" ,python-objgraph))) (native-inputs - `(("libev-source" ,(package-source libev)) - ("python-six" ,python-six))) + `(("python-six" ,python-six))) (inputs `(("c-ares" ,c-ares) ("libev" ,libev))) @@ -9978,13 +10218,13 @@ format.") (define-public python-twisted (package (name "python-twisted") - (version "19.2.1") + (version "19.7.0") (source (origin (method url-fetch) (uri (pypi-uri "Twisted" version ".tar.bz2")) (sha256 (base32 - "0liymyd4pzphizjlpwkncxjpm9akyr3lkfkm77yfg6wasv108b7s")))) + "17d3hnxv9qndagzz63mdpyk99xj63p9gq586vjn0rxk8cl197nym")))) (build-system python-build-system) (arguments '(#:tests? #f)) ; FIXME: some tests fail @@ -10531,25 +10771,29 @@ characters, mouse support, and auto suggestions.") (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))) @@ -10567,11 +10811,7 @@ well.") (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 @@ -10749,6 +10989,42 @@ binary or text.") `(("python2-enum34" ,python2-enum34) ,@(package-propagated-inputs base)))))) +(define-public python-binwalk + (let ((commit "64201acfb5b0a9cdd9faa58c40a36dcff8612e29") + (revision "0")) + (package + (name "python-binwalk") + (version (git-version "2.1.1" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/ReFirmLabs/binwalk") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1z7ca6rfp887hw5jc3sb45mm4fa0xid4lsp2z8g4r590dr7k7w15")))) + (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-before 'check 'set-pythonpath + (lambda _ + (setenv "PYTHONPATH" + (string-append + (getcwd) "/src/" + ":" (getenv "PYTHONPATH"))) + (setenv "HOME" "") + #t))))) + (native-inputs + `(("python-coverage" ,python-coverage) + ("python-nose" ,python-nose))) + (home-page "https://github.com/ReFirmLabs/binwalk") + (synopsis "Firmware analysis tool") + (description "Binwalk is a tool for analyzing, reverse engineering, and extracting firmware images") + (license license:expat)))) + (define-public python-nltk (package (name "python-nltk") @@ -11984,15 +12260,6 @@ protocols.") (package (inherit python-attrs) (name "python-attrs-bootstrap") - ;; Keep this on a fixed version so python-attrs can be updated without - ;; triggering a mass-rebuild. FIXME: Update this in the next rebuild cycle. - (version "17.4.0") - (source (origin - (method url-fetch) - (uri (pypi-uri "attrs" version)) - (sha256 - (base32 - "1jafnn1kzd6qhxgprhx6y6ik1r5m2rilx25syzcmq03azp660y8w")))) (native-inputs `()) (arguments `(#:tests? #f)))) @@ -12292,17 +12559,14 @@ of @code{functools.lru_cache} from python 3.3.") (define-public python-configparser (package (name "python-configparser") - (version "3.5.0") + (version "3.7.1") (source (origin (method url-fetch) - (uri (string-append - "https://bitbucket.org/ambv/configparser/get/" - version ".tar.bz2")) - (file-name (string-append name "-" version ".tar.gz")) + (uri (pypi-uri "configparser" version)) (sha256 (base32 - "0waq40as14abwzbb321hfz4vr1fi363nscy32ga14qvfygrg96wa")))) + "0cnz213il9lhgda6x70fw7mfqr8da43s3wm343lwzhqx94mgmmav")))) (build-system python-build-system) (home-page "https://github.com/jaraco/configparser/") (synopsis "Backport of configparser from python 3.5") @@ -14619,41 +14883,40 @@ file system events on Linux.") (define-public python-more-itertools (package (name "python-more-itertools") - (version "4.3.0") + (version "7.1.0") (source (origin (method url-fetch) (uri (pypi-uri "more-itertools" version)) (sha256 (base32 - "17h3na0rdh8xq30w4b9pizgkdxmm51896bxw600x84jflg9vaxn4")))) + "16phg2f2dvm6ci5wr49ncha5lmc0m2in3bsl33c61vzca4gkvd4b")))) (build-system python-build-system) - (arguments - `(,@(if (any (cute string-prefix? <> (or (%current-system) - (%current-target-system))) - '("armhf" "i686")) - '(#:phases - (modify-phases %standard-phases - ;; This is required for 32-bit hardware. - ;; TODO: Try to remove this when upgrading. - (add-after 'unpack 'patch-test - (lambda _ - (substitute* "more_itertools/tests/test_more.py" - (("10 \\*\\* 10") "9 ** 9")) - #t)))) - '()))) - (propagated-inputs - `(("python-six" ,python-six-bootstrap))) (home-page "https://github.com/erikrose/more-itertools") (synopsis "More routines for operating on iterables, beyond itertools") (description "Python's built-in @code{itertools} module implements a number of iterator building blocks inspired by constructs from APL, Haskell, and SML. @code{more-itertools} includes additional building blocks for working with iterables.") + (properties `((python2-variant . ,(delay python2-more-itertools)))) (license license:expat))) +;; The 5.x series are the last versions supporting Python 2.7. (define-public python2-more-itertools - (package-with-python2 python-more-itertools)) + (package + (inherit python-more-itertools) + (name "python2-more-itertools") + (version "5.0.0") + (source (origin + (method url-fetch) + (uri (pypi-uri "more-itertools" version)) + (sha256 + (base32 + "1r12cm6mcdwdzz7d47a6g4l437xsvapdlgyhqay3i2nrlv03da9q")))) + (arguments + `(#:python ,python2-minimal)) + (propagated-inputs + `(("python2-six" ,python2-six-bootstrap))))) (define-public python-latexcodec (package @@ -14676,14 +14939,13 @@ working with iterables.") (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))) @@ -14720,17 +14982,21 @@ time-based (TOTP) passwords.") (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 @@ -14920,7 +15186,7 @@ under Python 2.7.") (define-public pybind11 (package (name "pybind11") - (version "2.2.4") + (version "2.3.0") (source (origin (method git-fetch) (uri (git-reference @@ -14928,7 +15194,7 @@ under Python 2.7.") (commit (string-append "v" version)))) (sha256 (base32 - "0pa79ymcasv8br5ifbx7878id5py2jpjac3i20cqxr6gs9l6ivlv")) + "11b6dniri8m05spfd2a19irz82shf4sdca73566bniggrf3zclnf")) (file-name (git-file-name name version)))) (build-system cmake-build-system) (native-inputs @@ -16058,3 +16324,151 @@ one-off scripts.") 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))) + +(define-public python-bibtexparser + (package + (name "python-bibtexparser") + (version "1.1.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "bibtexparser" version)) + (sha256 + (base32 + "0zwhfkrzf3n5847dbnfng92k7ak199l9v6x6ax3dgdidfpm6d2fz")))) + (build-system python-build-system) + (propagated-inputs + `(("python-pyparsing" ,python-pyparsing))) + (native-inputs + `(("python-future" ,python-future))) + (home-page "https://github.com/sciunto-org/python-bibtexparser") + (synopsis "Python library to parse BibTeX files") + (description "BibtexParser is a Python library to parse BibTeX files.") + (license (list license:bsd-3 license:lgpl3)))) + +(define-public python-distro + (package + (name "python-distro") + (version "1.4.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "distro" version)) + (sha256 + (base32 + "0mrg75w4ap7mdzyga75yaid9n8bgb345ih5mwjp3plj6v1jxwb9n")))) + (build-system python-build-system) + (native-inputs + `(("python-pytest" ,python-pytest))) + (home-page "https://github.com/nir0s/distro") + (synopsis + "OS platform information API") + (description + "@code{distro} provides information about the OS distribution it runs on, +such as a reliable machine-readable ID, or version information. + +It is the recommended replacement for Python's original +`platform.linux_distribution` function (which will be removed in Python 3.8). +@code{distro} also provides a command-line interface to output the platform +information in various formats.") + (license license:asl2.0))) |