;;; Copyright © 2016, 2017 Marius Bakke <mbakke@fastmail.com>
;;; Copyright © 2015, 2016, 2017, 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2017 Roel Janssen <roel@gnu.org>
-;;; Copyright © 2016, 2017 Julien Lepiller <julien@lepiller.eu>
+;;; Copyright © 2016, 2017, 2020 Julien Lepiller <julien@lepiller.eu>
;;; Copyright © 2016, 2017 ng0 <ng0@n0.is>
;;; Copyright © 2014, 2017 Eric Bavier <bavier@member.fsf.org>
;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2015 Cyril Roelandt <tipecaml@gmail.com>
;;; Copyright © 2015, 2016, 2017, 2019 Leo Famulari <leo@famulari.name>
-;;; Copyright © 2016 Hartmut Goebel <h.goebel@crazy-compilers.com>
-;;; Copyright © 2016, 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2016, 2019 Hartmut Goebel <h.goebel@crazy-compilers.com>
+;;; Copyright © 2016, 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2015, 2017 Ben Woodcroft <donttrustben@gmail.com>
;;; Copyright © 2015, 2016 Christopher Allan Webber <cwebber@dustycloud.org>
;;; Copyright © 2017 Adriano Peluso <catonano@gmail.com>
;;; Copyright © 2015, 2016 David Thompson <davet@gnu.org>
;;; Copyright © 2017 Mark Meyer <mark@ofosos.org>
;;; Copyright © 2018 Tomáš Čech <sleep_walker@gnu.org>
-;;; Copyright © 2018 Nicolas Goaziou <mail@nicolasgoaziou.fr>
+;;; Copyright © 2018, 2019 Nicolas Goaziou <mail@nicolasgoaziou.fr>
;;; Copyright © 2018 Mathieu Othacehe <m.othacehe@gmail.com>
;;; Copyright © 2018 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2019 Vagrant Cascadian <vagrant@debian.org>
;;; Copyright © 2019 Brendan Tildesley <mail@brendan.scot>
+;;; Copyright © 2019 Pierre Langlois <pierre.langlois@gmx.com>
+;;; Copyright © 2019 Tanguy Le Carrour <tanguy@bioneland.org>
;;;
;;; This file is part of GNU Guix.
;;;
#:use-module (guix build-system python)
#:use-module (guix utils)
#:use-module (gnu packages)
+ #:use-module (gnu packages base)
#:use-module (gnu packages check)
#:use-module (gnu packages compression)
#:use-module (gnu packages curl)
#:use-module (gnu packages libffi)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages python)
+ #:use-module (gnu packages python-check)
#:use-module (gnu packages python-crypto)
#:use-module (gnu packages python-xyz)
+ #:use-module (gnu packages serialization)
#:use-module (gnu packages sphinx)
+ #:use-module (gnu packages texinfo)
#:use-module (gnu packages tls)
#:use-module (gnu packages time)
#:use-module (gnu packages web)
(define-public python-aiohttp
(package
(name "python-aiohttp")
- (version "3.4.4")
+ (version "3.5.4")
(source
(origin
(method url-fetch)
(uri (pypi-uri "aiohttp" version))
(sha256
(base32
- "1ykm6kdjkrg556j0zd7dx2l1rsrbh0d9g27ivr6dmaahz9pyrbsi"))))
+ "1gy95ni8rkdwzir9zf14ivpfwp02g69xbhibldykff0rzbs86k4w"))))
(build-system python-build-system)
(arguments
`(#:tests? #f)) ;missing pytest-timeout
(define-public python-aiorpcx
(package
(name "python-aiorpcx")
- (version "0.10.2")
+ (version "0.18.3")
(source
(origin
(method url-fetch)
(uri (pypi-uri "aiorpcX" version))
(sha256
(base32
- "1p88k15jh0d2a18pnnbfcamsqi2bxvmmhpizmdlxfdxf8vy5ggyj"))))
+ "0k545hc7wl6sh1svydzbv6x7sx5pig2pqkl3yxs9riwmvzawx9xp"))))
(build-system python-build-system)
(propagated-inputs
`(("python-attrs" ,python-attrs)))
(home-page "https://github.com/kyuupichan/aiorpcX")
(synopsis "Generic asyncio RPC implementation")
(description
- "aiorpcX is a generic asyncio library implementation of RPC suitable for
-an application that is a client, server or both.
+ "The aiorpcX library is a generic asyncio implementation of RPC suitable
+for an application that is a client, server or both.
The package includes a module with full coverage of JSON RPC versions 1.0 and
2.0, JSON RPC protocol auto-detection, and arbitrary message framing. It also
(define-public python2-httplib2
(package-with-python2 python-httplib2))
+(define-public httpie
+ (package
+ (name "httpie")
+ (version "2.0.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "httpie" version))
+ (sha256
+ (base32
+ "02bw20cwv3a1lzrn919dk25dq4v81x6q786zlrqsqzhsdxszj14c"))))
+ (build-system python-build-system)
+ (arguments
+ ;; The tests attempt to access external web servers, so we cannot run them.
+ '(#:tests? #f))
+ (propagated-inputs
+ `(("python-colorama" ,python-colorama)
+ ("python-pygments" ,python-pygments)
+ ("python-requests" ,python-requests)))
+ (home-page "https://httpie.org/")
+ (synopsis "cURL-like tool for humans")
+ (description
+ "A command line HTTP client with an intuitive UI, JSON support,
+syntax highlighting, wget-like downloads, plugins, and more. It consists of
+a single http command designed for painless debugging and interaction with
+HTTP servers, RESTful APIs, and web services.")
+ (license license:bsd-3)))
+
(define-public python-html2text
(package
(name "python-html2text")
- (version "2018.1.9")
+ (version "2019.8.11")
(source
(origin
(method url-fetch)
(uri (pypi-uri "html2text" version))
(sha256
(base32
- "1m6d7ciq30adc3d1n8g6r46072n7q8kdy039pqvnnmp763xi8xb2"))))
+ "0ppgjplg06kmv9sj0x8p7acczcq2mcfgk1jdjwm4w5w40b0vj5pm"))))
(build-system python-build-system)
- (home-page "https://pypi.org/project/html2text/")
+ (arguments
+ '(#:phases
+ (modify-phases %standard-phases
+ (replace 'check
+ (lambda _
+ (invoke "pytest" "test/"))))))
+ (native-inputs
+ `(("python-pytest" ,python-pytest)))
+ (home-page "https://github.com/Alir3z4/html2text")
(synopsis "Convert HTML into plain text")
(description "html2text takes HTML and converts it into plain ASCII text
which is also valid markdown. html2text was originally written by Aaron
(define-public python-tornado-http-auth
(package
(name "python-tornado-http-auth")
- (version "1.1.0")
+ (version "1.1.1")
(source
(origin
(method url-fetch)
(uri (pypi-uri "tornado-http-auth" version))
(sha256
- (base32
- "0znrgqd7k2s4ia474xizi6h3061zj4sn5n6cq76bkwl3wwshifn5"))))
+ (base32 "0hyc5f0a09i5yb99pk4bxpg6w9ichbrb5cv7hc9hff7rxd8w0v0x"))))
(build-system python-build-system)
(propagated-inputs
`(("python-tornado" ,python-tornado)))
- (home-page
- "https://github.com/gvalkov/tornado-http-auth")
- (synopsis
- "Digest and basic authentication module for Tornado")
+ (home-page "https://github.com/gvalkov/tornado-http-auth")
+ (synopsis "Digest and basic authentication module for Tornado")
(description
"Provides support for adding authentication to services using the Tornado
web framework, either via the basic or digest authentication schemes.")
than Python’s urllib2 library.")
(license license:asl2.0)))
+;; Some software requires an older version of Requests, notably Docker/Docker
+;; Compose.
+(define-public python-requests-2.20
+ (package (inherit python-requests)
+ (version "2.20.1")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "requests" version))
+ (sha256
+ (base32
+ "0qzj6cgv3k9wyj7wlxgz7xq0cfg4jbbkfm24pp8dnhczwl31527a"))))
+ (propagated-inputs
+ `(("python-urllib3" ,python-urllib3-1.24)
+ ("python-idna" ,python-idna-2.7)
+ ,@(package-propagated-inputs python-requests)))))
+
;; Some software requires an older version of Requests, notably Docker
;; Compose.
(define-public python-requests-2.7
supports url redirection and retries, and also gzip and deflate decoding.")
(license license:expat)))
+;; Some software requires an older version of urllib3, notably Docker.
+(define-public python-urllib3-1.24
+ (package (inherit python-urllib3)
+ (version "1.24.3")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "urllib3" version))
+ (sha256
+ (base32
+ "1x0slqrv6kixkbcdnxbglvjliwhc1payavxjvk8fvbqjrnasd4r3"))))))
+
+
(define-public python2-urllib3
(package-with-python2 python-urllib3))
(define-public python-wsgiproxy2
(package
(name "python-wsgiproxy2")
- (version "0.4.5")
+ (version "0.4.6")
(source
(origin
(method url-fetch)
(uri (pypi-uri "WSGIProxy2" version ".tar.gz"))
(sha256
- (base32
- "19d9dva282vfjs784i0zkxp078lxfz4h3f621z30ij9wbf5rba6a"))))
+ (base32 "16jch5nic0hia28lps3c678s9s9mjdq8n87igxncjg0rpi5adqnf"))))
(build-system python-build-system)
(native-inputs
`(("python-webtest" ,python-webtest)))
(build-system python-build-system)
(native-inputs
`(("python-nose" ,python-nose)))
- (home-page "http://pythonpaste.org/deploy/")
+ (home-page "https://pylonsproject.org/")
(synopsis
"Load, configure, and compose WSGI applications and servers")
(description
("python-webob" ,python-webob)
("python-six" ,python-six)
("python-beautifulsoup4" ,python-beautifulsoup4)))
- (home-page "http://webtest.pythonpaste.org/")
+ (home-page "https://docs.pylonsproject.org/projects/webtest/")
(synopsis "Helper to test WSGI applications")
(description "Webtest allows you to test your Python web applications
without starting an HTTP server. It supports anything that supports the
(define-public python-responses
(package
(name "python-responses")
- (version "0.5.1")
+ (version "0.10.6")
(source (origin
(method url-fetch)
(uri (pypi-uri "responses" version))
(sha256
(base32
- "1spcfxixyk9k7pk82jm6zqkwk031s95lh8q0mz7539jrb7269bcc"))))
+ "147pacwkkqy3qf3hr33fnl1xbzgw0zsm3qppvvy9qhq8h069qbah"))))
(build-system python-build-system)
(arguments
`(;; Test suite is not distributed:
(define-public python-cachecontrol
(package
(name "python-cachecontrol")
- (version "0.11.6")
+ (version "0.12.5")
(source
(origin
- (method url-fetch)
+ (method git-fetch)
;; Pypi does not have tests.
- (uri (string-append
- "https://github.com/ionrock/cachecontrol/archive/v"
- version ".tar.gz"))
- (file-name (string-append name "-" version ".tar.gz"))
+ (uri (git-reference
+ (url "https://github.com/ionrock/cachecontrol")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
(sha256
(base32
- "0yj60d0f69a2l8p7y86k4zhzzm6rnxpq74sfl240pry9l0lfw2vw"))))
+ "03lgc65sl04n0cgzmmgg99bk83f9i6k8yrmcd4hpl46q1pymn0kz"))))
(build-system python-build-system)
(arguments
- `(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda _
- ;; Drop test that requires internet access.
- (delete-file "tests/test_regressions.py")
- (setenv "PYTHONPATH"
- (string-append (getcwd) "/build/lib:"
- (getenv "PYTHONPATH")))
- (invoke "py.test" "-vv")
- #t)))))
- (native-inputs
- `(("python-pytest" ,python-pytest)
- ("python-redis" ,python-redis)
- ("python-webtest" ,python-webtest)
- ("python-mock" ,python-mock)))
+ ;; Versions > 0.11.6 depend on CherryPy for testing.
+ ;; It's too much work to package CherryPy for now.
+ `(#:tests? #f))
(propagated-inputs
`(("python-requests" ,python-requests)
("python-lockfile" ,python-lockfile)))
"This package provides HTTP basic access authentication for Flask.")
(license license:bsd-3)))
-(define-public python-flask-sqlalchemy
+(define-public python-flask-htpasswd
(package
- (name "python-flask-sqlalchemy")
- (version "2.1")
+ (name "python-flask-htpasswd")
+ (version "0.3.1")
(source
(origin
(method url-fetch)
- (uri (pypi-uri "Flask-SQLAlchemy" version))
+ (uri (pypi-uri "flask-htpasswd" version))
(sha256
(base32
- "1i9ps5d5snih9xlqhrvmi3qfiygkmqzxh92n25kj4pf89kj4s965"))))
+ "14q1y1y9i9bhabdnwd25jqzc4ljli23smxfyyh8abxz1vq93pxra"))))
+ (build-system python-build-system)
+ (propagated-inputs
+ `(("python-flask" ,python-flask)
+ ("python-itsdangerous" ,python-itsdangerous)
+ ("python-passlib" ,python-passlib)
+ ("python-tox" ,python-tox)))
+ (home-page "http://github.com/carsongee/flask-htpasswd")
+ (synopsis "Basic authentication via htpasswd files in Flask applications")
+ (description "This package provides Basic authentication via
+@file{htpasswd} files and access_token authentication in Flask
+applications.")
+ (license license:bsd-3)))
+
+(define-public python-flask-sqlalchemy
+ (package
+ (name "python-flask-sqlalchemy")
+ (version "2.4.0")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "Flask-SQLAlchemy" version))
+ (sha256
+ (base32
+ "0nnllf0ddbh9jlhngnyjj98lbxgxr1csaplllx0caw98syq0k5hc"))))
(build-system python-build-system)
(propagated-inputs
`(("python-flask" ,python-flask)
("python-sqlalchemy" ,python-sqlalchemy)))
- (home-page
- "https://github.com/mitsuhiko/flask-sqlalchemy")
- (synopsis
- "Module adding SQLAlchemy support to your Flask application")
+ (home-page "https://github.com/mitsuhiko/flask-sqlalchemy")
+ (synopsis "Module adding SQLAlchemy support to your Flask application")
(description
- "This package adds SQLAlchemy support to your Flask application.")
+ "This package adds SQLAlchemy support to your Flask application.")
(license license:bsd-3)))
(define-public python-flask-restplus
(define-public python-elasticsearch
(package
(name "python-elasticsearch")
- (version "6.1.1")
+ (version "7.1.0")
(source
(origin
(method url-fetch)
(uri (pypi-uri "elasticsearch" version))
(sha256
(base32
- "1kjxl45yvvgfb5fmamx0kfsfg9pzphiqrwbkns3s28r1w7ya74cd"))))
+ "0rnjvlhw4v3vg14l519qliy1s1zpmx3827q0xfviwvk42rr7hh01"))))
(build-system python-build-system)
(native-inputs
`(("python-mock" ,python-mock)
(define-public python-genshi
(package
(name "python-genshi")
- (version "0.7.1")
+ (version "0.7.2")
(source
(origin
(method git-fetch)
(commit version)))
(file-name (git-file-name name version))
(sha256
- (base32 "01fx8fnpay5w048ppyjivg2dgfpp5rybn07y3pfsgj2knram3nhl"))))
+ (base32 "06rch30x10l105k5b6rahd839lkhmgrzn6691wbci0cb2fzps32w"))))
(build-system python-build-system)
(home-page "https://genshi.edgewall.org/")
(synopsis "Toolkit for generation of output for the web")
(define-public python-publicsuffix2
(package
(name "python-publicsuffix2")
- (version "2.20160818")
+ (version "2.20191221")
(source
(origin
(method url-fetch)
- (uri (pypi-uri "publicsuffix2" version ".tar.bz2"))
+ (uri (pypi-uri "publicsuffix2" version))
(sha256
- (base32
- "1bb55yka9vkn7i6y1kjzxa516kh6v4gsrxa90w5wdz5p5n968r68"))))
+ (base32 "0yzysvfj1najr1mb4pcqrbmjir3xpb69rlffln95a3cdm8qwry00"))))
(build-system python-build-system)
(arguments
- '(#:tests? #f)) ; The test suite requires network access.
+ '(#:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'ignore-maintainer-inputs
+ (lambda _
+ ;; Comment out a demand for python-requests, which is used only by
+ ;; the unused ‘update_psl’ helper command.
+ (substitute* "setup.py"
+ (("'requests " match)
+ (format "# ~a" match)))
+ #t)))
+ #:tests? #f)) ; the test suite requires network access
(home-page "https://github.com/pombredanne/python-publicsuffix2")
(synopsis "Get a public suffix for a domain name using the Public Suffix List")
(description "Get a public suffix for a domain name using the Public Suffix
("python-nose" ,python-nose)))
(propagated-inputs
`(("python-six" ,python-six)))
- (home-page "http://pythonpaste.org")
+ (home-page "https://pythonpaste.readthedocs.io/")
(synopsis
"Python web development tools, focusing on WSGI")
(description
(propagated-inputs
`(("python-paste" ,python-paste)
("python-pastedeploy" ,python-pastedeploy)))
- (home-page "http://pythonpaste.org/script/")
+ (home-page (string-append "https://web.archive.org/web/20161025192515/"
+ "http://pythonpaste.org/script/"))
(arguments
'(;; Unfortunately, this requires the latest unittest2,
;; but that requires traceback2 which requires linecache2 which requires
(propagated-inputs
`(("python-gevent" ,python2-gevent)
("python-tornado" ,python2-tornado)))))
+
+(define-public python-slugify
+ (package
+ (name "python-slugify")
+ (version "3.0.4")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "python-slugify" version))
+ (sha256
+ (base32 "0dv97yi5fq074q5qyqbin09pmi8ixg36caf5nkpw2bqkd8jh6pap"))
+ (patches
+ (search-patches "python-slugify-depend-on-unidecode.patch"))))
+ (native-inputs
+ `(("python-wheel" ,python-wheel)))
+ (propagated-inputs
+ `(("python-unidecode" ,python-unidecode)))
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (replace 'check
+ (lambda _
+ (invoke "python" "test.py"))))))
+ (build-system python-build-system)
+ (home-page "https://github.com/un33k/python-slugify")
+ (synopsis "Python Slugify application that handles Unicode")
+ (description "This package provides a @command{slufigy} command and
+library to create slugs from unicode strings while keeping it DRY.")
+ (license license:expat)))
+
+(define-public python-branca
+ (package
+ (name "python-branca")
+ (version "0.3.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "branca" version))
+ (sha256
+ (base32
+ "0pmigd521j2228xf8x34vbx0niwvms7xl7za0lymywj0vydjqxiy"))))
+ (build-system python-build-system)
+ (propagated-inputs
+ `(("python-jinja2" ,python-jinja2)
+ ("python-six" ,python-six)))
+ (native-inputs
+ `(("python-pytest" ,python-pytest)))
+ (home-page "https://github.com/python-visualization/branca")
+ (synopsis "Generate complex HTML+JS pages with Python")
+ (description "Generate complex HTML+JS pages with Python")
+ (license license:expat)))
+
+(define-public python-tinycss2
+ (package
+ (name "python-tinycss2")
+ (version "1.0.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "tinycss2" version))
+ (sha256
+ (base32 "1kw84y09lggji4krkc58jyhsfj31w8npwhznr7lf19d0zbix09v4"))))
+ (build-system python-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (replace 'check
+ (lambda _ (invoke "pytest"))))))
+ (propagated-inputs
+ `(("python-webencodings" ,python-webencodings)))
+ (native-inputs
+ `(("python-pytest-flake8" ,python-pytest-flake8)
+ ("python-pytest-isort" ,python-pytest-isort)
+ ("python-pytest-runner" ,python-pytest-runner)))
+ (home-page "https://tinycss2.readthedocs.io/")
+ (synopsis "Low-level CSS parser for Python")
+ (description "@code{tinycss2} can parse strings, return Python objects
+representing tokens and blocks, and generate CSS strings corresponding to
+these objects.
+
+Based on the CSS Syntax Level 3 specification, @code{tinycss2} knows the
+grammar of CSS but doesn’t know specific rules, properties or values supported
+in various CSS modules.")
+ (license license:bsd-3)))
+
+(define-public python-cssselect2
+ (package
+ (name "python-cssselect2")
+ (version "0.2.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "cssselect2" version))
+ (sha256
+ (base32 "0skymzb4ncrm2zdsy80f53vi0arf776lvbp51hzh4ayp1il5lj3h"))))
+ (build-system python-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (replace 'check
+ (lambda _ (invoke "pytest"))))))
+ (propagated-inputs
+ `(("python-tinycss2" ,python-tinycss2)))
+ (native-inputs
+ `(("python-pytest-cov" ,python-pytest-cov)
+ ("python-pytest-flake8" ,python-pytest-flake8)
+ ("python-pytest-isort" ,python-pytest-isort)
+ ("python-pytest-runner" ,python-pytest-runner)))
+ (home-page "https://cssselect2.readthedocs.io/")
+ (synopsis "CSS selectors for Python ElementTree")
+ (description "@code{cssselect2} is a straightforward implementation of
+CSS3 Selectors for markup documents (HTML, XML, etc.) that can be read by
+ElementTree-like parsers (including cElementTree, lxml, html5lib, etc.).
+
+Unlike the Python package @code{cssselect}, it does not translate selectors to
+XPath and therefore does not have all the correctness corner cases that are
+hard or impossible to fix in cssselect.")
+ (license license:bsd-3)))
+
+(define-public gunicorn
+ (package
+ (name "gunicorn")
+ (version "20.0.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "gunicorn" version))
+ (sha256
+ (base32
+ "0l1zm8a0vz8ws3lkn8q9a0f93ipdzyvlf2zlwdj5xyadh6jdwsgg"))))
+ (outputs '("out" "doc"))
+ (build-system python-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-after 'build 'build-doc
+ (lambda _
+ (invoke "make" "-C" "docs" "PAPER=a4" "html" "info")
+ (delete-file "docs/build/texinfo/Makefile")
+ (delete-file "docs/build/texinfo/Gunicorn.texi")
+ #t))
+ (replace 'check
+ (lambda _
+ (setenv "PYTHONPATH"
+ (string-append ".:" (getenv "PYTHONPATH")))
+ ;; Remove test modules failing due to libc not found due to
+ ;; section '.dynamic' not found in libc.so
+ (delete-file "tests/test_arbiter.py")
+ (delete-file "tests/test_config.py")
+ (delete-file "tests/test_sock.py")
+ (invoke "pytest")))
+ (add-after 'install 'install-doc
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((doc (string-append (assoc-ref outputs "doc")
+ "/share/doc/" ,name "-" ,version))
+ (html (string-append doc "/html"))
+ (info (string-append doc "/info"))
+ (examples (string-append doc "/examples")))
+ (mkdir-p html)
+ (mkdir-p info)
+ (mkdir-p examples)
+ (copy-recursively "docs/build/html" html)
+ (copy-recursively "docs/build/texinfo" info)
+ (copy-recursively "examples" examples)
+ (for-each (lambda (file)
+ (copy-file file (string-append doc "/" file)))
+ '("README.rst" "NOTICE" "LICENSE" "THANKS")))
+ #t)))))
+ (native-inputs
+ `(("binutils" ,binutils) ;; for ctypes.util.find_library()
+ ("python-aiohttp", python-aiohttp)
+ ("python-pytest" ,python-pytest)
+ ("python-pytest-cov" ,python-pytest-cov)
+ ("python-sphinx" ,python-sphinx)
+ ("texinfo" ,texinfo)))
+ (home-page "https://gunicorn.org/")
+ (synopsis "Python WSGI HTTP Server for UNIX")
+ (description "Gunicorn ‘Green Unicorn’ is a Python WSGI HTTP
+Server for UNIX. It’s a pre-fork worker model ported from Ruby’s
+Unicorn project. The Gunicorn server is broadly compatible with
+various web frameworks, simply implemented, light on server resources,
+and fairly speedy.")
+ (license license:expat)))
+
+(define-public python-translation-finder
+ (package
+ (name "python-translation-finder")
+ (version "1.7")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "translation-finder" version))
+ (sha256
+ (base32
+ "1pcy9z8gmb8x41gjhw9x0lkr0d2mv5mdxcs2hwg6q8mxs857j589"))))
+ (build-system python-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-before 'build 'remove-failing-test
+ (lambda _
+ (delete-file "translation_finder/test_api.py")
+ #t)))))
+ (propagated-inputs
+ `(("python-chardet" ,python-chardet)
+ ("python-pathlib2" ,python-pathlib2)
+ ("python-ruamel.yaml" ,python-ruamel.yaml)
+ ("python-six" ,python-six)))
+ (native-inputs
+ `(("python-codecov" ,python-codecov)
+ ("python-codacy-coverage" ,python-codacy-coverage)
+ ("python-pytest-cov" ,python-pytest-cov)
+ ("python-pytest-runner" ,python-pytest-runner)
+ ("python-twine" ,python-twine)))
+ (home-page "https://weblate.org/")
+ (synopsis "Translation file finder for Weblate")
+ (description "This package provides a function to find translation file in
+the source code of a project. It supports many translation file formats and
+is part of the Weblate translation platform.")
+ (license license:gpl3+)))
+
+(define-public python-gitlab
+ (package
+ (name "python-gitlab")
+ (version "1.15.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "python-gitlab" version))
+ (sha256
+ (base32
+ "0zl6kz8v8cg1bcy2r78b2snb0lpw0b573gdx2x1ps0nhsh75l4j5"))))
+ (build-system python-build-system)
+ (propagated-inputs
+ `(("python-requests" ,python-requests)
+ ("python-six" ,python-six)))
+ (native-inputs
+ `(("python-httmock" ,python-httmock)
+ ("python-mock" ,python-mock)))
+ (home-page
+ "https://github.com/python-gitlab/python-gitlab")
+ (synopsis "Interact with GitLab API")
+ (description "This package provides an extended library for interacting
+with GitLab instances through their API.")
+ (license license:lgpl3+)))