summaryrefslogtreecommitdiff
path: root/gnu/packages/python-xyz.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/python-xyz.scm')
-rw-r--r--gnu/packages/python-xyz.scm399
1 files changed, 340 insertions, 59 deletions
diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index ff5b0f00e4..2dee3dca87 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -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)))