mirror of
https://codeberg.org/guix/guix.git
synced 2025-10-02 02:15:12 +00:00
Merge remote-tracking branch 'signed/master' into core-updates
This commit is contained in:
commit
e486b2b674
155 changed files with 255065 additions and 200797 deletions
|
@ -109,6 +109,7 @@
|
|||
;;; Copyright © 2021 Daniel Meißner <daniel.meissner-i4k@ruhr-uni-bochum.de>
|
||||
;;; Copyright © 2021 Pradana Aumars <paumars@courrier.dev>
|
||||
;;; Copyright © 2021 Felix Gruber <felgru@posteo.net>
|
||||
;;; Copyright © 2021 Sébastien Lerique <sl@eauchat.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
|
@ -232,6 +233,83 @@
|
|||
#:use-module (srfi srfi-1)
|
||||
#:use-module (srfi srfi-26))
|
||||
|
||||
(define-public python-janus
|
||||
(package
|
||||
(name "python-janus")
|
||||
(version "0.6.1")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (pypi-uri "janus" version))
|
||||
(sha256
|
||||
(base32 "030xvl2vghi5ispfalhvch1rl6i2jsy5bf1dgjafa7vifppy04j7"))))
|
||||
(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" "--cov=janus" "--cov=tests")))))))
|
||||
(native-inputs
|
||||
`(("python-pytest" ,python-pytest)
|
||||
("python-pytest-cov" ,python-pytest-cov)
|
||||
("python-pytest-asyncio" ,python-pytest-asyncio)))
|
||||
(home-page "https://github.com/aio-libs/janus/")
|
||||
(synopsis
|
||||
"Sync-async queue to interoperate between asyncio tasks and classic threads")
|
||||
(description
|
||||
"Mixed sync-async queue, supposed to be used for communicating between
|
||||
classic synchronous (threaded) code and asynchronous (in terms of
|
||||
@url{https://docs.python.org/3/library/asyncio.html,asyncio}) one. Like
|
||||
@url{https://en.wikipedia.org/wiki/Janus,Janus god} the queue object from the
|
||||
library has two faces: synchronous and asynchronous interface. Synchronous is
|
||||
fully compatible with
|
||||
@url{https://docs.python.org/3/library/queue.html,standard queue},
|
||||
asynchronous one follows
|
||||
@url{https://docs.python.org/3/library/asyncio-queue.html,asyncio queue
|
||||
design}.")
|
||||
(license license:asl2.0)))
|
||||
|
||||
(define-public python-logbook
|
||||
(package
|
||||
(name "python-logbook")
|
||||
(version "1.5.3")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (pypi-uri "Logbook" version))
|
||||
(sha256
|
||||
(base32 "1s1gyfw621vid7qqvhddq6c3z2895ci4lq3g0r1swvpml2nm9x36"))))
|
||||
(build-system python-build-system)
|
||||
(arguments
|
||||
`(#:phases
|
||||
(modify-phases %standard-phases
|
||||
(add-before 'build 'cythonize-sources
|
||||
(lambda _
|
||||
(with-directory-excursion "logbook"
|
||||
(invoke "cython" "_speedups.pyx"))))
|
||||
(replace 'check
|
||||
(lambda* (#:key tests? #:allow-other-keys)
|
||||
(when tests?
|
||||
;; Check cython build also
|
||||
(setenv "CYBUILD" "True")
|
||||
(invoke "pytest" "--cov=logbook" "-r" "s" "tests")))))))
|
||||
(native-inputs
|
||||
`(("python-cython" ,python-cython)
|
||||
("python-mock" ,python-mock)
|
||||
("python-pytest" ,python-pytest)
|
||||
("python-pytest-cov" ,python-pytest-cov)
|
||||
("python-google-brotli" ,python-google-brotli)))
|
||||
(home-page "https://github.com/getlogbook/logbook")
|
||||
(synopsis "Logbook is a logging replacement for Python")
|
||||
(description
|
||||
"Logbook is a logging system for Python that replaces the standard
|
||||
library’s logging module. It was designed with both complex and simple
|
||||
applications in mind and the idea to make logging fun.")
|
||||
(license license:bsd-3)))
|
||||
|
||||
(define-public python-ueberzug
|
||||
(package
|
||||
(name "python-ueberzug")
|
||||
|
@ -4334,7 +4412,7 @@ ecosystem, but can naturally be used also by other projects.")
|
|||
(define-public python-robotframework
|
||||
(package
|
||||
(name "python-robotframework")
|
||||
(version "3.2.2")
|
||||
(version "4.1.2")
|
||||
;; There are no tests in the PyPI archive.
|
||||
(source
|
||||
(origin
|
||||
|
@ -4344,7 +4422,7 @@ ecosystem, but can naturally be used also by other projects.")
|
|||
(commit (string-append "v" version))))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32 "0if0h3myb9m3hgmn1phrhq8pfp89kfqsaq32vmfdjkyjdj7y59ds"))
|
||||
(base32 "0s6lakbd8h1pa4lfdj18sm13gpywszgpcns4hz026a4kam787kby"))
|
||||
(patches (search-patches
|
||||
"python-robotframework-source-date-epoch.patch"))))
|
||||
(build-system python-build-system)
|
||||
|
@ -4358,8 +4436,7 @@ ecosystem, but can naturally be used also by other projects.")
|
|||
(invoke "invoke" "library-docs" "all")
|
||||
(mkdir-p doc)
|
||||
(copy-recursively "doc/libraries"
|
||||
(string-append doc "/libraries"))
|
||||
#t)))
|
||||
(string-append doc "/libraries")))))
|
||||
(replace 'check
|
||||
(lambda* (#:key inputs #:allow-other-keys)
|
||||
;; Some tests require timezone data. Otherwise, they
|
||||
|
@ -4373,7 +4450,9 @@ ecosystem, but can naturally be used also by other projects.")
|
|||
|
||||
(invoke "python" "utest/run.py"))))))
|
||||
(native-inputs
|
||||
`(("python-invoke" ,python-invoke)
|
||||
`(("python-docutils" ,python-docutils)
|
||||
("python-jsonschema" ,python-jsonschema)
|
||||
("python-invoke" ,python-invoke)
|
||||
("python-rellu" ,python-rellu)
|
||||
("python:tk" ,python "tk") ;used when building the HTML doc
|
||||
("tzdata" ,tzdata-for-tests)))
|
||||
|
@ -4425,7 +4504,7 @@ utility, a static analysis tool (linter) for Robot Framework source files.")
|
|||
(define-public python-robotframework-sshlibrary
|
||||
(package
|
||||
(name "python-robotframework-sshlibrary")
|
||||
(version "3.3.0")
|
||||
(version "3.7.0")
|
||||
;; There are no tests in the PyPI archive.
|
||||
(source
|
||||
(origin
|
||||
|
@ -4436,7 +4515,7 @@ utility, a static analysis tool (linter) for Robot Framework source files.")
|
|||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"1mk6dz2jqqndbx4yji09012q6rmadnqdywi7czvj62b0s07dr3r2"))))
|
||||
"09ak22rh9qa9wlpvhkliyybcp4xafjhxsps28wz0pf0030771xav"))))
|
||||
(build-system python-build-system)
|
||||
(arguments
|
||||
`(#:phases
|
||||
|
@ -4450,14 +4529,14 @@ utility, a static analysis tool (linter) for Robot Framework source files.")
|
|||
(invoke "invoke" "kw-docs" "project-docs")
|
||||
(mkdir-p doc)
|
||||
(for-each delete-file (find-files "docs" "\\.rst"))
|
||||
(copy-recursively "docs" doc)
|
||||
#t)))
|
||||
(copy-recursively "docs" doc))))
|
||||
(replace 'check
|
||||
(lambda _
|
||||
;; Some tests require an SSH server; we remove them.
|
||||
(delete-file "utest/test_client_api.py")
|
||||
(delete-file "utest/test_scp.py")
|
||||
(invoke "python" "utest/run.py"))))))
|
||||
(lambda* (#:key tests? #:allow-other-keys)
|
||||
(when tests?
|
||||
;; Some tests require an SSH server; we remove them.
|
||||
(delete-file "utest/test_client_api.py")
|
||||
(delete-file "utest/test_scp.py")
|
||||
(invoke "python" "utest/run.py")))))))
|
||||
(propagated-inputs
|
||||
`(("python-robotframework" ,python-robotframework)
|
||||
("python-paramiko" ,python-paramiko)
|
||||
|
@ -4483,6 +4562,94 @@ for SSH and SFTP. It has the following main usages:
|
|||
@end itemize")
|
||||
(license license:asl2.0)))
|
||||
|
||||
(define-public python-robotframework-pythonlibcore
|
||||
(package
|
||||
(name "python-robotframework-pythonlibcore")
|
||||
(version "3.0.0")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch) ;no tests in pypi archive
|
||||
(uri (git-reference
|
||||
(url "https://github.com/robotframework/PythonLibCore")
|
||||
(commit (string-append "v" version))))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"0v89v8va65l6inh0fb34qgxawx6p29pnrmw4n5941yzdi3804rc4"))))
|
||||
(build-system python-build-system)
|
||||
(arguments
|
||||
`(#:phases (modify-phases %standard-phases
|
||||
(replace 'check
|
||||
(lambda* (#:key tests? #:allow-other-keys)
|
||||
(when tests?
|
||||
(invoke "utest/run.py")))))))
|
||||
(native-inputs
|
||||
`(("python-pytest" ,python-pytest)
|
||||
("python-pytest-cov" ,python-pytest-cov)
|
||||
("python-pytest-mockito" ,python-pytest-mockito)
|
||||
("python-robotframework" ,python-robotframework)))
|
||||
(home-page "https://github.com/robotframework/PythonLibCore")
|
||||
(synopsis "Robot Framework Python library tools")
|
||||
(description "PythonLibCore provides tools for creating larger test
|
||||
libraries for Robot Framework using Python. The Robot Framework hybrid and
|
||||
dynamic library APIs give more flexibility for library than the static library
|
||||
API, but they also set requirements for libraries which need to be implemented
|
||||
in the library side. PythonLibCore eases the problem by providing a simpler
|
||||
interface and by handling all the requirements towards the Robot Framework
|
||||
library APIs.")
|
||||
(license license:asl2.0)))
|
||||
|
||||
(define-public python-robotframework-seleniumlibrary
|
||||
(package
|
||||
(name "python-robotframework-seleniumlibrary")
|
||||
(version "5.1.3")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (pypi-uri "robotframework-seleniumlibrary" version))
|
||||
(sha256
|
||||
(base32 "1dihrbcid9i7daw2qy6h3xsvwaxzmyip820jw5z11n60qrl006pm"))))
|
||||
(build-system python-build-system)
|
||||
;; XXX: Tests require ungoogled-chromium, but the chromium module would
|
||||
;; introduce a cycle if imported here.
|
||||
(propagated-inputs
|
||||
`(("python-robotframework" ,python-robotframework)
|
||||
("python-robotframework-pythonlibcore"
|
||||
,python-robotframework-pythonlibcore)
|
||||
("python-selenium" ,python-selenium)))
|
||||
(home-page "https://github.com/robotframework/SeleniumLibrary")
|
||||
(synopsis "Web testing library for Robot Framework")
|
||||
(description "SeleniumLibrary is a web testing library for Robot Framework
|
||||
that utilizes the Selenium tool internally.")
|
||||
(license license:asl2.0)))
|
||||
|
||||
(define-public python-robotframework-seleniumscreenshots
|
||||
(package
|
||||
(name "python-robotframework-seleniumscreenshots")
|
||||
(version "0.9.5")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (pypi-uri "robotframework-seleniumscreenshots" version))
|
||||
(sha256
|
||||
(base32 "05qv323hvjmy62h33ryrjaa9k1hyvp8hq5qnj8j1x3ap2ci3q3s0"))))
|
||||
(build-system python-build-system)
|
||||
(arguments
|
||||
;; XXX: The tests require a relatively complicated setup configured in
|
||||
;; their CI with Nix (!).
|
||||
`(#:tests? #f))
|
||||
(propagated-inputs
|
||||
`(("python-robotframework" ,python-robotframework)
|
||||
("python-robotframework-seleniumlibrary"
|
||||
,python-robotframework-seleniumlibrary)))
|
||||
(home-page "https://github.com/MarketSquare/robotframework-seleniumscreenshots")
|
||||
(synopsis "Robot Framework library for annotating and cropping screenshots")
|
||||
(description "The SeleniumScreenshots library for Robot Framework provides
|
||||
keywords for annotating and cropping screenshots taken with SeleniumLibrary.
|
||||
It is useful for scripting automatically updated screenshots for documentation
|
||||
or for visual regression testing purposes.")
|
||||
(license license:bsd-3)))
|
||||
|
||||
(define-public python-rstr
|
||||
(package
|
||||
(name "python-rstr")
|
||||
|
@ -10685,13 +10852,13 @@ printing of sub-tables by specifying a row range.")
|
|||
(define-public python-curio
|
||||
(package
|
||||
(name "python-curio")
|
||||
(version "1.2")
|
||||
(version "1.5")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (pypi-uri "curio" version))
|
||||
(sha256
|
||||
(base32 "16wkww6kh511b9bzsfhpvrv0766cc6ssgbzz4lgpjnrzzgx21wwh"))))
|
||||
(base32 "045wwg16qadsalhicbv21p14sj8i4w0l57639j7dmdqbb4p2225g"))))
|
||||
(build-system python-build-system)
|
||||
(arguments
|
||||
`(#:phases
|
||||
|
@ -12338,6 +12505,17 @@ for atomic file system operations.")
|
|||
(define-public python2-atomicwrites
|
||||
(package-with-python2 python-atomicwrites))
|
||||
|
||||
(define-public python-atomicwrites-1.4
|
||||
(package
|
||||
(inherit python-atomicwrites)
|
||||
(version "1.4.0")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (pypi-uri "atomicwrites" version))
|
||||
(sha256
|
||||
(base32
|
||||
"0yla2svfhfqrcj8qbyqzx7wi4jy0dwcxvlkg0k3zjd54s5m3jw5f"))))))
|
||||
|
||||
(define-public python-qstylizer
|
||||
(package
|
||||
(name "python-qstylizer")
|
||||
|
@ -14451,14 +14629,14 @@ development version of CPython that are not available in older releases.")
|
|||
(define-public python-future
|
||||
(package
|
||||
(name "python-future")
|
||||
(version "0.17.1")
|
||||
(version "0.18.2")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (pypi-uri "future" version))
|
||||
(sha256
|
||||
(base32
|
||||
"1f2rlqn9rh7adgir52dlbqz69gsab44x0mlm8gf1cs7xvhv54137"))))
|
||||
"0zakvfj87gy6mn1nba06sdha63rn4njm7bhh0wzyrxhcny8avgmi"))))
|
||||
(build-system python-build-system)
|
||||
;; Many tests connect to the network or are otherwise flawed.
|
||||
;; https://github.com/PythonCharmers/python-future/issues/210
|
||||
|
@ -15630,14 +15808,29 @@ simple, lightweight implementation.")
|
|||
(define-public python-ukpostcodeparser
|
||||
(package
|
||||
(name "python-ukpostcodeparser")
|
||||
(version "1.0.3")
|
||||
(version "1.1.2")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (pypi-uri "UkPostcodeParser" version))
|
||||
(sha256
|
||||
(base32
|
||||
"1jwg9z4rz51mcka1821rwgycsd0mcicyp1kiwjfa2kvg8bm9p2qd"))))
|
||||
"03jkf1ygbwq3akzbcjyjk1akc1hv2sfgx90306pq1nwklbpn80lk"))))
|
||||
(build-system python-build-system)
|
||||
(arguments
|
||||
`(#:phases
|
||||
(modify-phases %standard-phases
|
||||
(replace 'check
|
||||
(lambda* (#:key tests? #:allow-other-keys)
|
||||
(when tests?
|
||||
;; Tests for lowercase postcodes fail.
|
||||
(invoke "pytest" "-vv" "ukpostcodeparser/test/parser.py" "-k"
|
||||
(string-append "not test_091 "
|
||||
"and not test_097 "
|
||||
"and not test_098 "
|
||||
"and not test_125 "
|
||||
"and not test_131"))))))))
|
||||
(native-inputs
|
||||
`(("python-pytest" ,python-pytest)))
|
||||
(home-page "https://github.com/hamstah/ukpostcodeparser")
|
||||
(synopsis "UK Postcode parser for Python")
|
||||
(description
|
||||
|
@ -15650,37 +15843,37 @@ parsing UK postcodes.")
|
|||
|
||||
(define-public python-faker
|
||||
(package
|
||||
(name "python-faker")
|
||||
(version "8.12.1")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (pypi-uri "Faker" version))
|
||||
(sha256
|
||||
(base32
|
||||
"1f95g8adzdh97cbfq7j3482iy4yskbahhjma2cm2mrhrdmi5j241"))))
|
||||
(build-system python-build-system)
|
||||
(arguments
|
||||
'(#:phases
|
||||
(modify-phases %standard-phases
|
||||
(replace 'check
|
||||
(lambda _ (invoke "python" "-m" "pytest" "-v"))))))
|
||||
(native-inputs
|
||||
`(;; For testing
|
||||
("python-freezegun" ,python-freezegun)
|
||||
("python-pytest" ,python-pytest)
|
||||
("python-random2" ,python-random2)
|
||||
("python-ukpostcodeparser" ,python-ukpostcodeparser)
|
||||
("python-validators" ,python-validators)))
|
||||
(propagated-inputs
|
||||
`(("python-dateutil" ,python-dateutil)
|
||||
("python-text-unidecode" ,python-text-unidecode)))
|
||||
(home-page "https://github.com/joke2k/faker")
|
||||
(synopsis "Python package that generates fake data")
|
||||
(description
|
||||
"Faker is a Python package that generates fake data such as names,
|
||||
(name "python-faker")
|
||||
(version "9.3.1")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (pypi-uri "Faker" version))
|
||||
(sha256
|
||||
(base32
|
||||
"0lpfdc4ndvk7chgqrfd2b1my4n54pccq9b645vp9cp5s5ypyknfd"))))
|
||||
(build-system python-build-system)
|
||||
(arguments
|
||||
'(#:phases
|
||||
(modify-phases %standard-phases
|
||||
(replace 'check
|
||||
(lambda _ (invoke "python" "-m" "pytest" "-v"))))))
|
||||
(native-inputs
|
||||
`( ;; For testing
|
||||
("python-freezegun" ,python-freezegun)
|
||||
("python-pytest" ,python-pytest-6)
|
||||
("python-random2" ,python-random2)
|
||||
("python-ukpostcodeparser" ,python-ukpostcodeparser)
|
||||
("python-validators" ,python-validators)))
|
||||
(propagated-inputs
|
||||
`(("python-dateutil" ,python-dateutil)
|
||||
("python-text-unidecode" ,python-text-unidecode)))
|
||||
(home-page "https://github.com/joke2k/faker")
|
||||
(synopsis "Python package that generates fake data")
|
||||
(description
|
||||
"Faker is a Python package that generates fake data such as names,
|
||||
addresses, and phone numbers.")
|
||||
(license license:expat)
|
||||
(properties `((python2-variant . ,(delay python2-faker))))))
|
||||
(license license:expat)
|
||||
(properties `((python2-variant . ,(delay python2-faker))))))
|
||||
|
||||
;; Faker 4.0 dropped Python 2 support, so we stick with this older version here.
|
||||
(define-public python2-faker
|
||||
|
@ -24550,19 +24743,40 @@ replacement for dictionaries where immutability is desired.")
|
|||
(define-public python-unpaddedbase64
|
||||
(package
|
||||
(name "python-unpaddedbase64")
|
||||
(version "1.1.0")
|
||||
(version "2.1.0")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/matrix-org/python-unpaddedbase64")
|
||||
(commit (string-append "v" version))))
|
||||
(file-name (git-file-name name version))
|
||||
(method url-fetch)
|
||||
(uri (pypi-uri "unpaddedbase64" version))
|
||||
(sha256
|
||||
(base32
|
||||
"0if3fjfxga0bwdq47v77fs9hrcqpmwdxry2i2a7pdqsp95258nxd"))))
|
||||
(base32 "01ghlmw63fgslwj8j74vkpf1kqvr7a4agm6nyn89vqwx106ccwvj"))))
|
||||
(build-system python-build-system)
|
||||
(home-page "https://pypi.org/project/unpaddedbase64/")
|
||||
(arguments
|
||||
`(#:phases
|
||||
(modify-phases %standard-phases
|
||||
(replace 'check
|
||||
(lambda* (#:key inputs tests? #:allow-other-keys)
|
||||
(when tests?
|
||||
(copy-recursively (string-append
|
||||
(assoc-ref inputs "tests") "/tests")
|
||||
"tests")
|
||||
(invoke "python" "-m" "pytest" "-vv")))))))
|
||||
(native-inputs
|
||||
`(("python-pytest" ,python-pytest)
|
||||
("tests"
|
||||
;; The release on pypi comes without tests. We can't build from this
|
||||
;; checkout, though, because installation requires an invocation of
|
||||
;; poetry.
|
||||
,(origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/matrix-org/python-unpaddedbase64")
|
||||
(commit (string-append "v" version))))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"1n6har8pxv0mqb96lanzihp1xf76aa17jw3977drb1fgz947pnmz"))))))
|
||||
(home-page "https://github.com/matrix-org/python-unpaddedbase64")
|
||||
(synopsis "Encode and decode Base64 without “=” padding")
|
||||
(description
|
||||
"RFC 4648 specifies that Base64 should be padded to a multiple of 4 bytes
|
||||
|
@ -27234,6 +27448,35 @@ location. This small Python module determines the appropriate
|
|||
platform-specific directories, e.g. the ``user data dir''.")
|
||||
(license license:expat)))
|
||||
|
||||
(define-public python-json2html
|
||||
(package
|
||||
(name "python-json2html")
|
||||
(version "1.3.0")
|
||||
(source
|
||||
;; There are no tests in the PyPI tarball.
|
||||
(origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/softvar/json2html")
|
||||
(commit (string-append "v" version))))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32 "1ncypljnl5y8lsxy6ibcqy412kx3mzxl4ajg67568hvq98kv1sb3"))))
|
||||
(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 "python" "test/run_tests.py")))))))
|
||||
(home-page "https://github.com/softvar/json2html")
|
||||
(synopsis "Convert JSON to HTML table")
|
||||
(description "@code{python-json2html} is a python module to convert JSON
|
||||
into a human readable HTML table representation.")
|
||||
(license license:expat)))
|
||||
|
||||
(define-public python-face
|
||||
(package
|
||||
(name "python-face")
|
||||
|
@ -27338,3 +27581,41 @@ and powerful way to handle real-world data, featuring:
|
|||
"This package provides the @code{python-box} Python module.
|
||||
It implements advanced Python dictionaries with dot notation access.")
|
||||
(license license:expat)))
|
||||
|
||||
(define-public python-fields
|
||||
(package
|
||||
(name "python-fields")
|
||||
(version "5.0.0")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (pypi-uri "fields" version))
|
||||
(sha256
|
||||
(base32 "09sppvhhkhkv9zc9g994m53z15v92csxwcf42ggkaknlv01smm1i"))))
|
||||
(build-system python-build-system)
|
||||
(home-page "https://python-fields.readthedocs.io/")
|
||||
(synopsis "Python container class boilerplate killer")
|
||||
(description "Avoid repetetive boilerplate code in Python classes.")
|
||||
(license license:bsd-3)))
|
||||
|
||||
(define-public python-aspectlib
|
||||
(package
|
||||
(name "python-aspectlib")
|
||||
(version "1.5.2")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (pypi-uri "aspectlib" version))
|
||||
(sha256
|
||||
(base32 "1am4ycf292zbmgz791z393v63w7qrynf8q5p9db2wwf2qj1fqxfj"))))
|
||||
(build-system python-build-system)
|
||||
(propagated-inputs `(("python-fields" ,python-fields)))
|
||||
(home-page "https://github.com/ionelmc/python-aspectlib")
|
||||
(synopsis
|
||||
"Python monkey-patching and decorators")
|
||||
(description
|
||||
"This package provides an aspect-oriented programming, monkey-patch
|
||||
and decorators library. It is useful when changing behavior in existing
|
||||
code is desired. It includes tools for debugging and testing:
|
||||
simple mock/record and a complete capture/replay framework.")
|
||||
(license license:bsd-2)))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue