diff options
Diffstat (limited to 'gnu/packages/python-xyz.scm')
-rw-r--r-- | gnu/packages/python-xyz.scm | 541 |
1 files changed, 435 insertions, 106 deletions
diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm index 9801a3caf8..f88882111a 100644 --- a/gnu/packages/python-xyz.scm +++ b/gnu/packages/python-xyz.scm @@ -8,7 +8,7 @@ ;;; Copyright © 2015 Omar Radwan <toxemicsquire4@gmail.com> ;;; Copyright © 2015 Pierre-Antoine Rault <par@rigelk.eu> ;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020, 2021 Ricardo Wurmus <rekado@elephly.net> -;;; Copyright © 2015, 2016, 2020 Christopher Allan Webber <cwebber@dustycloud.org> +;;; Copyright © 2015, 2016, 2020 Christine Lemmer-Webber <cwebber@dustycloud.org> ;;; Copyright © 2015 Eric Dvorsak <eric@dvorsak.fr> ;;; Copyright © 2015, 2016 David Thompson <davet@gnu.org> ;;; Copyright © 2015, 2016, 2017, 2019 Leo Famulari <leo@famulari.name> @@ -62,7 +62,7 @@ ;;; Copyright © 2019 Jack Hill <jackhill@jackhill.us> ;;; Copyright © 2019, 2020, 2021 Guillaume Le Vaillant <glv@posteo.net> ;;; Copyright © 2019, 2020 Alex Griffin <a@ajgrf.com> -;;; Copyright © 2019, 2020 Pierre Langlois <pierre.langlois@gmx.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 Wiktor Żelazny <wzelazny@vurv.cz> @@ -106,6 +106,8 @@ ;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be> ;;; Copyright © 2021 Hugo Lecomte <hugo.lecomte@inria.fr> ;;; Copyright © 2021 Franck Pérignon <franck.perignon@univ-grenoble-alpes.fr> +;;; Copyright © 2021 Petr Hodina <phodina@protonmail.com> +;;; Copyright © 2021 Simon Streit <simon@netpanic.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -1404,6 +1406,39 @@ to users of that module.") ;; by the Expat license. (license (list license:isc license:expat)))) +(define-public python-ncclient + (package + (name "python-ncclient") + (version "0.6.12") + (source + (origin + (method git-fetch) ;no tests in PyPI release + (uri (git-reference + (url "https://github.com/ncclient/ncclient") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0cb568z5syg6hh0dv813bw7s1mjy7ga5xzxbm9naf4zz2qfdg4js")))) + (build-system python-build-system) + (arguments + `(#:phases (modify-phases %standard-phases + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "pytest"))))))) + (native-inputs + `(("python-pytest" ,python-pytest))) + (propagated-inputs + `(("python-lxml" ,python-lxml) + ("python-paramiko" ,python-paramiko))) + (home-page "https://github.com/ncclient/ncclient") + (synopsis "Python library for NETCONF clients") + (description "@code{ncclient} is a Python library that facilitates +client-side scripting and application development around the NETCONF +protocol.") + (license license:asl2.0))) + (define-public python-license-expression (package (name "python-license-expression") @@ -5275,6 +5310,42 @@ color scales, and color space conversion easy. It has support for: (define-public python2-spectra (package-with-python2 python-spectra)) +(define-public python-pyspnego + (package + (name "python-pyspnego") + (version "0.1.6") + (source + (origin + (method git-fetch) ;no tests in PyPI release + (uri (git-reference + (url "https://github.com/jborean93/pyspnego") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0pfh2x0539f0k2qi2pbjm64b2fqp64c63xxpinvg1yfaw915kgpb")))) + (build-system python-build-system) + (arguments + `(#:phases (modify-phases %standard-phases + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "pytest"))))))) + (native-inputs + `(("python-pytest" ,python-pytest) + ("python-pytest-mock" ,python-pytest-mock))) + (propagated-inputs + `(("python-cryptography" ,python-cryptography) + ("python-gssapi" ,python-gssapi) + ("python-ruamel.yaml" ,python-ruamel.yaml))) + (home-page "https://github.com/jborean93/pyspnego") + (synopsis "Python SPNEGO library") + (description "The @code{pyspnego} Python library handles Negotiate, NTLM, +Kerberos (SPNEGO) and CredSSP authentication. It also includes a packet +parser that can be used to decode raw NTLM/SPNEGO/Kerberos tokens into a human +readable format.") + (license license:expat))) + (define-public python-numpy-documentation (package (name "python-numpy-documentation") @@ -10069,6 +10140,110 @@ Supported netlink families and protocols include: (define-public python2-wrapt (package-with-python2 python-wrapt)) +(define-public python-commentjson + (package + (name "python-commentjson") + (version "0.9.0") + (source (origin + ;; The PyPI release is missing some test files. + (method git-fetch) + (uri (git-reference + (url "https://github.com/vaidik/commentjson") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "01iscgrc6bkyrxbzmf46csbf9c0n7g6dygdmxs3fq8fkzrrciybl")))) + (build-system python-build-system) + (arguments + `(#:modules ((guix build python-build-system) + (guix build utils) + (ice-9 ftw) + (ice-9 textual-ports)) + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'relax-requirements + (lambda _ + (substitute* "setup.py" + (("lark-parser>=0.7.1,<0.8.0") + "lark-parser>=0.7.1")))) + (add-after 'unpack 'delete-unspported-tests + ;; Some tests rely on the 'test' module of Python itself, + ;; which is not available with the Python package in Guix; + ;; remove them. + (lambda _ + ;; XXX: Copied from (guix build dub-build-system). + (define (grep string file-name) + (string-contains (call-with-input-file file-name get-string-all) + string)) + + (with-directory-excursion "commentjson/tests/test_json" + (let* ((dot? (lambda (x) (member x '("." "..")))) + (test-files (scandir "." (negate dot?)))) + (for-each delete-file + (filter (lambda (f) (grep "from test." f)) + test-files))))))))) + (propagated-inputs + `(("python-lark-parser" ,python-lark-parser))) + (native-inputs + `(("python-six" ,python-six))) + (home-page "https://github.com/vaidik/commentjson") + (synopsis "Python library for adding comments to JSON files") + (description "Comment JSON is a Python package that helps you create JSON +files with Python and JavaScript style inline comments. Its API is very +similar to the Python standard library's @code{json} module.") + (license license:expat))) + +(define-public python-resolvelib + (package + (name "python-resolvelib") + (version "0.7.1") + (source + (origin + ;; Tests are missing from the PyPI release. + (method git-fetch) + (uri (git-reference + (url "https://github.com/sarugaku/resolvelib") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1fqz75riagizihvf4j7wc3zjw6kmg1dd8sf49aszyml105kb33n8")))) + (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"))))))) + (native-inputs + `(("python-commentjson" ,python-commentjson) + ("python-packaging" ,python-packaging) + ("python-pytest" ,python-pytest))) + (home-page "https://github.com/sarugaku/resolvelib") + (synopsis "Abstract dependencies resolver") + (description "The ResolveLib library provides a @code{Resolver} class that +includes dependency resolution logic.") + (license license:isc))) + +;;; This older version is required by ansible-core. +(define-public python-resolvelib-0.5 + (package/inherit python-resolvelib + (name "python-resolvelib") + (version "0.5.4") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/sarugaku/resolvelib") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0697y330sqhiclk25v151qxg7aixzpj434lbg5qib0qlna5zg9la")))))) + (define-public python-commonmark (package (name "python-commonmark") @@ -11960,24 +12135,31 @@ pure Python module that works on virtually all Python versions.") (define-public python-execnet (package (name "python-execnet") - (version "1.4.1") + (version "1.9.0") (source (origin - (method url-fetch) - (uri (pypi-uri "execnet" version)) - (sha256 - (base32 - "1rpk1vyclhg911p3hql0m0nrpq7q7mysxnaaw6vs29cpa6kx8vgn")))) + (method url-fetch) + (uri (pypi-uri "execnet" version)) + (sha256 + (base32 + "1ia7dvrh0gvzzpi758mx55f9flr16bzdqlmi12swm4ncm4xlyscg")) + (patches (search-patches "python-execnet-read-only-fix.patch")))) (build-system python-build-system) (arguments - `(;; 2 failed, 275 passed, 670 skipped, 4 xfailed - ;; The two test failures are caused by the lack of an `ssh` executable. - ;; The test suite can be run with pytest after the 'install' phase. - #:tests? #f)) + `(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda* (#:key inputs outputs tests? #:allow-other-keys) + (when tests? + ;; Unset PYTHONDONTWRITEBYTECODE to match the + ;; expectations of a test in + ;; 'testing/test_gateway.py'. + (unsetenv "PYTHONDONTWRITEBYTECODE") + + (add-installed-pythonpath inputs outputs) + (invoke "pytest" "-vv"))))))) (native-inputs `(("python-pytest" ,python-pytest) ("python-setuptools-scm" ,python-setuptools-scm))) - (propagated-inputs - `(("python-apipkg" ,python-apipkg))) (synopsis "Rapid multi-Python deployment") (description "Execnet provides a share-nothing model with channel-send/receive communication for distributing execution across many @@ -13431,16 +13613,15 @@ way.") (define-public python-munkres (package (name "python-munkres") - (version "1.0.8") + (version "1.1.4") (source (origin (method url-fetch) (uri (pypi-uri "munkres" version)) (sha256 (base32 - "0mbspx4zv8id4x6pim6ybsa1xh96qwpbqj7skbqz4c9c9nf1lpqq")))) + "00yvj8bxmhhhhd74v7j0x673is7vizmxwgb3dd5xmnkr74ybyi7w")))) (build-system python-build-system) - (arguments - '(#:tests? #f)) ; no test suite + (native-inputs `(("python-pytest" ,python-pytest-6))) (home-page "https://software.clapper.org/munkres/") (synopsis "Implementation of the Munkres algorithm") (description "The Munkres module provides an implementation of the Munkres @@ -13569,29 +13750,30 @@ ambiguities (forward vs. backward slashes, etc.). (define-public python-jellyfish (package (name "python-jellyfish") - (version "0.5.6") + (version "0.8.8") (source (origin (method url-fetch) (uri (pypi-uri "jellyfish" version)) (sha256 (base32 - "1j9rplb16ba2prjj6mip46z0w9pnhnqpwgiwi0x93vnas14rlyl8")))) + "0p2s6b30sfffx8sya2i8kz0i0riw9fq1fi0k89s8kdgrmjf0h1h5")))) (build-system python-build-system) + (arguments + `(#:tests? #f ; XXX: Tests cannot find C coded version. + #:phases + (modify-phases %standard-phases + (replace 'check + (lambda* (#:key inputs outputs tests? #:allow-other-keys) + (when tests? + (add-installed-pythonpath inputs outputs) + (invoke "pytest" "-vv" "jellyfish/test.py"))))))) (native-inputs `(("python-pytest" ,python-pytest))) (home-page "https://github.com/jamesturk/jellyfish") (synopsis "Approximate and phonetic matching of strings") (description "Jellyfish uses a variety of string comparison and phonetic encoding algorithms to do fuzzy string matching.") - (license license:bsd-2) - (properties `((python2-variant . ,(delay python2-jellyfish)))))) - -(define-public python2-jellyfish - (let ((jellyfish (package-with-python2 - (strip-python2-variant python-jellyfish)))) - (package/inherit jellyfish - (native-inputs `(("python2-unicodecsv" ,python2-unicodecsv) - ,@(package-native-inputs jellyfish)))))) + (license license:bsd-2))) (define-public python2-unicodecsv (package @@ -13671,33 +13853,39 @@ can also be used to get the exact location, font or color of the text.") (define-public python-rarfile (package (name "python-rarfile") - (version "2.8") + (version "4.0") (source (origin (method url-fetch) (uri (pypi-uri "rarfile" version)) (sha256 (base32 - "0qfad483kcbga0bn4qmcz953xjk16r52fahiy46zzn56v80y89ra")))) + "1882wv9szcm29mnyhjmspyflyr2l7z73srn14w4dlnww49lqfm37")))) (build-system python-build-system) (arguments - '(#:phases + `(#:tests? #f ;; The bsdtar utility is very limited and most tests fail. + #:phases (modify-phases %standard-phases + (add-after 'unpack 'patch + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "rarfile.py" + ;; Disable unrar and unar, which are unavailable on Guix. + (("(unrar|unar)=True" all tool) (string-append tool "=False")) + ;; Hardcode path to bsdtar + (("\"bsdtar\"") + (string-append "\"" (assoc-ref inputs "libarchive") "/bin/bsdtar\""))) + #t)) (replace 'check - ;; Many tests fail, but the installation proceeds. - (lambda _ (invoke "make" "-C" "test" "test")))))) - (native-inputs - `(("which" ,which))) ; required for tests - (propagated-inputs - `(("libarchive" ,libarchive))) + (lambda* (#:key inputs tests? #:allow-other-keys) + (when tests? + (invoke "pytest" "-vv"))))))) + (native-inputs `(("python-pytest" ,python-pytest))) + (inputs `(("libarchive" ,libarchive))) (home-page "https://github.com/markokr/rarfile") (synopsis "RAR archive reader for Python") (description "This is Python module for RAR archive reading. The interface is made as zipfile like as possible.") (license license:isc))) -(define-public python2-rarfile - (package-with-python2 python-rarfile)) - (define-public python-rich (package (name "python-rich") @@ -14014,39 +14202,25 @@ respectively.") Python. It generates C++ code and a Makefile.")) (license (list license:gpl3 license:bsd-3 license:expat)))) -(define-public python2-rope +(define-public python-rope (package - (name "python2-rope") - (version "0.11.0") + (name "python-rope") + (version "0.19.0") (source (origin - (method url-fetch) - (uri (pypi-uri "rope" version)) - (sha256 + (method url-fetch) + (uri (pypi-uri "rope" version)) + (sha256 (base32 - "1cppm0pa9aqgsbkq130lskrzmrvjs5vpiavjjbhpz2fdw52w8251")))) - (arguments - ;; Rope has only partial python3 support, see `python-rope' - `(#:python ,python-2)) + "1nlhkmsfvn2p1msrmwqnypnvr993alzawnpc1605q7rfad3xgrk4")))) (build-system python-build-system) - (native-inputs - `(("python2-unittest2" ,python2-unittest2))) (home-page "https://github.com/python-rope/rope") (synopsis "Refactoring library for Python") (description "Rope is a refactoring library for Python. It facilitates the renaming, moving and extracting of attributes, functions, modules, fields and parameters in Python 2 source code. These refactorings can also be applied to occurrences in strings and comments.") - (license license:gpl2))) - -(define-public python-rope - (package/inherit python2-rope - (name "python-rope") - (arguments `(#:python ,python-wrapper - ;; XXX: Only partial python3 support, results in some failing - ;; tests: <https://github.com/python-rope/rope/issues/247>. - #:tests? #f)) - (properties `((python2-variant . ,(delay python2-rope)))))) + (license license:lgpl3+))) (define-public python-py3status (package @@ -14081,29 +14255,6 @@ functionality in a modular way, allowing you to extend your panel with your own code, responding to click events and updating clock every second.") (license license:bsd-3))) -(define-public python2-selectors2 - (package - (name "python2-selectors2") - (version "2.0.1") - (source (origin - (method url-fetch) - (uri (pypi-uri "selectors2" version)) - (sha256 - (base32 - "110qr00b9axz1f1jm12b495jkvrz80smknxvssqlhwk0dx67rdw1")))) - (build-system python-build-system) - (arguments - `(#:python ,python-2)) - (native-inputs - `(("python2-mock" ,python2-mock) - ("python2-psutil" ,python2-psutil))) - (home-page "https://www.github.com/SethMichaelLarson/selectors2") - (synopsis "Backport of the selectors module from Python 3.5+") - (description - "This package provides a drop-in replacement for the @code{selectors} -module in Python 3.5 and later.") - (license license:expat))) - (define-public python-tblib (package (name "python-tblib") @@ -14144,13 +14295,13 @@ multiple processes (imagine multiprocessing, billiard, futures, celery etc). (define-public python-greenlet (package (name "python-greenlet") - (version "1.0.0") + (version "1.1.1") (source (origin (method url-fetch) (uri (pypi-uri "greenlet" version)) (sha256 (base32 - "1y6wbg9yhm9dw6m768n4yslp56h85pnxkk3drz6icn15g6f1d7ki")))) + "10gllbrcbazxck84nr7dw3js3gq0rxrsr4kkvy5hg542rms2gwn0")))) (build-system python-build-system) (home-page "https://greenlet.readthedocs.io/") (synopsis "Lightweight in-process concurrent programming") @@ -18109,16 +18260,8 @@ validation of URIs (see RFC 3986) and IRIs (see RFC 3987).") "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.") - (properties `((python2-variant . ,(delay python2-rfc6555)))) (license license:asl2.0)))) -(define-public python2-rfc6555 - (let ((base (package-with-python2 - (strip-python2-variant python-rfc6555)))) - (package/inherit base - (propagated-inputs - `(("python2-selectors2" ,python2-selectors2)))))) - (define-public python-bagit (package (name "python-bagit") @@ -21142,15 +21285,18 @@ N-dimensional arrays for Python.") (version "0.7.6") (source (origin - (method url-fetch) - (uri (pypi-uri "anndata" version)) + ;; The tarball from PyPi doesn't include tests. + (method git-fetch) + (uri (git-reference + (url "https://github.com/theislab/anndata") + (commit version))) + (file-name (git-file-name name version)) (sha256 (base32 - "1ch8yp0xmag6z0kl01pljm35lbbwax7lrimfhiclpkd4m6xngk53")))) + "1q30bsfsq9xfqm8nmabg3bjh9gix3yng0170xiiyw1lin4xncf0q")))) (build-system python-build-system) (arguments - `(#:tests? #f ; The tarball from PyPi doesn't include tests. - #:phases + `(#:phases (modify-phases %standard-phases (delete 'check) (add-before 'build 'relax-dependency-requirements @@ -21161,6 +21307,7 @@ N-dimensional arrays for Python.") (("pandas>=1.1.1") "pandas>=1.0.5")))) (replace 'build (lambda _ + (setenv "SETUPTOOLS_SCM_PRETEND_VERSION" ,version) ;; ZIP does not support timestamps before 1980. (setenv "SOURCE_DATE_EPOCH" "315532800") (invoke "flit" "build"))) @@ -22784,6 +22931,89 @@ bindings for Python 3.") standard error channel (stderr) in your program.") (license license:expat)))) +(define-public python-anyio + (package + (name "python-anyio") + (version "3.3.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "anyio" version)) + (sha256 + (base32 + "0x03hsprdrs86wjjkj96zm2jswy3a5bgyrknyi58pzz5hdsscmxf")))) + (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'fix-compatibility + (lambda _ + (substitute* "tests/test_taskgroups.py" + (("import pytest") + "import pytest\nimport _pytest\nfrom _pytest import logging") + (("pytest.LogCaptureFixture") + "_pytest.logging.LogCaptureFixture")))) + (replace 'check + (lambda* (#:key inputs outputs tests? #:allow-other-keys) + (when tests? + (add-installed-pythonpath inputs outputs) + (invoke "pytest" "-vv" "-p" "no:asyncio" + "-m" "not network" + "-k" + (string-append + "not test_is_block_device" + + ;; These fail because of network (or specifically + ;; IPv6 network) access. + " and not test_accept" + " and not test_accept_after_close" + " and not test_close_during_receive" + " and not test_close_from_other_task" + " and not test_concurrent_receive" + " and not test_concurrent_send" + " and not test_connect_tcp_with_tls" + " and not test_connect_tcp_with_tls_cert_check_fail" + " and not test_connection_refused" + " and not test_extra_attributes" + " and not test_getaddrinfo" + " and not test_getnameinfo" + " and not test_happy_eyeballs" + " and not test_iterate" + " and not test_receive_after_close" + " and not test_receive_timeout" + " and not test_reuse_port" + " and not test_run_process" + " and not test_send_after_close" + " and not test_send_after_eof" + " and not test_send_after_peer_closed" + " and not test_send_eof" + " and not test_send_large_buffer" + " and not test_send_receive" + " and not test_socket_options")))))))) + (propagated-inputs + `(("python-idna" ,python-idna) + ("python-sniffio" ,python-sniffio) + ("python-typing-extensions" ,python-typing-extensions))) + (native-inputs + `(("python-coverage" ,python-coverage) + ("python-hypothesis" ,python-hypothesis) + ("python-iniconfig" ,python-iniconfig) + ("python-mock" ,python-mock) + ("python-pytest" ,python-pytest-6) + ("python-pytest-mock" ,python-pytest-mock) + ("python-pytest-trio" ,python-pytest-trio) + ("python-setuptools-scm" ,python-setuptools-scm) + ("python-trustme" ,python-trustme) + ("python-uvloop" ,python-uvloop))) + (home-page "https://github.com/agronholm/anyio") + (synopsis "Compatibility layer for multiple asynchronous event loops") + (description + "AnyIO is an asynchronous networking and concurrency library that works +on top of either asyncio or trio. It implements trio-like structured +concurrency on top of asyncio, and works in harmony with the native SC of trio +itself.") + (license license:expat))) + (define-public python-argh ;; There are 21 commits since the latest release containing important ;; improvements. @@ -24541,6 +24771,28 @@ For the most part it's transliterated from C, the major differences are: "Jinxed is an implementation of a subset of the Python curses library.") (license license:mpl2.0))) +(define-public python-svgutils + (package + (name "python-svgutils") + (version "0.3.4") + (source + (origin + (method url-fetch) + (uri (pypi-uri "svgutils" version)) + (sha256 + (base32 + "0lz0w2ajdvwd269a7ppnzawmx8px0116j0nx8xvhlihxrd28zx4y")))) + (build-system python-build-system) + (propagated-inputs + `(("python-lxml" ,python-lxml))) + (home-page "https://svgutils.readthedocs.io") + (synopsis "Python SVG editor") + (description "This is an utility package that helps with editing and +concatenating SVG files. It is especially directed at scientists preparing +final figures for submission to journals. So far it supports arbitrary +placement and scaling of SVG figures and adding markers, such as labels.") + (license license:expat))) + (define-public python-blessed (package (name "python-blessed") @@ -25581,20 +25833,19 @@ Qt applications.") (define-public python-confuse (package (name "python-confuse") - (version "1.4.0") + (version "1.5.0") (source (origin (method url-fetch) (uri (pypi-uri "confuse" version)) (sha256 (base32 - "0r74djc8r6lfx6ldsqnhpvfsn256gsfzbl33qcm77hp2qr8h9z4j")))) + "0bh2kyj8wd7h9gg4nsvrbykl5ly0f70f0wi3fbm204b1f0fcmywj")))) (build-system python-build-system) (propagated-inputs - `(("python-pathlib" ,python-pathlib) - ("python-pyyaml" ,python-pyyaml))) + `(("python-pyyaml" ,python-pyyaml))) (home-page "https://github.com/beetbox/confuse") - (synopsis "Painless YAML configuration.") + (synopsis "Painless YAML configuration") (description "Confuse is a configuration library for Python that uses YAML. It takes care of defaults, overrides, type checking, command-line integration, human-readable errors, and standard OS-specific locations.") @@ -26193,3 +26444,81 @@ of Python 3.") (description "This package provides bindings for wcwidth and wcswidth functions defined in POSIX.1-2001 and POSIX.1-2008.") (license license:expat))) + +(define-public python-pyan3 + (package + (name "python-pyan3") + (version "1.2.0") + (source + (origin + ;; Source tarball on PyPI lacks tests. + (method git-fetch) + (uri (git-reference + (url "https://github.com/Technologicat/pyan") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1367x25rcy2y8f0x9c2dbxl2qgdln3arr7ddyzybz2c28g6jrv5z")) + (patches (search-patches "python-pyan3-fix-positional-arguments.patch" + "python-pyan3-fix-absolute-path-bug.patch")))) + (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + ;; Extend PYTHONPATH so the built package will be found. + (setenv "GUIX_PYTHONPATH" + (string-append (getcwd) ":" (getenv "GUIX_PYTHONPATH"))) + (invoke "pytest"))))))) + (native-inputs + `(("python-pytest" ,python-pytest) + ("python-pytest-cov" ,python-pytest-cov) + ("python-wheel" ,python-wheel))) + (propagated-inputs + `(("python-jinja2" ,python-jinja2))) + (home-page "https://github.com/Technologicat/pyan") + (synopsis "Offline call graph generator for Python 3") + (description "Pyan takes one or more Python source files, performs +a (rather superficial) static analysis, and constructs a directed graph of the +objects in the combined source, and how they define or use each other. The +graph can be output for rendering by GraphViz or yEd.") + (license license:gpl2))) + +(define-public date2name + (let ((commit "6c8f37277e8ec82aa50f90b8921422be30c4e798") + (revision "1")) + (package + (name "date2name") + (version (git-version "0.0" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/novoid/date2name") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1vq96b7n16d932nyfhnzwdwxff0zrqanidmwr4cxj2p67ad9y3w7")))) + (build-system python-build-system) + (arguments + `(#:tests? #f ; no tests + #:phases + (modify-phases %standard-phases + (delete 'build) + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (let* ((bindir (string-append (assoc-ref outputs "out") "/bin")) + (binary (string-append bindir "/date2name"))) + (mkdir-p bindir) + (copy-file "date2name/__init__.py" binary) + (chmod binary #o555))))))) + (synopsis "Handling time-stamps and date-stamps in file names") + (description "By default, date2name gets the modification time of matching +files and directories and adds a datestamp in standard ISO 8601+ format +YYYY-MM-DD at the beginning of the file or directory name.") + (home-page "https://github.com/novoid/date2name") + (license license:gpl3+)))) |