;;; Copyright © 2020 Vinicius Monego <monego@posteo.net>
;;; Copyright © 2020 Guy Fleury Iteriteka <gfleury@disroot.org>
;;; Copyright © 2020 Hendursaga <hendursaga@yahoo.com>
+;;; Copyright © 2020 Malte Frank Gerdes <malte.f.gerdes@gmail.com>
+;;; Copyright © 2020 Joseph LaFreniere <joseph@lafreniere.xyz>
+;;; Copyright © 2020 Tim Gesthuizen <tim.gesthuizen@yahoo.de>
+;;; Copyright © 2020 Bonface Munyoki Kilyungi <bonfacemunyoki@gmail.com>
+;;; Copyright © 2020 Ekaitz Zarraga <ekaitz@elenq.tech>
+;;; Copyright © 2020 Diego N. Barbato <dnbarbato@posteo.de>
+;;; Copyright © 2020 Leo Prikler <leo.prikler@student.tugraz.at>
;;;
;;; This file is part of GNU Guix.
;;;
#:use-module (gnu packages)
#:use-module (gnu packages algebra)
#:use-module (gnu packages adns)
+ #:use-module (gnu packages aidc)
#:use-module (gnu packages attr)
#:use-module (gnu packages backup)
#:use-module (gnu packages bash)
#:use-module (gnu packages haskell-xyz)
#:use-module (gnu packages icu4c)
#:use-module (gnu packages image)
- #:use-module (gnu packages imagemagick)
#:use-module (gnu packages kerberos)
#:use-module (gnu packages libevent)
#:use-module (gnu packages libffi)
(define-public python-shapely
(package
(name "python-shapely")
- (version "1.6.4.post2")
+ (version "1.7.1")
(source
(origin
(method url-fetch)
(uri (pypi-uri "Shapely" version))
(sha256
(base32
- "03r42fmd9alp6r3q95ad6rldq2f7n1wimrw53zy5kpn33yv7pf64"))))
+ "0adiz4jwmwxk7k1awqifb1a9bj5x4nx4gglb5dz9liam21674h8n"))
+ (modules '((guix build utils)))
+ (snippet
+ '(begin
+ (delete-file "shapely/speedups/_speedups.c")
+ (delete-file "shapely/vectorized/_vectorized.c")
+ #t))))
(build-system python-build-system)
(native-inputs
`(("python-cython" ,python-cython)
(let ((geos (assoc-ref inputs "geos"))
(glibc (assoc-ref inputs ,(if (%current-target-system)
"cross-libc" "libc"))))
- (substitute* "shapely/geos.py"
+ (substitute* '("shapely/geos.py" "shapely/_buildcfg.py")
(("_lgeos = load_dll\\('geos_c', fallbacks=.*\\)")
(string-append "_lgeos = load_dll('geos_c', fallbacks=['"
geos "/lib/libgeos_c.so'])"))
(("free = load_dll\\('c'\\)\\.free")
+ (string-append "free = load_dll('c', fallbacks=['"
+ glibc "/lib/libc.so.6']).free"))
+ (("free = load_dll\\('c', fallbacks=.*\\)\\.free")
(string-append "free = load_dll('c', fallbacks=['"
glibc "/lib/libc.so.6']).free"))))
#t)))))
;; by the Expat license.
(license (list license:isc license:expat))))
-(define-public python2-netcdf4
- (package-with-python2 python-netcdf4))
-
(define-public python-license-expression
(package
(name "python-license-expression")
(description "This Python library allows reading and writing to the Excel XLSX, XLSM,
XLTX and XLTM file formats that are defined by the Office Open XML (OOXML)
standard.")
+ (properties `((python2-variant . ,(delay python2-openpyxl))))
(license license:expat)))
+(define-public python2-openpyxl
+ (let ((base (package-with-python2
+ (strip-python2-variant python-openpyxl))))
+ (package
+ (inherit base)
+ ;; This is the latest version that has python2 support
+ (version "2.6.4")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "openpyxl" version))
+ (sha256
+ (base32
+ "1qzjj8nwj4dn0mhq1j64f136afiqqb81lvqiikipz3g1g0b80lqx"))))
+ (arguments '(#:tests? #f))))) ; No test suite.
+
(define-public python-eventlet
(package
(name "python-eventlet")
(define-public python2-schedule
(package-with-python2 python-schedule))
+(define-public python-scour
+ (package
+ (name "python-scour")
+ (version "038.1")
+ (source
+ (origin
+ (method git-fetch)
+ (uri
+ (git-reference
+ (url "https://github.com/scour-project/scour")
+ (commit
+ (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "0rgiypb9ig8x4rl3hfzpy7kwnx1q3064nvlrv4fk0dnp84girn0v"))))
+ (propagated-inputs
+ `(("python-six" ,python-six)))
+ (build-system python-build-system)
+ (home-page "https://github.com/scour-project/scour")
+ (synopsis "Scour is an SVG optimizer/cleaner written in Python")
+ (description "The goal of Scour is to output a file that renderes
+identically at a fraction of the size by removing a lot of redundant
+information created by most SVG editors. Optimization options are typically
+lossless but can be tweaked for more aggressive cleaning.")
+ (license license:asl2.0)))
+
(define-public python-mechanize
(package
(name "python-mechanize")
(define-public python2-mechanize
(package-with-python2 python-mechanize))
+(define-public python-simpleaudio
+ (package
+ (name "python-simpleaudio")
+ (version "1.0.4")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "simpleaudio" version))
+ (sha256
+ (base32
+ "07glihg0fpca0gvbbvqs9q815w8xhflzdvg72yvlsm23j9j8h739"))))
+ (build-system python-build-system)
+ (arguments
+ `(#:tests? #f))
+ (inputs
+ `(("alsa-lib" ,alsa-lib)))
+ (home-page
+ "https://github.com/hamiltron/py-simple-audio")
+ (synopsis "Simple, asynchronous audio playback for Python 3")
+ (description
+ "The @code{simplaudio} package provides cross-platform, dependency-free
+audio playback capability for Python 3 on OSX, Windows, and Linux.")
+ (license license:expat))) ; MIT license
+
(define-public python-simplejson
(package
(name "python-simplejson")
(synopsis "Python Documentation Utilities")
(description
"Docutils is a modular system for processing documentation into useful
-formats, such as HTML, XML, and LaTeX. For input Docutils supports
-reStructuredText.")
+formats, such as HTML, XML, and LaTeX. It uses @dfn{reStructuredText}, an
+easy to use markup language, for input.
+
+This package provides tools for converting @file{.rst} files to other formats
+via commands such as @command{rst2man}, as well as supporting Python code.")
;; Most of the source code is public domain, but some source files are
;; licensed under the PFSL, BSD 2-clause, and GPLv3+ licenses.
(license (list license:public-domain license:psfl license:bsd-2 license:gpl3+))))
(define-public python-pygments
(package
(name "python-pygments")
- (version "2.5.2")
+ (version "2.6.1")
(source
(origin
(method url-fetch)
(uri (pypi-uri "Pygments" version))
(sha256
(base32
- "1zmhnswy0wxfn0xprs9aqsvx2c3kmzfn2wx14q8cv3vpkxdamj4q"))))
+ "0i4gnd4q0mgkq0dp5wymn7ca8zjd8fgp63139svs6jf2c6h48wv4"))))
(build-system python-build-system)
(arguments
;; FIXME: Tests require sphinx, which depends on this.
(synopsis "Syntax highlighting")
(description
"Pygments is a syntax highlighting package written in Python.")
- (license license:bsd-2)))
+ (license license:bsd-2)
+ (properties `((python2-variant . ,(delay python2-pygments))))))
+;; Pygments 2.6 and later does not support Python 2.
(define-public python2-pygments
- (package-with-python2 python-pygments))
+ (let ((base (package-with-python2 (strip-python2-variant python-pygments))))
+ (package
+ (inherit base)
+ (version "2.5.2")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "Pygments" version))
+ (sha256
+ (base32
+ "1zmhnswy0wxfn0xprs9aqsvx2c3kmzfn2wx14q8cv3vpkxdamj4q")))))))
(define-public python-bumpversion
(package
(define-public python-robotframework
(package
(name "python-robotframework")
- (version "3.1.2")
+ (version "3.2.2")
;; There are no tests in the PyPI archive.
(source
(origin
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
- (base32 "16gnxy0qinh8fhs0qvhff5z2xh49c3cqgm0d7bfjw120df6x7fym"))
+ (base32 "0if0h3myb9m3hgmn1phrhq8pfp89kfqsaq32vmfdjkyjdj7y59ds"))
(patches (search-patches
- "python-robotframework-honor-source-date-epoch.patch"))))
+ "python-robotframework-source-date-epoch.patch"))))
(build-system python-build-system)
(arguments
`(#:phases (modify-phases %standard-phases
(string-append doc "/libraries"))
#t)))
(replace 'check
- (lambda _
+ (lambda* (#:key inputs #:allow-other-keys)
+ ;; Some tests require timezone data. Otherwise, they
+ ;; look up /etc/localtime, which doesn't exist, and fail
+ ;; with:
+ ;;
+ ;; OverflowError: mktime argument out of range
+ (setenv "TZDIR"
+ (string-append (assoc-ref inputs "tzdata")
+ "/share/zoneinfo"))
+ (setenv "TZ" "Europe/Paris")
+
(invoke "python" "utest/run.py"))))))
(native-inputs
`(("python-invoke" ,python-invoke)
("python-rellu" ,python-rellu)
- ("python:tk" ,python "tk"))) ;used when building the HTML doc
+ ("python:tk" ,python "tk") ;used when building the HTML doc
+ ("tzdata" ,tzdata-for-tests)))
(outputs '("out" "doc"))
(home-page "https://robotframework.org")
(synopsis "Generic automation framework")
;; to the 0.9 stable release available from PyPI. The tests are not
;; included in the PyPI archive, so we fetch the sources from the upstream
;; Git repo.
- (let ((commit "e851879bab1f63e4e53b34a4dc8a67ed95102830")
- (revision "1"))
+ (let ((commit "b0619ac58a8b1be125f9c98856a664594614570f")
+ (revision "0"))
(package
(name "python-robotframework-lint")
- (version (git-version "0.9.0" revision commit))
+ (version (git-version "1.1" ;version taken from 'rflint/version.py'
+ revision commit))
(source
(origin
(method git-fetch)
(file-name (git-file-name name version))
(sha256
(base32
- "1p6fknqg5sb9qz5857ji4a877657vgfjm5v3zn45994parx6ml1m"))))
+ "180npmvzqync25b2scs878gv8q4y17dsinxyjcc10bw22msfap6b"))))
(build-system python-build-system)
(arguments
`(#:phases
(define-public python-scp
(package
(name "python-scp")
- (version "0.13.2")
+ (version "0.13.3")
(source
(origin
(method url-fetch)
(uri (pypi-uri "scp" version))
(sha256
- (base32
- "1crlpw9lnn58fs1c1rmh7s7s9y5gkgpgjsqlvg9qa51kq1knx7gg"))))
+ (base32 "1m2v09m407p097cy3xy5rxicqfzrqjwf8v5rd4qhfqkk7lllimwb"))))
(build-system python-build-system)
(arguments
'(#:tests? #f)) ;tests require an SSH server
(define-public python-black
(package
(name "python-black")
- (version "19.10b0")
+ (version "20.8b1")
(source
(origin
(method url-fetch)
(uri (pypi-uri "black" version))
(sha256
(base32
- "0f8mr0yzj78q1dx7v6ggbgfir2wv0n5z2shfbbvfdq7910xbgvf2"))))
+ "1spv6sldp3mcxr740dh3ywp25lly9s8qlvs946fin44rl1x5a0hw"))))
(build-system python-build-system)
(arguments
`(#:phases
"")))))
#t))
(add-after 'unpack 'disable-broken-tests
- (lambda _
+ (lambda* (#:key outputs inputs #:allow-other-keys)
+ ;; Make installed package available for running the tests
+ (setenv "PATH" (string-append (assoc-ref outputs "out") "/bin"
+ ":" (getenv "PATH")))
+
;; These tests are supposed to be skipped when the blackd
;; dependencies are missing, but this doesn't quite work.
(substitute* "tests/test_black.py"
(substitute* "tests/test_black.py"
(("( *)def test_self" match indent)
(string-append indent "@unittest.skip(\"guix\")\n" match)))
+
+ (substitute* "tests/test_black.py"
+ (("( *)def test_python38" match indent)
+ (string-append indent "@unittest.skip(\"guix\")\n" match)))
#t)))))
(propagated-inputs
`(("python-click" ,python-click)
("python-attrs" ,python-attrs)
("python-appdirs" ,python-appdirs)
("python-pathspec" ,python-pathspec)
+ ("python-mypy-extensions" ,python-mypy-extensions)
("python-regex" ,python-regex)
("python-toml" ,python-toml)
- ("python-typed-ast" ,python-typed-ast)))
+ ("python-typed-ast" ,python-typed-ast)
+ ("python-typing-extensions" ,python-typing-extensions)))
(native-inputs
`(("python-setuptools-scm" ,python-setuptools-scm)))
(home-page "https://github.com/ambv/black")
(description "Black is the uncompromising Python code formatter.")
(license license:expat)))
+(define-public python-black-macchiato
+ (package
+ (name "python-black-macchiato")
+ (version "1.3.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "black-macchiato" version))
+ (sha256
+ (base32
+ "1drp5p697ni1xn5y2lbjpalgpkzy2i4cyxjj5pk4dxr0vk97dd7i"))))
+ (build-system python-build-system)
+ (propagated-inputs
+ `(("python-black" ,python-black)))
+ (home-page "https://github.com/wbolster/black-macchiato")
+ (synopsis "Partial @code{python-black} formatting")
+ (description
+ "This package is built on top the @{python-black} code formatter to
+enable formatting of partial files.")
+ (license license:bsd-3)))
+
(define-public python-blinker
(package
(name "python-blinker")
(define-public python-cython
(package
(name "python-cython")
- (version "0.29.17")
+ (version "0.29.21")
(source
(origin
(method url-fetch)
(uri (pypi-uri "Cython" version))
(sha256
(base32
- "1wnaz40hdw4mg5acz5gqb6bhjhn4cvfxg0xdzfy7aa6qn665hqb3"))))
+ "1bcwpra7c6k30yvic3sw2v3rq2dr40ypc4zqif6kr52mpn4wnyp5"))))
(build-system python-build-system)
;; we need the full python package and not just the python-wrapper
;; because we need libpython3.3m.so
("python-cairocffi" ,python-cairocffi)))
(inputs
`(("libpng" ,libpng)
- ("imagemagick" ,imagemagick)
("freetype" ,freetype)
("cairo" ,cairo)
("glib" ,glib)
;; has not effect.
(setenv "LD_LIBRARY_PATH" (string-append cairo "/lib"))
(setenv "HOME" (getcwd))
+ ;; Fix rounding errors when using the x87 FPU.
+ (when (string-prefix? "i686" ,(%current-system))
+ (setenv "CFLAGS" "-ffloat-store"))
(call-with-output-file "setup.cfg"
(lambda (port)
(format port "[directories]~%
(define-public python2-grako
(package-with-python2 python-grako))
+(define-public python-grandalf
+ (package
+ (name "python-grandalf")
+ (version "0.7")
+ (source
+ (origin
+ ;; There's no source tarball on PyPI.
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/bdcht/grandalf")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "03p8w8ljpb87qbyldm3s6b7qi30hfcn43h33iwlgqcf31fjsyr4g"))))
+ (build-system python-build-system)
+ (arguments
+ '(#:phases
+ (modify-phases %standard-phases
+ (replace 'check
+ (lambda _
+ (invoke "python" "setup.py" "pytest"))))))
+ (native-inputs
+ `(("python-pytest" ,python-pytest)
+ ("python-pytest-runner" ,python-pytest-runner)))
+ (propagated-inputs
+ `(("python-numpy" ,python-numpy)
+ ("python-ply" ,python-ply)))
+ (home-page "https://github.com/bdcht/grandalf")
+ (synopsis "Graph and drawing algorithms framework")
+ (description
+ "Grandalf is a Python package made for experimentations with graphs
+drawing algorithms. It is written in pure Python, and currently implements
+two layouts: the Sugiyama hierarchical layout and the force-driven or energy
+minimization approach. While not as fast or featured as graphviz or other
+libraries like OGDF (C++), it provides a way to walk and draw graphs no larger
+than thousands of nodes, while keeping the source code simple enough to tweak
+and hack any part of it for experimental purpose. With a total of about 1500
+lines of Python, the code involved in drawing the Sugiyama (dot) layout fits
+in less than 600 lines. The energy minimization approach is comprised of only
+250 lines!
+
+Grandalf does only 2 not-so-simple things:
+@itemize
+@item computing the nodes (x,y) coordinates (based on provided nodes
+dimensions, and a chosen layout)
+@item routing the edges with lines or nurbs
+@end itemize
+
+It doesn’t depend on any GTK/Qt/whatever graphics toolkit. This means that it
+will help you find where to draw things like nodes and edges, but it’s up to
+you to actually draw things with your favorite toolkit.")
+ ;; The user can choose either license.
+ (license (list license:gpl2 license:epl1.0))))
+
(define-public python-gridmap
(package
(name "python-gridmap")
(define-public python-flake8
(package
(name "python-flake8")
- (version "3.8.3")
+ (version "3.8.4")
(source (origin
(method url-fetch)
(uri (pypi-uri "flake8" version))
(sha256
(base32
- "02527892hh0qjivxaiphzalj7q32qkna1cqaikjs7c03mk5ryjzh"))))
+ "0fvcrsbyzjpcli8ldbpsdbpmf238nkvwc1dy4hy82lf63rvfinma"))))
(build-system python-build-system)
(arguments
`(#:phases
(define-public python-idna
(package
(name "python-idna")
- (version "2.9")
+ (version "2.10")
(source
(origin
(method url-fetch)
(uri (pypi-uri "idna" version))
(sha256
(base32
- "1jxp2pdi8y4asi7ka1zhx3yx09kv8kzj533f0ds7viz49b0x323m"))))
+ "1xmk3s92d2vq42684p61wixfmh3qpr2mw762w0n6662vhlpqf1xk"))))
(build-system python-build-system)
(home-page "https://github.com/kjd/idna")
(synopsis "Internationalized domain names in applications")
(define-public python-colorama
(package
(name "python-colorama")
- (version "0.4.3")
+ (version "0.4.4")
(source
(origin
(method url-fetch)
(uri (pypi-uri "colorama" version))
(sha256
- (base32
- "189n8hpijy14jfan4ha9f5n06mnl33cxz7ay92wjqgkr639s0vg9"))))
+ (base32 "16w62sm95hmh55rqxn4zwdz0bkh3fqm1qnz9cwi3s510iasb4har"))))
(build-system python-build-system)
(synopsis "Colored terminal text rendering for Python")
(description "Colorama is a Python library for rendering colored terminal
(define-public python-tox
(package
- (name "python-tox")
- (version "2.8.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "tox" version))
- (sha256
- (base32
- "1drp6mwm8wdypjym15ia8lwjxbhcksb9vzxg4ay5dh4ji57by2ny"))))
- (build-system python-build-system)
- (arguments
- ;; FIXME: Tests require pytest-timeout, which itself requires
- ;; pytest>=2.8.0 for installation.
- '(#:tests? #f))
- (propagated-inputs
- `(("python-pluggy" ,python-pluggy) ; >=0.3.0,<0.4.0
- ("python-py" ,python-py)
- ("python-virtualenv" ,python-virtualenv)))
- (native-inputs
- `(; FIXME: Missing: ("python-pytest-timeout" ,python-pytest-timeout)
- ("python-pytest" ,python-pytest) ; >= 2.3.5
- ("python-setuptools-scm" ,python-setuptools-scm)))
- (home-page "https://tox.readthedocs.io")
- (synopsis "Virtualenv-based automation of test activities")
- (description "Tox is a generic virtualenv management and test command line
+ (name "python-tox")
+ (version "3.20.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "tox" version))
+ (sha256
+ (base32
+ "0nk0nyzhzamcrvn0qqzzy54isxxqwdi28swml7a2ym78c3f9sqpb"))))
+ (build-system python-build-system)
+ (arguments
+ ;; FIXME: Tests require pytest-timeout, which itself requires
+ ;; pytest>=2.8.0 for installation.
+ '(#:tests? #f))
+ (propagated-inputs
+ `(("python-filelock" ,python-filelock)
+ ("python-packaging" ,python-packaging)
+ ("python-pluggy" ,python-pluggy)
+ ("python-py" ,python-py)
+ ("python-six" ,python-six)
+ ("python-toml" ,python-toml)
+ ("python-virtualenv" ,python-virtualenv)))
+ (native-inputs
+ `(; FIXME: Missing: ("python-pytest-timeout" ,python-pytest-timeout)
+ ("python-pytest" ,python-pytest) ; >= 2.3.5
+ ("python-setuptools-scm" ,python-setuptools-scm)))
+ (home-page "https://tox.readthedocs.io")
+ (synopsis "Virtualenv-based automation of test activities")
+ (description "Tox is a generic virtualenv management and test command line
tool. It can be used to check that a package installs correctly with
different Python versions and interpreters, or run tests in each type of
supported environment, or act as a frontend to continuous integration
servers.")
- (license license:expat)))
+ (license license:expat)))
(define-public python2-tox
(package-with-python2 python-tox))
(define-public python-mako
(package
(name "python-mako")
- (version "1.1.2")
+ (version "1.1.3")
(source
(origin
(method url-fetch)
(uri (pypi-uri "Mako" version))
(sha256
(base32
- "17bd6r9ynp4hyfckkia0bb8gpd98f42jfl5rmzdpbld59bbcaf9i"))))
+ "09ywrmhr6gdyfx6d5727wwjnz73i6rklqcb4c14m7sqc830wi5c1"))))
(build-system python-build-system)
(arguments
`(#:phases (modify-phases %standard-phases
(package
(name "python-invoke")
(home-page "https://www.pyinvoke.org/")
- (version "1.3.0")
+ (version "1.4.1")
(source (origin
(method url-fetch)
(uri (pypi-uri "invoke" version))
(sha256
(base32
- "1nn7gad0rvy492acpyhkrp01zsk86acf34qhsvq4xmm6x39788n5"))))
+ "0pg1lpl4583z83i12262v72y1a4cxdcxi7vqhl8dpqv9wszj6gyy"))))
(build-system python-build-system)
(arguments
;; XXX: Requires many dependencies that are not yet in Guix.
(define-public python-dirsync
(package
(name "python-dirsync")
- (version "2.2.3")
+ (version "2.2.5")
(source
(origin
(method url-fetch)
(uri (pypi-uri "dirsync" version))
(sha256
(base32
- "1r40fkanksagcszf1ag85mdr8w7rgc7196n6s1qlsk2abw6i7v0z"))))
+ "1gm82jddm1lkazdi8lfsl1b3vi1z0252ng60mzjym8irnv94qfhy"))))
(build-system python-build-system)
(propagated-inputs
`(("six" ,python-six)))
- (home-page "https://bitbucket.org/tkhyn/dirsync")
+ (home-page "https://github.com/tkhyn/dirsync")
(synopsis "Advanced directory tree synchronisation tool")
(description "Advanced directory tree synchronisation tool.")
(license license:expat)))
(define-public python2-rfc3987
(package-with-python2 python-rfc3987))
+;; The latest commit contains fixes for building with both python3 and python2.
+(define-public python-rfc6555
+ (let ((commit "1a181b432312731f6742a5eb558dae4761d32361")
+ (revision "1"))
+ (package
+ (name "python-rfc6555")
+ (version (git-version "0.0.0" revision commit))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/sethmlarson/rfc6555")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1bxl17j9vs69cshcqnlwamr03hnykxqnwz3mdgi6x3s2k4q18npp"))))
+ (build-system python-build-system)
+ (arguments
+ '(#:phases
+ (modify-phases %standard-phases
+ (replace 'check
+ (lambda* (#:key tests? #:allow-other-keys)
+ (if tests?
+ ;; Other tests require network access.
+ (invoke "pytest" "tests/test_ipv6.py")
+ #t))))))
+ (native-inputs
+ `(("python-pytest" ,python-pytest)))
+ (home-page "https://pypi.org/project/rfc6555/")
+ (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.")
+ (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-validators
(package
(name "python-validators")
(define-public python-pysocks
(package
(name "python-pysocks")
- (version "1.7.0")
+ (version "1.7.1")
(source
(origin
(method url-fetch)
(uri (pypi-uri "PySocks" version))
(sha256
(base32
- "0z4p31bpqm893cf87qqgb30k7nwd8kqfjwwjm5cvxb6zbyj1w0yr"))))
+ "184sg65mbmih6ljblfsxcmq5js5l7dj3gpn618w9q5dy3rbh921z"))))
(build-system python-build-system)
(arguments `(#:tests? #f))
(home-page "https://github.com/Anorov/PySocks")
(define-public python2-pydiff
(package-with-python2 python-pydiff))
+(define-public python-pydub
+ (package
+ (name "python-pydub")
+ (version "0.24.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "pydub" version))
+ (sha256
+ (base32
+ "0sfwfq7yjv4bl3yqbmizszscafvwf4zr40hzbsy7rclvzyznh333"))))
+ (build-system python-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'fix-ffmpeg-path
+ (lambda* (#:key inputs #:allow-other-keys)
+ (let ((ffmpeg (assoc-ref inputs "ffmpeg")))
+ (substitute* '("pydub/utils.py")
+ (("return \"ffmpeg\"")
+ (string-append "return \"" ffmpeg "/bin/ffmpeg\""))
+ (("return \"ffplay\"")
+ (string-append "return \"" ffmpeg "/bin/ffplay\""))
+ (("return \"ffprobe\"")
+ (string-append "return \"" ffmpeg "/bin/ffprobe\""))
+ (("warn\\(\"Couldn't find ff") "# warn\\(\"Couldn't find ff"))
+ #t))))))
+ (home-page "https://pydub.com")
+ (inputs
+ `(("ffmpeg" ,ffmpeg)))
+ (propagated-inputs
+ `(("python-scipy" ,python-scipy)))
+ (synopsis "Manipulate audio with a high level interface in Python")
+ (description
+ "@code{pydub} makes it easy to manipulate audio in Python. It relies on
+@code{ffmpeg} to open various audio formats.")
+ (license license:expat))) ; MIT license
+
(define-public python-tqdm
(package
(name "python-tqdm")
(base32
"183kg1rhzz3hqizvphkd8hlbf1zxfx8737zhfkmqzxi71jmdw7pd"))))
(build-system python-build-system)
+ (arguments
+ `(#:phases (modify-phases %standard-phases
+ (replace 'check
+ (lambda _
+ (delete-file "setup.cfg")
+ (invoke "py.test"))))))
(native-inputs
- `(("python-appdirs" ,python-appdirs)
- ("python-distlib" ,python-distlib)
- ("python-importlib-metadata" ,python-importlib-metadata)
- ("python-filelock" ,python-filelock)
- ("python-six" ,python-six)
- ("python-tox" ,python-tox)
- ("python-virtualenv" ,python-virtualenv)))
+ `(("python-pytest" ,python-pytest)))
(home-page "https://github.com/k-bx/python-semver")
(synopsis "Python helper for Semantic Versioning")
(description "This package provides a Python library for
(string-append (getcwd) ":" (getenv "PYTHONPATH")))
#t))))))))
+(define-public python-pyfavicon
+ (package
+ (name "python-pyfavicon")
+ (version "0.1.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "pyfavicon" version))
+ (sha256
+ (base32 "15wfpa99hvcfsv8j0m8iprmydi2p4qkhm86qfx485244y0ia5mgx"))))
+ (build-system python-build-system)
+ (arguments
+ ;; There are no tests in the PyPI tarball and the tests from the
+ ;; repository require online data.
+ '(#:tests? #f))
+ (propagated-inputs
+ `(("python-aiohttp" ,python-aiohttp)
+ ("python-beautifulsoup4" ,python-beautifulsoup4)
+ ("python-pillow" ,python-pillow)))
+ (home-page "https://github.com/bilelmoussaoui/pyfavicon")
+ (synopsis "Async favicon fetcher")
+ (description
+ "@code{pyfavicon} is an async favicon fetcher.")
+ (license license:expat)))
+
(define-public python-yapf
(package
(name "python-yapf")
(define-public python2-yapf
(package-with-python2 python-yapf))
+(define-public python-yq
+ (package
+ (name "python-yq")
+ (version "2.11.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "yq" version))
+ (sha256
+ (base32
+ "1q4rky0a6n4izmq7slb91a54g8swry1xrbfqxwc8lkd3hhvlxxkl"))))
+ (build-system python-build-system)
+ (arguments
+ '(#:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'patch
+ (lambda* (#:key inputs #:allow-other-keys)
+ (substitute* "yq/__init__.py"
+ (("Popen\\(\\[\"jq")
+ (string-append
+ "Popen([\""
+ (assoc-ref inputs "jq")
+ "/bin/jq")))
+ #t)))))
+ (inputs
+ `(("python-argcomplete" ,python-argcomplete)
+ ("python-pyyaml" ,python-pyyaml)
+ ("python-xmltodict" ,python-xmltodict)
+ ("jq" ,jq)))
+ (native-inputs
+ `(("python-coverage" ,python-coverage)
+ ("python-flake8" ,python-flake8)
+ ("python-wheel" ,python-wheel)))
+ (home-page "https://github.com/kislyuk/yq")
+ (synopsis "Command-line YAML/XML processor")
+ (description
+ "This package provides @command{yq} and @command{xq} for processing YAML
+and XML respectively. The processing is done through @{jq}, @command{jq}
+filters can be used to process the data as it passes through.")
+ (license license:asl2.0)))
+
(define-public python-gyp
(let ((commit "5e2b3ddde7cda5eb6bc09a5546a76b00e49d888f")
(revision "0"))
(define-public python2-isoweek
(package-with-python2 python-isoweek))
+(define-public python-pyzbar
+ (package
+ (name "python-pyzbar")
+ (version "0.1.8")
+ (source
+ (origin
+ ;; There's no source tarball on PyPI.
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/NaturalHistoryMuseum/pyzbar")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1fqlfg5p2v9lzzzi0si2sz54lblprk6jjjhjw54b64lp58c1yhsl"))))
+ (build-system python-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'remove-failing-test
+ (lambda _
+ ;; This tests if find_library was called once, but we remove
+ ;; the call in the stage below to make the library find libzbar.
+ (delete-file "pyzbar/tests/test_zbar_library.py")
+ #t))
+ (add-before 'build 'set-library-file-name
+ (lambda* (#:key inputs #:allow-other-keys)
+ (let ((libzbar (assoc-ref inputs "zbar")))
+ (substitute* "pyzbar/zbar_library.py"
+ (("find_library\\('zbar'\\)")
+ (string-append "'" libzbar "/lib/libzbar.so.0'")))
+ #t))))))
+ (native-inputs
+ `(("pkg-config" ,pkg-config)
+ ("python-numpy" ,python-numpy)
+ ("python-pillow" ,python-pillow)))
+ (inputs
+ `(("zbar" ,zbar)))
+ (home-page "https://github.com/NaturalHistoryMuseum/pyzbar/")
+ (synopsis "Read one-dimensional barcodes and QR codes")
+ (description
+ "Read one-dimensional barcodes and QR codes using the zbar library.
+
+Features:
+
+@itemize
+@item Pure python
+@item Works with PIL / Pillow images, OpenCV / numpy ndarrays, and raw bytes
+@item Decodes locations of barcodes
+@item No dependencies, other than the zbar library itself
+@end itemize")
+ (license license:expat)))
+
(define-public python-tokenize-rt
(package
(name "python-tokenize-rt")
(define-public python2-gipc
(package-with-python2 python-gipc))
+(define-public python-beautifultable
+ (package
+ (name "python-beautifultable")
+ (version "1.0.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "beautifultable" version))
+ (sha256
+ (base32
+ "0wwlbifcbpzy3wfv6yzsxncarsngzizmmxbn6cy5gazlcq7h4k5x"))))
+ (build-system python-build-system)
+ (propagated-inputs
+ `(("python-wcwidth" ,python-wcwidth)))
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'patch-setup.py
+ (lambda _
+ (substitute* "setup.py"
+ (("setup\\(")
+ "setup(\n test_suite=\"test\",")))))))
+ (home-page "https://github.com/pri22296/beautifultable")
+ (synopsis "Print ASCII tables for terminals")
+ (description "@code{python-beautifultable} provides a class for easily
+printing tabular data in a visually appealing ASCII format to a terminal.
+
+Features include, but are not limited to:
+@itemize
+@item Full customization of the look and feel of the table
+@item Row and column accessors.
+@item Full support for colors using ANSI sequences or any library.
+@item Plenty of predefined styles and option to create custom ones.
+@item Support for Unicode characters.
+@item Supports streaming table when data is slow to retrieve.
+@end itemize")
+ (license license:expat)))
+
+(define-public python-globber
+ (package
+ (name "python-globber")
+ (version "0.2.1")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/asharov/globber")
+ (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "055xf7ja7zjhxis0ab5fnfsx16fsvr5fvc6mixqybanwxh8sgfjk"))))
+ (build-system python-build-system)
+ (home-page "https://github.com/asharov/globber")
+ (synopsis "Library for string matching with glob patterns")
+ (description
+ "Globber is a Python library for matching file names against glob patterns.
+In contrast to other glob-matching libraries, it matches arbitrary strings and
+doesn't require the matched names to be existing files. In addition, it
+supports the globstar @code{**} operator to match an arbitrary number of
+path components.")
+ (license license:asl2.0)))
+
+(define-public python-git-hammer
+ (package
+ (name "python-git-hammer")
+ (version "0.3.1")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/asharov/git-hammer")
+ (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0f9xlk86ijzpdj25hr1q4wcy8k72v3w470ngwm9mpdkfj8ng84wr"))))
+ (build-system python-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'patch-setup.py
+ (lambda _
+ (substitute* "setup.py"
+ (("setup\\(")
+ "setup(\n test_suite=\"test\",")))))))
+ (propagated-inputs
+ `(("python-beautifultable" ,python-beautifultable)
+ ("python-dateutil" ,python-dateutil)
+ ("python-gitpython" ,python-gitpython)
+ ("python-globber" ,python-globber)
+ ("python-matplotlib" ,python-matplotlib)
+ ("python-sqlalchemy" ,python-sqlalchemy)
+ ("python-sqlalchemy-utils"
+ ,python-sqlalchemy-utils)))
+ (home-page "https://github.com/asharov/git-hammer")
+ (synopsis "Provide statistics for git repositories")
+ (description
+ "Git Hammer is a statistics tool for projects in git repositories.
+Its major feature is tracking the number of lines authored by each person for every
+commit, but it also includes some other useful statistics.")
+ (license license:asl2.0)))
+
(define-public python-fusepy
(package
(name "python-fusepy")
(define-public python-numba
(package
(name "python-numba")
- (version "0.46.0")
+ (version "0.51.2")
(source
(origin
(method url-fetch)
(uri (pypi-uri "numba" version))
(sha256
(base32
- "1vnfzcq6fcnkmdms6114d49awvvj5181fl7z1wlha27qc2paxjy2"))))
+ "0s0777m8kq4l96i88zj78np7283v1n4878qfc1gvzb8l45bmkg8n"))))
(build-system python-build-system)
(arguments
- `(#:modules ((guix build utils)
- (guix build python-build-system)
- (ice-9 ftw)
- (srfi srfi-1)
- (srfi srfi-26))
- #:phases
+ `(#:phases
(modify-phases %standard-phases
(add-after 'unpack 'disable-proprietary-features
(lambda _
(setenv "NUMBA_DISABLE_HSA" "1")
(setenv "NUMBA_DISABLE_CUDA" "1")
#t))
- (add-after 'unpack 'remove-failing-tests
- (lambda _
- ;; FIXME: These tests fail for unknown reasons:
- ;; test_non_writable_pycache, test_non_creatable_pycache, and
- ;; test_frozen (all in numba.tests.test_dispatcher.TestCache).
- (substitute* "numba/tests/test_dispatcher.py"
- (("def test(_non_writable_pycache)" _ m)
- (string-append "def guix_skip" m))
- (("def test(_non_creatable_pycache)" _ m)
- (string-append "def guix_skip" m))
- (("def test(_frozen)" _ m)
- (string-append "def guix_skip" m)))
-
- ;; These tests fail because we don't run the tests from the build
- ;; directory: test_setup_py_distutils, test_setup_py_setuptools
- ;; They are in numba.tests.test_pycc.TestDistutilsSupport.
- (substitute* "numba/tests/test_pycc.py"
- (("def test(_setup_py_distutils|_setup_py_setuptools)" _ m)
- (string-append "def guix_skip" m)))
-
- ;; These tests fail because our version of Python does not have
- ;; a recognizable front-end for the Numba distribution to use
- ;; to check against.
- (substitute* "numba/tests/test_entrypoints.py"
- (("def test(_init_entrypoint)" _ m)
- (string-append "def guix_skip" m)))
- (substitute* "numba/tests/test_jitclasses.py"
- (("def test(_jitclass_longlabel_not_truncated)" _ m)
- (string-append "def guix_skip" m)))
- #t))
(replace 'check
- (lambda _
- (let ((cwd (getcwd)))
- (setenv "PYTHONPATH"
- (string-append cwd "/build/"
- (find (cut string-prefix? "lib" <>)
- (scandir (string-append cwd "/build")))
- ":"
- (getenv "PYTHONPATH")))
- ;; Something is wrong with the PYTHONPATH when running the
- ;; tests from the build directory, as it complains about not being
- ;; able to import certain modules.
- (with-directory-excursion "/tmp"
- (invoke "python3" "-m" "numba.runtests" "-v" "-m")))
- #t)))))
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (add-installed-pythonpath inputs outputs)
+ ;; Something is wrong with the PYTHONPATH when running the
+ ;; tests from the build directory, as it complains about not being
+ ;; able to import certain modules.
+ (with-directory-excursion "/tmp"
+ (setenv "HOME" (getcwd))
+ (invoke "python3" "-m" "numba.runtests" "-v" "-m")))))))
(propagated-inputs
`(("python-llvmlite" ,python-llvmlite)
("python-numpy" ,python-numpy)
("python-singledispatch" ,python-singledispatch)))
- ;; Needed for tests.
- (inputs
+ (native-inputs ;for tests
`(("python-jinja2" ,python-jinja2)
("python-pygments" ,python-pygments)))
(home-page "https://numba.pydata.org")
(invoke "python" "-X" "dev" "-m" "unittest" "-v" "test")))
(add-after 'unpack 'disable-tests
(lambda* _
- (substitute* "test/test_selector.py"
- ;; XXX: This test fails for unknown reason inside the build
- ;; environment.
+ ;; XXX: 7 tests fail out of 220. Disable them for now.
+ (substitute* (list "test/test_selector.py"
+ "test/test_mock.py")
(("def test_events_watched_outside_test_are_ignored")
"@unittest.skip('disabled by guix')
- def test_events_watched_outside_test_are_ignored")))))))
+ def test_events_watched_outside_test_are_ignored")
+ (("def test_awaited_from_autospec_mock.*" line)
+ (string-append line " return True\n"))
+ (("def test_create_autospec_on_coroutine_and_using_assert_methods.*" line)
+ (string-append line " return True\n"))
+ (("def test_patch_coroutine_with_multiple_scopes.*" line)
+ (string-append line " return True\n"))
+ (("def test_multiple_patches_on_coroutine.*" line)
+ (string-append line " return True\n"))
+ (("def test_patch_coroutine_only_when_running.*" line)
+ (string-append line " return True\n")))
+ #t)))))
(home-page "https://github.com/Martiusweb/asynctest")
(synopsis "Extension of unittest for testing asyncio libraries")
(description
(define-public python-gssapi
(package
(name "python-gssapi")
- (version "1.6.5")
+ (version "1.6.9")
(source
(origin
(method url-fetch)
(uri (pypi-uri "gssapi" version))
(sha256
(base32
- "02i5s7998dg5kcr4m0xwamd8vjqk1816xbzldyp68l91f6bynwcr"))))
+ "1fa78pn5jzfbwf3y6mj4fc8sh11wjf1hwh5qv39cdlxb71qsq2hb"))))
(build-system python-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ ;; Work around
+ ;; https://github.com/pythongssapi/python-gssapi/issues/220.
+ (add-before 'check 'disable-failing-tests
+ (lambda _
+ (let ((reason "Disabled failing test (see: \
+https://github.com/pythongssapi/python-gssapi/issues/220)."))
+ (substitute* "gssapi/tests/test_high_level.py"
+ ((".*def test_add_with_impersonate.*" all)
+ (string-append all " self.skipTest('" reason "')\n")))
+ (substitute* "gssapi/tests/test_raw.py"
+ ((".*def test_.*impersonate_name.*" all)
+ (string-append all " self.skipTest('" reason "')\n")))
+ #t))))))
(propagated-inputs
`(("python-decorator" ,python-decorator)
("python-six" ,python-six)))
(define-public python-canonicaljson
(package
(name "python-canonicaljson")
- (version "1.1.4")
+ (version "1.4.0")
(source
(origin
(method url-fetch)
(uri (pypi-uri "canonicaljson" version))
(sha256
- (base32 "09cpacc8yvcc74i63pdmlfaahh77dnvbyw9zf29wml2zzwqfbg25"))))
+ (base32 "0c86g0vvzdcg3nrcsqnbzlfhpprc2i894p8i14hska56yl27d6w9"))))
(build-system python-build-system)
(propagated-inputs
`(("python-six" ,python-six)
cryptographically signed ones).")
(license license:gpl3+)))
+(define-public python-dictdiffer
+ (package
+ (name "python-dictdiffer")
+ (version "0.8.1")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "dictdiffer" version))
+ (sha256
+ (base32
+ "1lk3qmy1hkaphk4n7ayfk0wl6m2yvd6r7qkam6yncqfzgkbc1phs"))))
+ (build-system python-build-system)
+ (native-inputs
+ `(("python-check-manifest" ,python-check-manifest)
+ ("python-coverage" ,python-coverage)
+ ("python-isort" ,python-isort)
+ ("python-mock" ,python-mock)
+ ("python-pydoctstyle" ,python-pydocstyle)
+ ("python-pytest-cache" ,python-pytest-cache)
+ ("python-pytest-cov" ,python-pytest-cov)
+ ("python-pytest-pep8" ,python-pytest-pep8)
+ ("python-pytest-runner" ,python-pytest-runner)
+ ("python-pytest" ,python-pytest)
+ ("python-setuptools-scm" ,python-setuptools-scm)
+ ("python-tox" ,python-tox)))
+ (home-page "https://github.com/inveniosoftware/dictdiffer")
+ (synopsis "Diff and patch Python dictionary objects")
+ (description
+ "Dictdiffer is a Python module that helps you to diff and patch
+dictionaries.")
+ (license license:expat)))
+
(define-public pyzo
(package
(name "pyzo")
- (version "4.10.2")
+ (version "4.11.0")
(source
(origin
(method url-fetch)
(uri (pypi-uri "pyzo" version))
(sha256
- (base32 "1zplxcb78qy8qibifmnsx5i9gnlfmw9n6nr4yflsabpxw57mx4m1"))))
+ (base32 "0vzsk6rchavlvy7ciq1z9qh3qrj9q213v2nn491fgjq3g19glj53"))))
(build-system python-build-system)
(arguments
`(#:phases
;; Tests fail with "Permission denied: '/homeless-shelter'".
(setenv "HOME" "/tmp")
#t)))
- ;; Tests fail with "Uncaught Python exception: invalid literal for
- ;; int() with base 10: 'test'".
+ ;; Tests fail with "Uncaught Python exception: python: undefined
+ ;; symbol: objc_getClass".
#:tests? #f))
(propagated-inputs
`(("python-pyqt" ,python-pyqt)))
(build-system python-build-system)
(home-page "https://github.com/mattgiles/mujson")
(synopsis "Use the fastest JSON functions available at import time")
- (description "This packages selects the fastest JSON functions available
+ (description "This package selects the fastest JSON functions available
at import time.")
(license license:expat)))
(base32
"1ypbyqxlk7n6zibk90js3ybz37xmin3kk0i35g8c51bwqpcfyxg8"))))
(build-system python-build-system)
- (inputs
- `(("tzdata" ,tzdata)))
(propagated-inputs
`(("python-dateutil" ,python-dateutil)
("python-pytz" ,python-pytz)
("python-tzlocal" ,python-tzlocal)))
(native-inputs
`(("python-mock" ,python-mock)
- ("python-parameterized" ,python-parameterized)))
+ ("python-parameterized" ,python-parameterized)
+ ("tzdata" ,tzdata-for-tests)))
(arguments
`(;; TODO: Of 23320 tests, 6 fail and 53 error.
#:tests? #f
(description "This package provides a parser for Python dependency files.")
(license license:expat)))
+(define-public python-dpath
+ (package
+ (name "python-dpath")
+ (version "2.0.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "dpath" version))
+ (sha256
+ (base32
+ "1ymi9ssk7i0mx3mviplf4csfvzibdd6wyj4qzj6s487n9xgnp85y"))))
+ (build-system python-build-system)
+ (native-inputs
+ `(("python-hypothesis" ,python-hypothesis)
+ ("python-mock" ,python-mock)
+ ("python-nose" ,python-nose)))
+ (arguments
+ '(#:phases
+ (modify-phases %standard-phases
+ (replace 'check
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (add-installed-pythonpath inputs outputs)
+ ;; This invokation is taken from tox.ini.
+ (invoke "nosetests" "-d" "-v" "tests/"))))))
+ (home-page "https://github.com/akesterson/dpath-python")
+ (synopsis "Filesystem-like pathing and searching for dictionaries")
+ (description
+ "@code{python-dpath} is a library for accessing and searching
+dictionaries via /slashed/paths ala xpath.
+
+Basically it lets you glob over a dictionary as if it were a filesystem. It
+allows you to specify globs (ala the bash eglob syntax, through some advanced
+fnmatch.fnmatch magic) to access dictionary elements, and provides some
+facility for filtering those results.")
+ (license license:expat)))
+
(define-public python-safety
(package
(name "python-safety")
equivalent schemata in the XML-based default RELAX NG syntax.")
(license license:expat)))
+(define-public python-telethon
+ (package
+ (name "python-telethon")
+ (version "1.17.5")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/LonamiWebs/Telethon")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "0l9fhdrq576vllgi9aam45xzw5xi6jhgdv5zz8i4ygssdp7cm8jl"))))
+ (build-system python-build-system)
+ (arguments
+ '(#:phases
+ (modify-phases %standard-phases
+ (replace 'check
+ (lambda* (#:key tests? #:allow-other-keys)
+ (when tests?
+ (invoke "py.test" "-v"))
+ #t)))))
+ (propagated-inputs
+ `(("python-rsa" ,python-rsa)
+ ("python-pyaes" ,python-pyaes)))
+ (native-inputs
+ `(("python-pytest" ,python-pytest)
+ ("python-pytest-asyncio" ,python-pytest-asyncio)
+ ("python-pytest-trio" ,python-pytest-trio)))
+ (home-page "https://docs.telethon.dev")
+ (synopsis "Full-featured Telegram client library for Python 3")
+ (description "This library is designed to make it easy to write Python
+programs that can interact with Telegram.")
+ (license license:expat)))
+
(define-public python-citeproc-py
(package
(name "python-citeproc-py")
bibliographies in a number of different output formats. Currently supported
are plain text, reStructuredText and HTML.")
(license license:bsd-2)))
+
+(define-public python-inform
+ (package
+ (name "python-inform")
+ (version "1.23.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "inform" version))
+ (sha256
+ (base32
+ "0dvc5klbnbryrvspp45nmlg02g40j7xspcz7lqsm0c0dj0z29zdz"))))
+ (build-system python-build-system)
+ (arguments
+ `(#:tests? #f)) ; PyPI tarball lacks tests
+ (native-inputs
+ `(("python-hypothesis" ,python-hypothesis)
+ ("python-pytest-cov" ,python-pytest-cov)
+ ("python-pytest-runner" ,python-pytest-runner)))
+ (propagated-inputs
+ `(("python-arrow" ,python-arrow)
+ ("python-six" ,python-six)))
+ (home-page "https://inform.readthedocs.io")
+ (synopsis "Print & logging utilities for communicating with user")
+ (description
+ "Inform is designed to display messages from programs that are typically run from
+a console. It provides a collection of ‘print’ functions that allow you to simply and
+cleanly print different types of messages.")
+ (license license:gpl3+)))
+
+(define-public python-nestedtext
+ (package
+ (name "python-nestedtext")
+ (version "1.0.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "nestedtext" version))
+ (sha256
+ (base32
+ "0xjx863n7yd1xmkwhy48lhmqrmlzgbx3civhk386hvrzyq4sx148"))))
+ (build-system python-build-system)
+ (arguments
+ `(#:tests? #f)) ; PyPI tarball lacks tests
+ (propagated-inputs
+ `(("python-inform" ,python-inform)))
+ (home-page "https://nestedtext.org")
+ (synopsis "Human readable and writable data interchange format")
+ (description
+ "NestedText is a file format for holding data that is to be entered, edited, or
+viewed by people. It allows data to be organized into a nested collection of
+dictionaries, lists, and strings. In this way it is similar to JSON and YAML, but
+without the complexity and risk of YAML and without the syntatic clutter of JSON.
+NestedText is both simple and natural. Only a small number of concepts and rules must
+be kept in mind when creating it. It is easily created, modified, or viewed with
+a text editor and easily understood and used by both programmers and non-programmers.")
+ (license license:expat))) ; MIT license
+
+(define-public python-parallel
+ (package
+ (name "python-parallel")
+ (version "1.6.4.4")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://www.parallelpython.com/downloads/pp/pp-"
+ version ".zip"))
+ (sha256
+ (base32
+ "1mzk4yabxj6r149fswhis18hd8dnag5sj8i4wb06450zq3pi8dh7"))))
+ (native-inputs
+ `(("unzip" ,unzip)))
+ (build-system python-build-system)
+ (arguments '(#:tests? #f)) ; No test suite.
+ (home-page "https://www.parallelpython.com")
+ (synopsis "Parallel and distributed programming for Python")
+ (description "Parallel Python module (PP) provides an easy and efficient
+way to create parallel-enabled applications for SMP computers and clusters.
+PP module features cross-platform portability and dynamic load balancing.
+Thus applications written with PP will parallelize efficiently even on
+heterogeneous and multi-platform clusters (including clusters running other
+applications with variable CPU loads).")
+ (license license:bsd-3)))
+
+(define-public python2-parallel
+ (package-with-python2 python-parallel))