diff options
Diffstat (limited to 'gnu/packages/python-xyz.scm')
-rw-r--r-- | gnu/packages/python-xyz.scm | 1056 |
1 files changed, 829 insertions, 227 deletions
diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm index cfd2d68219..42670f34c3 100644 --- a/gnu/packages/python-xyz.scm +++ b/gnu/packages/python-xyz.scm @@ -26,7 +26,7 @@ ;;; Copyright © 2016, 2017 Nikita <nikita@n0.is> ;;; Copyright © 2016 Dylan Jeffers <sapientech@sapientech@openmailbox.org> ;;; Copyright © 2016 David Craven <david@craven.ch> -;;; Copyright © 2016, 2017, 2018, 2019, 2020, 2021 Marius Bakke <marius@gnu.org> +;;; Copyright © 2016-2022 Marius Bakke <marius@gnu.org> ;;; Copyright © 2016, 2017, 2021 Stefan Reichör <stefan@xsteve.at> ;;; Copyright © 2016, 2017, 2019 Alex Vong <alexvong1995@gmail.com> ;;; Copyright © 2016, 2017, 2018, 2021 Arun Isaac <arunisaac@systemreboot.net> @@ -80,7 +80,7 @@ ;;; Copyright © 2020 Josh Holland <josh@inv.alid.pw> ;;; Copyright © 2020 Yuval Kogman <nothingmuch@woobling.org> ;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de> -;;; Copyright © 2020, 2021 Vinicius Monego <monego@posteo.net> +;;; Copyright © 2020, 2021, 2022 Vinicius Monego <monego@posteo.net> ;;; Copyright © 2020 Guy Fleury Iteriteka <gfleury@disroot.org> ;;; Copyright © 2020 Hendursaga <hendursaga@yahoo.com> ;;; Copyright © 2020 Malte Frank Gerdes <malte.f.gerdes@gmail.com> @@ -92,8 +92,8 @@ ;;; Copyright © 2020 Liliana Marie Prikler <liliana.prikler@gmail.com> ;;; Copyright © 2019 Kristian Trandem <kristian@devup.no> ;;; Copyright © 2020, 2021 Zheng Junjie <873216071@qq.com> -;;; Copyright © 2021 Morgan Smith <Morgan.J.Smith@outlook.com> ;;; Copyright © 2020 EuAndreh <eu@euandre.org> +;;; Copyright © 2021, 2022 Morgan Smith <Morgan.J.Smith@outlook.com> ;;; Copyright © 2021 Sharlatan Hellseher <sharlatanus@gmail.com> ;;; Copyright © 2021 Ellis Kenyő <me@elken.dev> ;;; Copyright © 2021 LibreMiami <packaging-guix@libremiami.org> @@ -113,6 +113,9 @@ ;;; Copyright © 2021 Raphaël Mélotte <raphael.melotte@mind.be> ;;; Copyright © 2021 ZmnSCPxj <ZmnSCPxj@protonmail.com> ;;; Copyright © 2021 Filip Lajszczak <filip@lajszczak.dev> +;;; Copyright © 2021 Greg Hogan <code@greghogan.com> +;;; Copyright © 2022 John Kehayias <john.kehayias@protonmail.com> +;;; Copyright © 2022 Aleksandr Vityazev <avityazev@posteo.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -768,21 +771,24 @@ implementation for the Telegram Bot API.") (define-public python-colorlog (package (name "python-colorlog") - (version "4.1.0") - (source (origin - (method url-fetch) - (uri (pypi-uri "colorlog" version)) - (sha256 - (base32 - "1lpk8zmfv8vz090h5d0hzb4n39wgasxdd3x3bpn3v1x1n9dfzaih")))) + (version "6.6.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "colorlog" version)) + (sha256 + (base32 "1s7x0v872h8aks8xp01wmv6hzisxqjrh1svbbcycir0980h76krl")))) (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda* (#:key inputs outputs tests? #:allow-other-keys) + (when tests? + (add-installed-pythonpath inputs outputs) + (invoke "python" "-m" "pytest"))))))) (native-inputs (list python-pytest)) - (arguments - `(#:phases (modify-phases %standard-phases - (replace 'check - (lambda _ - (invoke "pytest" "-p" "no:logging")))))) (home-page "https://github.com/borntyping/python-colorlog") (synopsis "Log formatting with colors for python") (description "The @code{colorlog.ColoredFormatter} is a formatter for use @@ -1400,7 +1406,7 @@ approximate nearest neighbor search with Python bindings.") (define-public python-pyls-black (package (name "python-pyls-black") - (version "0.4.6") + (version "0.4.7") (source (origin ;; There are no tests in the PyPI tarball. @@ -1410,12 +1416,27 @@ approximate nearest neighbor search with Python bindings.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "0cjf0mjn156qp0x6md6mncs31hdpzfim769c2lixaczhyzwywqnj")))) + (base32 "0bkhfnlik89j3yamr20br4wm8975f20v33wabi2nyxvj10whr5dj")) + ;; Patch to work with python-lsp-server. Taken from + ;; <https://github.com/rupert/pyls-black/pull/37>. + (modules '((guix build utils))) + (snippet + '(begin + (substitute* "setup.cfg" + (("python-language-server") + "python-lsp-server")) + (substitute* '("pyls_black/plugin.py" "tests/test_plugin.py") + (("pyls_format_document") + "pylsp_format_document") + (("pyls_format_range") + "pylsp_format_range") + (("from pyls([ \\.])" _ char) + (string-append "from pylsp" char))))))) (build-system python-build-system) (arguments `(#:test-target "pytest")) (propagated-inputs - (list python-black python-language-server python-toml)) + (list python-black python-lsp-server python-tomli)) (native-inputs (list python-flake8 python-isort python-mypy python-pytest python-pytest-runner)) @@ -1455,26 +1476,31 @@ approximate nearest neighbor search with Python bindings.") (define-public python-cftime (package (name "python-cftime") - (version "1.0.4.2") + (version "1.5.1.1") (source (origin (method url-fetch) (uri (pypi-uri "cftime" version)) (sha256 - (base32 "0w0gi6jnch38hiygl62j4xkcirv4y3dcwrvxl9p7bsk6j27lzihs")))) + (base32 "0l1a22zlhdpgaisibvvm7dhij4vzfm661rnv00y2snpyqxpdgi3d")))) (build-system python-build-system) (propagated-inputs (list python-numpy)) (native-inputs - (list python-coveralls python-cython python-pytest-cov)) - (home-page "https://github.com/Unidata/cftime") + (list python-check-manifest + python-coverage + python-coveralls + python-cython + python-pytest-cov + python-sphinx + python-twine + python-wheel)) + (home-page "https://unidata.github.io/cftime/") (synopsis "Library for time handling") (description "This package provides time-handling functionality that used to be part of the netcdf4 package before.") - ;; This package claims to include code under the GPLv3 but is released - ;; under ISC. - (license (list license:isc license:gpl3+)))) + (license license:expat))) (define-public python-netcdf4 (package @@ -4024,6 +4050,33 @@ logic-free templating system Mustache.") (lambda _ (invoke "python" "test_pystache.py"))))))))) +(define-public python-pystitcher + (package + (name "python-pystitcher") + (version "1.0.4") + (source + (origin + (method git-fetch) + (uri + (git-reference + (url "https://github.com/captn3m0/pystitcher") + (commit + (string-append "v" version)))) + (file-name + (git-file-name name version)) + (sha256 + (base32 "03yrzqhcsjdj5zprrk3bh5bbyqfy3vfhxra9974vmkir3m121394")))) + (build-system python-build-system) + (inputs + (list python-html5lib python-importlib-metadata python-markdown + python-pypdf3 python-validators)) + (home-page "https://github.com/captn3m0/pystitcher") + (synopsis "Declaratively stitch together a PDF file from multiple sources") + (description + "This package stitches your PDF files together, generating customizable +bookmarks using a declarative input in the form of a markdown file.") + (license license:expat))) + (define-public python-joblib (package (name "python-joblib") @@ -4149,6 +4202,77 @@ important tasks for becoming a daemon process: structure for Python.") (license license:asl2.0))) +(define-public autokey + (package + (name "autokey") + (version "0.95.10") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/autokey/autokey") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0f0cqfnb49wwdy7zl2f2ypcnd5pc8r8n7z7ssxkq20d4xfxlgamr")))) + (build-system python-build-system) + (arguments + (list + ;; Tests are deprecated and broken until next version, see + ;; https://github.com/autokey/autokey/issues/327 + #:tests? #f + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'fix-paths + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "lib/autokey/scripting.py" + (("\"wmctrl\"") + (string-append "\"" (search-input-file inputs "bin/wmctrl") "\"")) + (("\"zenity\"") + (string-append "\"" (search-input-file inputs "bin/zenity") "\""))) + (substitute* "autokey-shell" + (("'ipython3'") + (string-append "'" (search-input-file inputs "bin/ipython3") "'")) + (("'python3'") + (string-append "'" (search-input-file inputs "bin/python3") "'"))))) + ;; Use 'prefix' instead of '=' to allow the user to use additional + ;; GI paths from their autokey scripts. GUIX_PYTHONPATH is already + ;; wrapped with prefix in python-build-system's wrap. + (add-before 'wrap 'wrap-autokey-gi + (lambda _ + (let ((gi-typelib-path (getenv "GI_TYPELIB_PATH"))) + (for-each + (lambda (program) + (wrap-program program + `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path)))) + (map (lambda (name) + (string-append #$output "/bin/" name)) + '("autokey-gtk" + "autokey-shell"))))))))) + (inputs + (list bash-minimal ; for wrap-program + gtksourceview-3 + libappindicator + libnotify + python-dbus + python-ipython + python-pygobject + python-pyinotify + python-pyqt+qscintilla + python-xlib + wmctrl + zenity)) + (home-page "https://github.com/autokey/autokey") + (synopsis + "Keyboard and GUI automation utility") + (description + "AutoKey is a desktop automation utility for X11. It allows the automation of +virtually any task by responding to typed abbreviations and hotkeys. It +offers a full-featured GUI (GTK and QT versions) that makes it highly +accessible for novices, as well as a scripting interface offering the full +flexibility and power of the Python language.") + (license license:gpl3+))) + (define-public python-docutils (package (name "python-docutils") @@ -5084,14 +5208,14 @@ and integrated feature-set for programming Python effectively.") (define-public python-pathspec (package (name "python-pathspec") - (version "0.7.0") + (version "0.9.0") (source (origin (method url-fetch) (uri (pypi-uri "pathspec" version)) (sha256 (base32 - "15lvs4awlg8xzl0l4gk9y53xx4yqmqvsv44pglv39m70y85afajn")))) + "1cdbdb3s6ldnjpwbi0bgl0xlmw4mbfxk08bbdxc3srx26na4jr75")))) (build-system python-build-system) (home-page "https://github.com/cpburnz/python-path-specification") (synopsis "Utility library for gitignore style pattern matching of file paths") @@ -5103,74 +5227,68 @@ matching of file paths.") (define-public python-black (package (name "python-black") - (version "20.8b1") + (version "21.12b0") (source (origin (method url-fetch) (uri (pypi-uri "black" version)) (sha256 (base32 - "1spv6sldp3mcxr740dh3ywp25lly9s8qlvs946fin44rl1x5a0hw")))) + "1czjwr1bx9ax5l64xfi54sxb1ycdy4s9ciaqg592x7jn79lhzf3p")))) (build-system python-build-system) (arguments `(#:phases (modify-phases %standard-phases - (add-after 'patch-source-shebangs 'patch-extra-shebangs - (lambda _ - (let ((python3 (which "python3"))) - (substitute* '("tests/data/fmtonoff.py" - "tests/data/string_prefixes.py" - "tests/data/function.py" - "tests/data/python37.py") + (add-after 'patch-source-shebangs 'use-absolute-file-names + (lambda* (#:key native-inputs inputs #:allow-other-keys) + (let* ((inpts (or native-inputs inputs)) + (python3 (search-input-file inpts "/bin/python3")) + (/bin/false (search-input-file inpts "/bin/false")) + (/bin/sleep (search-input-file inpts "/bin/sleep"))) + (substitute* (find-files "tests" "\\.py$") (("#!/usr/bin/env python3(\\.[0-9]+)?" _ minor-version) (string-append "#!" python3 (if (string? minor-version) minor-version - ""))))) - #t)) + "")))) + (substitute* "tests/test_primer.py" + (("/bin/false") /bin/false) + (("/bin/sleep") /bin/sleep))))) (add-after 'unpack 'disable-broken-tests (lambda* (#:key outputs inputs #:allow-other-keys) ;; Make installed package available for running the tests (setenv "PATH" (string-append (assoc-ref outputs "out") "/bin" ":" (getenv "PATH"))) - ;; These tests are supposed to be skipped when the blackd - ;; dependencies are missing, but this doesn't quite work. - (substitute* "tests/test_black.py" - (("( *)class BlackDTestCase.*" match indent) - (string-append indent "@unittest.skip(\"no blackd deps\")\n" - indent "class BlackDTestCase(unittest.TestCase):\n")) - (("web.Application") "False") - (("@unittest_run_loop") "")) - - ;; Patching the above file breaks the self test - (substitute* "tests/test_black.py" - (("( *)def test_self" match indent) - (string-append indent "@unittest.skip(\"guix\")\n" match))) - - (substitute* "tests/test_black.py" - (("( *)def test_python38" match indent) - (string-append indent "@unittest.skip(\"guix\")\n" match))) - #t)) + ;; The source formatting test fails because we patch various + ;; files; just disable it. + (substitute* "tests/test_format.py" + (("def test_source_is_formatted" all) + (format #f "@pytest.mark.skip(\"Disabled by Guix.\")\n~a" + all))))) ;; Remove blackd, because it depends on python-aiohttp and ;; python-aiohttp-cors. (add-after 'unpack 'remove-entrypoint (lambda _ (substitute* "setup.py" (("\\s*\"blackd=blackd:patched_main \\[d\\]\",\n") "") - (("\"blackd\", ") ""))))))) + (("\"blackd\", ") "")))) + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? (invoke "pytest" "-vv"))))))) (propagated-inputs (list python-click python-attrs python-appdirs python-pathspec python-mypy-extensions + python-platformdirs python-regex - python-toml + python-tomli python-typed-ast python-typing-extensions)) (native-inputs - (list python-setuptools-scm)) - (home-page "https://github.com/ambv/black") + (list python-pytest python-pytest-aiohttp python-setuptools-scm)) + (home-page "https://github.com/psf/black") (synopsis "The uncompromising code formatter") (description "Black is the uncompromising Python code formatter.") (license license:expat))) @@ -6898,6 +7016,27 @@ the OleFileIO module from PIL, the Python Image Library.") (define-public python2-olefile (package-with-python2 python-olefile)) +(define-public python-pypdf3 + (package + (name "python-pypdf3") + (version "1.0.5") + (source + (origin + (method url-fetch) + (uri (pypi-uri "PyPDF3" version)) + (sha256 + (base32 "018hlq9q2qa96vw4j7ppq352znykldwy98h2w9qcpkvpi93sjqhc")))) + (build-system python-build-system) + (propagated-inputs + (list python-tqdm)) + (home-page "https://github.com/sfneal/PyPDF3") + (synopsis "Utility to read and write PDFs with Python") + (description "PyPDF3 is a pure-python PDF library capable of splitting, +merging together, cropping, and transforming the pages of PDF files. It can +also add custom data, viewing options, and passwords to PDF files. It can +retrieve text and metadata from PDFs as well as merge entire files together.") + (license license:bsd-3))) + (define-public python-pikepdf (package (name "python-pikepdf") @@ -7097,8 +7236,10 @@ def customize_build(EXTENSIONS, OPTIONS): del EXTENSIONS['zfp'] del EXTENSIONS['zopfli'] OPTIONS['cythonize'] -"))) - #t))))) +"))))) + ;; XXX: The installed scripts import packages that depend on + ;; this package; disable import check to avoid the cycle. + (delete 'sanity-check)))) (inputs (list c-blosc giflib @@ -7113,6 +7254,7 @@ def customize_build(EXTENSIONS, OPTIONS): zlib `(,zstd "lib"))) (propagated-inputs + ;; For the Python library. (list python-numpy)) (native-inputs ;; For building. @@ -7131,6 +7273,27 @@ buffer transformation, compression, and decompression functions for use in the tifffile, czifile, and other scientific image input/output modules.") (license license:bsd-3))) +(define-public python-executing + (package + (name "python-executing") + (version "0.8.2") + (source + (origin + (method url-fetch) + (uri (pypi-uri "executing" version)) + (sha256 + (base32 "08q0xh9fd8k41sqpp23q6fb9bf7yj4y2q6sv30pj36vvk8pg8fy2")))) + (build-system python-build-system) + (arguments + `(#:tests? #f)) ; TODO: tests require python-asttokens + (native-inputs + (list python-setuptools-scm python-toml)) + (home-page "https://github.com/alexmojaki/executing") + (synopsis "Get information about what a Python frame is currently doing") + (description "This package lets you get information about what a frame is +currently doing, particularly the AST node being executed.") + (license license:expat))) + (define-public python-roifile (package (name "python-roifile") @@ -7315,14 +7478,14 @@ formulas and hyperlinks to multiple worksheets in an Excel 2007+ XLSX file.") (define-public python-pywavelets (package (name "python-pywavelets") - (version "1.1.1") + (version "1.2.0") (home-page "https://github.com/PyWavelets/pywt") (source (origin (method url-fetch) (uri (pypi-uri "PyWavelets" version)) (sha256 (base32 - "1j88c0r4j1d4mb3f8qhz6nalyx21qrzmsm70rjngnkybd87v8r0s")))) + "13csbr6ls9q9ww53z2xwwsj0hpsz88rj2iwp623h0kmv8yq6kgbc")))) (build-system python-build-system) (arguments '(#:modules ((ice-9 ftw) @@ -8319,6 +8482,41 @@ profile, launches a cluster and returns a view. On program exit it shuts the cluster down and deletes the throwaway profile.") (license license:expat))) +(define-public python-ipython-sql + (package + (name "python-ipython-sql") + (version "0.4.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "ipython-sql" version)) + (sha256 + (base32 "0v74ayc6vw98f4jljmwy45qpqbcbhlrb4g1qdyypq9sppxcqx21y")))) + (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'fix-build + (lambda _ + ;; The "NEWS.rst" file is missing from the PyPI distribution. + ;; (see: https://github.com/catherinedevlin/ipython-sql/issues/164) + (substitute* "setup.py" + (("NEWS = [^\n]*") "") + (("long_description=README \\+ '\\\\n\\\\n' \\+ NEWS,") + "long_description=README,"))))))) + (propagated-inputs + (list python-ipython + python-ipython-genutils + python-prettytable + python-six + python-sqlalchemy + python-sqlparse)) + (home-page "https://github.com/catherinedevlin/ipython-sql") + (synopsis "RDBMS access via IPython") + (description "This library connects to a database, using SQLAlchemy URL +connect strings, then issue SQL commands within IPython or IPython Notebook.") + (license license:expat))) + (define-public python-traitlets (package (name "python-traitlets") @@ -8534,23 +8732,21 @@ installing @code{kernelspec}s for use with Jupyter frontends.") (define-public python-pari-jupyter (package (name "python-pari-jupyter") - (version "1.3.2") + (version "1.4.0") (source (origin (method url-fetch) - (uri (pypi-uri "pari_jupyter" version)) + (uri (pypi-uri "pari-jupyter" version)) (sha256 (base32 - "1yash0p422nnin7z58b99d0p23nx79f5m0mainc9hsjg72jhdhr6")))) + "1hwjr66vfjsx28qmxrgsp3z0px1xqwxv53byvsrbwbjp4pbp79sz")))) (build-system python-build-system) + (arguments '(#:tests? #f)) ;no test suite (propagated-inputs (list python-ipykernel)) (inputs (list pari-gp readline)) - (arguments - `(#:tests? #f)) ; no test suite - (home-page - "https://github.com/jdemeyer/pari_jupyter") + (home-page "https://github.com/jdemeyer/pari-jupyter") (synopsis "Jupyter kernel for PARI/GP") (description "The package provides a PARI/GP kernel for Jupyter.") (license license:gpl3+))) @@ -8936,6 +9132,26 @@ parsing (browser/HTTP) user agent strings.") (define-public python2-user-agents (package-with-python2 python-user-agents)) +(define-public python-pydbus + (package + (name "python-pydbus") + (version "0.6.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "pydbus" version)) + (sha256 + (base32 "0b0gipvz7vcfa9ddmwq2jrx16d4apb0hdnl5q4i3h8jlzwp1c1s2")))) + (build-system python-build-system) + (propagated-inputs (list python-pygobject)) + (home-page "https://github.com/LEW21/pydbus") + (synopsis "Pythonic D-Bus library") + (description "Pydbus provides a pythonic interface to the D-Bus +message bus system. Pydbus can be used to access remote objects and +also for object publication. It is based on PyGI, the Python GObject +Introspection bindings, which is the recommended way to use GLib from Python.") + (license license:lgpl2.1+))) + (define-public python-dbus (package (name "python-dbus") @@ -9116,14 +9332,14 @@ some are not yet implemented).") (define-public python-netifaces (package (name "python-netifaces") - (version "0.10.9") + (version "0.11.0") (source (origin (method url-fetch) (uri (pypi-uri "netifaces" version)) (sha256 (base32 - "1wxby874kcr3pp4ygzk5aiarbzhg1yi093d56s1qg4k2s7yrzvid")))) + "0cnajf5rl4w1sa72j921scbigr6zndig56cq8ggpx45jdqa7jfh4")))) (build-system python-build-system) (home-page "https://github.com/al45tair/netifaces") (synopsis @@ -9820,6 +10036,113 @@ entire set of Emoji codes as defined by the Unicode Consortium is supported in addition to a bunch of aliases.") (license license:bsd-3))) +(define-public python-sarge + (package + (name "python-sarge") + (version "0.1.7.post1") ; post release only to correct errors in metadata + (source + (origin + (method url-fetch) + (uri (pypi-uri "sarge" version)) + (sha256 + (base32 "0g9a53mfnp96877n1yq2jdk1mcv3xm0d93iisvgcn2prdsp45zv4")))) + (build-system python-build-system) + (home-page "https://docs.red-dove.com/sarge/") + (synopsis "Subprocess wrapper with command pipeline functionality") + (description "@code{sarge} is a wrapper for subprocess which provides +command pipeline functionality.") + (license license:bsd-3))) + +(define-public python-zipstream-new + (package + (name "python-zipstream-new") + (version "1.1.8") + (source + (origin + (method git-fetch) ; no tests in PyPI release + (uri (git-reference + (url "https://github.com/arjan-s/python-zipstream") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "14vhgg8mcjqi8cpzrw8qzbij2fr2a63l2a8fhil21k2r8vzv92cv")))) + (build-system python-build-system) + (native-inputs + (list python-nose)) + (home-page "https://github.com/arjan-s/python-zipstream") + (synopsis "Zipfile generator that takes input files as well as streams") + (description "@code{zipstream.py} is a zip archive generator based on +@code{zipfile.py}. It was created to generate a zip file generator for +streaming. This is beneficial for when you want to provide a downloadable +archive of a large collection of regular files, which would be infeasible +to generate the archive prior to downloading or of a very large file that +you do not want to store entirely on disk or on memory.") + ;; No copyright headers in the source. The LICENSE file indicates GPL3. + (license license:gpl3))) + +(define-public python-sentry-sdk + (package + (name "python-sentry-sdk") + (version "1.5.1") + (source + (origin + (method git-fetch) ; no tests in PyPI release + (uri (git-reference + (url "https://github.com/getsentry/sentry-python") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "128bm136l5zprr3sqqb8j3d6k5i1fhz853mzvh3w8g0w1dw763mx")))) + (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda* (#:key inputs outputs tests? #:allow-other-keys) + (when tests? + (add-installed-pythonpath inputs outputs) + (invoke "python" "-m" "pytest" "-k" + (string-append + ;; This test requires extra dependencies. + "not test_auto_enabling_integrations" + "_catches_import_error" + ;; Tests below run pip command. + " and not test_unhandled_exception" + " and not test_timeout_error" + " and not test_performance_no_error" + " and not test_performance_error" + " and not test_traces_sampler_gets_correct" + "_values_in_sampling_context" + " and not test_handled_exception" + ;; Tests below require network. + " and not test_crumb_capture" + " and not test_crumb_capture" + " and not test_crumb_capture_hint" + " and not test_httplib_misuse" + ;; Fails with IndexError. + " and not test_session_mode_defaults_to" + "_request_mode_in_wsgi_handler")))))))) + (native-inputs + (list python-django + python-executing + python-gevent + python-jsonschema + python-mock + python-pyrsistent + python-pytest + python-pytest-cov + python-pytest-django + python-pytest-forked + python-pytest-localserver + python-werkzeug)) + (propagated-inputs + (list python-certifi python-urllib3)) + (home-page "https://github.com/getsentry/sentry-python") + (synopsis "Python SDK for Sentry") + (description "This package provides a Python SDK for the Sentry +application monitoring and error tracking software.") + (license license:bsd-2))) + (define-public python-pep8 ;; This package has been renamed to ‘pycodestyle’ and is no longer updated. ;; Its last release (1.7.1) adds only a scary warning to this effect, breaking @@ -10080,6 +10403,14 @@ These should be used in preference to using a backslash for line continuation. (sha256 (base32 "1v0y29xlmbr2q12a4nnpm1dm9aw1mjiys1x8jif4z8c90d63cqm6")))) (build-system python-build-system) + (arguments + '(#:tests? #f ;no tests + #:phases (modify-phases %standard-phases + (add-after 'unpack 'loosen-requirements + (lambda _ + ;; Permit newer versions of attrs. Remove for >0.2. + (substitute* "setup.py" + ((", <21") ""))))))) (propagated-inputs (list python-attrs python-more-itertools)) (home-page "https://github.com/keisheiled/flake8-implicit-str-concat") @@ -10786,6 +11117,40 @@ reading and writing MessagePack data.") (home-page "https://pypi.org/project/msgpack/") (license license:asl2.0))) +;; This msgpack library's name changed from "python-msgpack" to "msgpack" with +;; release 0.5. Some packages like borg still call it by the old name for now. +;; <https://bugs.gnu.org/30662> +(define-public python-msgpack-transitional + (package + (inherit python-msgpack) + (name "python-msgpack-transitional") + (version "0.5.6") + (source (origin + (method url-fetch) + (uri (pypi-uri "msgpack" version)) + (sha256 + (base32 + "1hz2dba1nvvn52afg34liijsm7kn65cmn06dl0xbwld6bb4cis0f")))) + (arguments + (substitute-keyword-arguments (package-arguments python-msgpack) + ((#:phases phases) + `(modify-phases ,phases + (add-after 'unpack 'configure-transitional + (lambda _ + ;; Keep using the old name. + (substitute* "setup.py" + (("TRANSITIONAL = False") + "TRANSITIONAL = 1")) + ;; This old version is not compatible with Python 3.9 + (substitute* '("test/test_buffer.py" "test/test_extension.py") + ((".tostring\\(") ".tobytes(")) + (substitute* '("test/test_buffer.py" "test/test_extension.py") + ((".fromstring\\(") ".frombytes(")) + #t)))))))) + +(define-public python2-msgpack + (package-with-python2 python-msgpack)) + (define-public python-netaddr (package (name "python-netaddr") @@ -11340,6 +11705,35 @@ signature of a file or buffer.") provides a collection of cache libraries in the same API interface.") (license license:bsd-3))) +(define-public python-pylru + (package + (name "python-pylru") + (version "1.2.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "pylru" version)) + (sha256 + (base32 "15yj46307sw703vjfkgnr04dqvaicmfcj0hc6yrciildp55r6bs9")))) + (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda* (#:key inputs outputs tests? #:allow-other-keys) + (when tests? + (add-installed-pythonpath inputs outputs) + (invoke "python" "test.py"))))))) + (home-page "https://github.com/jlhutch/pylru") + (synopsis "Least recently used (LRU) cache implementation") + (description + "Pylru implements a true LRU cache along with several support classes. +Pylru provides a cache class with a simple dict interface. It also provides +classes to wrap any object that has a dict interface with a cache. Both +write-through and write-back semantics are supported. Pylru also provides +classes to wrap functions in a similar way, including a function decorator.") + (license license:gpl2+))) + (define-public python-legacy-api-wrap (package (name "python-legacy-api-wrap") @@ -11979,26 +12373,28 @@ systems, as a command line tool, and as a Python library.") (define-public python-bleach (package (name "python-bleach") - (version "3.1.5") + (version "4.1.0") (source (origin (method url-fetch) (uri (pypi-uri "bleach" version)) (sha256 - (base32 "0jqa8f1ni10cyf4h7sjpf8mbqlcbkyvmsnli77qrxdcxvc7m4k1w")))) + (base32 "1nkibazmw1ry4cfxs9qrkkidxdf2z1hh1b20xq1ahqdsgsrxh009")))) (build-system python-build-system) + (arguments + '(#:phases (modify-phases %standard-phases + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? (invoke "pytest" "-vv"))))))) (propagated-inputs - (list python-webencodings python-six)) + (list python-packaging python-six python-webencodings)) (native-inputs - (list python-datrie python-genshi python-lxml python-pytest)) + (list python-pytest)) (home-page "https://github.com/mozilla/bleach") (synopsis "Whitelist-based HTML-sanitizing tool") (description "Bleach is an easy whitelist-based HTML-sanitizing tool.") (license license:asl2.0))) -(define-public python2-bleach - (package-with-python2 python-bleach)) - (define-public python-entrypoints (package (name "python-entrypoints") @@ -12423,32 +12819,30 @@ Jupyter kernels such as IJulia and IRKernel.") (define-public python-qtconsole (package (name "python-qtconsole") - (version "4.4.3") + (version "4.7.7") (source (origin (method url-fetch) (uri (pypi-uri "qtconsole" version)) (sha256 - (base32 - "1b03n1ixzscm0jw97l4dq5iy4fslnqxq5bb8287xb7n2a1gs26xw")))) + (base32 "013qgpsm8jzcz3prhq7sxs36l8f7fgagmn3xa010gfhxf7cfldpj")))) (build-system python-build-system) (arguments - ;; XXX: Tests are disabled, because this package needs python-ipython 7, - ;; but we only have the LTS version 5.x. This means that there might be - ;; runtime errors, but since this is a dependency of the Jupyter package, - ;; and Jupyter can be used without the qtconsole we can overlook this for - ;; now. - `(#:tests? #f - #:phases + `(#:phases (modify-phases %standard-phases (add-before 'check 'pre-check (lambda _ (setenv "QT_QPA_PLATFORM" "offscreen") - #t))))) + (setenv "HOME" "/tmp") + ;; FIXME: skip a failing test. + (substitute* "qtconsole/tests/test_jupyter_widget.py" + (("def test_other_output") "def _test_other_output"))))))) (propagated-inputs - (list python-ipykernel python-ipython python-pyqt)) + (list python-ipykernel python-ipython-genutils python-jupyter-client + python-jupyter-core python-pygments python-pyqt python-pyzmq + python-qtpy python-traitlets)) (native-inputs - (list python-pytest)) + (list python-flaky python-pytest)) (home-page "https://jupyter.org") (synopsis "Jupyter Qt console") (description "This package provides a Qt-based console for Jupyter with @@ -12828,20 +13222,21 @@ the standard library.") (define-public python-texttable (package (name "python-texttable") - (version "1.6.2") + (version "1.6.4") (source (origin (method url-fetch) (uri (pypi-uri "texttable" version)) (sha256 (base32 - "1x5l77akfc20x52jma9573qp8l8r07q103pm4l0pbizvh4vp1wzg")))) + "1sbn821394rix6xgj3zqk743pj6nqm1qz81zgis2bcpp2ng7pvj2")))) (build-system python-build-system) (arguments `(#:phases (modify-phases %standard-phases (replace 'check - (lambda _ (invoke "pytest" "tests.py")))))) + (lambda* (#:key tests? #:allow-other-keys) + (when tests? (invoke "pytest" "-vv" "tests.py"))))))) (native-inputs (list python-pytest)) (home-page "https://github.com/foutaise/texttable/") @@ -14304,13 +14699,13 @@ ISO 8859, etc.).") (define-public python-anyqt (package (name "python-anyqt") - (version "0.0.11") + (version "0.0.13") (source (origin (method url-fetch) (uri (pypi-uri "AnyQt" version)) (sha256 - (base32 "0gl2czirzjvhbq963i2awxp8kwbc1grh67lpcwfipyn9w3kdwdj4")))) + (base32 "0z7myf0mp1qx4gza6ncqyq9whk67vblmh9n3klk19dv4aakjml2f")))) (build-system python-build-system) (arguments `(#:tests? #f ;there are no tests @@ -14320,8 +14715,7 @@ ISO 8859, etc.).") ;; Delete files related to other operating systems. (lambda _ (delete-file "AnyQt/QtMacExtras.py") - (delete-file "AnyQt/QtWinExtras.py") - #t))))) + (delete-file "AnyQt/QtWinExtras.py")))))) (home-page "https://github.com/ales-erjavec/anyqt") (synopsis "PyQt4/PyQt5 compatibility layer") (description "AnyQt is a PyQt4/PyQt5 compatibility layer.") @@ -14382,7 +14776,7 @@ applications.") (define-public python-qasync (package (name "python-qasync") - (version "0.15.0") + (version "0.22.0") (source (origin ;; There are no tests in the PyPI tarball. @@ -14392,7 +14786,7 @@ applications.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "0va9h6v102d7mxz608banjc0l0v02dq3ywhr5i4nqaxx3qkazc2l")))) + (base32 "1q9cllrwf94whr0f6mipa0hdq1rcyqvklwx19g35g2dav8f3xkjl")))) (build-system python-build-system) (arguments `(#:test-target "pytest" @@ -14400,8 +14794,7 @@ applications.") (modify-phases %standard-phases (add-before 'check 'set-qpa (lambda _ - (setenv "QT_QPA_PLATFORM" "offscreen") - #t))))) + (setenv "QT_QPA_PLATFORM" "offscreen")))))) (native-inputs (list python-pytest python-pytest-runner)) (propagated-inputs @@ -15016,7 +15409,24 @@ development version of CPython that are not available in older releases.") ;; Many tests connect to the network or are otherwise flawed. ;; https://github.com/PythonCharmers/python-future/issues/210 (arguments - `(#:tests? #f)) + `(#:tests? #f + #:phases + (modify-phases %standard-phases + (replace 'sanity-check + (let ((sanity-check (assoc-ref %standard-phases 'sanity-check))) + (lambda* (#:key inputs outputs #:allow-other-keys #:rest args) + (let* ((files (find-files (site-packages inputs outputs) + "top_level\\.txt")) + (backups (map (lambda (f) (string-append f ".bak")) + files))) + (for-each copy-file files backups) + (substitute* files + ;; Nobody be usin' winreg on Guix + ;; Also, don't force users to have tkinter when they don't + ;; need it + (("(winreg|tkinter)") "")) + (apply sanity-check args) + (for-each rename-file backups files)))))))) (home-page "https://python-future.org") (synopsis "Single-source support for Python 3 and 2") (description @@ -15905,10 +16315,13 @@ database, file, dict stores. Cachy supports python versions 2.7+ and 3.2+.") (list python-cachecontrol python-cachy python-cleo - python-clikit + python-crashtest + python-entrypoints python-html5lib python-keyring - python-msgpack + ; Use of deprecated version of msgpack reported upstream: + ; https://github.com/python-poetry/poetry/issues/3607 + python-msgpack-transitional python-packaging python-pexpect python-pip @@ -18234,7 +18647,7 @@ multitouch applications.") (define-public python-isort (package (name "python-isort") - (version "5.7.0") + (version "5.10.1") (source (origin (method git-fetch) @@ -18247,11 +18660,17 @@ multitouch applications.") (snippet '(for-each delete-file (find-files "." "\\.whl$"))) (sha256 (base32 - "0phq4s911mjjdyr5h5siz93jnpkqb2qgphgcfk6axncgxr8i7vi1")))) + "09spgl2k9xrprr5gbpfc91a8p7mx7a0c64ydgc91b3jhrmnd9jg1")))) (build-system python-build-system) (arguments `(#:phases (modify-phases %standard-phases + (add-after 'unpack 'loosen-requirements + (lambda _ + ;; Permit newer versions of black. + (substitute* "example_isort_formatting_plugin/pyproject.toml" + (("\\^20\\.08b1") + ">= 20.08b1")))) ;; A foretaste of what our future python-build-system will need to ;; do. (replace 'build @@ -18268,6 +18687,7 @@ multitouch applications.") (let ((out (assoc-ref outputs "out"))) ;; Patch to use the core poetry API. (substitute* '("example_isort_formatting_plugin/pyproject.toml" + "example_isort_sorting_plugin/pyproject.toml" "example_shared_isort_profile/pyproject.toml") (("poetry>=0.12") "poetry-core>=1.0.0") @@ -18279,6 +18699,7 @@ multitouch applications.") "--no-isolation" "--outdir=dist" source-directory)) '("example_isort_formatting_plugin" + "example_isort_sorting_plugin" "example_shared_isort_profile")) ;; Install them to temporary storage, for the test. (setenv "HOME" (getcwd)) @@ -18292,18 +18713,19 @@ multitouch applications.") (setenv "PATH" (string-append (getenv "PATH") ":" bin))) (add-installed-pythonpath inputs outputs) (invoke "pytest" "-vv" "tests/unit/" + "-k" "not test_gitignore" ;requires git "--ignore=tests/unit/test_deprecated_finders.py"))))))) (native-inputs - `(("git" ,git-minimal) - ("python-black" ,python-black) - ("python-colorama" ,python-colorama) - ("python-hypothesmith" ,python-hypothesmith) - ("python-libcst" ,python-libcst-minimal) - ("python-poetry-core" ,python-poetry-core) - ("python-pylama" ,python-pylama) - ("python-pypa-build" ,python-pypa-build) - ("python-pytest-mock" ,python-pytest-mock) - ("python-pytest" ,python-pytest))) + (list python-black + python-colorama + python-hypothesmith + python-libcst-minimal + python-natsort + python-poetry-core + python-pylama + python-pypa-build + python-pytest-mock + python-pytest)) (home-page "https://github.com/PyCQA/isort") (synopsis "Python utility/library to sort python imports") (description "@code{python-isort} is a python utility/library to sort @@ -18749,6 +19171,19 @@ multitouch applications.") (define-public python2-packaging (package-with-python2 python-packaging)) +;; TODO(staging): merge with python-packaging-bootstrap. +(define-public python-packaging-next + (package + (inherit python-packaging) + (version "21.3") + (source + (origin + (method url-fetch) + (uri (pypi-uri "packaging" version)) + (sha256 + (base32 + "1sygirdrqgv4f1ckh9nhpcw1yfidrh3qjl86wq8vk6nq4wlw8iyx")))))) + (define-public python-relatorio (package (name "python-relatorio") @@ -19211,13 +19646,13 @@ multitouch applications.") (define-public python-validators (package (name "python-validators") - (version "0.14.2") + (version "0.18.2") (source (origin (method url-fetch) (uri (pypi-uri "validators" version)) (sha256 (base32 - "024m15j33szd0v8k5l4ccish6n0b4knq81gmb4fq25ynwyyyd4mi")))) + "19lypf7hm7p203ay3v8zmckc5rv6889zkfdm16nki1972f99mk9p")))) (build-system python-build-system) (arguments '(#:phases (modify-phases %standard-phases @@ -19310,17 +19745,6 @@ multitouch applications.") complex datatypes to and from native Python datatypes.") (license license:expat))) -(define-public python-marshmallow-3.2 - (package - (inherit python-marshmallow) - (version "3.2.1") - (source - (origin - (method url-fetch) - (uri (pypi-uri "marshmallow" version)) - (sha256 - (base32 "1w18klwj0z9bqxj252qpj1hz8l46nl27sbc89rkajc7mln73wbws")))))) - (define-public python-marshmallow-jsonapi (package (name "python-marshmallow-jsonapi") @@ -19333,7 +19757,7 @@ multitouch applications.") (base32 "1d9pxcgmln4gls99vwj1h24qv0lz7fb2jqmqrsiv1pid1snc125x")))) (build-system python-build-system) (propagated-inputs - (list python-marshmallow-3.2)) + (list python-marshmallow)) (native-inputs (list python-faker python-flake8 @@ -19458,26 +19882,24 @@ multitouch applications.") "1b28j265kvibgxrgxx0gwfm6cmv252c8ph1j2vb0cpms8ph5if5v")))) (build-system python-build-system) (arguments - `(#:phases + '(#:phases (modify-phases %standard-phases (add-after 'unpack 'patch-ssh (lambda* (#:key inputs #:allow-other-keys) (substitute* "libcloud/compute/ssh.py" - (("'ssh'") (string-append "'" (assoc-ref inputs "openssh") - "/bin/ssh" "'"))) - #t)) + (("'ssh'") + (string-append "'" (search-input-file inputs "/bin/ssh") + "'"))))) (add-after 'unpack 'patch-tests (lambda _ (substitute* "libcloud/test/compute/test_ssh_client.py" - (("class ShellOutSSHClientTests") + (("^class ShellOutSSHClientTests") "@unittest.skip(\"Guix container doesn't have ssh service\") - class ShellOutSSHClientTests")) - #t)) +class ShellOutSSHClientTests")))) (add-before 'check 'copy-secret (lambda _ (copy-file "libcloud/test/secrets.py-dist" - "libcloud/test/secrets.py") - #t))))) + "libcloud/test/secrets.py")))))) (inputs (list openssh)) (propagated-inputs @@ -19797,14 +20219,13 @@ design and layout.") (define-public python-pkginfo (package (name "python-pkginfo") - (version "1.7.0") + (version "1.8.2") (source - (origin - (method url-fetch) - (uri (pypi-uri "pkginfo" version)) - (sha256 - (base32 - "1d1xn1xmfvz0jr3pj8irdwnwby3r13g0r2gwklr1q5y68p5p16h2")))) + (origin + (method url-fetch) + (uri (pypi-uri "pkginfo" version)) + (sha256 + (base32 "1zrbn2gblb1q1rx0jlbd0vc9h1dm1bj0760p40ff5qjhcw5hsbjl")))) (build-system python-build-system) (arguments `(#:phases @@ -19813,14 +20234,13 @@ design and layout.") (lambda _ (substitute* "pkginfo/tests/test_installed.py" (("test_ctor_w_package_no_PKG_INFO") - "_test_ctor_w_package_no_PKG_INFO")) - #t))))) - (home-page - "https://code.launchpad.net/~tseaver/pkginfo/trunk") - (synopsis - "Query metadatdata from sdists, bdists, and installed packages") + "_test_ctor_w_package_no_PKG_INFO"))))))) + (native-inputs + (list python-wheel)) + (home-page "https://code.launchpad.net/~tseaver/pkginfo/trunk") + (synopsis "Query metadatdata from sdists, bdists, and installed packages") (description - "API to query the distutils metadata written in @file{PKG-INFO} inside a + "API to query the distutils metadata written in @file{PKG-INFO} inside a source distriubtion (an sdist) or a binary distribution (e.g., created by running bdist_egg). It can also query the EGG-INFO directory of an installed distribution, and the *.egg-info stored in a \"development checkout\" (e.g, @@ -19856,9 +20276,6 @@ distributions. It authenticates the user over HTTPS, allows them to pre-sign their files and supports any packaging format (including wheels).") (license license:asl2.0))) -(define-public python2-twine - (package-with-python2 python-twine)) - (define-public python-linecache2 (package (name "python-linecache2") @@ -23292,34 +23709,40 @@ enumeration library in Python.") (define-public python-zeroconf (package (name "python-zeroconf") - (version "0.28.8") + (version "0.38.1") (source (origin - (method url-fetch) - (uri (pypi-uri "zeroconf" version)) + (method git-fetch) ; no tests in PyPI release + (uri (git-reference + (url "https://github.com/jstasiak/python-zeroconf") + (commit version))) + (file-name (git-file-name name version)) (sha256 - (base32 - "0narq8haa3b375vfblbyil77n8bw0wxqnanl91pl0wwwm884mqjb")))) + (base32 "1p1a0ywlg5sq0ilcphmz9h4kayscz0q1lyfk57j7mwxyx4gl9cpi")))) (build-system python-build-system) - (native-inputs - (list python-nose)) - (propagated-inputs - (list python-ifaddr)) (arguments `(#:phases (modify-phases %standard-phases (replace 'check - (lambda _ ;; Networking isn't available for these tests. - (invoke "nosetests" "-v" - "--exclude" "test_integration_with_listener_ipv6" - "--exclude" "test_launch_and_close_v6_only" - "--exclude" "test_launch_and_close_v4_v6" - "--exclude" "test_launch_and_close")))))) + (lambda* (#:key inputs outputs tests? #:allow-other-keys) + (when tests? + (add-installed-pythonpath inputs outputs) + (invoke "python" "-m" "pytest" "-k" + (string-append + ;; Networking isn't available for these tests. + "not test_integration_with_listener_ipv6" + " and not test_launch_and_close_v4_v6" + " and not test_launch_and_close_context_manager" + " and not test_launch_and_close" + " and not test_close_multiple_times")))))))) + (native-inputs + (list python-pytest)) + (propagated-inputs + (list python-ifaddr)) (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).") + (description "Pure Python multicast DNS (mDNS) service discovery library +(Bonjour/Avahi compatible).") (license license:lgpl2.1+))) (define-public python2-zeroconf @@ -24333,23 +24756,24 @@ files. These files are used to translate strings in android apps.") (define-public python-watchdog (package (name "python-watchdog") - (version "0.9.0") + (version "2.1.6") (source - (origin - (method url-fetch) - (uri (pypi-uri "watchdog" version)) - (sha256 - (base32 - "07cnvvlpif7a6cg4rav39zq8fxa5pfqawchr46433pij0y6napwn")))) + (origin + (method url-fetch) + (uri (pypi-uri "watchdog" version)) + (sha256 + (base32 "1rx2nyl0cyj0v4ja795cl3gi26577c5wg48syr3byz3ndkgpavm3")))) (build-system python-build-system) (arguments `(#:phases (modify-phases %standard-phases - (add-before 'check 'remove-failing - (lambda _ - (delete-file "tests/test_inotify_buffer.py") - (delete-file "tests/test_snapshot_diff.py") - #t))))) + (replace 'check + (lambda* (#:key inputs outputs tests? #:allow-other-keys) + (when tests? + (add-installed-pythonpath inputs outputs) + (invoke "python" "-m" "pytest" "-k" + ;; This test failed. + "not test_kill_auto_restart"))))))) (propagated-inputs (list python-argh python-pathtools python-pyyaml)) (native-inputs @@ -24639,14 +25063,14 @@ content models.") (define-public python-xattr (package (name "python-xattr") - (version "0.9.7") + (version "0.9.9") (source (origin (method url-fetch) (uri (pypi-uri "xattr" version)) (sha256 (base32 - "0i4xyiqbhjz2g16zbim17zjdbjkw79xsw8k59942vvq4is1cmfxh")))) + "0ipkfblyvp5hylahjkw9zss1ii9xnwjypr3b3ncv989szcg7xjq9")))) (build-system python-build-system) (propagated-inputs (list python-cffi)) @@ -24705,14 +25129,14 @@ logging in Python. It also provides some custom formatters and handlers.") (define-public python-pifpaf (package (name "python-pifpaf") - (version "2.5.0") + (version "3.1.5") (source (origin (method url-fetch) (uri (pypi-uri "pifpaf" version)) (sha256 (base32 - "1gy9p4nqf70fh38wn4icyfm7i9wrvx22wnjpg71g89wxbz27igaa")))) + "19bdmxldc2m570isl7hbqgbb20si4sin7pi5fw8sv9py8dyv2s4n")))) (build-system python-build-system) (arguments '(#:phases @@ -24728,7 +25152,6 @@ logging in Python. It also provides some custom formatters and handlers.") python-jinja2 python-pbr python-psutil - python-six python-xattr)) (native-inputs (list python-mock python-os-testr python-requests @@ -25273,27 +25696,20 @@ cryptographically signed ones).") (define-public python-dictdiffer (package (name "python-dictdiffer") - (version "0.8.1") + (version "0.9.0") (source (origin (method url-fetch) (uri (pypi-uri "dictdiffer" version)) (sha256 (base32 - "1lk3qmy1hkaphk4n7ayfk0wl6m2yvd6r7qkam6yncqfzgkbc1phs")))) + "0y3mk74qm2q9hsm37892i1wzn8bbdrvbs4nmnvqwq4z6pxgwzfhp")))) (build-system python-build-system) + (arguments + ;; XXX: The PyPI tarball lacks tests and the git repository + ;; fails to determine version. + '(#:tests? #f)) (native-inputs - (list python-check-manifest - python-coverage - python-isort - python-mock - python-pydocstyle - python-pytest-cache - python-pytest-cov - python-pytest-pep8 - python-pytest-runner - python-pytest - python-setuptools-scm - python-tox)) + (list python-pytest-runner python-setuptools-scm)) (home-page "https://github.com/inveniosoftware/dictdiffer") (synopsis "Diff and patch Python dictionary objects") (description @@ -25382,34 +25798,35 @@ intended for validating data coming into Python as JSON, YAML, etc.") (define-public python-cmd2 (package (name "python-cmd2") - (version "1.0.2") + (version "2.3.3") (source (origin (method url-fetch) (uri (pypi-uri "cmd2" version)) (sha256 (base32 - "1f18plbc9yyvhn0js3d2bii9yld8zfl775gxsaw9jza5pmlg9ss2")))) + "0h1naik558qh48gx2iyy0a0khvw5fz0in69y84mbrhsm9nq7w3bm")))) (build-system python-build-system) + (arguments + '(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (if tests? + (invoke "pytest" "-vv" "-k" + ;; These tests fail because no EDITOR is in PATH. + "not test_find_editor_not_specified \ +and not test_transcript") + (format #t "test suite not run~%"))))))) (propagated-inputs (list python-attrs python-colorama python-pyperclip python-wcwidth)) (native-inputs - (list python-codecov - python-coverage - python-doc8 - python-flake8 - python-invoke + (list python-invoke python-mock python-pytest python-pytest-cov python-pytest-mock - python-setuptools-scm - python-sphinx - python-sphinx-autobuild - python-sphinx-rtd-theme - python-tox - python-twine - which)) + python-setuptools-scm)) (home-page "https://github.com/python-cmd2/cmd2") (synopsis "Tool for building interactive command line applications") (description @@ -25591,17 +26008,31 @@ positioning, and keyboard input.") (define-public python-readme-renderer (package (name "python-readme-renderer") - (version "26.0") + (version "32.0") (source (origin (method url-fetch) (uri (pypi-uri "readme_renderer" version)) (sha256 (base32 - "13fnrv7z3y0yfafzcjbl55cqxncvbxadr72ql4l29pgyvrqxpsfb")))) + "11av194kgq6mvp2afpapkb6vyn3y14gingmgsp3n10krlspvw4mm")))) (build-system python-build-system) + (arguments + '(#:phases (modify-phases %standard-phases + (add-after 'unpack 'loosen-cmarkgfm-dependency + (lambda _ + ;; Permit newer versions of cmarkgfm. + (substitute* "setup.py" + (("cmarkgfm>=0\\.5\\.0,<0\\.7\\.0") + "cmarkgfm>=0.5.0")))) + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? (invoke "pytest" "-vv"))))))) (propagated-inputs - (list python-bleach python-docutils python-pygments python-six)) + (list python-bleach python-docutils python-pygments + + ;; Optional dependencies. + python-cmarkgfm)) ;required by postorius (native-inputs (list python-mock python-pytest)) (home-page "https://github.com/pypa/readme_renderer") @@ -27584,13 +28015,13 @@ compatible with a wide range of versions of the Stripe API.") (define-public python-platformdirs (package (name "python-platformdirs") - (version "2.4.0") + (version "2.4.1") (source (origin (method url-fetch) (uri (pypi-uri "platformdirs" version)) (sha256 - (base32 "1whycrymqpsl7nsaknmcybzyh4fg4kqk6vd7zwl28kfhnf05wyin")))) + (base32 "1njz0h4iky8iglrb85cd07hpa3lp1a2dfr934dj65hxwzvfk61j4")))) (build-system python-build-system) (arguments `(#:phases @@ -27986,3 +28417,174 @@ keyboard-friendly package.") "This package auto-generates API documentation from Python projects already existing modules and objects docstrings.") (license license:agpl3+))) + +(define-public python-piexif + (package + (name "python-piexif") + (version "1.1.3") + (source + (origin + (method url-fetch) + (uri (pypi-uri "piexif" version ".zip")) + (sha256 + (base32 "06sz58q4mrw472p8fbnq7wsj8zpi5js5r8phm2hiwfmz0v33bjw3")) + (patches + (search-patches "python-piexif-fix-tests-with-pillow-7.2.patch")))) + (build-system python-build-system) + (native-inputs + (list unzip python-pillow)) + (home-page "https://github.com/hMatoba/Piexif") + (synopsis "Simplify exif manipulations with Python") + (description "Piexif simplifies interacting with EXIF data in +Python. It includes the tools necessary for extracting, creating, +manipulating, converting and writing EXIF data to JPEG, WebP and TIFF files.") + (license license:expat))) + +(define-public python-pyrss2gen + (package + (name "python-pyrss2gen") + (version "1.1") + (source + (origin + (method url-fetch) + (uri (pypi-uri "PyRSS2Gen" version)) + (sha256 + (base32 "1rvf5jw9hknqz02rp1vg8abgb1lpa0bc65l7ylmlillqx7bswq3r")))) + (build-system python-build-system) + (home-page "http://dalkescientific.com/Python/PyRSS2Gen.html") + (synopsis "Generate RSS 2.0 feeds using a Python data structure") + (description "PyRSS2Gen is the interface to generate RSS 2.0 feeds. +PyRSS2Gen builds the feed up by using a XML generator.") + (license license:bsd-3))) + +(define-public python-yapsy + (package + (name "python-yapsy") + (version "1.12.2") + (source + (origin + (method url-fetch) + (uri (pypi-uri "Yapsy" version)) + (sha256 + (base32 "12rznbnswfw0w7qfbvmmffr9r317gl1rqg36nijwzsklkjgks4fq")))) + (build-system python-build-system) + (home-page "http://yapsy.sourceforge.net") + (synopsis "Simple plugin system for Python applications") + (description "Yapsy, or Yet Another Plugin SYstem, is a small library +implementing the core mechanisms needed to build a plugin system into a wider +application. + +The main purpose is to depend only on Python's standard libraries and to +implement only the basic functionalities needed to detect, load and keep track +of several plugins.") + (license license:bsd-3))) + +(define-public python-doit + (package + (name "python-doit") + (version "0.34.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "doit" version)) + (sha256 + (base32 "0bf0m9n0hyjvjpv051zd26725j8jr23gyvc37v3kkadwbh8dxwcf")))) + (build-system python-build-system) + (propagated-inputs + (list python-cloudpickle python-pyinotify)) + (native-inputs + (list python-pytest)) + (home-page "https://pydoit.org") + (synopsis "Automation tool to execute any kind of task in a build-tools +fashion") + (description "doit is an automation tool that brings the power of +build-tools to execute any kind of task. + +A task describes some computation to be done (actions), and contains some +extra meta-data. The actions can be external programs or Python functions. A +single task may define more than one action.doit uses the task’s meta-data +to: + +@itemize +@item cache task results +@item correct execution order +@item parallel execution +@item powerful dependency system +@end itemize") + (license license:expat))) + +(define-public python-phpserialize + (package + (name "python-phpserialize") + (version "1.3") + (source + (origin + (method url-fetch) + (uri (pypi-uri "phpserialize" version)) + (sha256 + (base32 "19qgkb9z4zjbjxlpwh2w6pxkz2j3iymnydi69jl0jg905lqjsrxz")))) + (build-system python-build-system) + (arguments + (list + ;; tests missing in pypi archive, anhow they are quite simple and not worth any hassle + #:tests? #f)) + (home-page "http://github.com/mitsuhiko/phpserialize") + (synopsis "Python port of the serialize and unserialize functions of PHP") + (description + "This package provides a port of the serialize and unserialize functions of PHP for Python") + (license license:bsd-3))) + +(define-public nikola + (package + (name "nikola") + (version "8.1.3") + (source + (origin + (method url-fetch) + (uri (pypi-uri "Nikola" version)) + (sha256 + (base32 "1vspzvi4039zgjc93bspqjb384r6c9ksvmidbp8csws2pdbc7sh5")))) + (build-system python-build-system) + (propagated-inputs + (list python-babel + python-blinker + python-dateutil + python-docutils + python-doit + python-jinja2 ;; for themes + python-lxml + python-mako + python-markdown + python-natsort + python-notebook ;; for ipynb + python-phpserialize ;; for wordpress import + python-piexif + python-pillow + python-pygments + python-pyrss2gen + python-requests + python-ruamel.yaml ;; for YAML metadata + python-unidecode + python-yapsy)) + (native-inputs + (list python-coverage + python-flake8 + python-freezegun + python-pytest + python-pytest-cov)) + (arguments + (list + #:phases + #~(modify-phases %standard-phases + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + ;;(add-installed-pythonpath inputs outputs) + (invoke "pytest" "tests" "--no-cov" + "-k" "not test_compiling_markdown[hilite]"))))))) + (home-page "https://getnikola.com/") + (synopsis "Modular, fast and simple static website and blog generator") + (description "Nikola generates static websites and blogs. Out of the box, +it supports reStructuredText, Markdown, IPython (Jupyter) Notebooks and HTML, +and has plugins for many other formats.") + (license license:expat))) |