diff options
Diffstat (limited to 'gnu/packages/python-xyz.scm')
-rw-r--r-- | gnu/packages/python-xyz.scm | 213 |
1 files changed, 155 insertions, 58 deletions
diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm index 296879f534..eef2079c19 100644 --- a/gnu/packages/python-xyz.scm +++ b/gnu/packages/python-xyz.scm @@ -3004,38 +3004,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 @@ -3848,14 +3854,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) @@ -3872,7 +3878,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 @@ -3887,11 +3893,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"))) @@ -3903,8 +3957,8 @@ 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))))) @@ -3923,6 +3977,14 @@ toolkits.") (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 @@ -3946,6 +4008,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) @@ -3972,6 +4035,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") @@ -4020,7 +4086,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 @@ -5014,7 +5085,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) @@ -5447,6 +5519,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) @@ -7500,17 +7579,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 @@ -10554,25 +10647,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))) @@ -10590,11 +10687,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 @@ -14729,17 +14822,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 |