;;; Copyright © 2015, 2017 Ben Woodcroft <donttrustben@gmail.com>
;;; Copyright © 2015, 2016 Erik Edrosa <erik.edrosa@gmail.com>
;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020 Efraim Flashner <efraim@flashner.co.il>
-;;; Copyright © 2015, 2017 Kyle Meyer <kyle@kyleam.com>
+;;; Copyright © 2015, 2017, 2020 Kyle Meyer <kyle@kyleam.com>
;;; Copyright © 2015, 2016 Chris Marusich <cmmarusich@gmail.com>
;;; Copyright © 2016 Danny Milosavljevic <dannym+a@scratchpost.org>
;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox.org>
#:use-module (gnu packages version-control)
#:use-module (gnu packages video)
#:use-module (gnu packages web)
+ #:use-module (gnu packages wxwidgets)
#:use-module (gnu packages base)
#:use-module (gnu packages xml)
#:use-module (gnu packages xorg)
task of adding retry behavior to just about anything.")
(license license:asl2.0)))
+(define-public python-pytelegrambotapi
+ (package
+ (name "python-pytelegrambotapi")
+ (version "3.7.4")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/eternnoir/pyTelegramBotAPI")
+ (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "0r7g5zs0fk3g2dxvbpl0pi730x7r2kalrhn30fs0pvc15a59fmxz"))))
+ (build-system python-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (replace 'check
+ (lambda* (#:key tests? #:allow-other-keys)
+ (when tests?
+ (with-directory-excursion "tests"
+ (invoke "py.test")))
+ #t)))))
+ (propagated-inputs
+ `(("python-requests" ,python-requests)))
+ (native-inputs
+ `(("python-pytest" ,python-pytest)))
+ (home-page "https://github.com/eternnoir/pyTelegramBotAPI")
+ (synopsis "Python Telegram bot api")
+ (description "This package provides a simple, but extensible Python
+implementation for the Telegram Bot API.")
+ (license license:gpl2)))
+
(define-public python-colorlog
(package
(name "python-colorlog")
(define-public python2-babel
(package-with-python2 python-babel))
-;; Sphinx < 2.0 requires this version. Remove once no longer needed.
-(define-public python2-babel-2.6
- (package
- (inherit python2-babel)
- (version "2.6.0")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "Babel" version))
- (sha256
- (base32
- "08rxmbx2s4irp0w0gmn498vns5xy0fagm0fg33xa772jiks51flc"))))))
-
(define-public python2-backport-ssl-match-hostname
(package
(name "python2-backport-ssl-match-hostname")
(define-public python-license-expression
(package
(name "python-license-expression")
- (version "0.999")
+ (version "1.2")
(source
(origin
(method url-fetch)
(uri (pypi-uri "license-expression" version))
(sha256
- (base32 "08ppb0bxbrsxazy88sgpl9yffvdsabw6dkk1nc332wcz2mphwwyf"))))
+ (base32 "1g0sgphss8hbi1rpl4avy1nmbixmy9v194xdbvkjgl90vzgy2q3r"))))
(build-system python-build-system)
(propagated-inputs
`(("python-boolean.py" ,python-boolean.py)))
from the Python interpreter, or as a small part of a larger application.")
(license license:expat)))
-(define-public python2-eventlet
- (let ((base (package-with-python2
- (strip-python2-variant python-eventlet))))
- (package (inherit base)
- (propagated-inputs
- `(("python2-enum34" ,python2-enum34)
- ,@(package-propagated-inputs base))))))
-
(define-public python-six
(package
(name "python-six")
(define-public python-parse
(package
(name "python-parse")
- (version "1.8.4")
+ (version "1.18.0")
(source
(origin
(method url-fetch)
(uri (pypi-uri "parse" version))
(sha256
(base32
- "0f8997xr8nq2nq35iiviq8ningd1zvy59fg503xfpbi2dwhgdkf3"))))
+ "19063x4xdjpaf7rfxai6jpgm2k4yvkq7wha8aa8cagbjsqr60rli"))))
(build-system python-build-system)
(arguments
`(#:phases
code introspection, and logging.")
(license license:expat)))
+(define-public python-py-next
+ (package
+ (inherit python-py)
+ (version "1.9.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "py" version))
+ (sha256
+ (base32
+ "0hpk0gzd4v1pcnq7zinwg5n219czi23qghcswykqskkbwly8i9lw"))))))
+
(define-public python2-py
(package-with-python2 python-py))
easier to build concurrent applications.")
(license license:asl2.0)))
-(define-public python2-pykka
- (package-with-python2 python-pykka))
-
(define-public python-pymsgbox
(package
(name "python-pymsgbox")
(define-public python-virtualenv
(package
(name "python-virtualenv")
- (version "20.0.10")
+ (version "20.2.1")
(source
(origin
(method url-fetch)
(uri (pypi-uri "virtualenv" version))
(sha256
(base32
- "0y6x41l3ja891993i4adylbbyly0r4m52n2d0a0y9y4h3lzyh4l5"))))
+ "1rd6wmymsgv0cdsn50jwybcvbbslzym3mzffcjbl42l8br9cgap0"))))
(build-system python-build-system)
(native-inputs
`(("python-mock" ,python-mock)
("python-setuptools-scm" ,python-setuptools-scm)))
(propagated-inputs
`(("python-appdirs" ,python-appdirs)
- ("python-distlib" ,python-distlib)
+ ("python-distlib" ,python-distlib/next)
("python-filelock" ,python-filelock)
("python-six" ,python-six)
("python-importlib-metadata" ,python-importlib-metadata)))
(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-jsonrpc-server
(package
(name "python-jsonrpc-server")
- (version "0.3.4")
+ (version "0.4.0")
(source
(origin
(method url-fetch)
(uri (pypi-uri "python-jsonrpc-server" version))
(sha256
(base32
- "0dzya99nbi4mw7q85vmyw1wfgbx5dpmysnvm0bwx5m4xbi4zafy7"))))
+ "1585ybn3djvx5r5zbxkzlhz2wb1d47y4wrfwaxdyq0gi87jl7ib2"))))
(build-system python-build-system)
(propagated-inputs
`(("python-mock" ,python-mock)
("python-pytest" ,python-pytest)
- ("python-ujson" ,python-ujson-1)))
+ ("python-ujson" ,python-ujson)))
(home-page
"https://github.com/palantir/python-jsonrpc-server")
(synopsis "JSON RPC 2.0 server library")
(define-public python-language-server
(package
(name "python-language-server")
- (version "0.34.1")
+ (version "0.36.2")
(source
(origin
(method url-fetch)
(uri (pypi-uri "python-language-server" version))
(sha256
(base32
- "0gfjjlj7yg2nf8wkbrshwaljkwlqja4n7s1x949f495anmkg8vxr"))))
+ "1c0pnk2aibfhfaanrs0a5gkabkvz81gj20z7r0152b7fcx5ci14r"))))
(build-system python-build-system)
(propagated-inputs
- `(("python-pluggy" ,python-pluggy)
- ("python-jsonrpc-server" ,python-jsonrpc-server)
- ("python-jedi" ,python-jedi)
- ("python-yapf" ,python-yapf)
- ("python-pyflakes" ,python-pyflakes)
+ `(("python-autopep8" ,python-autopep8)
+ ("python-configparser" ,python-configparser)
("python-pydocstyle" ,python-pydocstyle)
+ ("python-future" ,python-future)
+ ("python-jedi" ,python-jedi)
+ ("python-jsonrpc-server" ,python-jsonrpc-server)
+ ("python-pluggy" ,python-pluggy)
("python-pycodestyle" ,python-pycodestyle)
- ("python-mccabe" ,python-mccabe)
+ ("python-pyflakes" ,python-pyflakes)
("python-rope" ,python-rope)
- ("python-autopep8" ,python-autopep8)
- ("python-flake8" ,python-flake8)
- ("python-pylint" ,python-pylint)))
+ ("python-ujson" ,python-ujson)
+ ("python-yapf" ,python-yapf)))
+ (native-inputs
+ `(("python-coverage" ,python-coverage)
+ ("python-flaky" ,python-flaky)
+ ("python-matplotlib" ,python-matplotlib)
+ ("python-mock" ,python-mock)
+ ("python-numpy" ,python-numpy)
+ ("python-pandas" ,python-pandas)
+ ("python-pylint" ,python-pylint)
+ ("python-pytest" ,python-pytest)
+ ("python-pytest-cov" ,python-pytest-cov)
+ ("python-versioneer" ,python-versioneer)))
(home-page "https://github.com/palantir/python-language-server")
(synopsis "Python implementation of the Language Server Protocol")
(description
(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
("texinfo" ,texinfo)
("perl" ,perl)
("scipy-sphinx-theme"
- ,(origin ; The build script expects scipy-sphinx-theme as a git submodule
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/scipy/scipy-sphinx-theme")
- (commit "c466764e2231ba132c09826b5b138fffa1cfcec3")))
- (sha256
- (base32
- "0q2y87clwlsgc7wvlsn9pzyssybcq10plwhq2w1ydykfsyyqbmkl"))))
+ ,(let ((commit "c466764e2231ba132c09826b5b138fffa1cfcec3"))
+ (origin ;the build script expects scipy-sphinx-theme as a git submodule
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/scipy/scipy-sphinx-theme")
+ (commit commit)))
+ (file-name (git-file-name "python-scipy-sphinx-theme"
+ (string-take commit 7)))
+ (sha256
+ (base32
+ "0q2y87clwlsgc7wvlsn9pzyssybcq10plwhq2w1ydykfsyyqbmkl")))))
,@(package-native-inputs python-numpy)))
(arguments
`(#:tests? #f ; we're only generating the documentation
(define-public python-pygit2
(package
(name "python-pygit2")
- (version "1.1.0")
+ (version "1.4.0")
(source
(origin
(method url-fetch)
(uri (pypi-uri "pygit2" version))
(sha256
- (base32 "1hs0pqqzn1yjxqk86nq7p0lvsklwnlyi5xwyzr7d5nrs19dmsjbg"))))
+ (base32 "1j71iskvirkm8jzfmwdm79v69878m9iix8a8cn4xidgr3nmkisyb"))))
(build-system python-build-system)
(arguments
'(#:tests? #f)) ; tests don't run correctly in our environment
used as the basis for third-party packaging tools.")
(license license:psfl)))
+;; TODO: Merge with 'python-distlib' on the next rebuild cycle.
+(define-public python-distlib/next
+ (package
+ (inherit python-distlib)
+ (version "0.3.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "distlib" version ".zip"))
+ (sha256
+ (base32
+ "1wdzv7fsjhrkhh1wfkarlhcwa8m00mgcpdsvknmf2qy8f9l13xpd"))))))
+
(define-public python-distutils-extra
(package
(name "python-distutils-extra")
(define-public python2-pycparser
(package-with-python2 python-pycparser))
+(define-public python-xlsxwriter
+ (package
+ (name "python-xlsxwriter")
+ (version "1.3.7")
+ (source
+ (origin
+ ;; There are no tests in the PyPI tarball.
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/jmcnamara/XlsxWriter")
+ (commit (string-append "RELEASE_" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1qg40r2mwrqfmhaxnary1cfgi0dwwazp5qga7c9p2cdji2v0x5rm"))))
+ (build-system python-build-system)
+ (home-page "https://github.com/jmcnamara/XlsxWriter")
+ (synopsis "Python module for creating Excel XLSX files")
+ (description
+ "XlsxWriter is a Python module that can be used to write text, numbers,
+formulas and hyperlinks to multiple worksheets in an Excel 2007+ XLSX file.")
+ (license license:bsd-2)))
+
(define-public python-pywavelets
(package
(name "python-pywavelets")
(define-public python-cairocffi
(package
(name "python-cairocffi")
- (version "0.9.0")
+ (version "1.2.0")
(source
(origin
- (method url-fetch)
- (uri (pypi-uri "cairocffi" version))
- (sha256
- (base32
- "0dq3k4zhqd8cwsf3nyjqvjqm8wkvrjn1wjf44rl3v0h8kqx6qf0m"))
- (patches (search-patches "python-cairocffi-dlopen-path.patch"))))
+ ;; The PyPI archive does not include the documentation, so use Git.
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/Kozea/cairocffi")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1ypw0c2lr43acn57hbmckk183zq4h477j7p4ig2zjvw0mcpvia50"))))
(build-system python-build-system)
(outputs '("out" "doc"))
(inputs
`(("glib" ,glib)
("gtk+" ,gtk+)
("gdk-pixbuf" ,gdk-pixbuf)
- ("cairo" ,cairo)
- ("pango" ,pango)))
+ ("cairo" ,cairo)))
(native-inputs
- `(("pkg-config" ,pkg-config)
+ `(("python-numpy" ,python-numpy)
("python-pytest" ,python-pytest)
("python-pytest-cov" ,python-pytest-cov)
("python-pytest-runner" ,python-pytest-runner)
("python-sphinx" ,python-sphinx)
- ("python-docutils" ,python-docutils)))
+ ("python-sphinx-rtd-theme" ,python-sphinx-rtd-theme)))
(propagated-inputs
`(("python-xcffib" ,python-xcffib))) ; used at run time
(arguments
`(#:phases
(modify-phases %standard-phases
(add-after 'unpack 'patch-paths
- (lambda* (#:key inputs outputs #:allow-other-keys)
- (substitute* (find-files "." "\\.py$")
- (("dlopen\\(ffi, 'cairo'")
- (string-append "dlopen(ffi, '" (assoc-ref inputs "cairo")
- "/lib/libcairo.so.2'"))
- (("dlopen\\(ffi, 'gdk-3'")
- (string-append "dlopen(ffi, '" (assoc-ref inputs "gtk+")
- "/lib/libgtk-3.so.0'"))
- (("dlopen\\(ffi, 'gdk_pixbuf-2.0'")
- (string-append "dlopen(ffi, '" (assoc-ref inputs "gdk-pixbuf")
- "/lib/libgdk_pixbuf-2.0.so.0'"))
- (("dlopen\\(ffi, 'glib-2.0'")
- (string-append "dlopen(ffi, '" (assoc-ref inputs "glib")
- "/lib/libglib-2.0.so.0'"))
- (("dlopen\\(ffi, 'gobject-2.0'")
- (string-append "dlopen(ffi, '" (assoc-ref inputs "glib")
- "/lib/libgobject-2.0.so.0'"))
- (("dlopen\\(ffi, 'pangocairo-1.0'")
- (string-append "dlopen(ffi, '" (assoc-ref inputs "pango")
- "/lib/libpangocairo-1.0.so.0'"))
- (("dlopen\\(ffi, 'pango-1.0'")
- (string-append "dlopen(ffi, '" (assoc-ref inputs "pango")
- "/lib/libpango-1.0.so.0'")))
+ (lambda* (#:key inputs #:allow-other-keys)
+ (substitute* "cairocffi/__init__.py"
+ ;; Hack the dynamic library loading mechanism.
+ (("find_library\\(library_name\\)")
+ "\"found\"")
+ (("filenames = \\(library_filename,\\) \\+ filenames")
+ "pass")
+ (("libcairo.so.2")
+ (string-append (assoc-ref inputs "cairo")
+ "/lib/libcairo.so.2")))
+ (substitute* "cairocffi/pixbuf.py"
+ (("libgdk_pixbuf-2.0.so.0")
+ (string-append (assoc-ref inputs "gdk-pixbuf")
+ "/lib/libgdk_pixbuf-2.0.so.0"))
+ (("libgobject-2.0.so.0")
+ (string-append (assoc-ref inputs "glib")
+ "/lib/libgobject-2.0.so.0"))
+ (("libglib-2.0.so.0")
+ (string-append (assoc-ref inputs "glib")
+ "/lib/libglib-2.0.so.0"))
+ (("libgdk-3.so.0")
+ (string-append (assoc-ref inputs "gtk+")
+ "/lib/libgdk-3.so.0")))
+ #t))
+ (add-after 'unpack 'disable-linters
+ ;; Their check fails; none of our business.
+ (lambda _
+ (substitute* "setup.cfg"
+ ((".*pytest-flake8.*") "")
+ ((".*pytest-isort.*") "")
+ (("--flake8") "")
+ (("--isort") ""))
#t))
(add-after 'install 'install-doc
(lambda* (#:key inputs outputs #:allow-other-keys)
(for-each (lambda (file)
(copy-file (string-append "." file)
(string-append doc file)))
- '("/README.rst" "/CHANGES" "/LICENSE"))
+ '("/README.rst" "/NEWS.rst"))
(system* "python" "setup.py" "build_sphinx")
(copy-recursively "docs/_build/html" html)
#t))))))
(define-public python-llfuse
(package
(name "python-llfuse")
- (version "1.3.6")
+ (version "1.3.8")
(source (origin
(method url-fetch)
- (uri (pypi-uri "llfuse" version ".tar.bz2"))
+ (uri (pypi-uri "llfuse" version))
(sha256
(base32
- "1j9fzxpgmb4rxxyl9jcf84zvznhgi3hnh4hg5vb0qaslxkvng8ii"))))
+ "1g2cdhdqrb6m7655qp61pn61pwj1ql61cdzhr2jvl3w4i8877ddr"))))
(build-system python-build-system)
(inputs
`(("fuse" ,fuse)
(strip-python2-variant python-llfuse)))
(propagated-inputs `(("python2-contextlib2" ,python2-contextlib2)))))
-;; For attic-0.16
-(define-public python-llfuse-0.41
- (package (inherit python-llfuse)
- (version "0.41.1")
- (source (origin
- (method url-fetch)
- (uri (string-append
- "https://bitbucket.org/nikratio/python-llfuse/downloads/"
- "llfuse-" version ".tar.bz2"))
- (sha256
- (base32
- "1imlqw9b73086y97izr036f58pgc5akv4ihc2rrf8j5h75jbrlaa"))))
- ;; Python-LLFUSE < 0.42 includes underscore.js, which is MIT (expat)
- ;; licensed. The rest of the package is licensed under LGPL2.0 or later.
- (license (list license:expat license:lgpl2.0+))))
-
(define-public python-msgpack
(package
(name "python-msgpack")
(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-pip
(package
(name "python-pip")
- (version "20.0.2")
+ (version "20.2.4")
(source
(origin
(method url-fetch)
(uri (pypi-uri "pip" version))
(sha256
(base32
- "0zwnlsjn6mb742cr995zfbk9v56ygxp8w3k49601r9by9kmcic3x"))))
+ "18b4qcijwivvkj1g0hs4w8zjbks0bjzdjcrqybnhmyx0gs2rmjc5"))))
(build-system python-build-system)
(arguments
'(#:tests? #f)) ; there are no tests in the pypi archive.
(define-public python-configargparse
(package
(name "python-configargparse")
- (version "0.14.0")
+ (version "1.2.3")
(source (origin
(method url-fetch)
(uri (pypi-uri "ConfigArgParse" version))
(sha256
(base32
- "149fy4zya0rsnlkvxbbq43cyr8lscb5k4pj1m6n7f1grwcmzwbif"))))
+ "1p1pzpf5qpf80bfxsx1mbw9blyhhypjvhl3i60pbmhfmhvlpplgd"))))
(build-system python-build-system)
(native-inputs
`(("python-pyyaml" ,python-pyyaml)))
(home-page "https://github.com/bw2/ConfigArgParse")
(license license:expat)))
-(define-public python2-configargparse
- (package-with-python2 python-configargparse))
-
(define-public python-argparse-manpage
(package
(name "python-argparse-manpage")
(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
(define-public python-greenlet
(package
(name "python-greenlet")
- (version "0.4.16")
+ (version "0.4.17")
(source (origin
(method url-fetch)
(uri (pypi-uri "greenlet" version))
(sha256
(base32
- "0v2571d0av1hz3yx63gvmnrinyn57nnvibg4zkl9frv74b3yl1kf"))))
+ "0swdhrcq13bdszv3yz5645gi4ijbzmmhxpb6whcfg3d7d5f87n21"))))
(build-system python-build-system)
(home-page "https://greenlet.readthedocs.io/")
(synopsis "Lightweight in-process concurrent programming")
are synchronized with data exchanges on \"channels\".")
(license (list license:psfl license:expat))))
-(define-public python2-greenlet
- (package-with-python2 python-greenlet))
-
(define-public python-objgraph
(package
(name "python-objgraph")
(define-public python-gevent
(package
(name "python-gevent")
- (version "20.6.2")
+ (version "20.9.0")
(source (origin
(method url-fetch)
(uri (pypi-uri "gevent" version))
(sha256
(base32
- "1ldmppgghfphdaazjw6wq2i17xcmsjb2jsizfa4cjlg812zjlg52"))
+ "13aw9x6imsy3b369kfjblqiwfni69pp32m4r13n62r9k3l2lhvaz"))
(modules '((guix build utils)))
(snippet
'(begin
(add-before 'check 'adjust-tests
(lambda _
(let ((disabled-tests
- '(;; These tests rely on networking which is not
- ;; available in the build container.
- "test_urllib2net.py"
- "test__server.py"
- "test__server_pywsgi.py"
- "test_socket.py"
- "test__socket.py"
- "test__socket_ssl.py"
- "test__socket_dns.py"
- "test__socket_dns6.py"
- "test___example_servers.py"
+ '(;; These tests relies on networking which is
+ ;; not available in the build container.
"test__getaddrinfo_import.py"
- "test__examples.py"
- "test_httplib.py"
- "test_https.py"
- "test_urllib2_localnet.py"
- "test_ssl.py"
- "test__ssl.py"
+ "test__server_pywsgi.py"
;; XXX: These tests borrow functionality from the
;; Python builtin 'test' module, but it is not
;; installed with the Guix Python distribution.
;; Use the build daemons configured number of workers.
(setenv "NWORKERS" (number->string (parallel-job-count)))
- (invoke "python" "-m" "gevent.tests" "--config"
+ (invoke "python" "-m" "gevent.tests" "-unone" "--config"
"known_failures.py" "--ignore" "skipped_tests.txt"))))))
(propagated-inputs
`(("python-greenlet" ,python-greenlet)
(inputs
`(("c-ares" ,c-ares)
("libev" ,libev)))
- (home-page "http://www.gevent.org/")
+ (home-page "https://www.gevent.org/")
(synopsis "Coroutine-based network library")
(description
- "gevent is a coroutine-based Python networking library that uses greenlet
-to provide a high-level synchronous API on top of the libev event loop.")
- (license license:expat)
- (properties `((python2-variant . ,(delay python2-gevent))))))
-
-(define-public python2-gevent
- (let ((base (package-with-python2
- (strip-python2-variant python-gevent))))
- (package
- (inherit base)
- (native-inputs `(,@(package-native-inputs base)
- ("python-mock" ,python2-mock)
- ("python2-selectors2" ,python2-selectors2))))))
+ "@code{gevent} is a coroutine-based Python networking library that uses
+@code{greenlet} to provide a high-level synchronous API on top of the
+@code{libev} event loop.")
+ (license license:expat)))
(define-public python-fastimport
(package
are optionally backed by a C extension built on librdkafka.")
(license license:asl2.0)))
-(define-public python2-pykafka
- (package-with-python2 python-pykafka))
-
(define-public python-wcwidth
(package
(name "python-wcwidth")
(define-public python-tomlkit
(package
(name "python-tomlkit")
- (version "0.6.0")
+ (version "0.7.0")
(source
(origin
(method url-fetch)
(uri (pypi-uri "tomlkit" version))
(sha256
- (base32 "16jf0060csn8p500jnxa7m5h1sl3pzispvd11961dzrhh287dybl"))))
+ (base32 "062n694sfv24ylda6nh8228y2q9hrvy554kqx84y7czsjfbg4mxc"))))
(build-system python-build-system)
(native-inputs
- `(("python-pytest" ,python-pytest)))
+ `(("python-pytest" ,python-pytest)
+ ("python-pyyaml" ,python-pyyaml)))
(home-page "https://github.com/sdispater/tomlkit")
(synopsis "Style-preserving TOML library")
(description
- "TOML Kit is a 0.5.0-compliant TOML library. It includes a parser that
+ "TOML Kit is a 1.0.0rc1-compliant TOML library. It includes a parser that
preserves all comments, indentations, whitespace and internal element ordering,
and makes them accessible and editable via an intuitive API. It can also
create new TOML documents from scratch using the provided helpers. Part of the
database, file, dict stores. Cachy supports python versions 2.7+ and 3.2+.")
(license license:expat)))
+(define-public python-poetry-core
+ (package
+ (name "python-poetry-core")
+ (version "1.0.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "poetry-core" version))
+ (sha256
+ (base32 "1mgv276h1iphn5fqhp2sgkgd5d0c39hs33vgaf157x5ri7rlyrka"))))
+ (build-system python-build-system)
+ (home-page "https://github.com/python-poetry/poetry-core")
+ (synopsis "Poetry PEP 517 build back-end")
+ (description
+ "The @code{poetry-core} module provides a PEP 517 build back-end
+implementation developed for Poetry. This project is intended to be
+a light weight, fully compliant, self-contained package allowing PEP 517
+compatible build front-ends to build Poetry managed projects.")
+ (license license:expat)))
+
(define-public poetry
(package
(name "poetry")
- (version "1.0.10")
+ (version "1.1.4")
;; Poetry can only be built from source with Poetry.
(source
(origin
(uri (pypi-uri "poetry" version))
(sha256
(base32
- "1wm66xlsls4f0q4skmq96yb7aahjsqwgwvbrw4iax6rd4xfqj6sb"))))
+ "1a2kgfiw66fvxhlqk5qc83s6l38czfh5hcsrbiy7qq5yfc8mlsll"))))
(build-system python-build-system)
(arguments
`(#:tests? #f ;; Pypi does not have tests.
(add-before 'build 'patch-setup-py
(lambda _
(substitute* "setup.py"
- ;; poetry won't update version as 21.0.0 relies on python > 3.6
- (("keyring>=20.0.1,<21.0.0") "keyring>=21.0.0,<22.0.0")
- (("pyrsistent>=0.14.2,<0.15.0") "pyrsistent>=0.14.2,<0.17.0")
- ;; Reported upstream:
- ;; <https://github.com/python-poetry/poetry/issues/2752>.
- (("tomlkit>=0.5.11,<0.6.0") "tomlkit>=0.5.11,<0.7.0")
- (("cleo>=0.7.6,<0.8.0") "cleo>=0.7.6,<0.9.0")
- (("clikit>=0.4.2,<0.5.0") "clikit>=0.4.2,<0.7.0"))
+ ;; Newer versions of keyring produce a package with version "0.0.0"
+ ;; Reported upstream: <https://github.com/jaraco/keyring/issues/469>
+ (("keyring>=21.2.0,<22.0.0") "keyring>=21.0.0,<22.0.0")
+ ;; TODO: remove after the next release cycle,
+ ;; when packaging has been updated.
+ (("packaging>=20.4,<21.0") "packaging>=20.0,<21.0"))
#t)))))
(propagated-inputs
`(("python-cachecontrol" ,python-cachecontrol)
("python-cleo" ,python-cleo)
("python-clikit" ,python-clikit)
("python-html5lib" ,python-html5lib)
- ("python-jsonschema" ,python-jsonschema)
("python-keyring" ,python-keyring)
("python-msgpack-transitional" ,python-msgpack-transitional)
+ ("python-packaging" ,python-packaging)
("python-pexpect" ,python-pexpect)
+ ("python-pip" ,python-pip)
("python-pkginfo" ,python-pkginfo)
- ("python-pyparsing" ,python-pyparsing)
- ("python-pyrsistent" ,python-pyrsistent)
+ ("python-poetry-core" ,python-poetry-core)
("python-requests" ,python-requests)
- ("python-requests-toolbelt" ,python-requests-toolbelt)
+ ("python-requests-toolbelt" ,python-requests-toolbelt-0.9.1)
("python-shellingham" ,python-shellingham)
("python-tomlkit" ,python-tomlkit)
("python-virtualenv" ,python-virtualenv)))
(define-public python-dnspython
(package
- (name "python-dnspython")
- (version "1.16.0")
- (source (origin
- (method url-fetch)
- (uri (string-append "http://www.dnspython.org/kits/"
- version "/dnspython-" version ".tar.gz"))
- (sha256
- (base32
- "1yaw7irazy42n0kdhlk7wyg8ki34rxcnc5xbc1wfwy245b0wbxab"))))
- (build-system python-build-system)
- (arguments '(#:tests? #f)) ; XXX: requires internet access
- (home-page "http://www.dnspython.org")
- (synopsis "DNS toolkit for Python")
- (description
- "dnspython is a DNS toolkit for Python. It supports almost all record
+ (name "python-dnspython")
+ (version "2.0.0")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "dnspython" version ".zip"))
+ (sha256
+ (base32
+ "1dyip5ygqqhrgcaiy7qzjpndl9xciip186paxqwkm726fj9z0jh4"))))
+ (build-system python-build-system)
+ (native-inputs `(("unzip" ,unzip)))
+ (arguments '(#:tests? #f)) ; XXX: requires internet access
+ (home-page "https://www.dnspython.org")
+ (synopsis "DNS toolkit for Python")
+ (description
+ "dnspython is a DNS toolkit for Python. It supports almost all record
types. It can be used for queries, zone transfers, and dynamic updates.
It supports TSIG authenticated messages and EDNS0.")
- (license license:expat)))
+ (license license:expat)))
+
+(define-public python-dnspython-1.16
+ (package
+ (inherit python-dnspython)
+ (version "1.16.0")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "http://www.dnspython.org/kits/"
+ version "/dnspython-" version ".tar.gz"))
+ (sha256
+ (base32
+ "1yaw7irazy42n0kdhlk7wyg8ki34rxcnc5xbc1wfwy245b0wbxab"))))
+ (native-inputs '())))
-(define-public python2-dnspython
- (package-with-python2 python-dnspython))
+(define-public python2-dnspython-1.16
+ (package-with-python2 python-dnspython-1.16))
(define-public python-py3dns
(package
from Facebook.")
(license license:expat)))
-(define-public python2-graphql-relay
- (package-with-python2 python-graphql-relay))
-
(define-public python-graphene
(package
(name "python-graphene")
"Graphene is a Python library for building GraphQL schemas/types.
A GraphQL schema describes your data model, and provides a GraphQL server
with an associated set of resolve methods that know how to fetch data.")
- (properties `((python2-variant . ,(delay python2-graphene))))
(license license:expat)))
-(define-public python2-graphene
- (let ((base (package-with-python2
- (strip-python2-variant python-graphene))))
- (package (inherit base)
- (native-inputs
- `(("python2-sqlalchemy" ,python2-sqlalchemy)
- ,@(package-native-inputs base))))))
-
(define-public python-nautilus
(package
(name "python-nautilus")
(define-public python2-configparser
(package-with-python2 python-configparser))
+(define-public python-iniconfig
+ (package
+ (name "python-iniconfig")
+ (version "1.1.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "iniconfig" version))
+ (sha256
+ (base32
+ "0ckzngs3scaa1mcfmsi1w40a1l8cxxnncscrxzjjwjyisx8z0fmw"))))
+ (build-system python-build-system)
+ (home-page "https://github.com/RonnyPfannschmidt/iniconfig")
+ (synopsis "Simple INI-file parser")
+ (description "The @code{iniconfig} package provides a small and simple
+INI-file parser module having a unique set of features; @code{iniconfig}
+@itemize
+@item maintains the order of sections and entries;
+@item supports multi-line values with or without line-continuations;
+@item supports \"#\" comments everywhere;
+@item raises errors with proper line-numbers;
+@item raises an error when two sections have the same name.
+@end itemize")
+ (license license:expat)))
+
(define-public python-mamba
(package
(name "python-mamba")
complex datatypes to and from native Python datatypes.")
(license license:expat)))
-(define-public python2-marshmallow
- (package-with-python2 python-marshmallow))
-
(define-public python-apispec
(package
(name "python-apispec")
- (version "0.25.3")
+ (version "4.0.0")
(source
(origin
(method url-fetch)
(uri (pypi-uri "apispec" version))
(sha256
(base32
- "0kxa8723zbisx10363yh4mmmn4higxrspymbjfz5zq8f644zagm9"))))
+ "12n4w5zkn4drcn8izq68vmixmqvz6abviqkdn4ip0kaax3jjh3in"))))
(build-system python-build-system)
+ (arguments
+ '(#:phases (modify-phases %standard-phases
+ (add-after 'unpack 'disable-prance-tests
+ (lambda _
+ ;; Disable validation tests since they require the
+ ;; optional 'prance' library which is not yet in Guix.
+ (substitute* "tests/test_ext_marshmallow_openapi.py"
+ (("def test_openapi_tools_validate.*" all)
+ (string-append "@pytest.mark.xfail\n" all)))))
+ (replace 'check
+ (lambda _
+ (setenv "PYTHONPATH"
+ (string-append "./build/lib:"
+ (getenv "PYTHONPATH")))
+ (invoke "pytest" "-vv"))))))
(propagated-inputs
`(("python-pyyaml" ,python-pyyaml)))
(native-inputs
`(("python-pytest" ,python-pytest)
- ("python-flask" ,python-flask)
- ("python-marshmallow" ,python-marshmallow)
- ("python-tornado" ,python-tornado)
- ("python-bottle" ,python-bottle)
- ("python-mock" ,python-mock)))
+ ("python-marshmallow" ,python-marshmallow)))
(home-page "https://github.com/marshmallow-code/apispec")
- (synopsis "Swagger 2.0 API specification generator")
+ (synopsis "Swagger/OpenAPI specification generator")
(description "@code{python-apispec} is a pluggable API specification
-generator. Currently supports the OpenAPI specification (f.k.a.
-Swagger 2.0).")
+generator. It currently supports the OpenAPI specification, formerly known
+as Swagger.")
(license license:expat)))
-(define-public python2-apispec
- (package-with-python2 python-apispec))
-
(define-public python-flasgger
(package
(name "python-flasgger")
from your Flask project. It is a fork of Flask-Swagger.")
(license license:expat)))
-(define-public python2-flasgger
- (package-with-python2 python-flasgger))
-
(define-public python-swagger-spec-validator
(package
(name "python-swagger-spec-validator")
(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")
(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}
+and XML respectively. The processing is done through @command{jq}, @command{jq}
filters can be used to process the data as it passes through.")
(license license:asl2.0)))
(define-public python-typing-extensions
(package
(name "python-typing-extensions")
- (version "3.7.4.2")
+ (version "3.7.4.3")
(source
(origin
(method url-fetch)
(uri (pypi-uri "typing_extensions" version))
(sha256
(base32
- "1bk9b60s3rm1c8cwhv0bl3gh0x43153xxa6jpyllk9mc7jd5ivkr"))))
+ "0356ljrrplm917dqgpn8wjkw6j3mpp916gwxas7jhc3xc4xhgm4r"))))
(build-system python-build-system)
(home-page
"https://github.com/python/typing/blob/master/typing_extensions/README.rst")
@end enumerate")
(license license:expat)))
-(define-public bpython2
- (let ((base (package-with-python2
- (strip-python2-variant bpython))))
- (package (inherit base)
- (name "bpython2")
- (arguments
- `(#:python ,python-2
- #:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'remove-failing-test
- (lambda _
- ;; Remove failing test. FIXME: make it pass
- (delete-file "bpython/test/test_args.py")
- ;; Disable failing test-cases (renaming inhibits they are
- ;; discovered)
- (substitute* "bpython/test/test_curtsies_repl.py"
- (("^(\\s*def )(test_get_last_word_with_prev_line\\W)" _ a b)
- (string-append a "xxx_off_" b))
- (("^(\\s*def )(test_complex\\W)" _ a b)
- (string-append a "xxx_off_" b)))
- #t))
- (add-before 'build 'rename-scripts
- ;; rename the scripts to bypthon2, bpdb2, etc.
- (lambda _
- (substitute* "setup.py"
- (("^(\\s+'bpdb)(\\s+=.*',?)\\s*?$" _ name rest)
- (string-append name "2" rest "\n"))
- (("^(\\s+'bpython)(-\\S+)?(\\s+=.*',?)\\s*?$" _ name sub rest)
- (string-append name "2" (or sub "") rest "\n")))
- #t))))))))
-
(define-public python-pyinotify
(package
(name "python-pyinotify")
gevent-powered application.")
(license license:expat)))
-(define-public python2-gipc
- (package-with-python2 python-gipc))
-
(define-public python-beautifultable
(package
(name "python-beautifultable")
implemented using @code{ctypes}.")
(license license:isc)))
-(define-public python2-gdrivefs
- (package
- (name "python2-gdrivefs")
- (version "0.14.9")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "gdrivefs" version))
- (sha256
- (base32
- "0v9sp2cfg4ki3wagkwf3rnfpjhvgf845anz3757il9z95yvvcvb7"))))
- (build-system python-build-system)
- (arguments
- `(#:python ,python-2
- #:phases
- (modify-phases %standard-phases
- (add-before 'build 'patch-setup-py
- (lambda _
- ;; Update requirements from dependency==version
- ;; to dependency>=version
- (substitute* "gdrivefs/resources/requirements.txt"
- (("==") ">="))
- #t)))))
- (native-inputs
- `(("python2-gipc" ,python2-gipc)
- ("python2-gevent" ,python2-gevent)
- ("python2-greenlet" ,python2-greenlet)
- ("python2-httplib2" ,python2-httplib2)
- ("python2-uritemplate" ,python2-uritemplate)
- ("python2-oauth2client" ,python2-oauth2client)
- ("python2-six" ,python2-six)))
- (propagated-inputs
- `(("python2-dateutil" ,python2-dateutil)
- ("python2-fusepy" ,python2-fusepy)
- ("python2-google-api-client" ,python2-google-api-client)))
- (home-page "https://github.com/dsoprea/GDriveFS")
- (synopsis "Mount Google Drive as a local file system")
- (description "@code{gdrivefs} provides a FUSE wrapper for Google Drive
-under Python 2.7.")
- (license license:gpl2)))
-
(define-public python-userspacefs
(package
(name "python-userspacefs")
(define-public python-cairosvg
(package
(name "python-cairosvg")
- (version "2.4.2")
+ (version "2.5.0")
(source
(origin
(method url-fetch)
(uri (pypi-uri "CairoSVG" version))
(sha256
- (base32 "1bb7irxbaxxb9ahm3z5wsx1q96mm5gzskc7b6q07h9ikcnb8yrjf"))))
+ (base32 "1ylsisha2cc4w0yydxwhy7idkfw1inl9fsipxsrm7vyby080vi9z"))))
(build-system python-build-system)
(arguments
`(#:phases
(define-public python-pyphen
(package
(name "python-pyphen")
- (version "0.9.5")
+ (version "0.10.0")
(source
(origin
(method url-fetch)
(uri (pypi-uri "Pyphen" version))
(sha256
- (base32 "08c9y69ry9d6m4zalhnalg86lsp9v2j5n1ziw5vxfmiihx83lqrv"))))
+ (base32 "0a1iwrgs4hzwzz60q4i1813kbzimhm0i4q8grh8vqkxhnkgj36vi"))))
(build-system python-build-system)
;; TODO: Use the Guix system hyphenation packages hyphen-* rather than the
;; embedded set provided by upstream - like Debian does.
(define-public python-ujson
(package
(name "python-ujson")
- (version "2.0.3")
+ (version "4.0.1")
(source
(origin
(method url-fetch)
(uri (pypi-uri "ujson" version))
(sha256
(base32
- "18z9gb9ggy1r464b9q1gqs078mqgrkj6dys5a47529rqk3yfybdx"))
+ "1lr9lbm76y3ah1463jggwg2hjcb709mpns5f752wxxbgnd0n5kr6"))
(modules '((guix build utils)))
(snippet
'(begin (delete-file-recursively "deps") #t))))
(define-public python-flit
(package
(name "python-flit")
- (version "2.1.0")
+ (version "3.0.0")
(source
(origin
(method url-fetch)
(uri (pypi-uri "flit" version))
(sha256
(base32
- "0h5vvmqinqzn97mr3ix7zx53af9ad4fimjjwqpx88yp8qhz4r5bc"))))
+ "14q8qa48bli2mniznc8b54qkwvhbik4kw99y01fi5gzzl620zzml"))))
(build-system python-build-system)
(arguments
`(#:tests? #f)) ; XXX: Check requires network access.
(define-public pyzo
(package
(name "pyzo")
- (version "4.11.0")
+ (version "4.11.2")
(source
(origin
(method url-fetch)
(uri (pypi-uri "pyzo" version))
(sha256
- (base32 "0vzsk6rchavlvy7ciq1z9qh3qrj9q213v2nn491fgjq3g19glj53"))))
+ (base32 "1jk5f79lj09vnsdk9h01w21p9h49z2hhf8xhkx8471pjbg9vrlzr"))))
(build-system python-build-system)
(arguments
`(#:phases
error-prone \"update the embedded version string\" step from your release
process.")
(license license:public-domain)))
+
+(define-public python2-gamera
+ (package
+ (name "python2-gamera")
+ (version "3.4.4")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://gamera.informatik.hsnr.de/download/"
+ "gamera-" version ".tar.gz"))
+ (sha256
+ (base32 "1g4y1kxk1hmxfsiz682hbxvwryqilnb21ci509m559yp7hcliiyy"))
+ (modules '((guix build utils)))
+ (snippet
+ '(begin
+ ;; Remove bundled libraries.
+ (for-each delete-file-recursively
+ '("src/libpng-1.2.5"
+ "src/libtiff"
+ "src/zlib-1.2.8"))))))
+ (build-system python-build-system)
+ (inputs
+ `(("libpng" ,libpng)
+ ("libtiff" ,libtiff)
+ ("python2-wxpython" ,python2-wxpython)
+ ("zlib" ,zlib)))
+ (arguments
+ `(#:python ,python-2))
+ (synopsis "Framework for building document analysis applications")
+ (description
+ "Gamera is a toolkit for building document image recognition systems.")
+ (home-page "https://gamera.informatik.hsnr.de/")
+ (license license:gpl2+)))
+
+(define-public python-contextvars
+ (package
+ (name "python-contextvars")
+ (version "2.4")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "contextvars" version))
+ (sha256
+ (base32
+ "17n3w8c20kgkgc6khaafdhhlcdj4bzman4paxqsl7harma59137k"))))
+ (build-system python-build-system)
+ (propagated-inputs
+ `(("python-immutables" ,python-immutables)))
+ (home-page
+ "https://github.com/MagicStack/contextvars")
+ (synopsis "PEP 567 Backport")
+ (description "This package implements a backport of Python 3.7
+@code{contextvars} module (see PEP 567) for Python 3.6.")
+ (license license:asl2.0)))
+
+(define-public python-aiofiles
+ (package
+ (name "python-aiofiles")
+ (version "0.5.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "aiofiles" version))
+ (sha256
+ (base32
+ "1bqmv019x16qa3zah0z915cw6z4va3fjs60fk2s7vyah3gyvrrlq"))))
+ (build-system python-build-system)
+ (home-page "https://github.com/Tinche/aiofiles")
+ (synopsis "File support for @code{asyncio}")
+ (description "@code{python-aiofiles} is a library for handling local
+disk files in asyncio applications.")
+ (license license:asl2.0)))
+
+(define-public python-pyre-extensions
+ (package
+ (name "python-pyre-extensions")
+ (version "0.0.18")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "pyre-extensions" version))
+ (sha256
+ (base32
+ "0c5cbbqrfyjwakdh3kbwxis6mbrbwky1z1fqslgszgpcj4g43q30"))))
+ (build-system python-build-system)
+ (propagated-inputs
+ `(("python-typing-extensions"
+ ,python-typing-extensions)
+ ("python-typing-inspect" ,python-typing-inspect)))
+ (home-page "https://pyre-check.org")
+ (synopsis
+ "Type system extensions for use with @code{python-pyre}")
+ (description
+ "@code{python-pyre-extensions} defines extensions to the standard
+@code{typing} module that are supported by the Pyre typechecker.")
+ (license license:expat)))
+
+(define-public python-dataclasses
+ (package
+ (name "python-dataclasses")
+ (version "0.7")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "dataclasses" version))
+ (sha256
+ (base32
+ "1rh8111fbws2vxyf2qy2zw3x6p6cq1jfz8pf904gig5qwg56sjj9"))))
+ (build-system python-build-system)
+ (home-page
+ "https://github.com/ericvsmith/dataclasses")
+ (synopsis
+ "Backport of the @code{dataclasses} module for Python 3.6")
+ (description
+ "This is an implementation of PEP 557, Data Classes. It is a
+backport of the @code{dataclasses} module for Python 3.6.")
+ (license license:asl2.0)))
+
+(define-public python-pywatchman
+ (package
+ (name "python-pywatchman")
+ (version "1.4.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "pywatchman" version))
+ (sha256
+ (base32
+ "1yf2gm20wc3djpb5larxii3l55xxby0il2ns3q0v1byyfnr7w16h"))))
+ (build-system python-build-system)
+ (arguments
+ `(#:tests? #f)) ;there are none
+ (home-page
+ "https://facebook.github.io/watchman/")
+ (synopsis "Watchman client for python")
+ (description "@code{python-pywatchman} is a library to connect and
+query Watchman to discover file changes.")
+ (license license:bsd-3)))