diff options
Diffstat (limited to 'gnu/packages/python-xyz.scm')
-rw-r--r-- | gnu/packages/python-xyz.scm | 1124 |
1 files changed, 683 insertions, 441 deletions
diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm index a596b00bbb..a1e7f609df 100644 --- a/gnu/packages/python-xyz.scm +++ b/gnu/packages/python-xyz.scm @@ -63,7 +63,7 @@ ;;; Copyright © 2019, 2020 Alex Griffin <a@ajgrf.com> ;;; Copyright © 2019, 2020, 2021 Pierre Langlois <pierre.langlois@gmx.com> ;;; Copyright © 2019 Jacob MacDonald <jaccarmac@gmail.com> -;;; Copyright © 2019, 2020 Giacomo Leidi <goodoldpaul@autistici.org> +;;; Copyright © 2019, 2020, 2021 Giacomo Leidi <goodoldpaul@autistici.org> ;;; Copyright © 2019 Wiktor Żelazny <wzelazny@vurv.cz> ;;; Copyright © 2019, 2020, 2021 Tanguy Le Carrour <tanguy@bioneland.org> ;;; Copyright © 2019, 2021 Mădălin Ionel Patrașcu <madalinionel.patrascu@mdc-berlin.de> @@ -111,6 +111,7 @@ ;;; Copyright © 2021 Felix Gruber <felgru@posteo.net> ;;; Copyright © 2021 Sébastien Lerique <sl@eauchat.org> ;;; Copyright © 2021 Raphaël Mélotte <raphael.melotte@mind.be> +;;; Copyright © 2021 ZmnSCPxj <ZmnSCPxj@protonmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -142,6 +143,7 @@ #:use-module (gnu packages crypto) #:use-module (gnu packages databases) #:use-module (gnu packages dbm) + #:use-module (gnu packages django) #:use-module (gnu packages djvu) #:use-module (gnu packages docker) #:use-module (gnu packages enchant) @@ -536,6 +538,28 @@ It indexes documents and provides a search interface for retrieving documents that best match text queries.") (license license:expat))) +(define-public python-mrkd + (package + (name "python-mrkd") + (version "0.2.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "mrkd" version)) + (sha256 + (base32 "1bvaqbna1ihb4y2mv9pmvqcq3r9j6lwbbii99dani8lxx4dqqvs5")))) + (build-system python-build-system) + (propagated-inputs + `(("python-jinja2" ,python-jinja2) + ("python-mistune" ,python-mistune) + ("python-pygments" ,python-pygments))) + (home-page "https://pypi.org/project/mrkd/") + (synopsis "Python Markdown implementation") + (description + "@code{mrkd} writes man pages using Markdown, and convert them to Roff or +HTML") + (license license:bsd-3))) + (define-public python-mkdocs (package (name "python-mkdocs") @@ -2939,6 +2963,28 @@ existing ones.") ;; Tests don't work with python2. #:tests? #f))))) +(define-public python-polling2 + (package + (name "python-polling2") + (version "0.5.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "polling2" version)) + (sha256 + (base32 "0hp3238fv6k1qk43gv4jwnv1mwlkmx33akbj560b9nvsry1dmdwh")))) + (build-system python-build-system) + (arguments '(#:tests? #false)) ; no tests included + (native-inputs + `(("python-mock" ,python-mock) + ("python-pytest" ,python-pytest) + ("python-pytest-runner" ,python-pytest-runner))) + (home-page "https://github.com/ddmee/polling2") + (synopsis "Polling utility with many configurable options") + (description "Polling2 is a utility used to wait for a function to return +a certain expected condition.") + (license license:expat))) + (define-public python-poyo (package (name "python-poyo") @@ -4062,14 +4108,14 @@ logging and tracing of the execution.") (define-public python-daemon (package (name "python-daemon") - (version "2.2.3") + (version "2.3.0") (source (origin (method url-fetch) (uri (pypi-uri "python-daemon" version)) (sha256 (base32 - "09fcjdjzk9ywmpnrj62iyxqgcygzdafsz41qlrk2dknzbagcmzmg")))) + "1bxfn2bq56sd4w0nm9mqy8y0905m7fc8vmhnjxlrf49vcbqr7adx")))) (build-system python-build-system) (arguments `(#:phases @@ -4084,9 +4130,11 @@ logging and tracing of the execution.") (propagated-inputs `(("python-lockfile" ,python-lockfile))) (native-inputs - `(("python-unittest2" ,python-unittest2) + `(("python-coverage" ,python-coverage) + ("python-unittest2" ,python-unittest2) ("python-testtools" ,python-testtools) ("python-testscenarios" ,python-testscenarios) + ("python-twine" ,python-twine) ("python-mock" ,python-mock) ("python-docutils" ,python-docutils))) (home-page "https://pagure.io/python-daemon/") @@ -4829,29 +4877,32 @@ which can produce feeds in RSS 2.0, RSS 0.91, and Atom formats.") (define-public python2-feedgenerator (package-with-python2 python-feedgenerator)) -(define-public python-jsonrpc-server +(define-public python-lsp-jsonrpc (package - (name "python-jsonrpc-server") - (version "0.4.0") + (name "python-lsp-jsonrpc") + (version "1.0.0") (source (origin (method url-fetch) - (uri (pypi-uri "python-jsonrpc-server" version)) + (uri (pypi-uri "python-lsp-jsonrpc" version)) (sha256 (base32 - "1585ybn3djvx5r5zbxkzlhz2wb1d47y4wrfwaxdyq0gi87jl7ib2")))) + "1gb0fsamxndhplx25v8m0b3k7aknzy454fpa0qsqsqnv6c3igv3v")))) (build-system python-build-system) - (propagated-inputs + (native-inputs `(("python-mock" ,python-mock) - ("python-pytest" ,python-pytest) - ("python-ujson" ,python-ujson))) - (home-page - "https://github.com/palantir/python-jsonrpc-server") + ("python-pytest" ,python-pytest))) + (propagated-inputs + `(("python-ujson" ,python-ujson))) + (home-page "https://github.com/python-lsp/python-lsp-jsonrpc") (synopsis "JSON RPC 2.0 server library") (description "This package provides a JSON RPC 2.0 server library for Python.") (license license:expat))) +(define-public python-jsonrpc-server + (deprecated-package "python-jsonrpc-server" python-lsp-jsonrpc)) + (define-public python-pydantic (package (name "python-pydantic") @@ -4927,29 +4978,23 @@ errors when data is invalid.") Server (PLS).") (license license:expat))) -(define-public python-language-server +(define-public python-lsp-server (package - (name "python-language-server") - (version "0.36.2") + (name "python-lsp-server") + (version "1.3.1") (source (origin (method url-fetch) - (uri (pypi-uri "python-language-server" version)) + (uri (pypi-uri "python-lsp-server" version)) (sha256 (base32 - "1c0pnk2aibfhfaanrs0a5gkabkvz81gj20z7r0152b7fcx5ci14r")))) + "15075a5irjxh55wcdf25hllz9c42byxc4770cmwgb480k1dm8scq")))) (build-system python-build-system) (arguments `(#:phases (modify-phases %standard-phases - (add-after 'unpack 'relax-deps - (lambda _ - (substitute* "setup.py" (("pycodestyle>=2.6.0,<2.7.0") - "pycodestyle")) - (substitute* "setup.py" (("pyflakes>=2.2.0,<2.3.0") "pyflakes")) - #t)) (add-before 'check 'set-HOME - (lambda _ (setenv "HOME" "/tmp") #t)) + (lambda _ (setenv "HOME" "/tmp"))) (replace 'check (lambda _ ;; Disable failing test. @@ -4962,7 +5007,7 @@ Server (PLS).") ("python-flake8" ,python-flake8) ("python-future" ,python-future) ("python-jedi" ,python-jedi) - ("python-jsonrpc-server" ,python-jsonrpc-server) + ("python-lsp-jsonrpc" ,python-lsp-jsonrpc) ("python-pluggy" ,python-pluggy) ("python-pycodestyle" ,python-pycodestyle) ("python-pyflakes" ,python-pyflakes) @@ -4983,12 +5028,15 @@ Server (PLS).") (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.") +"The Python Language Server @command{pylsp} 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))) +(define-public python-language-server + (deprecated-package "python-language-server" python-lsp-server)) + (define-public python-pathspec (package (name "python-pathspec") @@ -5959,19 +6007,31 @@ parse and apply unified diffs. It has features such as: (define-public python-numpydoc (package (name "python-numpydoc") - (version "0.8.0") + (version "1.1.0") (source (origin (method url-fetch) (uri (pypi-uri "numpydoc" version)) (sha256 (base32 - "1zazxg3m8j4fksv3f7v7vpf4bj9qb1vj3r326am0vdip141vzx31")))) + "13j4fvy2p7lc8sn00sxvs0jb19vicaznfgx4cphv9jgxgz5xcvy3")))) (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda* (#:key tests? inputs outputs #:allow-other-keys) + (when tests? + (add-installed-pythonpath inputs outputs) + (invoke "pytest" "-v" "numpydoc/tests" + ;; TODO: unclear why these fail. + "-k" "not test_MyClass and not test_my_function"))))))) (propagated-inputs `(("python-sphinx" ,python-sphinx))) (native-inputs - `(("python-nose" ,python-nose))) + `(("python-matplotlib" ,python-matplotlib) + ("python-pytest" ,python-pytest) + ("python-pytest-cov" ,python-pytest-cov))) (home-page "https://pypi.org/project/numpydoc/") (synopsis "Numpy's Sphinx extensions") @@ -5984,6 +6044,15 @@ parse and apply unified diffs. It has features such as: (let ((base (package-with-python2 (strip-python2-variant python-numpydoc)))) (package/inherit base + ;; This is the last version to support Python 2 + (version "0.9.1") + (source + (origin + (method url-fetch) + (uri (pypi-uri "numpydoc" version)) + (sha256 + (base32 + "09x6l1a4dcvj7001bvcmcayg1nwqwhaxlwbp6kzj9qrk57lqx3z0")))) (propagated-inputs `(("python2-jinja2" ,python2-jinja2) ,@(package-propagated-inputs base)))))) @@ -7498,10 +7567,21 @@ PNG, PostScript, PDF, and SVG file output.") for the average programmer, and to popularize decorators usage giving examples of useful decorators, such as memoize, tracing, redirecting_stdout, locked, etc. The core of this module is a decorator factory.") - (license license:expat))) + (license license:expat) + (properties `((python2-variant . ,(delay python2-decorator)))))) +;; Version 5 does not support Python 2 (define-public python2-decorator - (package-with-python2 python-decorator)) + (package + (inherit (package-with-python2 + (strip-python2-variant python-decorator))) + (version "4.3.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "decorator" version)) + (sha256 + (base32 "0308djallnh00v112y5b7nadl657ysmkp6vc8xn51d6yzc9zm7n3")))))) (define-public python-drmaa (package @@ -8555,8 +8635,7 @@ callback signature using a prototype function.") (substitute* "IPython/sphinxext/ipython_directive.py" ((".*import datetime") "") ((".*datetime.datetime.now\\(\\)") "") - (("%timeit") "# %timeit")) - #t)) + (("%timeit") "# %timeit")))) ;; Tests can only be run after the library has been installed and not ;; within the source directory. (delete 'check) @@ -8570,8 +8649,7 @@ callback signature using a prototype function.") ;; We only test the core because one of the other tests ;; tries to import ipykernel. (invoke "python" "IPython/testing/iptest.py" - "-v" "IPython/core/tests")) - #t))) + "-v" "IPython/core/tests"))))) (add-before 'check 'fix-tests (lambda* (#:key inputs #:allow-other-keys) (substitute* "./IPython/utils/_process_posix.py" @@ -8586,8 +8664,7 @@ callback signature using a prototype function.") (delete-file "IPython/core/tests/test_interactiveshell.py") ;; AttributeError: module 'matplotlib_inline' has no ;; attribute 'backend_inline' - (delete-file "IPython/core/tests/test_pylabtools.py") - #t))))) + (delete-file "IPython/core/tests/test_pylabtools.py")))))) (home-page "https://ipython.org") (synopsis "IPython is a tool for interactive computing in Python") (description @@ -8794,7 +8871,7 @@ distance between two or more sequences by many algorithms.") (define-public python-urwidtrees (package (name "python-urwidtrees") - (version "1.0.2") + (version "1.0.3") (source (origin (method git-fetch) @@ -8806,11 +8883,10 @@ distance between two or more sequences by many algorithms.") (file-name (git-file-name name version)) (sha256 (base32 - "1n1kpidvkdnsqyb82vlvk78gmly96kh8351lqxn2pzgwwns6fml2")))) + "1y1vysx7jg0vbrarlsykhf7nmr8fc6k1fva1q3i98xq2m30s6r68")))) (build-system python-build-system) (arguments - '(#:use-setuptools? #f - #:tests? #f)) ; no tests + '(#:tests? #f)) ; no tests (propagated-inputs `(("python-urwid" ,python-urwid))) (home-page "https://github.com/pazz/urwidtrees") (synopsis "Tree widgets for urwid") @@ -12484,37 +12560,6 @@ programmatically with command-line parsers like @code{getopt} and (define-public python2-docopt (package-with-python2 python-docopt)) -(define-public python-dotenv - (package - (name "python-dotenv") - (version "0.19.1") - (source - (origin - (method url-fetch) - (uri (pypi-uri "python-dotenv" version)) - (sha256 - (base32 "1f64ni36j5khzhfn01z7f53kg5byrgflm4g6hck6d56lr1f1iy0l")))) - (build-system python-build-system) - (native-inputs - `(("python-ipython" ,python-ipython) - ("python-mock" ,python-mock) - ("python-pytest" ,python-pytest) - ("python-sh" ,python-sh))) - (propagated-inputs - `(("python-click" ,python-click))) - (arguments - `(#:phases - (modify-phases %standard-phases - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (invoke "pytest"))))))) - (home-page "https://github.com/theskumar/python-dotenv") - (synopsis "Environment variables configuration tool") - (description "Python-dotenv reads key-value pairs from a .env file and can -set them as environment variables.") - (license license:bsd-3))) - (define-public python-pythondialog (package (name "python-pythondialog") @@ -12787,13 +12832,13 @@ the construction of PyQt/PySide stylesheets.") (define-public python-click-threading (package (name "python-click-threading") - (version "0.4.4") + (version "0.5.0") (source (origin (method url-fetch) (uri (pypi-uri "click-threading" version)) (sha256 (base32 - "1rsxc2fbkxlhwhlmxsdjzq3spn284l6rvjfcz9mbb17ibgdgmc5j")))) + "0f9lmxwcq0y9lb8w0whbni7gwy12gbv74h1igh85qn9aq0iydkxd")))) (build-system python-build-system) (propagated-inputs `(("python-click" ,python-click))) @@ -14440,6 +14485,53 @@ checking library.") ,python2-backport-ssl-match-hostname) ,@(package-propagated-inputs whoosh)))))) +(define-public python-codespell + (package + (name "python-codespell") + (version "2.1.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "codespell" version)) + (sha256 + (base32 "1r9y714cz8m894rxp7pyvicr1lw2iid24vz6fxbl5wzy8ibgxlqr")))) + (build-system python-build-system) + (inputs + `(("python-chardet" ,python-chardet))) + (native-inputs + `(("python-check-manifest" ,python-check-manifest) + ("python-flake8" ,python-flake8) + ("python-pytest" ,python-pytest) + ("python-pytest-cov" ,python-pytest-cov) + ("python-pytest-dependency" ,python-pytest-dependency))) + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda* (#:key outputs tests? #:allow-other-keys) + (when tests? + ;; Make installed executable available for running the tests. + (setenv "PATH" + (string-append (assoc-ref outputs "out") "/bin" + ":" (getenv "PATH"))) + (invoke "pytest" "-vv"))))))) + (home-page "https://github.com/codespell-project/codespell/") + (synopsis "Spellchecker for code") + (description "Codespell fixes common misspellings in text files. +It's designed primarily for checking misspelled words in source code, +but it can be used with other files as well. It does not check for word +membership in a complete dictionary, but instead looks for a set of +common misspellings. Therefore it should catch errors like \"adn\", but +it will not catch \"adnasdfasdf\". This also means it shouldn't +generate false-positives when you use a niche term it doesn't know +about.") + (license + (list + ; for codespell and codespell_lib + license:gpl2 + ; for dictionary*.txt + license:cc-by-sa3.0)))) + (define-public python-pathlib (package (name "python-pathlib") @@ -16255,80 +16347,47 @@ characters, mouse support, and auto suggestions.") (package-with-python2 python-prompt-toolkit-1)) (define-public python-jedi - ;; The 0.18.0 release tests do not work with Python 3.9.6. Use a more - ;; recent commit. - (let ((commit "1d944943c311b2d71655432f8870d68b2cf7d44b") - (revision "1")) - (package - (name "python-jedi") - (version - (git-version "0.18.0" revision commit)) - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/davidhalter/jedi") - (commit commit))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "052szkbv2pf9hy21any6zb4dhx3c5w1v6b9hn5grlc84zfm350vq")))) - (build-system python-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - (add-after 'unpack 'unpack-submodule-sources - (lambda* (#:key inputs #:allow-other-keys) - (copy-recursively (assoc-ref inputs "python-django-stubs") - "jedi/third_party/django-stubs") - (copy-recursively (assoc-ref inputs "python-typeshed") - "jedi/third_party/typeshed") - #t)) - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (setenv "HOME" "/tmp") - ;; Disable the pytest tests that fail with pytest 6. See: - ;; https://github.com/davidhalter/jedi/issues/1660. - (invoke "pytest" "-vv" "-k" - "not test_completion[pytest")) - #t))))) - (native-inputs - `(("python-pytest" ,python-pytest) - ("python-docopt" ,python-docopt) - ("python-django-stubs" - ,(origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/davidhalter/django-stubs") - (commit "3d2534ea8d8300c4c9db8f18e300355d5fd5488b"))) - (file-name "django-stubs-checkout") - (sha256 - (base32 "1fpvn4lcqkd2q18z29rcnwakm649fccw2k6jik5d64j7p6xns08r")))) - ("python-typeshed" - ,(origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/davidhalter/typeshed") - (commit "ae9d4f4b21bb5e1239816c301da7b1ea904b44c3"))) - (file-name "typeshed-checkout") - (sha256 - (base32 "02xdip4amj0a7z9xph2mj46x1k55bjxl8d0gkpy25575acyx1kjq")))))) - (propagated-inputs - `(("python-parso" ,python-parso))) - (home-page "https://github.com/davidhalter/jedi") - (synopsis "Autocompletion and static analysis library for Python") - (description - "Jedi is a static analysis tool for Python that can be used in Integrated + (package + (name "python-jedi") + (version "0.18.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/davidhalter/jedi") + (commit (string-append "v" version)) + (recursive? #true))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "07drmi3ai49jw5n23ibkambcgijqcw073ihypjgxfnks5lv4yqy1")))) + (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (setenv "HOME" "/tmp") + (invoke "python" "-m" "pytest" "-vv")) + #t))))) + (native-inputs + `(("python-colorama" ,python-colorama) + ("python-docopt" ,python-docopt) + ("python-django" ,python-django-2.2) + ("python-pytest" ,python-pytest))) + (propagated-inputs + `(("python-parso" ,python-parso))) + (home-page "https://github.com/davidhalter/jedi") + (synopsis "Autocompletion and static analysis library for Python") + (description + "Jedi is a static analysis tool for Python that can be used in Integrated Development Environments (@dfn{IDE}s) and text editors. It understands Python on a deeper level than many other static analysis frameworks for Python. -Jedi understands docstrings and you can use Jedi autocompletion in your REPL as -well.") - (license license:expat)))) - -(define-public python2-jedi - (package-with-python2 python-jedi)) +Jedi understands docstrings and you can use Jedi autocompletion in your REPL +as well.") + (license license:expat))) (define-public ptpython (package @@ -16353,9 +16412,9 @@ well.") (synopsis "Python Read-Eval-Print-Loop with nice IDE-like features") (description "ptpython is a Python read-eval-print loop with IDE-like features. -It supports syntax highlighting, multiline editing, autocompletion, mouse, -color schemes, bracketed paste, Vi and Emacs keybindings, Chinese characters -etc.") + It supports syntax highlighting, multiline editing, autocompletion, mouse, + color schemes, bracketed paste, Vi and Emacs keybindings, Chinese characters + etc.") (license license:bsd-3) (properties `((python2-variant . ,(delay ptpython-2)))))) @@ -16405,8 +16464,8 @@ etc.") (synopsis "Command-line interface for Python modules") (description "@code{entrypoint2} is an easy to use command-line interface for Python -modules based on @code{argparse}. It translates function signature and -documentation to argparse configuration.") + modules based on @code{argparse}. It translates function signature and + documentation to argparse configuration.") (license license:bsd-3))) (define-public python-pyvirtualdisplay @@ -16472,8 +16531,8 @@ documentation to argparse configuration.") "Python controller library that allows applications to interact with Tor") (description "Stem is a Python controller library for Tor. With it you can use Tor's -control protocol to script against the Tor process and read descriptor data -relays publish about themselves.") + control protocol to script against the Tor process and read descriptor data + relays publish about themselves.") (license license:lgpl3))) (define-public python-pyserial @@ -16499,8 +16558,8 @@ relays publish about themselves.") "https://github.com/pyserial/pyserial") (synopsis "Python Serial Port Bindings") (description "@code{pyserial} provide serial port bindings for Python. It -supports different byte sizes, stop bits, parity and flow control with RTS/CTS -and/or Xon/Xoff. The port is accessed in RAW mode.") + supports different byte sizes, stop bits, parity and flow control with RTS/CTS + and/or Xon/Xoff. The port is accessed in RAW mode.") (license license:bsd-3))) (define-public python2-pyserial @@ -16521,7 +16580,7 @@ and/or Xon/Xoff. The port is accessed in RAW mode.") (home-page "https://github.com/pyserial/pyserial-asyncio") (synopsis "Pyserial asynchronous I/O extension") (description "This package extends Pyserial with asynchronous I/O -support.") + support.") (license license:bsd-3))) (define-public python-pymodbus @@ -16576,24 +16635,24 @@ support.") (home-page "https://github.com/riptideio/pymodbus/") (synopsis "Modbus protocol stack in Python") (description "Pymodbus is a full Modbus protocol implementation using -@code{asyncio}, @code{tornado} or @code{twisted} for its asynchronous -communications core. It includes the following @emph{client} features: -@itemize -@item full read/write protocol on discrete and register -@item most of the extended protocol (diagnostic/file/pipe/setting/information) -@item TCP, UDP, Serial ASCII, Serial RTU, and Serial Binary -@item asynchronous and synchronous versions -@item payload builder/decoder utilities -@item pymodbus read eval print loop (REPL). -@end itemize -It also includes the following @emph{server} features: -@itemize -@item can function as a fully implemented Modbus server -@item TCP, UDP, Serial ASCII, Serial RTU, and Serial Binary -@item asynchronous and synchronous versions -@item full server control context (device information, counters, etc) -@item a number of backing contexts (database, redis, sqlite, a slave device). -@end itemize") + @code{asyncio}, @code{tornado} or @code{twisted} for its asynchronous + communications core. It includes the following @emph{client} features: + @itemize + @item full read/write protocol on discrete and register + @item most of the extended protocol (diagnostic/file/pipe/setting/information) + @item TCP, UDP, Serial ASCII, Serial RTU, and Serial Binary + @item asynchronous and synchronous versions + @item payload builder/decoder utilities + @item pymodbus read eval print loop (REPL). + @end itemize + It also includes the following @emph{server} features: + @itemize + @item can function as a fully implemented Modbus server + @item TCP, UDP, Serial ASCII, Serial RTU, and Serial Binary + @item asynchronous and synchronous versions + @item full server control context (device information, counters, etc) + @item a number of backing contexts (database, redis, sqlite, a slave device). + @end itemize") (license license:bsd-3))) (define-public python-kivy @@ -16630,7 +16689,7 @@ It also includes the following @emph{server} features: "Multitouch application framework") (description "A software library for rapid development of -hardware-accelerated multitouch applications.") + hardware-accelerated multitouch applications.") (license license:expat))) (define-public python2-kivy @@ -16663,7 +16722,7 @@ hardware-accelerated multitouch applications.") (home-page "https://github.com/audreyr/binaryornot") (synopsis "Package to check if a file is binary or text") (description "Ultra-lightweight pure Python package to check if a file is -binary or text.") + binary or text.") (license license:bsd-3) (properties `((python2-variant . ,(delay python2-binaryornot)))))) @@ -16700,7 +16759,7 @@ binary or text.") (home-page "https://github.com/ReFirmLabs/binwalk") (synopsis "Firmware analysis tool") (description "Binwalk is a tool for analyzing, reverse engineering, and -extracting firmware images") + extracting firmware images") (license license:expat))) (define-public python-binwalk @@ -16731,9 +16790,9 @@ extracting firmware images") (home-page "http://nltk.org/") (synopsis "Natural Language Toolkit") (description "It provides interfaces to over 50 corpora and lexical -resources such as WordNet, along with a suite of text processing libraries -for classification, tokenization, stemming, tagging, parsing, and semantic -reasoning, wrappers for natural language processing libraries.") + resources such as WordNet, along with a suite of text processing libraries + for classification, tokenization, stemming, tagging, parsing, and semantic + reasoning, wrappers for natural language processing libraries.") (license license:asl2.0))) ;; Versions >=3.5 breaks backward-compatibility, @@ -16795,7 +16854,7 @@ reasoning, wrappers for natural language processing libraries.") (synopsis "Python client for Consul") (description "Python client for @url{http://www.consul.io/,Consul}, a tool for service -discovery, monitoring and configuration.") + discovery, monitoring and configuration.") (license license:expat))) (define-public python2-consul @@ -16853,7 +16912,7 @@ discovery, monitoring and configuration.") (home-page "https://github.com/eea/odfpy") (synopsis "Python API and tools to manipulate OpenDocument files") (description "Collection of libraries and utility programs written in -Python to manipulate OpenDocument 1.2 files.") + Python to manipulate OpenDocument 1.2 files.") (license ;; The software is mainly dual GPL2+ and ASL2.0, but includes a ;; number of files with other licenses. @@ -16890,13 +16949,13 @@ Python to manipulate OpenDocument 1.2 files.") (synopsis "Natural sorting for python and shell") (description "Natsort lets you apply natural sorting on lists instead of -lexicographical. If you use the built-in @code{sorted} method in python -on a list such as @code{[@code{a20}, @code{a9}, @code{a1}, @code{a4}, -@code{a10}]}, it would be returned as @code{[@code{a1}, @code{a10}, @code{a20}, -@code{a4}, @code{a9}]}. Natsort provides a function @code{natsorted} that -identifies numbers and sorts them separately from strings. It can also sort -version numbers, real numbers, mixed types and more, and comes with a shell -command @command{natsort} that exposes this functionality in the command line.") + lexicographical. If you use the built-in @code{sorted} method in python + on a list such as @code{[@code{a20}, @code{a9}, @code{a1}, @code{a4}, + @code{a10}]}, it would be returned as @code{[@code{a1}, @code{a10}, @code{a20}, + @code{a4}, @code{a9}]}. Natsort provides a function @code{natsorted} that + identifies numbers and sorts them separately from strings. It can also sort + version numbers, real numbers, mixed types and more, and comes with a shell + command @command{natsort} that exposes this functionality in the command line.") (license license:expat))) (define-public glances @@ -16928,8 +16987,8 @@ command @command{natsort} that exposes this functionality in the command line.") (synopsis "Cross-platform curses-based monitoring tool") (description "Glances is a curses-based monitoring tool for a wide variety of platforms. -Glances uses the PsUtil library to get information from your system. It -monitors CPU, load, memory, network bandwidth, disk I/O, disk use, and more.") + Glances uses the PsUtil library to get information from your system. It + monitors CPU, load, memory, network bandwidth, disk I/O, disk use, and more.") (license license:lgpl3+))) (define-public python-graphql-core @@ -16964,9 +17023,9 @@ monitors CPU, load, memory, network bandwidth, disk I/O, disk use, and more.") (synopsis "GraphQL implementation for Python") (description "GraphQL implementation for Python. GraphQL is a data query language and -runtime designed and used to request and deliver data to mobile and web apps. -This library is a port of @url{https://github.com/graphql/graphql-js,graphql-js} -to Python.") + runtime designed and used to request and deliver data to mobile and web apps. + This library is a port of @url{https://github.com/graphql/graphql-js,graphql-js} + to Python.") (license license:expat))) (define-public python-graphql-relay @@ -16998,10 +17057,10 @@ to Python.") (synopsis "Relay implementation for Python") (description "This is a library to allow the easy creation of Relay-compliant servers -using the GraphQL Python reference implementation of a GraphQL server. It -should be noted that the code is a exact port of the original -@url{https://github.com/graphql/graphql-relay-js,graphql-relay js implementation} -from Facebook.") + using the GraphQL Python reference implementation of a GraphQL server. It + should be noted that the code is a exact port of the original + @url{https://github.com/graphql/graphql-relay-js,graphql-relay js implementation} + from Facebook.") (license license:expat))) (define-public python-graphene @@ -17028,8 +17087,8 @@ from Facebook.") (synopsis "GraphQL Framework for Python") (description "Graphene is a Python library for building GraphQL schemas/types. -A GraphQL schema describes your data model, and provides a GraphQL server -with an associated set of resolve methods that know how to fetch data.") + A GraphQL schema describes your data model, and provides a GraphQL server + with an associated set of resolve methods that know how to fetch data.") (license license:expat))) (define-public python-random2 @@ -17050,13 +17109,13 @@ with an associated set of resolve methods that know how to fetch data.") (synopsis "Python 3 version of the Python 2 @code{random} module") (description "This package provides a Python 3 ported version of Python 2.7’s -@code{random} module. It has also been back-ported to work in Python 2.6. + @code{random} module. It has also been back-ported to work in Python 2.6. -In Python 3, the implementation of @code{randrange()} was changed, so that -even with the same seed you get different sequences in Python 2 and 3. + In Python 3, the implementation of @code{randrange()} was changed, so that + even with the same seed you get different sequences in Python 2 and 3. -This package closes that gap, allowing stable random number generation -between the different Python versions.") + This package closes that gap, allowing stable random number generation + between the different Python versions.") (license license:psfl))) (define-public python2-random2 @@ -17079,8 +17138,8 @@ between the different Python versions.") (home-page "https://github.com/shibukawa/snowball_py") (synopsis "Snowball stemming library collection for Python") (description "This package provides 16 word stemmer algorithms generated -from Snowball algorithms. It includes the 15 original ones plus the Poerter -English stemmer.") + from Snowball algorithms. It includes the 15 original ones plus the Poerter + English stemmer.") (license license:bsd-3))) (define-public python2-snowballstemmer @@ -17128,12 +17187,12 @@ English stemmer.") (synopsis "Setproctitle implementation for Python to customize the process title") (description "The library allows a process to change its title (as displayed -by system tools such as ps and top). + by system tools such as ps and top). -Changing the title is mostly useful in multi-process systems, for -example when a master process is forked: changing the children's title -allows identifying the task each process is busy with. The technique -is used by PostgreSQL and the OpenSSH Server for example.") + Changing the title is mostly useful in multi-process systems, for + example when a master process is forked: changing the children's title + allows identifying the task each process is busy with. The technique + is used by PostgreSQL and the OpenSSH Server for example.") (license license:bsd-3) (properties `((python2-variant . ,(delay python2-setproctitle)))))) @@ -17175,9 +17234,9 @@ is used by PostgreSQL and the OpenSSH Server for example.") (synopsis "General purpose Python data validator") (description "It allows validation of arbitrary Python data structures. -The schema format is based on the JSON Schema -proposal (http://json-schema.org), so combined with json the library is also -useful as a validator for JSON data.") + The schema format is based on the JSON Schema + proposal (http://json-schema.org), so combined with json the library is also + useful as a validator for JSON data.") (license license:expat))) (define-public python2-validictory @@ -17200,9 +17259,9 @@ useful as a validator for JSON data.") (synopsis "Analyze binary and library file information") (description "This Python library provides interfaces for parsing and -analyzing two binary and library file formats; the Executable and Linking -Format (ELF), and debugging information in the Debugging With Attributed -Record Format (DWARF).") + analyzing two binary and library file formats ; the Executable and Linking + Format (ELF), and debugging information in the Debugging With Attributed + Record Format (DWARF).") (license license:public-domain))) (define-public python-pyev @@ -17253,7 +17312,7 @@ Record Format (DWARF).") (synopsis "Gets image size of files in various formats in Python") (description "This package allows determination of image size from -PNG, JPEG, JPEG2000 and GIF files in pure Python.") + PNG, JPEG, JPEG2000 and GIF files in pure Python.") (license license:expat))) (define-public python2-imagesize @@ -17306,10 +17365,10 @@ PNG, JPEG, JPEG2000 and GIF files in pure Python.") (home-page "https://github.com/kislyuk/argcomplete") (synopsis "Shell tab completion for Python argparse") (description "argcomplete provides extensible command line tab completion -of arguments and options for Python scripts using @code{argparse}. It's -particularly useful for programs with many options or sub-parsers that can -dynamically suggest completions; for example, when browsing resources over the -network.") + of arguments and options for Python scripts using @code{argparse}. It's + particularly useful for programs with many options or sub-parsers that can + dynamically suggest completions ; for example, when browsing resources over the + network.") (license license:asl2.0) (properties `((python2-variant . ,(delay python2-argcomplete)))))) @@ -17374,7 +17433,7 @@ network.") (home-page "http://opensource.perlig.de/rcssmin/") (synopsis "CSS Minifier") (description "The minifier is based on the semantics of the YUI compressor, -which itself is based on the rule list by Isaac Schlueter.") + which itself is based on the rule list by Isaac Schlueter.") (license license:asl2.0))) (define-public python-rjsmin @@ -17409,9 +17468,9 @@ which itself is based on the rule list by Isaac Schlueter.") (home-page "http://opensource.perlig.de/rjsmin/") (synopsis "Javascript Minifier") (description "@code{rJSmin} is a javascript minifier written in Python. The -minifier is based on the semantics of jsmin.c by Douglas Crockford. The module -is a re-implementation aiming for speed, so it can be used at runtime (rather -than during a preprocessing step).") + minifier is based on the semantics of jsmin.c by Douglas Crockford. The module + is a re-implementation aiming for speed, so it can be used at runtime (rather + than during a preprocessing step).") (license license:asl2.0))) (define-public python-xopen @@ -17431,10 +17490,10 @@ than during a preprocessing step).") (home-page "https://github.com/marcelm/xopen/") (synopsis "Open compressed files transparently") (description "This module provides an @code{xopen} function that works like -Python's built-in @code{open} function, but can also deal with compressed files. -Supported compression formats are gzip, bzip2 and, xz, and are automatically -recognized by their file extensions. The focus is on being as efficient as -possible on all supported Python versions.") + Python's built-in @code{open} function, but can also deal with compressed files. + Supported compression formats are gzip, bzip2 and, xz, and are automatically + recognized by their file extensions. The focus is on being as efficient as + possible on all supported Python versions.") (license license:expat))) (define-public python2-xopen @@ -17481,29 +17540,29 @@ possible on all supported Python versions.") (home-page "https://cheetahtemplate.org/") (synopsis "Template engine") (description "Cheetah is a text-based template engine and Python code -generator. - -Cheetah can be used as a standalone templating utility or referenced as -a library from other Python applications. It has many potential uses, -but web developers looking for a viable alternative to ASP, JSP, PHP and -PSP are expected to be its principle user group. - -Features: -@enumerate -@item Generates HTML, SGML, XML, SQL, Postscript, form email, LaTeX, or any other - text-based format. -@item Cleanly separates content, graphic design, and program code. -@item Blends the power and flexibility of Python with a simple template language - that non-programmers can understand. -@item Gives template writers full access to any Python data structure, module, - function, object, or method in their templates. -@item Makes code reuse easy by providing an object-orientated interface to - templates that is accessible from Python code or other Cheetah templates. - One template can subclass another and selectively reimplement sections of it. -@item Provides a simple, yet powerful, caching mechanism that can dramatically - improve the performance of a dynamic website. -@item Compiles templates into optimized, yet readable, Python code. -@end enumerate") + generator. + + Cheetah can be used as a standalone templating utility or referenced as + a library from other Python applications. It has many potential uses, + but web developers looking for a viable alternative to ASP, JSP, PHP and + PSP are expected to be its principle user group. + + Features: + @enumerate + @item Generates HTML, SGML, XML, SQL, Postscript, form email, LaTeX, or any other + text-based format. + @item Cleanly separates content, graphic design, and program code. + @item Blends the power and flexibility of Python with a simple template language + that non-programmers can understand. + @item Gives template writers full access to any Python data structure, module, + function, object, or method in their templates. + @item Makes code reuse easy by providing an object-orientated interface to + templates that is accessible from Python code or other Cheetah templates. + One template can subclass another and selectively reimplement sections of it. + @item Provides a simple, yet powerful, caching mechanism that can dramatically + improve the performance of a dynamic website. + @item Compiles templates into optimized, yet readable, Python code. + @end enumerate") (license (license:x11-style "file://LICENSE")))) (define-public python2-cheetah @@ -17550,7 +17609,7 @@ Features: (home-page "https://www.dulwich.io/") (synopsis "Git implementation in Python") (description "Dulwich is an implementation of the Git file formats and -protocols written in pure Python.") + protocols written in pure Python.") ;; Can be used with either license. (license (list license:asl2.0 license:gpl2+)))) @@ -17577,13 +17636,13 @@ protocols written in pure Python.") (home-page "https://www.dlitz.net/software/python-pbkdf2/") (synopsis "Password-based key derivation") (description "This module implements the password-based key derivation -function, PBKDF2, specified in RSA PKCS#5 v2.0. + function, PBKDF2, specified in RSA PKCS#5 v2.0. -PKCS#5 v2.0 Password-Based Key Derivation is a key derivation function which -is part of the RSA Public Key Cryptography Standards series. The provided -implementation takes a password or a passphrase and a salt value (and -optionally a iteration count, a digest module, and a MAC module) and provides -a file-like object from which an arbitrarily-sized key can be read.") + PKCS#5 v2.0 Password-Based Key Derivation is a key derivation function which + is part of the RSA Public Key Cryptography Standards series. The provided + implementation takes a password or a passphrase and a salt value (and + optionally a iteration count, a digest module, and a MAC module) and provides + a file-like object from which an arbitrarily-sized key can be read.") (license license:expat))) (define-public python2-pbkdf2 @@ -17610,12 +17669,12 @@ a file-like object from which an arbitrarily-sized key can be read.") (home-page "https://github.com/lincolnloop/python-qrcode") (synopsis "QR Code image generator") (description "This package provides a pure Python QR Code generator -module. It uses the Python Imaging Library (PIL) to allow for the generation -of QR Codes. + module. It uses the Python Imaging Library (PIL) to allow for the generation + of QR Codes. -In addition this package provides a command line tool to generate QR codes and -either write these QR codes to a file or do the output as ascii art at the -console.") + In addition this package provides a command line tool to generate QR codes and + either write these QR codes to a file or do the output as ascii art at the + console.") (license license:bsd-3))) (define-public python2-qrcode @@ -17639,7 +17698,7 @@ console.") (synopsis "Convert RST to ANSI-decorated console output") (description "Python module dedicated to rendering RST (reStructuredText) documents -to ansi-escaped strings suitable for display in a terminal.") + to ansi-escaped strings suitable for display in a terminal.") (license license:expat))) (define-public python-ansi2html @@ -17663,7 +17722,7 @@ to ansi-escaped strings suitable for display in a terminal.") (synopsis "Convert ANSI-decorated console output to HTML") (description "@command{ansi2html} is a Python library and command line utility for -converting text with ANSI color codes to HTML or LaTeX.") + converting text with ANSI color codes to HTML or LaTeX.") (license license:gpl3+))) (define-public python2-ansi2html @@ -17687,10 +17746,10 @@ converting text with ANSI color codes to HTML or LaTeX.") (synopsis "Terminal framework API") (description "Easy ANSI is a terminal framework API to give you an easy way to use -colors, cursor control movements, and line/box drawing. It is not meant as a -replacement to more full-featured frameworks (such as curses or urwid), but as -a tool to quickly create nice-looking screens in your terminal window. You -can even create animations with the cursor controls.") + colors, cursor control movements, and line/box drawing. It is not meant as a + replacement to more full-featured frameworks (such as curses or urwid), but as + a tool to quickly create nice-looking screens in your terminal window. You + can even create animations with the cursor controls.") (license license:expat))) (define-public python-ddt @@ -17713,8 +17772,8 @@ can even create animations with the cursor controls.") (synopsis "Data-Driven Tests") (description "Data-Driven Tests (@dfn{DDT}) allow you to multiply one test case by -running it with different test data, and make it appear as multiple test -cases.") + running it with different test data, and make it appear as multiple test + cases.") (license license:expat))) (define-public python-pycountry @@ -17733,16 +17792,16 @@ cases.") (synopsis "ISO databases for languages, countries, currencies, etc.") (description "@code{pycountry} provides the ISO databases for the standards: -@enumerate -@item 639-3 (Languages) -@item 3166 (Countries) -@item 3166-3 (Deleted Countries) -@item 3166-2 (Subdivisions of countries) -@item 4217 (Currencies) -@item 15924 (Scripts) -@end enumerate -It includes a copy from Debian’s pkg-isocodes and makes the data accessible -through a Python API.") + @enumerate + @item 639-3 (Languages) + @item 3166 (Countries) + @item 3166-3 (Deleted Countries) + @item 3166-2 (Subdivisions of countries) + @item 4217 (Currencies) + @item 15924 (Scripts) + @end enumerate + It includes a copy from Debian’s pkg-isocodes and makes the data accessible + through a Python API.") (license license:lgpl2.1+))) (define-public python2-pycountry @@ -17767,9 +17826,9 @@ through a Python API.") (synopsis "Bindings to picosat (a SAT solver)") (description "This package provides efficient Python bindings to @code{picosat} on -the C level. When importing pycosat, the @code{picosat} solver becomes part -of the Python process itself. @code{picosat} is a @dfn{Boolean Satisfiability -Problem} (SAT) solver.") + the C level. When importing pycosat, the @code{picosat} solver becomes part + of the Python process itself. @code{picosat} is a @dfn{Boolean Satisfiability + Problem} (SAT) solver.") (license license:expat))) (define-public python2-pycosat @@ -17800,13 +17859,13 @@ Problem} (SAT) solver.") (synopsis "Version of dict that keeps keys in insertion order") (description "This is an implementation of an ordered dictionary with @dfn{Key -Insertion Order} (KIO: updates of values do not affect the position of the -key), @dfn{Key Value Insertion Order} (KVIO, an existing key's position is -removed and put at the back). The standard library module @code{OrderedDict}, -implemented later, implements a subset of @code{ordereddict} functionality. -Sorted dictionaries are also provided. Currently only with @dfn{Key Sorted -Order} (KSO, no sorting function can be specified, but a transform can be -specified to apply on the key before comparison (e.g. @code{string.lower})).") + Insertion Order} (KIO: updates of values do not affect the position of the + key), @dfn{Key Value Insertion Order} (KVIO, an existing key's position is + removed and put at the back). The standard library module @code{OrderedDict}, + implemented later, implements a subset of @code{ordereddict} functionality. + Sorted dictionaries are also provided. Currently only with @dfn{Key Sorted + Order} (KSO, no sorting function can be specified, but a transform can be + specified to apply on the key before comparison (e.g. @code{string.lower})).") (license license:expat))) (define-public python-pypeg2 @@ -17828,8 +17887,8 @@ specified to apply on the key before comparison (e.g. @code{string.lower})).") (home-page "https://fdik.org/pyPEG/") (synopsis "Parsing Expression Grammars in Python") (description "PyPEG is an intrinsic parser interpreter framework for -Python. It is based on Parsing Expression Grammars, PEG. With pyPEG you can -parse many formal languages.") + Python. It is based on Parsing Expression Grammars, PEG. With pyPEG you can + parse many formal languages.") (license license:gpl2))) (define-public python-incremental @@ -17847,7 +17906,7 @@ parse many formal languages.") (home-page "https://github.com/hawkowl/incremental") (synopsis "Library for versioning Python projects") (description "Incremental is a small library that versions your Python -projects.") + projects.") (license license:expat))) (define-public python2-incremental @@ -17884,9 +17943,9 @@ projects.") (synopsis "Pythonic task execution") (description "Invoke is a Python task execution tool and library, drawing inspiration -from various sources to arrive at a powerful and clean feature set. It is -evolved from the Fabric project, but focuses on local and abstract concerns -instead of servers and network commands.") + from various sources to arrive at a powerful and clean feature set. It is + evolved from the Fabric project, but focuses on local and abstract concerns + instead of servers and network commands.") (license license:bsd-3))) (define-public python2-invoke @@ -17936,8 +17995,8 @@ instead of servers and network commands.") (home-page "https://github.com/glyph/Automat") (synopsis "Self-service finite-state machines") (description "Automat is a library for concise, idiomatic Python -expression of finite-state automata (particularly deterministic finite-state -transducers).") + expression of finite-state automata (particularly deterministic finite-state + transducers).") (license license:expat))) (define-public python2-automat @@ -17963,7 +18022,7 @@ transducers).") (home-page "https://github.com/miyakogi/m2r") (synopsis "Markdown to reStructuredText converter") (description "M2R converts a markdown file including reST markups to valid -reST format.") + reST format.") (license license:expat))) (define-public python2-m2r @@ -17983,8 +18042,8 @@ reST format.") (home-page "https://github.com/twisted/constantly") (synopsis "Symbolic constants in Python") (description "Constantly is a Python library that provides symbolic -constant support. It includes collections and constants with text, numeric, -and bit flag values.") + constant support. It includes collections and constants with text, numeric, + and bit flag values.") (license license:expat))) (define-public python2-constantly @@ -18016,8 +18075,8 @@ and bit flag values.") (home-page "https://github.com/python-attrs/attrs/") (synopsis "Attributes without boilerplate") (description "@code{attrs} is a Python package with class decorators that -ease the chores of implementing the most common attribute-related object -protocols.") + ease the chores of implementing the most common attribute-related object + protocols.") (license license:expat))) (define-public python2-attrs @@ -18059,8 +18118,8 @@ protocols.") (home-page "https://liw.fi/cliapp/") (synopsis "Python framework for command line programs") (description "@code{cliapp} is a Python framework for command line -programs. It contains the typical stuff such programs need to do, such -as parsing the command line for options, and iterating over input files.") + programs. It contains the typical stuff such programs need to do, such + as parsing the command line for options, and iterating over input files.") (license license:gpl2+))) (define-public python2-cliapp @@ -18095,11 +18154,11 @@ as parsing the command line for options, and iterating over input files.") (lambda _ (invoke "make" "check")))))) (home-page "https://liw.fi/ttystatus/") (synopsis "Python library for showing progress reporting and -status updates on terminals") + status updates on terminals") (description "@code{ttystatus} is a Python library for showing progress -reporting and status updates on terminals, for command line programs. -Output is automatically adapted to the width of the terminal: truncated -if it does not fit, and resized if the terminal size changes.") + reporting and status updates on terminals, for command line programs. + Output is automatically adapted to the width of the terminal: truncated + if it does not fit, and resized if the terminal size changes.") (license license:gpl3+))) (define-public python2-ttystatus @@ -18124,11 +18183,11 @@ if it does not fit, and resized if the terminal size changes.") (home-page "https://liw.fi/tracing/") (synopsis "Python debug logging helper") (description "@code{python2-tracing} is a python library for -logging debug messages. It provides a way to turn debugging messages -on and off, based on the filename they occur in. It is much faster -than using @code{logging.Filter} to accomplish the same thing, which -matters when code is run in production mode. The actual logging still -happens using the @code{logging} library.") + logging debug messages. It provides a way to turn debugging messages + on and off, based on the filename they occur in. It is much faster + than using @code{logging.Filter} to accomplish the same thing, which + matters when code is run in production mode. The actual logging still + happens using the @code{logging} library.") (license license:gpl3+))) (define-public python-astroid @@ -18153,16 +18212,16 @@ happens using the @code{logging} library.") ("python-pytest-runner" ,python-pytest-runner))) (home-page "https://github.com/PyCQA/astroid") (synopsis "Common base representation of python source code for pylint and -other projects") + other projects") (description "@code{python-astroid} provides a common base representation -of python source code for projects such as pychecker, pyreverse, pylint, etc. - -It provides a compatible representation which comes from the _ast module. It -rebuilds the tree generated by the builtin _ast module by recursively walking -down the AST and building an extended ast. The new node classes have -additional methods and attributes for different usages. They include some -support for static inference and local name scopes. Furthermore, astroid -builds partial trees by inspecting living objects.") + of python source code for projects such as pychecker, pyreverse, pylint, etc. + + It provides a compatible representation which comes from the _ast module. It + rebuilds the tree generated by the builtin _ast module by recursively walking + down the AST and building an extended ast. The new node classes have + additional methods and attributes for different usages. They include some + support for static inference and local name scopes. Furthermore, astroid + builds partial trees by inspecting living objects.") (license license:lgpl2.1+) (properties `((python2-variant . ,(delay python2-astroid)))))) @@ -18218,9 +18277,9 @@ builds partial trees by inspecting living objects.") (home-page "https://github.com/xlcnd/isbnlib") (synopsis "Python library to work with ISBN strings") (description "@code{python-isbnlib} is a (pure) python library that provides -several useful methods and functions to validate, clean, transform, hyphenate and -get metadata for ISBN strings. Its origin was as the core of isbntools. This short -version, is suitable to be include as a dependency in other projects.") + several useful methods and functions to validate, clean, transform, hyphenate and + get metadata for ISBN strings. Its origin was as the core of isbntools. This short + version, is suitable to be include as a dependency in other projects.") (license license:lgpl3+))) (define-public python-isort @@ -18299,9 +18358,9 @@ version, is suitable to be include as a dependency in other projects.") (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 -imports alphabetically, and automatically separated into sections. It -provides a command line utility, a python library and plugins for various -editors.") + imports alphabetically, and automatically separated into sections. It + provides a command line utility, a python library and plugins for various + editors.") (license license:expat) (properties `((python2-variant . ,(delay python2-isort)))))) @@ -18333,7 +18392,7 @@ editors.") (home-page "https://github.com/jaraco/backports.functools_lru_cache") (synopsis "Backport of functools.lru_cache from Python 3.3") (description "@code{python2-backports-functools-lru-cache} is a backport -of @code{functools.lru_cache} from python 3.3.") + of @code{functools.lru_cache} from python 3.3.") (license license:expat))) (define-public python-configparser @@ -18353,8 +18412,8 @@ of @code{functools.lru_cache} from python 3.3.") (home-page "https://github.com/jaraco/configparser/") (synopsis "Backport of configparser from python 3.5") (description "@code{python-configparser} is a backport of -@code{configparser} from Python 3.5 so that it can be used directly -in other versions.") + @code{configparser} from Python 3.5 so that it can be used directly + in other versions.") (license license:expat))) (define-public python2-configparser @@ -18375,14 +18434,14 @@ in other versions.") (home-page "https://github.com/RonnyPfannschmidt/iniconfig") (synopsis "Simple INI-file parser") (description "The @code{iniconfig} package provides a small and simple -INI-file parser module having a unique set of features; @code{iniconfig} -@itemize -@item maintains the order of sections and entries; -@item supports multi-line values with or without line-continuations; -@item supports \"#\" comments everywhere; -@item raises errors with proper line-numbers; -@item raises an error when two sections have the same name. -@end itemize") + INI-file parser module having a unique set of features ; @code{iniconfig} + @itemize + @item maintains the order of sections and entries ; + @item supports multi-line values with or without line-continuations ; + @item supports \"#\" comments everywhere ; + @item raises errors with proper line-numbers ; + @item raises an error when two sections have the same name. + @end itemize") (license license:expat))) (define-public python-mamba @@ -18404,7 +18463,7 @@ INI-file parser module having a unique set of features; @code{iniconfig} (synopsis "Test runner for Python") (description "Mamba is a Behaviour-Driven Development tool for Python developers. -Is heavily influenced from RSpec, Mocha, Jasmine or Ginkgo.") + Is heavily influenced from RSpec, Mocha, Jasmine or Ginkgo.") (license license:expat))) (define-public python-mando @@ -18428,7 +18487,7 @@ Is heavily influenced from RSpec, Mocha, Jasmine or Ginkgo.") "Wrapper around argparse, allowing creation of complete CLI applications") (description "This package is a wrapper around argparse, allowing you to write complete CLI -applications in seconds while maintaining all the flexibility.") + applications in seconds while maintaining all the flexibility.") (license license:expat))) (define-public python2-mando @@ -18452,7 +18511,7 @@ applications in seconds while maintaining all the flexibility.") (synopsis "Python command-line parsing library") (description "This package is mostly for people who want to have @code{argparse} on -older Pythons because it was not part of the standard library back then.") + older Pythons because it was not part of the standard library back then.") (license license:psfl))) (define-public python-mwclient @@ -18511,7 +18570,7 @@ older Pythons because it was not part of the standard library back then.") (synopsis "Convenient utilities not included with the standard Python install") (description "Python Utils is a collection of small Python functions and classes which -make common patterns shorter and easier.") + make common patterns shorter and easier.") (license license:bsd-2))) (define-public python-diff-match-patch @@ -18529,7 +18588,7 @@ make common patterns shorter and easier.") (home-page "https://code.google.com/p/google-diff-match-patch") (synopsis "Synchronize plain text") (description "Diff Match and Patch libraries offer robust algorithms to -perform the operations required for synchronizing plain text.") + perform the operations required for synchronizing plain text.") (license license:asl2.0))) (define-public python2-diff-match-patch @@ -18573,13 +18632,13 @@ perform the operations required for synchronizing plain text.") (synopsis "Fast computation of Levenshtein distance and string similarity") (description "The Levenshtein Python C extension module contains functions for fast computation of -@enumerate -@item Levenshtein (edit) distance, and edit operations -@item string similarity -@item approximate median strings, and generally string averaging -@item string sequence and set similarity -@end enumerate -It supports both normal and Unicode strings.") + @enumerate + @item Levenshtein (edit) distance, and edit operations + @item string similarity + @item approximate median strings, and generally string averaging + @item string sequence and set similarity + @end enumerate + It supports both normal and Unicode strings.") (license license:gpl2+))) (define-public python2-levenshtein @@ -18605,12 +18664,12 @@ It supports both normal and Unicode strings.") (synopsis "Directory iteration function") (description "Directory iteration function like os.listdir(), except that instead of -returning a list of bare filenames, it yields DirEntry objects that include -file type and stat information along with the name. Using scandir() increases -the speed of os.walk() by 2-20 times (depending on the platform and file -system) by avoiding unnecessary calls to os.stat() in most cases. + returning a list of bare filenames, it yields DirEntry objects that include + file type and stat information along with the name. Using scandir() increases + the speed of os.walk() by 2-20 times (depending on the platform and file + system) by avoiding unnecessary calls to os.stat() in most cases. -This package is part of the Python standard library since version 3.5.") + This package is part of the Python standard library since version 3.5.") (license license:bsd-3))) (define-public python2-scandir @@ -18633,10 +18692,10 @@ This package is part of the Python standard library since version 3.5.") (synopsis "Python implementations of various stemming algorithms") (description "Python implementations of the Porter, Porter2, Paice-Husk, and Lovins -stemming algorithms for English. These implementations are straightforward and -efficient, unlike some Python versions of the same algorithms available on the -Web. This package is an extraction of the stemming code included in the Whoosh -search engine.") + stemming algorithms for English. These implementations are straightforward and + efficient, unlike some Python versions of the same algorithms available on the + Web. This package is an extraction of the stemming code included in the Whoosh + search engine.") (license license:public-domain))) (define-public python-factory-boy @@ -18660,12 +18719,12 @@ search engine.") (description "Factory_boy is a fixtures replacement based on thoughtbot’s factory_girl. -As a fixtures replacement tool, it aims to replace static, hard to maintain -fixtures with easy-to-use factories for complex object. + As a fixtures replacement tool, it aims to replace static, hard to maintain + fixtures with easy-to-use factories for complex object. -Instead of building an exhaustive test setup with every possible combination -of corner cases, factory_boy allows you to use objects customized for the -current test, while only declaring the test-specific fields") + Instead of building an exhaustive test setup with every possible combination + of corner cases, factory_boy allows you to use objects customized for the + current test, while only declaring the test-specific fields") (license license:expat))) (define-public python-translate-toolkit @@ -18702,7 +18761,7 @@ current test, while only declaring the test-specific fields") (synopsis "Tools and API for translation and localization engineering") (description "Tools and API for translation and localization engineering. It contains -several utilities, as well as an API for building localization tools.") + several utilities, as well as an API for building localization tools.") (license license:gpl2+))) ;; Required for virtaal, newer versions do not build with python2 @@ -18737,8 +18796,8 @@ several utilities, as well as an API for building localization tools.") (home-page "https://github.com/pypa/packaging") (synopsis "Core utilities for Python packages") (description "Packaging is a Python module for dealing with Python packages. -It offers an interface for working with package versions, names, and dependency -information.") + It offers an interface for working with package versions, names, and dependency + information.") ;; From 'LICENSE': This software is made available under the terms of ;; *either* of the licenses found in LICENSE.APACHE or LICENSE.BSD. ;; Contributions to this software is made under the terms of *both* these @@ -18768,8 +18827,8 @@ information.") (home-page "https://relatorio.tryton.org/") (synopsis "Templating library able to output ODT and PDF files") (description "Relatorio is a templating library which provides a way to -easily output ODT, ODS, PNG, SVG and several other kinds of files. Support -for more filetypes can be easily added by creating plugins for them.") + easily output ODT, ODS, PNG, SVG and several other kinds of files. Support + for more filetypes can be easily added by creating plugins for them.") (license license:gpl3+))) (define-public python-radon @@ -18806,13 +18865,13 @@ for more filetypes can be easily added by creating plugins for them.") (home-page "https://radon.readthedocs.org/") (synopsis "Code Metrics in Python") (description "Radon is a Python tool which computes various code metrics. -Supported metrics are: -@itemize @bullet -@item raw metrics: SLOC, comment lines, blank lines, &c. -@item Cyclomatic Complexity (i.e. McCabe’s Complexity) -@item Halstead metrics (all of them) -@item the Maintainability Index (a Visual Studio metric) -@end itemize") + Supported metrics are: + @itemize @bullet + @item raw metrics: SLOC, comment lines, blank lines, &c. + @item Cyclomatic Complexity (i.e. McCabe’s Complexity) + @item Halstead metrics (all of them) + @item the Maintainability Index (a Visual Studio metric) + @end itemize") (properties `((python2-variant . ,(delay python2-radon)))) (license license:expat))) @@ -18845,7 +18904,7 @@ Supported metrics are: (synopsis "Automated testing library in python for python") (description "Sure is a python library that leverages a DSL for writing assertions. -Sure is heavily inspired by @code{RSpec Expectations} and @code{should.js}.") + Sure is heavily inspired by @code{RSpec Expectations} and @code{should.js}.") (license license:gpl3+))) (define-public python2-sure @@ -18872,7 +18931,7 @@ Sure is heavily inspired by @code{RSpec Expectations} and @code{should.js}.") "ANSI terminal tool for python, colored shell and other handy fancy features") (description "@code{Couleur} provides python programs a way to use the ANSI features in a unix -terminal such as coloured output in the shell, overwriting output, indentation, etc.") + terminal such as coloured output in the shell, overwriting output, indentation, etc.") ;; README.md says ASL2.0, but all source code headers are LGPL3+. ;; https://github.com/gabrielfalcao/couleur/issues/11 (license license:lgpl3+))) @@ -18902,8 +18961,8 @@ terminal such as coloured output in the shell, overwriting output, indentation, (synopsis "Python binding for Hoedown") (description "@code{Misaka} is a CFFI-based binding for @code{Hoedown}, a fast markdown processing -library written in C. It features a fast HTML renderer and functionality to make custom -renderers (e.g. man pages or LaTeX).") + library written in C. It features a fast HTML renderer and functionality to make custom + renderers (e.g. man pages or LaTeX).") (license license:expat))) (define-public python2-misaka @@ -18943,9 +19002,9 @@ renderers (e.g. man pages or LaTeX).") (synopsis "Markdown-based test runner for python") (description "@code{Steadymark} allows documentation to be written in github-flavoured -markdown. The documentation may contain snippets of code surrounded by python -code blocks and @code{Steadymark} will find these snippets and run them, making -sure that there are no old malfunctional examples in the documentation examples.") + markdown. The documentation may contain snippets of code surrounded by python + code blocks and @code{Steadymark} will find these snippets and run them, making + sure that there are no old malfunctional examples in the documentation examples.") (license license:expat))) (define-public python-jsonpointer @@ -18963,7 +19022,7 @@ sure that there are no old malfunctional examples in the documentation examples. (home-page "https://github.com/stefankoegl/python-json-pointer") (synopsis "Identify specific nodes in a JSON document") (description "@code{jsonpointer} allows you to access specific nodes -by path in a JSON document (see RFC 6901).") + by path in a JSON document (see RFC 6901).") (license license:bsd-3))) (define-public python2-jsonpointer @@ -18990,7 +19049,7 @@ by path in a JSON document (see RFC 6901).") (home-page "https://github.com/stefankoegl/python-json-patch") (synopsis "Applying JSON Patches in Python 2.6+ and 3.x") (description "@code{jsonpatch} is a library and program that allows -applying JSON Patches according to RFC 6902.") + applying JSON Patches according to RFC 6902.") (license license:bsd-3))) (define-public python2-jsonpatch @@ -19037,8 +19096,8 @@ applying JSON Patches according to RFC 6902.") (synopsis "Parse and validate URI references") (description "@code{rfc3986} is a Python implementation of RFC@tie{}3986 including -validation and authority parsing. This module also supports RFC@tie{}6874 -which adds support for zone identifiers to IPv6 addresses.") + validation and authority parsing. This module also supports RFC@tie{}6874 + which adds support for zone identifiers to IPv6 addresses.") (license license:asl2.0))) (define-public python2-rfc3986 @@ -19059,7 +19118,7 @@ which adds support for zone identifiers to IPv6 addresses.") (home-page "https://pypi.org/project/rfc3987/") (synopsis "Parsing and validation of URIs (RFC 3986) and IRIs (RFC 3987)") (description "@code{rfc3987} provides routines for parsing and -validation of URIs (see RFC 3986) and IRIs (see RFC 3987).") + validation of URIs (see RFC 3986) and IRIs (see RFC 3987).") (license license:gpl3+))) (define-public python2-rfc3987 @@ -19097,8 +19156,8 @@ validation of URIs (see RFC 3986) and IRIs (see RFC 3987).") (synopsis "Python implementation of RFC 6555") (description "Python implementation of the Happy Eyeballs Algorithm described in RFC -6555. Provided with a single file and dead-simple API to allow easy vendoring -and integration into other projects.") + 6555. Provided with a single file and dead-simple API to allow easy vendoring + and integration into other projects.") (license license:asl2.0)))) (define-public python-bagit @@ -19120,8 +19179,8 @@ and integration into other projects.") (home-page "https://libraryofcongress.github.io/bagit-python/") (synopsis "Create and validate BagIt packages") (description "Bagit is a Python library and command line utility for working -with BagIt style packages. BagIt is a minimalist packaging format for digital -preservation.") + with BagIt style packages. BagIt is a minimalist packaging format for digital + preservation.") (license license:cc0))) (define-public python-prov @@ -19149,7 +19208,7 @@ preservation.") "W3C Provenance Data Model supporting PROV-JSON, PROV-XML and PROV-O (RDF)") (description "This package provides a library for W3C Provenance Data Model supporting -PROV-O (RDF), PROV-XML, PROV-JSON import/export.") + PROV-O (RDF), PROV-XML, PROV-JSON import/export.") (license license:expat))) (define-public python-arcp @@ -19171,17 +19230,17 @@ PROV-O (RDF), PROV-XML, PROV-JSON import/export.") "Archive and Package URI parser and generator") (description "@acronym{arcp, Archive and Package} provides functions for creating -@code{arcp_} URIs, which can be used for identifying or parsing hypermedia files -packaged in an archive or package, like a ZIP file. arcp URIs can be used to -consume or reference hypermedia resources bundled inside a file archive or an -application package, as well as to resolve URIs for archive resources within a -programmatic framework. This URI scheme provides mechanisms to generate a -unique base URI to represent the root of the archive, so that relative URI -references in a bundled resource can be resolved within the archive without -having to extract the archive content on the local file system. An arcp URI can -be used for purposes of isolation (e.g. when consuming multiple archives), -security constraints (avoiding \"climb out\" from the archive), or for -externally identiyfing sub-resources referenced by hypermedia formats.") + @code{arcp_} URIs, which can be used for identifying or parsing hypermedia files + packaged in an archive or package, like a ZIP file. arcp URIs can be used to + consume or reference hypermedia resources bundled inside a file archive or an + application package, as well as to resolve URIs for archive resources within a + programmatic framework. This URI scheme provides mechanisms to generate a + unique base URI to represent the root of the archive, so that relative URI + references in a bundled resource can be resolved within the archive without + having to extract the archive content on the local file system. An arcp URI can + be used for purposes of isolation (e.g. when consuming multiple archives), + security constraints (avoiding \"climb out\" from the archive), or for + externally identiyfing sub-resources referenced by hypermedia formats.") (license license:asl2.0))) (define-public python-shellescape @@ -19215,9 +19274,9 @@ externally identiyfing sub-resources referenced by hypermedia formats.") "Shell escape a string to safely use it as a token in a shell command") (description "The shellescape Python module defines the @code{shellescape.quote()} -function that returns a shell-escaped version of a Python string. This is a -backport of the @code{shlex.quote()} function from Python 3.8 that makes it -accessible to users of Python 3 versions < 3.3 and all Python 2.x versions.") + function that returns a shell-escaped version of a Python string. This is a + backport of the @code{shlex.quote()} function from Python 3.8 that makes it + accessible to users of Python 3 versions < 3.3 and all Python 2.x versions.") (license license:expat))) (define-public python-validators @@ -19247,9 +19306,9 @@ accessible to users of Python 3 versions < 3.3 and all Python 2.x versions.") (synopsis "Data validation library") (description "This package contains validators for different things such as email -addresses, IP addresses, URLs, hashes and more. It has been designed to -be easy to use and not require defining a schema or form just to validate -some input.") + addresses, IP addresses, URLs, hashes and more. It has been designed to + be easy to use and not require defining a schema or form just to validate + some input.") (license license:expat))) (define-public python-validate-email @@ -19267,7 +19326,7 @@ some input.") (home-page "https://github.com/syrusakbary/validate_email") (synopsis "Verifies if an email address is valid and really exists") (description "@code{validate_email} can be used to verify if an email -address is valid and really exists.") + address is valid and really exists.") (license license:lgpl3+))) (define-public python2-validate-email @@ -19322,9 +19381,9 @@ address is valid and really exists.") ("python-pytz" ,python-pytz))) (home-page "https://github.com/marshmallow-code/marshmallow") (synopsis "Convert complex datatypes to and from native -Python datatypes") + Python datatypes") (description "@code{marshmallow} provides a library for converting -complex datatypes to and from native Python datatypes.") + complex datatypes to and from native Python datatypes.") (license license:expat))) (define-public python-marshmallow-3.2 @@ -19364,8 +19423,8 @@ complex datatypes to and from native Python datatypes.") (synopsis "JSON:API 1.0 formatting with Marshmallow") (description "The marshmallow-jsonapi package provides a simple way to produce -@uref{https://jsonapi.org, JSON:API}-compliant data in any Python Web framework. -It includes optional utilities to integrate with Flask.") + @uref{https://jsonapi.org, JSON:API}-compliant data in any Python Web framework. + It includes optional utilities to integrate with Flask.") (license license:expat))) (define-public python-apispec @@ -19397,8 +19456,8 @@ It includes optional utilities to integrate with Flask.") (home-page "https://github.com/marshmallow-code/apispec") (synopsis "Swagger/OpenAPI specification generator") (description "@code{python-apispec} is a pluggable API specification -generator. It currently supports the OpenAPI specification, formerly known -as Swagger.") + generator. It currently supports the OpenAPI specification, formerly known + as Swagger.") (license license:expat))) (define-public python-flasgger @@ -19442,7 +19501,7 @@ as Swagger.") (home-page "https://github.com/rochacbruno/flasgger/") (synopsis "Extract Swagger specs from your Flask project") (description "@code{python-flasgger} allows extracting Swagger specs -from your Flask project. It is a fork of Flask-Swagger.") + from your Flask project. It is a fork of Flask-Swagger.") (license license:expat))) (define-public python-swagger-spec-validator @@ -19465,7 +19524,7 @@ from your Flask project. It is a fork of Flask-Swagger.") "https://github.com/Yelp/swagger_spec_validator") (synopsis "Validation of Swagger specifications") (description "@code{swagger_spec_validator} provides a library for -validating Swagger API specifications.") + validating Swagger API specifications.") (license license:asl2.0))) (define-public python-apache-libcloud @@ -19494,7 +19553,7 @@ validating Swagger API specifications.") (substitute* "libcloud/test/compute/test_ssh_client.py" (("class ShellOutSSHClientTests") "@unittest.skip(\"Guix container doesn't have ssh service\") -class ShellOutSSHClientTests")) + class ShellOutSSHClientTests")) #t)) (add-before 'check 'copy-secret (lambda _ @@ -19515,7 +19574,7 @@ class ShellOutSSHClientTests")) (home-page "https://libcloud.apache.org/") (synopsis "Unified Cloud API") (description "@code{libcloud} is a Python library for interacting with -many of the popular cloud service providers using a unified API.") + many of the popular cloud service providers using a unified API.") (license license:asl2.0))) (define-public python-smmap @@ -19534,7 +19593,7 @@ many of the popular cloud service providers using a unified API.") (home-page "https://github.com/Byron/smmap") (synopsis "Python sliding window memory map manager") (description "@code{smmap} is a pure Python implementation of a sliding -window memory map manager.") + window memory map manager.") (license license:bsd-3))) (define-public python2-smmap @@ -19558,13 +19617,13 @@ window memory map manager.") (lambda* (#:key inputs outputs #:allow-other-keys) (add-installed-pythonpath inputs outputs) (invoke "python" "-c" - "from regex.test_regex import test_main; test_main()")))))) - (home-page "https://bitbucket.org/mrabarnett/mrab-regex") - (synopsis "Alternative regular expression module") - (description "This regular expression implementation is backwards- + "from regex.test_regex import test_main ; test_main()")))))) + (home-page "https://bitbucket.org/mrabarnett/mrab-regex") + (synopsis "Alternative regular expression module") + (description "This regular expression implementation is backwards- compatible with the standard @code{re} module, but offers additional functionality like full case-folding for case-insensitive matches in Unicode.") - (license license:psfl))) + (license license:psfl))) (define-public python2-regex (package-with-python2 python-regex)) @@ -25480,13 +25539,13 @@ dictionaries.") (define-public pyzo (package (name "pyzo") - (version "4.11.2") + (version "4.11.4") (source (origin (method url-fetch) (uri (pypi-uri "pyzo" version)) (sha256 - (base32 "1jk5f79lj09vnsdk9h01w21p9h49z2hhf8xhkx8471pjbg9vrlzr")))) + (base32 "18djnzx9wwlhxk0v2gcpmwnn3iw572n7gkdyh7ghh92yxck6qqkl")))) (build-system python-build-system) (arguments `(#:phases @@ -25494,8 +25553,7 @@ dictionaries.") (add-before 'check 'fix-home-directory (lambda _ ;; Tests fail with "Permission denied: '/homeless-shelter'". - (setenv "HOME" "/tmp") - #t))) + (setenv "HOME" "/tmp")))) ;; Tests fail with "Uncaught Python exception: python: undefined ;; symbol: objc_getClass". #:tests? #f)) @@ -27566,6 +27624,53 @@ cons cells in Python.") systems in Python.") (license license:bsd-3))) +(define-public python-dotenv + (package + (name "python-dotenv") + (version "0.19.2") + (source + (origin + (method url-fetch) + (uri (pypi-uri "python-dotenv" version)) + (sha256 + (base32 "0pv5ygpr6syc6zkw21in4ysqs3k7qaxk9m1g5pzlafwm3silkpm5")))) + (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda* (#:key tests? inputs outputs #:allow-other-keys) + (when tests? + (add-installed-pythonpath inputs outputs) + (setenv "PATH" (string-append (getenv "PATH") ":" + (assoc-ref outputs "out") "/bin")) + ;; Skip the ipython tests. + (delete-file "tests/test_ipython.py") + (invoke "python" "-m" "pytest"))))))) + (propagated-inputs + `(("python-click" ,python-click))) + (native-inputs + `(("python-mock" ,python-mock) + ("python-pytest" ,python-pytest) + ("python-sh" ,python-sh))) + (home-page "https://github.com/theskumar/python-dotenv") + (synopsis "Setup environment variables according to .env files") + (description + "This package provides the @code{python-dotenv} Python module to read +key-value pairs from a @code{.env} file and set them as environment variables.") + (license license:bsd-3))) + +(define-public python-dotenv-0.13.0 + (package (inherit python-dotenv) + (name "python-dotenv") + (version "0.13.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "python-dotenv" version)) + (sha256 + (base32 + "0x5dagmfn31phrbxlwacw3s4w5vibv8fxqc62nqcdvdhjsy0k69v")))))) (define-public date2name (let ((commit "6c8f37277e8ec82aa50f90b8921422be30c4e798") @@ -28021,6 +28126,143 @@ simple mock/record and a complete capture/replay framework.") interfaces.") (license license:bsd-3))) +(define-public python-orgparse + (package + (name "python-orgparse") + (version "0.3.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "orgparse" version)) + (sha256 + (base32 "14iv4pg3rma9560plg0w943x04mr2cmrssda43y2d1x9acrd2n71")))) + (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "pytest" "-vv" "orgparse/tests"))))))) + (native-inputs + `(("python-pytest" ,python-pytest) + ("python-setuptools-scm" ,python-setuptools-scm))) + (home-page "https://github.com/karlicoss/orgparse") + (synopsis "Emacs Org mode parser in Python") + (description + "This package is a Python module for reading Emacs Org mode files.") + (license license:bsd-3))) + +(define-public dynaconf + (package + (name "dynaconf") + (version "3.1.7") + (source + (origin + (method git-fetch) + (uri + (git-reference + (url "https://github.com/rochacbruno/dynaconf") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0pjyjsdzairpn5vq8nzddhxwxmr18grn272nj31wcy2ipwdl3c3h")) + (patches (search-patches "dynaconf-unvendor-deps.patch")) + (modules '((guix build utils))) + (snippet '(begin + ;; Remove vendored dependencies + (let ((unvendor '("click" "dotenv" "ruamel" "toml"))) + (with-directory-excursion "dynaconf/vendor" + (for-each delete-file-recursively unvendor)) + (with-directory-excursion "dynaconf/vendor_src" + (for-each delete-file-recursively unvendor))))))) + (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda* (#:key tests? outputs #:allow-other-keys) + (when tests? + (setenv "PATH" + (string-append (assoc-ref outputs "out") "/bin:" + (getenv "PATH"))) + ;; These tests depend on hvac and a live Vault process. + (delete-file "tests/test_vault.py") + (invoke "make" "test_only"))))))) + (propagated-inputs + `(("python-click" ,python-click) + ("python-configobj" ,python-configobj) + ("python-dotenv" ,python-dotenv-0.13.0) + ("python-ruamel.yaml" ,python-ruamel.yaml) + ("python-toml" ,python-toml))) + (native-inputs + `(("python-django" ,python-django) + ("python-flask" ,python-flask) + ("python-pytest" ,python-pytest-6) + ("python-pytest-cov" ,python-pytest-cov) + ("python-pytest-mock" ,python-pytest-mock))) + (home-page "https://www.dynaconf.com/") + (synopsis "The dynamic configurator for your Python project") + (description + "This package provides @code{dynaconf} the dynamic configurator manager for +your Python project. It provides features such as: + +@itemize +@item Inspired by the @url{https://12factor.net/config, 12-factor application guide}; +@item Settings management (default values, validation, parsing, templating); +@item Protection of sensitive information (passwords/tokens); +@item Multiple file formats @code{toml|yaml|json|ini|py} and also customizable +loaders; +@item Full support for environment variables to override existing settings +(dotenv support included); +@item Optional layered system for multiple environments @code{[default, +development, testing, production]}; +@item Built-in support for Hashicorp Vault and Redis as settings and secrets storage; +@item Built-in extensions for Django and Flask web frameworks; +@item CLI for common operations such as @code{init, list, write, validate, export}. +@end itemize") + (license license:expat))) + +(define-public pudb + (package + (name "pudb") + (version "2021.2") + (source + (origin + (method url-fetch) + (uri (pypi-uri "pudb" version)) + (sha256 + (base32 "0p16pvzfa3w02ybg3n0iy5rs23z4rz4a42lb8wh3mcq62y9ik2w7")))) + (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-before 'check 'fix-read-only-home + (lambda _ + (setenv "HOME" "/tmp"))) + (replace 'check + (lambda* (#:key inputs outputs tests? #:allow-other-keys) + (when tests? + (add-installed-pythonpath inputs outputs) + (invoke "pytest"))))))) + (native-inputs + `(("python-numpy" ,python-numpy) + ("python-pytest" ,python-pytest) + ("python-pytest-mock" ,python-pytest-mock))) + (propagated-inputs + `(("python-jedi" ,python-jedi) + ("python-pygments" ,python-pygments) + ("python-urwid" ,python-urwid) + ("python-urwid-readline" ,python-urwid-readline))) + (home-page "https://documen.tician.de/pudb/") + (synopsis "Console-based Python debugger") + (description + "@command{pudb} is a full-screen, console-based Python debugger providing +all the niceties of modern GUI-based debuggers in a more lightweight and +keyboard-friendly package.") + (license license:expat))) + (define-public python-iwlib (package (name "python-iwlib") |